Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 2 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,10 @@ XLS, XLSX, PPTX, DOC, DOCX, MobiXML, JPEG, EMF, PNG, BMP, GIF, TIFF, Text
## Read PDF Formats
MHT, PCL, PS, XSLFO, MD

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

## Bugs fixed in Version 25.8
- Implement delete watermark from PDF document using the Pdf.Cloud API library.

## Installation

### NPM
Expand Down
23 changes: 23 additions & 0 deletions UsesCases/Parser/parserGetFormsAsFDF.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import { ParserHelper, pdfApi } from "./parserHelper.js";
import path from 'node:path';

export {ParseExportFormsAsFDF};

const ParseExportFormsAsFDF = {
async export(documentName, outputFDFName, localFolder, remoteFolder) {
if ( pdfApi ) {
await ParserHelper.uploadDocument(documentName, localFolder, remoteFolder);

const fdfPath = path.join(remoteFolder, outputFDFName)
const response = await pdfApi.putExportFieldsFromPdfToFdfInStorage( documentName, fdfPath, null, remoteFolder );

if (response.body.code == 200) {
console.log("ParseExportFormsAsFDF(): Pdf document '" + documentName + "' form fields successfully exported to '" + outputFDFName + "' file!");
await ParserHelper.downloadResult(outputFDFName, localFolder, remoteFolder, "");
}
else
console.error("ParseExportFormsAsFDF(): Unexpected error!")

}
}
};
23 changes: 23 additions & 0 deletions UsesCases/Parser/parserGetFormsAsXML.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import { ParserHelper, pdfApi } from "./parserHelper.js";
import path from 'node:path';

export {ParseExportFormsAsXML};

const ParseExportFormsAsXML = {
async export(documentName, outputXMLName, localFolder, remoteFolder) {
if ( pdfApi ) {
await ParserHelper.uploadDocument(documentName, localFolder, remoteFolder);

const xmlPath = path.join(remoteFolder, outputXMLName)
const response = await pdfApi.putExportFieldsFromPdfToXmlInStorage( documentName, xmlPath, null, remoteFolder );

if (response.body.code == 200) {
console.log("ParseExportFormsAsXML(): Pdf document '" + documentName + "' form fields successfully exported to '" + outputXMLName + "' file!");
await ParserHelper.downloadResult(outputXMLName, localFolder, remoteFolder, "");
}
else
console.error("ParseExportFormsAsXML(): Unexpected error!")

}
}
};
29 changes: 29 additions & 0 deletions UsesCases/Parser/parserGetImages.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import { ParserHelper, pdfApi } from "./parserHelper.js";
import fs from 'node:fs/promises';
import path from 'node:path';

export {ParseExportImages};

const ParseExportImages = {
async export(documentName, pageNumber, localFolder, remoteFolder) {
if ( pdfApi ) {
await ParserHelper.uploadDocument(documentName, localFolder, remoteFolder);

const response = await pdfApi.getImages( documentName, pageNumber, null, remoteFolder );

if (response.body.code == 200) {

response.body.images.list.forEach(async function (image) {
const responseImage = await pdfApi.getImageExtractAsPng(documentName, image.id, null, null, null, remoteFolder);

const filePath = path.join(localFolder, image.id + ".png");
await fs.writeFile(filePath, responseImage.body);
console.log("Downloaded: " + filePath);
});
}
else
console.error("ParseExportImages(): Unexpected error!")

}
}
};
37 changes: 37 additions & 0 deletions UsesCases/Parser/parserGetTables.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import { ParserHelper, pdfApi } from "./parserHelper.js";
import fs from 'node:fs/promises';
import path from 'node:path';

export {ParseExportTables};

