Skip to content

Commit e0f224c

Browse files
authored
Merge pull request #140 from aspose-pdf-cloud/develop
update to 25.9
2 parents 519d2dc + 54df522 commit e0f224c

File tree

14 files changed

+332
-9
lines changed

14 files changed

+332
-9
lines changed

README.md

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,10 @@ XLS, XLSX, PPTX, DOC, DOCX, MobiXML, JPEG, EMF, PNG, BMP, GIF, TIFF, Text
3030
## Read PDF Formats
3131
MHT, PCL, PS, XSLFO, MD
3232

33-
## Enhancements in Version 25.8
34-
- Implement document page resize functionality using the Pdf.Cloud API library.
33+
## Enhancements in Version 25.9
34+
- Implement PDF document page crop functionality using the Pdf.Cloud API library.
3535
- A new version of Aspose.PDF Cloud was prepared using the latest version of Aspose.PDF for .NET.
3636

37-
## Bugs fixed in Version 25.8
38-
- Implement delete watermark from PDF document using the Pdf.Cloud API library.
39-
4037
## Installation
4138

4239
### NPM
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { ParserHelper, pdfApi } from "./parserHelper.js";
2+
import path from 'node:path';
3+
4+
export {ParseExportFormsAsFDF};
5+
6+
const ParseExportFormsAsFDF = {
7+
async export(documentName, outputFDFName, localFolder, remoteFolder) {
8+
if ( pdfApi ) {
9+
await ParserHelper.uploadDocument(documentName, localFolder, remoteFolder);
10+
11+
const fdfPath = path.join(remoteFolder, outputFDFName)
12+
const response = await pdfApi.putExportFieldsFromPdfToFdfInStorage( documentName, fdfPath, null, remoteFolder );
13+
14+
if (response.body.code == 200) {
15+
console.log("ParseExportFormsAsFDF(): Pdf document '" + documentName + "' form fields successfully exported to '" + outputFDFName + "' file!");
16+
await ParserHelper.downloadResult(outputFDFName, localFolder, remoteFolder, "");
17+
}
18+
else
19+
console.error("ParseExportFormsAsFDF(): Unexpected error!")
20+
21+
}
22+
}
23+
};
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { ParserHelper, pdfApi } from "./parserHelper.js";
2+
import path from 'node:path';
3+
4+
export {ParseExportFormsAsXML};
5+
6+
const ParseExportFormsAsXML = {
7+
async export(documentName, outputXMLName, localFolder, remoteFolder) {
8+
if ( pdfApi ) {
9+
await ParserHelper.uploadDocument(documentName, localFolder, remoteFolder);
10+
11+
const xmlPath = path.join(remoteFolder, outputXMLName)
12+
const response = await pdfApi.putExportFieldsFromPdfToXmlInStorage( documentName, xmlPath, null, remoteFolder );
13+
14+
if (response.body.code == 200) {
15+
console.log("ParseExportFormsAsXML(): Pdf document '" + documentName + "' form fields successfully exported to '" + outputXMLName + "' file!");
16+
await ParserHelper.downloadResult(outputXMLName, localFolder, remoteFolder, "");
17+
}
18+
else
19+
console.error("ParseExportFormsAsXML(): Unexpected error!")
20+
21+
}
22+
}
23+
};
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import { ParserHelper, pdfApi } from "./parserHelper.js";
2+
import fs from 'node:fs/promises';
3+
import path from 'node:path';
4+
5+
export {ParseExportImages};
6+
7+
const ParseExportImages = {
8+
async export(documentName, pageNumber, localFolder, remoteFolder) {
9+
if ( pdfApi ) {
10+
await ParserHelper.uploadDocument(documentName, localFolder, remoteFolder);
11+
12+
const response = await pdfApi.getImages( documentName, pageNumber, null, remoteFolder );
13+
14+
if (response.body.code == 200) {
15+
16+
response.body.images.list.forEach(async function (image) {
17+
const responseImage = await pdfApi.getImageExtractAsPng(documentName, image.id, null, null, null, remoteFolder);
18+
19+
const filePath = path.join(localFolder, image.id + ".png");
20+
await fs.writeFile(filePath, responseImage.body);
21+
console.log("Downloaded: " + filePath);
22+
});
23+
}
24+
else
25+
console.error("ParseExportImages(): Unexpected error!")
26+
27+
}
28+
}
29+
};
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import { ParserHelper, pdfApi } from "./parserHelper.js";
2+
import fs from 'node:fs/promises';
3+
import path from 'node:path';
4+
5+
export {ParseExportTables};
6+
7+
const ParseExportTables = {
8+
async export(documentName, localFolder, remoteFolder) {
9+
if ( pdfApi ) {
10+
await ParserHelper.uploadDocument(documentName, localFolder, remoteFolder);
11+
12+
const response = await pdfApi.getDocumentTables( documentName, null, remoteFolder );
13+
14+
if (response.body.code == 200) {
15+
console.log("ParseExportTables(): Tables successfully extracted!");
16+
17+
var result = "[\n";
18+
await Promise.all(
19+
response.body.tables.list.map(async (table) => {
20+
const responseTable = await pdfApi.getTable(documentName, table.id, null, remoteFolder)
21+
.then(function(responseTable){
22+
result += JSON.stringify(responseTable.body.table) + ",\n\n";
23+
});
24+
})
25+
);
26+
result += "]";
27+
28+
const filePath = path.join(localFolder, "parsed_tables_output.json");
29+
await fs.writeFile(filePath, result);
30+
console.log("Downloaded: " + filePath);
31+
}
32+
else
33+
console.error("ParseExportTables(): Unexpected error!")
34+
35+
}
36+
}
37+
};
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import { ParserHelper, pdfApi } from "./parserHelper.js";
2+
import fs from 'node:fs/promises';
3+
import path from 'node:path';
4+
5+
export {ParseExportTextBoxes};
6+
7+
const ParseExportTextBoxes = {
8+
async export(documentName, localFolder, remoteFolder) {
9+
if ( pdfApi ) {
10+
await ParserHelper.uploadDocument(documentName, localFolder, remoteFolder);
11+
12+
const response = await pdfApi.getDocumentTextBoxFields( documentName, null, remoteFolder );
13+
14+
if (response.body.code == 200) {
15+
console.log("ParseExportTextBoxes(): TextBox Fileds successfully extracted!");
16+
17+
var result = "[\n";
18+
await Promise.all(
19+
response.body.fields.list.map(async (textbox) => {
20+
const responseText = await pdfApi.getTextBoxField(documentName, textbox.fullName, null, remoteFolder)
21+
.then(function(responseTextBox){
22+
result += JSON.stringify(responseTextBox.body.field) + ",\n\n";
23+
});
24+
})
25+
);
26+
result += "]";
27+
28+
const filePath = path.join(localFolder, "parsed_text_boxes_output.json");
29+
await fs.writeFile(filePath, result);
30+
console.log("Downloaded: " + filePath);
31+
}
32+
else
33+
console.error("ParseExportTextBoxes(): Unexpected error!")
34+
35+
}
36+
}
37+
};

