diff --git a/Document-Processing/Common/Font-Manager/font-manager.md b/Document-Processing/Common/Font-Manager/font-manager.md
index c9bc2a0ebb..031398556b 100644
--- a/Document-Processing/Common/Font-Manager/font-manager.md
+++ b/Document-Processing/Common/Font-Manager/font-manager.md
@@ -11,7 +11,7 @@ documentation: UG
Font creation is a primary cause of excessive memory consumption and performance degradation during Office to PDF/Image conversions and PDF processing workflows. This problem is particularly pronounced in multi-threaded web applications where multiple users perform concurrent operations across different threads or browser tabs.
-To address this challenge, Syncfusion Document Processing libraries introduce the **FontManager** class, which provides centralized font management shared across all threads and conversion libraries. This approach eliminates duplicate font objects and significantly reduces memory overhead.
+To address this challenge, Syncfusion Document Processing libraries introduce the [FontManager](https://help.syncfusion.com/cr/document-processing/Syncfusion.Drawing.Fonts.FontManager.html) class, which provides centralized font management shared across all threads and conversion libraries. This approach eliminates duplicate font objects and significantly reduces memory overhead.
## Key Features
@@ -55,14 +55,12 @@ FontManager optimizes memory usage across the following Office to PDF/Image conv
PDF Library Operations
-
PDF creation and manipulation
-
PDF merging and splitting
-
PDF form filling and flattening
-
PDF page extraction and insertion
-
Adding text, images, and annotations to PDF
-
PDF redaction and security
-
PDF/A conformance
-
OCR text extraction
+
PDF/A Creation and Conversion
+
Annotations and Forms: Fill and Flatten
+
XPS to PDF Conversion
+
EMF to PDF Conversion
+
Insert Text in PDF
+
Tables and Light Tables (Data Grids in PDF)
@@ -72,7 +70,7 @@ N> FontManager automatically manages fonts across all these conversion types, wh
## Configuring Automatic Font Cleanup
-The `FontManager.Delay` property defines the duration (in milliseconds) after which unused font objects are automatically disposed and removed from the cache. When fonts are no longer referenced, an internal `System.Timers.Timer` triggers disposal based on this value.
+The [FontManager.Delay](https://help.syncfusion.com/cr/document-processing/Syncfusion.Drawing.Fonts.FontManager.html#Syncfusion_Drawing_Fonts_FontManager_Delay) property defines the duration (in milliseconds) after which unused font objects are automatically disposed and removed from the cache. When fonts are no longer referenced, an internal `System.Timers.Timer` triggers disposal based on this value.
**Default value:** 30,000 milliseconds (30 seconds),
**Valid range:** 1 to 2,147,483,647 milliseconds.
@@ -120,7 +118,7 @@ app.Run();
## Immediate Font Cache Cleanup
-The `FontManager.ClearCache()` method immediately clears all font caches managed by the FontManager. This method forcefully removes and disposes all font instances maintained in shared caches, allowing you to reclaim memory deterministically without waiting for the automatic cleanup delay.
+The [FontManager.ClearCache()](https://help.syncfusion.com/cr/document-processing/Syncfusion.Drawing.Fonts.FontManager.html#Syncfusion_Drawing_Fonts_FontManager_ClearCache) method immediately clears all font caches managed by the FontManager. This method forcefully removes and disposes all font instances maintained in shared caches, allowing you to reclaim memory deterministically without waiting for the automatic cleanup delay.
**Use cases:**
@@ -165,6 +163,8 @@ app.Run();
{% endhighlight %}
{% endtabs %}
+You can download a complete working sample from [GitHub](https://github.com/SyncfusionExamples/DocIO-Examples/tree/main/Unified-font-manager/.NET/).
+
## Best Practices
1. Set FontManager.Delay early: Configure the delay property in your application's startup code before any document processing begins (Optional).
diff --git a/Document-Processing/Data-Extraction/Smart-Form-Recognizer/NET/overview.md b/Document-Processing/Data-Extraction/Smart-Form-Recognizer/NET/overview.md
index 85fe624ec3..b241c3ed1a 100644
--- a/Document-Processing/Data-Extraction/Smart-Form-Recognizer/NET/overview.md
+++ b/Document-Processing/Data-Extraction/Smart-Form-Recognizer/NET/overview.md
@@ -36,7 +36,7 @@ FormRecognizer smartFormRecognizer = new FormRecognizer();
//Read the input PDF file as stream
FileStream inputStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.ReadWrite);
//Recognize the form and get the output as PDF stream
-PdfLoadedDocument pdfLoadedDocument =recognizer.RecognizeFormAsPdfDocument(inputStream);
+PdfLoadedDocument pdfLoadedDocument = smartFormRecognizer.RecognizeFormAsPdfDocument(inputStream);
//Save the loadeddocument
pdfLoadedDocument.Save(Output.pdf);
diff --git a/Document-Processing/Data-Extraction/Smart-Form-Recognizer/NET/recognize-forms.md b/Document-Processing/Data-Extraction/Smart-Form-Recognizer/NET/recognize-forms.md
index 0377d67f04..08376519a7 100644
--- a/Document-Processing/Data-Extraction/Smart-Form-Recognizer/NET/recognize-forms.md
+++ b/Document-Processing/Data-Extraction/Smart-Form-Recognizer/NET/recognize-forms.md
@@ -26,7 +26,7 @@ public void Button_Click(object sender, RoutedEventArgs e)
//Read the input PDF file as stream
FileStream inputStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.ReadWrite);
//Recognize the form and get the output as PDF stream
- PdfLoadedDocument pdfLoadedDocument =recognizer.RecognizeFormAsPdfDocument(inputStream);
+ PdfLoadedDocument pdfLoadedDocument = smartFormRecognizer.RecognizeFormAsPdfDocument(inputStream);
//Save the loadeddocument
pdfLoadedDocument.Save(Output.pdf);
}
@@ -45,7 +45,7 @@ public async void Button_Click(object sender, RoutedEventArgs e)
//Read the input PDF file as stream
FileStream inputStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.ReadWrite);
//Recognize the form and get the output as PDF stream
- PdfLoadedDocument pdfLoadedDocument = await recognizer.RecognizeFormAsPdfDocumentAsync(inputStream);
+ PdfLoadedDocument pdfLoadedDocument = await smartFormRecognizer.RecognizeFormAsPdfDocumentAsync(inputStream);
//Save the loadeddocument
pdfLoadedDocument.Save(Output.pdf);
}
diff --git a/Document-Processing/Data-Extraction/Smart-Form-Recognizer/overview.md b/Document-Processing/Data-Extraction/Smart-Form-Recognizer/overview.md
index ef3b800b62..1fd0d6eac0 100644
--- a/Document-Processing/Data-Extraction/Smart-Form-Recognizer/overview.md
+++ b/Document-Processing/Data-Extraction/Smart-Form-Recognizer/overview.md
@@ -84,7 +84,7 @@ FormRecognizer smartFormRecognizer = new FormRecognizer();
//Read the input PDF file as stream
FileStream inputStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.ReadWrite);
//Recognize the form and get the output as PDF stream
-PdfLoadedDocument pdfLoadedDocument =recognizer.RecognizeFormAsPdfDocument(inputStream);
+PdfLoadedDocument pdfLoadedDocument = smartFormRecognizer.RecognizeFormAsPdfDocument(inputStream);
//Save the loadeddocument
pdfLoadedDocument.Save(Output.pdf);
diff --git a/Document-Processing/Excel/Spreadsheet/Blazor/performance-metrics.md b/Document-Processing/Excel/Spreadsheet/Blazor/performance-metrics.md
new file mode 100644
index 0000000000..68afe90d29
--- /dev/null
+++ b/Document-Processing/Excel/Spreadsheet/Blazor/performance-metrics.md
@@ -0,0 +1,77 @@
+---
+layout: post
+title: Performance Metrics in Blazor Spreadsheet Control | Syncfusion
+description: Learn here all about performance metrics in the Blazor Spreadsheet control, including how it manages data, handles rendering speed and more.
+platform: document-processing
+control: Performance
+documentation: ug
+---
+
+# Performance Metrics in blazor Spreadsheet Control
+
+Performance metrics show how efficiently the [Syncfusion® blazor Spreadsheet](https://www.syncfusion.com/spreadsheet-editor-sdk/blazor-spreadsheet-editor) handles large datasets and core operations such as rendering, styling, number Formats and file import/export. This documentation provides the measured results for these operations to give a clear view of how the control performs under different workloads.
+
+
+## Environment
+
+The following environment configuration is used for performance evaluation:
+
+* **Browser**: Edge (latest)
+* **Hardware**: Modern multi‑core processor
+* **RAM**: 16 GB or higher
+* **Spreadsheet Version**:
+ * [Theme Version](https://www.nuget.org/packages/Syncfusion.Blazor.themes)
+ * [NuGet Version](https://www.nuget.org/packages/Syncfusion.Blazor.Spreadsheet)
+* **Data Source Format**: Mixed data types (numbers, text, number formats)
+
+
+
+## Spreadsheet Features
+
+This section outlines the operations evaluated in the Spreadsheet when working with large datasets. It covers actions such as rendering cells, applying styles, number formats and file import/export to help understand how the control processes common spreadsheet tasks.
+
+### Server
+
+| Operation | Dataset Size | Time (sec) |
+|-----------------------------|--------------|-------------|
+| Initial Rendering | 250k cells | 1.31 sec |
+| Applying Styles | 250k cells | 12.0 sec |
+| Applying Number Formats | 250k cells | 0.97 sec |
+
+
+### Wasm
+
+| Operation | Dataset Size | Time (sec) |
+|-----------------------------|--------------|-------------|
+| Initial Rendering | 250k cells | 6.99 sec |
+| Applying Styles | 250k cells | 15.98 sec |
+| Applying Number Formats | 250k cells | 9.45 sec |
+
+
+## Import and export performance metrics
+
+This section focuses on evaluating how the Spreadsheet handles file import and export operations involving large datasets with formatting and validation. It provides insight into how efficiently these operations are processed under varying data conditions.
+
+### Server
+
+| Operation | Dataset Size | Time (sec) |
+|-----------------------------------------|-----------------------------------|------------|
+| Importing | 250k cells without formats | 2.35 sec |
+| Importing | 250k cells with formats | 3.12 sec |
+| Exporting | 250k cells without formats | 1.07 sec |
+| Exporting | 250k cells with formats | 1.26 sec |
+
+### Wasm
+
+
+| Operation | Dataset Size | Time (sec) |
+|-----------------------------------------|-----------------------------------|------------|
+| Importing | 250k cells without formats | 38 sec |
+| Importing | 250k cells with formats | 50 sec |
+| Exporting | 250k cells without formats | 6.25 sec |
+| Exporting | 250k cells with formats | 8.14 sec |
+
+> **Disclaimer:** Performance metrics and memory benchmarking are based on internal tests under specific conditions. Actual results may vary depending on the environment and usage.
+## See Also
+
+* [Open and Save](https://help.syncfusion.com/document-processing/excel/spreadsheet/blazor/open-and-save)
diff --git a/Document-Processing/Excel/Spreadsheet/React/open-excel-files.md b/Document-Processing/Excel/Spreadsheet/React/open-excel-files.md
index e227a27c8c..d07bb64302 100644
--- a/Document-Processing/Excel/Spreadsheet/React/open-excel-files.md
+++ b/Document-Processing/Excel/Spreadsheet/React/open-excel-files.md
@@ -39,7 +39,7 @@ The following sample shows the `Open` option by using the [`openUrl`](https://ej
Please find the below table for the [beforeOpen](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/index-default#beforeopen) event arguments.
-## BeforeOpenEventArgs – Properties
+**BeforeOpenEventArgs – Properties**
| **Property** | **Type** | **Description** |
|-------------------|-------------------------------|-------------|
diff --git a/Document-Processing/Excel/Spreadsheet/React/save-excel-files.md b/Document-Processing/Excel/Spreadsheet/React/save-excel-files.md
index f76c922337..8d88ab29e2 100644
--- a/Document-Processing/Excel/Spreadsheet/React/save-excel-files.md
+++ b/Document-Processing/Excel/Spreadsheet/React/save-excel-files.md
@@ -3,7 +3,7 @@ layout: post
title: Save Excel Files in React Spreadsheet component | Syncfusion
description: Learn here all about Saving Excel files in Syncfusion React Spreadsheet component of Syncfusion Essential JS 2 and more.
platform: document-processing
-control: Open
+control: Save
documentation: ug
---
@@ -24,20 +24,26 @@ For a quick walkthrough on how the save functionality works, refer to the follow
In user interface, you can save Spreadsheet data as Excel document by clicking `File > Save As` menu item in ribbon.
-The following sample shows the `Save` option by using the [`saveUrl`](https://ej2.syncfusion.com/documentation/api/spreadsheet/index-default#saveurl) property in the Spreadsheet control. You can also use the [`beforeSave`](https://ej2.syncfusion.com/documentation/api/spreadsheet/index-default#beforesave) event to customize or cancel the save action which gets triggered before saving the Spreadsheet as an Excel file.
+The following sample shows the `Save` option by using the [`saveUrl`](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/index-default#saveurl) property in the Spreadsheet control. You can also use the [`beforeSave`](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/index-default#beforesave) event to customize or cancel the save action which gets triggered before saving the Spreadsheet as an Excel file.
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
-{% include code-snippet/spreadsheet/javascript-es6/open-save-cs5/index.ts %}
+{% highlight js tabtitle="app.jsx" %}
+{% include code-snippet/spreadsheet/react/open-save-cs5/app/app.jsx %}
+{% endhighlight %}
+{% highlight ts tabtitle="app.tsx" %}
+{% include code-snippet/spreadsheet/react/open-save-cs5/app/app.tsx %}
{% endhighlight %}
-{% highlight html tabtitle="index.html" %}
-{% include code-snippet/spreadsheet/javascript-es6/open-save-cs5/index.html %}
+{% highlight js tabtitle="datasource.jsx" %}
+{% include code-snippet/spreadsheet/react/open-save-cs5/app/datasource.jsx %}
+{% endhighlight %}
+{% highlight ts tabtitle="datasource.tsx" %}
+{% include code-snippet/spreadsheet/react/open-save-cs5/app/datasource.tsx %}
{% endhighlight %}
{% endtabs %}
-
-{% previewsample "/document-processing/code-snippet/spreadsheet/javascript-es6/open-save-cs5" %}
-Please find the below table for the [`beforeSave`](https://ej2.syncfusion.com/documentation/api/spreadsheet/index-default#beforesave) event arguments.
+{% previewsample "/document-processing/code-snippet/spreadsheet/react/open-save-cs5" %}
+
+Please find the below table for the [`beforeSave`](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/index-default#beforesave) event arguments.
| **Parameter** | **Type** | **Description** |
| ----- | ----- | ----- |
@@ -51,14 +57,14 @@ Please find the below table for the [`beforeSave`](https://ej2.syncfusion.com/do
> * Use `Ctrl + S` keyboard shortcut to save the Spreadsheet data as Excel file.
-> * The default value of [allowSave](https://ej2.syncfusion.com/documentation/api/spreadsheet/index-default#allowsave) property is `true`. For demonstration purpose, we have showcased the [allowSave](https://ej2.syncfusion.com/documentation/api/spreadsheet/index-default#allowsave) property in previous code snippet.
+> * The default value of [allowSave](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/index-default#allowsave) property is `true`. For demonstration purpose, we have showcased the [allowSave](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/index-default#allowsave) property in previous code snippet.
> * Demo purpose only, we have used the online web service url link.
## Save Excel files programmatically
To save Excel files programmatically in the Spreadsheet, you can use the [`save`](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/index-default#save) method of the Spreadsheet component. Before invoking this method, ensure that the [`saveUrl`](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/index-default#saveurl) property is properly configured, as it is required for processing and generating the file on the server.
-Please find the below table for the [`save`](https://ej2.syncfusion.com/documentation/api/spreadsheet/index-default#save) method arguments.
+Please find the below table for the [`save`](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/index-default#save) method arguments.
| **Parameter** | **Type** | **Description** |
|-----------------------|------------------------|------------------------------------------------------------------|
@@ -105,7 +111,6 @@ const root = createRoot(document.getElementById('spreadsheet'));
root.render();
```
-
## Supported Excel file formats for Save
The following file formats are supported when saving the Spreadsheet component:
@@ -119,20 +124,20 @@ The following file formats are supported when saving the Spreadsheet component:
### Save Excel files as Blob
-By default, the Spreadsheet control saves the Excel file and downloads it to the local file system. If you want to save an Excel file as blob data, you need to set `needBlobData` property to **true** and `isFullPost` property to **false** in the [beforeSave](https://ej2.syncfusion.com/documentation/api/spreadsheet/index-default#beforesave) event of the spreadsheet. Subsequently, you will receive the spreadsheet data as a blob in the [saveComplete](https://ej2.syncfusion.com/documentation/api/spreadsheet/index-default#savecomplete) event. You can then post the blob data to the server endpoint for saving.
+By default, the Spreadsheet control saves the Excel file and downloads it to the local file system. If you want to save an Excel file as blob data, you need to set `needBlobData` property to **true** and `isFullPost` property to **false** in the [beforeSave](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/index-default#beforesave) event of the spreadsheet. Subsequently, you will receive the spreadsheet data as a blob in the [saveComplete](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/index-default#savecomplete) event. You can then post the blob data to the server endpoint for saving.
Please find below the code to retrieve blob data from the Spreadsheet control below.
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
-{% include code-snippet/spreadsheet/javascript-es6/save-as-blobdata-cs1/index.ts %}
+{% highlight js tabtitle="app.jsx" %}
+{% include code-snippet/spreadsheet/react/save-as-blobdata-cs1/app/app.jsx %}
{% endhighlight %}
-{% highlight html tabtitle="index.html" %}
-{% include code-snippet/spreadsheet/javascript-es6/save-as-blobdata-cs1/index.html %}
+{% highlight ts tabtitle="app.tsx" %}
+{% include code-snippet/spreadsheet/react/save-as-blobdata-cs1/app/app.tsx %}
{% endhighlight %}
{% endtabs %}
-
-{% previewsample "/document-processing/code-snippet/spreadsheet/javascript-es6/save-as-blobdata-cs1" %}
+
+{% previewsample "/document-processing/code-snippet/spreadsheet/react/save-as-blobdata-cs1" %}
### Save Workbook as JSON
@@ -155,7 +160,7 @@ The following example demonstrates how to save a workbook as JSON from the Sprea
### Save Excel files to a server
-By default, the Spreadsheet control saves the Excel file and downloads it to the local file system. If you want to save an Excel file to a server location, you need to configure the server endpoint to convert the spreadsheet data into a file stream and save it to the server location. To do this, first, on the client side, you must convert the spreadsheet data into `JSON` format using the [saveAsJson](https://ej2.syncfusion.com/documentation/api/spreadsheet/index-default#saveasjson) method and send it to the server endpoint. On the server endpoint, you should convert the received spreadsheet `JSON` data into a file stream using `Syncfusion.EJ2.Spreadsheet.AspNet.Core`, then convert the stream into an Excel file, and finally save it to the server location.
+By default, the Spreadsheet control saves the Excel file and downloads it to the local file system. If you want to save an Excel file to a server location, you need to configure the server endpoint to convert the spreadsheet data into a file stream and save it to the server location. To do this, first, on the client side, you must convert the spreadsheet data into `JSON` format using the [saveAsJson](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/index-default#saveasjson) method and send it to the server endpoint. On the server endpoint, you should convert the received spreadsheet `JSON` data into a file stream using `Syncfusion.EJ2.Spreadsheet.AspNet.Core`, then convert the stream into an Excel file, and finally save it to the server location.
**Client Side**:
@@ -219,78 +224,77 @@ Before proceeding with the save process, you should deploy the spreadsheet open/
[How to deploy a spreadsheet open and save web API service to AWS Lambda](https://support.syncfusion.com/kb/article/17184/how-to-deploy-a-spreadsheet-open-and-save-web-api-service-to-aws-lambda)
-After deployment, you will get the AWS service URL for the open and save actions. Before saving the Excel file with this hosted save URL, you need to prevent the default save action to avoid getting a corrupted excel file on the client end. The save service returns the file stream as a result to the client, which can cause the file to become corrupted. To prevent this, set the `args.cancel` value to `true` in the [`beforeSave`](https://ej2.syncfusion.com/documentation/api/spreadsheet/index-default#beforesave) event. After that, convert the spreadsheet data into JSON format using the [saveAsJson](https://ej2.syncfusion.com/documentation/api/spreadsheet/index-default#saveasjson) method in the `beforeSave` event and send it to the save service endpoint URL using a fetch request.
+After deployment, you will get the AWS service URL for the open and save actions. Before saving the Excel file with this hosted save URL, you need to prevent the default save action to avoid getting a corrupted excel file on the client end. The save service returns the file stream as a result to the client, which can cause the file to become corrupted. To prevent this, set the `args.cancel` value to `true` in the [`beforeSave`](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/index-default#beforesave) event. After that, convert the spreadsheet data into JSON format using the [saveAsJson](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/index-default#saveasjson) method in the `beforeSave` event and send it to the save service endpoint URL using a fetch request.
On the server side, the save service will take the received JSON data, pass it to the workbook `Save` method, and return the result as a base64 string. The fetch success callback will receive the Excel file in base64 string format on the client side. Finally, you can then convert the base64 string back to a file on the client end to obtain a non-corrupted Excel file.
The following code example shows how to save an Excel file using a hosted web service in AWS Lambda, as mentioned above.
-```ts
-import { Spreadsheet } from '@syncfusion/ej2-spreadsheet';
-
-let saveInitiated: boolean;
-//Initialize Spreadsheet component
-let spreadsheet: Spreadsheet = new Spreadsheet({
- sheets: [
- ],
- saveUrl:'https://xxxxxxxxxxxxxxxxxxxxxxxxx.amazonaws.com/Prod/api/spreadsheet/save',
- beforeSave: (eventArgs) => {
+```js
+function Default() {
+ let spreadsheet;
+ let saveInitiated;
+ const beforeSaveHandler = (eventArgs) => {
if (!saveInitiated) {
eventArgs.cancel = true; // Preventing default save action.
saveInitiated = true; // The "beforeSave" event will trigger for "saveAsJson" action also, so we are preventing for the "saveAsJson".
saveAsExcel(eventArgs);
}
- }
-});
-const saveAsExcel = (eventArgs) => {
- // Convert the spreadsheet workbook to JSON data.
- spreadsheet.saveAsJson().then(Json => {
- saveInitiated = false;
- const formData = new FormData();
- // Passing the JSON data to server to perform save operation.
- formData.append('JSONData', JSON.stringify(Json.jsonObject.Workbook));
- formData.append('saveType', 'Xlsx');
- formData.append('fileName', 'Worksheet');
- formData.append('pdfLayoutSettings', '{"fitSheetOnOnePage":false,"orientation":"Portrait"}');
- // Using fetch API to invoke the server for save processing.
- fetch('https://xxxxxxxxxxxxxxxxxxxxxxxxx.amazonaws.com/Prod/api/spreadsheet/save', {
- method: 'POST', body: formData
- }).then(response => {
- if (response.ok) {
- return response.blob();
- }
- }).then(data => {
- const reader = new FileReader();
- reader.onload = function () {
- //Converts the result of the file reading operation into a base64 string.
- const textBase64Str = reader.result.toString();
- //Converts the base64 string into a Excel base64 string.
- const excelBase64Str = atob(textBase64Str.replace('data:text/plain;base64,', ''));
- //Converts the Excel base64 string into byte characters.
- const byteCharacters = atob(excelBase64Str.replace('data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,', ''));
- const byteArrays = [];
- for (let i = 0; i < byteCharacters.length; i++) {
- byteArrays.push(byteCharacters.charCodeAt(i));
+ };
+ const saveAsExcel = (eventArgs) => {
+ // Convert the spreadsheet workbook to JSON data.
+ spreadsheet.saveAsJson().then(Json => {
+ saveInitiated = false;
+ const formData = new FormData();
+ // Passing the JSON data to server to perform save operation.
+ formData.append('JSONData', JSON.stringify(Json.jsonObject.Workbook));
+ formData.append('saveType', 'Xlsx');
+ formData.append('fileName', 'Worksheet');
+ formData.append('pdfLayoutSettings', '{"fitSheetOnOnePage":false,"orientation":"Portrait"}');
+ // Using fetch API to invoke the server for save processing.
+ fetch('https://xxxxxxxxxxxxxxxxxxxxxxxxx.amazonaws.com/Prod/api/spreadsheet/save', {
+ method: 'POST', body: formData
+ }).then(response => {
+ if (response.ok) {
+ return response.blob();
}
- const byteArray = new Uint8Array(byteArrays);
- //creates a blob data from the byte array with xlsx content type.
- const blobData = new Blob([byteArray], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
- const blobUrl = URL.createObjectURL(blobData);
- const anchor = document.createElement('a');
- anchor.download = 'Sample.xlsx';
- anchor.href = blobUrl;
- document.body.appendChild(anchor);
- anchor.click();
- URL.revokeObjectURL(blobUrl);
- document.body.removeChild(anchor);
- }
- reader.readAsDataURL(data);
- });
- });
-};
-
-//Render initialized Spreadsheet component
-spreadsheet.appendTo('#spreadsheet');
+ }).then(data => {
+ const reader = new FileReader();
+ reader.onload = function () {
+ //Converts the result of the file reading operation into a base64 string.
+ const textBase64Str = reader.result.toString();
+ //Converts the base64 string into a Excel base64 string.
+ const excelBase64Str = atob(textBase64Str.replace('data:text/plain;base64,', ''));
+ //Converts the Excel base64 string into byte characters.
+ const byteCharacters = atob(excelBase64Str.replace('data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,', ''));
+ const byteArrays = [];
+ for (let i = 0; i < byteCharacters.length; i++) {
+ byteArrays.push(byteCharacters.charCodeAt(i));
+ }
+ const byteArray = new Uint8Array(byteArrays);
+ //creates a blob data from the byte array with xlsx content type.
+ const blobData = new Blob([byteArray], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
+ const blobUrl = URL.createObjectURL(blobData);
+ const anchor = document.createElement('a');
+ anchor.download = 'Sample.xlsx';
+ anchor.href = blobUrl;
+ document.body.appendChild(anchor);
+ anchor.click();
+ URL.revokeObjectURL(blobUrl);
+ document.body.removeChild(anchor);
+ }
+ reader.readAsDataURL(data);
+ });
+ });
+ };
+ return (
);
+}
+export default Default;
```
```csharp
@@ -305,20 +309,20 @@ public string Save([FromForm]SaveSettings saveSettings)
In the Spreadsheet component, there is currently no direct option to save data as a `Base64` string. You can achieve this by saving the Spreadsheet data as blob data and then converting that saved blob data to a `Base64` string using `FileReader`.
-> You can get the Spreadsheet data as blob in the [saveComplete](https://ej2.syncfusion.com/documentation/api/spreadsheet/index-default#savecomplete) event when you set the `needBlobData` as **true** and `isFullPost` as **false** in the [beforeSave](https://ej2.syncfusion.com/documentation/api/spreadsheet/index-default#beforesave) event.
+> You can get the Spreadsheet data as blob in the [saveComplete](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/index-default#savecomplete) event when you set the `needBlobData` as **true** and `isFullPost` as **false** in the [beforeSave](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/index-default#beforesave) event.
The following code example shows how to save the spreadsheet data as base64 string.
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
-{% include code-snippet/spreadsheet/javascript-es6/base-64-string/index.ts %}
+{% highlight js tabtitle="app.jsx" %}
+{% include code-snippet/spreadsheet/react/base-64-string/app/app.jsx %}
{% endhighlight %}
-{% highlight html tabtitle="index.html" %}
-{% include code-snippet/spreadsheet/javascript-es6/base-64-string/index.html %}
+{% highlight ts tabtitle="app.tsx" %}
+{% include code-snippet/spreadsheet/react/base-64-string/app/app.tsx %}
{% endhighlight %}
{% endtabs %}
-
-{% previewsample "/document-processing/code-snippet/spreadsheet/javascript-es6/base-64-string" %}
+
+{% previewsample "/document-processing/code-snippet/spreadsheet/react/base-64-string" %}
## Advanced Save options
diff --git a/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/Convert-HTML-to-PDF-in-Windows-Server.md b/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/Convert-HTML-to-PDF-in-Windows-Server.md
new file mode 100644
index 0000000000..5473e3b2bf
--- /dev/null
+++ b/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/Convert-HTML-to-PDF-in-Windows-Server.md
@@ -0,0 +1,97 @@
+---
+title: Convert HTML to PDF on the Windows Server | Syncfusion
+description: Learn how to convert HTML to PDF on a Windows Server using IIS Manager with clear and simple guidance.
+platform: document-processing
+control: PDF
+documentation: UG
+keywords: create pdf on windows server, generate pdf on windows server, syncfusion html to pdf, host pdf converter in iis
+---
+
+# Convert HTML to PDF on the Windows Server using IIS Manager
+
+The Syncfusion® HTML to PDF converter is a .NET library for converting webpages, SVG, MHTML, and HTML to PDF using C#. Using this library, convert HTML to PDF document on the Windows Server using IIS Manager.
+
+## Steps to convert HTML to PDF on the windows server using IIS manager
+
+Step 1: Create a new C# ASP.NET Web Application (.NET Framework) project.
+
+
+Step 2: In the Create a new ASP.NET Web Application window, choose the MVC template and click Next to proceed.
+
+
+Step 3: Install [Syncfusion.HtmlToPdfConverter.Net.Windows](https://www.nuget.org/packages/Syncfusion.HtmlToPdfConverter.Net.Windows) NuGet package as reference to your .NET Standard applications from [NuGet.org](https://www.nuget.org/).
+
+
+Step 4: Include the following namespaces in the HomeController.cs file.
+
+{% highlight c# tabtitle="C#" %}
+
+using Syncfusion.Pdf;
+using Syncfusion.HtmlConverter;
+using System.IO;
+
+{% endhighlight %}
+
+Step 5: Add a new button in the Index.cshtml as shown below.
+
+{% highlight c# tabtitle="C#" %}
+
+@{Html.BeginForm("ExportToPDF", "Home", FormMethod.Post);
+ {
+
+
+
+ }
+ Html.EndForm();
+ }
+
+{% endhighlight %}
+
+Step 6: Add a new action method named ExportToPDF in HomeController.cs and include the below code example to convert HTML to PDF document using [Convert](https://help.syncfusion.com/cr/document-processing/Syncfusion.HtmlConverter.HtmlToPdfConverter.html#Syncfusion_HtmlConverter_HtmlToPdfConverter_Convert_System_String_) method in [HtmlToPdfConverter](https://help.syncfusion.com/cr/document-processing/Syncfusion.HtmlConverter.HtmlToPdfConverter.html) class.
+
+{% highlight c# tabtitle="C#" %}
+
+//Initialize HTML to PDF converter.
+HtmlToPdfConverter htmlConverter = new HtmlToPdfConverter();
+//Convert URL to PDF document.
+PdfDocument document = htmlConverter.Convert("https://www.syncfusion.com");
+//Create memory stream.
+MemoryStream stream = new MemoryStream();
+//Save the document to memory stream.
+document.Save(stream);
+document.Close(true);
+return File(stream.ToArray(), System.Net.Mime.MediaTypeNames.Application.Pdf, "HTML-to-PDF.pdf");
+
+{% endhighlight %}
+
+Step 7: Run the project and verify that the HTML‑to‑PDF conversion functions correctly in the local environment.
+
+## Publish the project to a Windows Server using IIS
+
+Step 1: Publish the project to a local folder by right‑clicking the project, selecting **Publish**, choosing the **Folder** option, and clicking **Next**.
+
+
+Step 2: Provide the folder path where the project should be published.
+
+
+Step 3: After creating the publish profile, Visual Studio opens the Publish dashboard. Review the target location, configuration, and other settings, and adjust them if necessary. Once everything looks correct, click **Publish** to deploy the application to the selected destination.
+
+
+Step 4: It will generate and publish all necessary files to the local publish directory.
+
+
+Step 5: Copy the published output folder to the server and host the application in IIS.
+i.Open **IIS Manager** on the server and create a new website.
+
+ii.Enter a **site name** and select the **physical path** that points to the published output folder on the server.
+
+
+iii. Obtain the server’s IP address after adding the website in the local IIS server.
+
+iv. From your local computer, browse the website using the server’s IP address and port number. Once the site loads successfully, export the webpage to PDF.
+
+
+A complete working sample is available for download from [GitHub](https://github.com/SyncfusionExamples/html-to-pdf-csharp-examples/tree/master/ASP.NET%20Core).
+
+Click the button to convert the Syncfusion® webpage into a PDF document. The generated PDF will appear as shown below.
+
diff --git a/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/htmlconversion_images/IIS-Browser.png b/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/htmlconversion_images/IIS-Browser.png
new file mode 100644
index 0000000000..96a3863c61
Binary files /dev/null and b/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/htmlconversion_images/IIS-Browser.png differ
diff --git a/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/htmlconversion_images/IIS-Folder.png b/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/htmlconversion_images/IIS-Folder.png
new file mode 100644
index 0000000000..db35fcc185
Binary files /dev/null and b/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/htmlconversion_images/IIS-Folder.png differ
diff --git a/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/htmlconversion_images/IIS-Output.png b/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/htmlconversion_images/IIS-Output.png
new file mode 100644
index 0000000000..5124dd5872
Binary files /dev/null and b/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/htmlconversion_images/IIS-Output.png differ
diff --git a/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/htmlconversion_images/IIS-Publish.png b/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/htmlconversion_images/IIS-Publish.png
new file mode 100644
index 0000000000..d52d2b1566
Binary files /dev/null and b/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/htmlconversion_images/IIS-Publish.png differ
diff --git a/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/htmlconversion_images/IIS-RunBrowser.png b/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/htmlconversion_images/IIS-RunBrowser.png
new file mode 100644
index 0000000000..3f8cd3436d
Binary files /dev/null and b/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/htmlconversion_images/IIS-RunBrowser.png differ
diff --git a/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/htmlconversion_images/IIS-Website.png b/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/htmlconversion_images/IIS-Website.png
new file mode 100644
index 0000000000..43b285c9ff
Binary files /dev/null and b/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/htmlconversion_images/IIS-Website.png differ
diff --git a/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/htmlconversion_images/IIS-localfolder.png b/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/htmlconversion_images/IIS-localfolder.png
new file mode 100644
index 0000000000..dbb63067a8
Binary files /dev/null and b/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/htmlconversion_images/IIS-localfolder.png differ
diff --git a/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/htmlconversion_images/nuget-package-window.png b/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/htmlconversion_images/nuget-package-window.png
new file mode 100644
index 0000000000..3f255b9f8e
Binary files /dev/null and b/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/htmlconversion_images/nuget-package-window.png differ
diff --git a/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/troubleshooting.md b/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/troubleshooting.md
index 4ddb055488..2b890d7d46 100644
--- a/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/troubleshooting.md
+++ b/Document-Processing/PDF/Conversions/HTML-To-PDF/NET/troubleshooting.md
@@ -1560,10 +1560,12 @@ N> We have option to exclude the default Blink binaries from the installation pa
## How to Exclude BlinkBinaries or Runtime Files in Build or Deployment
-The runtime files, or blink binaries, will be copied into a bin or published folder while building and publishing the application.
-By including the native option in the package reference of the csproj file, you can exclude the runtime files or blink binaries from being copied into the bin or publish folder while building and publishing the application. But you need to place the BlinkBinaries in the server disk and set the BlinkPath in the BlinkConverterSettings to perform the conversion.
+When you build or publish the application, the Syncfusion HTML‑to‑PDF converter automatically copies the Blink runtime files (BlinkBinaries) into the bin or publish output folder. These binaries are required for HTML‑to‑PDF conversion at runtime. However, in certain deployment scenarios—such as reducing the deployment size or using a shared/system‑installed Chromium—you can exclude these files and instead provide the Blink binaries manually on the host machine.
+
+To exclude BlinkBinaries during the build process, configure your project file depending on whether you are using .NET Core/.NET or .NET Framework.
-N> Using this approach, you can reduce the deployment size on your own servers.
+Exclude BlinkBinaries in .NET Core
+You can prevent runtime files from being included by restricting the package to compile-only assets using the IncludeAssets tag in the PackageReference. This stops all Blink runtime binaries from being copied into the output folder.
Refer to the following package reference:
@@ -1571,11 +1573,31 @@ Refer to the following package reference:
{% highlight C# %}
-
- native
+
+ compile;runtime
{% endhighlight %}
{% endtabs %}
+By using IncludeAssets="compile", only the required compile-time metadata is included, and all runtime dependencies (BlinkBinaries) are excluded from the final build or publish output.
+
+N> If you exclude runtime files, you must manually place BlinkBinaries on the server and configure BlinkPath in BlinkConverterSettings for conversion to work.
+
+Exclude BlinkBinaries in .NET Framework Projects
+
+For .NET Framework applications, Blink runtime files are included through a .targets file referenced in the project.
+To exclude BlinkBinaries, simply remove this import entry.
+
+{% tabs %}
+{% highlight C# %}
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+Removing this line prevents the Syncfusion® build targets from copying BlinkBinaries and other runtime files into your bin folder during build or publish.
+
+N> By excluding BlinkBinaries, you can significantly reduce the size of your deployment package, especially in server environments where disk usage and deployment time matter.
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Library/NET/Azure_images/Azure-app-service-windows/Output_screenshot.png b/Document-Processing/PDF/PDF-Library/NET/Azure_images/Azure-app-service-windows/Output.png
similarity index 100%
rename from Document-Processing/PDF/PDF-Library/NET/Azure_images/Azure-app-service-windows/Output_screenshot.png
rename to Document-Processing/PDF/PDF-Library/NET/Azure_images/Azure-app-service-windows/Output.png
diff --git a/Document-Processing/PDF/PDF-Library/NET/Azure_images/Azure-app-service-windows/Publish_button_screenshot.png b/Document-Processing/PDF/PDF-Library/NET/Azure_images/Azure-app-service-windows/Publish_button.png
similarity index 100%
rename from Document-Processing/PDF/PDF-Library/NET/Azure_images/Azure-app-service-windows/Publish_button_screenshot.png
rename to Document-Processing/PDF/PDF-Library/NET/Azure_images/Azure-app-service-windows/Publish_button.png
diff --git a/Document-Processing/PDF/PDF-Library/NET/Azure_images/Azure-app-service-windows/Publish_profile_screenshot.png b/Document-Processing/PDF/PDF-Library/NET/Azure_images/Azure-app-service-windows/Publish_profile.png
similarity index 100%
rename from Document-Processing/PDF/PDF-Library/NET/Azure_images/Azure-app-service-windows/Publish_profile_screenshot.png
rename to Document-Processing/PDF/PDF-Library/NET/Azure_images/Azure-app-service-windows/Publish_profile.png
diff --git a/Document-Processing/PDF/PDF-Library/NET/Create-PDF-document-in-Azure-App-Service-Windows.md b/Document-Processing/PDF/PDF-Library/NET/Create-PDF-document-in-Azure-App-Service-Windows.md
index 207b0ac42a..b3506d9cf8 100644
--- a/Document-Processing/PDF/PDF-Library/NET/Create-PDF-document-in-Azure-App-Service-Windows.md
+++ b/Document-Processing/PDF/PDF-Library/NET/Create-PDF-document-in-Azure-App-Service-Windows.md
@@ -139,10 +139,10 @@ public IActionResult CreatePDFDocument()
## Steps to publish as Azure App Service on Windows
Step 1: Right-click the project and select **Publish** option.
-
+
Step 2: Click the **Add a Publish Profile** button.
-
+
Step 3: Select the publish target as **Azure**.

@@ -172,7 +172,7 @@ Step 11: Now, the published webpage will open in the browser.

Step 12: Select the PDF document and Click **Create PDF document** to create a PDF document.You will get the output PDF document as follows.
-
+
You can download a complete working sample from [GitHub](https://github.com/SyncfusionExamples/PDF-Examples/tree/master/Getting%20Started/Azure/Azure%20App%20Service).
diff --git a/Document-Processing/PDF/PDF-Library/NET/Create-PDF-file-in-MaUI.md b/Document-Processing/PDF/PDF-Library/NET/Create-PDF-file-in-MaUI.md
index 86d1859f72..227b8c6992 100644
--- a/Document-Processing/PDF/PDF-Library/NET/Create-PDF-file-in-MaUI.md
+++ b/Document-Processing/PDF/PDF-Library/NET/Create-PDF-file-in-MaUI.md
@@ -28,9 +28,7 @@ N> Our PDF library is currently supported in .NET MAUI applications on the Andro
{% endtabcontent %}
{% endtabcontents %}
-A complete working example of creating a PDF document in the .NET MAUI Desktop app can be downloaded from this [link](https://www.syncfusion.com/downloads/support/directtrac/general/ze/PdfSampleMaUI-1356433164887362210.zip).
-
-You can download a complete working sample from [GitHub](https://github.com/SyncfusionExamples/PDF-Examples/tree/master/Getting%20Started/MAUI/CreatePdfDemoSample).
+You can download a complete working sample from [GitHub](https://github.com/SyncfusionExamples/PDF-Examples/tree/master/Getting%20Started/MAUI/CreateMAUIPDFSample).
By executing the program in windows, you will get the PDF document as follows.

@@ -115,7 +113,7 @@ Download the helper files from this [link](https://www.syncfusion.com/downloads/
PreviewControllerDS.cs QLPreviewItemFileSystem.cs
- Helper classes for viewing the Pdf document in iOS device
+ Helper classes for viewing the PDF document in iOS device
diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-OCR/Troubleshooting.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-OCR/Troubleshooting.md
index 2453216a10..8d61ccc87c 100644
--- a/Document-Processing/PDF/PDF-Library/NET/Working-with-OCR/Troubleshooting.md
+++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-OCR/Troubleshooting.md
@@ -634,3 +634,20 @@ By applying these configuration changes, you can ensure that your AKS workloads
+## Does OCRProcessor require Microsoft.mshtml?
+
+
+
+
Query
+
+
+Is Microsoft.mshtml required when using the OCRProcessor in the .NET Framework?
+
+
+
+
Solution
+
+Yes, the Microsoft.mshtml component is required when using the OCRProcessor in .NET Framework applications. We internally rely on this package to parse the hOCR results, which are delivered in HTML format. Because of this, Microsoft.mshtml is necessary for .NET Framework projects that use the OCRProcessor.
+
+
+
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-PDF-Conformance.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-PDF-Conformance.md
index 1566ea5758..d5bbc3bc4d 100644
--- a/Document-Processing/PDF/PDF-Library/NET/Working-with-PDF-Conformance.md
+++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-PDF-Conformance.md
@@ -1239,7 +1239,7 @@ FileStream fontStream = new FileStream("Arial.ttf", FileMode.Open, FileAccess.Re
//Set the font.
PdfFont font = new PdfTrueTypeFont(fontStream, 14);
//Draw the text.
-graphics.DrawString("Hello world!", pdfFont, brush, new PointF(20, 20));
+graphics.DrawString("Hello world!", font, brush, new PointF(20, 20));
//Save and close the document.
document.Save("Output.pdf");
@@ -1296,7 +1296,7 @@ Dim brush As PdfBrush = New PdfSolidBrush(Color.Black)
Dim font As New Font("Arial", 20.0F, FontStyle.Regular)
Dim pdfFont As PdfFont = New PdfTrueTypeFont(font, FontStyle.Regular, 12, False, True)
'Draw the text.
-graphics.DrawString("Hello world!", font, brush, New PointF(20, 20))
+graphics.DrawString("Hello world!", pdfFont, brush, New PointF(20, 20))
'Save and close the document.
document.Save("Output.pdf")
diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-Pages.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-Pages.md
index b8e22d2bbf..cc4d38297b 100644
--- a/Document-Processing/PDF/PDF-Library/NET/Working-with-Pages.md
+++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-Pages.md
@@ -1599,7 +1599,7 @@ Refer to the following code example to define custom behavior for PDF page‑lev
{% tabs %}
-{% highlight c# tabtitle="C# [Cross-platform]" %}
+{% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Pages/Add-Page-Level-Actions-in-PDF/.NET/Add-Page-Level-Actions-in-PDF/Program.cs" %}
using Syncfusion.Pdf;
using Syncfusion.Pdf.Interactive;
@@ -1609,11 +1609,10 @@ using (PdfDocument document = new PdfDocument())
{
// Add a page to the document.
PdfPage page1 = document.Pages.Add();
- document.Actions.AfterOpen =
// Create and add new JavaScript action to execute when the first page opens
- Page1.Actions.OnOpen = new PdfJavaScriptAction("app.alert(\"Welcome! This page has just been opened.\");");
+ page1.Actions.OnOpen = new PdfJavaScriptAction("app.alert(\"Welcome! This page has just been opened.\");");
// Create and add new URI action to execute when the first page closes
- Page1.Actions.OnClose = new PdfUriAction("http://www.google.com");
+ page1.Actions.OnClose = new PdfUriAction("http://www.google.com");
// Add second page to the document.
PdfPage page2 = document.Pages.Add();
// Create a sound action
@@ -1623,13 +1622,16 @@ using (PdfDocument document = new PdfDocument())
soundAction.Sound.Encoding = PdfSoundEncoding.Signed;
soundAction.Volume = 0.9f;
// Set the sound action to execute when the second page opens
- Page2.Actions.OnOpen = soundAction;
+ page2.Actions.OnOpen = soundAction;
// Create and add new Launch action to execute when the second page closes
- Page2.Actions.OnClose = new PdfLaunchAction("logo.png");
- // Removing the close action on first page
- Page1.Actions.OnClose = null;
- // Removing both open and close actions on second page
- Page2.Actions.Clear(true);
+ page2.Actions.OnClose = new PdfLaunchAction("logo.png");
+ // Add third page to the document
+ PdfPage page3 = document.Pages.Add();
+ // Create and add new JavaScript action to execute when the third page opens
+ PdfAction jsAction = new PdfJavaScriptAction("app.alert(\"Welcome! Third page has just been opened.\");");
+ jsAction.Next = new PdfJavaScriptAction("app.alert(\"This is the second action.\");");
+ jsAction.Next.Next = new PdfJavaScriptAction("app.alert(\"This is the third action.\");");
+ page3.Actions.OnOpen = jsAction;
//Save the document
document.Save("Output.pdf");
}
@@ -1646,11 +1648,10 @@ using (PdfDocument document = new PdfDocument())
{
// Add a page to the document.
PdfPage page1 = document.Pages.Add();
- document.Actions.AfterOpen =
// Create and add new JavaScript action to execute when the first page opens
- Page1.Actions.OnOpen = new PdfJavaScriptAction("app.alert(\"Welcome! This page has just been opened.\");");
+ page1.Actions.OnOpen = new PdfJavaScriptAction("app.alert(\"Welcome! This page has just been opened.\");");
// Create and add new URI action to execute when the first page closes
- Page1.Actions.OnClose = new PdfUriAction("http://www.google.com");
+ page1.Actions.OnClose = new PdfUriAction("http://www.google.com");
// Add second page to the document.
PdfPage page2 = document.Pages.Add();
// Create a sound action
@@ -1660,13 +1661,16 @@ using (PdfDocument document = new PdfDocument())
soundAction.Sound.Encoding = PdfSoundEncoding.Signed;
soundAction.Volume = 0.9f;
// Set the sound action to execute when the second page opens
- Page2.Actions.OnOpen = soundAction;
+ page2.Actions.OnOpen = soundAction;
// Create and add new Launch action to execute when the second page closes
- Page2.Actions.OnClose = new PdfLaunchAction("logo.png");
- // Removing the close action on first page
- Page1.Actions.OnClose = null;
- // Removing both open and close actions on second page
- Page2.Actions.Clear(true);
+ page2.Actions.OnClose = new PdfLaunchAction("logo.png");
+ // Add third page to the document
+ PdfPage page3 = document.Pages.Add();
+ // Create and add new JavaScript action to execute when the third page opens
+ PdfAction jsAction = new PdfJavaScriptAction("app.alert(\"Welcome! Third page has just been opened.\");");
+ jsAction.Next = new PdfJavaScriptAction("app.alert(\"This is the second action.\");");
+ jsAction.Next.Next = new PdfJavaScriptAction("app.alert(\"This is the third action.\");");
+ page3.Actions.OnOpen = jsAction;
//Save the document
document.Save("Output.pdf");
}
@@ -1680,15 +1684,18 @@ Imports Syncfusion.Pdf.Interactive
' Create a new PDF document.
Using document As New PdfDocument()
+
' Add a page to the document.
Dim page1 As PdfPage = document.Pages.Add()
' Create and add new JavaScript action to execute when the first page opens
- page1.Actions.OnOpen = New PdfJavaScriptAction("app.alert(""Welcome! This page has just been opened."");")
+ page1.Actions.OnOpen = New PdfJavaScriptAction(
+ "app.alert(""Welcome! This page has just been opened."");"
+ )
' Create and add new URI action to execute when the first page closes
page1.Actions.OnClose = New PdfUriAction("http://www.google.com")
' Add second page to the document.
Dim page2 As PdfPage = document.Pages.Add()
- ' Create a sound action
+ ' Create a sound action
Dim soundAction As New PdfSoundAction("Startup.wav")
soundAction.Sound.Bits = 16
soundAction.Sound.Channels = PdfSoundChannels.Stereo
@@ -1698,14 +1705,121 @@ Using document As New PdfDocument()
page2.Actions.OnOpen = soundAction
' Create and add new Launch action to execute when the second page closes
page2.Actions.OnClose = New PdfLaunchAction("logo.png")
- ' Removing the close action on first page
- page1.Actions.OnClose = Nothing
- ' Removing both open and close actions on second page
- page2.Actions.Clear(True)
+ ' Add third page to the document
+ Dim page3 As PdfPage = document.Pages.Add()
+ ' Create and add new JavaScript action to execute when the third page opens
+ Dim jsAction As PdfAction = New PdfJavaScriptAction(
+ "app.alert(""Welcome! Third page has just been opened."");"
+ )
+ jsAction.Next = New PdfJavaScriptAction(
+ "app.alert(""This is the second action."");"
+ )
+ jsAction.Next.Next = New PdfJavaScriptAction(
+ "app.alert(""This is the third action."");"
+ )
+ page3.Actions.OnOpen = jsAction
' Save the document
document.Save("Output.pdf")
End Using
{% endhighlight %}
-{% endtabs %}
\ No newline at end of file
+{% endtabs %}
+
+You can download a complete working sample from [GitHub](https://github.com/SyncfusionExamples/PDF-Examples/tree/master/Pages/Add-Page-Level-Actions-in-PDF/.NET).
+
+## Removing page-level actions from PDF
+
+Removes page‑level actions from PDF documents by disabling actions triggered on page open and page close events, ensuring that pages no longer execute automatic behaviors while preserving existing annotation actions where required.
+
+Refer to the following code example for removing PDF page‑level actions.
+
+{% tabs %}
+
+{% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Pages/Removing-page-level-actions-from-PDF/.NET/Removing-page-level-actions-from-PDF/Program.cs" %}
+
+using Syncfusion.Pdf;
+using Syncfusion.Pdf.Interactive;
+using Syncfusion.Pdf.Parsing;
+
+// Load the existing PDF document
+using (PdfLoadedDocument document = new PdfLoadedDocument(Path.GetFullPath(@"Data/Input.pdf")))
+{
+ // Iterate through all pages in the document
+ foreach (PdfLoadedPage page in document.Pages)
+ {
+ // Remove any JavaScript or actions that execute
+ // when the page is opened
+ page.Actions.OnOpen = null;
+
+ // Remove any JavaScript or actions that execute
+ // when the page is closed
+ page.Actions.OnClose = null;
+ }
+ // Save the modified PDF document
+ document.Save(Path.GetFullPath(@"Output/Output.pdf"));
+ // Close the document
+ document.Close(true);
+}
+
+{% endhighlight %}
+
+{% highlight c# tabtitle="C# [Windows-specific]" %}
+
+using Syncfusion.Pdf;
+using Syncfusion.Pdf.Interactive;
+using Syncfusion.Pdf.Parsing;
+
+// Load the existing PDF document
+using (PdfLoadedDocument document = new PdfLoadedDocument(Path.GetFullPath(@"Data/Input.pdf")))
+{
+ // Iterate through all pages in the document
+ foreach (PdfLoadedPage page in document.Pages)
+ {
+ // Remove any JavaScript or actions that execute
+ // when the page is opened
+ page.Actions.OnOpen = null;
+ // Remove any JavaScript or actions that execute
+ // when the page is closed
+ page.Actions.OnClose = null;
+ }
+ // Save the modified PDF document
+ document.Save(Path.GetFullPath(@"Output/Output.pdf"));
+ // Close the document
+ document.Close(true);
+}
+
+{% endhighlight %}
+
+{% highlight vb.net tabtitle="VB.NET [Windows-specific]" %}
+
+Imports Syncfusion.Pdf
+Imports Syncfusion.Pdf.Interactive
+Imports Syncfusion.Pdf.Parsing
+
+' Load the existing PDF document
+Using document As New PdfLoadedDocument(
+ Path.GetFullPath("Data/Input.pdf"))
+ ' Iterate through all pages in the document
+ For Each page As PdfLoadedPage In document.Pages
+ ' Remove any JavaScript or actions that execute
+ ' when the page is opened
+ page.Actions.OnOpen = Nothing
+ ' Remove any JavaScript or actions that execute
+ ' when the page is closed
+ page.Actions.OnClose = Nothing
+
+ Next
+ ' Save the modified PDF document
+ document.Save(Path.GetFullPath("Output/Output.pdf"))
+
+ ' Close the document
+ document.Close(True)
+
+End Using
+
+{% endhighlight %}
+
+{% endtabs %}
+
+You can download a complete working sample from [GitHub](https://github.com/SyncfusionExamples/PDF-Examples/tree/master/Pages/Removing-page-level-actions-from-PDF/.NET).
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-Redaction.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-Redaction.md
index c9ccb547aa..5f60624c0a 100644
--- a/Document-Processing/PDF/PDF-Library/NET/Working-with-Redaction.md
+++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-Redaction.md
@@ -1007,11 +1007,11 @@ PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf");
PdfRedaction redaction = new PdfRedaction(new RectangleF(150, 150, 60, 24), Color.Transparent);
//Only the text within the redaction bounds should be redacted.
redaction.TextOnly = true;
-foreach (PdfLoadedPage loadedPage in document.Pages)
+foreach (PdfLoadedPage loadedPage in loadedDocument.Pages)
{
loadedPage.AddRedaction(redaction);
}
-document.Redact();
+loadedDocument.Redact();
//Save and close the PDF document
loadedDocument.Save("Output.pdf");
loadedDocument.Close(true);
@@ -1029,11 +1029,11 @@ PdfLoadedDocument loadedDocument = new PdfLoadedDocument("input.pdf");
PdfRedaction redaction = new PdfRedaction(new RectangleF(150, 150, 60, 24), Color.Transparent);
//Only the text within the redaction bounds should be redacted.
redaction.TextOnly = true;
-foreach (PdfLoadedPage loadedPage in document.Pages)
+foreach (PdfLoadedPage loadedPage in loadedDocument.Pages)
{
loadedPage.AddRedaction(redaction);
}
-document.Redact();
+loadedDocument.Redact();
//Save the document
loadedDocument.Save("Output.pdf");
//Close the document
@@ -1053,10 +1053,10 @@ Dim loadedDocument As PdfLoadedDocument = New PdfLoadedDocument("input.pdf")
'Create PDF redaction for the page
Dim redaction As PdfRedaction = New PdfRedaction(New RectangleF(150, 150, 60, 24), Color.Transparent)
redaction.TextOnly = true;
-For Each loadedPage As PdfLoadedPage In document.Pages
+For Each loadedPage As PdfLoadedPage In loadedDocument.Pages
loadedPage.AddRedaction(redaction)
Next
-document.Redact()
+loadedDocument.Redact()
'Save the document
loadedDocument.Save("Output.pdf")
'Close the document
@@ -1079,141 +1079,142 @@ The following code snippet explains how to find text by regular expression patte
{% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Redaction/Find-text-by-regular-expression-pattern-and-redact-it-from-PDF-document/.NET/Find_text_by_regular_expression/Program.cs" %}
- using Syncfusion.Pdf.Parsing;
- using Syncfusion.Pdf.Redaction;
- using Syncfusion.Pdf;
- using System.Text.RegularExpressions;
+using Syncfusion.Pdf.Parsing;
+using Syncfusion.Pdf.Redaction;
+using Syncfusion.Pdf;
+using System.Text.RegularExpressions;
- //Load the existing PDF document.
- PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf");
+//Load the existing PDF document.
+PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf");
- //Get the first page from the document.
- PdfLoadedPage page = document.Pages[0] as PdfLoadedPage;
+//Get the first page from the document.
+PdfLoadedPage page = document.Pages[0] as PdfLoadedPage;
- TextLineCollection collection = new TextLineCollection();
- //Extract text from first page.
- string extractedText = page.ExtractText(out collection);
+TextLineCollection collection = new TextLineCollection();
+//Extract text from first page.
+string extractedText = page.ExtractText(out collection);
- foreach (TextLine line in collection.TextLine)
+foreach (TextLine line in collection.TextLine)
+{
+ foreach (TextWord word in line.WordCollection)
{
- foreach (TextWord word in line.WordCollection)
+ //Define regular expression pattern to search for dates in the format MM/DD/YYYY
+ string datePattern = @"\b\d{1,2}\/\d{1,2}\/\d{4}\b";
+ //Search for dates
+ MatchCollection dateMatches = Regex.Matches(word.Text, datePattern);
+ //Add redaction if the match found
+ foreach (Match dateMatch in dateMatches)
{
- //Define regular expression pattern to search for dates in the format MM/DD/YYYY
- string datePattern = @"\b\d{1,2}\/\d{1,2}\/\d{4}\b";
- //Search for dates
- MatchCollection dateMatches = Regex.Matches(word.Text, datePattern);
- //Add redaction if the match found
- foreach (Match dateMatch in dateMatches)
+ string textToFindAndRedact = dateMatch.Value;
+ if (textToFindAndRedact == word.Text)
{
- string textToFindAndRedact = dateMatch.Value;
- if (textToFindAndRedact == word.Text)
- {
- //Create a redaction object.
- PdfRedaction redaction = new PdfRedaction(word.Bounds, Syncfusion.Drawing.Color.Black);
- //Add a redaction object into the redaction collection of loaded page.
- page.AddRedaction(redaction);
- }
+ //Create a redaction object.
+ PdfRedaction redaction = new PdfRedaction(word.Bounds, Syncfusion.Drawing.Color.Black);
+ //Add a redaction object into the redaction collection of loaded page.
+ page.AddRedaction(redaction);
}
}
}
+}
- //Redact the contents from the PDF document.
- document.Redact();
+//Redact the contents from the PDF document.
+document.Redact();
- //Save and close the PDF document
- document.Save("Output.pdf");
- document.Close(true);
+//Save and close the PDF document
+document.Save("Output.pdf");
+document.Close(true);
{% endhighlight %}
{% highlight c# tabtitle="C# [Windows-specific]" %}
- using Syncfusion.Pdf.Parsing;
- using Syncfusion.Pdf.Redaction;
- using Syncfusion.Pdf;
- using System.Text.RegularExpressions;
+using Syncfusion.Pdf.Parsing;
+using Syncfusion.Pdf.Redaction;
+using Syncfusion.Pdf;
+using System.Text.RegularExpressions;
- //Load a PDF document
- PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf");
+//Load a PDF document
+PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf");
- //Get the first page from the document.
- PdfLoadedPage page = document.Pages[0] as PdfLoadedPage;
+//Get the first page from the document.
+PdfLoadedPage page = document.Pages[0] as PdfLoadedPage;
- TextLineCollection collection = new TextLineCollection();
- //Extract text from first page.
- string extractedText = page.ExtractText(out collection);
+TextLineCollection collection = new TextLineCollection();
+//Extract text from first page.
+string extractedText = page.ExtractText(out collection);
- foreach (TextLine line in collection.TextLine)
+foreach (TextLine line in collection.TextLine)
+{
+ foreach (TextWord word in line.WordCollection)
{
- foreach (TextWord word in line.WordCollection)
+ //Define regular expression pattern to search for dates in the format MM/DD/YYYY
+ string datePattern = @"\b\d{1,2}\/\d{1,2}\/\d{4}\b";
+ //Search for dates
+ MatchCollection dateMatches = Regex.Matches(word.Text, datePattern);
+ //Add redaction if the match found
+ foreach (Match dateMatch in dateMatches)
{
- //Define regular expression pattern to search for dates in the format MM/DD/YYYY
- string datePattern = @"\b\d{1,2}\/\d{1,2}\/\d{4}\b";
- //Search for dates
- MatchCollection dateMatches = Regex.Matches(word.Text, datePattern);
- //Add redaction if the match found
- foreach (Match dateMatch in dateMatches)
+ string textToFindAndRedact = dateMatch.Value;
+ if (textToFindAndRedact == word.Text)
{
- string textToFindAndRedact = dateMatch.Value;
- if (textToFindAndRedact == word.Text)
- {
- //Create a redaction object.
- PdfRedaction redaction = new PdfRedaction(word.Bounds, Syncfusion.Drawing.Color.Black);
- //Add a redaction object into the redaction collection of loaded page.
- page.Redactions.Add(redaction);
- }
+ //Create a redaction object.
+ PdfRedaction redaction = new PdfRedaction(word.Bounds, Syncfusion.Drawing.Color.Black);
+ //Add a redaction object into the redaction collection of loaded page.
+ page.Redactions.Add(redaction);
}
}
}
- //Save and close the PDF document
- document.Save("Output.pdf");
- document.Close(true);
+}
+
+//Save and close the PDF document
+document.Save("Output.pdf");
+document.Close(true);
{% endhighlight %}
{% highlight vb.net tabtitle="VB.NET [Windows-specific]" %}
- Imports Syncfusion.Pdf.Parsing
- Imports Syncfusion.Pdf.Redaction
- Imports Syncfusion.Pdf
- Imports System.Text.RegularExpressions
-
- 'Load the existing PDF document.
- Dim document As New PdfLoadedDocument("Input.pdf")
-
- 'Get the first page from the document.
- Dim page As PdfLoadedPage = TryCast(document.Pages(0), PdfLoadedPage)
-
- Dim collection As New TextLineCollection()
- 'Extract text from first page.
- Dim extractedText As String = page.ExtractText(collection)
-
- For Each line As TextLine In collection.TextLine
- For Each word As TextWord In line.WordCollection
- 'Define regular expression pattern to search for dates in the format MM/DD/YYYY
- Dim datePattern As String = "\b\d{1,2}\/\d{1,2}\/\d{4}\b"
- 'Search for dates
- Dim dateMatches As MatchCollection = Regex.Matches(word.Text, datePattern)
- 'Add redaction if the match found
- For Each dateMatch As Match In dateMatches
- Dim textToFindAndRedact As String = dateMatch.Value
- If textToFindAndRedact = word.Text Then
- 'Create a redaction object.
- Dim redaction As New PdfRedaction(word.Bounds, Syncfusion.Drawing.Color.Black)
- 'Add a redaction object into the redaction collection of loaded page.
- page.AddRedaction(redaction)
- End If
- Next
- Next
+Imports Syncfusion.Pdf.Parsing
+Imports Syncfusion.Pdf.Redaction
+Imports Syncfusion.Pdf
+Imports System.Text.RegularExpressions
+
+'Load the existing PDF document.
+Dim document As New PdfLoadedDocument("Input.pdf")
+
+'Get the first page from the document.
+Dim page As PdfLoadedPage = TryCast(document.Pages(0), PdfLoadedPage)
+
+Dim collection As New TextLineCollection()
+'Extract text from first page.
+Dim extractedText As String = page.ExtractText(collection)
+
+For Each line As TextLine In Collection.TextLine
+ For Each word As TextWord In line.WordCollection
+ 'Define regular expression pattern to search for dates in the format MM/DD/YYYY
+ Dim datePattern As String = "\b\d{1,2}\/\d{1,2}\/\d{4}\b"
+ 'Search for dates
+ Dim dateMatches As MatchCollection = Regex.Matches(word.Text, datePattern)
+ 'Add redaction if the match found
+ For Each dateMatch As Match In dateMatches
+ Dim textToFindAndRedact As String = dateMatch.Value
+ If textToFindAndRedact = word.Text Then
+ 'Create a redaction object.
+ Dim redaction As New PdfRedaction(word.Bounds, Syncfusion.Drawing.Color.Black)
+ 'Add a redaction object into the redaction collection of loaded page.
+ Page.AddRedaction(redaction)
+ End If
Next
+ Next
+Next
- 'Redact the contents from the PDF document.
- document.Redact()
+'Redact the contents from the PDF document.
+document.Redact()
- 'Save the document
- document.Save("Output.pdf")
- 'Close the document
- document.Close(True)
+'Save the document
+document.Save("Output.pdf")
+'Close the document
+document.Close(True)
{% endhighlight %}
diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-Security.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-Security.md
index c4f7837f26..7ecc8d85bd 100644
--- a/Document-Processing/PDF/PDF-Library/NET/Working-with-Security.md
+++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-Security.md
@@ -1603,6 +1603,92 @@ loadedDocument.Close(True)
You can download a complete working sample from [GitHub](https://github.com/SyncfusionExamples/PDF-Examples/tree/master/Security/Change-the-permission-of-the-PDF-document/).
+## View document permission flags
+
+Read a PDF document permission flags via the [Security.Permissions](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Security.PdfSecurity.html#Syncfusion_Pdf_Security_PdfSecurity_Permissions) property, which returns a bitwise combination of values from the [PdfPermissionsFlags](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Security.PdfPermissionsFlags.html) enumeration.
+
+{% tabs %}
+{% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Security/PDF-permission-viewer/.NET/PDF-permission-viewer/Program.cs" %}
+
+using Syncfusion.Pdf.Parsing;
+using Syncfusion.Pdf.Security;
+
+// Load an existing PDF
+using (PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"))
+{
+ // Access the document security settings
+ PdfSecurity security = loadedDocument.Security;
+ // Get the permission flags (bitwise enum)
+ PdfPermissionsFlags permissions = security.Permissions;
+ Console.WriteLine("Permissions in the document:");
+ // Enumerate all flags and print the enabled ones
+ foreach (PdfPermissionsFlags flag in Enum.GetValues(typeof(PdfPermissionsFlags)))
+ {
+ if (flag == 0) continue; // Skip None (0)
+ // Check whether the specific flag is set
+ if (permissions.HasFlag(flag))
+ {
+ Console.WriteLine($"- {flag}");
+ }
+ }
+}
+
+{% endhighlight %}
+{% highlight c# tabtitle="C# [Windows-specific]" %}
+
+using Syncfusion.Pdf.Parsing;
+using Syncfusion.Pdf.Security;
+
+// Load an existing PDF
+using (PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"))
+{
+ // Access the document security settings
+ PdfSecurity security = loadedDocument.Security;
+ // Get the permission flags (bitwise enum)
+ PdfPermissionsFlags permissions = security.Permissions;
+ Console.WriteLine("Permissions in the document:");
+ // Enumerate all flags and print the enabled ones
+ foreach (PdfPermissionsFlags flag in Enum.GetValues(typeof(PdfPermissionsFlags)))
+ {
+ if (flag == 0) continue; // Skip None (0)
+ // Check whether the specific flag is set
+ if (permissions.HasFlag(flag))
+ {
+ Console.WriteLine($"- {flag}");
+ }
+ }
+}
+
+{% endhighlight %}
+{% highlight vb.net tabtitle="VB.NET [Windows-specific]" %}
+
+Imports Syncfusion.Pdf.Parsing
+Imports Syncfusion.Pdf.Security
+
+' Load an existing PDF
+Using loadedDocument As New PdfLoadedDocument("Input.pdf")
+ ' Access the document security settings
+ Dim security As PdfSecurity = loadedDocument.Security
+ ' Get the permission flags (bitwise enum)
+ Dim permissions As PdfPermissionsFlags = security.Permissions
+ Console.WriteLine("Permissions in the document:")
+ ' Enumerate all flags and print the enabled ones
+ For Each flag As PdfPermissionsFlags In [Enum].GetValues(GetType(PdfPermissionsFlags))
+ If flag = 0 Then
+ Continue For ' Skip None (0)
+ End If
+ ' Check whether the specific flag is set
+ If permissions.HasFlag(flag) Then
+ Console.WriteLine($"- {flag}")
+ End If
+ Next
+End Using
+
+{% endhighlight %}
+{% endtabs %}
+
+You can download a complete working sample from [GitHub](https://github.com/SyncfusionExamples/PDF-Examples/tree/master/Security/PDF-permission-viewer/.NET).
+
## Remove password from the user password PDF document
You can remove the [UserPassword](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Security.PdfSecurity.html#Syncfusion_Pdf_Security_PdfSecurity_UserPassword) from the encrypted PDF document by using the following code snippet.
diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-Text-Extraction.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-Text-Extraction.md
index 5f0638fb1a..a4c7aa40cb 100644
--- a/Document-Processing/PDF/PDF-Library/NET/Working-with-Text-Extraction.md
+++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-Text-Extraction.md
@@ -651,4 +651,18 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
Finds a text string on a specific page (index), returning rectangles in matchRect.
-
\ No newline at end of file
+
+
+## Troubleshooting and FAQ’s
+
+### What is the recommended way to extract form field values from a PDF document?
+
+The [ExtractText](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.PdfPageBase.html#Syncfusion_Pdf_PdfPageBase_ExtractText) API retrieves only the text that is visibly rendered on the page’s graphics layer. It does not extract the values contained in interactive form fields such as text boxes, combo boxes, or buttons. This is because form field data resides in the PDF’s interactive form (AcroForm) structure, separate from the page’s content stream.
+
+To retrieve form field values, you have two recommended options:
+
+1. [Flatten form fields](https://help.syncfusion.com/document-processing/pdf/pdf-library/net/working-with-forms#flattening-form-fields-in-a-pdf): Converts interactive form fields into static page content, embedding their values directly into the PDF’s text stream. After flattening, any text extraction process (such as ExtractText) will include these values.
+
+Refer to the text extraction section of the PDF [UG documentation](https://help.syncfusion.com/document-processing/pdf/pdf-library/net/working-with-text-extraction) for more details.
+
+2. [Iterate through form fields directly](https://help.syncfusion.com/document-processing/pdf/pdf-library/net/working-with-forms#enumerate-the-form-fields): Access each form field in the PDF’s form collection and read its value programmatically. This approach provides the most accurate and structured method for extracting form data.
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-Text.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-Text.md
index 465734153f..8de1b03965 100644
--- a/Document-Processing/PDF/PDF-Library/NET/Working-with-Text.md
+++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-Text.md
@@ -3151,4 +3151,34 @@ Create fonts, brushes, and pens once and reuse them throughout the document to r
-
\ No newline at end of file
+
+
+### Why does `PdfTrueTypeFont` fail to load system fonts automatically?
+
+
+
Issue
+
+
When you create a PdfTrueTypeFont using only a font family name (e.g., "Arial") in .NET Core or cross‑platform apps, the font can fail to load causing missing text, wrong rendering, or "font not found".
+
+
+
+
Reason
+
+
In .NET Framework: the PDF library can resolve installed fonts by name (e.g., new Font("Arial", 20) → new PdfTrueTypeFont(font, true) works).
+
+In .NET Core and cross‑platform environments: system font APIs aren't exposed the same way, so PdfTrueTypeFont cannot locate fonts by name you must provide the actual .ttf file (path or stream) to load the font reliably.
+
+
+
+
+
Solution
+
+
+Load the font directly from a .ttf file using a path or stream, then pass it to PdfTrueTypeFont. This ensures consistent font embedding across all platforms.
+{% tabs %}
+{% highlight C# tabtitle="C#" %}
+
+PdfTrueTypeFont ttf = new PdfTrueTypeFont("Arial.ttf", 20);
+
+{% endhighlight %}
+{% endtabs %}
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/Redaction/overview.md b/Document-Processing/PDF/PDF-Viewer/react/Redaction/overview.md
index c0557050a8..c970b84000 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/Redaction/overview.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/Redaction/overview.md
@@ -12,6 +12,9 @@ domainurl: ##DomainURL##
Redaction annotations hide confidential or sensitive information in a PDF. The Syncfusion React PDF Viewer (EJ2) enables marking areas or entire pages for redaction, customizing appearance, and applying changes permanently.
+Check out the following video to learn how to Redact PDF Content in the React PDF Viewer.
+{% youtube "https://www.youtube.com/watch?v=ZW9DswdpA7Q" %}
+
## Enable the redaction toolbar
To enable the redaction toolbar, configure the [`toolbarSettings.toolbarItems`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbarsettings#toolbaritems) property of the PdfViewer instance to include the **RedactionEditTool**. See this [guide](./toolbar#enable-redaction-toolbar) to enable redaction toolbar.
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/enable-text-selection.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/enable-text-selection.md
index 946bcfe06c..547a7eb1d8 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/enable-text-selection.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/enable-text-selection.md
@@ -8,122 +8,133 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Enable or disable text selection in PDF Viewer
+# Enable or disable text selection in React PDF Viewer
-The Syncfusion PDF Viewer exposes the `enableTextSelection` property to control whether users can select text within the displayed PDF document. This setting can be configured at initialization and toggled programmatically at runtime.
+This guide explains how to enable or disable text selection in the Syncfusion React PDF Viewer using both initialization-time settings and runtime toggling.
-## Configure text selection on initialization
+**Outcome:** By the end of this guide, you will be able to control whether users can select text in the PDF Viewer.
-Set the initial text-selection behavior by configuring the `enableTextSelection` property in the component template or on the `PdfViewerComponent` instance. The example below shows a complete component (TypeScript and template) that initializes the viewer with text selection disabled.
+## Steps to toggle text selection
-{% tabs %}
-{% highlight js tabtitle="Standalone" %}
+### 1. Disable text selection at initialization
+
+Follow one of these steps to disable text selection when the viewer first loads:
+
+**Remove the text selection module**
+
+Remove the [`TextSelection`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/textselection) module in the services array to disable text selection during initialization.
+
+{% highlight ts %}
{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
-import * as ReactDOM from 'react-dom';
-import * as React from 'react';
-import './index.css';
-import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation,
- BookmarkView, ThumbnailView, Print, TextSelection, Annotation, TextSearch,
- FormFields, FormDesigner, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
-
-export function App() {
- return (
-
-
-
-
-
-
);
-}
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
+**Set `enableTextSelection` to false**
+Use the [`enableTextSelection`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#enabletextselection) during initialization to disable or enable text selection. The following example disables the text selection during initialization
+
+{% highlight ts %}
+{% raw %}
+
+
+
{% endraw %}
{% endhighlight %}
-{% endtabs %}
-## Toggle dynamically
+### 2. Toggle text selection at runtime
-Change the behavior at runtime using buttons or other UI.
+The [`enableTextSelection`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#enabletextselection) property can also be used to toggle the text selection at runtime.
{% tabs %}
-{% highlight js tabtitle="Standalone" %}
+{% highlight ts tabtitle="App.tsx" %}
{% raw %}
-
-import * as ReactDOM from 'react-dom';
-import * as React from 'react';
-import './index.css';
-import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation,
- BookmarkView, ThumbnailView, Print, TextSelection, Annotation, TextSearch,
- FormFields, FormDesigner, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
-
-export class App extends React.Component {
- constructor() {
- super();
- this.pdfViewer = React.createRef();
- }
-
- enableTextSelection = () => {
- if (this.pdfViewer.current) {
- this.pdfViewer.current.enableTextSelection = true;
+import {
+ PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView,
+ ThumbnailView, Print, TextSelection, Annotation, TextSearch, FormFields, FormDesigner,
+ PageOrganizer, Inject
+} from '@syncfusion/ej2-react-pdfviewer';
+import { useRef, RefObject } from 'react';
+
+export default function App() {
+ const viewerRef: RefObject = useRef(null);
+ const enableTextSelection = () => {
+ if (viewerRef.current) {
+ viewerRef.current.enableTextSelection = true;
+ }
}
- }
-
- disableTextSelection = () => {
- if (this.pdfViewer.current) {
- this.pdfViewer.current.enableTextSelection = false;
+ const disableTextSelection = () => {
+ if (viewerRef.current) {
+ viewerRef.current.enableTextSelection = false;
+ }
}
- }
-
- render() {
return (
-
-
-
-
-
-
-
+
+
+
+
+
+
+
);
- }
}
-
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
-
{% endraw %}
{% endhighlight %}
{% endtabs %}
+N> When text selection is disabled, the viewer automatically switches to pan mode.
+
+[View sample in GitHub](https://github.com/SyncfusionExamples/react-pdf-viewer-examples/tree/master/How%20to)
+
## Use cases and considerations
- Document protection: Disable text selection to help prevent copying sensitive content.
- Read-only documents: Provide a cleaner viewing experience by preventing selection.
- Interactive apps: Toggle selection based on user roles or document states.
-## Default behavior
+N> Text selection is enabled by default. Set `enableTextSelection` to `false` to disable it.
+
+## Troubleshooting
+
+If text selection remains active, ensure that the [`TextSelection`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/textselection) is removed in `Inject` or [`enableTextSelection`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#enabletextselection) is set to `false`.
-Text selection is enabled by default. Set `enableTextSelection` to `false` to disable it.
+## See also
-[View sample in GitHub](https://github.com/SyncfusionExamples/react-pdf-viewer-examples/tree/master/How%20to)
\ No newline at end of file
+- [Text Selection API reference](../text-selection/reference)
+- [React PDF Viewer events](../events)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/extract-text.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/extract-text.md
index 6d176290a5..97d3a45b19 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/extract-text.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/extract-text.md
@@ -7,86 +7,73 @@ platform: document-processing
documentation: ug
---
-## Extract text method in the PDF Viewer
+# Extract text method in the PDF Viewer
+
+## Overview
The `extractText` method retrieves text content and, optionally, positional data for elements on one or more pages. It returns a Promise that resolves to an object containing extracted `textData` (detailed items with bounds) and `pageText` (concatenated plain text).
-**Parameters overview:**
+## Parameters
- `startIndex` — Starting page index (0-based).
-- `endIndex` or options — Either the ending page index for a range extraction, or an options object specifying extraction criteria for a single page.
+- `endIndex` or `options` — Either the ending page index for a range extraction, or an options object specifying extraction criteria for a single page.
- `options` (optional) — Extraction options such as `TextOnly` or `TextAndBounds` to control whether bounds are included.
-**Returned object shape (example):**
+## Returned object
- `textData` — Array of objects describing extracted text items, including bounds and page-level text.
- `pageText` — Concatenated plain text for the specified page(s).
-### Usage of extractText in Syncfusion PDF Viewer Control
+## Complete example
Here is an example that demonstrates how to use the extractText method along with event handling:
-```html
-
-
-
-
+ );
}
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
-
{% endraw %}
{% endhighlight %}
{% endtabs %}
-#### Explanation
-- Single page: Extracts text from page 1 (`startIndex = 1`) using `TextOnly`.
-- Multiple pages: Extracts text from pages 0–2 (`startIndex = 0, endIndex = 2`) using `TextOnly`.
+**Expected result:**
+
+- Clicking single page, extracts text from page 1 (`startIndex = 1`) using `TextOnly`.
+- Clicking multiple pages, extracts text from pages 0–2 (`startIndex = 0, endIndex = 2`) using `TextOnly`.
[View Sample in GitHub](https://github.com/SyncfusionExamples/react-pdf-viewer-examples/tree/master/How%20to)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/interactive-pdf-navigation/bookmark.md b/Document-Processing/PDF/PDF-Viewer/react/interactive-pdf-navigation/bookmark.md
index 2d32be3e05..74a0074602 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/interactive-pdf-navigation/bookmark.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/interactive-pdf-navigation/bookmark.md
@@ -10,180 +10,241 @@ domainurl: ##DomainURL##
# Bookmark navigation in React PDF Viewer
-Bookmarks embedded in a PDF are loaded and presented for easy navigation. Enable bookmark navigation using the snippet below.
+## Overview
-{% tabs %}
-{% highlight ts tabtitle="Standalone" %}
+This guide shows how to enable and use bookmark navigation in the EJ2 React PDF Viewer. You will enable bookmarks, navigate programmatically using [`goToBookmark`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/bookmarkview#gotobookmark), and retrieve the document's bookmark list with [`getBookmarks`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/bookmarkview#getbookmarks).
-import * as React from 'react';
-import * as ReactDOM from 'react-dom/client';
-import {
- PdfViewerComponent,
- Toolbar,
- Magnification,
- Navigation,
- LinkAnnotation,
- Annotation,
- ThumbnailView,
- BookmarkView,
- TextSelection,
- Inject
-} from '@syncfusion/ej2-react-pdfviewer';
+## Steps
-function App() {
- let pdfviewer;
- return (
- { pdfviewer = scope; }}
- enableBookmark={true}
- documentPath="https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf"
- resourceUrl="https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib"
- style={{ height: '500px', width: '100%' }}
- >
-
-
- );
-}
+### 1. Enable bookmark
-const root = ReactDOM.createRoot(document.getElementById('PdfViewer'));
-root.render();
+Add [`enableBookmark={true}`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#enablebookmark) to [`PdfViewerComponent`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer) and inject [`BookmarkView`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/bookmarkview) into the viewer.
-{% endhighlight %}
-{% highlight ts tabtitle="Server-Backed" %}
-
-import * as React from 'react';
-import * as ReactDOM from 'react-dom/client';
+{% tabs %}
+{% highlight ts tabtitle="App.tsx" %}
+{% raw %}
import {
- PdfViewerComponent,
- Toolbar,
- Magnification,
- Navigation,
- LinkAnnotation,
- Annotation,
- ThumbnailView,
- BookmarkView,
- TextSelection,
- Inject
+ PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView,
+ ThumbnailView, Print, TextSelection, Annotation, TextSearch, FormFields, FormDesigner,
+ PageOrganizer, Inject
} from '@syncfusion/ej2-react-pdfviewer';
-
-function App() {
- let pdfviewer;
- return (
- { pdfviewer = scope; }}
- enableBookmark={true}
- documentPath="https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf"
- serviceUrl="https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/"
- style={{ height: '500px', width: '100%' }}
- >
-
-
- );
+import { useRef, RefObject } from 'react';
+
+export default function App() {
+ const viewerRef: RefObject = useRef(null);
+ return (
+
+
+
+
+
+ );
}
-
-const root = ReactDOM.createRoot(document.getElementById('PdfViewer'));
-root.render();
-
+{% endraw %}
{% endhighlight %}
{% endtabs %}
-
+**Expected result**: The **Bookmarks** button on the left navigation toolbar is enabled.
-To perform bookmark navigation, use the `goToBookmark` method. The method throws an error if the specified bookmark does not exist in the document.
+### 2. Toggle bookmark view programmatically
-Here is an example of how to use the `goToBookmark` method:
+Toggle bookmark view programmatically using the [`openBookmarkPane`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/bookmarkview#openbookmarkpane) and [`closeBookmarkPane`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/bookmarkview#closebookmarkpane) APIs.
-```
-
-```
+{% tabs %}
+{% highlight ts tabtitle="App.tsx" %}
+{% raw %}
+import {
+ PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView,
+ ThumbnailView, Print, TextSelection, Annotation, TextSearch, FormFields, FormDesigner,
+ PageOrganizer, Inject
+} from '@syncfusion/ej2-react-pdfviewer';
+import { useRef, RefObject } from 'react';
+
+export default function App() {
+ const viewerRef: RefObject = useRef(null);
+ return (
+
+
+
+
+
+ );
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
-```ts
-import * as React from 'react';
-import * as ReactDOM from 'react-dom/client';
-import { PdfViewerComponent, BookmarkView, Inject } from '@syncfusion/ej2-react-pdfviewer';
+**Expected result**: The viewer shows a Bookmarks panel and users can click entries to navigate.
-let pdfviewer;
+### 3. Navigate programmatically
-function App() {
- const onGoToBookmark = () => {
- // x - pageIndex, y - Y coordinate
- pdfviewer && pdfviewer.bookmark.goToBookmark(x, y);
- };
+Call [`goToBookmark(x, y)`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/bookmarkview#gotobookmark) where `x` is the zero-based page index and `y` is the vertical coordinate.
- return (
-
+ );
}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
-const root = ReactDOM.createRoot(document.getElementById('PdfViewer'));
-root.render();
-```
-
-x — the zero-based page index to navigate to.
-
-y — the vertical Y coordinate on the target page to position the viewport.
+### 4. Retrieve the bookmarks list
-Also, you can use the **getBookmarks** method to retrieve a list of all the bookmarks in a PDF document. This method returns a List of Bookmark objects, which contain information about each bookmark.
+Use [`getBookmarks()`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/bookmarkview#getbookmarks) to obtain the bookmark tree.
-Here is an example of how to use the getBookmarks method:
+{% tabs %}
+{% highlight ts tabtitle="App.tsx" %}
+{% raw %}
+import {
+ PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView,
+ ThumbnailView, Print, TextSelection, Annotation, TextSearch, FormFields, FormDesigner,
+ PageOrganizer, Inject
+} from '@syncfusion/ej2-react-pdfviewer';
+import { useRef, RefObject } from 'react';
+
+export default function App() {
+ const viewerRef: RefObject = useRef(null);
+ const getBookmarks = () => {
+ const bookMarks: any = viewerRef.current?.bookmark.getBookmarks();
+ console.log('Bookmarks:', bookMarks);
+ }
+ return (
+
+
+
+
+
+
+ );
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
-```
-
-```
+## Complete example
-```ts
-import * as React from 'react';
-import * as ReactDOM from 'react-dom/client';
-import { PdfViewerComponent, BookmarkView, Inject } from '@syncfusion/ej2-react-pdfviewer';
+The following is a self-contained example demonstrating enabling bookmarks, navigating to a bookmark programmatically, and listing bookmarks.
-let pdfviewer;
+{% tabs %}
+{% highlight ts tabtitle="App.tsx" %}
+{% raw %}
+import {
+ PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView,
+ ThumbnailView, Print, TextSelection, Annotation, TextSearch, FormFields, FormDesigner,
+ PageOrganizer, Inject
+} from '@syncfusion/ej2-react-pdfviewer';
+import { useRef, RefObject } from 'react';
+
+export default function App() {
+ const viewerRef: RefObject = useRef(null);
+ const getBookmarks = () => {
+ const bookMarks: any = viewerRef.current?.bookmark.getBookmarks();
+ console.log('Bookmarks:', bookMarks);
+ }
+ const goTo = () => {
+ viewerRef.current?.bookmark.goToBookmark(1, 0);
+ }
+ return (
+
+
+
+
+
+
+
+ );
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
-function App() {
- const onGetBookmarks = () => {
- var getBookmarks = pdfviewer && pdfviewer.bookmark.getBookmarks();
- console.log(getBookmarks);
- };
+**Expected result**: The Bookmarks button on the navigation toolbar is enabled and clicking it opens the Bookmarks panel (when the PDF contains bookmarks). Clicking a bookmark navigates to the target location; the buttons demonstrate programmatic navigation and retrieving the bookmark list in the console.
- return (
-
- );
-}
+## Troubleshooting
-const root = ReactDOM.createRoot(document.getElementById('PdfViewer'));
-root.render();
-```
+- **Bookmarks button is not enabled**: confirm the PDF actually contains bookmarks and [`enableBookmark={true}`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#enablebookmark) is set.
+- **[`goToBookmark`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/bookmarkview#gotobookmark) throws an error**: ensure the target page index and coordinates exist; validate values before calling.
+- **Missing features**: add [`BookmarkView`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/bookmarkview) to the `` list and include [`resourceUrl`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#resourceurl) or [`serviceUrl`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#serviceurl) when required.
-## See also
+## Related topics
-* [Toolbar items](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/toolbar/)
-* [Feature Modules](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/feature-module/)
\ No newline at end of file
+- [React PDF Viewer toolbar](../toolbar-customization/overview)
+- [Feature Modules](../feature-module)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/interactive-pdf-navigation/hyperlink.md b/Document-Processing/PDF/PDF-Viewer/react/interactive-pdf-navigation/hyperlink.md
index 42915f7808..48b693149f 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/interactive-pdf-navigation/hyperlink.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/interactive-pdf-navigation/hyperlink.md
@@ -10,323 +10,148 @@ domainurl: ##DomainURL##
# Table of contents navigation in PDF Viewer
-The PDF Viewer provides a built-in table of contents (TOC) experience to help users jump to sections defined by the document’s bookmarks or outline.
+## Overview:
-## Table of contents navigation
+This guide shows how to configure hyperlink behavior in the React PDF Viewer: enable/disable links, control how links open, and handle hyperlink events.
-Use the table of contents to quickly navigate to headings and sections defined in the PDF. When the document contains a bookmarks/outline structure, the viewer exposes those entries in the table of contents (Bookmarks) pane. Selecting an entry navigates directly to the mapped destination. If the PDF does not include a table of contents, the pane will not list any entries.
+## Steps
-
+### 1. Enable or disable hyperlink interaction
-## Hyperlink Navigation
-
-The PDF Viewer provides robust support for hyperlink navigation within PDF documents. This allows users to interact with embedded links, which can point to external websites or other locations within the same document. This section covers how to configure hyperlink behavior, including enabling or disabling links, controlling how they open, and responding to hyperlink-related events.
-
-
-
-### Enabling and Disabling Hyperlinks
-
-By default, the PDF Viewer automatically detects and enables all hyperlinks present in a loaded document. This behavior can be controlled using the `enableHyperlink` property.
-
-- **Property**: `enableHyperlink`
-- **Type**: `boolean`
-- **Default**: `true`
-
-When `enableHyperlink` is set to `false`, all hyperlinks in the document become non-interactive. This means that users cannot click them, and no hyperlink-related events will be triggered.
-
-The following example demonstrates how to disable hyperlink navigation:
+By default hyperlinks are enabled. Set the [`enableHyperlink`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#enablehyperlink) property to `false` to make links non-interactive.
{% tabs %}
-{% highlight ts tabtitle="Standalone" %}
-import * as React from 'react';
-import * as ReactDOM from 'react-dom/client';
+{% highlight ts tabtitle="App.tsx" %}
+{% raw %}
import {
- PdfViewerComponent,
- Toolbar,
- Magnification,
- Navigation,
- Annotation,
- LinkAnnotation,
- ThumbnailView,
- BookmarkView,
- TextSelection,
- Inject
+ PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView,
+ ThumbnailView, Print, TextSelection, Annotation, TextSearch, FormFields, FormDesigner,
+ PageOrganizer, Inject
} from '@syncfusion/ej2-react-pdfviewer';
-
-let pdfviewer;
-
-function App() {
- return (
- { pdfviewer = scope; }}
- documentPath="https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf"
- resourceUrl="https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib"
- enableHyperlink={false}
- style={{ height: '500px', width: '100%' }}
- >
-
-
- );
+import { useRef, RefObject } from 'react';
+
+export default function App() {
+ const viewerRef: RefObject = useRef(null);
+ return (
+
+
+
+
+
+ );
}
-
-const root = ReactDOM.createRoot(document.getElementById('PdfViewer'));
-root.render();
-{% endhighlight %}
-{% highlight ts tabtitle="Server-Backed" %}
-import * as React from 'react';
-import * as ReactDOM from 'react-dom/client';
-import {
- PdfViewerComponent,
- Toolbar,
- Magnification,
- Navigation,
- Annotation,
- LinkAnnotation,
- ThumbnailView,
- BookmarkView,
- TextSelection,
- Inject
-} from '@syncfusion/ej2-react-pdfviewer';
-
-let pdfviewer;
-
-function App() {
- return (
- { pdfviewer = scope; }}
- documentPath="https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf"
- serviceUrl="https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/"
- enableHyperlink={false}
- style={{ height: '500px', width: '100%' }}
- >
-
-
- );
-}
-
-const root = ReactDOM.createRoot(document.getElementById('PdfViewer'));
-root.render();
+{% endraw %}
{% endhighlight %}
{% endtabs %}
-> Note: Disabling hyperlinks only affects the viewer's behavior and does not alter the original PDF document.
-### Controlling Link Behavior
-
-The `hyperlinkOpenState` property determines how external URLs are opened when a hyperlink is clicked.
-
-- **Property**: `hyperlinkOpenState`
-- **Type**: `'CurrentTab' | 'NewTab'`
-- **Default**: `'CurrentTab'`
+### 2. Control how links open
-By default, links open in the same browser tab (`CurrentTab`). To open links in a new tab, set this property to `'NewTab'`. This is useful for preserving the user's current viewing session.
-
-The following example configures hyperlinks to open in a new tab:
+Use the [`hyperlinkOpenState`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#hyperlinkopenstate) property to choose whether external links open in the current tab or a new tab or in a whole new window.
{% tabs %}
-{% highlight ts tabtitle="Standalone" %}
-import * as React from 'react';
-import * as ReactDOM from 'react-dom/client';
+{% highlight ts tabtitle="App.tsx" %}
+{% raw %}
import {
- PdfViewerComponent,
- Toolbar,
- Magnification,
- Navigation,
- Annotation,
- LinkAnnotation,
- ThumbnailView,
- BookmarkView,
- TextSelection,
- Inject
+ PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView,
+ ThumbnailView, Print, TextSelection, Annotation, TextSearch, FormFields, FormDesigner,
+ PageOrganizer, Inject
} from '@syncfusion/ej2-react-pdfviewer';
-
-let pdfviewer;
-
-function App() {
- return (
- { pdfviewer = scope; }}
- documentPath="https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf"
- resourceUrl="https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib"
- hyperlinkOpenState="NewTab"
- style={{ height: '500px', width: '100%' }}
- >
-
-
- );
+import { useRef, RefObject } from 'react';
+
+export default function App() {
+ const viewerRef: RefObject = useRef(null);
+ return (
+
You can find the sample used for this performance evaluation on [GitHub](https://github.com/SyncfusionExamples/PowerPoint-Examples/tree/master/Performance-metrices/PPTX-to-Image/).
+
+N> Execution times are based on the sample documents and may vary with different content or environments.
\ No newline at end of file
diff --git a/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Additional_Information_PowerPoint_Presentation_to_PDF.png b/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Additional_Information_PowerPoint_Presentation_to_PDF.png
new file mode 100644
index 0000000000..3707ae8583
Binary files /dev/null and b/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Additional_Information_PowerPoint_Presentation_to_PDF.png differ
diff --git a/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/After_Publish_PowerPoint_Presentation_to_PDF.png b/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/After_Publish_PowerPoint_Presentation_to_PDF.png
new file mode 100644
index 0000000000..9459379b7d
Binary files /dev/null and b/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/After_Publish_PowerPoint_Presentation_to_PDF.png differ
diff --git a/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Azure_PowerPoint_Presentation_to_PDF.png b/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Azure_PowerPoint_Presentation_to_PDF.png
new file mode 100644
index 0000000000..f41c848328
Binary files /dev/null and b/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Azure_PowerPoint_Presentation_to_PDF.png differ
diff --git a/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Before_Publish_PowerPoint_Presentation_to_PDF.png b/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Before_Publish_PowerPoint_Presentation_to_PDF.png
new file mode 100644
index 0000000000..edc7b81c15
Binary files /dev/null and b/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Before_Publish_PowerPoint_Presentation_to_PDF.png differ
diff --git a/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Configure_PowerPoint_Presentation_to_PDF.png b/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Configure_PowerPoint_Presentation_to_PDF.png
new file mode 100644
index 0000000000..d5064e5571
Binary files /dev/null and b/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Configure_PowerPoint_Presentation_to_PDF.png differ
diff --git a/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Finish_PowerPoint_Presentation_to_PDF.png b/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Finish_PowerPoint_Presentation_to_PDF.png
new file mode 100644
index 0000000000..ee7902a017
Binary files /dev/null and b/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Finish_PowerPoint_Presentation_to_PDF.png differ
diff --git a/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Function_Instance_PowerPoint_Presentation_to_PDF.png b/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Function_Instance_PowerPoint_Presentation_to_PDF.png
new file mode 100644
index 0000000000..cd27196a89
Binary files /dev/null and b/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Function_Instance_PowerPoint_Presentation_to_PDF.png differ
diff --git a/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Hosting_PowerPoint_Presentation_to_PDF.png b/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Hosting_PowerPoint_Presentation_to_PDF.png
new file mode 100644
index 0000000000..aacf4acae0
Binary files /dev/null and b/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Hosting_PowerPoint_Presentation_to_PDF.png differ
diff --git a/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Nuget_Package_PowerPoint_Presentation_to_PDF.png b/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Nuget_Package_PowerPoint_Presentation_to_PDF.png
new file mode 100644
index 0000000000..046bbd6c87
Binary files /dev/null and b/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Nuget_Package_PowerPoint_Presentation_to_PDF.png differ
diff --git a/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Nuget_Package_SkiaSharp_Native_Linux_NoDependencies.png b/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Nuget_Package_SkiaSharp_Native_Linux_NoDependencies.png
new file mode 100644
index 0000000000..f5478d78ff
Binary files /dev/null and b/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Nuget_Package_SkiaSharp_Native_Linux_NoDependencies.png differ
diff --git a/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Output_PowerPoint_Presentation_to-PDF.png b/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Output_PowerPoint_Presentation_to-PDF.png
new file mode 100644
index 0000000000..fd0cfb68c7
Binary files /dev/null and b/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Output_PowerPoint_Presentation_to-PDF.png differ
diff --git a/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Publish_PowerPoint_Presentation_to_PDF.png b/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Publish_PowerPoint_Presentation_to_PDF.png
new file mode 100644
index 0000000000..3e9817c0f2
Binary files /dev/null and b/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Publish_PowerPoint_Presentation_to_PDF.png differ
diff --git a/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Specific_Target_PowerPoint_Presentation_to_PDF.png b/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Specific_Target_PowerPoint_Presentation_to_PDF.png
new file mode 100644
index 0000000000..1db0017891
Binary files /dev/null and b/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Specific_Target_PowerPoint_Presentation_to_PDF.png differ
diff --git a/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Target_PowerPoint_Presentation_to_PDF.png b/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Target_PowerPoint_Presentation_to_PDF.png
new file mode 100644
index 0000000000..0d5f43da1b
Binary files /dev/null and b/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Azure-Images/Functions-Flex-Consumption/Target_PowerPoint_Presentation_to_PDF.png differ
diff --git a/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Convert-PowerPoint-to-PDF-in-Azure-Functions-Flex-Consumption.md b/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Convert-PowerPoint-to-PDF-in-Azure-Functions-Flex-Consumption.md
new file mode 100644
index 0000000000..7423355afc
--- /dev/null
+++ b/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Convert-PowerPoint-to-PDF-in-Azure-Functions-Flex-Consumption.md
@@ -0,0 +1,192 @@
+---
+title: Convert PPTX to PDF in Azure Functions Flex Consumption | Syncfusion
+description: Convert PPTX to PDF in Azure Functions Flex Consumption using .NET Core PowerPoint library (Presentation) without Microsoft PowerPoint or interop dependencies.
+platform: document-processing
+control: PowerPoint
+documentation: UG
+---
+
+# Convert PPTX to PDF in Azure Functions (Flex Consumption)
+
+Syncfusion® PowerPoint is a [.NET Core PowerPoint library](https://www.syncfusion.com/document-processing/powerpoint-framework/net-core) used to create, read, edit and **convert PowerPoint documents** programmatically without **Microsoft PowerPoint** or interop dependencies. Using this library, you can **convert a PowerPoint Presentation to PDF in Azure Functions deployed on Flex (Consumption) plan**.
+
+## Steps to convert a PowerPoint Presentation to PDF in Azure Functions (Flex Consumption)
+
+Step 1: Create a new Azure Functions project.
+
+
+Step 2: Create a project name and select the location.
+
+
+Step 3: Select function worker as **.NET 8.0 (Long Term Support)** (isolated worker) and target Flex/Consumption hosting suitable for isolated worker.
+
+
+Step 4: Install the [Syncfusion.PresentationRenderer.Net.Core](https://www.nuget.org/packages/Syncfusion.PresentationRenderer.Net.Core) and [SkiaSharp.NativeAssets.Linux.NoDependencies v3.119.1](https://www.nuget.org/packages/SkiaSharp.NativeAssets.Linux.NoDependencies/3.119.1) NuGet packages as references to your project from [NuGet.org](https://www.nuget.org/).
+
+
+
+N> Starting with v16.2.0.x, if you reference Syncfusion® assemblies from trial setup or from the NuGet feed, you also have to add "Syncfusion.Licensing" assembly reference and include a license key in your projects. Please refer to this [link](https://help.syncfusion.com/common/essential-studio/licensing/overview) to know about registering Syncfusion® license key in your application to use our components.
+
+Step 5: Include the following namespaces in the **Function1.cs** file.
+
+{% tabs %}
+
+{% highlight c# tabtitle="C#" %}
+using Syncfusion.Pdf;
+using Syncfusion.Presentation;
+using Syncfusion.PresentationRenderer;
+{% endhighlight %}
+
+{% endtabs %}
+
+Step 6: Add the following code snippet in **Run** method of **Function1** class to perform **PowerPoint Presentation to PDF conversion** in Azure Functions and return the resultant **PDF** to client end.
+
+{% tabs %}
+{% highlight c# tabtitle="C#" %}
+
+public async Task Run([HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequest req)
+ {
+ try
+ {
+ // Create a memory stream to hold the incoming request body (PowerPoint Presentation bytes)
+ await using MemoryStream inputStream = new MemoryStream();
+ // Copy the request body into the memory stream
+ await req.Body.CopyToAsync(inputStream);
+ // Check if the stream is empty (no file content received)
+ if (inputStream.Length == 0)
+ return new BadRequestObjectResult("No file content received in request body.");
+ // Reset stream position to the beginning for reading
+ inputStream.Position = 0;
+ // Load the PowerPoint Presentation from the stream
+ using IPresentation pptxDoc = Presentation.Open(inputStream);
+ // Attach font substitution handler to manage missing fonts
+ pptxDoc.FontSettings.SubstituteFont += FontSettings_SubstituteFont;
+ // Initialize the PresentationRenderer to perform PDF conversion.
+ PdfDocument pdfDocument = PresentationToPdfConverter.Convert(pptxDoc);
+ // Create a memory stream to hold the PDF output
+ await using MemoryStream outputStream = new MemoryStream();
+ // Save the PDF into the output stream
+ pdfDocument.Save(outputStream);
+ // Close the PDF document and release resources
+ pdfDocument.Close(true);
+ // Reset stream position to the beginning for reading
+ outputStream.Position = 0;
+ // Convert the PDF stream to a byte array
+ var pdfBytes = outputStream.ToArray();
+
+ // Create a file result to return the PDF as a downloadable file
+ var fileResult = new FileContentResult(pdfBytes, "application/pdf")
+ {
+ FileDownloadName = "converted.pdf"
+ };
+ // Return the PDF file result to the client
+ return fileResult;
+ }
+ catch (Exception ex)
+ {
+ // Log the error with details for troubleshooting
+ _logger.LogError(ex, "Error converting PPTX to PDF.");
+ // Prepare error message including exception details
+ var msg = $"Exception: {ex.Message}\n\n{ex}";
+ // Return a 500 Internal Server Error response with the message
+ return new ContentResult { StatusCode = 500, Content = msg, ContentType = "text/plain; charset=utf-8" };
+ }
+ }
+ ///
+ /// Event handler for font substitution during PDF conversion
+ ///
+ ///
+ ///
+ private void FontSettings_SubstituteFont(object sender, SubstituteFontEventArgs args)
+ {
+ // Define the path to the Fonts folder in the application base directory
+ string fontsFolder = Path.Combine(AppContext.BaseDirectory, "Fonts");
+ // If the original font is Calibri, substitute with calibri-regular.ttf
+ if (args.OriginalFontName == "Calibri")
+ {
+ args.AlternateFontStream = File.OpenRead(Path.Combine(fontsFolder, "calibri-regular.ttf"));
+ }
+ // Otherwise, substitute with Times New Roman
+ else
+ {
+ args.AlternateFontStream = File.OpenRead(Path.Combine(fontsFolder, "Times New Roman.ttf"));
+ }
+ }
+
+{% endhighlight %}
+{% endtabs %}
+
+Step 7: Right click the project and select **Publish**. Then, create a new profile in the Publish Window.
+
+
+Step 8: Select the target as **Azure** and click **Next** button.
+
+
+Step 9: Select the specific target as **Azure Function App** and click **Next** button.
+
+
+Step 10: Select the **Create new** button.
+
+
+Step 11: Click **Create** button.
+
+
+Step 12: After creating app service then click **Finish** button.
+
+
+Step 13: Click the **Publish** button.
+
+
+Step 14: Publish has been succeed.
+
+
+Step 15: Now, go to Azure portal and select the App Services. After running the service, click **Get function URL by copying it**. Then, paste it in the below client sample (which will request the Azure Functions, to perform **PowerPoint Presentation to PDF conversion** using the template PowerPoint document). You will get the output **PDF** as follows.
+
+
+
+## Steps to post the request to Azure Functions
+
+Step 1: Create a console application to request the Azure Functions API.
+
+Step 2: Add the following code snippet into Main method to post the request to Azure Functions with template PowerPoint document and get the resultant PDF.
+
+{% tabs %}
+{% highlight c# tabtitle="C#" %}
+
+static async Task Main()
+ {
+ Console.Write("Please enter your Azure Functions URL : ");
+ // Read the URL entered by the user and trim whitespace
+ string url = Console.ReadLine()?.Trim();
+ // If no URL was entered, exit the program
+ if (string.IsNullOrEmpty(url)) return;
+ // Create a new HttpClient instance for sending requests
+ using var http = new HttpClient();
+ // Read all bytes from the input PowerPoint Presentation file
+ var bytes = await File.ReadAllBytesAsync(@"Data/Input.pptx");
+ // Create HTTP content from the document bytes
+ using var content = new ByteArrayContent(bytes);
+ // Set the content type header to application/octet-stream (binary data)
+ content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream");
+ // Send a POST request to the Azure Function with the document content
+ using var res = await http.PostAsync(url, content);
+ // Read the response content as a byte array
+ var resBytes = await res.Content.ReadAsByteArrayAsync();
+ // Get the media type (e.g., application/pdf or text/plain) from the response headers
+ string mediaType = res.Content.Headers.ContentType?.MediaType ?? string.Empty;
+ string outFile = mediaType.Contains("pdf", StringComparison.OrdinalIgnoreCase)
+ ? Path.GetFullPath(@"../../../Output/Output.pdf")
+ : Path.GetFullPath(@"../../../Output/function-error.txt");
+ // Write the response bytes to the chosen output file
+ await File.WriteAllBytesAsync(outFile, resBytes);
+ Console.WriteLine($"Saved: {outFile} ");
+ }
+
+{% endhighlight %}
+{% endtabs %}
+
+From GitHub, you can download the [console application](https://github.com/SyncfusionExamples/PowerPoint-Examples/tree/master/PPTX-to-PDF-conversion/Convert-PowerPoint-presentation-to-PDF/Azure/Azure_Functions/Console_App_Flex_Consumption) and [Azure Functions Flex Consumption](https://github.com/SyncfusionExamples/PowerPoint-Examples/tree/master/PPTX-to-PDF-conversion/Convert-PowerPoint-presentation-to-PDF/Azure/Azure_Functions/Azure_Functions_Flex_Consumption).
+
+Click [here](https://www.syncfusion.com/document-processing/powerpoint-framework/net-core) to explore the rich set of Syncfusion® PowerPoint Library (Presentation) features.
+
+An online sample link to [convert PowerPoint Presentation to PDF](https://document.syncfusion.com/demos/powerpoint/pptxtopdf#/tailwind) in ASP.NET Core.
\ No newline at end of file
diff --git a/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Performance-metrics.md b/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Performance-metrics.md
index 5a6d3ef270..f8ba52d31b 100644
--- a/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Performance-metrics.md
+++ b/Document-Processing/PowerPoint/Conversions/PowerPoint-To-PDF/NET/Performance-metrics.md
@@ -18,7 +18,7 @@ The following system configurations were used for benchmarking:
* **Processor:** 12th Gen Intel(R) Core(TM) i5-1235U (1.30 GHz)
* **RAM:** 24GB
* **.NET Version:** .NET 8.0
-* **Syncfusion® Version:** [Syncfusion.PresentationRenderer.Net.Core v32.1.19](https://www.nuget.org/packages/Syncfusion.PresentationRenderer.Net.Core/32.1.19)
+* **Syncfusion® Version:** [Syncfusion.PresentationRenderer.Net.Core v33.1.44](https://www.nuget.org/packages/Syncfusion.PresentationRenderer.Net.Core/33.1.44)
## PowerPoint to PDF conversion
@@ -46,8 +46,10 @@ The following system configurations were used for benchmarking:
You can find the sample used for this performance evaluation on [GitHub](https://github.com/SyncfusionExamples/PowerPoint-Examples/tree/master/Performance-metrices/PPTX-to-PDF/).
+
+N> Execution times are based on the sample documents and may vary with different content or environments.
\ No newline at end of file
diff --git a/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Additional_Information_Open_and_Save_PowerPoint_Presentation.png b/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Additional_Information_Open_and_Save_PowerPoint_Presentation.png
new file mode 100644
index 0000000000..3707ae8583
Binary files /dev/null and b/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Additional_Information_Open_and_Save_PowerPoint_Presentation.png differ
diff --git a/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/After_Publish_Open_and_Save_PowerPoint_Presentation.png b/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/After_Publish_Open_and_Save_PowerPoint_Presentation.png
new file mode 100644
index 0000000000..9459379b7d
Binary files /dev/null and b/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/After_Publish_Open_and_Save_PowerPoint_Presentation.png differ
diff --git a/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Azure_Open_and_Save_PowerPoint_Presentation.png b/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Azure_Open_and_Save_PowerPoint_Presentation.png
new file mode 100644
index 0000000000..f41c848328
Binary files /dev/null and b/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Azure_Open_and_Save_PowerPoint_Presentation.png differ
diff --git a/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Before_Publish_Open_and_Save_PowerPoint_Presentation.png b/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Before_Publish_Open_and_Save_PowerPoint_Presentation.png
new file mode 100644
index 0000000000..edc7b81c15
Binary files /dev/null and b/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Before_Publish_Open_and_Save_PowerPoint_Presentation.png differ
diff --git a/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Configuration-Create-PowerPoint.png b/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Configuration-Create-PowerPoint.png
new file mode 100644
index 0000000000..3a25932c2f
Binary files /dev/null and b/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Configuration-Create-PowerPoint.png differ
diff --git a/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Configuration-Open-and-Save-PowerPoint.png b/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Configuration-Open-and-Save-PowerPoint.png
new file mode 100644
index 0000000000..4417fb8374
Binary files /dev/null and b/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Configuration-Open-and-Save-PowerPoint.png differ
diff --git a/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Finish_Open_and_Save_PowerPoint_Presentation.png b/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Finish_Open_and_Save_PowerPoint_Presentation.png
new file mode 100644
index 0000000000..ee7902a017
Binary files /dev/null and b/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Finish_Open_and_Save_PowerPoint_Presentation.png differ
diff --git a/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Function_Instance_Open_and_Save_PowerPoint_Presentation.png b/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Function_Instance_Open_and_Save_PowerPoint_Presentation.png
new file mode 100644
index 0000000000..cd27196a89
Binary files /dev/null and b/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Function_Instance_Open_and_Save_PowerPoint_Presentation.png differ
diff --git a/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Hosting_Open_and_Save_PowerPoint_Presentation.png b/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Hosting_Open_and_Save_PowerPoint_Presentation.png
new file mode 100644
index 0000000000..aacf4acae0
Binary files /dev/null and b/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Hosting_Open_and_Save_PowerPoint_Presentation.png differ
diff --git a/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Publish-Create-PowerPoint.png b/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Publish-Create-PowerPoint.png
new file mode 100644
index 0000000000..cca55eeecb
Binary files /dev/null and b/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Publish-Create-PowerPoint.png differ
diff --git a/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Publish-Open-and-Save-PowerPoint.png b/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Publish-Open-and-Save-PowerPoint.png
new file mode 100644
index 0000000000..e3c7f59b6e
Binary files /dev/null and b/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Publish-Open-and-Save-PowerPoint.png differ
diff --git a/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Specific_Target_Open_and_Save_PowerPoint_Presentation.png b/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Specific_Target_Open_and_Save_PowerPoint_Presentation.png
new file mode 100644
index 0000000000..1db0017891
Binary files /dev/null and b/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Specific_Target_Open_and_Save_PowerPoint_Presentation.png differ
diff --git a/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Target_Open_and_Save_PowerPoint_Presentation.png b/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Target_Open_and_Save_PowerPoint_Presentation.png
new file mode 100644
index 0000000000..0d5f43da1b
Binary files /dev/null and b/Document-Processing/PowerPoint/PowerPoint-Library/NET/Azure-Images/Functions-Flex-Consumption/Target_Open_and_Save_PowerPoint_Presentation.png differ
diff --git a/Document-Processing/PowerPoint/PowerPoint-Library/NET/Create-PowerPoint-Presentation-in-Azure-Functions-Flex-Consumption.md b/Document-Processing/PowerPoint/PowerPoint-Library/NET/Create-PowerPoint-Presentation-in-Azure-Functions-Flex-Consumption.md
new file mode 100644
index 0000000000..dcd5314e43
--- /dev/null
+++ b/Document-Processing/PowerPoint/PowerPoint-Library/NET/Create-PowerPoint-Presentation-in-Azure-Functions-Flex-Consumption.md
@@ -0,0 +1,183 @@
+---
+title: Create PowerPoint in Azure Functions Flex Consumption | Syncfusion
+description: Create PowerPoint in Azure Functions Flex Consumption using .NET Core PowerPoint library (Presentation) without Microsoft PowerPoint or interop dependencies.
+platform: document-processing
+control: PowerPoint
+documentation: UG
+---
+
+# Create PowerPoint Presentation in Azure Functions (Flex Consumption)
+
+Syncfusion® PowerPoint is a [.NET Core PowerPoint library](https://www.syncfusion.com/document-processing/powerpoint-framework/net-core) used to create, read, edit and convert PowerPoint documents programmatically without **Microsoft PowerPoint** or interop dependencies. Using this library, you can **create a PowerPoint Presentation in Azure Functions deployed on Flex (Consumption) plan**.
+
+## Steps to create a PowerPoint Presentation in Azure Functions (Flex Consumption)
+
+Step 1: Create a new Azure Functions project.
+
+
+Step 2: Create a project name and select the location.
+
+
+Step 3: Select function worker as **.NET 8.0 (Long Term Support)** (isolated worker) and target Flex/Consumption hosting suitable for isolated worker.
+
+
+Step 4: Install the [Syncfusion.Presentation.Net.Core](https://www.nuget.org/packages/Syncfusion.Presentation.Net.Core) NuGet package as a reference to your project from [NuGet.org](https://www.nuget.org/).
+
+
+N> Starting with v16.2.0.x, if you reference Syncfusion® assemblies from trial setup or from the NuGet feed, you also have to add "Syncfusion.Licensing" assembly reference and include a license key in your projects. Please refer to this [link](https://help.syncfusion.com/common/essential-studio/licensing/overview) to know about registering Syncfusion® license key in your application to use our components.
+
+Step 5: Include the following namespaces in the **Function1.cs** file.
+
+{% tabs %}
+{% highlight c# tabtitle="C#" %}
+
+using Syncfusion.Presentation;
+
+{% endhighlight %}
+{% endtabs %}
+
+Step 6: Add the following code snippet in **Run** method of **Function1** class to perform **create a PowerPoint document** in Azure Functions and return the resultant **PowerPoint document** to client end.
+
+{% tabs %}
+{% highlight c# tabtitle="C#" %}
+
+public async Task Run([HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequest req)
+ {
+ try
+ {
+ //Create a new instance of PowerPoint Presentation file.
+ using IPresentation pptxDoc = Presentation.Create();
+ //Add a new slide to file and apply background color.
+ ISlide slide = pptxDoc.Slides.Add(SlideLayoutType.TitleOnly);
+ //Specify the fill type and fill color for the slide background.
+ slide.Background.Fill.FillType = FillType.Solid;
+ slide.Background.Fill.SolidFill.Color = ColorObject.FromArgb(232, 241, 229);
+ //Add title content to the slide by accessing the title placeholder of the TitleOnly layout-slide.
+ IShape titleShape = slide.Shapes[0] as IShape;
+ titleShape.TextBody.AddParagraph("Company History").HorizontalAlignment = HorizontalAlignmentType.Center;
+ //Add description content to the slide by adding a new TextBox.
+ IShape descriptionShape = slide.AddTextBox(53.22, 141.73, 874.19, 77.70);
+ descriptionShape.TextBody.Text = "IMN Solutions PVT LTD is the software company, established in 1987, by George Milton. The company has been listed as the trusted partner for many high-profile organizations since 1988 and got awards for quality products from reputed organizations.";
+ //Add bullet points to the slide.
+ IShape bulletPointsShape = slide.AddTextBox(53.22, 270, 437.90, 116.32);
+ //Add a paragraph for a bullet point.
+ IParagraph firstPara = bulletPointsShape.TextBody.AddParagraph("The company acquired the MCY corporation for 20 billion dollars and became the top revenue maker for the year 2015.");
+ //Format how the bullets should be displayed.
+ firstPara.ListFormat.Type = ListType.Bulleted;
+ firstPara.LeftIndent = 35;
+ firstPara.FirstLineIndent = -35;
+ // Add another paragraph for the next bullet point.
+ IParagraph secondPara = bulletPointsShape.TextBody.AddParagraph("The company is participating in top open source projects in automation industry.");
+ //Format how the bullets should be displayed.
+ secondPara.ListFormat.Type = ListType.Bulleted;
+ secondPara.LeftIndent = 35;
+ secondPara.FirstLineIndent = -35;
+ //Get a picture as stream.
+ var assembly = Assembly.GetExecutingAssembly();
+ var pictureStream = assembly.GetManifestResourceStream("Create_PowerPoint_Presentation.Data.Image.jpg");
+ //Add the picture to a slide by specifying its size and position.
+ slide.Shapes.AddPicture(pictureStream, 499.79, 238.59, 364.54, 192.16);
+ //Add an auto-shape to the slide.
+ IShape stampShape = slide.Shapes.AddShape(AutoShapeType.Explosion1, 48.93, 430.71, 104.13, 80.54);
+ //Format the auto-shape color by setting the fill type and text.
+ stampShape.Fill.FillType = FillType.None;
+ stampShape.TextBody.AddParagraph("IMN").HorizontalAlignment = HorizontalAlignmentType.Center;
+ MemoryStream memoryStream = new MemoryStream();
+ //Saves the PowerPoint document file.
+ pptxDoc.Save(memoryStream);
+ memoryStream.Position = 0;
+ var bytes = memoryStream.ToArray();
+ return new FileContentResult(bytes, "application/vnd.openxmlformats-officedocument.presentationml.presentation")
+ {
+ FileDownloadName = "presentation.pptx"
+ };
+ }
+ catch (Exception ex)
+ {
+ // Log the error with details for troubleshooting
+ _logger.LogError(ex, "Error creating PPTX");
+ // Prepare error message including exception details
+ var msg = $"Exception: {ex.Message}\n\n{ex}";
+ // Return a 500 Internal Server Error response with the message
+ return new ContentResult { StatusCode = 500, Content = msg, ContentType = "text/plain; charset=utf-8" };
+ }
+ }
+
+{% endhighlight %}
+{% endtabs %}
+
+Step 7: Right click the project and select **Publish**. Then, create a new profile in the Publish Window.
+
+
+Step 8: Select the target as **Azure** and click **Next** button.
+
+
+Step 9: Select the specific target as **Azure Function App** and click **Next** button.
+
+
+Step 10: Select the **Create new** button.
+
+
+Step 11: Click **Create** button.
+
+
+Step 12: After creating app service then click **Finish** button.
+
+
+Step 13: Click the **Publish** button.
+
+
+Step 14: Publish has been succeed.
+
+
+Step 15: Now, go to Azure portal and select the App Services. After running the service, click **Get function URL by copying it**. Then, paste it in the below client sample (which will request the Azure Functions, to perform **create a PowerPoint Presentation** using the template PowerPoint document). You will get the output **PowerPoint Presentation** as follows.
+
+
+
+## Steps to post the request to Azure Functions
+
+Step 1: Create a console application to request the Azure Functions API.
+
+Step 2: Add the following code snippet into **Main** method to post the request to Azure Functions with template PowerPoint document and get the resultant PowerPoint Presentation.
+
+{% tabs %}
+{% highlight c# tabtitle="C#" %}
+
+ static async Task Main()
+ {
+ try
+ {
+ Console.Write("Please enter your Azure Function URL: ");
+ string url = Console.ReadLine();
+ if (string.IsNullOrWhiteSpace(url)) return;
+ // Create a new HttpClient instance for sending HTTP requests
+ using var http = new HttpClient();
+ using var content = new StringContent(string.Empty);
+ using var res = await http.PostAsync(url, content);
+ // Read the response body as a byte array
+ var resBytes = await res.Content.ReadAsByteArrayAsync();
+ // Extract the media type from the response headers
+ string mediaType = res.Content.Headers.ContentType?.MediaType ?? string.Empty;
+ // Decide the output file path the response is an docx or txt
+ string outputPath = mediaType.Contains("presentation", StringComparison.OrdinalIgnoreCase)
+ || mediaType.Contains("powerpoint", StringComparison.OrdinalIgnoreCase)
+ || mediaType.Equals("application/vnd.openxmlformats-officedocument.presentationml.presentation", StringComparison.OrdinalIgnoreCase)
+ ? Path.GetFullPath("../../../Output/Output.pptx")
+ : Path.GetFullPath("../../../Output/function-error.txt");
+ // Write the response bytes to the output file
+ await File.WriteAllBytesAsync(outputPath, resBytes);
+ Console.WriteLine($"Saved: {outputPath}");
+ }
+ catch (Exception ex)
+ {
+ throw;
+ }
+ }
+
+{% endhighlight %}
+{% endtabs %}
+
+From GitHub, you can download the [console application](https://github.com/SyncfusionExamples/PowerPoint-Examples/tree/master/Getting-started/Azure/Azure_Functions/Console_App_Flex_Consumption) and [Azure Functions Flex Consumption](https://github.com/SyncfusionExamples/PowerPoint-Examples/tree/master/Getting-started/Azure/Azure_Functions/Azure_Functions_Flex_Consumption).
+
+Click [here](https://www.syncfusion.com/document-processing/powerpoint-framework/net-core) to explore the rich set of Syncfusion® PowerPoint Library (Presentation) features.
+
diff --git a/Document-Processing/PowerPoint/PowerPoint-Library/NET/Open-and-Save-PowerPoint-Presentation-in-Azure-Functions-Flex-Consumption.md b/Document-Processing/PowerPoint/PowerPoint-Library/NET/Open-and-Save-PowerPoint-Presentation-in-Azure-Functions-Flex-Consumption.md
new file mode 100644
index 0000000000..795d139073
--- /dev/null
+++ b/Document-Processing/PowerPoint/PowerPoint-Library/NET/Open-and-Save-PowerPoint-Presentation-in-Azure-Functions-Flex-Consumption.md
@@ -0,0 +1,170 @@
+---
+title: Open and save Presentation in Azure Functions Flex Consumption | Syncfusion
+description: Open and save Presentation in Azure Functions Flex Consumption using .NET Core PowerPoint library (Presentation) without Microsoft PowerPoint or interop dependencies.
+platform: document-processing
+control: PowerPoint
+documentation: UG
+---
+
+# Open and save Presentation in Azure Functions (Flex Consumption)
+
+Syncfusion® PowerPoint is a [.NET Core PowerPoint library](https://www.syncfusion.com/document-processing/powerpoint-framework/net-core) used to create, read, edit and convert PowerPoint documents programmatically without **Microsoft PowerPoint** or interop dependencies. Using this library, you can **open and save Presentation in Azure Functions deployed on Flex (Consumption) plan**.
+
+## Steps to open and save Presentation in Azure Functions (Flex Consumption)
+
+Step 1: Create a new Azure Functions project.
+
+
+Step 2: Create a project name and select the location.
+
+
+Step 3: Select function worker as **.NET 8.0 (Long Term Support)** (isolated worker) and target Flex/Consumption hosting suitable for isolated worker.
+
+
+Step 4: Install the [Syncfusion.Presentation.Net.Core](https://www.nuget.org/packages/Syncfusion.Presentation.Net.Core) NuGet package as a reference to your project from [NuGet.org](https://www.nuget.org/).
+
+
+N> Starting with v16.2.0.x, if you reference Syncfusion® assemblies from trial setup or from the NuGet feed, you also have to add "Syncfusion.Licensing" assembly reference and include a license key in your projects. Please refer to this [link](https://help.syncfusion.com/common/essential-studio/licensing/overview) to know about registering Syncfusion® license key in your application to use our components.
+
+Step 5: Include the following namespaces in the **Function1.cs** file.
+
+{% tabs %}
+{% highlight c# tabtitle="C#" %}
+
+using Syncfusion.Presentation;
+
+{% endhighlight %}
+{% endtabs %}
+
+Step 6: Add the following code snippet in **Run** method of **Function1** class to perform **open the existing Presentation in Azure Functions** and return the resultant **PowerPoint Presentation** to client end.
+
+{% tabs %}
+{% highlight c# tabtitle="C#" %}
+
+public async Task Run([HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequest req)
+ {
+ try
+ {
+ // Create a memory stream to hold the incoming request body (PowerPoint Presentation bytes)
+ await using MemoryStream inputStream = new MemoryStream();
+ // Copy the request body into the memory stream
+ await req.Body.CopyToAsync(inputStream);
+ // Check if the stream is empty (no file content received)
+ if (inputStream.Length == 0)
+ return new BadRequestObjectResult("No file content received in request body.");
+ // Reset stream position to the beginning for reading
+ inputStream.Position = 0;
+ // Load the PowerPoint Presentation from the stream
+ using IPresentation pptxDoc = Presentation.Open(inputStream);
+ //Gets the first slide from the PowerPoint presentation
+ ISlide slide = pptxDoc.Slides[0];
+ //Gets the first shape of the slide
+ IShape shape = slide.Shapes[0] as IShape;
+ //Change the text of the shape
+ if (shape.TextBody.Text == "Company History")
+ shape.TextBody.Text = "Company Profile";
+ MemoryStream memoryStream = new MemoryStream();
+ //Saves the PowerPoint document file.
+ pptxDoc.Save(memoryStream);
+ memoryStream.Position = 0;
+ var bytes = memoryStream.ToArray();
+ return new FileContentResult(bytes, "application/vnd.openxmlformats-officedocument.presentationml.presentation")
+ {
+ FileDownloadName = "presentation.pptx"
+ };
+ }
+ catch(Exception ex)
+ {
+ // Log the error with details for troubleshooting
+ _logger.LogError(ex, "Error open and save PowerPoint Presentation.");
+ // Prepare error message including exception details
+ var msg = $"Exception: {ex.Message}\n\n{ex}";
+ // Return a 500 Internal Server Error response with the message
+ return new ContentResult { StatusCode = 500, Content = msg, ContentType = "text/plain; charset=utf-8" };
+ }
+ }
+
+{% endhighlight %}
+{% endtabs %}
+
+Step 7: Right click the project and select **Publish**. Then, create a new profile in the Publish Window.
+
+
+Step 8: Select the target as **Azure** and click **Next** button.
+
+
+Step 9: Select the specific target as **Azure Function App** and click **Next** button.
+
+
+Step 10: Select the **Create new** button.
+
+
+Step 11: Click **Create** button.
+
+
+Step 12: After creating app service then click **Finish** button.
+
+
+Step 13: Click the **Publish** button.
+
+
+Step 14: Publish has been succeed.
+
+
+Step 15: Now, go to Azure portal and select the App Services. After running the service, click **Get function URL by copying it**. Then, paste it in the below client sample (which will request the Azure Functions, to perform **open and save Presentation** using the template PowerPoint document). You will get the output **PowerPoint Presentation** as follows.
+
+
+
+## Steps to post the request to Azure Functions
+
+Step 1: Create a console application to request the Azure Functions API.
+
+Step 2: Add the following code snippet into **Main** method to post the request to Azure Functions with template PowerPoint document and get the resultant PowerPoint Presentation.
+
+{% tabs %}
+{% highlight c# tabtitle="C#" %}
+
+ static async Task Main()
+ {
+ try
+ {
+ Console.Write("Please enter your Azure Functions URL : ");
+ string url = Console.ReadLine();
+ if (string.IsNullOrEmpty(url)) return;
+ // Create a new HttpClient instance for sending HTTP requests
+ using var http = new HttpClient();
+ // Read all bytes from the input PowerPoint file
+ byte[] bytes = await File.ReadAllBytesAsync(@"Data/Input.pptx");
+ // Wrap the file bytes into a ByteArrayContent object for HTTP transmission
+ using var content = new ByteArrayContent(bytes);
+ // Set the content type header to indicate binary data
+ content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream");
+ // Send a POST request to the provided Azure Functions URL with the file content
+ using var res = await http.PostAsync(url, content);
+ // Read the response body as a byte array
+ var resBytes = await res.Content.ReadAsByteArrayAsync();
+ // Extract the media type from the response headers
+ string mediaType = res.Content.Headers.ContentType?.MediaType ?? string.Empty;
+ // Decide the output file path the response is an image or txt
+ string outputPath = mediaType.Contains("presentation", StringComparison.OrdinalIgnoreCase)
+ || mediaType.Contains("powerpoint", StringComparison.OrdinalIgnoreCase)
+ || mediaType.Equals("application/vnd.openxmlformats-officedocument.presentationml.presentation", StringComparison.OrdinalIgnoreCase)
+ ? Path.GetFullPath(@"../../../Output/Output.pptx")
+ : Path.GetFullPath(@"../../../function-error.txt");
+ // Write the response bytes to the output file
+ await File.WriteAllBytesAsync(outputPath, resBytes);
+ Console.WriteLine($"Saved: {outputPath}");
+ }
+ catch (Exception ex)
+ {
+ throw;
+ }
+ }
+
+{% endhighlight %}
+{% endtabs %}
+
+From GitHub, you can download the [console application](https://github.com/SyncfusionExamples/PowerPoint-Examples/tree/master/Read-and-save-PowerPoint-presentation/Open-and-save-PowerPoint/Azure/Azure_Functions/Console_App_Flex_Consumption) and [Azure Functions Flex Consumption](https://github.com/SyncfusionExamples/PowerPoint-Examples/tree/master/Read-and-save-PowerPoint-presentation/Open-and-save-PowerPoint/Azure/Azure_Functions/Azure_Functions_Flex_Consumption).
+
+Click [here](https://www.syncfusion.com/document-processing/powerpoint-framework/net-core) to explore the rich set of Syncfusion® PowerPoint Library (Presentation) features.
+
diff --git a/Document-Processing/PowerPoint/PowerPoint-Library/NET/Performance-metrics.md b/Document-Processing/PowerPoint/PowerPoint-Library/NET/Performance-metrics.md
index 2f74883cb8..e0fe37993c 100644
--- a/Document-Processing/PowerPoint/PowerPoint-Library/NET/Performance-metrics.md
+++ b/Document-Processing/PowerPoint/PowerPoint-Library/NET/Performance-metrics.md
@@ -18,7 +18,7 @@ The following system configurations were used for benchmarking:
* **Processor:** 12th Gen Intel(R) Core(TM) i5-1235U (1.30 GHz)
* **RAM:** 24GB
* **.NET Version:** .NET 8.0
-* **Syncfusion® Version:** [Syncfusion.Presentation.Net.Core v32.1.19](https://www.nuget.org/packages/Syncfusion.Presentation.Net.Core/32.1.19)
+* **Syncfusion® Version:** [Syncfusion.Presentation.Net.Core v33.1.44](https://www.nuget.org/packages/Syncfusion.Presentation.Net.Core/33.1.44)
## Open and save Presentation
@@ -46,7 +46,7 @@ The following system configurations were used for benchmarking:
@@ -84,4 +84,6 @@ You can find the sample used for this performance evaluation on [GitHub](https:/
You can find the sample used for this performance evaluation on [GitHub](https://github.com/SyncfusionExamples/PowerPoint-Examples/tree/master/Performance-metrices/Clone-and-merge-slides/).
-You can find the performance benchmark report for [PowerPoint to PDF](https://help.syncfusion.com/document-processing/powerpoint/conversions/powerpoint-to-pdf/net/performance-metrics) and [PowerPoint to Image](https://help.syncfusion.com/document-processing/powerpoint/conversions/powerpoint-to-image/net/performance-metrics) conversion.
\ No newline at end of file
+You can find the performance benchmark report for [PowerPoint to PDF](https://help.syncfusion.com/document-processing/powerpoint/conversions/powerpoint-to-pdf/net/performance-metrics) and [PowerPoint to Image](https://help.syncfusion.com/document-processing/powerpoint/conversions/powerpoint-to-image/net/performance-metrics) conversion.
+
+N> Execution times are based on the sample documents and may vary with different content or environments.
\ No newline at end of file
diff --git a/Document-Processing/Release-Notes/v32.2.4.md b/Document-Processing/Release-Notes/v32.2.4.md
new file mode 100644
index 0000000000..bde7fc4353
--- /dev/null
+++ b/Document-Processing/Release-Notes/v32.2.4.md
@@ -0,0 +1,38 @@
+---
+title : Essential Studio® for Document Processing Release Notes - v32.2.4
+description : Learn here about the controls in the Essential Studio® for Document Processing Weekly Nuget Release - Release Notes - v32.2.4
+platform : document-processing
+documentation: ug
+---
+
+# Essential Studio® for Document Processing - v32.2.4 Release Notes
+
+{% include release-info.html date="February 11, 2026" version="v32.2.4" passed="229558" failed="0" %}
+
+{% directory path: _includes/release-notes/v32.2.4 %}
+
+{% include {{file.url}} %}
+
+{% enddirectory %}
+
+## Test Results
+
+| Component Name | Platform | Test Cases | Passed | Failed | Remarks |
+|----------------|----------|------------|--------|--------|---------|
+| Calculate Library | .NET | 145 | 145 | 0 | All Passed |
+| DOCX Editor | Blazor | 1975 | 1975 | 0 | All Passed |
+| DOCX Editor | Web(Javascript, Angular, React, Vue, ASP.NET Core & MVC) | 5023 | 5023 | 0 | All Passed |
+| Excel Library | .NET | 37904 | 37904 | 0 | All Passed |
+| Metafile Renderer | .NET | 897 | 897 | 0 | All Passed |
+| PDF Library | .NET | 13773 | 13773 | 0 | All Passed |
+| PDF Viewer | .NET MAUI | 15356 | 15356 | 0 | All Passed |
+| PDF Viewer | Blazor | 15024 | 15024 | 0 | All Passed |
+| PDF Viewer | Web(Javascript, Angular, React, Vue, ASP.NET Core & MVC) | 19809 | 19809 | 0 | All Passed |
+| PDF Viewer | Windows Forms | 209 | 209 | 0 | All Passed |
+| PDF Viewer | WPF | 3036 | 3036 | 0 | All Passed |
+| PowerPoint Library | .NET | 54538 | 54538 | 0 | All Passed |
+| Spreadsheet | Blazor | 3970 | 3970 | 0 | All Passed |
+| Spreadsheet | Web(Javascript, Angular, React, Vue, ASP.NET Core & MVC) | 10792 | 10792 | 0 | All Passed |
+| Spreadsheet | WPF | 2715 | 2715 | 0 | All Passed |
+| Word Library | .NET | 40313 | 40313 | 0 | All Passed |
+| Word Library | Java | 4079 | 4079 | 0 | All Passed |
\ No newline at end of file
diff --git a/Document-Processing/Release-Notes/v32.2.5.md b/Document-Processing/Release-Notes/v32.2.5.md
new file mode 100644
index 0000000000..0c5aadf9f1
--- /dev/null
+++ b/Document-Processing/Release-Notes/v32.2.5.md
@@ -0,0 +1,38 @@
+---
+title : Essential Studio® for Document Processing Release Notes - v32.2.5
+description : Learn here about the controls in the Essential Studio® for Document Processing Weekly Nuget Release - Release Notes - v32.2.5
+platform : document-processing
+documentation: ug
+---
+
+# Essential Studio® for Document Processing - v32.2.5 Release Notes
+
+{% include release-info.html date="February 17, 2026" version="v32.2.5" passed="229741" failed="0" %}
+
+{% directory path: _includes/release-notes/v32.2.5 %}
+
+{% include {{file.url}} %}
+
+{% enddirectory %}
+
+## Test Results
+
+| Component Name | Platform | Test Cases | Passed | Failed | Remarks |
+|----------------|----------|------------|--------|--------|---------|
+| Calculate Library | .NET | 145 | 145 | 0 | All Passed |
+| DOCX Editor | Blazor | 1975 | 1975 | 0 | All Passed |
+| DOCX Editor | Web(Javascript, Angular, React, Vue, ASP.NET Core & MVC) | 5023 | 5023 | 0 | All Passed |
+| Excel Library | .NET | 37920 | 37920 | 0 | All Passed |
+| Metafile Renderer | .NET | 897 | 897 | 0 | All Passed |
+| PDF Library | .NET | 13805 | 13805 | 0 | All Passed |
+| PDF Viewer | .NET MAUI | 15368 | 15368 | 0 | All Passed |
+| PDF Viewer | Blazor | 15030 | 15030 | 0 | All Passed |
+| PDF Viewer | Web(Javascript, Angular, React, Vue, ASP.NET Core & MVC) | 19851 | 19851 | 0 | All Passed |
+| PDF Viewer | Windows Forms | 209 | 209 | 0 | All Passed |
+| PDF Viewer | WPF | 3036 | 3036 | 0 | All Passed |
+| PowerPoint Library | .NET | 54538 | 54538 | 0 | All Passed |
+| Spreadsheet | Blazor | 3970 | 3970 | 0 | All Passed |
+| Spreadsheet | Web(Javascript, Angular, React, Vue, ASP.NET Core & MVC) | 10797 | 10797 | 0 | All Passed |
+| Spreadsheet | WPF | 2715 | 2715 | 0 | All Passed |
+| Word Library | .NET | 40383 | 40383 | 0 | All Passed |
+| Word Library | Java | 4079 | 4079 | 0 | All Passed |
\ No newline at end of file
diff --git a/Document-Processing/Release-Notes/v32.2.7.md b/Document-Processing/Release-Notes/v32.2.7.md
new file mode 100644
index 0000000000..54f7b7bfa8
--- /dev/null
+++ b/Document-Processing/Release-Notes/v32.2.7.md
@@ -0,0 +1,38 @@
+---
+title : Essential Studio® for Document Processing Release Notes - v32.2.7
+description : Learn here about the controls in the Essential Studio® for Document Processing Weekly Nuget Release - Release Notes - v32.2.7
+platform : document-processing
+documentation: ug
+---
+
+# Essential Studio® for Document Processing - v32.2.7 Release Notes
+
+{% include release-info.html date="February 24, 2026" version="v32.2.7" passed="230020" failed="0" %}
+
+{% directory path: _includes/release-notes/v32.2.7 %}
+
+{% include {{file.url}} %}
+
+{% enddirectory %}
+
+## Test Results
+
+| Component Name | Platform | Test Cases | Passed | Failed | Remarks |
+|----------------|----------|------------|--------|--------|---------|
+| Calculate Library | .NET | 145 | 145 | 0 | All Passed |
+| DOCX Editor | Blazor | 1975 | 1975 | 0 | All Passed |
+| DOCX Editor | Web(Javascript, Angular, React, Vue, ASP.NET Core & MVC) | 5023 | 5023 | 0 | All Passed |
+| Excel Library | .NET | 37923 | 37923 | 0 | All Passed |
+| Metafile Renderer | .NET | 897 | 897 | 0 | All Passed |
+| PDF Library | .NET | 13813 | 13813 | 0 | All Passed |
+| PDF Viewer | .NET MAUI | 15368 | 15368 | 0 | All Passed |
+| PDF Viewer | Blazor | 15294 | 15294 | 0 | All Passed |
+| PDF Viewer | Web(Javascript, Angular, React, Vue, ASP.NET Core & MVC) | 19851 | 19851 | 0 | All Passed |
+| PDF Viewer | Windows Forms | 209 | 209 | 0 | All Passed |
+| PDF Viewer | WPF | 3040 | 3040 | 0 | All Passed |
+| PowerPoint Library | .NET | 54538 | 54538 | 0 | All Passed |
+| Spreadsheet | Blazor | 3970 | 3970 | 0 | All Passed |
+| Spreadsheet | Web(Javascript, Angular, React, Vue, ASP.NET Core & MVC) | 10797 | 10797 | 0 | All Passed |
+| Spreadsheet | WPF | 2715 | 2715 | 0 | All Passed |
+| Word Library | .NET | 40383 | 40383 | 0 | All Passed |
+| Word Library | Java | 4079 | 4079 | 0 | All Passed |
\ No newline at end of file
diff --git a/Document-Processing/Release-Notes/v32.2.8.md b/Document-Processing/Release-Notes/v32.2.8.md
new file mode 100644
index 0000000000..2cfbb8dc7e
--- /dev/null
+++ b/Document-Processing/Release-Notes/v32.2.8.md
@@ -0,0 +1,38 @@
+---
+title : Essential Studio® for Document Processing Release Notes - v32.2.8
+description : Learn here about the controls in the Essential Studio® for Document Processing Weekly Nuget Release - Release Notes - v32.2.8
+platform : document-processing
+documentation: ug
+---
+
+# Essential Studio® for Document Processing - v32.2.8 Release Notes
+
+{% include release-info.html date="March 03, 2026" version="v32.2.8" passed="230193" failed="0" %}
+
+{% directory path: _includes/release-notes/v32.2.8 %}
+
+{% include {{file.url}} %}
+
+{% enddirectory %}
+
+## Test Results
+
+| Component Name | Platform | Test Cases | Passed | Failed | Remarks |
+|----------------|----------|------------|--------|--------|---------|
+| Calculate Library | .NET | 145 | 145 | 0 | All Passed |
+| DOCX Editor | Blazor | 1975 | 1975 | 0 | All Passed |
+| DOCX Editor | Web(Javascript, Angular, React, Vue, ASP.NET Core & MVC) | 5177 | 5177 | 0 | All Passed |
+| Excel Library | .NET | 37923 | 37923 | 0 | All Passed |
+| Metafile Renderer | .NET | 897 | 897 | 0 | All Passed |
+| PDF Library | .NET | 13820 | 13820 | 0 | All Passed |
+| PDF Viewer | .NET MAUI | 15368 | 15368 | 0 | All Passed |
+| PDF Viewer | Blazor | 15304 | 15304 | 0 | All Passed |
+| PDF Viewer | Web(Javascript, Angular, React, Vue, ASP.NET Core & MVC) | 19851 | 19851 | 0 | All Passed |
+| PDF Viewer | Windows Forms | 209 | 209 | 0 | All Passed |
+| PDF Viewer | WPF | 3040 | 3040 | 0 | All Passed |
+| PowerPoint Library | .NET | 54538 | 54538 | 0 | All Passed |
+| Spreadsheet | Blazor | 3970 | 3970 | 0 | All Passed |
+| Spreadsheet | Web(Javascript, Angular, React, Vue, ASP.NET Core & MVC) | 10797 | 10797 | 0 | All Passed |
+| Spreadsheet | WPF | 2715 | 2715 | 0 | All Passed |
+| Word Library | .NET | 40385 | 40385 | 0 | All Passed |
+| Word Library | Java | 4079 | 4079 | 0 | All Passed |
\ No newline at end of file
diff --git a/Document-Processing/Release-Notes/v32.2.9.md b/Document-Processing/Release-Notes/v32.2.9.md
new file mode 100644
index 0000000000..0da60ec128
--- /dev/null
+++ b/Document-Processing/Release-Notes/v32.2.9.md
@@ -0,0 +1,38 @@
+---
+title : Essential Studio® for Document Processing Release Notes - v32.2.9
+description : Learn here about the controls in the Essential Studio® for Document Processing Weekly Nuget Release - Release Notes - v32.2.9
+platform : document-processing
+documentation: ug
+---
+
+# Essential Studio® for Document Processing - v32.2.9 Release Notes
+
+{% include release-info.html date="March 10, 2026" version="v32.2.9" passed="230256" failed="0" %}
+
+{% directory path: _includes/release-notes/v32.2.9 %}
+
+{% include {{file.url}} %}
+
+{% enddirectory %}
+
+## Test Results
+
+| Component Name | Platform | Test Cases | Passed | Failed | Remarks |
+|----------------|----------|------------|--------|--------|---------|
+| Calculate Library | .NET | 145 | 145 | 0 | All Passed |
+| DOCX Editor | Web(Javascript, Angular, React, Vue, ASP.NET Core & MVC) | 5177 | 5177 | 0 | All Passed |
+| DOCX Editor | Blazor | 1975 | 1975 | 0 | All Passed |
+| Excel Library | .NET | 37923 | 37923 | 0 | All Passed |
+| Metafile Renderer | .NET | 897 | 897 | 0 | All Passed |
+| PDF Library | .NET | 13832 | 13832 | 0 | All Passed |
+| PDF Viewer | .NET MAUI | 15368 | 15368 | 0 | All Passed |
+| PDF Viewer | Blazor | 15310 | 15310 | 0 | All Passed |
+| PDF Viewer | Web(Javascript, Angular, React, Vue, ASP.NET Core & MVC) | 19851 | 19851 | 0 | All Passed |
+| PDF Viewer | Windows Forms | 209 | 209 | 0 | All Passed |
+| PDF Viewer | WPF | 3040 | 3040 | 0 | All Passed |
+| PowerPoint Library | .NET | 54541 | 54541 | 0 | All Passed |
+| Spreadsheet | WPF | 2715 | 2715 | 0 | All Passed |
+| Spreadsheet | Blazor | 3970 | 3970 | 0 | All Passed |
+| Spreadsheet | Web(Javascript, Angular, React, Vue, ASP.NET Core & MVC) | 10800 | 10800 | 0 | All Passed |
+| Word Library | .NET | 40424 | 40424 | 0 | All Passed |
+| Word Library | Java | 4079 | 4079 | 0 | All Passed |
\ No newline at end of file
diff --git a/Document-Processing/Release-Notes/v33.1.45.md b/Document-Processing/Release-Notes/v33.1.45.md
new file mode 100644
index 0000000000..0b9080cae5
--- /dev/null
+++ b/Document-Processing/Release-Notes/v33.1.45.md
@@ -0,0 +1,38 @@
+---
+title : Essential Studio® for Document Processing Release Notes - v33.1.45
+description : Learn here about the controls in the Essential Studio® for Document Processing Weekly Nuget Release - Release Notes - v33.1.45
+platform : document-processing
+documentation: ug
+---
+
+# Essential Studio® for Document Processing - v33.1.45 Release Notes
+
+{% include release-info.html date="March 24, 2026" version="v33.1.45" passed="234136" failed="0" %}
+
+{% directory path: _includes/release-notes/v33.1.45 %}
+
+{% include {{file.url}} %}
+
+{% enddirectory %}
+
+## Test Results
+
+| Component Name | Platform | Test Cases | Passed | Failed | Remarks |
+|----------------|----------|------------|--------|--------|---------|
+| Calculate Library | .NET | 145 | 145 | 0 | All Passed |
+| DOCX Editor | Blazor | 1985 | 1985 | 0 | All Passed |
+| DOCX Editor | Web(Javascript, Angular, React, Vue, ASP.NET Core & MVC) | 5183 | 5183 | 0 | All Passed |
+| Excel Library | .NET | 37992 | 37992 | 0 | All Passed |
+| Metafile Renderer | .NET | 897 | 897 | 0 | All Passed |
+| PDF Library | .NET | 13999 | 13999 | 0 | All Passed |
+| PDF Viewer | .NET MAUI | 15368 | 15368 | 0 | All Passed |
+| PDF Viewer | Windows Forms | 209 | 209 | 0 | All Passed |
+| PDF Viewer | WPF | 3040 | 3040 | 0 | All Passed |
+| PDF Viewer | Blazor | 16512 | 16512 | 0 | All Passed |
+| PDF Viewer | Web(Javascript, Angular, React, Vue, ASP.NET Core & MVC) | 21847 | 21847 | 0 | All Passed |
+| PowerPoint Library | .NET | 54541 | 54541 | 0 | All Passed |
+| Spreadsheet | Blazor | 3970 | 3970 | 0 | All Passed |
+| Spreadsheet | Web(Javascript, Angular, React, Vue, ASP.NET Core & MVC) | 10800 | 10800 | 0 | All Passed |
+| Spreadsheet | WPF | 2715 | 2715 | 0 | All Passed |
+| Word Library | .NET | 40854 | 40854 | 0 | All Passed |
+| Word Library | Java | 4079 | 4079 | 0 | All Passed |
\ No newline at end of file
diff --git a/Document-Processing/Skills/document-sdk.md b/Document-Processing/Skills/document-sdk.md
new file mode 100644
index 0000000000..3bec7f5584
--- /dev/null
+++ b/Document-Processing/Skills/document-sdk.md
@@ -0,0 +1,98 @@
+---
+title: Syncfusion Document SDK Agent Skills for AI Assistants | Syncfusion
+description: Learn how to install and use Syncfusion Document SDK Agent Skills to help AI assistants generate accurate document processing code with Document SDK libraries
+platform: document-processing
+control: Document SDK
+documentation: ug
+keywords: Skills, AI Assistants, Document SDK, Agent Skills
+---
+
+# Syncfusion Document SDK Agent Skills for AI Assistants
+
+This guide introduces **Syncfusion Document SDK Skills**, a knowledge package that enables AI assistants (GitHub Copilot, Code Studio, Cursor, Claude, etc.) to understand and generate accurate document processing code using Syncfusion® Document SDK libraries. It also supports executing document operations directly via CSX scripts.
+
+Syncfusion® Document SDK Skills eliminate common issues with generic AI suggestions by grounding the assistant in accurate Syncfusion® Document SDK library APIs, document processing patterns, and platform-specific configuration for the following libraries:
+
+| Document Processing Libraries | Skills |
+|---|---|
+| [Word (DocIO)](https://help.syncfusion.com/document-processing/word/overview) | syncfusion-dotnet-word syncfusion-java-word |
+| [PDF](https://help.syncfusion.com/document-processing/pdf/overview) | syncfusion-dotnet-pdf syncfusion-dotnet-pdf-to-image syncfusion-flutter-pdf syncfusion-javascript-pdf |
+| [Excel (XlsIO)](https://help.syncfusion.com/document-processing/excel/overview) | syncfusion-dotnet-excel syncfusion-flutter-excel |
+| [PowerPoint (Presentation)](https://help.syncfusion.com/document-processing/powerpoint/overview) | syncfusion-dotnet-powerpoint |
+| [Markdown](https://help.syncfusion.com/document-processing/word/word-library/net/convert-markdown-to-word-document-in-csharp) | syncfusion-dotnet-markdown |
+| [Smart Data Extraction](https://help.syncfusion.com/document-processing/data-extraction/overview) | syncfusion-dotnet-smart-data-extraction |
+
+## Prerequisites
+
+Before installing Syncfusion® Document SDK Skills, ensure the following tools are available on your machine:
+
+- **[Node.js](https://nodejs.org/en)** (v18 or later) — Required to run `npx` commands for installing skills.
+- **[.NET SDK](https://dotnet.microsoft.com/en-us/download)** (8.0 or later) — Required for CSX script execution (Mode 2).
+- **[dotnet-script](https://github.com/dotnet-script/dotnet-script)** — Required for CSX script execution (Mode 2). Install it globally by running: `dotnet tool install -g dotnet-script`.
+
+## Installation
+
+Choose one of the following commands to install Syncfusion® Document SDK Skills based on your preference. You can also explore Syncfusion® skills from the [marketplace](https://skills.sh/syncfusion/).
+
+To install all document SDK skills at once, use the following command:
+
+```bash
+npx skills add syncfusion/document-sdk-skills --all -y
+```
+
+To install a specific skill, use the following command (for example, to install PDF .NET skills):
+
+```bash
+npx skills add syncfusion/document-sdk-skills --skill syncfusion-dotnet-pdf
+```
+
+This registers the Syncfusion® skill pack so your AI assistant can automatically load it in supported IDEs such as [Code Studio](https://help.syncfusion.com/code-studio/reference/configure-properties/skills), [Visual Studio Code](https://code.visualstudio.com/docs/copilot/customization/agent-skills), and [Cursor](https://cursor.com/docs/skills).
+
+To learn more about the Skills CLI, refer [here](https://skills.sh/docs).
+
+## What's Included
+
+1. **Document SDK API Knowledge** — Curated, skill-based guidance for creating, editing, and converting PDF, Word, Excel, PowerPoint, and Markdown documents using Syncfusion® Document SDK libraries. Covers key APIs, supported formats, and conversions.
+2. **Dual-Mode Execution (.NET)** — Supports two operating modes:
+ - **Mode 1** — Generate production-ready code for your project.
+ - **Mode 2** — Execute a document task immediately via a CSX script without modifying your project.
+3. **Patterns & Best Practices** — Practical recommendations for API usage, platform-specific NuGet package selection, and document processing workflows (for example, mail merge, PDF digital signatures, Excel pivot tables, and PowerPoint chart creation). All guidance is authored directly within the skill file rather than being fetched from external documentation.
+
+
+## How Syncfusion® Document SDK Agent Skills Work
+
+1. **Read the relevant skill files and choose modes based on the user's query** The assistant retrieves library APIs, and code patterns from the installed Syncfusion® Skills. It automatically chooses the appropriate operating mode based on the provided prompt.
+2. **Enforces Syncfusion® best practices**, including:
+ - Suggesting the correct NuGet packages or JAR files based on the detected application type.
+ - Using only APIs and code patterns explicitly present in the skill reference files.
+ - Configuring the Syncfusion® license key from `SyncfusionLicense.txt` or the `SYNCFUSION_LICENSE_KEY` environment variable.
+3. **Operates in two modes** based on the user's intent:
+ - **Mode 1 — Generate Code**: Produces production-ready code. No scripts are created or executed. Triggered by keywords such as `"code"`, `"snippet"`, `"how to"`, `"show me"`, `"sample"`, or `"example"`.
+ - **Mode 2 — Execute via CSX Script**: Creates a temporary `.csx` script, runs it with `dotnet script`, produces the output document file, then cleans up — without modifying the user's project. Triggered by keywords such as `"create"`, `"generate"`, `"make"`, `"open"`, `"edit"`, `"modify"`, or a file path (e.g., `output/report.docx`).
+
+## Using the AI Assistant
+
+Once skills are installed, the assistant can generate Syncfusion® document processing code or execute document generation tasks. Below are example prompts for each mode.
+
+**Generate Code (Mode 1):**
+
+- "How do I add a digital signature to a PDF?"
+- "Give me a code snippet to create an Excel workbook with a pivot table using XlsIO."
+- "Show me DocIO code to create a Word document with a title and a paragraph."
+- "Generate a C# snippet to add a table to a PowerPoint slide."
+- "Show me code to extract all fields and tables from a PDF as JSON using Smart Data Extraction."
+
+**Execute Task (Mode 2):**
+
+- "Create a PDF report with a title page and inventory table, save to output/report.pdf."
+- "Create a sales summary workbook and save it to output/sales.xlsx."
+- "Create a Word document about the top 5 programming languages in 2025."
+- "Create a 5-slide meeting agenda presentation and save it to output/agenda.pptx."
+- "Extract data from the PDF at Input/invoice.pdf using Smart Data Extraction and save to output/data.json."
+
+## See also
+
+- [Syncfusion Document SDK Documentation](https://help.syncfusion.com/document-processing/introduction)
+- [Agent Skills Standards](https://agentskills.io/home)
+- [Skills CLI](https://skills.sh/docs)
+
diff --git a/Document-Processing/Skills/docx-editor-sdk.md b/Document-Processing/Skills/docx-editor-sdk.md
new file mode 100644
index 0000000000..a4535d2a8b
--- /dev/null
+++ b/Document-Processing/Skills/docx-editor-sdk.md
@@ -0,0 +1,83 @@
+---
+title: Syncfusion DOCX Editor SDK Agent Skills for AI Assistants | Syncfusion
+description: Learn how to install and use Syncfusion DOCX Editor Agent Skills to help AI assistants generate accurate DOCX Editor code with DOCX Editor SDK libraries
+platform: document-processing
+control: DOCX Editor SDK
+documentation: ug
+keywords: Skills, AI Assistants, DOCX Editor SDK, Agent Skills
+---
+
+# Syncfusion DOCX Editor SDK Agent Skills for AI Assistants
+
+This guide introduces **Syncfusion DOCX Editor SDK Skills**, a knowledge package that enables AI assistants (GitHub Copilot, Code Studio, Cursor, Claude, etc.) to understand and generate accurate docx editor code using Syncfusion® DOCX Editor SDK libraries. It also supports executing document editor operations directly via platform-specific scripts.
+
+Syncfusion® DOCX Editor SDK Skills eliminate common issues with generic AI suggestions by grounding the assistant in accurate Syncfusion® DOCX Editor SDK library APIs, supported features, and platform-specific configuration for the following platforms:
+
+
+| DOCX Editor SDK Component | Skills |
+|---|---|
+| [React](https://help.syncfusion.com/document-processing/word/word-processor/react/overview) | syncfusion-react-docx-editor |
+| [Angular](https://help.syncfusion.com/document-processing/word/word-processor/angular/overview) | syncfusion-angular-docx-editor |
+| [Blazor](https://help.syncfusion.com/document-processing/word/word-processor/blazor/overview) | syncfusion-blazor-docx-editor |
+| [ASP.NET Core](https://help.syncfusion.com/document-processing/word/word-processor/asp-net-core/overview) | syncfusion-aspnetcore-docx-editor |
+| [WPF](https://help.syncfusion.com/document-processing/word/word-processor/wpf/overview) | syncfusion-wpf-docx-editor |
+| [UWP](https://help.syncfusion.com/document-processing/word/word-processor/uwp/overview) | syncfusion-uwp-docx-editor |
+
+Each platform's skill file includes component initialization, property configuration, event handling and common usage patterns specific to that framework.
+
+## Prerequisites
+
+Before installing Syncfusion® DOCX Editor SDK Skills, ensure the following tools are available on your machine:
+
+- **[Node.js](https://nodejs.org/en)** (v18 or later) — Required to run `npx` commands for installing skills.
+
+## Installation
+
+Choose one of the following commands to install Syncfusion® DOCX Editor SDK Skills based on your preference. Users can also explore Syncfusion® skills from the [marketplace](https://skills.sh/syncfusion/).
+
+```bash
+# Install all DOCX Editor SDK skills at once
+npx skills add syncfusion/docx-editor-sdk-skills -y
+
+# Choose and install skills interactively from the terminal
+npx skills add syncfusion/docx-editor-sdk-skills
+```
+
+This registers the Syncfusion® skill pack so your AI assistant can automatically load it in supported IDEs such as [Code Studio](https://help.syncfusion.com/code-studio/reference/configure-properties/skills), [Visual Studio Code](https://code.visualstudio.com/docs/copilot/customization/agent-skills), and [Cursor](https://cursor.com/docs/skills).
+
+To learn more about the Skills CLI, refer [here](https://skills.sh/docs).
+
+## What's Included
+
+1. **Docx Editor & API Knowledge** — Curated, skill-based guidance that captures how to create, edit, and manage Document Editing operations using Syncfusion® platform-specific libraries (React, Angular, Blazor, ASP.NET Core, TypeScript, Vue), including key APIs, supported features, and common usage patterns.
+2. **Platform-Specific Code Generation** — Each skill supports generating production-ready platform-specific code for your project. The assistant automatically detects the project type and provides code snippets that can be inserted directly into your application files (e.g., `Program.cs`, `Home.razor`, `app.ts`).
+3. **Patterns & Best Practices** — Practical recommendations for API usage, platform-specific package selection, and docx editor workflows(such as document opening, formatting, track changes, add comments and document protection). All guidance is authored directly within the Skill file rather than being fetched from documentation.
+
+## How Syncfusion® DOCX Editor SDK Agent Skills Work
+
+1. **Reads the relevant Skill files based on the user's query**, with the assistant retrieving library APIs, code patterns, and best-practice guidance from the installed Syncfusion® Skills, and automatically chooses the appropriate platform based on the detected project type.
+
+2. **Enforces Syncfusion® best practices** including:
+ - Suggesting the correct NuGet packages or npm packages based on the detected application type.
+ - Using only APIs and code patterns explicitly present in the skill reference files.
+ - Configuring the Syncfusion® license key from `SyncfusionLicense.txt` or the `SYNCFUSION_LICENSE_KEY` environment variable.
+3. **Generates platform-specific code** based on the user's intent:
+ - Produces production-ready React, Angular, Blazor, ASP.NET Core, TypeScript, or Vue code and inserts it into the user's project files.
+ - Triggered by keywords such as `"create"`, `"add"`, `"insert"`, `"apply"`, `"code"`, `"snippet"`, `"how to"`, `"show me"`, `"sample"`, or `"example"`.
+
+### Using the AI Assistant
+
+Once skills are installed, the assistant can be used to generate and update Syncfusion® docx editor code for tasks such as:
+
+- "Create DOCX Editor and enable track changes"
+- "Insert a table with rows and columns into a Word document."
+- "Insert images within a DOCX file."
+- "Track changes and add comments to specific paragraphs in a Word document."
+
+
+## See also
+
+- [Syncfusion DOCX Editor SDK Documentation](https://help.syncfusion.com/document-processing/word/word-processor/overview)
+- [Agent Skills Standards](https://agentskills.io/home)
+- [SKills CLI](https://skills.sh/docs)
+
diff --git a/Document-Processing/Skills/pdf-viewer-sdk.md b/Document-Processing/Skills/pdf-viewer-sdk.md
new file mode 100644
index 0000000000..4638a95465
--- /dev/null
+++ b/Document-Processing/Skills/pdf-viewer-sdk.md
@@ -0,0 +1,99 @@
+---
+title: Syncfusion PDF Viewer SDK Agent Skills for AI Assistants | Syncfusion
+description: Learn how to install and use Syncfusion PDF Viewer SDK Agent Skills to help AI assistants generate accurate PDF Viewer code using PDF Viewer SDK libraries
+platform: document-processing
+control: PDF Viewer SDK
+documentation: ug
+keywords: Skills, AI Assistants, PdfViewer SDK, Agent Skills
+---
+
+# Syncfusion PDF Viewer SDK Agent Skills for AI Assistants
+
+This guide introduces **Syncfusion PDF Viewer SDK Skills**, a curated skill package that enables AI assistants (GitHub Copilot, Code Studio, Cursor, Claude, etc.) to generate accurate, production ready PDF Viewer integration code using the Syncfusion® PDF Viewer components across supported platforms.
+
+Unlike generic AI suggestions, these skills ground the assistant in official Syncfusion® PDF Viewer APIs, configuration patterns, and platform specific setup details—ensuring correct usage, faster Onboarding, and fewer integration issues.
+
+## Supported Platforms
+
+Syncfusion® PDF Viewer SDK Agent Skills provide guidance for the following platforms:
+
+| Framework | Skills |
+|---|---|
+| [Blazor](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/blazor/overview) | syncfusion-blazor-pdf-viewer |
+| [ASP.NET Core](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/asp-net-core/overview) | syncfusion-aspnetcore-pdf-viewer |
+| [Angular](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/angular/overview) | syncfusion-angular-pdfviewer |
+| [React](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started-overview) | syncfusion-react-pdf-viewer |
+| [Flutter](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/flutter/overview) | syncfusion-flutter-pdf-viewer |
+| [.NET MAUI](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/maui/overview) | syncfusion-maui-pdf-viewer |
+| [UWP](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/uwp/overview) | syncfusion-uwp-pdf-viewer |
+| [WinForms](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/winforms/overview) | syncfusion-winforms-pdf-viewer |
+| [WPF](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/wpf/overview) | syncfusion-wpf-pdf-viewer |
+
+Each platform’s skill file includes component initialization, property configuration, event handling, and common usage patterns specific to that framework.
+
+## Prerequisites
+
+Before installing Syncfusion® PDF Viewer SDK Skills, ensure the following:
+
+- **[Node.js]("https://nodejs.org/")** (v18 or later) — Required to run `npx` commands for installing skills.
+
+## Installation
+
+Choose one of the following commands to install the Syncfusion PDF Viewer SDK Agent Skills.
+
+```bash
+npx skills add syncfusion/pdf-viewer-sdk-skills --all -y
+```
+
+To install a specific skill, use the following command (for example, to install React PDF Viewer skills):
+
+```bash
+npx skills add syncfusion/pdf-viewer-sdk-skills --skill syncfusion-react-pdf-viewer
+```
+
+## What's Included
+
+1. **PDF Viewer API Knowledge** - Curated, platform-specific guidance for working with Syncfusion® PDF Viewer components, including:
+ - Loading PDF documents from local files, URLs, and byte streams
+ - Configuring toolbar items and viewer options
+ - Zooming, scrolling, and navigation
+ - Text selection and search
+ - Annotations (shape, text markup, stamps, etc.)
+ - Form field interaction
+ - Event handling (document load, page change, annotation events)
+2. **Platform-Specific Code Generation** — Generates production-ready code tailored to your platform without executing scripts or modifying your project structure. No files are generated on disk.
+3. **Best Practices & Configuration Patterns** - The skills enforce Syncfusion® recommended practices, including:
+ - Correct package / NuGet / npm selection per platform
+ - Proper component initialization and life cycle usage
+ - Platform-appropriate configuration for performance and UX
+ - Syncfusion license setup using:
+ - `SyncfusionLicense.txt`, or
+ - `SYNCFUSION_LICENSE_KEY` environment variable
+Only APIs and patterns explicitly defined in the skill reference files are used.
+
+## How Syncfusion® PDF Viewer SDK Agent Skills Work
+
+1. **Reads the relevant platform-specific skill files** - Based on the user’s query (for example, React vs WPF), the assistant loads the appropriate PDF Viewer skill reference.
+
+2. **Generates accurate, platform-specific code** - The assistant:
+ - Uses the correct component names and APIs
+ - Applies valid configuration options
+
+## Using the AI Assistant with PDF Viewer Skills
+
+Once installed, the assistant can help generate PDF Viewer integration code. Below are example prompts.
+
+## Example Prompts
+
+- “Show me how to load a PDF file in Syncfusion PDF Viewer for React.”
+- “Give an example of enabling text search in Blazor PDF Viewer.”
+- “How do I add annotation support in WPF Syncfusion PDF Viewer?”
+- “Provide sample code to customize the toolbar in MAUI PDF Viewer.”
+- “Show how to load a PDF from a URL in Flutter PDF Viewer.”
+- “How to navigate to a specific page in Winforms PdfViewer?”
+
+## See Also
+
+- [Syncfusion PDF Viewer Documentation](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/overview)
+- [Skills CLI Documentation](https://skills.sh/docs)
+- [Agent Skills Standards](https://agentskills.io/home)
\ No newline at end of file
diff --git a/Document-Processing/Skills/spreadsheet-editor-sdk.md b/Document-Processing/Skills/spreadsheet-editor-sdk.md
new file mode 100644
index 0000000000..b3d4789b92
--- /dev/null
+++ b/Document-Processing/Skills/spreadsheet-editor-sdk.md
@@ -0,0 +1,86 @@
+---
+title: Spreadsheet Editor SDK Agent Skills for AI Assistants | Syncfusion
+description: Learn how to install and use Syncfusion Spreadsheet Editor SDK Agent Skills to help AI assistants generate accurate code with Syncfusion Spreadsheet components
+platform: document-processing
+control: Spreadsheet Editor SDK
+documentation: ug
+keywords: Skills, AI Assistants, Spreadsheet Editor SDK, Agent Skills
+---
+
+# Syncfusion Spreadsheet Editor SDK Agent Skills for AI Assistants
+
+This guide introduces **Syncfusion Spreadsheet Editor SDK Skills**, a curated knowledge package that empowers AI assistants (such as GitHub Copilot, Code Studio, Cursor, Claude, and others) to generate accurate code for Syncfusion® Spreadsheet Editor SDK components across supported platforms.
+
+Syncfusion® Spreadsheet Editor SDK Skills address common issues with generic AI code suggestions by grounding the assistant in precise Spreadsheet Editor SDK Component APIs, spreadsheet editor patterns, and platform-specific configuration for the following platforms:
+
+| Framework | Skills |
+|---|---|
+| [React](https://help.syncfusion.com/document-processing/excel/spreadsheet/react/overview) | syncfusion-react-spreadsheet-editor |
+| [Angular](https://help.syncfusion.com/document-processing/excel/spreadsheet/angular/overview) | syncfusion-angular-spreadsheet-editor |
+| [Blazor](https://help.syncfusion.com/document-processing/excel/spreadsheet/blazor/overview) | syncfusion-blazor-spreadsheet-editor |
+| [ASP.NET Core](https://help.syncfusion.com/document-processing/excel/spreadsheet/asp-net-core/overview) | syncfusion-aspnetcore-spreadsheet-editor |
+| [ASP.NET MVC](https://help.syncfusion.com/document-processing/excel/spreadsheet/asp-net-mvc/overview) | syncfusion-aspnetmvc-spreadsheet-editor |
+| [TypeScript](https://help.syncfusion.com/document-processing/excel/spreadsheet/javascript-es6/overview) | syncfusion-javascript-spreadsheet-editor |
+| [Vue](https://help.syncfusion.com/document-processing/excel/spreadsheet/vue/overview) | syncfusion-vue-spreadsheet-editor |
+
+Each platform's skill file includes component initialization, property configuration, event handling, cell operations, formatting, data binding, and common spreadsheet usage patterns specific to that framework.
+
+## Prerequisites
+
+Before installing Syncfusion® Spreadsheet Editor SDK Skills, ensure the following tools are available on your machine:
+
+- **[Node.js](https://nodejs.org/en)** (v18 or later) — Required to run `npx` commands for installing skills.
+
+## Installation
+
+Use one of the following commands to install Syncfusion® Spreadsheet Editor SDK Skills. You can also browse Syncfusion® skills in the [marketplace](https://skills.sh/syncfusion/).
+
+To install all Spreadsheet Editor SDK skills at once, use the following command:
+
+```bash
+npx skills add syncfusion/spreadsheet-editor-sdk-skills --all -y
+```
+
+To install a specific platform skill, use the following command (for example, to install Spreadsheet Blazor skills):
+
+```bash
+npx skills add syncfusion/spreadsheet-editor-sdk-skills --skill syncfusion-blazor-spreadsheet-editor
+```
+
+This registers the Syncfusion® skill pack, enabling your AI assistant to load it automatically in supported IDEs such as [Code Studio](https://help.syncfusion.com/code-studio/reference/configure-properties/skills), [Visual Studio Code](https://code.visualstudio.com/docs/copilot/customization/agent-skills), and [Cursor](https://cursor.com/docs/skills).
+
+For more details, see the [Skills CLI documentation](https://skills.sh/docs).
+
+## What's Included
+
+1. **Spreadsheet Editor SDK API Knowledge** — Skill-based, curated guidance for creating, editing, and managing spreadsheets using Syncfusion® Spreadsheet Editor SDK UI Components across supported platforms. Covers key APIs, component integration, cell operations, formatting, data binding, and import/export features.
+2. **Platform-Specific Code Generation** — Produces production-ready code tailored to your platform (React, Angular, Blazor, ASP.NET Core, ASP.NET MVC, TypeScript, or Vue) without executing scripts or altering your project structure.
+3. **Patterns & Best Practices** — Practical recommendations for API usage, platform-specific package selection, component configuration, and spreadsheet editor workflows (such as cell styling, conditional formatting, data validation, chart creation, formula calculation, and protection settings). All guidance is authored directly within the skill files, not fetched from external documentation.
+
+## How Syncfusion® Spreadsheet Editor SDK Agent Skills Work
+
+1. **Reads relevant skill files based on your query.** The assistant retrieves component APIs and code patterns from the installed Syncfusion® Skills, automatically selecting the appropriate platform based on your workspace or prompt.
+2. **Enforces Syncfusion® best practices**, including:
+ - Recommending the correct npm or NuGet packages for your platform.
+ - Using only APIs and code patterns explicitly present in the skill reference files.
+3. **Generates code only** — Spreadsheet Editor skills focus exclusively on generating production-ready code that can be integrated directly into your application files (for example, `Home.razor`, `app.component.ts`, or `Program.cs`).
+
+## Using the AI Assistant
+
+Once skills are installed, the assistant can generate spreadsheet editor code. Below are some example prompts.
+
+**Example Prompts:**
+
+- "Show me React code to create a Spreadsheet component with basic formatting options."
+- "How to apply conditional formatting to highlight cells greater than $15,000 in Angular Spreadsheet Editor?"
+- "Give me a code snippet to protect a worksheet and allow editing only specific cells using Blazor Spreadsheet Editor."
+- "Show me how to insert a chart into the Spreadsheet Editor using ASP.NET Core."
+- "How to export the spreadsheet as PDF using Vue Spreadsheet Editor?"
+- "Show me code to apply number formatting to currency columns in React Spreadsheet Editor."
+- "How do I enable cell editing and data validation in Angular Spreadsheet Editor?"
+
+## See also
+
+- [Syncfusion Spreadsheet Editor Documentation](https://help.syncfusion.com/document-processing/excel/spreadsheet/overview)
+- [Agent Skills Standards](https://agentskills.io/home)
+- [Skills CLI](https://skills.sh/docs)
diff --git a/Document-Processing/Web-apis/consume-apis/compress-pdf.md b/Document-Processing/Web-apis/consume-apis/compress-pdf.md
index f13f3fdd03..780dcebdc0 100644
--- a/Document-Processing/Web-apis/consume-apis/compress-pdf.md
+++ b/Document-Processing/Web-apis/consume-apis/compress-pdf.md
@@ -1,14 +1,14 @@
---
-title: Compress PDF Files Using Syncfusion Web API
+title: Compress PDF Files Using Syncfusion Web API
description: Reduce PDF file size with image optimization and structural compression while maintaining visual quality using Syncfusion compression Web API.
control: general
documentation: UG
---
-# Guide to Compressing PDF Files with Syncfusion API
+# Compressing PDF Files Using Syncfusion Web API
-The Compress PDF API allows you to reduce the size of a PDF document with various compression options.
+The Syncfusion Compress PDF Web API reduces the file size of PDF documents while maintaining acceptable visual quality. It optimizes images, fonts, metadata, and internal structures, producing smaller PDFs that are easier to store, share, and distribute. This is especially useful for email sharing, web delivery, and document archiving.
-## Flatten PDF Document
+## Compress PDF Document
To compress a PDF document, send a request to the /v1/edit-pdf/compress endpoint with the input PDF file and compression options as shown below.
@@ -94,6 +94,38 @@ Console.WriteLine(await response.Content.ReadAsStringAsync());
{% endtabs %}
+## Compress PDF settings
+
+**Password**
+
+Specifies the password required to open and process a protected PDF file.
+
+**ImageQuality**
+
+Controls image compression quality. Lower values reduce file size.
+
+**OptimizeFont**
+
+Optimizes and subsets embedded fonts to reduce overall PDF size without affecting text appearance.
+
+**RemoveMetadata**
+
+Removes document metadata such as author, title, and creation details to reduce file size and improve privacy.
+
+**OptimizePageContents**
+
+Optimizes page content by removing unnecessary objects and streamlining internal PDF structures.
+
+**FlattenFormFields**
+
+Converts interactive form fields into static content to further reduce file size.
+
+**FlattenAnnotations**
+
+Converts annotations (such as comments and highlights) into static content to minimize PDF size.
+
+## Compress PDF Job Response
+
Once the request is sent, it will create a compression job to compress the PDF and return the job details as follows:
```
@@ -104,7 +136,7 @@ Once the request is sent, it will create a compression job to compress the PDF a
}
```
-## Poll the status of the Compress PDF Job
+## Check Compress PDF Job Status
Next, you can retrieve the job status by sending a request to the /v1/edit-pdf/status/{jobID} endpoint with the job ID.
@@ -112,7 +144,7 @@ Next, you can retrieve the job status by sending a request to the /v1/edit-pdf/s
{% highlight c# tabtitle="Curl" %}
-curl --location 'http://localhost:8003/v1/conversion/status/9b131bfe-d4eb-4f1d-b946-46443a363eb5' \
+curl --location 'http://localhost:8003/v1/edit-pdf/status/9b131bfe-d4eb-4f1d-b946-46443a363eb5' \
--output Output.pdf
{% endhighlight %}
@@ -133,7 +165,7 @@ fetch("http://localhost:8003/v1/edit-pdf/status/4413bbb5-6b26-4c07-9af2-c26cd2c4
{% highlight c# tabtitle="C#" %}
var client = new HttpClient();
-var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost:8003/v1/conversion/status/ef0766ab-bc74-456c-8143-782e730a89df");
+var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost:8003/v1/edit-pdf/status/ef0766ab-bc74-456c-8143-782e730a89df");
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
diff --git a/Document-Processing/Web-apis/consume-apis/delete-pdf-pages.md b/Document-Processing/Web-apis/consume-apis/delete-pdf-pages.md
index 50a1159245..874253e880 100644
--- a/Document-Processing/Web-apis/consume-apis/delete-pdf-pages.md
+++ b/Document-Processing/Web-apis/consume-apis/delete-pdf-pages.md
@@ -5,9 +5,9 @@ platform: document-processing
control: general
documentation: UG
---
-# How to Delete Pages from a PDF Using Syncfusion API
+# Delete Pages from PDF Using Syncfusion Web API
-This feature allows you to delete pages in a PDF document. To perform this operation, you need to supply a PDF document as input to the Delete Pages API.
+The Syncfusion Delete PDF Pages Web API allows you to remove unwanted pages from a PDF document using a simple, API‑driven workflow. You can delete specific pages or page ranges while preserving the original layout, formatting, and quality of the remaining content. This feature is ideal for refining documents, removing sensitive information, or creating customized PDFs for specific use cases.
## Delete PDF Pages
@@ -88,6 +88,26 @@ Console.WriteLine(await response.Content.ReadAsStringAsync());
{% endtabs %}
+## Delete PDF pages settings
+
+**Password**
+
+Specifies the password required to open and process a protected PDF file.
+
+**PageRanges**
+
+Defines the page ranges to be deleted from the PDF.
+
+**Start**
+
+Specifies the starting page number of the deletion range.
+
+**End**
+
+Specifies the ending page number of the deletion range.
+
+## Delete Pages Job Response
+
Once the request is sent, it will create a job to delete PDF pages and return the job details as follows:
```
@@ -98,7 +118,7 @@ Once the request is sent, it will create a job to delete PDF pages and return th
}
```
-## Poll the status of the Delete Pages Job
+## Check Delete Pages Job Status
Next, you can retrieve the job status by sending a request to the /v1/edit-pdf/status/{jobID} endpoint with the job ID.
@@ -106,7 +126,7 @@ Next, you can retrieve the job status by sending a request to the /v1/edit-pdf/s
{% highlight c# tabtitle="Curl" %}
-curl --location 'http://localhost:8003/v1/conversion/status/9b131bfe-d4eb-4f1d-b946-46443a363eb5' \
+curl --location 'http://localhost:8003/v1/edit-pdf/status/9b131bfe-d4eb-4f1d-b946-46443a363eb5' \
--output Output.pdf
{% endhighlight %}
@@ -128,7 +148,7 @@ fetch("http://localhost:8003/v1/edit-pdf/status/4413bbb5-6b26-4c07-9af2-c26cd2c4
{% highlight c# tabtitle="C#" %}
var client = new HttpClient();
-var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost:8003/v1/conversion/status/ef0766ab-bc74-456c-8143-782e730a89df");
+var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost:8003/v1/edit-pdf/status/ef0766ab-bc74-456c-8143-782e730a89df");
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
diff --git a/Document-Processing/Web-apis/consume-apis/excel-to-pdf.md b/Document-Processing/Web-apis/consume-apis/excel-to-pdf.md
index 36885467ca..bd87410b7c 100644
--- a/Document-Processing/Web-apis/consume-apis/excel-to-pdf.md
+++ b/Document-Processing/Web-apis/consume-apis/excel-to-pdf.md
@@ -5,9 +5,9 @@ platform: document-processing
control: general
documentation: UG
---
-# Guide to Excel to PDF Conversion Using Syncfusion API
+# Converting Excel to PDF Using Syncfusion Web API
-Converting an Excel document to PDF is simple. Customize conversion settings, like accessibility and archiving options, to suit your needs.
+The Syncfusion Excel to PDF Web API allows you to convert Excel workbooks into well‑formatted, high‑quality PDF files while preserving the structure and readability of worksheets. It supports accurate rendering of data such as tables, formulas (as values), charts, images, and multi‑sheet layouts in the resulting PDF. The conversion can be customized with options like accessibility tagging for assistive technologies and PDF/A compliance for long‑term archiving.
## Convert Excel to PDF
@@ -73,6 +73,16 @@ Console.WriteLine(await response.Content.ReadAsStringAsync());
{% endtabs %}
+## Excel to PDF settings
+**Password**
+
+Specifies the password required to open a protected Word document before converting it to PDF.
+
+**PdfCompliance**
+
+Defines the PDF/A compliance level for archival and standards adherence. Supported levels include PDF/A‑1B, PDF/A‑2B, PDF/A‑3B, and PDF/A‑4.
+
+## Excel to PDF Job Response
Once the request is sent, it will create a conversion job to convert the Excel document to PDF and return the job details as follows:
```
@@ -82,7 +92,7 @@ Once the request is sent, it will create a conversion job to convert the Excel d
"createdAt": "2024-05-06T09:39:13.9505828Z"
}
```
-## Poll the status of the Conversion Job
+## Check Excel to PDF Job Status
Next, you can retrieve the job status by sending a request to the /v1/conversion/status/{jobID} endpoint with the job ID.
diff --git a/Document-Processing/Web-apis/consume-apis/flatten-pdf.md b/Document-Processing/Web-apis/consume-apis/flatten-pdf.md
index 6a9c0df12a..c1f44653fc 100644
--- a/Document-Processing/Web-apis/consume-apis/flatten-pdf.md
+++ b/Document-Processing/Web-apis/consume-apis/flatten-pdf.md
@@ -1,15 +1,15 @@
---
-title: Flatten PDF Using Syncfusion Web API
+title: Flatten PDFs Using Syncfusion Web API
description: Flatten annotations, form fields, and signatures to secure PDF content from editing using Syncfusion high‑security flattening Web API.
platform: document-processing
control: general
documentation: UG
---
-# Guide to Flattening PDFs Using Syncfusion API
+# Flattening PDFs Using Syncfusion Web API
-This feature enables you to flatten annotations and form fields in a PDF document. To use this functionality, you need to provide a PDF document as input to the Flatten PDF API.
+The Syncfusion Flatten PDF Web API enables you to permanently embed annotations and form field data into the PDF content. All interactive elements—such as form fields, comments, and highlights—are converted into static, non‑editable content while preserving the document’s appearance. This ensures consistent viewing across devices and makes the PDF suitable for final distribution, archiving, and compliance with workflows.
-## Flatten PDF Document
+## Flatten PDF Documents
To flatten a PDF document, send a request to the /v1/edit-pdf/flatten endpoint with the input PDF and its options as shown below.
@@ -84,6 +84,22 @@ Console.WriteLine(await response.Content.ReadAsStringAsync());
{% endtabs %}
+## Flatten PDFs settings
+
+**Password**
+
+Specifies the password required to open and process a protected PDF file.
+
+**FlattenFormFields**
+
+Converts interactive form fields into static content, making them non‑editable in the output PDF.
+
+**FlattenAnnotations**
+
+Converts annotations (such as comments, highlights, and stamps) into permanent, non‑editable content in the PDF.
+
+## Flatten PDF Job Response
+
Once the request is sent, it will create a flatten job to flatten the PDF and return the job details as follows:
```
@@ -94,7 +110,7 @@ Once the request is sent, it will create a flatten job to flatten the PDF and re
}
```
-## Poll the status of the Flatten Pages Job
+## Check Flatten PDF Job Status
Next, you can retrieve the job status by sending a request to the /v1/edit-pdf/status/{jobID} endpoint with the job ID.
@@ -102,7 +118,7 @@ Next, you can retrieve the job status by sending a request to the /v1/edit-pdf/s
{% highlight c# tabtitle="Curl" %}
-curl --location 'http://localhost:8003/v1/conversion/status/f58c9739-622e-41d4-9dd2-57a901dc13c3' \
+curl --location 'http://localhost:8003/v1/edit-pdf/status/f58c9739-622e-41d4-9dd2-57a901dc13c3' \
--output Output.pdf
--header 'Authorization: Bearer {{Placeholder for token}}'
@@ -125,7 +141,7 @@ fetch("http://localhost:8003/v1/edit-pdf/status/4413bbb5-6b26-4c07-9af2-c26cd2c4
{% highlight c# tabtitle="C#" %}
var client = new HttpClient();
-var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost:8003/v1/conversion/status/ef0766ab-bc74-456c-8143-782e730a89df");
+var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost:8003/v1/edit-pdf/status/ef0766ab-bc74-456c-8143-782e730a89df");
request.Headers.Add("Authorization", "Bearer {{Placeholder for token}}");
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
diff --git a/Document-Processing/Web-apis/consume-apis/html-to-pdf.md b/Document-Processing/Web-apis/consume-apis/html-to-pdf.md
index 5d01eb318f..2ce51a039d 100644
--- a/Document-Processing/Web-apis/consume-apis/html-to-pdf.md
+++ b/Document-Processing/Web-apis/consume-apis/html-to-pdf.md
@@ -5,9 +5,9 @@ platform: document-processing
control: general
documentation: UG
---
-# Guide to Converting HTML to PDF Using Syncfusion API
+# Converting HTML to PDF Using Syncfusion Web API
-With the Syncfusion document processing engine, you can easily convert an HTML template or URL to a PDF document. To convert an HTML template to a PDF document, you need to provide both the HTML template file and its assets.
+The Syncfusion HTML to PDF Web API allows you to convert web content into high‑quality PDF documents. It supports converting both static HTML templates and live web pages via URLs, ensuring accurate rendering of layouts, styles, images, and fonts. When converting an HTML template, you need to provide the main HTML file along with its dependent assets such as CSS files, images, fonts, and scripts, so the engine can fully render the content as it appears in a browser.
## Convert HTML to PDF
@@ -121,6 +121,80 @@ Console.WriteLine(await response.Content.ReadAsStringAsync());
{% endtabs %}
+## HTML to PDF settings
+**PaperSize**
+
+Defines the page size for the generated PDF (e.g., A4, Letter).
+
+**Assets**
+
+Specifies additional resources—such as CSS files, images, and fonts—required for converting HTML templates.
+
+**IndexFile**
+
+Indicates the main HTML file that serves as the entry point for the conversion.
+
+**Settings**
+
+Provides rendering and conversion options for the Blink engine used during HTML to PDF processing.
+
+**RenderingEngine**
+
+Specifies the browser engine used to render HTML content before generating the PDF.
+
+**Url**
+
+Defines the source URL or HTML location to be converted into a PDF.
+
+**Orientation**
+
+Defines the page orientation of the PDF, such as Portrait or Landscape.
+
+**Rotation**
+
+Specifies the rotation angle applied to the pages in the generated PDF.
+
+**Margins**
+
+Configures the margin size for all sides of each PDF page.
+
+**AdditionalDelay**
+
+Adds a wait time (in milliseconds) before conversion to ensure dynamic content fully loads.
+
+**EnableLinks**
+
+Preserves active, clickable hyperlinks within the generated PDF.
+
+**EnableScripts**
+
+Allows JavaScript execution during HTML rendering for dynamic content support.
+
+**EnableForms**
+
+Enables interactive form fields in the generated PDF document.
+
+**EnableToc**
+
+Generates a table of contents based on the HTML document structure.
+
+**EnableBookmarks**
+
+Creates PDF bookmarks for easier navigation within the document.
+
+**SinglePagePdf**
+
+Renders the entire HTML content into one continuous PDF page.
+
+**ShowHeader**
+
+Displays header content on each page of the generated PDF.
+
+**ShowFooter**
+
+Displays footer content on each page of the generated PDF.
+
+## HTML to PDF Job Response
To convert HTML to PDF, send a request to the /v1/conversion/html-to-pdf endpoint, including both the HTML file as input and its assets as follows:
{% tabs %}
@@ -254,7 +328,7 @@ Once the request is sent, it will create a conversion job to convert HTML to PDF
}
```
-## Poll the status of the Conversion Job
+## Check HTML to PDF Job Status
Next, you can retrieve the job status by sending a request to the /v1/conversion/status/{jobID} endpoint with the job ID.
diff --git a/Document-Processing/Web-apis/consume-apis/image-to-pdf.md b/Document-Processing/Web-apis/consume-apis/image-to-pdf.md
index 182ca92f06..ff6b98e3ad 100644
--- a/Document-Processing/Web-apis/consume-apis/image-to-pdf.md
+++ b/Document-Processing/Web-apis/consume-apis/image-to-pdf.md
@@ -5,9 +5,9 @@ platform: document-processing
control: general
documentation: UG
---
-# Guide to Image to PDF Conversion Using Syncfusion API
+# Convert Image to PDF Using Syncfusion Web API
-Converting Image files to PDF is simple. Customize conversion settings, like accessibility and archiving options, to suit your needs.
+The Syncfusion Image to PDF Web API converts one or more images into a single or separate PDF documents. It preserves image quality and layout while supporting accessibility and archival options, making it suitable for sharing, storage, and compliance workflows.
## Convert Image to PDF
@@ -101,6 +101,30 @@ Console.WriteLine(await response.Content.ReadAsStringAsync());
{% endtabs %}
+## Image to PDF settings
+
+**Files**
+
+Specifies the list of image files to be converted into a PDF document. Each image can include its own file name and rotation settings.
+
+**Orientation**
+
+Sets the page orientation of the output PDF, such as Portrait or Landscape.
+
+**Margin**
+
+Specifies the margin size applied around the content on each PDF page.
+
+**EnableSaveAsSeperateFile**
+
+Indicates whether each image should be converted into a separate PDF file instead of combining all images into a single PDF.
+
+**PageSize**
+
+Defines the page size of the output PDF document for image conversion.
+
+## Image to PDF Job Response
+
Once the request is sent, it will create a job to merge PDF documents and return the job details as follows:
```
@@ -111,7 +135,7 @@ Once the request is sent, it will create a job to merge PDF documents and return
}
```
-## Poll the status of the Conversion Job
+## Check Image to PDF Job Status
Next, you can retrieve the job status by sending a request to the /v1/conversion/status/{jobID} endpoint with the job ID.
diff --git a/Document-Processing/Web-apis/consume-apis/merge-pdf.md b/Document-Processing/Web-apis/consume-apis/merge-pdf.md
index 005ecb7658..7d6923ab8d 100644
--- a/Document-Processing/Web-apis/consume-apis/merge-pdf.md
+++ b/Document-Processing/Web-apis/consume-apis/merge-pdf.md
@@ -5,11 +5,11 @@ platform: document-processing
control: general
documentation: UG
---
-# Guide to Merging PDFs Using Syncfusion API
+# Merging PDFs Using Syncfusion WEB API
-You can effortlessly merge one or more PDF documents into a single PDF file. To perform this merge, you need to supply one or more PDF documents as input to the merge PDF document service.
+The Syncfusion Merge PDF Web API allows you to seamlessly combine multiple PDF documents into a single, unified PDF file using a simple and efficient process. By providing the required PDF files as input to the merge PDF document service, the engine preserves the original content, layout, and formatting of each document while arranging them in the specified order.
-## Merge PDF Document
+## Merge PDF Documents
To merge PDF documents, send a request to the /v1/edit-pdf/merge endpoint, including both the PDF files as input and the settings as follows:
@@ -96,6 +96,22 @@ Console.WriteLine(await response.Content.ReadAsStringAsync());
{% endtabs %}
+## Merge PDFs settings
+
+**Files**
+
+Specifies the list of PDF files to be merged into a single document. At least two PDF files are required.
+
+**PreserveBookmarks**
+
+Preserves the original bookmarks from the input PDF files in the merged output document.
+
+**FolderPath**
+
+Specifies the destination folder where the merged PDF file will be saved. If not provided, the output is stored in the default location.
+
+## Merge PDF Job Response
+
Once the request is sent, it will create a job to merge PDF documents and return the job details as follows:
```
@@ -106,7 +122,7 @@ Once the request is sent, it will create a job to merge PDF documents and return
}
```
-## Poll the status of the Merge Job
+## Check Merge PDF Job Status
Next, you can retrieve the job status by sending a request to the /v1/edit-pdf/status/{jobID} endpoint with the job ID.
@@ -114,7 +130,7 @@ Next, you can retrieve the job status by sending a request to the /v1/edit-pdf/s
{% highlight c# tabtitle="Curl" %}
-curl --location 'http://localhost:8003/v1/conversion/status/f58c9739-622e-41d4-9dd2-57a901dc13c3' \
+curl --location 'http://localhost:8003/v1/edit-pdf/status/f58c9739-622e-41d4-9dd2-57a901dc13c3' \
--output Output.pdf
{% endhighlight %}
@@ -136,7 +152,7 @@ fetch("http://localhost:8003/v1/edit-pdf/status/4413bbb5-6b26-4c07-9af2-c26cd2c4
{% highlight c# tabtitle="C#" %}
var client = new HttpClient();
-var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost:8003/v1/conversion/status/ef0766ab-bc74-456c-8143-782e730a89df");
+var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost:8003/v1/edit-pdf/status/ef0766ab-bc74-456c-8143-782e730a89df");
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
diff --git a/Document-Processing/Web-apis/consume-apis/ocr-pdf.md b/Document-Processing/Web-apis/consume-apis/ocr-pdf.md
new file mode 100644
index 0000000000..97260c681c
--- /dev/null
+++ b/Document-Processing/Web-apis/consume-apis/ocr-pdf.md
@@ -0,0 +1,271 @@
+---
+title: OCR PDF Using Syncfusion Web API
+description: Convert scanned or image-based PDFs into searchable, selectable text PDFs using Syncfusion OCR Web API with image-enhancement options.
+control: general
+documentation: UG
+---
+
+# OCR PDFs Using Syncfusion Web API
+
+The Syncfusion OCR Web API converts scanned or image-based PDF documents into fully searchable and selectable text PDFs. It allows you to submit one or multiple PDF files, configure OCR processing options, and retrieve the output through a job-based processing system. The OCR Web API supports multiple languages and includes image-processing enhancements such as grayscale optimization, contrast adjustment, deskewing, denoising, and binarization—to improve text-recognition accuracy through the OCR settings.
+
+## Convert Scanned PDFs to Searchable PDF
+
+To convert scanned PDFs into searchable PDFs, send a POST request to the `/v1/edit-pdf/ocr` endpoint with the input PDF files and OCR settings.
+
+{% tabs %}
+
+{% highlight c# tabtitle="Curl" %}
+
+curl --location 'http://localhost:8003/v1/edit-pdf/ocr' \
+--form 'file1=@Input1.pdf' \
+--form 'file2=@Input2.pdf' \
+--form 'settings="{\
+ \"Files\": [\
+ { \"File\": \"file1\" },\
+ { \"File\": \"file2\" }\
+ ],\
+ \"Language\": \"eng+ara+ell\",\
+ \"isToEnhanceGrayscale\": true,\
+ \"isToEnhanceContrast\": true,\
+ \"isToDeskew\": true,\
+ \"isToDenoise\": true,\
+ \"isToBinarize\": true\
+}"'
+
+{% endhighlight %}
+
+{% highlight javaScript tabtitle="JavaScript" %}
+
+const formdata = new FormData();
+formdata.append("file1", fileInput.files[0], "Input1.pdf");
+formdata.append("file2", fileInput.files[1], "Input2.pdf");
+formdata.append(
+ "settings",
+ JSON.stringify({
+ Files: [
+ { File: "file1" },
+ { File: "file2" }
+ ],
+ Language: "eng+ara+ell",
+ isToEnhanceGrayscale: true,
+ isToEnhanceContrast: true,
+ isToDeskew: true,
+ isToDenoise: true,
+ isToBinarize: true
+ })
+);
+
+const requestOptions = {
+ method: "POST",
+ body: formdata,
+ redirect: "follow"
+};
+
+fetch("http://localhost:8003/v1/edit-pdf/ocr", requestOptions)
+ .then((response) => response.text())
+ .then((result) => console.log(result))
+ .catch((error) => console.error(error));
+
+{% endhighlight %}
+
+{% highlight c# tabtitle="C#" %}
+
+var client = new HttpClient();
+var request = new HttpRequestMessage(HttpMethod.Post, "http://localhost:8003/v1/edit-pdf/ocr");
+var content = new MultipartFormDataContent();
+content.Add(new StreamContent(File.OpenRead("Input1.pdf")), "file1", "Input1.pdf");
+content.Add(new StreamContent(File.OpenRead("Input2.pdf")), "file2", "Input2.pdf");
+var settings = new
+{
+ Files = new[]
+ {
+ new { File = "file1" },
+ new { File = "file2" }
+ },
+ Language = "eng+ara+ell",
+ isToEnhanceGrayscale = true,
+ isToEnhanceContrast = true,
+ isToDeskew = true,
+ isToDenoise = true,
+ isToBinarize = true,
+ Password = (string?)null,
+};
+
+var json = JsonSerializer.Serialize(settings);
+var settingsContent = new StringContent(json, Encoding.UTF8, "application/json");
+content.Add(settingsContent, "settings");
+request.Content = content;
+
+using var response = await client.SendAsync(request);
+response.EnsureSuccessStatusCode();
+Console.WriteLine(await response.Content.ReadAsStringAsync());
+
+{% endhighlight %}
+
+{% endtabs %}
+
+## OCR Settings
+
+**Language**
+
+Specifies one or more OCR recognition languages for accurate text extraction. The OCR Web API supports a predefined set of languages, each identified by a language code. To improve recognition accuracy, specify only the languages that are present in the document.
+
+Multiple languages can be provided by combining their codes using the `+` (plus) separator.
+
+Supported languages:
+
+| Code | Language |
+|---|---|
+| ara | Arabic |
+| aze | Azerbaijani |
+| bul | Bulgarian |
+| cat | Catalan |
+| ces | Czech |
+| chi_sim | Chinese (Simplified) |
+| chi_tra | Chinese (Traditional) |
+| chr | Cherokee |
+| dan | Danish |
+| deu | German |
+| ell | Greek |
+| eng | English |
+| enm | Middle English |
+| epo | Esperanto |
+| est | Estonian |
+| fin | Finnish |
+| fra | French |
+| frm | Middle French |
+| glg | Galician |
+| heb | Hebrew |
+| hin | Hindi |
+| hrv | Croatian |
+| hun | Hungarian |
+| ind | Indonesian |
+| ita | Italian |
+| jpn | Japanese |
+| kor | Korean |
+| lav | Latvian |
+| lit | Lithuanian |
+| nld | Dutch |
+| nor | Norwegian |
+| pol | Polish |
+| por | Portuguese |
+| ron | Romanian |
+| rus | Russian |
+| slk | Slovak |
+| slv | Slovenian |
+| sqi | Albanian |
+| spa | Spanish |
+| srp | Serbian |
+| swe | Swedish |
+| tam | Tamil |
+| tel | Telugu |
+| tha | Thai |
+| tur | Turkish |
+| ukr | Ukrainian |
+| vie | Vietnamese |
+| osd | Orientation and Script Detection |
+
+**isToEnhanceGrayscale**
+
+Converts the image to grayscale to reduce color noise and improve clarity.
+
+**isToEnhanceContrast**
+
+Increases the contrast between text and background for better recognition accuracy.
+
+**isToDeskew**
+
+Automatically detects and corrects tilted or rotated pages to ensure proper text alignment during OCR.
+
+**isToDenoise**
+
+Removes visual noise and artifacts from the image to provide cleaner input for more reliable character recognition.
+
+**isToBinarize**
+
+Converts the image to high contrast black-and-white to isolate text from the background and improve OCR performance.
+
+## OCR PDF Job Response
+
+When the OCR request is submitted, the API creates a background job and returns the job details:
+
+```
+{
+ "jobID": "d69b0ef2-b816-4e3b-bc94-1fb35cdfa5bb",
+ "status": "requested",
+ "createdAt": "2026-03-17T10:11:20Z"
+}
+```
+
+## Check OCR PDF Job Status
+
+Use the `/v1/edit-pdf/status/{jobID}` endpoint to check the job progress or download the final processed PDF.
+
+{% tabs %}
+
+{% highlight c# tabtitle="Curl" %}
+
+curl --location 'http://localhost:8003/v1/edit-pdf/status/f58c9739-622e-41d4-9dd2-57a901dc13c3' \
+ --output Output.pdf
+
+{% endhighlight %}
+
+{% highlight javaScript tabtitle="JavaScript" %}
+
+const requestOptions = {
+ method: "GET",
+ redirect: "follow"
+};
+
+fetch("http://localhost:8003/v1/edit-pdf/status/4413bbb5-6b26-4c07-9af2-c26cd2c42fe3", requestOptions)
+ .then((response) => response.text())
+ .then((result) => console.log(result))
+ .catch((error) => console.error(error));
+
+{% endhighlight %}
+
+{% highlight c# tabtitle="C#" %}
+
+var client = new HttpClient();
+var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost:8003/v1/edit-pdf/status/ef0766ab-bc74-456c-8143-782e730a89df");
+var response = await client.SendAsync(request);
+response.EnsureSuccessStatusCode();
+Console.WriteLine(await response.Content.ReadAsStringAsync());
+
+{% endhighlight %}
+
+{% endtabs %}
+
+You will receive one of the following statuses until the job is completed. Upon completion, you will receive the actual output file.
+
+**Job Statuses:**
+
+- Queued:
+
+```
+{
+ "jobID": "4b2782b2-9f08-478b-98fc-4464bd219ca0",
+ "status": "queued"
+}
+```
+- In Progress:
+
+```
+{
+ "jobID": "ef0766ab-bc74-456c-8143-782e730a89df",
+ "status": "in progress"
+}
+```
+- Error:
+
+```
+{
+ "jobID": "ef0766ab-bc74-456c-8143-782e730a89df",
+ "status": "error",
+ "code": "500",
+ "message": "Failed to process OCR"
+}
+```
+
+N> The Syncfusion Document Processing API is available as a Docker-based solution. [Try it out](https://hub.docker.com/r/syncfusion/document-processing-apis)
diff --git a/Document-Processing/Web-apis/consume-apis/organize-pdf.md b/Document-Processing/Web-apis/consume-apis/organize-pdf.md
index 86af8c2145..5487488e09 100644
--- a/Document-Processing/Web-apis/consume-apis/organize-pdf.md
+++ b/Document-Processing/Web-apis/consume-apis/organize-pdf.md
@@ -6,9 +6,9 @@ control: general
documentation: UG
---
-# Guide to Organizing PDFs Using Syncfusion API
+# Organize PDF Using Syncfusion Web API
-You can manipulate the structure and content of PDF documents by rearranging, rotating, deleting, or inserting blank pages. To perform these operations, send your PDF files along with the appropriate settings to the Organize PDF service.
+The Syncfusion Organize PDF Web API enables you to restructure PDF documents by rearranging pages, rotating pages, deleting content, or inserting blank pages. These operations preserve content quality while allowing flexible document customization for review, presentation, or distribution.
## Organize PDF Document
@@ -178,6 +178,38 @@ Console.WriteLine(await response.Content.ReadAsStringAsync());
{% endtabs %}
+## Organize PDF settings
+
+**Files**
+
+Specifies one or more PDF files, including optional passwords and page operations.
+
+**SortedPageNumbers**
+
+Defines the new order of pages after organizing by specifying the sequence of page numbers.
+
+**PageDetails**
+
+Specifies page‑level operations such as rotation and blank page insertion for individual pages.
+
+**Rotation**
+
+Defines the rotation angle applied to the selected page.
+
+**HasEmptyPageBefore**
+
+Inserts a blank page before the specified page.
+
+**HasEmptyPageAfter**
+
+Inserts a blank page after the specified page.
+
+**PageNumber**
+
+Specifies the 1‑based page number to which the page operations apply.
+
+## Organize PDF Job Response
+
After submitting the request, a job is created to organize the PDF and the following job details are returned:
```
@@ -188,7 +220,7 @@ After submitting the request, a job is created to organize the PDF and the follo
}
```
-## Poll the status of the Organize Job
+## Check Organize PDF Job Status
Next, you can retrieve the job status by sending a request to the /v1/edit-pdf/status/{jobID} endpoint with the job ID.
@@ -196,7 +228,7 @@ Next, you can retrieve the job status by sending a request to the /v1/edit-pdf/s
{% highlight c# tabtitle="Curl" %}
-curl --location 'http://localhost:8003/v1/conversion/status/f58c9739-622e-41d4-9dd2-57a901dc13c3' \
+curl --location 'http://localhost:8003/v1/edit-pdf/status/f58c9739-622e-41d4-9dd2-57a901dc13c3' \
--output Output.pdf
{% endhighlight %}
@@ -218,7 +250,7 @@ fetch("http://localhost:8003/v1/edit-pdf/status/4413bbb5-6b26-4c07-9af2-c26cd2c4
{% highlight c# tabtitle="C#" %}
var client = new HttpClient();
-var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost:8003/v1/conversion/status/ef0766ab-bc74-456c-8143-782e730a89df");
+var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost:8003/v1/edit-pdf/status/ef0766ab-bc74-456c-8143-782e730a89df");
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
diff --git a/Document-Processing/Web-apis/consume-apis/pdf-to-image.md b/Document-Processing/Web-apis/consume-apis/pdf-to-image.md
index 0b0adcff4c..f687f3a9a8 100644
--- a/Document-Processing/Web-apis/consume-apis/pdf-to-image.md
+++ b/Document-Processing/Web-apis/consume-apis/pdf-to-image.md
@@ -5,9 +5,9 @@ platform: document-processing
control: general
documentation: UG
---
-# Guide to PDF to Image Conversion Using Syncfusion API
+# Convert PDF to Image Using Syncfusion Web API
-Converting an PDF document to Images is simple. Customize conversion settings, like accessibility and archiving options, to suit your needs.
+The Syncfusion PDF to Image Web API converts PDF pages into high‑quality image formats such as PNG, JPEG, and WebP. It accurately renders each page while preserving layout and clarity, making it ideal for previews, web display, and image‑based workflows.
## Convert PDF to Image
@@ -81,6 +81,18 @@ Console.WriteLine(await response.Content.ReadAsStringAsync());
{% endtabs %}
+## PDF to Image settings
+
+**Password**
+
+Specifies the password required to open and process a protected PDF document.
+
+**ImageFormat**
+
+Defines the output image format for the converted pages, such as JPG, PNG, or WEBP.
+
+## PDF to Image Job Response
+
Once the request is sent, it will create a conversion job to convert the PDF to Images and return the job details as follows:
```
@@ -90,7 +102,7 @@ Once the request is sent, it will create a conversion job to convert the PDF to
"createdAt": "2024-05-06T09:39:13.9505828Z"
}
```
-## Poll the status of the Conversion Job
+## Check PDF to Image Job Status
Next, you can retrieve the job status by sending a request to the /v1/conversion/status/{jobID} endpoint with the job ID.
diff --git a/Document-Processing/Web-apis/consume-apis/powerpoint-to-pdf.md b/Document-Processing/Web-apis/consume-apis/powerpoint-to-pdf.md
index e4ce0ec2b1..cec088437f 100644
--- a/Document-Processing/Web-apis/consume-apis/powerpoint-to-pdf.md
+++ b/Document-Processing/Web-apis/consume-apis/powerpoint-to-pdf.md
@@ -5,9 +5,9 @@ platform: document-processing
control: general
documentation: UG
---
-# Guide to Converting PowerPoint to PDF Using Syncfusion API
+# Converting PowerPoint to PDF Using Syncfusion Web API
-Converting a PowerPoint document to PDF is simple. Customize conversion settings, like accessibility and archiving options, to suit your needs.
+The syncfusion PowerPoint to PDF Web API enables you to convert presentation files into polished, high‑quality PDF documents while preserving slide layouts, fonts, images, charts, and visual effects. Each slide is accurately rendered as a PDF page, ensuring consistent appearance across devices and platforms. The conversion supports customization options such as accessibility tagging for screen readers and PDF/A compliance for long‑term archiving.
## Convert PowerPoint to PDF
@@ -82,6 +82,20 @@ Console.WriteLine(await response.Content.ReadAsStringAsync());
{% endtabs %}
+## PowerPoint to PDF settings
+**Password**
+
+Specifies the password required to open a protected Word document before converting it to PDF.
+
+**PdfCompliance**
+
+Defines the PDF/A compliance level for archival and standards adherence. Supported levels include PDF/A‑1B, PDF/A‑2B, PDF/A‑3B, and PDF/A‑4.
+
+**EnableAccessibility**
+
+Applies accessibility tags to the PDF to improve compatibility with screen readers and assistive technologies.
+
+## Presentation to PDF Job Response
Once the request is sent, it will create a conversion job to convert the PowerPoint to PDF and return the job details as follows:
```
@@ -92,7 +106,7 @@ Once the request is sent, it will create a conversion job to convert the PowerPo
}
```
-## Poll the status of the Conversion Job
+## Check Presentation to PDF Job Status
Next, you can retrieve the job status by sending a request to the /v1/conversion/status/{jobID} endpoint with the job ID.
diff --git a/Document-Processing/Web-apis/consume-apis/protect-pdf.md b/Document-Processing/Web-apis/consume-apis/protect-pdf.md
index f81d796062..85edd4ea30 100644
--- a/Document-Processing/Web-apis/consume-apis/protect-pdf.md
+++ b/Document-Processing/Web-apis/consume-apis/protect-pdf.md
@@ -5,9 +5,9 @@ platform: document-processing
control: general
documentation: UG
---
-# Guide to Protecting PDFs Using Syncfusion API
+# Protect PDF Using Syncfusion Web API
-This feature enables you to protect a PDF document. To use this functionality, you need to provide a PDF document as input to the Protect PDF API.
+The Syncfusion Protect PDF Web API secures PDF documents by applying password protection and usage restrictions. You can control permissions such as editing, copying, and printing while preserving the original document quality. This ensures sensitive information remains protected during secure sharing.
## Protecting PDF Document
@@ -76,6 +76,18 @@ Console.WriteLine(await response.Content.ReadAsStringAsync());
{% endtabs %}
+## Protect PDF settings
+
+**File**
+
+Specifies the unique identifier of the uploaded PDF document that needs to be protected.
+
+**Password**
+
+Defines the user password used to protect the PDF document and restrict unauthorized access.
+
+## Protect PDF Job Response
+
Once the request is sent, it will create a protect job to protect the PDF and return the job details as follows:
```
@@ -86,7 +98,7 @@ Once the request is sent, it will create a protect job to protect the PDF and re
}
```
-## Poll the status of the Protect Job
+## Check Protect PDF Job Status
Next, you can retrieve the job status by sending a request to the /v1/edit-pdf/status/{jobID} endpoint with the job ID.
@@ -94,7 +106,7 @@ Next, you can retrieve the job status by sending a request to the /v1/edit-pdf/s
{% highlight c# tabtitle="Curl" %}
-curl --location 'http://localhost:8003/v1/conversion/status/ef0766ab-bc74-456c-8143-782e730a89df' \
+curl --location 'http://localhost:8003/v1/edit-pdf/status/ef0766ab-bc74-456c-8143-782e730a89df' \
--header 'Authorization: Bearer {{Placeholder for token}}'
{% endhighlight %}
@@ -116,7 +128,7 @@ fetch("http://localhost:8003/v1/edit-pdf/status/4413bbb5-6b26-4c07-9af2-c26cd2c4
{% highlight c# tabtitle="C#" %}
var client = new HttpClient();
-var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost:8003/v1/conversion/status/ef0766ab-bc74-456c-8143-782e730a89df");
+var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost:8003/v1/edit-pdf/status/ef0766ab-bc74-456c-8143-782e730a89df");
request.Headers.Add("Authorization", "Bearer {{Placeholder for token}}");
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
diff --git a/Document-Processing/Web-apis/consume-apis/rotate-pdf-pages.md b/Document-Processing/Web-apis/consume-apis/rotate-pdf-pages.md
index f53118c6c8..f957ab041b 100644
--- a/Document-Processing/Web-apis/consume-apis/rotate-pdf-pages.md
+++ b/Document-Processing/Web-apis/consume-apis/rotate-pdf-pages.md
@@ -5,9 +5,9 @@ platform: document-processing
control: general
documentation: UG
---
-# Guide to Rotating PDF Pages Using Syncfusion API
+# Rotate PDF Pages Using Syncfusion WEB API
-This feature allows you to rotate pages in a PDF document. To perform this operation, you need to supply a PDF document as input to the Rotate Pages API.
+The Syncfusion Rotate PDF Web API lets you change the orientation of pages within a PDF quickly and accurately. By submitting a PDF to the API, you can rotate selected pages or the entire document to any desired angle while preserving the original content, layout, and quality. This feature is especially helpful for fixing incorrectly scanned pages or improving the readability and presentation of PDF documents.
## Rotate PDF Pages
@@ -98,6 +98,31 @@ Console.WriteLine(await response.Content.ReadAsStringAsync());
{% endtabs %}
+## Rotate PDF pages settings
+
+**RotationAngle**
+
+Specifies the angle (in degrees) by which the selected pages in the PDF should be rotated.
+Supported values are 0, 90, 180, and 270.
+
+**Password**
+
+Specifies the password required to open and process a protected PDF file.
+
+**PageRanges**
+
+Specifies the page ranges within the PDF that should be rotated.
+
+**Start**
+
+Specifies the starting page number of the range to be rotated.
+
+**End**
+
+Specifies the ending page number of the range to be rotated.
+
+## Rotate PDF Job Response
+
Once the request is sent, it will create a job to rotate PDF pages and return the job details as follows:
```
@@ -108,7 +133,7 @@ Once the request is sent, it will create a job to rotate PDF pages and return th
}
```
-## Poll the status of the Rotate Pages Job
+## Check Rotate PDF Job Status
Next, you can retrieve the job status by sending a request to the /v1/edit-pdf/status/{jobID} endpoint with the job ID.
@@ -116,7 +141,7 @@ Next, you can retrieve the job status by sending a request to the /v1/edit-pdf/s
{% highlight c# tabtitle="Curl" %}
-curl --location 'http://localhost:8003/v1/conversion/status/f58c9739-622e-41d4-9dd2-57a901dc13c3' \
+curl --location 'http://localhost:8003/v1/edit-pdf/status/f58c9739-622e-41d4-9dd2-57a901dc13c3' \
--output Output.pdf
{% endhighlight %}
@@ -138,7 +163,7 @@ fetch("http://localhost:8003/v1/edit-pdf/status/4413bbb5-6b26-4c07-9af2-c26cd2c4
{% highlight c# tabtitle="C#" %}
var client = new HttpClient();
-var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost:8003/v1/conversion/status/ef0766ab-bc74-456c-8143-782e730a89df");
+var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost:8003/v1/edit-pdf/status/ef0766ab-bc74-456c-8143-782e730a89df");
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
diff --git a/Document-Processing/Web-apis/consume-apis/split-pdf.md b/Document-Processing/Web-apis/consume-apis/split-pdf.md
index a4e34486ae..911c410647 100644
--- a/Document-Processing/Web-apis/consume-apis/split-pdf.md
+++ b/Document-Processing/Web-apis/consume-apis/split-pdf.md
@@ -5,11 +5,11 @@ platform: document-processing
control: general
documentation: UG
---
-# Guide to Splitting PDFs Using Syncfusion API
+# Splitting PDFs Using Syncfusion WEB API
-You can effortlessly split PDF documents into multiple PDF files. To perform this operation, you need to supply a PDF document as input to the Split PDF API.
+The Syncfusion Split PDF Web API makes it easy to split a PDF into multiple smaller files. You can extract single pages or specific page ranges while preserving the document’s original layout and quality. This feature is ideal for separating important sections, sharing only the needed pages, or organizing large PDFs into more manageable files. It helps simplify document handling and improves distribution efficiency.
-## Merge PDF Document
+## Split PDF Document
To split a PDF file, send a request to the /v1/edit-pdf/split endpoint with a PDF document and split options as shown below.
@@ -84,6 +84,54 @@ Console.WriteLine(await response.Content.ReadAsStringAsync());
{% endtabs %}
+## Split PDFs settings
+
+**File**
+
+Specifies the input PDF file that will be split into multiple documents.
+
+**Password**
+
+Specifies the password required to open and process a protected PDF file.
+
+**SplitOption**
+
+Defines the method and rules used to split the input PDF file.
+
+**FileCount**
+
+Specifies the number of output PDF files to create by evenly splitting the input document.
+
+**PageCount**
+
+Specifies the number of pages per output PDF file during the split process.
+
+**PageRanges**
+
+Specifies custom page ranges to split the input PDF into multiple documents.
+
+**ExtractRanges**
+
+Specifies specific pages or page groups to extract from the input PDF.
+
+**Start**
+
+Specifies the starting page number of the range to be split.
+
+**End**
+
+Specifies the ending page number of the range to be split.
+
+**ExtractPages**
+
+Specifies the pages to extract using page numbers or ranges (for example, 1,3,5‑7).
+
+**DownloadAsSinglePdf**
+
+Indicates whether the extracted pages should be combined into a single PDF file or saved as separate files.
+
+## Split PDF Job Response
+
Once the request is sent, it will create a job to split the PDF document and return the job details as follows:
```
@@ -94,7 +142,7 @@ Once the request is sent, it will create a job to split the PDF document and ret
}
```
-## Poll the status of the Split Job
+## Check Split PDF Job Status
Next, you can retrieve the job status by sending a request to the /v1/edit-pdf/status/{jobID} endpoint with the job ID.
@@ -102,7 +150,7 @@ Next, you can retrieve the job status by sending a request to the /v1/edit-pdf/s
{% highlight c# tabtitle="Curl" %}
-curl --location 'http://localhost:8003/v1/conversion/status/f58c9739-622e-41d4-9dd2-57a901dc13c3' \
+curl --location 'http://localhost:8003/v1/edit-pdf/status/f58c9739-622e-41d4-9dd2-57a901dc13c3' \
--output Output.pdf
{% endhighlight %}
@@ -124,7 +172,7 @@ fetch("http://localhost:8003/v1/edit-pdf/status/4413bbb5-6b26-4c07-9af2-c26cd2c4
{% highlight c# tabtitle="C#" %}
var client = new HttpClient();
-var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost:8003/v1/conversion/status/ef0766ab-bc74-456c-8143-782e730a89df");
+var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost:8003/v1/edit-pdf/status/ef0766ab-bc74-456c-8143-782e730a89df");
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
diff --git a/Document-Processing/Web-apis/consume-apis/unlock-pdf.md b/Document-Processing/Web-apis/consume-apis/unlock-pdf.md
index 691d40f7ac..1d4f687d12 100644
--- a/Document-Processing/Web-apis/consume-apis/unlock-pdf.md
+++ b/Document-Processing/Web-apis/consume-apis/unlock-pdf.md
@@ -4,9 +4,9 @@ description: Remove password protection from authorized PDFs securely using Sync
control: general
documentation: UG
---
-# Guide to Unlocking PDFs Using Syncfusion API
+# Unlock PDF Using Syncfusion Web API
-This feature enables you to unlock a PDF document. To use this functionality, you need to provide a PDF document as input to the Unlock PDF API.
+The Syncfusion Unlock PDF Web API removes password protection from secured PDF documents through a straightforward process. By providing the correct password, you can restore full access to the document, including editing, copying, and printing.
## Unlocking PDF Document
@@ -75,6 +75,18 @@ Console.WriteLine(await response.Content.ReadAsStringAsync());
{% endtabs %}
+## Unlock PDF settings
+
+**File**
+
+Specifies the input PDF file that needs to be unlocked or unprotected.
+
+**Password**
+
+Specifies the password required to open and unlock the protected PDF file.
+
+## Unlock PDF Job Response
+
Once the request is sent, it will create a unlock job to unlock the PDF and return the job details as follows:
```
@@ -85,7 +97,7 @@ Once the request is sent, it will create a unlock job to unlock the PDF and retu
}
```
-## Poll the status of the Unlock Job
+## Check Unlock PDF Job Status
Next, you can retrieve the job status by sending a request to the /v1/edit-pdf/status/{jobID} endpoint with the job ID.
@@ -93,7 +105,7 @@ Next, you can retrieve the job status by sending a request to the /v1/edit-pdf/s
{% highlight c# tabtitle="Curl" %}
-curl --location 'http://localhost:8003/v1/conversion/status/f58c9739-622e-41d4-9dd2-57a901dc13c3' \
+curl --location 'http://localhost:8003/v1/edit-pdf/status/f58c9739-622e-41d4-9dd2-57a901dc13c3' \
--output Output.pdf
--header 'Authorization: Bearer {{Placeholder for token}}'
@@ -117,7 +129,7 @@ fetch("http://localhost:8003/v1/edit-pdf/status/4413bbb5-6b26-4c07-9af2-c26cd2c4
{% highlight c# tabtitle="C#" %}
var client = new HttpClient();
-var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost:8003/v1/conversion/status/ef0766ab-bc74-456c-8143-782e730a89df");
+var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost:8003/v1/edit-pdf/status/ef0766ab-bc74-456c-8143-782e730a89df");
request.Headers.Add("Authorization", "Bearer {{Placeholder for token}}");
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
diff --git a/Document-Processing/Web-apis/consume-apis/word-to-pdf.md b/Document-Processing/Web-apis/consume-apis/word-to-pdf.md
index aa77dd55e2..9ef34601d4 100644
--- a/Document-Processing/Web-apis/consume-apis/word-to-pdf.md
+++ b/Document-Processing/Web-apis/consume-apis/word-to-pdf.md
@@ -5,9 +5,9 @@ platform: document-processing
control: general
documentation: UG
---
-# Guide to Converting Word to PDF Using Syncfusion API
+# Converting Word to PDF Using Syncfusion Web API
-Converting a Word document to PDF is simple with support for .doc, .docx, and .rtf formats. Customize conversion settings, like accessibility and archiving options, to suit your needs.
+The Syncfusion Word to PDF Web API allows you to transform Word documents into high‑quality PDF files while preserving the original layout, formatting, and content accuracy. It supports .doc, .docx, and .rtf formats and ensures accurate rendering of text, images, tables, and styles. The conversion process can be customized with options such as accessibility tagging and PDF/A archival compliance, making the output suitable for inclusive access and long‑term preservation.
## Convert Word to PDF
@@ -83,6 +83,25 @@ Console.WriteLine(await response.Content.ReadAsStringAsync());
{% endhighlight %}
{% endtabs %}
+## Word to PDF settings
+
+**Password**
+
+Specifies the password required to open a protected Word document before conversion.
+
+**PreserveFormFields**
+
+Retains form fields—such as text boxes, checkboxes, and dropdowns—so they remain interactive in the converted PDF.
+
+**PdfCompliance**
+
+Defines the PDF/A compliance level for archival and standards adherence. Supported levels include PDF/A‑1B, PDF/A‑2B, PDF/A‑3B, and PDF/A‑4.
+
+**EnableAccessibility**
+
+Applies accessibility tags to the PDF to improve compatibility with screen readers and assistive technologies.
+
+## Word to PDF Job Response
Once the request is sent, it will create a conversion job to convert the Word document to PDF and return the job details as follows:
@@ -94,7 +113,7 @@ Once the request is sent, it will create a conversion job to convert the Word do
}
```
-## Poll the status of the Conversion Job
+## Check Word to PDF Job Status
Next, you can retrieve the job status by sending a request to the /v1/conversion/status/{jobID} endpoint with the job ID.
diff --git a/Document-Processing/Web-apis/consume-apis/xps-to-pdf.md b/Document-Processing/Web-apis/consume-apis/xps-to-pdf.md
index 69d5daea28..56b736df7e 100644
--- a/Document-Processing/Web-apis/consume-apis/xps-to-pdf.md
+++ b/Document-Processing/Web-apis/consume-apis/xps-to-pdf.md
@@ -1,13 +1,13 @@
---
-title: Convert XPS to PDF Using Syncfusion Web API
+title: Convert XPS to PDF Using Syncfusion Web API
description: Convert XPS documents into searchable, printed PDF files with accurate rendering using Syncfusion XPS conversion Web API.
platform: document-processing
control: general
documentation: UG
---
-# Guide to XPS to PDF Conversion Using Syncfusion API
+# Converting XPS to PDF Using Syncfusion Web API
-Converting an XPS document to PDF is simple. Customize conversion settings, like accessibility and archiving options, to suit your needs.
+The Syncfusion XPS to PDF Web API converts XPS documents into standard PDF files using a simple and customizable process. It supports accessibility and archival options for compliance and long‑term storage.
## Convert XPS to PDF
@@ -72,6 +72,14 @@ Console.WriteLine(await response.Content.ReadAsStringAsync());
{% endtabs %}
+## XPS to PDF settings
+
+**File**
+
+Specifies the input XPS document that will be converted into a PDF file.
+
+## XPS to PDF Job Response
+
Once the request is sent, it will create a conversion job to convert the XPS document to PDF and return the job details as follows:
```
@@ -81,7 +89,7 @@ Once the request is sent, it will create a conversion job to convert the XPS doc
"createdAt": "2024-05-06T09:39:13.9505828Z"
}
```
-## Poll the status of the Conversion Job
+## Check XPS to PDF Job Status
Next, you can retrieve the job status by sending a request to the /v1/conversion/status/{jobID} endpoint with the job ID.
diff --git a/Document-Processing/Word/Word-Library/NET/Ink_images/Ink-tab.png b/Document-Processing/Word/Word-Library/NET/Ink_images/Ink-tab.png
deleted file mode 100644
index a78588470e..0000000000
Binary files a/Document-Processing/Word/Word-Library/NET/Ink_images/Ink-tab.png and /dev/null differ
diff --git a/Document-Processing/Word/Word-Library/NET/Working-with-Ink.md b/Document-Processing/Word/Word-Library/NET/Working-with-Ink.md
index f1a903bf98..d10db85883 100644
--- a/Document-Processing/Word/Word-Library/NET/Working-with-Ink.md
+++ b/Document-Processing/Word/Word-Library/NET/Working-with-Ink.md
@@ -11,16 +11,13 @@ An Ink annotation is a freehand drawing or handwritten input composed of stroke
N> DocIO supports Ink only in DOCX format documents.
-You can insert Ink elements in the document by using the drawing tools available under the **Draw** tab in Word.
-
-
## Create Ink
The following code example illustrating how to create an Ink in a Word document.
{% tabs %}
-{% highlight c# tabtitle="C# [Cross-platform]" %}
+{% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/DocIO-Examples/refs/heads/main/Ink/Create-ink/.NET/Create-ink/Program.cs" %}
//Creates a new Word document.
WordDocument document = new WordDocument();
@@ -128,13 +125,15 @@ document.Close()
By running the above code, you will generate a a document with **Ink elements** as shown below.

+You can download a complete working sample from [GitHub](https://github.com/SyncfusionExamples/DocIO-Examples/tree/main/Ink/Create-ink/.NET/).
+
## Create Ink with Multiple Traces
The following code example illustrating how to create an Ink with Multiple Traces (strokes) in a Word document.
{% tabs %}
-{% highlight c# tabtitle="C# [Cross-platform]" %}
+{% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/DocIO-Examples/refs/heads/main/Ink/Create-ink-with-multipletraces/.NET/Create-ink-with-multipletraces/Program.cs" %}
//Creates a new Word document.
WordDocument document = new WordDocument();
@@ -250,6 +249,8 @@ document.Close()
By running the above code, you will generate an **Ink with multiple trace points** as shown below.

+You can download a complete working sample from [GitHub](https://github.com/SyncfusionExamples/DocIO-Examples/tree/main/Ink/Create-ink-with-multipletraces/.NET/).
+
The following code example shows GetPoints method which is used to get trace points.
{% tabs %}
@@ -377,7 +378,7 @@ The following code example demonstrates how to customize the Ink Effect.
{% tabs %}
-{% highlight c# tabtitle="C# [Cross-platform]" %}
+{% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/DocIO-Examples/refs/heads/main/Ink/Modify-ink-effect/.NET/Modify-ink-effect/Program.cs" %}
//Opens the template document
FileStream fileStreamPath = new FileStream("Template.docx", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
@@ -439,13 +440,15 @@ document.Close()
By running the above code, you will generate a **Modified ink effect** as shown below.

+You can download a complete working sample from [GitHub](https://github.com/SyncfusionExamples/DocIO-Examples/tree/main/Ink/Modify-ink-effect/.NET/).
+
### Modify Ink Color
The following code example demonstrates how to customize the Ink Color.
{% tabs %}
-{% highlight c# tabtitle="C# [Cross-platform]" %}
+{% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/DocIO-Examples/refs/heads/main/Ink/Modify-ink-color/.NET/Modify_ink_color/Program.cs" %}
//Opens the template document
FileStream fileStreamPath = new FileStream("Template.docx", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
@@ -509,13 +512,15 @@ document.Close()
By running the above code, you will generate a **Modified ink color** as shown below.

+You can download a complete working sample from [GitHub](https://github.com/SyncfusionExamples/DocIO-Examples/tree/main/Ink/Modify-ink-color/.NET/).
+
### Modify Ink Thickness
The following code example demonstrates how to customize the Ink thickness.
{% tabs %}
-{% highlight c# tabtitle="C# [Cross-platform]" %}
+{% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/DocIO-Examples/refs/heads/main/Ink/Modify-ink-thickness/.NET/Modify-ink-thickness/Program.cs" %}
//Opens the template document
FileStream fileStreamPath = new FileStream("Template.docx", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
@@ -579,13 +584,15 @@ document.Close()
By running the above code, you will generate a **Modified ink thickness** as shown below.

+You can download a complete working sample from [GitHub](https://github.com/SyncfusionExamples/DocIO-Examples/tree/main/Ink/Modify-ink-thickness/.NET/).
+
### Modify Ink Points
The following code example demonstrates how to customize the Ink Points.
{% tabs %}
-{% highlight c# tabtitle="C# [Cross-platform]" %}
+{% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/DocIO-Examples/refs/heads/main/Ink/Modify-ink-points/.NET/Modify-ink-Points/Program.cs" %}
//Opens the template document
FileStream fileStreamPath = new FileStream("Template.docx", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
@@ -649,13 +656,15 @@ document.Close()
By running the above code, you will generate **modified ink points** as shown below.

+You can download a complete working sample from [GitHub](https://github.com/SyncfusionExamples/DocIO-Examples/tree/main/Ink/Modify-ink-points/.NET/).
+
## Remove Ink
You can remove ink by iterating through Ink objects or specifying an index. The following code example demonstrates how to remove the Ink.
{% tabs %}
-{% highlight c# tabtitle="C# [Cross-platform]" %}
+{% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/DocIO-Examples/refs/heads/main/Ink/Remove-ink/.NET/Remove_ink/Program.cs" %}
//Opens the template document
FileStream fileStreamPath = new FileStream("Template.docx", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
@@ -730,6 +739,8 @@ document.Close()
By running the above code, you will generate a **Remove Ink** as shown below.

+
+You can download a complete working sample from [GitHub](https://github.com/SyncfusionExamples/DocIO-Examples/tree/main/Ink/Remove-ink/.NET/).
## Limitations
@@ -758,3 +769,8 @@ During Word-to-PDF and Word-to-Image conversions, Syncfusion Word Library uses f
* [How Trace Points Are Calculated?](https://help.syncfusion.com/document-processing/word/word-library/net/faqs/paragraph-and-paragraph-items-faqs#how-trace-points-are-calculated)
* [Example: Triangle Ink Trace Points](https://help.syncfusion.com/document-processing/word/word-library/net/faqs/paragraph-and-paragraph-items-faqs#example:-triangle-ink-trace-points)
* [How to Set Stroke Thickness?](https://help.syncfusion.com/document-processing/word/word-library/net/faqs/paragraph-and-paragraph-items-faqs#how-to-set-stroke-thickness)
+
+## Online Demo
+
+* Explore how to create a Word document with Ink using the .NET Word Library (DocIO) in a live demo [here](https://document.syncfusion.com/demos/word/createink#/tailwind).
+* Explore how to edit a Word document with Ink using the .NET Word Library (DocIO) in a live demo [here](https://document.syncfusion.com/demos/word/editink#/tailwind).