const ParseExportTables = {
async export(documentName, localFolder, remoteFolder) {
if ( pdfApi ) {
await ParserHelper.uploadDocument(documentName, localFolder, remoteFolder);

const response = await pdfApi.getDocumentTables( documentName, null, remoteFolder );

if (response.body.code == 200) {
console.log("ParseExportTables(): Tables successfully extracted!");

var result = "[\n";
await Promise.all(
response.body.tables.list.map(async (table) => {
const responseTable = await pdfApi.getTable(documentName, table.id, null, remoteFolder)
.then(function(responseTable){
result += JSON.stringify(responseTable.body.table) + ",\n\n";
});
})
);
result += "]";

const filePath = path.join(localFolder, "parsed_tables_output.json");
await fs.writeFile(filePath, result);
console.log("Downloaded: " + filePath);
}
else
console.error("ParseExportTables(): Unexpected error!")

}
}
};
37 changes: 37 additions & 0 deletions UsesCases/Parser/parserGetTextBoxes.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import { ParserHelper, pdfApi } from "./parserHelper.js";
import fs from 'node:fs/promises';
import path from 'node:path';

export {ParseExportTextBoxes};

const ParseExportTextBoxes = {
async export(documentName, localFolder, remoteFolder) {
if ( pdfApi ) {
await ParserHelper.uploadDocument(documentName, localFolder, remoteFolder);

const response = await pdfApi.getDocumentTextBoxFields( documentName, null, remoteFolder );

if (response.body.code == 200) {
console.log("ParseExportTextBoxes(): TextBox Fileds successfully extracted!");

var result = "[\n";
await Promise.all(
response.body.fields.list.map(async (textbox) => {
const responseText = await pdfApi.getTextBoxField(documentName, textbox.fullName, null, remoteFolder)
.then(function(responseTextBox){
result += JSON.stringify(responseTextBox.body.field) + ",\n\n";
});
})
);
result += "]";

const filePath = path.join(localFolder, "parsed_text_boxes_output.json");
await fs.writeFile(filePath, result);
console.log("Downloaded: " + filePath);
}
else
console.error("ParseExportTextBoxes(): Unexpected error!")

}
}
};
42 changes: 42 additions & 0 deletions UsesCases/Parser/parserHelper.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import credentials from "../../../Credentials/credentials.json" with { type: "json" }; // json-file in this format: { "id": "*****", "key": "*******" }
import fs from 'node:fs/promises';
import path from 'node:path';
import { PdfApi } from "../../src/api/api.js";

export { configParams, pdfApi, ParserHelper };

const configParams = {
LOCAL_FOLDER: "C:\\Samples\\",
PDF_DOCUMENT_NAME: "sample.pdf",
REMOTE_FOLDER: 'TempPdfCloud',

XML_OUTPUT_FILE: "output_sample.xml",
FDF_OUTPUT_FILE: "output_sample.fdf",

PAGE_NUMBER: 1,

};

const pdfApi = new PdfApi(credentials.id, credentials.key);

const ParserHelper = {
async uploadFile (fileName, localFolder, tempFolder) {
const fileNamePath = path.join(localFolder, fileName);
const fileData = await fs.readFile(fileNamePath);
const storagePath = path.join(tempFolder, fileName);
await pdfApi.uploadFile(storagePath, fileData)
.then(() => console.log("File: '" + fileName +"' successfully uploaded."));
},

async uploadDocument(document, localFolder, tempFolder) {
await this.uploadFile(document, localFolder, tempFolder)
},

async downloadResult(document, localFolder, tempFolder, prefix) {
const fileName = path.join(tempFolder, document);
const changedPdfData = await pdfApi.downloadFile(fileName);
const filePath = path.join(localFolder, prefix + document);
await fs.writeFile(filePath, changedPdfData.body);
console.log("Downloaded: " + filePath);
},
};
26 changes: 26 additions & 0 deletions UsesCases/Parser/parserLaunch.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import { configParams } from "./parserHelper.js";
import { ParseExportFormsAsXML } from "./parserGetFormsAsXML.js"
import { ParseExportFormsAsFDF } from "./parserGetFormsAsFDF.js";
import { ParseExportImages } from "./parserGetImages.js";
import { ParseExportTables } from "./parserGetTables.js";
import { ParseExportTextBoxes } from "./parserGetTextBoxes.js";