UsesCases/Parser/parserHelper.js

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import credentials from "../../../Credentials/credentials.json" with { type: "json" }; // json-file in this format: { "id": "*****", "key": "*******" }
2+
import fs from 'node:fs/promises';
3+
import path from 'node:path';
4+
import { PdfApi } from "../../src/api/api.js";
5+
6+
export { configParams, pdfApi, ParserHelper };
7+
8+
const configParams = {
9+
LOCAL_FOLDER: "C:\\Samples\\",
10+
PDF_DOCUMENT_NAME: "sample.pdf",
11+
REMOTE_FOLDER: 'TempPdfCloud',
12+
13+
XML_OUTPUT_FILE: "output_sample.xml",
14+
FDF_OUTPUT_FILE: "output_sample.fdf",
15+
16+
PAGE_NUMBER: 1,
17+
18+
};
19+
20+
const pdfApi = new PdfApi(credentials.id, credentials.key);
21+
22+
const ParserHelper = {
23+
async uploadFile (fileName, localFolder, tempFolder) {
24+
const fileNamePath = path.join(localFolder, fileName);
25+
const fileData = await fs.readFile(fileNamePath);
26+
const storagePath = path.join(tempFolder, fileName);
27+
await pdfApi.uploadFile(storagePath, fileData)
28+
.then(() => console.log("File: '" + fileName +"' successfully uploaded."));
29+
},
30+
31+
async uploadDocument(document, localFolder, tempFolder) {
32+
await this.uploadFile(document, localFolder, tempFolder)
33+
},
34+
35+
async downloadResult(document, localFolder, tempFolder, prefix) {
36+
const fileName = path.join(tempFolder, document);
37+
const changedPdfData = await pdfApi.downloadFile(fileName);
38+
const filePath = path.join(localFolder, prefix + document);
39+
await fs.writeFile(filePath, changedPdfData.body);
40+
console.log("Downloaded: " + filePath);
41+
},
42+
};

