Skip to content

Commit b534f6f

Browse files
authored
Merge pull request #137 from aspose-pdf-cloud/refactored-parser
Refactored Parser use cases
2 parents 2bdb0f9 + bd5d9d1 commit b534f6f

File tree

7 files changed

+217
-0
lines changed

7 files changed

+217
-0
lines changed
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();

0 commit comments

Comments
 (0)