async function main() {
try {

await ParseExportFormsAsXML.export(configParams.PDF_DOCUMENT_NAME, configParams.XML_OUTPUT_FILE, configParams.LOCAL_FOLDER, configParams.REMOTE_FOLDER);

await ParseExportFormsAsFDF.export(configParams.PDF_DOCUMENT_NAME, configParams.FDF_OUTPUT_FILE, configParams.LOCAL_FOLDER, configParams.REMOTE_FOLDER);

await ParseExportImages.export(configParams.PDF_DOCUMENT_NAME, configParams.PAGE_NUMBER, configParams.LOCAL_FOLDER, configParams.REMOTE_FOLDER);

await ParseExportTables.export(configParams.PDF_DOCUMENT_NAME, configParams.LOCAL_FOLDER, configParams.REMOTE_FOLDER);

await ParseExportTextBoxes.export(configParams.PDF_DOCUMENT_NAME, configParams.LOCAL_FOLDER, configParams.REMOTE_FOLDER);

} catch (error) {
console.error("Error:", error.message);
}
}

await main();
26 changes: 26 additions & 0 deletions docs/PdfApi.md
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,7 @@ Method | HTTP request | Description
*PdfApi* | [**postDocumentImageStamps**](PdfApi.md#postDocumentImageStamps) | **POST** /pdf/\{name}/stamps/image | Add document pages image stamps.
*PdfApi* | [**postDocumentImageStampsPageSpecified**](PdfApi.md#postDocumentImageStampsPageSpecified) | **POST** /pdf/\{name}/stamps/image/pagespecified | Add document image stamps to specified pages.
*PdfApi* | [**postDocumentPageNumberStamps**](PdfApi.md#postDocumentPageNumberStamps) | **POST** /pdf/\{name}/stamps/pagenumber | Add document page number stamps.
*PdfApi* | [**postDocumentPagesCrop**](PdfApi.md#postDocumentPagesCrop) | **POST** /pdf/\{name}/crop | Crop PDF document pages.
*PdfApi* | [**postDocumentPagesResize**](PdfApi.md#postDocumentPagesResize) | **POST** /pdf/\{name}/resize | Rsize PDF document.
*PdfApi* | [**postDocumentPagesRotate**](PdfApi.md#postDocumentPagesRotate) | **POST** /pdf/\{name}/rotate | Rotate PDF document.
*PdfApi* | [**postDocumentTextFooter**](PdfApi.md#postDocumentTextFooter) | **POST** /pdf/\{name}/footer/text | Add document text footer.
Expand Down Expand Up @@ -5239,6 +5240,31 @@ Name | Type | Description | Notes

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

### HTTP request headers

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

<a name="postDocumentPagesCrop"></a>
## **postDocumentPagesCrop**
> postDocumentPagesCrop(name, pages, rect, storage, folder, password)

Crop PDF document pages.

### Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**name** | **string** | The document name. |
**pages** | **string** | Comma separated list of pages and page ranges. (Example: 1,3-5,8) |
**rect** | [**Rectangle**](Rectangle.md) | Rectangle of document area. |
**storage** | **string** | The document storage. | [optional]
**folder** | **string** | The document folder. | [optional]
**password** | **string** | Base64 encoded password. | [optional]

### Return type

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

### HTTP request headers

- **Content-Type**: application/json
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "asposepdfcloud",
"version": "25.8.0",
"version": "25.9.0",
"description": "Aspose.PDF Cloud is a REST API for creating and editing PDF files. Most popular features proposed by Aspose.PDF Cloud: PDF to Word, Convert PDF to Image, Merge PDF, Split PDF, Add Images to PDF, Rotate PDF. It can also be used to convert PDF files to different formats like DOC, HTML, XPS, TIFF and many more. Aspose.PDF Cloud gives you control: create PDFs from scratch or from HTML, XML, template, database, XPS or an image. Render PDFs to image formats such as JPEG, PNG, GIF, BMP, TIFF and many others. Aspose.PDF Cloud helps you manipulate elements of a PDF file like text, annotations, watermarks, signatures, bookmarks, stamps and so on. Its REST API also allows you to manage PDF pages by using features like merging, splitting, and inserting. Add images to a PDF file or convert PDF pages to images.",
"homepage": "https://products.aspose.cloud/pdf/cloud",
"author": {
Expand Down
74 changes: 74 additions & 0 deletions src/api/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13006,6 +13006,80 @@ export class PdfApi {
}


/**
*
* @summary Crop PDF document pages.
* @param name The document name.
* @param pages Comma separated list of pages and page ranges. (Example: 1,3-5,8)
* @param rect Rectangle of document area.
* @param storage The document storage.
* @param folder The document folder.
* @param password Base64 encoded password.
*/
public async postDocumentPagesCrop (name: string, pages: string, rect: Rectangle, storage?: string, folder?: string, password?: string) : Promise<{ response: http.IncomingMessage; body: AsposeResponse; }> {
const localVarPath = this.basePath + '/pdf/{name}/crop'
.replace('{' + 'name' + '}', encodeURIComponent(String(name)).replace('%2F', '/'));
let localVarQueryParameters: any = {};
let localVarHeaderParams: any = (<any>Object).assign({}, this.defaultHeaders);
let localVarFormParams: any = {};

// verify required parameter 'name' is not null or undefined
if (name === null || name === undefined) {
throw new Error('Required parameter name was null or undefined when calling postDocumentPagesCrop.');
}

// verify required parameter 'pages' is not null or undefined
if (pages === null || pages === undefined) {
throw new Error('Required parameter pages was null or undefined when calling postDocumentPagesCrop.');
}

// verify required parameter 'rect' is not null or undefined
if (rect === null || rect === undefined) {
throw new Error('Required parameter rect was null or undefined when calling postDocumentPagesCrop.');
}

if (pages !== undefined && null !== pages) {
localVarQueryParameters['pages'] = ObjectSerializer.serialize(pages, "string");
}

if (storage !== undefined && null !== storage) {
localVarQueryParameters['storage'] = ObjectSerializer.serialize(storage, "string");
}

if (folder !== undefined && null !== folder) {
localVarQueryParameters['folder'] = ObjectSerializer.serialize(folder, "string");
}

if (password !== undefined && null !== password) {
localVarQueryParameters['password'] = ObjectSerializer.serialize(password, "string");
}


let localVarUseFormData = false;
let fileData = null;
let localVarRequestOptions: localVarRequest.Options = {
method: 'POST',
qs: localVarQueryParameters,
headers: localVarHeaderParams,
uri: localVarPath,
useQuerystring: this._useQuerystring,
json: true,
body: ObjectSerializer.serialize(rect, "Rectangle")
};

if (Object.keys(localVarFormParams).length) {
if (localVarUseFormData) {
(<any>localVarRequestOptions).formData = localVarFormParams;
} else {
localVarRequestOptions.form = localVarFormParams;
}
}
const response = await invokeApiMethod(localVarRequestOptions, this.configuration, false, fileData);
const result = ObjectSerializer.deserialize(response.body, "AsposeResponse");
return Promise.resolve({body: result, response});
}


/**
*
* @summary Rsize PDF document.
Expand Down
2 changes: 1 addition & 1 deletion src/requestHelper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ async function invokeApiMethodInternal(requestOptions: request.Options, confgura
//headers
sa.set("User-Agent", "pdf nodejs sdk");
sa.set("x-aspose-client", "nodejs sdk");
sa.set("x-aspose-client-version", "25.8.0");
sa.set("x-aspose-client-version", "25.9.0");

if (!requestOptions.headers) {
requestOptions.headers = {};
Expand Down
Loading