UsesCases/Parser/parserLaunch.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import { configParams } from "./parserHelper.js";
2+
import { ParseExportFormsAsXML } from "./parserGetFormsAsXML.js"
3+
import { ParseExportFormsAsFDF } from "./parserGetFormsAsFDF.js";
4+
import { ParseExportImages } from "./parserGetImages.js";
5+
import { ParseExportTables } from "./parserGetTables.js";
6+
import { ParseExportTextBoxes } from "./parserGetTextBoxes.js";
7+
8+
async function main() {
9+
try {
10+
11+
await ParseExportFormsAsXML.export(configParams.PDF_DOCUMENT_NAME, configParams.XML_OUTPUT_FILE, configParams.LOCAL_FOLDER, configParams.REMOTE_FOLDER);
12+
13+
await ParseExportFormsAsFDF.export(configParams.PDF_DOCUMENT_NAME, configParams.FDF_OUTPUT_FILE, configParams.LOCAL_FOLDER, configParams.REMOTE_FOLDER);
14+
15+
await ParseExportImages.export(configParams.PDF_DOCUMENT_NAME, configParams.PAGE_NUMBER, configParams.LOCAL_FOLDER, configParams.REMOTE_FOLDER);
16+
17+
await ParseExportTables.export(configParams.PDF_DOCUMENT_NAME, configParams.LOCAL_FOLDER, configParams.REMOTE_FOLDER);
18+
19+
await ParseExportTextBoxes.export(configParams.PDF_DOCUMENT_NAME, configParams.LOCAL_FOLDER, configParams.REMOTE_FOLDER);
20+
21+
} catch (error) {
22+
console.error("Error:", error.message);
23+
}
24+
}
25+
26+
await main();

docs/PdfApi.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,7 @@ Method | HTTP request | Description
212212
*PdfApi* | [**postDocumentImageStamps**](PdfApi.md#postDocumentImageStamps) | **POST** /pdf/\{name}/stamps/image | Add document pages image stamps.
213213
*PdfApi* | [**postDocumentImageStampsPageSpecified**](PdfApi.md#postDocumentImageStampsPageSpecified) | **POST** /pdf/\{name}/stamps/image/pagespecified | Add document image stamps to specified pages.
214214
*PdfApi* | [**postDocumentPageNumberStamps**](PdfApi.md#postDocumentPageNumberStamps) | **POST** /pdf/\{name}/stamps/pagenumber | Add document page number stamps.
215+
*PdfApi* | [**postDocumentPagesCrop**](PdfApi.md#postDocumentPagesCrop) | **POST** /pdf/\{name}/crop | Crop PDF document pages.
215216
*PdfApi* | [**postDocumentPagesResize**](PdfApi.md#postDocumentPagesResize) | **POST** /pdf/\{name}/resize | Rsize PDF document.
216217
*PdfApi* | [**postDocumentPagesRotate**](PdfApi.md#postDocumentPagesRotate) | **POST** /pdf/\{name}/rotate | Rotate PDF document.
217218
*PdfApi* | [**postDocumentTextFooter**](PdfApi.md#postDocumentTextFooter) | **POST** /pdf/\{name}/footer/text | Add document text footer.
@@ -5239,6 +5240,31 @@ Name | Type | Description | Notes
52395240

52405241
[**AsposeResponse**](AsposeResponse.md)
52415242

5243+
### HTTP request headers
5244+
5245+
- **Content-Type**: application/json
5246+
- **Accept**: application/json
5247+
5248+
<a name="postDocumentPagesCrop"></a>
5249+
## **postDocumentPagesCrop**
5250+
> postDocumentPagesCrop(name, pages, rect, storage, folder, password)
5251+
5252+
Crop PDF document pages.
5253+
5254+
### Parameters
5255+
Name | Type | Description | Notes
5256+
------------- | ------------- | ------------- | -------------
5257+
**name** | **string** | The document name. |
5258+
**pages** | **string** | Comma separated list of pages and page ranges. (Example: 1,3-5,8) |
5259+
**rect** | [**Rectangle**](Rectangle.md) | Rectangle of document area. |
5260+
**storage** | **string** | The document storage. | [optional]
5261+
**folder** | **string** | The document folder. | [optional]
5262+
**password** | **string** | Base64 encoded password. | [optional]
5263+
5264+
### Return type
5265+
5266+
[**AsposeResponse**](AsposeResponse.md)
5267+
52425268
### HTTP request headers
52435269

52445270
- **Content-Type**: application/json

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)