diff --git a/Document-Processing/Data-Extraction/Smart-Data-Extractor/NET/Assemblies-Required.md b/Document-Processing/Data-Extraction/Smart-Data-Extractor/NET/Assemblies-Required.md
new file mode 100644
index 0000000000..727e90533f
--- /dev/null
+++ b/Document-Processing/Data-Extraction/Smart-Data-Extractor/NET/Assemblies-Required.md
@@ -0,0 +1,72 @@
+---
+title: Assemblies required for SmartDataExtractor | Syncfusion
+description: This section details the Syncfusion assemblies required to configure and run Smart Data Extractor seamlessly in .NET projects.
+platform: document-processing
+control: SmartDataExtractor
+documentation: UG
+keywords: Assemblies
+---
+# Assemblies Required to work with Smart Data Extractor
+
+The following assemblies need to be referenced in your application based on the platform.
+
+
+
+
diff --git a/Document-Processing/Data-Extraction/Smart-Data-Extractor/NET/FAQ/how-to-resolve-the-onnx-file-missing-error-in-smart-data-extractor.md b/Document-Processing/Data-Extraction/Smart-Data-Extractor/NET/FAQ/how-to-resolve-the-onnx-file-missing-error-in-smart-data-extractor.md
new file mode 100644
index 0000000000..945888eecc
--- /dev/null
+++ b/Document-Processing/Data-Extraction/Smart-Data-Extractor/NET/FAQ/how-to-resolve-the-onnx-file-missing-error-in-smart-data-extractor.md
@@ -0,0 +1,37 @@
+---
+title: FAQ for SmartDataExtractor | Syncfusion
+description: This section provides answers to frequently asked questions about Syncfusion Smart Data Extractor, helping users resolve common issues.
+platform: document-processing
+control: SmartDataExtractor
+documentation: UG
+keywords: Assemblies
+---
+
+# How to resolve the “ONNX file missing” error in Smart Data Extractor
+
+Problem:
+
+When running Smart Data Extractor you may see an exception similar to the following:
+
+```
+Microsoft.ML.OnnxRuntime.OnnxRuntimeException: '[ErrorCode:NoSuchFile] Load model from \runtimes\models\syncfusion_doclayout.onnx failed. File doesn't exist'
+```
+
+Cause:
+
+This error occurs because the required ONNX model files (used internally for layout and data extraction) are not present in the application's build output (the project's `bin` runtime folder). The extractor expects the models under `runtimes\models` so the runtime can load them.
+
+Solution:
+
+1. Run a build so the application output is generated under `bin\Debug\netX.X\runtimes` (or your configured build configuration and target framework).
+2. Locate the project's build output `bin` path (for example: `bin\Debug\net6.0\runtimes`).
+3. Place all required ONNX model files into a `runtimes\models` folder inside that bin path.
+4. In Visual Studio, for each ONNX file set **Properties → Copy to Output Directory → Copy always** so the model is included on every build.
+5. Rebuild and run your project. The extractor should now find the ONNX models and operate correctly.
+
+Notes:
+
+- If you publish your application, ensure the `runtimes\models` folder and ONNX files are included in the publish output (you may need to mark files as content in the project file or use a entry).
+- If you prefer an automated approach, add the ONNX files to your project with `CopyToOutputDirectory` set, or create a post-build step to copy the models into the runtime folder.
+
+If the problem persists after adding the model files, verify file permissions and the correctness of the model file names.
\ No newline at end of file
diff --git a/Document-Processing/Data-Extraction/Smart-Data-Extractor/NET/Features.md b/Document-Processing/Data-Extraction/Smart-Data-Extractor/NET/Features.md
new file mode 100644
index 0000000000..cdf3361aac
--- /dev/null
+++ b/Document-Processing/Data-Extraction/Smart-Data-Extractor/NET/Features.md
@@ -0,0 +1,532 @@
+---
+title: Features of Smart data Extractor | Syncfusion
+description: Discover the key features of Syncfusion Smart Data Extractor, a .NET library for extracting tables, forms, text, and images.
+platform: document-processing
+control: SmartDataExtractor
+documentation: UG
+keywords: Assemblies
+---
+
+# Smart Data Extractor Features
+
+## Extract data from a PDF document
+
+To extract structured data such as text, form fields, tables and images from an entire PDF document using the **ExtractDataAsPdfDocument** method of the **DataExtractor** class, refer to the following code
+
+{% tabs %}
+
+{% highlight c# tabtitle="C# [Cross-platform]" %}
+
+using System.IO;
+using Syncfusion.Pdf.Parsing;
+using Syncfusion.SmartDataExtractor;
+
+//Open the input PDF file as a stream.
+using (FileStream inputStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read, FileShare.Read))
+{
+ //Initialize the Smart Data Extractor.
+ DataExtractor extractor = new DataExtractor();
+ //Enable form detection in the document.
+ extractor.EnableFormDetection = true;
+ //Enable table detection in the document.
+ extractor.EnableTableDetection = true;
+ //Set confidence threshold for extraction.
+ extractor.ConfidenceThreshold = 0.6;
+ //Extract data and return as a loaded PDF document.
+ PdfLoadedDocument document = extractor.ExtractDataAsPdfDocument(inputStream);
+ //Save the extracted output as a new PDF file.
+ document.Save("Output.pdf");
+ //Close the document to release resources.
+ document.Close(true);
+}
+
+{% endhighlight %}
+
+{% highlight c# tabtitle="C# [Windows-specific]" %}
+
+using System.IO;
+using Syncfusion.Pdf.Parsing;
+using Syncfusion.SmartDataExtractor;
+
+//Open the input PDF file as a stream.
+using (FileStream inputStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read, FileShare.Read))
+{
+ //Initialize the Smart Data Extractor.
+ DataExtractor extractor = new DataExtractor();
+ //Enable form detection in the document.
+ extractor.EnableFormDetection = true;
+ //Enable table detection in the document.
+ extractor.EnableTableDetection = true;
+ //Set confidence threshold for extraction.
+ extractor.ConfidenceThreshold = 0.6;
+ //Extract data and return as a loaded PDF document.
+ PdfLoadedDocument document = extractor.ExtractDataAsPdfDocument(inputStream);
+ //Save the extracted output as a new PDF file.
+ document.Save("Output.pdf");
+ //Close the document to release resources.
+ document.Close(true);
+}
+
+{% endhighlight %}
+
+{% endtabs %}
+
+## Extract Data from an Image
+
+To extract structured data from an image document using the **ExtractDataAsJson** and **ExtractDataAsPdfDocument** methods of the **DataExtractor** class, refer to the following code examples.
+
+{% tabs %}
+
+{% highlight c# tabtitle="C# [Cross-platform]" %}
+
+using System.IO;
+using Syncfusion.SmartDataExtractor;
+using System.Text;
+
+//Open the input image file as a stream.
+using (FileStream stream = new FileStream("Image.png", FileMode.Open, FileAccess.Read))
+{
+ //Initialize the Data Extractor.
+ DataExtractor extractor = new DataExtractor();
+ //Enable form detection in the image document.
+ extractor.EnableFormDetection = true;
+ //Enable table detection in the image document.
+ extractor.EnableTableDetection = true;
+ //Set confidence threshold for extraction.
+ extractor.ConfidenceThreshold = 0.6;
+ //Extract data as JSON from the image stream.
+ string data = extractor.ExtractDataAsJson(stream);
+ //Save the extracted JSON data into an output file.
+ File.WriteAllText("Output.json", data, Encoding.UTF8);
+}
+
+{% endhighlight %}
+
+{% highlight c# tabtitle="C# [Windows-specific]" %}
+
+using System.IO;
+using Syncfusion.SmartDataExtractor;
+using System.Text;
+
+//Open the input image file as a stream.
+using (FileStream stream = new FileStream("Image.png", FileMode.Open, FileAccess.Read))
+{
+ //Initialize the Data Extractor.
+ DataExtractor extractor = new DataExtractor();
+ //Enable form detection in the image document.
+ extractor.EnableFormDetection = true;
+ //Enable table detection in the image document.
+ extractor.EnableTableDetection = true;
+ //Set confidence threshold for extraction.
+ extractor.ConfidenceThreshold = 0.6;
+ //Extract data as JSON from the image stream.
+ string data = extractor.ExtractDataAsJson(stream);
+ //Save the extracted JSON data into an output file.
+ File.WriteAllText("Output.json", data, Encoding.UTF8);
+}
+
+{% endhighlight %}
+
+{% endtabs %}
+
+## Extract form data as JSON
+
+To extract form fields across a PDF document using the **ExtractDataAsJson** method of the **DataExtractor** class with form recognition options, refer to the following code example:
+
+{% tabs %}
+
+{% highlight c# tabtitle="C# [Cross-platform]" %}
+
+using System.IO;
+using Syncfusion.SmartDataExtractor;
+using Syncfusion.SmartFormRecognizer;
+using System.Text;
+
+//Open the input PDF file as a stream.
+using (FileStream stream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read))
+{
+ //Initialize the Smart Data Extractor.
+ DataExtractor extractor = new DataExtractor();
+
+ //Enable form detection in the document.
+ extractor.EnableFormDetection = true;
+ extractor.EnableTableDetection = false;
+ //Set confidence threshold for extraction.
+ extractor.ConfidenceThreshold = 0.6
+ //Configure form recognition options.
+ FormRecognizeOptions formOptions = new FormRecognizeOptions();
+ //Recognize forms across pages 1 to 5.
+ formOptions.PageRange = new int[,] { { 1, 5 } };
+ //Set confidence threshold for form recognition.
+ formOptions.ConfidenceThreshold = 0.6;
+ //Enable detection of signatures, textboxes, checkboxes, and radio buttons.
+ formOptions.DetectSignatures = true;
+ formOptions.DetectTextboxes = true;
+ formOptions.DetectCheckboxes = true;
+ formOptions.DetectRadioButtons = true;
+ //Assign the form recognition options to the extractor.
+ extractor.FormRecognizeOptions = formOptions;
+
+ //Extract form data as JSON.
+ string data = extractor.ExtractDataAsJson(stream);
+ //Save the extracted JSON data into an output file.
+ File.WriteAllText("Output.json", data, Encoding.UTF8);
+}
+
+{% endhighlight %}
+
+{% highlight c# tabtitle="C# [Windows-specific]" %}
+
+using System.IO;
+using Syncfusion.SmartDataExtractor;
+using Syncfusion.SmartFormRecognizer;
+using System.Text;
+
+//Open the input PDF file as a stream.
+using (FileStream stream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read))
+{
+ //Initialize the Smart Data Extractor.
+ DataExtractor extractor = new DataExtractor();
+
+ //Enable form detection in the document.
+ extractor.EnableFormDetection = true;
+ extractor.EnableTableDetection = false;
+ //Set confidence threshold for extraction.
+ extractor.ConfidenceThreshold = 0.6
+ //Configure form recognition options.
+ FormRecognizeOptions formOptions = new FormRecognizeOptions();
+ //Recognize forms across pages 1 to 5.
+ formOptions.PageRange = new int[,] { { 1, 5 } };
+ //Set confidence threshold for form recognition.
+ formOptions.ConfidenceThreshold = 0.6;
+ //Enable detection of signatures, textboxes, checkboxes, and radio buttons.
+ formOptions.DetectSignatures = true;
+ formOptions.DetectTextboxes = true;
+ formOptions.DetectCheckboxes = true;
+ formOptions.DetectRadioButtons = true;
+ //Assign the form recognition options to the extractor.
+ extractor.FormRecognizeOptions = formOptions;
+
+ //Extract form data as JSON.
+ string data = extractor.ExtractDataAsJson(stream);
+ //Save the extracted JSON data into an output file.
+ File.WriteAllText("Output.json", data, Encoding.UTF8);
+}
+
+{% endhighlight %}
+
+{% endtabs %}
+
+## Extract form data as PDF
+
+To extract form fields across a PDF document and save them as a PDF output using the **ExtractDataAsPdfDocument** method of the **DataExtractor** class with form recognition options, refer to the following code example:
+
+{% tabs %}
+
+{% highlight c# tabtitle="C# [Cross-platform]" %}
+
+using System.IO;
+using Syncfusion.Pdf.Parsing;
+using Syncfusion.SmartDataExtractor;
+using Syncfusion.SmartFormRecognizer;
+
+//Open the input PDF file as a stream.
+using (FileStream stream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read))
+{
+ //Initialize the Smart Data Extractor.
+ DataExtractor extractor = new DataExtractor();
+
+ //Enable form detection in the document to identify form fields.
+ extractor.EnableFormDetection = true;
+ extractor.EnableTableDetection = false;
+ //Apply confidence threshold to extract only reliable data.
+ extractor.ConfidenceThreshold = 0.6;
+
+ //Configure form recognition options for advanced detection.
+ FormRecognizeOptions formOptions = new FormRecognizeOptions();
+ //Recognize forms across pages 1 to 5 in the document.
+ formOptions.PageRange = new int[,] { { 1, 5 } };
+ //Set confidence threshold for form recognition to filter results.
+ formOptions.ConfidenceThreshold = 0.6;
+ //Enable detection of signatures within the document.
+ formOptions.DetectSignatures = true;
+ //Enable detection of textboxes within the document.
+ formOptions.DetectTextboxes = true;
+ //Enable detection of checkboxes within the document.
+ formOptions.DetectCheckboxes = true;
+ //Enable detection of radio buttons within the document.
+ formOptions.DetectRadioButtons = true;
+ //Assign the configured form recognition options to the extractor.
+ extractor.FormRecognizeOptions = formOptions;
+
+ //Extract form data and return as a loaded PDF document.
+ PdfLoadedDocument pdf = extractor.ExtractDataAsPdfDocument(stream);
+
+ //Save the extracted output as a new PDF file.
+ pdf.Save("Output.pdf");
+ //Close the document to release resources.
+ pdf.Close(true);
+}
+
+
+{% endhighlight %}
+
+{% highlight c# tabtitle="C# [Windows-specific]" %}
+
+using System.IO;
+using Syncfusion.Pdf.Parsing;
+using Syncfusion.SmartDataExtractor;
+using Syncfusion.SmartFormRecognizer;
+
+//Open the input PDF file as a stream.
+using (FileStream stream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read))
+{
+ //Initialize the Smart Data Extractor.
+ DataExtractor extractor = new DataExtractor();
+
+ //Enable form detection in the document to identify form fields.
+ extractor.EnableFormDetection = true;
+ //Apply confidence threshold to extract only reliable data.
+ extractor.ConfidenceThreshold = 0.6;
+
+ //Configure form recognition options for advanced detection.
+ FormRecognizeOptions formOptions = new FormRecognizeOptions();
+ //Recognize forms across pages 1 to 5 in the document.
+ formOptions.PageRange = new int[,] { { 1, 5 } };
+ //Set confidence threshold for form recognition to filter results.
+ formOptions.ConfidenceThreshold = 0.6;
+ //Enable detection of signatures within the document.
+ formOptions.DetectSignatures = true;
+ //Enable detection of textboxes within the document.
+ formOptions.DetectTextboxes = true;
+ //Enable detection of checkboxes within the document.
+ formOptions.DetectCheckboxes = true;
+ //Enable detection of radio buttons within the document.
+ formOptions.DetectRadioButtons = true;
+ //Assign the configured form recognition options to the extractor.
+ extractor.FormRecognizeOptions = formOptions;
+
+ //Extract form data and return as a loaded PDF document.
+ PdfLoadedDocument pdf = extractor.ExtractDataAsPdfDocument(stream);
+
+ //Save the extracted output as a new PDF file.
+ pdf.Save("Output.pdf");
+ //Close the document to release resources.
+ pdf.Close(true);
+}
+
+{% endhighlight %}
+
+{% endtabs %}
+
+## Extract table data as PDF
+
+To extract tables across a PDF document and save them as a PDF output using the **ExtractDataAsPdfDocument** method of the **DataExtractor** class with table extraction options, refer to the following code example:
+
+{% tabs %}
+
+{% highlight c# tabtitle="C# [Cross-platform]" %}
+
+using System.IO;
+using Syncfusion.Pdf.Parsing;
+using Syncfusion.SmartDataExtractor;
+using Syncfusion.SmartTableExtractor;
+
+// Load the input PDF file.
+using (FileStream stream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read))
+{
+ // Initialize the Smart Data Extractor.
+ DataExtractor extractor = new DataExtractor();
+
+ // Enable table detection and set confidence threshold.
+ extractor.EnableTableDetection = true;
+ extractor.EnableFormDetection = false;
+ extractor.ConfidenceThreshold = 0.6;
+
+ // Configure table extraction options.
+ TableExtractionOptions tableOptions = new TableExtractionOptions();
+ // Extract tables across pages 1 to 5.
+ tableOptions.PageRange = new int[,] { { 1, 5 } };
+ // Set confidence threshold for table extraction.
+ tableOptions.ConfidenceThreshold = 0.6;
+ // Enable detection of borderless tables.
+ tableOptions.DetectBorderlessTables = true;
+ // Assign the table extraction options to the extractor.
+ extractor.TableExtractionOptions = tableOptions;
+ // Extract data and return as a loaded PDF document.
+ PdfLoadedDocument pdf = extractor.ExtractDataAsPdfDocument(stream);
+
+ // Save the extracted output as a new PDF file.
+ pdf.Save("Output.pdf");
+ // Close the document to release resources.
+ pdf.Close(true);
+}
+
+
+{% endhighlight %}
+
+{% highlight c# tabtitle="C# [Windows-specific]" %}
+
+using System.IO;
+using Syncfusion.Pdf.Parsing;
+using Syncfusion.SmartDataExtractor;
+using Syncfusion.SmartTableExtractor;
+
+// Load the input PDF file.
+using (FileStream stream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read))
+{
+ // Initialize the Smart Data Extractor.
+ DataExtractor extractor = new DataExtractor();
+
+ // Enable table detection and set confidence threshold.
+ extractor.EnableTableDetection = true;
+ extractor.EnableFormDetection = false;
+ extractor.ConfidenceThreshold = 0.6;
+
+ // Configure table extraction options.
+ TableExtractionOptions tableOptions = new TableExtractionOptions();
+ // Extract tables across pages 1 to 5.
+ tableOptions.PageRange = new int[,] { { 1, 5 } };
+ // Set confidence threshold for table extraction.
+ tableOptions.ConfidenceThreshold = 0.6;
+ // Enable detection of borderless tables.
+ tableOptions.DetectBorderlessTables = true;
+ // Assign the table extraction options to the extractor.
+ extractor.TableExtractionOptions = tableOptions;
+ // Extract data and return as a loaded PDF document.
+ PdfLoadedDocument pdf = extractor.ExtractDataAsPdfDocument(stream);
+
+ // Save the extracted output as a new PDF file.
+ pdf.Save("Output.pdf");
+ // Close the document to release resources.
+ pdf.Close(true);
+}
+
+{% endhighlight %}
+
+{% endtabs %}
+
+## Apply confidence threshold to extract the data
+
+To apply confidence thresholding when extracting data from a PDF document using the ExtractDataAsPdfDocument method of the DataExtractor class, refer to the following code example:
+
+{% tabs %}
+
+{% highlight c# tabtitle="C# [Cross-platform]" %}
+
+using System.IO;
+using Syncfusion.Pdf.Parsing;
+using Syncfusion.SmartDataExtractor;
+
+// Load the input PDF file.
+using (FileStream stream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read))
+{
+ // Initialize the Smart Data Extractor.
+ DataExtractor extractor = new DataExtractor();
+
+ // Apply confidence threshold to extract the data.
+ // Only elements with confidence >= 0.75 will be included in the results.
+ //default confidence threshold value is 0.6
+ extractor.ConfidenceThreshold = 0.75;
+ // Extract data and return as a loaded PDF document.
+ PdfLoadedDocument pdf = extractor.ExtractDataAsPdfDocument(stream);
+
+ // Save the extracted output as a new PDF file.
+ pdf.Save("Output.pdf");
+ // Close the document to release resources.
+ pdf.Close(true);
+}
+
+{% endhighlight %}
+
+{% highlight c# tabtitle="C# [Windows-specific]" %}
+
+using System.IO;
+using Syncfusion.Pdf.Parsing;
+using Syncfusion.SmartDataExtractor;
+
+// Load the input PDF file.
+using (FileStream stream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read))
+{
+ // Initialize the Smart Data Extractor.
+ DataExtractor extractor = new DataExtractor();
+
+ // Apply confidence threshold to extract the data.
+ // Only elements with confidence >= 0.75 will be included in the results.
+ //default confidence threshold value is 0.6
+ extractor.ConfidenceThreshold = 0.75;
+ // Extract data and return as a loaded PDF document.
+ PdfLoadedDocument pdf = extractor.ExtractDataAsPdfDocument(stream);
+
+ // Save the extracted output as a new PDF file.
+ pdf.Save("Output.pdf");
+ // Close the document to release resources.
+ pdf.Close(true);
+}
+
+{% endhighlight %}
+
+{% endtabs %}
+
+## Extract Data Within a Specific Page Range
+
+To extract data from a specific range of pages in a PDF document using the ExtractDataAsPdfDocument method of the DataExtractor class, refer to the following code example:
+
+{% tabs %}
+
+{% highlight c# tabtitle="C# [Cross-platform]" %}
+
+using System.IO;
+using Syncfusion.Pdf.Parsing;
+using Syncfusion.SmartDataExtractor;
+
+//Open the input PDF file as a stream.
+using (FileStream stream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read))
+{
+ //Initialize the Smart Data Extractor.
+ DataExtractor extractor = new DataExtractor();
+
+ //Apply confidence threshold to extract only reliable data.
+ extractor.ConfidenceThreshold = 0.6;
+ //Set the page range for extraction (pages 1 to 3).
+ extractor.PageRange = new int[,] { { 1, 3 } };
+ //Extract data and return as a loaded PDF document.
+ PdfLoadedDocument pdf = extractor.ExtractDataAsPdfDocument(stream);
+
+ //Save the extracted output as a new PDF file.
+ pdf.Save("Output.pdf");
+ //Close the document to release resources.
+ pdf.Close(true);
+}
+
+{% endhighlight %}
+
+{% highlight c# tabtitle="C# [Windows-specific]" %}
+
+using System.IO;
+using Syncfusion.Pdf.Parsing;
+using Syncfusion.SmartDataExtractor;
+
+//Open the input PDF file as a stream.
+using (FileStream stream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read))
+{
+ //Initialize the Smart Data Extractor.
+ DataExtractor extractor = new DataExtractor();
+
+ //Apply confidence threshold to extract only reliable data.
+ extractor.ConfidenceThreshold = 0.6;
+ //Set the page range for extraction (pages 1 to 3).
+ extractor.PageRange = new int[,] { { 1, 3 } };
+ //Extract data and return as a loaded PDF document.
+ PdfLoadedDocument pdf = extractor.ExtractDataAsPdfDocument(stream);
+
+ //Save the extracted output as a new PDF file.
+ pdf.Save("Output.pdf");
+ //Close the document to release resources.
+ pdf.Close(true);
+}
+
+{% endhighlight %}
+
+{% endtabs %}
+
diff --git a/Document-Processing/Data-Extraction/Smart-Data-Extractor/NET/NuGet-Packages-Required.md b/Document-Processing/Data-Extraction/Smart-Data-Extractor/NET/NuGet-Packages-Required.md
new file mode 100644
index 0000000000..ab4e733660
--- /dev/null
+++ b/Document-Processing/Data-Extraction/Smart-Data-Extractor/NET/NuGet-Packages-Required.md
@@ -0,0 +1,67 @@
+---
+title: NuGet Packages for SmartDataExtractor | Syncfusion®
+description: Learn the NuGet packages required to use Syncfusion® SmartDataExtractor in various platforms and frameworks.
+platform: document-processing
+control: SmartDataExtractor
+documentation: UG
+keywords: Assemblies
+---
+# NuGet Packages Required for Smart Data Extractor
+
+## Create and modify Smart Data Extractor documents
+
+To work with SmartDataExtractor, the following NuGet packages need to be installed in your application.
+
+
+
+
+
Platform(s)
+
NuGet Package
+
+
+
+
+Windows Forms
+Console Application (Targeting .NET Framework)
+
+
diff --git a/Document-Processing/Data-Extraction/Smart-Data-Extractor/NET/faq.md b/Document-Processing/Data-Extraction/Smart-Data-Extractor/NET/faq.md
new file mode 100644
index 0000000000..ec6e8b8e99
--- /dev/null
+++ b/Document-Processing/Data-Extraction/Smart-Data-Extractor/NET/faq.md
@@ -0,0 +1,14 @@
+---
+title: FAQ for smart data extractor | Syncfusion
+description: This page provides a link to the FAQ section for Syncfusion Smart Data Extractor, guiding users to answers for common questions.
+platform: document-processing
+control: SmartDataExtractor
+documentation: UG
+keywords: Assemblies
+---
+
+# Frequently Asked Questions in Data Extractor Library
+
+Common questions and answers for using the Syncfusion Data Extractor.
+
+* [How to Resolve the ONNX File Missing Error in Smart Data Extractor?](./FAQ/how-to-resolve-the-onnx-file-missing-error-in-smart-data-extractor)
diff --git a/Document-Processing/Data-Extraction/Smart-Data-Extractor/NET/overview.md b/Document-Processing/Data-Extraction/Smart-Data-Extractor/NET/overview.md
new file mode 100644
index 0000000000..fc00483e90
--- /dev/null
+++ b/Document-Processing/Data-Extraction/Smart-Data-Extractor/NET/overview.md
@@ -0,0 +1,25 @@
+---
+title: Overview for SmartDataExtractor | Syncfusion
+description: Learn how to detects form data from PDFs and scanned images using Syncfusion® Essential Studio® SmartDataExtractor.
+platform: document-processing
+control: SmartDataExtractor
+documentation: UG
+keywords: Assemblies
+---
+
+# Overview of Smart Data Extractor
+
+Syncfusion® Smart Data Extractor is a high performance, deterministic C# library that extracts complete document structures from PDFs and images. Designed for .NET workflows, it analyzes visual layout lines, boxes, labels, and alignment to locate and extract elements such as table structure, text elements, images, headers, footers, and form fields with per field confidence scores for immediate review, export, or integration.
+
+## Key Features of Essential® Smart Data Extractor
+
+The following list shows the key features available in the Essential® SmartDataExtractor.
+
+* **Document structure extraction:** Detects text elements, images, headers/footers, and complete table structure (regions, header rows, columns, cell boundaries, merged cells).
+* **File format support:** Works with PDF and common image formats (JPEG, PNG).
+* **Table extraction:** Specialized parsing to recover table rows, columns, header detection and cell spans.
+* **Form recognition:** Detects and extracts form fields (text inputs, checkboxes, radio buttons) with field types and values.
+* **Page-level control:** Extract data from specific pages or defined page ranges.
+* **Confidence thresholding:** Results are filtered based on a configurable confidence score (0.0–1.0).
+* **Deterministic performance:** Designed for predictable, repeatable extraction across environments (Windows, Linux, Azure, Docker).
+
diff --git a/Document-Processing/Data-Extraction/Smart-Data-Extractor/overview.md b/Document-Processing/Data-Extraction/Smart-Data-Extractor/overview.md
new file mode 100644
index 0000000000..eacadfaaa2
--- /dev/null
+++ b/Document-Processing/Data-Extraction/Smart-Data-Extractor/overview.md
@@ -0,0 +1,14 @@
+---
+title: Intro to Smart data extractor| Syncfusion
+description: This page introduces Syncfusion Smart Data Extractor, outlining its purpose, core details, and usage in .NET applications.
+platform: document-processing
+control: SmartDataExtractor
+documentation: UG
+keywords: Assemblies
+---
+
+# Welcome to Syncfusion Smart Data Extractor Library
+
+Syncfusion® Smart Data Extractor is a high performance, deterministic C# library that extracts complete document structures from PDFs and images. Designed for .NET workflows, it analyzes visual layout lines, boxes, labels, and alignment to locate and extract elements such as table structure, text elements, images, headers, footers, and form fields with per field confidence scores for immediate review, export, or integration.
+
+
diff --git a/Document-Processing/Data-Extraction/Smart-Form-Recognizer/NET/assemblies-required.md b/Document-Processing/Data-Extraction/Smart-Form-Recognizer/NET/assemblies-required.md
new file mode 100644
index 0000000000..8705698737
--- /dev/null
+++ b/Document-Processing/Data-Extraction/Smart-Form-Recognizer/NET/assemblies-required.md
@@ -0,0 +1,59 @@
+---
+title: Assemblies required for SmartFormRecognizer| Syncfusion®
+description: Learn the assemblies required to use Syncfusion® SmartFormRecognizer library in various platforms and frameworks.
+platform: document-processing
+control: SmartFormRecognizer
+documentation: UG
+---
+
+# Assemblies Required to work with SmartFormRecognizer
+The following assemblies need to be referenced in your application based on the platform.
+
+
+
+
+
Platform(s)
+
Assembly
+
Dependent Assemblies
+
+
+
+
+
+
Windows Forms, WPF and ASP.NET MVC5
+
Syncfusion.SmartFormRecognizer.Base
+
+
+
Syncfusion.Pdf.Base
+
Syncfusion.Compression.Base
+
Syncfusion.PdfToImageConverter.Base
+
+
+
+
+
+
+
Blazor, .NET Core and .NET Platforms
+
Syncfusion.SmartFormRecognizer.Portable
+
+
+
Syncfusion.Pdf.Portable
+
Syncfusion.Compression.Portable
+
Syncfusion.PdfToImageConverter.Portable
+
+
+
+
+
+
+
Syncfusion.SmartFormRecognizer.NET
+
+
+
Syncfusion.Pdf.NET
+
Syncfusion.Compression.NET
+
Syncfusion.PdfToImageConverter.NET
+
+
+
+
+
diff --git a/Document-Processing/Data-Extraction/Smart-Form-Recognizer/NET/nuGet-packages-required.md b/Document-Processing/Data-Extraction/Smart-Form-Recognizer/NET/nuGet-packages-required.md
new file mode 100644
index 0000000000..767a307bc7
--- /dev/null
+++ b/Document-Processing/Data-Extraction/Smart-Form-Recognizer/NET/nuGet-packages-required.md
@@ -0,0 +1,57 @@
+---
+title: NuGet Packages for SmartFormRecognizer | Syncfusion®
+description: Learn the NuGet packages required to use Syncfusion® SmartFormRecognizer in various platforms and frameworks.
+platform: document-processing
+control: SmartFormRecognizer
+documentation: UG
+---
+
+# NuGet Packages Required for SmartFormRecognizer
+
+To work with SmartFormRecognizer, the following NuGet packages need to be installed in your application.
+
+
+
+N> The above mentioned NuGet packages are available in [nuget.org](https://www.nuget.org/).
diff --git a/Document-Processing/Data-Extraction/Smart-Form-Recognizer/NET/overview.md b/Document-Processing/Data-Extraction/Smart-Form-Recognizer/NET/overview.md
new file mode 100644
index 0000000000..53ccfbdf59
--- /dev/null
+++ b/Document-Processing/Data-Extraction/Smart-Form-Recognizer/NET/overview.md
@@ -0,0 +1,93 @@
+---
+title: Smart Form Recognizer | Syncfusion®
+description: Learn how to detects form data from PDFs and scanned images using Syncfusion® Essential Studio® SmartFormRecognizer.
+platform: document-processing
+control: SmartFormRecognizer
+documentation: UG
+keywords: Assemblies
+---
+
+# Smart Form Recognizer
+
+Smart Form Recognizer is a deterministic, on premise C# library for .NET designed to reliably detect form data from PDFs and scanned images. Unlike AI‑based approaches, this library uses visual layout heuristics including lines, boxes, and circular markers to identify form structures with high consistency and predictability.It supports to identify the common form controls such as text fields, checkboxes, radio buttons, and signature regions, producing clean, structured JSON that can be fed directly into review and workflow systems.
+
+
+Core Capabilities
+
+*Form layout detection: Locate form regions using graphical heuristics (lines, boxes, circles) for consistent field discovery.
+
+*Fillable PDF export: Create a PDF with detected form fields added so documents are immediately usable in form workflows.
+
+*Page-level control: Process specific pages or page ranges for targeted extraction.
+
+*Multi-format support: Works with PDF, JPEG, PNG and other common image formats.
+
+*Confidence filtering: Per-field confidence scores with configurable thresholds to control output quality and drive review logic.
+
+*Ready for .NET integration: Deterministic, on premise library that outputs JSON and integrates into existing .NET pipelines and review UIs.
+
+
+NuGet
+
+
+
+N> The above mentioned NuGet packages are available in [nuget.org](https://www.nuget.org/).
+
+The following code snippet illustrates how to detects form data from PDFs using FormRecognizer method in SmartFormRecognizer.
+
+{% tabs %}
+{% highlight c# tabtitle="C#" %}
+
+//Initialize the Form Recognizer
+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);
+//Save the loadeddocument
+pdfLoadedDocument.Save(Output.pdf);
+
+{% endhighlight %}
+{% endtabs %}
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
new file mode 100644
index 0000000000..0377d67f04
--- /dev/null
+++ b/Document-Processing/Data-Extraction/Smart-Form-Recognizer/NET/recognize-forms.md
@@ -0,0 +1,176 @@
+---
+title: Working with Recognize methods in SmartFormRecognizer| Syncfusion®
+description: Learn how to effectively use the Recognize methods in the Syncfusion® SmartFormRecognizer library to process and detects from forms with ease.
+platform: document-processing
+control: SmartFormRecognizer
+documentation: UG
+---
+
+# Recognize Forms Using SmartFormRecognizer
+
+The `FormRecognizer` exposes several convenience methods to recognize forms from a `Stream` input. Each method accepts an input `Stream` (PDF or image) and returns recognized output either as a `PdfLoadedDocument`, a `Stream` containing PDF data, or as a JSON string.
+
+Below each method signature you'll find a explanation and corrected example usage (both synchronous and asynchronous where applicable).
+
+## Recognize forms using PdfLoadedDocument
+Using `PdfLoadedDocument` this operation analyzes the form content supplied through the inputStream whether it contains a PDF or an image and produces a fully enriched PdfLoadedDocument that includes recognized form elements such as checkboxes, radio buttons, textboxes, and signatures, according to the options defined in `FormRecognizeOptions`. This recognition process supports both execution patterns: the synchronous `RecognizeFormAsPdfDocument` method for immediate, blocking processing, and the asynchronous `RecognizeFormAsPdfDocumentAsync` method for non‑blocking, await processing ideal for responsive UI applications or scalable server side workflows.
+
+Example (synchronous):
+
+{% tabs %}
+{% highlight c# tabtitle="C#" %}
+public void Button_Click(object sender, RoutedEventArgs e)
+ {
+ //Initialize the Form Recognizer
+ 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);
+ //Save the loadeddocument
+ pdfLoadedDocument.Save(Output.pdf);
+ }
+{% endhighlight %}
+{% endtabs %}
+
+
+Example (asynchronous):
+
+{% tabs %}
+{% highlight c# tabtitle="C#" %}
+public async void Button_Click(object sender, RoutedEventArgs e)
+ {
+ //Initialize the Form Recognizer
+ 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 = await recognizer.RecognizeFormAsPdfDocumentAsync(inputStream);
+ //Save the loadeddocument
+ pdfLoadedDocument.Save(Output.pdf);
+}
+
+{% endhighlight %}
+{% endtabs %}
+
+
+## Recognize forms using Stream
+Using `Stream`this operation processes the form content provided through the inputStream whether it contains a PDF or an image and returns the fully recognized PDF as a Stream.This functionality is available through both the synchronous `RecognizeFormAsPdfStream` method for immediate, blocking execution and the asynchronous `RecognizeFormAsPdfStreamAsync` method for non‑blocking, await processing suitable for responsive UI applications, background services, and scalable server‑side workflows.
+
+Example (synchronous):
+
+{% tabs %}
+{% highlight c# tabtitle="C#" %}
+public void Button_Click(object sender, RoutedEventArgs e)
+{
+ //Initialize the Form Recognizer
+ 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
+ Stream outputStream = smartFormRecognizer.RecognizeFormAsPdfStream(inputStream);
+ //Save the output PDF stream to file
+ using (FileStream fileStream = File.Create("Output.pdf"))
+ {
+ outputStream.Seek(0, SeekOrigin.Begin);
+ outputStream.CopyTo(fileStream);
+ }
+}
+{% endhighlight %}
+{% endtabs %}
+
+
+Example (asynchronous):
+
+{% tabs %}
+{% highlight c# tabtitle="C#" %}
+public async void Button_Click(object sender, RoutedEventArgs e)
+{
+ //Initialize the Form Recognizer
+ 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
+ Stream outputStream = await smartFormRecognizer.RecognizeFormAsPdfStreamAsync(inputStream);
+ //Save the output PDF stream to file
+ using (FileStream fileStream = File.Create("Output.pdf"))
+ {
+ outputStream.Seek(0, SeekOrigin.Begin);
+ outputStream.CopyTo(fileStream);
+ }
+}
+
+{% endhighlight %}
+{% endtabs %}
+
+## Recognize forms using JSON
+
+Using `JSON`this operation recognizes the form contained in the inputStream whether the source document is a PDF or an image and returns the complete recognition output serialized as a JSON string. This functionality is accessible through both the synchronous `RecognizeFormAsJson` method, which performs immediate, blocking processing, and the asynchronous `RecognizeFormAsJsonAsync` method, which provides non‑blocking, await execution suitable for UI applications, background workers, and scalable cloud or server‑side workflows.
+
+Example (synchronous):
+
+{% tabs %}
+{% highlight c# tabtitle="C#" %}
+public void Button_Click(object sender, RoutedEventArgs e)
+{
+ //Initialize the Form Recognizer
+ 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
+ String outputJson = smartFormRecognizer.RecognizeFormAsJson(inputStream);
+ //Save the outputJson
+ File.Create("D:\\result.json").Close();
+ File.WriteAllText("D:\\result.json", outputJson);
+}
+{% endhighlight %}
+{% endtabs %}
+
+
+Example (asynchronous):
+
+{% tabs %}
+{% highlight c# tabtitle="C#" %}
+public async void Button_Click(object sender, RoutedEventArgs e)
+{
+ //Initialize the Form Recognizer
+ 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
+ String outputJson = await smartFormRecognizer.RecognizeFormAsJsonAsync(inputStream);
+ //Save the outputJson
+ File.Create("D:\\result.json").Close();
+ File.WriteAllText("D:\\result.json", outputJson);
+
+}
+
+{% endhighlight %}
+{% endtabs %}
+
+## Async variants with CancellationToken
+
+The async overloads accept an optional `CancellationToken` to cancel long running operations. Initially, the cancellationToken uses its default value, and based on our requirements, we can optimize or supply a custom token as needed. This behavior is supported across all async methods, including PDF, JSON, and PdfLoadedDocument asynchronous operations
+
+
+Example with cancellation token (PDF stream):
+
+{% tabs %}
+{% highlight c# tabtitle="C#" %}
+
+public async Task RecognizeWithCancellationAsync()
+{
+ FormRecognizer recognizer = new FormRecognizer();
+
+ using FileStream inputStream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read);
+ CancellationTokenSource cts = new CancellationTokenSource();
+ cts.CancelAfter(TimeSpan.FromSeconds(5)); // cancel in 5 seconds
+ CancellationToken token = cts.Token;
+ using Stream resultStream = await recognizer.RecognizeFormAsPdfStreamAsync(inputStream, token);
+
+ using FileStream fileStream = File.Create("Output.pdf");
+ await resultStream.CopyToAsync(fileStream, token);
+}
+
+{% endhighlight %}
+{% endtabs %}
\ No newline at end of file
diff --git a/Document-Processing/Data-Extraction/Smart-Form-Recognizer/NET/smart-form-recognizer.md b/Document-Processing/Data-Extraction/Smart-Form-Recognizer/NET/smart-form-recognizer.md
new file mode 100644
index 0000000000..20c4916a6e
--- /dev/null
+++ b/Document-Processing/Data-Extraction/Smart-Form-Recognizer/NET/smart-form-recognizer.md
@@ -0,0 +1,45 @@
+---
+title: Detect Form Fields| Syncfusion®
+description: Learn how to detects form data from PDFs and scanned images using Syncfusion® Essential Studio® SmartFormRecognizer.
+platform: document-processing
+control: SmartFormRecognizer
+documentation: UG
+keywords: Assemblies
+---
+
+# Smart Form Recognizer
+
+Smart Form Recognizer is a deterministic, on premise C# library for .NET designed to reliably detect form data from PDFs and scanned images. Unlike AI‑based approaches, this library uses visual layout heuristics including lines, boxes, and circular markers to identify form structures with high consistency and predictability. It supports It supports to identify the common form controls such as text fields, checkboxes, radio buttons, and signature regions, producing clean, structured JSON that can be fed directly into review and workflow systems.
+
+
+Core Capabilities
+
+*Form layout detection: Locate form regions using graphical heuristics (lines, boxes, circles) for consistent field discovery.
+
+*Fillable PDF export: Create a PDF with detected form fields added so documents are immediately usable in form workflows.
+
+*Page-level control: Process specific pages or page ranges for targeted extraction.
+
+*Multi-format support: Works with PDF, JPEG, PNG and other common image formats.
+
+*Confidence filtering: Per-field confidence scores with configurable thresholds to control output quality and drive review logic.
+
+*Ready for .NET integration: Deterministic, on premise library that outputs JSON and integrates into existing .NET pipelines and review UIs.
+
+The following code snippet illustrates how to detects form data from PDFs using FormRecognizer method in SmartFormRecognizer.
+
+{% tabs %}
+{% highlight c# tabtitle="C#" %}
+
+//Initialize the Form Recognizer
+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);
+//Save the loadeddocument
+pdfLoadedDocument.Save(Output.pdf);
+
+{% endhighlight %}
+{% endtabs %}
+
diff --git a/Document-Processing/Data-Extraction/Smart-Form-Recognizer/NET/working-with-recognize-option.md b/Document-Processing/Data-Extraction/Smart-Form-Recognizer/NET/working-with-recognize-option.md
new file mode 100644
index 0000000000..b947bed001
--- /dev/null
+++ b/Document-Processing/Data-Extraction/Smart-Form-Recognizer/NET/working-with-recognize-option.md
@@ -0,0 +1,96 @@
+---
+title: Using FormRecognizeOptions in SmartFormRecognizer| Syncfusion®
+description: Discover how to configure and apply FormRecognizeOptions in the Syncfusion® SmartFormRecognizer library to enhance form processing workflows.
+platform: document-processing
+control: SmartFormRecognizer
+documentation: UG
+---
+
+# Working with FormRecognizeOptions
+
+`FormRecognizeOptions` provides configurable settings that control how the SmartFormRecognizer detects elements from a document. It allows you to enable or disable the detection of specific form controls such as checkboxes, radio buttons, textboxes, and signatures—while also letting you fine tune the recognition results using a confidence threshold.
+Additionally, it supports restricting processing to specific pages through an optional 1‑based inclusive PageRange. By adjusting these options, developers can optimize performance, reduce noise in results, and tailor form extraction precisely to the needs of their application
+
+## Properties
+
+### DetectTextboxes
+`DetectTextboxes` is a boolean property in FormRecognizeOptions that determines whether the form recognizer should detect textbox fields from the document layout. When enabled (default: true), it identifies rectangular input areas such as printed boxes,Rounded boxes, lines, boxes and line inside the table cell, or bordered regions intended for user written text and includes them in the recognition output.
+
+{% tabs %}
+{% highlight c# tabtitle="C#" %}
+
+FormRecognizer recognizer = new FormRecognizer();
+// Disable textbox detection
+recognizer.FormRecognizeOptions.DetectTextboxes = false;
+
+{% endhighlight %}
+{% endtabs %}
+
+### DetectCheckboxes
+`DetectCheckboxes` is a boolean option in FormRecognizeOptions that controls whether the form recognizer should identify checkbox elements during document processing. When enabled (default: true), the recognizer scans the page layout for checkbox shapes,Rounded square and determines their positions.
+
+{% tabs %}
+{% highlight c# tabtitle="C#" %}
+
+FormRecognizer recognizer = new FormRecognizer();
+// Disable checkbox detection
+recognizer.FormRecognizeOptions.DetectCheckboxes = false;
+
+{% endhighlight %}
+{% endtabs %}
+
+### DetectRadioButtons
+`DetectRadioButtons` is a boolean property in FormRecognizeOptions that specifies whether the form recognizer should detect radio button elements in the document. When enabled (default: true), the recognizer identifies circular and oval objects in images or in the PDF documents then add radio buttons in that identified locations.
+
+{% tabs %}
+{% highlight c# tabtitle="C#" %}
+
+FormRecognizer recognizer = new FormRecognizer();
+// Disable radio button detection
+recognizer.FormRecognizeOptions.DetectRadioButtons = false;
+
+{% endhighlight %}
+{% endtabs %}
+
+### DetectSignatures
+`DetectSignatures` is a boolean property in FormRecognizeOptions that controls whether the form recognizer should identify signature fields within a document. When enabled (default: true), the recognizer scans for handwritten style areas, signature lines, or regions typically used for signing, and includes these detected signature bounds in the output.
+
+{% tabs %}
+{% highlight c# tabtitle="C#" %}
+
+FormRecognizer recognizer = new FormRecognizer();
+// Disable signature detection
+recognizer.FormRecognizeOptions.DetectSignatures = false;
+
+{% endhighlight %}
+{% endtabs %}
+
+### ConfidenceThreshold
+`ConfidenceThreshold` is a double value in FormRecognizeOptions that defines the minimum confidence score (ranging from 0.0 to 1.0) required for any detected form element to be included in the final recognition output. A higher threshold (e.g., 0.9) filters out lower‑certainty detections and ensures only highly reliable results are returned, while a lower threshold increases sensitivity by allowing more detections at the cost of potentially reduced accuracy.
+
+{% tabs %}
+{% highlight c# tabtitle="C#" %}
+
+FormRecognizer recognizer = new FormRecognizer();
+// Set a ConfidenceThreshold
+recognizer.FormRecognizeOptions.ConfidenceThreshold = 0.9;
+
+{% endhighlight %}
+{% endtabs %}
+
+### PageRange
+`PageRange` is an optional int[,]? property in FormRecognizeOptions that allows you to control exactly which pages of a document the form recognizer should process. Each row in this 2‑dimensional array represents a 1‑based inclusive range in the form [start, end], the recognizer processes all pages in the document. Defining page ranges helps improve performance, reduce unnecessary processing, and target only the sections of the document relevant to your extraction workflow.We can also provide values in single page.Also If we provide values in descending order it will consider as ascending order and perform detection.
+
+{% tabs %}
+{% highlight c# tabtitle="C#" %}
+
+FormRecognizer recognizer = new FormRecognizer();
+// Set a single page range – detects only the specified page
+recognizer.FormRecognizeOptions.PageRange = new int[,] { { 3 }, { 8 } };
+
+// Set a page range – detects content between the specified start and end page
+recognizer.FormRecognizeOptions.PageRange = new int[,] { { 3, 8 } };
+
+{% endhighlight %}
+{% endtabs %}
+
diff --git a/Document-Processing/Data-Extraction/Smart-Table-Extractor/NET/Assemblies-Required.md b/Document-Processing/Data-Extraction/Smart-Table-Extractor/NET/Assemblies-Required.md
new file mode 100644
index 0000000000..fe5520cfe7
--- /dev/null
+++ b/Document-Processing/Data-Extraction/Smart-Table-Extractor/NET/Assemblies-Required.md
@@ -0,0 +1,65 @@
+---
+title: Assemblies required for SmartTableExtractor | Syncfusion
+description: This section details the Syncfusion assemblies required to configure and run Smart Table Extractor seamlessly in .NET projects.
+platform: document-processing
+control: PDF
+documentation: UG
+keywords: Assemblies
+---
+# Assemblies Required to work with Smart Table Extractor
+
+The following assemblies need to be referenced in your application based on the platform.
+
+
+
+
diff --git a/Document-Processing/Data-Extraction/Smart-Table-Extractor/NET/FAQ/how-to-resolve-the-onnx-file-missing-error-in-smart-table-extractor.md b/Document-Processing/Data-Extraction/Smart-Table-Extractor/NET/FAQ/how-to-resolve-the-onnx-file-missing-error-in-smart-table-extractor.md
new file mode 100644
index 0000000000..892f1b1751
--- /dev/null
+++ b/Document-Processing/Data-Extraction/Smart-Table-Extractor/NET/FAQ/how-to-resolve-the-onnx-file-missing-error-in-smart-table-extractor.md
@@ -0,0 +1,37 @@
+---
+title: Resolve onnx file missing in smart table extractor | Syncfusion
+description: Learn how to resolve the missing ONNX file issue in Syncfusion Smart Table Extractor to ensure smooth setup and usage in .NET projects.
+platform: document-processing
+control: PDF
+documentation: UG
+keywords: Assemblies
+---
+
+# How to resolve the “ONNX file missing” error in Smart Table Extractor
+
+Problem:
+
+When running Smart Table Extractor you may see an exception similar to the following:
+
+```
+Microsoft.ML.OnnxRuntime.OnnxRuntimeException: '[ErrorCode:NoSuchFile] Load model from \runtimes\models\syncfusion_doclayout.onnx failed. File doesn't exist'
+```
+
+Cause:
+
+This error occurs because the required ONNX model files (used internally for layout and data extraction) are not present in the application's build output (the project's `bin` runtime folder). The extractor expects the models under `runtimes\models` so the runtime can load them.
+
+Solution:
+
+1. Run a build so the application output is generated under `bin\Debug\netX.X\runtimes` (or your configured build configuration and target framework).
+2. Locate the project's build output `bin` path (for example: `bin\Debug\net6.0\runtimes`).
+3. Place all required ONNX model files into a `runtimes\models` folder inside that bin path.
+4. In Visual Studio, for each ONNX file set **Properties → Copy to Output Directory → Copy always** so the model is included on every build.
+5. Rebuild and run your project. The extractor should now find the ONNX models and operate correctly.
+
+Notes:
+
+- If you publish your application, ensure the `runtimes\models` folder and ONNX files are included in the publish output (you may need to mark files as content in the project file or use a entry).
+- If you prefer an automated approach, add the ONNX files to your project with `CopyToOutputDirectory` set, or create a post-build step to copy the models into the runtime folder.
+
+If the problem persists after adding the model files, verify file permissions and the correctness of the model file names.
\ No newline at end of file
diff --git a/Document-Processing/Data-Extraction/Smart-Table-Extractor/NET/Features.md b/Document-Processing/Data-Extraction/Smart-Table-Extractor/NET/Features.md
new file mode 100644
index 0000000000..ba8a7e35b7
--- /dev/null
+++ b/Document-Processing/Data-Extraction/Smart-Table-Extractor/NET/Features.md
@@ -0,0 +1,309 @@
+---
+title: Features of Smart table Extractor | Syncfusion
+description: Discover the key features of Syncfusion Smart Table Extractor, a .NET library designed to extract tables, forms, text, and images from documents.
+platform: document-processing
+control: PDF
+documentation: UG
+keywords: Assemblies
+---
+
+# Smart Table Extractor Features
+
+## Extract Tables from a PDF Documents
+
+To extract structured table data from a PDF document using the **ExtractTableAsJson** method of the **TableExtractor** class, refer to the following code
+
+{% tabs %}
+
+{% highlight c# tabtitle="C# [Cross-platform]" %}
+
+using System.IO;
+using System.Text;
+using Syncfusion.SmartTableExtractor;
+
+//Open the input PDF file as a stream.
+using (FileStream stream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read))
+{
+ // Initialize the Smart Table Extractor
+ TableExtractor extractor = new TableExtractor();
+
+ // Set all three options together
+ TableExtractionOptions options = new TableExtractionOptions();
+ options.DetectBorderlessTables = true;
+ options.PageRange = new int[,] { { 1, 5 } };
+ options.ConfidenceThreshold = 0.75;
+
+ extractor.TableExtractionOptions = options;
+
+ // Extract and save
+ string data = extractor.ExtractTableAsJson(stream);
+ File.WriteAllText("Output.json", data, Encoding.UTF8);
+}
+
+{% endhighlight %}
+
+{% highlight c# tabtitle="C# [Windows-specific]" %}
+
+using System.IO;
+using System.Text;
+using Syncfusion.SmartTableExtractor;
+
+//Open the input PDF file as a stream.
+using (FileStream stream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read))
+{
+ // Initialize the Smart Table Extractor
+ TableExtractor extractor = new TableExtractor();
+
+ // Set all three options together
+ TableExtractionOptions options = new TableExtractionOptions();
+ options.DetectBorderlessTables = true;
+ options.PageRange = new int[,] { { 1, 5 } };
+ options.ConfidenceThreshold = 0.75;
+
+ extractor.TableExtractionOptions = options;
+
+ // Extract and save
+ string data = extractor.ExtractTableAsJson(stream);
+ File.WriteAllText("Output.json", data, Encoding.UTF8);
+}
+
+{% endhighlight %}
+
+{% endtabs %}
+
+## Extract Tables with detect border less tables
+
+To extract structured table data from a PDF document that contains tables without visible borders using the **ExtractTableAsJson** method of the **TableExtractor** class, refer to the following code examples.
+
+{% tabs %}
+
+{% highlight c# tabtitle="C# [Cross-platform]" %}
+
+using System.IO;
+using System.Text;
+using Syncfusion.SmartTableExtractor;
+
+using (FileStream stream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read))
+{
+ // Initialize the Smart Table Extractor
+ TableExtractor extractor = new TableExtractor();
+
+ // Set DetectBorderlessTables
+ TableExtractionOptions options = new TableExtractionOptions();
+ options.DetectBorderlessTables = true;
+
+ extractor.TableExtractionOptions = options;
+
+ // Extract and save
+ string data = extractor.ExtractTableAsJson(stream);
+ File.WriteAllText("Output.json", data, Encoding.UTF8);
+}
+
+{% endhighlight %}
+
+{% highlight c# tabtitle="C# [Windows-specific]" %}
+
+using System.IO;
+using System.Text;
+using Syncfusion.SmartTableExtractor;
+
+using (FileStream stream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read))
+{
+ // Initialize the Smart Table Extractor
+ TableExtractor extractor = new TableExtractor();
+
+ // Set DetectBorderlessTables
+ TableExtractionOptions options = new TableExtractionOptions();
+ options.DetectBorderlessTables = true;
+
+ extractor.TableExtractionOptions = options;
+
+ // Extract and save
+ string data = extractor.ExtractTableAsJson(stream);
+ File.WriteAllText("Output.json", data, Encoding.UTF8);
+}
+
+{% endhighlight %}
+
+{% endtabs %}
+
+## Extract Tables Within a Specific Page Range
+
+To extract structured table data from a specific range of pages in a PDF document using the **ExtractTableAsJson** method of the **TableExtractor** class, refer to the following code example:
+
+{% tabs %}
+
+{% highlight c# tabtitle="C# [Cross-platform]" %}
+
+using System.IO;
+using System.Text;
+using Syncfusion.SmartTableExtractor;
+
+using (FileStream stream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read))
+{
+ // Initialize the Smart Table Extractor
+ TableExtractor extractor = new TableExtractor();
+
+ // Set only PageRange
+ TableExtractionOptions options = new TableExtractionOptions();
+ options.PageRange = new int[,] { { 2, 4 } };
+
+ extractor.TableExtractionOptions = options;
+
+ // Extract and save
+ string data = extractor.ExtractTableAsJson(stream);
+ File.WriteAllText("Output.json", data, Encoding.UTF8);
+}
+
+{% endhighlight %}
+
+{% highlight c# tabtitle="C# [Windows-specific]" %}
+
+using System.IO;
+using System.Text;
+using Syncfusion.SmartTableExtractor;
+
+using (FileStream stream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read))
+{
+ // Initialize the Smart Table Extractor
+ TableExtractor extractor = new TableExtractor();
+
+ // Set only PageRange
+ TableExtractionOptions options = new TableExtractionOptions();
+ options.PageRange = new int[,] { { 2, 4 } };
+
+ extractor.TableExtractionOptions = options;
+
+ // Extract and save
+ string data = extractor.ExtractTableAsJson(stream);
+ File.WriteAllText("Output.json", data, Encoding.UTF8);
+}
+
+{% endhighlight %}
+
+{% endtabs %}
+
+## Apply confidence threshold to extract the Table
+
+To apply confidence thresholding when extracting table data from a PDF document using the **ExtractTableAsJson** method of the **TableExtractor** class, refer to the following code example:
+
+{% tabs %}
+
+{% highlight c# tabtitle="C# [Cross-platform]" %}
+
+using System.IO;
+using System.Text;
+using Syncfusion.SmartTableExtractor;
+
+using (FileStream stream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read))
+{
+ // Initialize the Smart Table Extractor
+ TableExtractor extractor = new TableExtractor();
+
+ // Set ConfidenceThreshold
+ TableExtractionOptions options = new TableExtractionOptions();
+ options.ConfidenceThreshold = 0.6;
+
+ extractor.TableExtractionOptions = options;
+
+ // Extract and save
+ string data = extractor.ExtractTableAsJson(stream);
+ File.WriteAllText("Output.json", data, Encoding.UTF8);
+}
+
+{% endhighlight %}
+
+{% highlight c# tabtitle="C# [Windows-specific]" %}
+
+using System.IO;
+using System.Text;
+using Syncfusion.SmartTableExtractor;
+
+using (FileStream stream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read))
+{
+ // Initialize the Smart Table Extractor
+ TableExtractor extractor = new TableExtractor();
+
+ // Set ConfidenceThreshold
+ TableExtractionOptions options = new TableExtractionOptions();
+ options.ConfidenceThreshold = 0.6;
+
+ extractor.TableExtractionOptions = options;
+
+ // Extract and save
+ string data = extractor.ExtractTableAsJson(stream);
+ File.WriteAllText("Output.json", data, Encoding.UTF8);
+}
+
+{% endhighlight %}
+
+{% endtabs %}
+
+## Extract table data asynchronously from a PDF document
+
+To extract table data asynchronously with cancellation support using the **ExtractTableAsJsonAsync** method of the **TableExtractor** class, refer to the following code example:
+
+{% tabs %}
+
+{% highlight c# tabtitle="C# [Cross-platform]" %}
+
+using System.IO;
+using System.Text;
+using System.Threading;
+using Syncfusion.SmartTableExtractor;
+
+using (FileStream stream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read))
+{
+ // Declare and configure the extractor and options
+ TableExtractionOptions extractionOptions = new TableExtractionOptions();
+ extractionOptions.DetectBorderlessTables = true;
+ extractionOptions.ConfidenceThreshold = 0.6;
+
+ TableExtractor tableExtractor = new TableExtractor();
+ tableExtractor.TableExtractionOptions = extractionOptions;
+
+ // Create cancellation token with timeout
+ var cts = new CancellationTokenSource(TimeSpan.FromSeconds(30));
+
+ // Call the async extraction API
+ string data = await tableExtractor.ExtractTableAsJsonAsync(stream, cts.Token);
+
+ // Save the extracted data as JSON
+ File.WriteAllText("Output.json", data, Encoding.UTF8);
+}
+
+
+{% endhighlight %}
+
+{% highlight c# tabtitle="C# [Windows-specific]" %}
+
+using System.IO;
+using System.Text;
+using System.Threading;
+using Syncfusion.SmartTableExtractor;
+
+using (FileStream stream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read))
+{
+ // Declare and configure the extractor and options
+ TableExtractionOptions extractionOptions = new TableExtractionOptions();
+ extractionOptions.DetectBorderlessTables = true;
+ extractionOptions.ConfidenceThreshold = 0.6;
+
+ TableExtractor tableExtractor = new TableExtractor();
+ tableExtractor.TableExtractionOptions = extractionOptions;
+
+ // Create cancellation token with timeout
+ var cts = new CancellationTokenSource(TimeSpan.FromSeconds(30));
+
+ // Call the async extraction API
+ string data = await tableExtractor.ExtractTableAsJsonAsync(stream, cts.Token);
+
+ // Save the extracted data as JSON
+ File.WriteAllText("Output.json", data, Encoding.UTF8);
+}
+
+
+{% endhighlight %}
+
+{% endtabs %}
+
diff --git a/Document-Processing/Data-Extraction/Smart-Table-Extractor/NET/NuGet-Packages-Required.md b/Document-Processing/Data-Extraction/Smart-Table-Extractor/NET/NuGet-Packages-Required.md
new file mode 100644
index 0000000000..5844261ca0
--- /dev/null
+++ b/Document-Processing/Data-Extraction/Smart-Table-Extractor/NET/NuGet-Packages-Required.md
@@ -0,0 +1,67 @@
+---
+title: NuGet Packages for Smart Table Extractor| Syncfusion
+description: Learn the NuGet packages required to use Syncfusion® Smart Table Extractor in various platforms and frameworks.
+platform: document-processing
+control: PDF
+documentation: UG
+keywords: Assemblies
+---
+# NuGet Packages Required for Smart Table Extractor
+
+## Create and modify Smart Table Extractor documents
+
+To work with SmartTableExtractor, the following NuGet packages need to be installed in your application.
+
+
+
+
+
Platform(s)
+
NuGet Package
+
+
+
+
+Windows Forms
+Console Application (Targeting .NET Framework)
+
+
diff --git a/Document-Processing/Data-Extraction/Smart-Table-Extractor/NET/faq.md b/Document-Processing/Data-Extraction/Smart-Table-Extractor/NET/faq.md
new file mode 100644
index 0000000000..33983cc97d
--- /dev/null
+++ b/Document-Processing/Data-Extraction/Smart-Table-Extractor/NET/faq.md
@@ -0,0 +1,14 @@
+---
+title: FAQ for smart Table extractor| Syncfusion
+description: This page serves as the link to the FAQ section for Syncfusion Smart Table Extractor, directing users to answers for common queries and issues.
+platform: document-processing
+control: PDF
+documentation: UG
+keywords: Assemblies
+---
+
+# Frequently Asked Questions in Smart Table Extractor
+
+Common questions and answers for using the Syncfusion Table Extraction.
+
+* [How to Resolve the ONNX File Missing Error in Smart Table Extractor?](./FAQ/how-to-resolve-the-onnx-file-missing-error-in-smart-table-extractor)
diff --git a/Document-Processing/Data-Extraction/Smart-Table-Extractor/NET/overview.md b/Document-Processing/Data-Extraction/Smart-Table-Extractor/NET/overview.md
new file mode 100644
index 0000000000..fbb62f8357
--- /dev/null
+++ b/Document-Processing/Data-Extraction/Smart-Table-Extractor/NET/overview.md
@@ -0,0 +1,23 @@
+---
+title: Overview for SmartTableExtractor | Syncfusion
+description: Learn how to detects form data from PDFs and scanned images using Syncfusion® Essential Studio® SmartTableExtractor.
+platform: document-processing
+control: PDF
+documentation: UG
+keywords: Assemblies
+---
+
+# Overview of Smart Table Extractor
+
+Syncfusion® Smart Table Extractor is a high accuracy, deterministic C# library that detects and extracts tabular data from PDFs and scanned images for .NET workflows, It detects table regions, header rows, columns, and cell spans (merged cells) and provides per-cell confidence scores and structured exports ready for downstream processing.
+
+## Key Features of Essential® Smart Table Extractor
+
+The following list shows the key features available in the Essential® SmartTableExtractor.
+
+* **Table structure extraction:** Identifies table regions, header rows, columns, row and column spans, and cell boundaries.
+* **File format support:** Works with PDF and common image formats (JPEG, PNG).
+* **Border type handling:** Extract both bordered and border-less tables.
+* **Page-level control:** Extract tables from specific pages or defined page ranges.
+* **Confidence thresholding:** Results are filtered based on a configurable confidence score (0.0–1.0).
+* **Deterministic performance:** Designed for predictable, repeatable extraction across environments (Windows, Linux, Azure, Docker).
\ No newline at end of file
diff --git a/Document-Processing/Data-Extraction/Smart-Table-Extractor/overview.md b/Document-Processing/Data-Extraction/Smart-Table-Extractor/overview.md
new file mode 100644
index 0000000000..0fcb679de7
--- /dev/null
+++ b/Document-Processing/Data-Extraction/Smart-Table-Extractor/overview.md
@@ -0,0 +1,13 @@
+---
+title: Intro for smart Table extractor | Syncfusion
+description: This page introduces Syncfusion Smart Table Extractor, explaining its purpose, features, and usage details for .NET applications.
+platform: document-processing
+control: PDF
+documentation: UG
+keywords: Assemblies
+---
+
+# Welcome to Syncfusion Smart Table Extractor Library
+
+Syncfusion® Smart Table Extractor is a high accuracy, deterministic C# library that detects and extracts tabular data from PDFs and scanned images for .NET workflows, It detects table regions, header rows, columns, and cell spans (merged cells) and provides per-cell confidence scores and structured exports ready for downstream processing.
+
diff --git a/Document-Processing/Data-Extraction/overview.md b/Document-Processing/Data-Extraction/overview.md
new file mode 100644
index 0000000000..282299f8ab
--- /dev/null
+++ b/Document-Processing/Data-Extraction/overview.md
@@ -0,0 +1,20 @@
+---
+title: Extract structured data from PDF & image Files in .NET | Syncfusion
+description: Syncfusion® Smart Data Extractor is a .NET library that extracts tables, forms, text, and images from documents, producing PDFs and JSON.
+platform: document-processing
+control: SmartDataExtractor
+documentation: UG
+keywords: Assemblies
+---
+
+# Welcome to syncfusion Data Extraction Library
+
+Syncfusion® is a high performance, deterministic C# library that extracts complete document structures from PDFs and images.
+
+## List of DataExtraction:
+
+* SmartDataExtractor - analyzes visual layout lines, boxes, labels, and alignment to locate and extract elements such as table structure, text elements, images, headers, footers, and form fields with per-field confidence scores for immediate review, export, or integration.
+* SmartTableExtractor - detects table regions, header rows, columns, and cell spans (merged cells) and provides per-cell confidence scores and structured exports ready for downstream processing.
+* SmartFormRecognizer - analyzes visual layout cues—lines, boxes and circles—it locates form regions and extracts common controls (text fields, checkboxes, radio buttons, signatures), producing clean JSON with per-field confidence scores. Where form fields are detected, the library can also produce a fillable PDF with corresponding form fields added for immediate use.
+
+
diff --git a/Document-Processing/Excel/Spreadsheet/Angular/cell-range.md b/Document-Processing/Excel/Spreadsheet/Angular/cell-range.md
index c4e8004885..4037bb0519 100644
--- a/Document-Processing/Excel/Spreadsheet/Angular/cell-range.md
+++ b/Document-Processing/Excel/Spreadsheet/Angular/cell-range.md
@@ -13,19 +13,19 @@ A group of cells in a sheet is known as cell range.
## Wrap text
-Wrap text allows you to display large content as multiple lines in a single cell. By default, the wrap text support is enabled. Use the [`allowWrap`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#allowwrap) property to enable or disable the wrap text support in spreadsheet.
+Wrap text allows you to display large content as multiple lines in a single cell. By default, the wrap text support is enabled. Use the [`allowWrap`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#allowwrap) property to enable or disable the wrap text support in spreadsheet.
Wrap text can be applied or removed to a cell or range of cells in the following ways,
* Using the `wrap` property in `cell`, you can enable or disable wrap text to a cell at initial load.
* Select or deselect wrap button from ribbon toolbar to apply or remove the wrap text to the selected range.
-* Using the [`wrap`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#wrap) method, you can apply or remove the wrap text once the component is loaded.
+* Using the [`wrap`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#wrap) method, you can apply or remove the wrap text once the component is loaded.
The following code example shows the wrap text functionality in spreadsheet.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/wrap-text-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/wrap-text-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -44,13 +44,13 @@ The following features have some limitations in wrap text:
## Merge cells
-Merge cells allows users to span two or more cells in the same row or column into a single cell. When cells with multiple values are merged, top-left most cell data will be the data for the merged cell. By default, the merge cells option is enabled. Use [`allowMerge`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#allowmerge) property to enable or disable the merge cells option in spreadsheet.
+Merge cells allows users to span two or more cells in the same row or column into a single cell. When cells with multiple values are merged, top-left most cell data will be the data for the merged cell. By default, the merge cells option is enabled. Use [`allowMerge`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#allowmerge) property to enable or disable the merge cells option in spreadsheet.
You can merge the range of cells in the following ways,
* Set the `rowSpan` and `colSpan` property in `cell` to merge the number of cells at initial load.
* Select the range of cells and apply merge by selecting the desired option from ribbon toolbar.
-* Use [`merge`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#merge) method to merge the range of cells, once the component is loaded.
+* Use [`merge`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#merge) method to merge the range of cells, once the component is loaded.
The available merge options in spreadsheet are,
@@ -64,8 +64,8 @@ The available merge options in spreadsheet are,
The following code example shows the merge cells operation in spreadsheet.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/merge-cells-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/merge-cells-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -84,7 +84,7 @@ The following features have some limitations in Merge:
## Data Validation
-Data Validation is used to restrict the user from entering the invalid data. You can use the [`allowDataValidation`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#allowdatavalidation) property to enable or disable data validation.
+Data Validation is used to restrict the user from entering the invalid data. You can use the [`allowDataValidation`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#allowdatavalidation) property to enable or disable data validation.
> * The default value for `allowDataValidation` property is `true`.
@@ -95,7 +95,7 @@ You can apply data validation to restrict the type of data or the values that us
You can apply data validation by using one of the following ways,
* Select the Data tab in the Ribbon toolbar, and then choose the Data Validation item.
-* Use the [`addDataValidation()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#adddatavalidation) method programmatically.
+* Use the [`addDataValidation()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#adddatavalidation) method programmatically.
### Clear Validation
@@ -104,7 +104,7 @@ Clear validation feature is used to remove data validations from the specified r
You can clear data validation rule by one of the following ways,
* Select the Data tab in the Ribbon toolbar, and then choose the Clear Validation item.
-* Use the [`removeDataValidation()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#removedatavalidation) method programmatically.
+* Use the [`removeDataValidation()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#removedatavalidation) method programmatically.
### Highlight Invalid Data
@@ -113,7 +113,7 @@ Highlight invalid data feature is used to highlight the previously entered inval
You can highlight an invalid data by using one of the following ways,
* Select the Data tab in the Ribbon toolbar, and then choose the Highlight Invalid Data item.
-* Use the [`addInvalidHighlight()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#addinvalidhighlight) method programmatically.
+* Use the [`addInvalidHighlight()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#addinvalidhighlight) method programmatically.
### Clear Highlighted Invalid Data
@@ -122,11 +122,11 @@ Clear highlight feature is used to remove the highlight from invalid cells.
You can clear the highlighted invalid data by using the following ways,
* Select the Data tab in the Ribbon toolbar, and then choose the Clear Highlight item.
-* Use the [`removeInvalidHighlight()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#removeinvalidhighlight) method programmatically.
+* Use the [`removeInvalidHighlight()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#removeinvalidhighlight) method programmatically.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/data-validation-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/data-validation-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -149,13 +149,13 @@ When this rule is applied, the Spreadsheet evaluates the entered value against t
You can apply custom data validation using two methods.
* The first is through the Data Validation dialog in the Ribbon toolbar. Navigate to the Data tab, select the Data Validation option, and choose the Custom type from the Allow dropdown menu.
-* The second method is programmatically, using the [`addDataValidation()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#adddatavalidation) method, which allows developers to set custom rules dynamically via code.
+* The second method is programmatically, using the [`addDataValidation()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#adddatavalidation) method, which allows developers to set custom rules dynamically via code.
The following code example demonstrates how to add custom data validation with a formula in a Spreadsheet.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/data-validation-cs2/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/data-validation-cs2/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -238,8 +238,8 @@ You can do this by one of the following ways,
In the following sample, you can enable/disable the fill option on the button click event by using the `showFillOptions` property in `autoFillSettings`.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/autofill-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/autofill-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -265,7 +265,7 @@ Clear feature helps you to clear the cell contents (formulas and data), formats
You can apply clear feature by using one of the following ways,
* Select the clear icon in the Ribbon toolbar under the Home Tab.
-* Using the [`clear()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#clear) method to clear the values.
+* Using the [`clear()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#clear) method to clear the values.
Clear has the following types in the spreadsheet,
@@ -278,11 +278,11 @@ Clear has the following types in the spreadsheet,
### Methods
-Clear the cell contents and formats in the Spreadsheet document by using the [clear](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#clear) method. The [clear](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#clear) method has `type` and `range` as parameters. The following code example shows how to clear the cell contents and formats in the button click event.
+Clear the cell contents and formats in the Spreadsheet document by using the [clear](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#clear) method. The [clear](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#clear) method has `type` and `range` as parameters. The following code example shows how to clear the cell contents and formats in the button click event.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/clear-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/clear-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
diff --git a/Document-Processing/Excel/Spreadsheet/Angular/clipboard.md b/Document-Processing/Excel/Spreadsheet/Angular/clipboard.md
index ca6e725890..7c70da2fe5 100644
--- a/Document-Processing/Excel/Spreadsheet/Angular/clipboard.md
+++ b/Document-Processing/Excel/Spreadsheet/Angular/clipboard.md
@@ -9,7 +9,7 @@ documentation: ug
# Clipboard in Angular Spreadsheet component
-The Spreadsheet provides support for the clipboard operations (cut, copy, and paste). Clipboard operations can be enabled or disabled by setting the [`enableClipboard`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#enableclipboard) property in Spreadsheet.
+The Spreadsheet provides support for the clipboard operations (cut, copy, and paste). Clipboard operations can be enabled or disabled by setting the [`enableClipboard`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#enableclipboard) property in Spreadsheet.
> By default, the `enableClipboard` property is true.
@@ -24,7 +24,7 @@ Cut can be done in one of the following ways.
* Using Cut button in the Ribbon’s HOME tab to perform cut operation.
* Using Cut option in the Context Menu.
* Using `Ctrl + X` | `Command + X` keyboard shortcut.
-* Using the [`cut`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#cut) method.
+* Using the [`cut`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#cut) method.
## Copy
@@ -37,7 +37,7 @@ Copy can be done in one of the following ways.
* Using Copy button in the Ribbon’s HOME tab to perform copy operation.
* Using Copy option in the Context Menu.
* Using `Ctrl + C` | `Command + C` keyboard shortcut.
-* Using the [`copy`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#copy) method.
+* Using the [`copy`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#copy) method.
## Paste
@@ -55,13 +55,13 @@ Paste can be done in one of the following ways.
* Using Paste button in the Ribbon’s HOME tab to perform paste operation.
* Using Paste option in the Context Menu.
* Using `Ctrl + V` | `Command + V` keyboard shortcut.
-* Using the [`paste`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#paste) method.
+* Using the [`paste`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#paste) method.
> If you use the Keyboard shortcut key for cut (`Ctrl + X`) | copy (`Ctrl + C`) from other sources, you should use `Ctrl + V` shortcut while pasting into the spreadsheet.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/clipboard-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/clipboard-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -73,11 +73,11 @@ Paste can be done in one of the following ways.
## Prevent the paste functionality
-The following example shows, how to prevent the paste action in spreadsheet. In [`actionBegin`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#actionbegin) event, you can set `cancel` argument as false in paste request type.
+The following example shows, how to prevent the paste action in spreadsheet. In [`actionBegin`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#actionbegin) event, you can set `cancel` argument as false in paste request type.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/clipboard-cs2/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/clipboard-cs2/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
diff --git a/Document-Processing/Excel/Spreadsheet/Angular/comment.md b/Document-Processing/Excel/Spreadsheet/Angular/comment.md
index 43f35f1b84..40bd6eb17b 100644
--- a/Document-Processing/Excel/Spreadsheet/Angular/comment.md
+++ b/Document-Processing/Excel/Spreadsheet/Angular/comment.md
@@ -174,8 +174,8 @@ You can bind **comment thread** to cells at initial load by providing a `comment
In the below sample, comments are added to a specific cell using cell data binding. The "Comments" review pane is shown initially by enabling the `showCommentsPane` property, and comments are added using `updateCell` method in the `created` event.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/comment-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/comment-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
diff --git a/Document-Processing/Excel/Spreadsheet/Angular/context-menu.md b/Document-Processing/Excel/Spreadsheet/Angular/context-menu.md
index d03529353d..4df55c0242 100644
--- a/Document-Processing/Excel/Spreadsheet/Angular/context-menu.md
+++ b/Document-Processing/Excel/Spreadsheet/Angular/context-menu.md
@@ -9,7 +9,7 @@ documentation: ug
# Context menu in Angular Spreadsheet component
-Context Menu is used to improve user interaction with Spreadsheet using the popup menu. This will open when right-clicking on Cell/Column Header/Row Header/ Pager in the Spreadsheet. You can use [`enableContextMenu`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#enablecontextmenu) property to enable/disable context menu.
+Context Menu is used to improve user interaction with Spreadsheet using the popup menu. This will open when right-clicking on Cell/Column Header/Row Header/ Pager in the Spreadsheet. You can use [`enableContextMenu`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#enablecontextmenu) property to enable/disable context menu.
> The default value for the `enableContextMenu` property is `true`.
@@ -19,13 +19,13 @@ Please find the table below for default context menu items and their actions.
| Context Menu items | Action |
|-------|---------|
-| [`Cut`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#cut) | Cut the selected cells data to the clipboard, you can select a cell where you want to move the data. |
-| [`Copy`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#copy) | Copy the selected cells data to the clipboard, so that you can paste it to somewhere else. |
-| [`Paste`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#paste) | Paste the data from clipboard to spreadsheet. |
-| [`Paste Special`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#paste) | `Values` - Paste the data values from clipboard to spreadsheet. `Formats` - Paste the data formats from clipboard to spreadsheet. |
-| [`Filter`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#filter) | Perform filtering to the selected cells based on an active cell’s value. |
-| [`Sort`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#sort) | Perform sorting to the selected range of cells by ascending or descending. |
-| [`Hyperlink`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#hyperlink) | Create a link in the spreadsheet to navigate to web links or cell reference within the sheet or other sheets in the Spreadsheet. |
+| [`Cut`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#cut) | Cut the selected cells data to the clipboard, you can select a cell where you want to move the data. |
+| [`Copy`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#copy) | Copy the selected cells data to the clipboard, so that you can paste it to somewhere else. |
+| [`Paste`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#paste) | Paste the data from clipboard to spreadsheet. |
+| [`Paste Special`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#paste) | `Values` - Paste the data values from clipboard to spreadsheet. `Formats` - Paste the data formats from clipboard to spreadsheet. |
+| [`Filter`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#filter) | Perform filtering to the selected cells based on an active cell’s value. |
+| [`Sort`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#sort) | Perform sorting to the selected range of cells by ascending or descending. |
+| [`Hyperlink`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#hyperlink) | Create a link in the spreadsheet to navigate to web links or cell reference within the sheet or other sheets in the Spreadsheet. |
## Context Menu Items in Row Header / Column Header
@@ -33,14 +33,14 @@ Please find the table below for default context menu items and their actions.
| Context Menu items | Action |
|-------|---------|
-| [`Cut`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#cut) | Cut the selected row/column header data to the clipboard, you can select a cell where you want to move the data. |
-| [`Copy`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#copy) | Copy the selected row/column header data to the clipboard, so that you can paste it to somewhere else. |
-| [`Paste`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#paste) | Paste the data from clipboard to spreadsheet. |
-| [`Paste Special`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#paste) | `Values` - Paste the data values from clipboard to spreadsheet. `Formats` - Paste the data formats from clipboard to spreadsheet. |
-| [`Insert Rows`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#insertrow) / [`Insert Columns`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#insertcolumn) | Insert new rows or columns into the worksheet. |
-| [`Delete Rows`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#delete) / [`Delete Columns`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#delete) | Delete existing rows or columns from the worksheet. |
-| [`Hide Rows`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#hiderow) / [`Hide Columns`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#hidecolumn) | Hide the or and columns. |
-| [`UnHide Rows`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#hiderow) / [`UnHide Columns`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#hidecolumn) | Show the hidden rows or columns. |
+| [`Cut`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#cut) | Cut the selected row/column header data to the clipboard, you can select a cell where you want to move the data. |
+| [`Copy`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#copy) | Copy the selected row/column header data to the clipboard, so that you can paste it to somewhere else. |
+| [`Paste`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#paste) | Paste the data from clipboard to spreadsheet. |
+| [`Paste Special`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#paste) | `Values` - Paste the data values from clipboard to spreadsheet. `Formats` - Paste the data formats from clipboard to spreadsheet. |
+| [`Insert Rows`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#insertrow) / [`Insert Columns`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#insertcolumn) | Insert new rows or columns into the worksheet. |
+| [`Delete Rows`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#delete) / [`Delete Columns`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#delete) | Delete existing rows or columns from the worksheet. |
+| [`Hide Rows`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#hiderow) / [`Hide Columns`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#hidecolumn) | Hide the or and columns. |
+| [`UnHide Rows`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#hiderow) / [`UnHide Columns`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#hidecolumn) | Show the hidden rows or columns. |
## Context Menu Items in Pager
@@ -51,8 +51,8 @@ Please find the table below for default context menu items and their actions.
| `Insert` | Insert a new worksheet in front of an existing worksheet in the spreadsheet. |
| `Delete` | Delete the selected worksheet from the spreadsheet. |
| `Rename` | Rename the selected worksheet. |
-| [`Protect Sheet`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#protectsheet) | Prevent unwanted changes from others by limiting their ability to edit. |
-| [`Hide`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#hide) |Hide the selected worksheet. |
+| [`Protect Sheet`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#protectsheet) | Prevent unwanted changes from others by limiting their ability to edit. |
+| [`Hide`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#hide) |Hide the selected worksheet. |
## Context Menu Customization
@@ -64,13 +64,13 @@ You can perform the following context menu customization options in the spreadsh
### Add Context Menu Items
-You can add the custom items in context menu using the [`addContextMenuItems`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#addcontextmenuitems) in `contextmenuBeforeOpen` event
+You can add the custom items in context menu using the [`addContextMenuItems`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#addcontextmenuitems) in `contextmenuBeforeOpen` event
In this demo, Custom Item is added after the Paste item in the context menu.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/contextmenu/addContextMenu-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/contextmenu/addContextMenu-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -82,13 +82,13 @@ In this demo, Custom Item is added after the Paste item in the context menu.
### Remove Context Menu Items
-You can remove the items in context menu using the [`removeContextMenuItems`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#removecontextmenuItems) in `contextmenuBeforeOpen` event
+You can remove the items in context menu using the [`removeContextMenuItems`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#removecontextmenuItems) in `contextmenuBeforeOpen` event
In this demo, Insert Column item has been removed from the row/column header context menu.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/contextmenu/addContextMenu-cs2/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/contextmenu/addContextMenu-cs2/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -100,13 +100,13 @@ In this demo, Insert Column item has been removed from the row/column header con
### Enable/Disable Context Menu Items
-You can enable/disable the items in context menu using the [`enableContextMenuItems`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#enablecontextmenuItems) in `contextmenuBeforeOpen` event
+You can enable/disable the items in context menu using the [`enableContextMenuItems`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#enablecontextmenuItems) in `contextmenuBeforeOpen` event
In this demo, Rename item is disabled in the pager context menu.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/contextmenu/addContextMenu-cs3/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/contextmenu/addContextMenu-cs3/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
diff --git a/Document-Processing/Excel/Spreadsheet/Angular/data-binding.md b/Document-Processing/Excel/Spreadsheet/Angular/data-binding.md
index c1adfd6668..4afc89401a 100644
--- a/Document-Processing/Excel/Spreadsheet/Angular/data-binding.md
+++ b/Document-Processing/Excel/Spreadsheet/Angular/data-binding.md
@@ -9,7 +9,7 @@ documentation: ug
# Data binding in Angular Spreadsheet component
-The Spreadsheet uses [`DataManager`](https://helpej2.syncfusion.com/angular/documentation/data/), which supports both RESTful JSON data services and local JavaScript object array binding to a range. The `dataSource` property can be assigned either with the instance of [`DataManager`](https://helpej2.syncfusion.com/angular/documentation/data/) or JavaScript object array collection.
+The Spreadsheet uses [DataManager](https://helpej2.syncfusion.com/angular/documentation/data), which supports both RESTful JSON data services and local JavaScript object array binding to a range. The `dataSource` property can be assigned either with the instance of [DataManager](https://helpej2.syncfusion.com/angular/documentation/data) or JavaScript object array collection.
> To bind data to a cell, use `cell data binding` support.
@@ -20,8 +20,8 @@ To bind local data to the Spreadsheet, you can assign a JavaScript object array
Refer to the following code example for local data binding.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/local-data-binding-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/local-data-binding-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -31,19 +31,19 @@ Refer to the following code example for local data binding.
{% previewsample "/document-processing/samples/spreadsheet/angular/local-data-binding-cs1" %}
-> The local data source can also be provided as an instance of the [`DataManager`](https://helpej2.syncfusion.com/angular/documentation/data/). By default, [`DataManager`](https://helpej2.syncfusion.com/angular/documentation/data/) uses [`JsonAdaptor`](https://ej2.syncfusion.com/angular/documentation/data/adaptors#json-adaptor) for local data-binding.
+> The local data source can also be provided as an instance of the [DataManager](https://helpej2.syncfusion.com/angular/documentation/data). By default, [DataManager](https://helpej2.syncfusion.com/angular/documentation/data) uses [`JsonAdaptor`](https://ej2.syncfusion.com/angular/documentation/data/adaptors#json-adaptor) for local data-binding.
### Customizing column data mapping
-By default, when a data source is bound to a sheet, columns are auto-assigned from the data source fields sequentially. This means that the first field in the data source is assigned to Column A, the second to Column B, and so on, sequentially. However, now you can customize the column assignments by specifying the appropriate field names in the desired order using the [fieldsOrder](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/rangeModel/#fieldsorder) property.
+By default, when a data source is bound to a sheet, columns are auto-assigned from the data source fields sequentially. This means that the first field in the data source is assigned to Column A, the second to Column B, and so on, sequentially. However, now you can customize the column assignments by specifying the appropriate field names in the desired order using the [fieldsOrder](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/rangemodel#fieldsorder) property.
> You can customize the mapping of column data only in the local data binding support.
The following code example demonstrates how to customize the mapping of column data:
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/field-mapping-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/field-mapping-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -55,13 +55,13 @@ The following code example demonstrates how to customize the mapping of column d
## Remote data
-To bind remote data to the Spreadsheet control, assign service data as an instance of [`DataManager`](https://helpej2.syncfusion.com/angular/documentation/data/) to the `dataSource` property. To interact with remote data source, provide the service endpoint `url`.
+To bind remote data to the Spreadsheet control, assign service data as an instance of [DataManager](https://helpej2.syncfusion.com/angular/documentation/data) to the `dataSource` property. To interact with remote data source, provide the service endpoint `url`.
Refer to the following code example for remote data binding.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/remote-data-binding-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/remote-data-binding-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -78,8 +78,8 @@ Refer to the following code example for remote data binding.
`OData` is a standardized protocol for creating and consuming data. You can retrieve data from OData service using the DataManager. Refer to the following code example for remote Data binding using OData service.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/remote-data-binding-cs2/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/remote-data-binding-cs2/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -94,8 +94,8 @@ Refer to the following code example for remote data binding.
You can use WebApiAdaptor to bind spreadsheet with Web API created using OData endpoint.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/remote-data-binding-cs3/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/remote-data-binding-cs3/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -107,13 +107,13 @@ You can use WebApiAdaptor to bind spreadsheet with Web API created using OData e
## Cell data binding
-The Spreadsheet control can bind the data to individual cell in a sheet . To achive this you can use the `value` property.
+The Spreadsheet control can bind the data to individual cell in a sheet . To achieve this you can use the `value` property.
Refer to the following code example for cell data binding.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/cell-data-binding-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/cell-data-binding-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -142,8 +142,8 @@ The following table defines the arguments of the `dataSourceChanged` event.
> For inserting a row at the end of the datasource range, you should insert a row below at the end of the range to trigger the `dataSourceChanged` event with action `add`.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/dynamic-data-binding-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/dynamic-data-binding-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -155,15 +155,15 @@ The following table defines the arguments of the `dataSourceChanged` event.
## Dynamic data binding using updateRange method
-The [updateRange](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#updaterange) method allows you to dynamically update the [dataSource](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/rangeModel/#datasource) in a spreadsheet without manually iterating through each cell. This method is especially useful for efficiently applying bulk updates to a specific range within the spreadsheet.
+The [updateRange](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#updaterange) method allows you to dynamically update the [dataSource](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/rangemodel#datasource) in a spreadsheet without manually iterating through each cell. This method is especially useful for efficiently applying bulk updates to a specific range within the spreadsheet.
-To use the [updateRange](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#updaterange) method, provide the new [dataSource](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/rangeModel/#datasource) and specify the starting cell for the update using the [startCell](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/rangeModel/#startcell) property of the `RangeDirective`. Additionally, set the `sheetIndex` to target the appropriate sheet for the update.
+To use the [updateRange](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#updaterange) method, provide the new [dataSource](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/rangemodel#datasource) and specify the starting cell for the update using the [startCell](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/rangemodel#startcell) property of the `RangeDirective`. Additionally, set the `sheetIndex` to target the appropriate sheet for the update.
-The following code example demonstrates how to dynamically update data using the [updateRange](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#updaterange) method.
+The following code example demonstrates how to dynamically update data using the [updateRange](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#updaterange) method.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/dynamic-data-binding-cs2/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/dynamic-data-binding-cs2/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
diff --git a/Document-Processing/Excel/Spreadsheet/Angular/editing.md b/Document-Processing/Excel/Spreadsheet/Angular/editing.md
index e510bad2a8..9753360452 100644
--- a/Document-Processing/Excel/Spreadsheet/Angular/editing.md
+++ b/Document-Processing/Excel/Spreadsheet/Angular/editing.md
@@ -9,7 +9,7 @@ documentation: ug
# Editing in Angular Spreadsheet component
-You can edit the contents of a cell directly in the cell or by typing in the formula bar. By default, the editing feature is enabled in the spreadsheet. Use the [`allowEditing`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#allowediting) property to enable or disable the editing feature.
+You can edit the contents of a cell directly in the cell or by typing in the formula bar. By default, the editing feature is enabled in the spreadsheet. Use the [`allowEditing`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#allowediting) property to enable or disable the editing feature.
## Edit cell
@@ -19,7 +19,7 @@ You can start editing by one of the following ways,
* Press `F2` key to edit the active cell.
* Use formula bar to perform editing.
* Use `BACKSPACE` or `SPACE` key to clear the cell content and start the edit mode.
-* Using the [`startEdit`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#startedit) method.
+* Using the [`startEdit`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#startedit) method.
## Save cell
@@ -27,20 +27,20 @@ If the cell is in editable state, you can save the edited cell by one of the fol
* Perform mouse click on any other cell rather than the current editing cell.
* Press `Enter` or `Tab` keys to save the edited cell content.
-* Using the [`endEdit`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#endedit) method.
+* Using the [`endEdit`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#endedit) method.
## Cancel editing
To cancel the editing without saving the changes, you can use one of the following ways,
* Press `ESCAPE` key, this will remove the editable state and update the unchanged cell content.
-* Using the [`closeEdit`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#closeedit) method.
+* Using the [`closeEdit`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#closeedit) method.
-The following sample shows how to prevent the editing and cell save. Here `E` column prevent the editing by using cancel argument as true in [`cellEdit`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#celledit) event. In `D` column, prevent saving the edited changes by using cancel argument as true in [`beforeCellSave`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#beforecellsave) and use [`closeEdit`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#closeedit) method in spreadsheet.
+The following sample shows how to prevent the editing and cell save. Here `E` column prevent the editing by using cancel argument as true in [`cellEdit`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#celledit) event. In `D` column, prevent saving the edited changes by using cancel argument as true in [`beforeCellSave`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#beforecellsave) and use [`closeEdit`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#closeedit) method in spreadsheet.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/editing-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/editing-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
diff --git a/Document-Processing/Excel/Spreadsheet/Angular/filter.md b/Document-Processing/Excel/Spreadsheet/Angular/filter.md
index d13ebdf21e..1cec3dc3f4 100644
--- a/Document-Processing/Excel/Spreadsheet/Angular/filter.md
+++ b/Document-Processing/Excel/Spreadsheet/Angular/filter.md
@@ -9,7 +9,7 @@ documentation: ug
# Filter in Angular Spreadsheet component
-Filtering helps you to view specific rows in the spreadsheet by hiding the other rows. You can use the [`allowFiltering`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#allowfiltering) property to enable or disable filtering functionality.
+Filtering helps you to view specific rows in the spreadsheet by hiding the other rows. You can use the [`allowFiltering`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#allowfiltering) property to enable or disable filtering functionality.
> * The default value for `allowFiltering` property is `true`.
@@ -21,23 +21,23 @@ In the active Spreadsheet, select a range of cells to filter by value of the cel
* Select the filter item in the Ribbon toolbar.
* Right-click the sheet, select the filter item in the context menu.
-* Use the [`applyFilter()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#applyfilter) method programmatically.
+* Use the [`applyFilter()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#applyfilter) method programmatically.
* Use `Ctrl + Shift + L` keyboard shortcut to apply the filter.
> * Use `Alt + Up/Down` keyboard shortcut to open the filter dialog.
## Filter by criteria
-The [`applyFilter()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#applyfilter) method will apply the filter UI, based on the predicate and range given in the arguments.
+The [`applyFilter()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#applyfilter) method will apply the filter UI, based on the predicate and range given in the arguments.
-> * The [`beforeFilter`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#beforefilter) event will be triggered before filtering the specified range.
-> * The [`filterComplete`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#filtercomplete) event will be triggered after the filter action is completed successfully.
+> * The [`beforeFilter`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#beforefilter) event will be triggered before filtering the specified range.
+> * The [`filterComplete`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#filtercomplete) event will be triggered after the filter action is completed successfully.
The following code example shows `filter` functionality in the Spreadsheet control.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/filter-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/filter-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -81,13 +81,13 @@ The following errors have been handled for filtering,
## Get data from filtered rows
-Filtering allows you to view specific rows in a spreadsheet while hiding the others. The [`allowFiltering`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#allowfiltering) property allows you to enable or disable filtering functionality through the UI. You can also use the [`allowFiltering`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#allowfiltering) property and [`applyFilter`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#applyfilter) method combination to filter data via code behind. The filtered rows can be identified by iterating through the row collection on the sheet and using the `isFiltered` property available in each row object.
+Filtering allows you to view specific rows in a spreadsheet while hiding the others. The [`allowFiltering`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#allowfiltering) property allows you to enable or disable filtering functionality through the UI. You can also use the [`allowFiltering`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#allowfiltering) property and [`applyFilter`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#applyfilter) method combination to filter data via code behind. The filtered rows can be identified by iterating through the row collection on the sheet and using the `isFiltered` property available in each row object.
The following code example shows how to get the filtered rows.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/filter-cs2/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/filter-cs2/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
diff --git a/Document-Processing/Excel/Spreadsheet/Angular/formatting.md b/Document-Processing/Excel/Spreadsheet/Angular/formatting.md
index ce6fce8f86..bc113054cc 100644
--- a/Document-Processing/Excel/Spreadsheet/Angular/formatting.md
+++ b/Document-Processing/Excel/Spreadsheet/Angular/formatting.md
@@ -16,7 +16,7 @@ Formatting options make your data easier to view and understand. The different t
## Number Formatting
-Number formatting provides a type for your data in the Spreadsheet. Use the [`allowNumberFormatting`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#allownumberformatting) property to enable or disable the number formatting option in the Spreadsheet. The different types of number formatting supported in Spreadsheet are,
+Number formatting provides a type for your data in the Spreadsheet. Use the [`allowNumberFormatting`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#allownumberformatting) property to enable or disable the number formatting option in the Spreadsheet. The different types of number formatting supported in Spreadsheet are,
| Types | Format Code | Format ID |
|---------|---------|---------|
@@ -34,7 +34,7 @@ Number formatting provides a type for your data in the Spreadsheet. Use the [`al
Number formatting can be applied in following ways,
* Using the `format` property in `cell`, you can set the desired format to each cell at initial load.
-* Using the [`numberFormat`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#numberformat) method, you can set the number format to a cell or range of cells.
+* Using the [`numberFormat`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#numberformat) method, you can set the number format to a cell or range of cells.
* Selecting the number format option from ribbon toolbar.
### Custom Number Formatting
@@ -83,14 +83,14 @@ The different types of custom number format populated in the custom number forma
| Accounting | `_(* #,##0.00_);_(* (#,##0.00);_(* "-"??_);_(@_)` | 43 |
Custom Number formatting can be applied in following ways,
-* Using the [`numberFormat`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#numberformat) method, you can set your own custom number format to a cell or range of cells.
+* Using the [`numberFormat`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#numberformat) method, you can set your own custom number format to a cell or range of cells.
* Selecting the custom number format option from custom number formats dialog or type your own format in dialog input and then click apply button. It will apply the custom format for selected cells.
The following code example shows the number formatting in cell data.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/format/number-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/format/number-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -144,8 +144,8 @@ configureLocalizedFormat(this.spreadsheetObj, deLocaleFormats);
The following code example demonstrates how to configure culture-based formats for different cultures in the spreadsheet.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/format/globalization-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/format/globalization-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -157,9 +157,9 @@ The following code example demonstrates how to configure culture-based formats f
## Text and cell formatting
-Text and cell formatting enhances the look and feel of your cell. It helps to highlight a particular cell or range of cells from a whole workbook. You can apply formats like font size, font family, font color, text alignment, border etc. to a cell or range of cells. Use the [`allowCellFormatting`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#allowcellformatting) property to enable or disable the text and cell formatting option in Spreadsheet. You can set the formats in following ways,
+Text and cell formatting enhances the look and feel of your cell. It helps to highlight a particular cell or range of cells from a whole workbook. You can apply formats like font size, font family, font color, text alignment, border etc. to a cell or range of cells. Use the [`allowCellFormatting`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#allowcellformatting) property to enable or disable the text and cell formatting option in Spreadsheet. You can set the formats in following ways,
* Using the `style` property, you can set formats to each cell at initial load.
-* Using the [`cellFormat`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#cellformat) method, you can set formats to a cell or range of cells.
+* Using the [`cellFormat`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#cellformat) method, you can set formats to a cell or range of cells.
* You can also apply by clicking the desired format option from the ribbon toolbar.
### Fonts
@@ -215,8 +215,8 @@ Borders can be applied in the following ways,
The following code example shows the style formatting in text and cells of the spreadsheet.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/format/number-cs2/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/format/number-cs2/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -235,7 +235,7 @@ The following features are not supported in Formatting:
## Conditional Formatting
-Conditional formatting helps you to format a cell or range of cells based on the conditions applied. You can enable or disable conditional formats by using the [`allowConditionalFormat`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#allowconditionalformat) property.
+Conditional formatting helps you to format a cell or range of cells based on the conditions applied. You can enable or disable conditional formats by using the [`allowConditionalFormat`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#allowconditionalformat) property.
> * The default value for the `allowConditionalFormat` property is `true`.
@@ -244,7 +244,7 @@ Conditional formatting helps you to format a cell or range of cells based on the
You can apply conditional formatting by using one of the following ways,
* Select the conditional formatting icon in the Ribbon toolbar under the Home Tab.
-* Using the [`conditionalFormat()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#conditionalformat) method to define the condition.
+* Using the [`conditionalFormat()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#conditionalformat) method to define the condition.
* Using the `conditionalFormats` in sheets model.
Conditional formatting has the following types in the spreadsheet,
@@ -310,11 +310,11 @@ In the MAY and JUN columns, we have applied conditional formatting custom format
You can clear the defined rules by using one of the following ways,
* Using the “Clear Rules” option in the Conditional Formatting button of HOME Tab in the ribbon to clear the rule from selected cells.
-* Using the [`clearConditionalFormat()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#clearconditionalformat) method to clear the defined rules.
+* Using the [`clearConditionalFormat()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#clearconditionalformat) method to clear the defined rules.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/conditional-formatting-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/conditional-formatting-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
diff --git a/Document-Processing/Excel/Spreadsheet/Angular/formulas.md b/Document-Processing/Excel/Spreadsheet/Angular/formulas.md
index f0f98ebd6e..7e2d1fb6ef 100644
--- a/Document-Processing/Excel/Spreadsheet/Angular/formulas.md
+++ b/Document-Processing/Excel/Spreadsheet/Angular/formulas.md
@@ -18,7 +18,7 @@ You can set formula for a cell in the following ways,
* Using the `formula` property from `cell`, you can set the formula or expression to each cell at initial load.
* Set the formula or expression through data binding.
* You can set formula for a cell by [`editing`](./editing).
-* Using the [`updateCell`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#updatecell) method, you can set or update the cell formula.
+* Using the [`updateCell`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#updatecell) method, you can set or update the cell formula.
## Culture-Based Argument Separator
@@ -26,13 +26,13 @@ Previously, although you could import culture-based Excel files into the Spreads
> Before importing culture-based Excel files, ensure that the Spreadsheet component is rendered with the corresponding culture. Additionally, launch the import/export services with the same culture to ensure compatibility.
-When loading spreadsheet data with culture-based formula argument separators using cell data binding, local/remote data, or JSON, ensure to set the [listSeparator](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#listseparator) property value as the culture-based list separator from your end. Additionally, note that when importing an Excel file, the [listSeparator](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#listseparator) property will be updated based on the culture of the launched import/export service.
+When loading spreadsheet data with culture-based formula argument separators using cell data binding, local/remote data, or JSON, ensure to set the [listSeparator](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#listseparator) property value as the culture-based list separator from your end. Additionally, note that when importing an Excel file, the [listSeparator](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#listseparator) property will be updated based on the culture of the launched import/export service.
In the example below, the Spreadsheet component is rendered with the `German culture (de)`. Additionally, you can find references on how to set the culture-based argument separator and culture-based formatted numeric value as arguments to the formulas.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/formula-cs3/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/formula-cs3/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -46,13 +46,13 @@ In the example below, the Spreadsheet component is rendered with the `German cul
The Spreadsheet includes a number of built-in formulas. For your convenience, a list of supported formulas can be found [here](https://help.syncfusion.com/document-processing/excel/spreadsheet/angular/formulas#supported-formulas).
-You can define and use an unsupported formula, i.e. a user defined/custom formula, in the spreadsheet by using the [addCustomFunction](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#addcustomfunction) function. Meanwhile, remember that you should define a user defined/custom formula whose results should only return a single value. If a user-defined/custom formula returns an array, it will be time-consuming to update adjacent cell values.
+You can define and use an unsupported formula, i.e. a user defined/custom formula, in the spreadsheet by using the [addCustomFunction](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#addcustomfunction) function. Meanwhile, remember that you should define a user defined/custom formula whose results should only return a single value. If a user-defined/custom formula returns an array, it will be time-consuming to update adjacent cell values.
The following code example shows an unsupported formula in the spreadsheet.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/formula-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/formula-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -62,13 +62,13 @@ The following code example shows an unsupported formula in the spreadsheet.
{% previewsample "/document-processing/samples/spreadsheet/angular/formula-cs1" %}
-Second, if you want to directly compute any formula or expression, you can use the [computeExpression](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#computeexpression) method. This method will work for both built-in and used-defined/custom formula.
+Second, if you want to directly compute any formula or expression, you can use the [computeExpression](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#computeexpression) method. This method will work for both built-in and used-defined/custom formula.
The following code example shows how to use `computeExpression` method in the spreadsheet.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/formula-cs2/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/formula-cs2/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -80,22 +80,22 @@ The following code example shows how to use `computeExpression` method in the sp
## Formula bar
-Formula bar is used to edit or enter cell data in much easier way. By default, the formula bar is enabled in the spreadsheet. Use the [`showFormulaBar`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#showformulabar) property to enable or disable the formula bar.
+Formula bar is used to edit or enter cell data in much easier way. By default, the formula bar is enabled in the spreadsheet. Use the [`showFormulaBar`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#showformulabar) property to enable or disable the formula bar.
## Named Ranges
You can define a meaningful name for a cell range and use it in the formula for calculation. It makes your formula much easier to understand and maintain. You can add named ranges to the Spreadsheet in the following ways,
-* Using the [`definedNames`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#definednames) collection, you can add multiple named ranges at initial load.
-* Use the [`addDefinedName`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#adddefinedname) method to add a named range dynamically.
-* You can remove an added named range dynamically using the [`removeDefinedName`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#removedefinedname) method.
+* Using the [`definedNames`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#definednames) collection, you can add multiple named ranges at initial load.
+* Use the [`addDefinedName`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#adddefinedname) method to add a named range dynamically.
+* You can remove an added named range dynamically using the [`removeDefinedName`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#removedefinedname) method.
* Select the range of cells, and then enter the name for the selected range in the name box.
The following code example shows the usage of named ranges support.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/defined-name-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/defined-name-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -112,19 +112,19 @@ The Spreadsheet provides a `Calculation Mode` feature like the calculation optio
* `Automatic`: Formulas are recalculated instantly whenever a change occurs in the dependent cells.
* `Manual`: Formulas are recalculated only when triggered explicitly by the user using options like `Calculate Sheet` or `Calculate Workbook`.
-You can configure the calculate mode using the [`calculationMode`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#calculationmode) property of the Spreadsheet. These modes offer flexibility to balance real-time updates and performance optimization.
+You can configure the calculate mode using the [`calculationMode`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#calculationmode) property of the Spreadsheet. These modes offer flexibility to balance real-time updates and performance optimization.
### Automatic Mode
In Automatic Mode, formulas are recalculated instantly whenever a dependent cell is modified. This mode is perfect for scenarios where real-time updates are essential, ensuring that users see the latest results without additional actions.
-For example, consider a spreadsheet where cell `C1` contains the formula `=A1+B1`. When the value in `A1` or `B1` changes, `C1` updates immediately without requiring any user intervention. You can enable this mode by setting the [`calculationMode`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#calculationmode) property to `Automatic`.
+For example, consider a spreadsheet where cell `C1` contains the formula `=A1+B1`. When the value in `A1` or `B1` changes, `C1` updates immediately without requiring any user intervention. You can enable this mode by setting the [`calculationMode`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#calculationmode) property to `Automatic`.
The following code example demonstrates how to set the Automatic calculation mode in a Spreadsheet.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/calculation-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/calculation-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -146,8 +146,8 @@ For example, imagine a spreadsheet where cell `C1` contains the formula `=A1+B1`
The following code example demonstrates how to set the Manual calculation mode in a Spreadsheet.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/calculation-cs2/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/calculation-cs2/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
diff --git a/Document-Processing/Excel/Spreadsheet/Angular/freeze-pane.md b/Document-Processing/Excel/Spreadsheet/Angular/freeze-pane.md
index a23f140355..9f7bafddce 100644
--- a/Document-Processing/Excel/Spreadsheet/Angular/freeze-pane.md
+++ b/Document-Processing/Excel/Spreadsheet/Angular/freeze-pane.md
@@ -9,16 +9,16 @@ documentation: ug
# Freeze pane in Angular Spreadsheet component
-Freeze Panes helps you to keep particular rows or columns visible when scrolling the sheet content in the spreadsheet. You can specify the number of frozen rows and columns using the [`frozenRows`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#frozenrows) and [`frozenColumns`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#frozencolumns) properties inside the [`Sheet`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet#sheets) property.
+Freeze Panes helps you to keep particular rows or columns visible when scrolling the sheet content in the spreadsheet. You can specify the number of frozen rows and columns using the [`frozenRows`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#frozenrows) and [`frozenColumns`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#frozencolumns) properties inside the [`Sheet`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet#sheets) property.
-## Apply freezepanes on UI
+## Apply freeze panes on UI
**User Interface**:
In the active spreadsheet, click the cell where you want to create freeze panes. Freeze panes can be done in any of the following ways:
* Select the View tab in the Ribbon toolbar and choose the `Freeze Panes` item.
-* Use the [`freezePanes`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#freezepanes) method programmatically.
+* Use the [`freezePanes`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#freezepanes) method programmatically.
## FrozenRows
@@ -45,8 +45,8 @@ In the active spreadsheet, select the cell where you want to create frozen colum
In this demo, the frozenColumns is set as ‘2’, and the frozenRows is set as ‘2’. Hence, the two columns on the left and the top two rows are frozen.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/freezepane-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/freezepane-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
diff --git a/Document-Processing/Excel/Spreadsheet/Angular/getting-started.md b/Document-Processing/Excel/Spreadsheet/Angular/getting-started.md
index cbb25b0521..3dd6d909de 100644
--- a/Document-Processing/Excel/Spreadsheet/Angular/getting-started.md
+++ b/Document-Processing/Excel/Spreadsheet/Angular/getting-started.md
@@ -15,6 +15,10 @@ To get start quickly with Angular Spreadsheet using CLI, you can check on this v
{% youtube "https://www.youtube.com/watch?v=2Ozwe37X-7Q" %}
+## Prerequisites
+
+Ensure your development environment meets the [`System Requirements for Syncfusion® Angular Spreadsheet component`](https://help.syncfusion.com/document-processing/system-requirements).
+
## Dependencies
The following list of dependencies are required to use the Spreadsheet component in your application.
@@ -59,6 +63,14 @@ This command prompts you to configure settings such as whether to include Angula
By default, it will create a CSS-based application.
+During project setup, when prompted for the Server-side rendering (SSR) option, choose the appropriate configuration.
+
+
+
+Select the required AI tool or ‘none’ if you do not need any AI tool.
+
+
+
Navigate to the created application folder:
```bash
@@ -127,7 +139,7 @@ This can be referenced in `[src/styles.css]` using following code.
## Add Spreadsheet component
-Modify the template in [src/app/app.component.ts] file to render the spreadsheet component. Add the Angular Spreadsheet by using `` selector in template section of the `app.component.ts` file.
+Modify the template in [src/app/app.ts] file to render the spreadsheet component. Add the Angular Spreadsheet by using `` selector in template section of the `app.ts` file.
```typescript
import { Component } from '@angular/core';
@@ -156,8 +168,8 @@ ng serve
The following example shows a basic Spreadsheet component
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/spreadsheet-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/spreadsheet-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
diff --git a/Document-Processing/Excel/Spreadsheet/Angular/global-local.md b/Document-Processing/Excel/Spreadsheet/Angular/global-local.md
index e9761547b9..dac37ff775 100644
--- a/Document-Processing/Excel/Spreadsheet/Angular/global-local.md
+++ b/Document-Processing/Excel/Spreadsheet/Angular/global-local.md
@@ -11,7 +11,7 @@ documentation: ug
## Localization
-The [`Localization`](https://helpej2.syncfusion.com/angular/documentation/common/globalization/localization) library allows you to localize the default text content of the Spreadsheet. The Spreadsheet has static text on some features (cell formatting, Merge, Data validation, etc.) that can be changed to other cultures (Arabic, Deutsch, French, etc.) by defining the [`locale`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#locale) value and translation object.
+The [Localization](https://helpej2.syncfusion.com/angular/documentation/common/globalization/localization) library allows you to localize the default text content of the Spreadsheet. The Spreadsheet has static text on some features (cell formatting, Merge, Data validation, etc.) that can be changed to other cultures (Arabic, Deutsch, French, etc.) by defining the [`locale`]https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#locale) value and translation object.
The following list of properties and their values are used in the Spreadsheet.
@@ -381,8 +381,8 @@ To load translation object in an application, use [`load`](https://helpej2.syncf
The following example demonstrates the Spreadsheet in `French` culture. In the below sample we have translated the ribbon tab names and Home tab content (clipboard, cell style).
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/local-data-binding-cs2/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/local-data-binding-cs2/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -410,8 +410,8 @@ You need to load culture format files in **ngOnInit** function.
The following example demonstrates the Spreadsheet in French [ `fr-CH`] culture. In the below sample we have globalized the Date(Date column), Time(Time column), and Currency(Amount column) formats.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/internationalization-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/internationalization-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -423,11 +423,11 @@ The following example demonstrates the Spreadsheet in French [ `fr-CH`] culture.
## Right to left (RTL)
-RTL provides an option to switch the text direction and layout of the Spreadsheet component from right to left. It improves the user experiences and accessibility for users who use right-to-left languages (Arabic, Farsi, Urdu, etc.). To enable RTL Spreadsheet, set the [`enableRtl`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#enablertl) to true.
+RTL provides an option to switch the text direction and layout of the Spreadsheet component from right to left. It improves the user experiences and accessibility for users who use right-to-left languages (Arabic, Farsi, Urdu, etc.). To enable RTL Spreadsheet, set the [`enableRtl`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#enablertl) to true.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/local-data-binding-cs3/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/local-data-binding-cs3/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
diff --git a/Document-Processing/Excel/Spreadsheet/Angular/how-to/change-active-sheet.md b/Document-Processing/Excel/Spreadsheet/Angular/how-to/change-active-sheet.md
index f4fa2020f4..45a3f76766 100644
--- a/Document-Processing/Excel/Spreadsheet/Angular/how-to/change-active-sheet.md
+++ b/Document-Processing/Excel/Spreadsheet/Angular/how-to/change-active-sheet.md
@@ -1,21 +1,21 @@
---
layout: post
-title: Changing the active sheet while importing a file in the Angular Spreadsheet component | Syncfusion
+title: Change active sheet when importing Angular Spreadsheet | Syncfusion
description: Learn here all about changing the active sheet index while importing a file in Syncfusion Angular Spreadsheet component of Syncfusion Essential JS 2 and more.
platform: document-processing
control: Spreadsheet
documentation: ug
---
-## Changing the active sheet while importing a file in Angular Spreadsheet component
+# Change active sheet when importing Angular Spreadsheet
-You can change the active sheet of imported file by updating [`activeSheetIndex`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#activesheetindex) property on the [`openComplete`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#opencomplete) event.
+You can change the active sheet of imported file by updating [`activeSheetIndex`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#activesheetindex) property on the [`openComplete`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#opencomplete) event.
The following code example shows how to set the active sheet when importing an Excel file.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/change-active-sheet-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/change-active-sheet-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
diff --git a/Document-Processing/Excel/Spreadsheet/Angular/how-to/create-a-object-structure.md b/Document-Processing/Excel/Spreadsheet/Angular/how-to/create-a-object-structure.md
index e16ca89193..dc7442bd88 100644
--- a/Document-Processing/Excel/Spreadsheet/Angular/how-to/create-a-object-structure.md
+++ b/Document-Processing/Excel/Spreadsheet/Angular/how-to/create-a-object-structure.md
@@ -170,8 +170,8 @@ In the following demo, the JSON structure is passed to the [`openFromJson`](http
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/json-structure-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/json-structure-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="datasource.ts" %}
diff --git a/Document-Processing/Excel/Spreadsheet/Angular/how-to/identify-the-context-menu-opened.md b/Document-Processing/Excel/Spreadsheet/Angular/how-to/identify-the-context-menu-opened.md
index 5cdae0d479..0d79cca2f6 100644
--- a/Document-Processing/Excel/Spreadsheet/Angular/how-to/identify-the-context-menu-opened.md
+++ b/Document-Processing/Excel/Spreadsheet/Angular/how-to/identify-the-context-menu-opened.md
@@ -11,7 +11,7 @@ documentation: ug
The Spreadsheet includes several context menus that will open and display depending on the action. When you right-click on a cell, for example, a context menu with options related to the cell element appears.
-The class name returned by the [contextMenuBeforeOpen](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#contextmenubeforeopen) event can be used to identify the context menu that is opened. The context menus and their class names are tabulated below.
+The class name returned by the [contextMenuBeforeOpen](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#contextmenubeforeopen) event can be used to identify the context menu that is opened. The context menus and their class names are tabulated below.
| Class name | Context menu name |
|-------|---------|
@@ -23,8 +23,8 @@ The class name returned by the [contextMenuBeforeOpen](https://ej2.syncfusion.co
The following code example shows how to identify the context menu opened.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/contextmenu-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/contextmenu-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
diff --git a/Document-Processing/Excel/Spreadsheet/Angular/illustrations.md b/Document-Processing/Excel/Spreadsheet/Angular/illustrations.md
index 53779e22bc..6cb474dd6c 100644
--- a/Document-Processing/Excel/Spreadsheet/Angular/illustrations.md
+++ b/Document-Processing/Excel/Spreadsheet/Angular/illustrations.md
@@ -69,8 +69,8 @@ Image feature allows you to view and insert an image in a spreadsheet, and you c
* Use the `top` and `left` property in the `insertImage()` method programmatically.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/image-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/image-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -89,9 +89,9 @@ The following features have some limitations in Image:
## Chart
-A chart is a graphical representation of data, that organizes and represents a set of numerical or qualitative data. It mostly displays the selected range of data in terms of `x`-axis and `y`-axis. You can use the [`allowChart`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#allowchart) property to enable or disable the chart functionality.
+A chart is a graphical representation of data, that organizes and represents a set of numerical or qualitative data. It mostly displays the selected range of data in terms of `x`-axis and `y`-axis. You can use the [`allowChart`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#allowchart) property to enable or disable the chart functionality.
->* The default value for the [`allowChart`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#allowchart) property is `true`.
+>* The default value for the [`allowChart`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#allowchart) property is `true`.
### Types of chart
@@ -109,9 +109,9 @@ The following types of charts are available in the Spreadsheet.
You can insert the chart by using one of the following ways,
* Select the chart icon in the Ribbon toolbar under the Insert Tab.
-* Use the [`insertChart()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#insertchart) method programmatically.
+* Use the [`insertChart()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#insertchart) method programmatically.
-The available parameter in the [`insertChart()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#insertchart) method is,
+The available parameter in the [`insertChart()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#insertchart) method is,
| Parameter | Type | Description |
|-----|------|----|
@@ -127,8 +127,8 @@ The available arguments in the `ChartModel` are:
* markerSettings: Specifies the marker settings. The marker is used to provide information about the data points in the series and is currently only applicable to the line chart.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/chart-cs2/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/chart-cs2/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -141,9 +141,9 @@ The available arguments in the `ChartModel` are:
### Delete Chart
* If you want to delete the chart, just select the chart, and then press the Delete key.
-* Use the [`deleteChart()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#deletechart) method programmatically.
+* Use the [`deleteChart()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#deletechart) method programmatically.
-The available parameter in the [`deleteChart()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#deletechart) method is,
+The available parameter in the [`deleteChart()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#deletechart) method is,
| Parameter | Type | Description |
|-----|------|----|
@@ -158,8 +158,8 @@ Chart feature allows you to view and insert a chart in a spreadsheet, and you ca
* You can change the position of the chart by drag and drop.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/chart-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/chart-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -171,11 +171,11 @@ Chart feature allows you to view and insert a chart in a spreadsheet, and you ca
#### Customization of line chart markers
-Using the [`actionBegin`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#actionbegin) event, you can change the shape, size, fill color, and border of the line chart marker. In the following example, you can see the modified marker appearance, such as shape and size, while creating the line chart with UI interaction.
+Using the [`actionBegin`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#actionbegin) event, you can change the shape, size, fill color, and border of the line chart marker. In the following example, you can see the modified marker appearance, such as shape and size, while creating the line chart with UI interaction.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/chart-cs3/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/chart-cs3/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
diff --git a/Document-Processing/Excel/Spreadsheet/Angular/images/gettingstarted_AI.png b/Document-Processing/Excel/Spreadsheet/Angular/images/gettingstarted_AI.png
new file mode 100644
index 0000000000..c48a149899
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/Angular/images/gettingstarted_AI.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/Angular/images/gettingstarted_SSR.png b/Document-Processing/Excel/Spreadsheet/Angular/images/gettingstarted_SSR.png
new file mode 100644
index 0000000000..ecd7db48f4
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/Angular/images/gettingstarted_SSR.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/Angular/link.md b/Document-Processing/Excel/Spreadsheet/Angular/link.md
index bced2e4108..416bd45fca 100644
--- a/Document-Processing/Excel/Spreadsheet/Angular/link.md
+++ b/Document-Processing/Excel/Spreadsheet/Angular/link.md
@@ -9,7 +9,7 @@ documentation: ug
# Link in Angular Spreadsheet component
-Hyperlink is used to navigate to web links or cell reference within the sheet or to other sheets in Spreadsheet. You can use the [`allowHyperlink`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#allowhyperlink) property to enable or disable hyperlink functionality.
+Hyperlink is used to navigate to web links or cell reference within the sheet or to other sheets in Spreadsheet. You can use the [`allowHyperlink`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#allowhyperlink) property to enable or disable hyperlink functionality.
> * The default value for `allowHyperlink` property is `true`.
@@ -22,7 +22,7 @@ You can insert a hyperlink in a worksheet cell for quick access to related infor
In the active spreadsheet, click the cell where you want to create a hyperlink. Insert hyperlink can be done by any of the following ways:
* Select the INSERT tab in the Ribbon toolbar and choose the `Link` item.
* Right-click the cell and then click Hyperlink item in the context menu, or you can press Ctrl+K.
-* Use the [`addHyperlink()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#addhyperlink) method programmatically.
+* Use the [`addHyperlink()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#addhyperlink) method programmatically.
## Edit Hyperlink
@@ -45,15 +45,15 @@ Performing this operation remove a single hyperlink without losing the display t
In the active spreadsheet, click the cell where you want to remove a hyperlink. remove hyperlink can be done by any of the following ways:
* Right-click the cell and then click Remove Hyperlink item in the context menu.
-* Use the [`removeHyperlink()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#removehyperlink) method programmatically.
+* Use the [`removeHyperlink()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#removehyperlink) method programmatically.
## How to change target attribute
There is an event named `beforeHyperlinkClick` which triggers only on clicking hyperlink. You can customize where to open the hyperlink by using the `target` property in the arguments of that event.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/link-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/link-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
diff --git a/Document-Processing/Excel/Spreadsheet/Angular/notes.md b/Document-Processing/Excel/Spreadsheet/Angular/notes.md
index 3ca170df32..3c0780c4bc 100644
--- a/Document-Processing/Excel/Spreadsheet/Angular/notes.md
+++ b/Document-Processing/Excel/Spreadsheet/Angular/notes.md
@@ -18,8 +18,8 @@ When opening the Excel document with notes in the Spreadsheet, they will be disp
In the below example, you can add, edit, save, and delete notes.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/note-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/note-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -134,8 +134,8 @@ To disable the note functionality, you need to set the [enableNotes](https://ej2
In the below example, the note functionality is disabled in the Spreadsheet.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/note-cs2/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/note-cs2/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -152,8 +152,8 @@ The notes can be added initially when the Spreadsheet loads using cell data bind
In the below example, you can navigate between notes using **Previous Note** and **Next Note** options, toggle individual note visibility with **Show/Hide Note**, display all notes at once using **Show All Notes** and see how notes are added using the `updateCell` method in the `created` event.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/note-cs3/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/note-cs3/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
diff --git a/Document-Processing/Excel/Spreadsheet/Angular/open-save.md b/Document-Processing/Excel/Spreadsheet/Angular/open-save.md
index 82363caf32..4aa02a612c 100644
--- a/Document-Processing/Excel/Spreadsheet/Angular/open-save.md
+++ b/Document-Processing/Excel/Spreadsheet/Angular/open-save.md
@@ -13,17 +13,17 @@ In import an excel file, it needs to be read and converted to client side Spread
## Open
-The Spreadsheet control opens an Excel document with its data, style, format, and more. To enable this feature, set [`allowOpen`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#allowopen) as `true` and assign service url to the [`openUrl`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#openurl) property.
+The Spreadsheet control opens an Excel document with its data, style, format, and more. To enable this feature, set [`allowOpen`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#allowopen) as `true` and assign service url to the [`openUrl`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#openurl) property.
**User Interface**:
In user interface you can open an Excel document by clicking `File > Open` menu item in ribbon.
-The following sample shows the `Open` option by using the [`openUrl`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#openUrl) property in the Spreadsheet control. You can also use the [`beforeOpen`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#beforeopen) event to trigger before opening an Excel file.
+The following sample shows the `Open` option by using the [`openUrl`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#openurl) property in the Spreadsheet control. You can also use the [`beforeOpen`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#beforeopen) event to trigger before opening an Excel file.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/open-save-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/open-save-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -42,17 +42,17 @@ Please find the below table for the beforeOpen event arguments.
| requestData | object | To provide the Form data. |
> * Use `Ctrl + O` keyboard shortcut to open Excel documents.
-> * The default value of the [allowOpen](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#allowopen) property is `true`. For demonstration purpose, we have showcased the [allowOpen](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#allowopen) property in previous code snippet.
+> * The default value of the [allowOpen](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#allowopen) property is `true`. For demonstration purpose, we have showcased the [allowOpen](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#allowopen) property in previous code snippet.
### Open an excel file using a file uploader
-If you explore your machine to select and upload an excel document using the file uploader, you will receive the uploaded document as a raw file in the [success](https://ej2.syncfusion.com/angular/documentation/api/uploader/#success) event of the file uploader. In this `success` event, you should pass the received raw file as an argument to the Spreadsheet's [open](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#open) method to see the appropriate output.
+If you explore your machine to select and upload an excel document using the file uploader, you will receive the uploaded document as a raw file in the [success](https://ej2.syncfusion.com/angular/documentation/api/uploader/index-default#success) event of the file uploader. In this `success` event, you should pass the received raw file as an argument to the Spreadsheet's [open](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#open) method to see the appropriate output.
The following code example shows how to import an excel document using file uploader in spreadsheet.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/open-save-cs7/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/open-save-cs7/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -64,11 +64,11 @@ The following code example shows how to import an excel document using file uplo
### Open an external URL excel file while initial load
-You can achieve to access the remote excel file by using the [`created`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#created) event. In this event you can fetch the excel file and convert it to a blob. Convert this blob to a file and [`open`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#open) this file by using Spreadsheet component open method.
+You can achieve to access the remote excel file by using the [`created`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#created) event. In this event you can fetch the excel file and convert it to a blob. Convert this blob to a file and [`open`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#open) this file by using Spreadsheet component open method.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/open-save-cs2/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/open-save-cs2/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -80,13 +80,13 @@ You can achieve to access the remote excel file by using the [`created`](https:/
### Open an excel file from blob data
-By default, the Spreadsheet component provides an option to browse files from the local file system and open them within the component. If you want to open an Excel file from blob data, you need to fetch the blob data from the server or another source and convert this blob data into a `File` object. Then, you can use the [open](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#open) method in the Spreadsheet component to load that `File` object.
+By default, the Spreadsheet component provides an option to browse files from the local file system and open them within the component. If you want to open an Excel file from blob data, you need to fetch the blob data from the server or another source and convert this blob data into a `File` object. Then, you can use the [open](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#open) method in the Spreadsheet component to load that `File` object.
Please find the code to fetch the blob data and load it into the Spreadsheet component below.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/open-from-blobdata-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/open-from-blobdata-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -98,7 +98,7 @@ Please find the code to fetch the blob data and load it into the Spreadsheet com
### Open an Excel file located on a server
-By default, the Spreadsheet component provides an option to browse files from the local file system and open them within the component. If you want to load an Excel file located on a server, you need to configure the server endpoint to fetch the Excel file from the server location, process it using `Syncfusion.EJ2.Spreadsheet.AspNet.Core`, and send it back to the client side as `JSON data`. On the client side, you should use the [openFromJson](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#openfromjson) method to load that `JSON data` into the Spreadsheet component.
+By default, the Spreadsheet component provides an option to browse files from the local file system and open them within the component. If you want to load an Excel file located on a server, you need to configure the server endpoint to fetch the Excel file from the server location, process it using `Syncfusion.EJ2.Spreadsheet.AspNet.Core`, and send it back to the client side as `JSON data`. On the client side, you should use the [openFromJson](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#openfromjson) method to load that `JSON data` into the Spreadsheet component.
**Server Endpoint**:
@@ -157,9 +157,9 @@ Before proceeding with the opening process, you should deploy the spreadsheet op
[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 opening the Excel file with this hosted open URL, you need to prevent the default file opening process to avoid getting a corrupted file on the open service end. The spreadsheet component appends the file to the `formData` and sends it to the open service, which causes the file to get corrupted. To prevent this, set the `args.cancel` value to `true` in the [`beforeOpen`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#beforeopen) event. After that, you will get the selected file in the `beforeOpen` event argument. Then, convert this file into a base64 string and send it to the open service URL using a fetch request.
+After deployment, you will get the AWS service URL for the open and save actions. Before opening the Excel file with this hosted open URL, you need to prevent the default file opening process to avoid getting a corrupted file on the open service end. The spreadsheet component appends the file to the `formData` and sends it to the open service, which causes the file to get corrupted. To prevent this, set the `args.cancel` value to `true` in the [`beforeOpen`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#beforeopen) event. After that, you will get the selected file in the `beforeOpen` event argument. Then, convert this file into a base64 string and send it to the open service URL using a fetch request.
-On the open service end, convert the base64 string back to a file and pass it as an argument to the workbook `Open` method. The open service will process the file and return the spreadsheet data in JSON format. You will then receive this JSON data in the fetch success callback. Finally, use the [openFromJson](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#openfromjson) method to load this JSON data into the spreadsheet component.
+On the open service end, convert the base64 string back to a file and pass it as an argument to the workbook `Open` method. The open service will process the file and return the spreadsheet data in JSON format. You will then receive this JSON data in the fetch success callback. Finally, use the [openFromJson](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#openfromjson) method to load this JSON data into the spreadsheet component.
The following code example shows how to open an Excel file using a hosted web service in AWS Lambda, as mentioned above.
@@ -255,13 +255,13 @@ public class OpenOptions
### Open an excel file from Base64 string data
-In the Syncfusion® Spreadsheet component, there is no direct option to open data as a `Base64` string. To achieve this, the `import()` function fetches the `Base64` string, converts it to a Blob, creates a File object from the Blob, and then opens it using the [open](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#open) method in the spreadsheet.
+In the Syncfusion® Spreadsheet component, there is no direct option to open data as a `Base64` string. To achieve this, the `import()` function fetches the `Base64` string, converts it to a Blob, creates a File object from the Blob, and then opens it using the [open](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#open) method in the spreadsheet.
The following code example shows how to open the spreadsheet data as base64 string.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/base-64-string/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/base-64-string/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -273,11 +273,11 @@ The following code example shows how to open the spreadsheet data as base64 stri
### Open excel file into a read-only mode
-You can open excel file into a read-only mode by using the [`openComplete`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#opencomplete) event. In this event, you must protect all the sheets and lock its used range cells by using [`protectSheet`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#protectsheet) and [`lockCells`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#lockcells) methods.
+You can open excel file into a read-only mode by using the [`openComplete`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#opencomplete) event. In this event, you must protect all the sheets and lock its used range cells by using [`protectSheet`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#protectsheet) and [`lockCells`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#lockcells) methods.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/open-save-cs12/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/open-save-cs12/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -292,7 +292,7 @@ You can open excel file into a read-only mode by using the [`openComplete`](http
### Configure JSON deserialization options
-Previously, when opening a workbook JSON object into the Spreadsheet using the [openFromJson](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#openfromjson) method, the entire workbook, including all features specified in the JSON object, was processed and loaded into the Spreadsheet.
+Previously, when opening a workbook JSON object into the Spreadsheet using the [openFromJson](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#openfromjson) method, the entire workbook, including all features specified in the JSON object, was processed and loaded into the Spreadsheet.
Now, you have the option to selectively ignore some features during the opening of the JSON object by configuring deserialization options and passing them as arguments to the `openFromJson` method. This argument is optional, and if not configured, the entire workbook JSON object will be loaded without ignoring any features.
@@ -317,8 +317,8 @@ spreadsheet.openFromJson({ file: file }, { ignoreStyle: true });
The following code snippet demonstrates how to configure the deserialization options and pass them as arguments to the openFromJson method:
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/open-from-json/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/open-from-json/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -364,7 +364,7 @@ public IActionResult Open(IFormCollection openRequest)
When opening large Excel files with many features and data, the server response can become very large. This might cause memory issues or connection problems during data transmission. The `Chunk Response Processing` feature solves this by dividing the server response into smaller parts, called chunks, and sending them to the client in parallel. The client receives these chunks and combines them to load the Excel data smoothly into the spreadsheet.
-You can enable this feature by setting the [`chunkSize`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/openSettings/#chunksize) property in the [`openSettings`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#opensettings) object. Set the [`chunkSize`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/openSettings/#chunksize) to a value greater than 0 (in bytes). The [`chunkSize`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/openSettings/#chunksize) defines how large each chunk will be. Make sure your server supports chunked responses to use this feature effectively.
+You can enable this feature by setting the [chunkSize](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/opensettings#chunksize) property in the [openSettings](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#opensettings) object. Set the [chunkSize](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/opensettings#chunksize) to a value greater than 0 (in bytes). The [chunkSize](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/opensettings#chunksize) defines how large each chunk will be. Make sure your server supports chunked responses to use this feature effectively.
> This feature reduces memory usage on both the server and client, ensuring that resources are managed efficiently during data transmission. By sending smaller parts of data, it prevents connection issues that could occur with large payloads, making the transmission process more reliable. Additionally, it allows large Excel files to be loaded smoothly into the spreadsheet, providing a seamless user experience even with extensive data.
@@ -433,11 +433,11 @@ The [attachment](https://www.syncfusion.com/downloads/support/directtrac/general
### Add custom header during open
-You can add your own custom header to the open action in the Spreadsheet. For processing the data, it has to be sent from server to client side and adding customer header can provide privacy to the data with the help of Authorization Token. Through the [`beforeOpen`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#beforeopen) event, the custom header can be added to the request during open action.
+You can add your own custom header to the open action in the Spreadsheet. For processing the data, it has to be sent from server to client side and adding customer header can provide privacy to the data with the help of Authorization Token. Through the [`beforeOpen`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#beforeopen) event, the custom header can be added to the request during open action.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/open-save-cs8/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/open-save-cs8/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -467,17 +467,17 @@ public IActionResult Open(IFormCollection openRequest)
## Save
-The Spreadsheet control saves its data, style, format, and more as Excel file document. To enable this feature, set [`allowSave`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#allowsave) as `true` and assign service url to the [`saveUrl`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#saveurl) property.
+The Spreadsheet control saves its data, style, format, and more as Excel file document. To enable this feature, set [`allowSave`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#allowsave) as `true` and assign service url to the [`saveUrl`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#saveurl) property.
**User Interface**:
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/angular/documentation/api/spreadsheet/#saveurl) property in the Spreadsheet control. You can also use the [`beforeSave`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#beforesave) event to trigger before saving the Spreadsheet as an Excel file.
+The following sample shows the `Save` option by using the [`saveUrl`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#saveurl) property in the Spreadsheet control. You can also use the [`beforeSave`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#beforesave) event to trigger before saving the Spreadsheet as an Excel file.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/open-save-cs3/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/open-save-cs3/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -500,18 +500,18 @@ Please find the below table for the beforeSave event arguments.
| cancel | boolean | To prevent the save operations. |
> * Use `Ctrl + S` keyboard shortcut to save the Spreadsheet data as Excel file.
-> * The default value of [allowSave](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#allowsave) property is `true`. For demonstration purpose, we have showcased the [allowSave](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#allowsave) property in previous code snippet.
+> * The default value of [allowSave](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#allowsave) property is `true`. For demonstration purpose, we have showcased the [allowSave](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#allowsave) property in previous code snippet.
> * Demo purpose only, we have used the online web service url link.
### Save an excel file as blob data
-By default, the Spreadsheet component 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/angular/documentation/api/spreadsheet/#beforesave) event of the spreadsheet. Subsequently, you will receive the spreadsheet data as a blob in the [saveComplete](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#savecomplete) event. You can then post the blob data to the server endpoint for saving.
+By default, the Spreadsheet component 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/angular/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/angular/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 component below.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/save-as-blobdata-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/save-as-blobdata-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -523,7 +523,7 @@ Please find below the code to retrieve blob data from the Spreadsheet component
### Save an Excel file to a server
-By default, the Spreadsheet component 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/angular/documentation/api/spreadsheet/#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 component 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/angular/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**:
@@ -594,7 +594,7 @@ 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/angular/documentation/api/spreadsheet/#beforesave) event. After that, convert the spreadsheet data into JSON format using the [saveAsJson](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#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/angular/documentation/api/spreadsheet/index-default#beforesave) event. After that, convert the spreadsheet data into JSON format using the [saveAsJson](https://ej2.syncfusion.com/angular/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.
@@ -694,13 +694,13 @@ 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/angular/documentation/api/spreadsheet/#savecomplete) event when you set the `needBlobData` as **true** and `isFullPost` as **false** in the [beforeSave](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#beforesave) event.
+> You can get the Spreadsheet data as blob in the [saveComplete](https://ej2.syncfusion.com/angular/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/angular/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="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/base-64-string/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/base-64-string/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -712,7 +712,7 @@ The following code example shows how to save the spreadsheet data as base64 stri
### Configure JSON serialization options
-Previously, when saving the Spreadsheet as a workbook JSON object using the [saveAsJson](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#saveasjson) method, the entire workbook with all loaded features were processed and saved as a JSON object.
+Previously, when saving the Spreadsheet as a workbook JSON object using the [saveAsJson](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#saveasjson) method, the entire workbook with all loaded features were processed and saved as a JSON object.
Now, you have the option to selectively ignore some features while saving the Spreadsheet as a JSON object by configuring serialization options and passing them as arguments to the `saveAsJson` method. This argument is optional, and if not configured, the entire workbook JSON object will be saved without ignoring any features.
@@ -737,8 +737,8 @@ spreadsheet.saveAsJson({ onlyValues: true });
The following code snippet demonstrates how to configure the serialization options and pass them as arguments to the saveAsJson method:
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/save-as-json/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/save-as-json/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -750,11 +750,11 @@ The following code snippet demonstrates how to configure the serialization optio
### Send and receive custom params from client to server
-Passing the custom parameters from client to server by using [`beforeSave`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#beforesave) event.
+Passing the custom parameters from client to server by using [`beforeSave`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#beforesave) event.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/open-save-cs4/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/open-save-cs4/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -777,11 +777,11 @@ Server side code snippets:
### Add custom header during save
-You can add your own custom header to the save action in the Spreadsheet. For processing the data, it has to be sent from client to server side and adding customer header can provide privacy to the data with the help of Authorization Token. Through the [`fileMenuItemSelect`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#filemenuitemselect) event, the custom header can be added to the request during save action.
+You can add your own custom header to the save action in the Spreadsheet. For processing the data, it has to be sent from client to server side and adding customer header can provide privacy to the data with the help of Authorization Token. Through the [`fileMenuItemSelect`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#filemenuitemselect) event, the custom header can be added to the request during save action.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/open-save-cs11/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/open-save-cs11/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -793,7 +793,7 @@ You can add your own custom header to the save action in the Spreadsheet. For pr
### Change the PDF orientation
-By default, the PDF document is created in **Portrait** orientation. You can change the orientation of the PDF document by using the `args.pdfLayoutSettings.orientation` argument settings in the [`beforeSave`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#beforesave) event.
+By default, the PDF document is created in **Portrait** orientation. You can change the orientation of the PDF document by using the `args.pdfLayoutSettings.orientation` argument settings in the [`beforeSave`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#beforesave) event.
The possible values are:
@@ -801,8 +801,8 @@ The possible values are:
* **Landscape** - Used to display content in a horizontal layout.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/open-save-cs6/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/open-save-cs6/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -817,11 +817,11 @@ The possible values are:
### Methods
-To save the Spreadsheet document as an `xlsx, xls, csv, or pdf` file, by using [save](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#save) method should be called with the `url`, `fileName` and `saveType` as parameters. The following code example shows to save the spreadsheet file as an `xlsx, xls, csv, or pdf` in the button click event.
+To save the Spreadsheet document as an `xlsx, xls, csv, or pdf` file, by using [save](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#save) method should be called with the `url`, `fileName` and `saveType` as parameters. The following code example shows to save the spreadsheet file as an `xlsx, xls, csv, or pdf` in the button click event.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/open-save-cs5/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/open-save-cs5/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
diff --git a/Document-Processing/Excel/Spreadsheet/Angular/performance-best-practices.md b/Document-Processing/Excel/Spreadsheet/Angular/performance-best-practices.md
index 6683d5481a..4eacf1cbfd 100644
--- a/Document-Processing/Excel/Spreadsheet/Angular/performance-best-practices.md
+++ b/Document-Processing/Excel/Spreadsheet/Angular/performance-best-practices.md
@@ -32,11 +32,11 @@ To enable the chunk response processing feature, you can refer to the following
### Configure JSON serialization options during open
-Serialization options in the Angular Spreadsheet allow you to exclude specific features—such as styles, formats, charts, images, wrap, etc.—from the `Workbook JSON object` when opening it in the Spreadsheet using the [`openFromJson`](https://helpej2.syncfusion.com/angular/documentation/api/spreadsheet/#openfromjson) method. By skipping unnecessary features, you can significantly improve performance, especially when working with large or complex workbooks.
+Serialization options in the Angular Spreadsheet allow you to exclude specific features—such as styles, formats, charts, images, wrap, etc.—from the `Workbook JSON object` when opening it in the Spreadsheet using the [`openFromJson`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#openfromjson) method. By skipping unnecessary features, you can significantly improve performance, especially when working with large or complex workbooks.
This is particularly useful when:
* You need only the raw data without formatting.
-* You're opening the `Workbook JSON object` in the Spreadsheet using the [`openFromJson`](https://helpej2.syncfusion.com/angular/documentation/api/spreadsheet/#openfromjson) method.
+* You're opening the `Workbook JSON object` in the Spreadsheet using the [`openFromJson`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#openfromjson) method.
* You want to minimize the size of the JSON payload and optimize processing speed.
Refer to the following UG section to learn how to configure these options:
@@ -104,25 +104,25 @@ To learn more about Manual Calculation Mode and how to enable it, you can refer
When saving large Excel files with extensive data and features using **File → Save As** or the **save** method, the Spreadsheet triggers a server API call through a form submit operation. This can lead to performance issues such as timeouts or delays, particularly due to the size and complexity of the workbook.
-To mitigate these issues during the save operation, you can set the [`isFullPost`](https://helpej2.syncfusion.com/angular/documentation/api/spreadsheet/beforeSaveEventArgs/#isfullpost) property to **false** in the [`beforeSave`](https://helpej2.syncfusion.com/angular/documentation/api/spreadsheet/#beforesave) event of the Spreadsheet.
+To mitigate these issues during the save operation, you can set the [`isFullPost`](https://helpej2.syncfusion.com/angular/documentation/api/spreadsheet/beforesaveeventargs#isfullpost) property to **false** in the [`beforeSave`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#beforesave) event of the Spreadsheet.
The following code example shows how to set `isFullPost` to **false** in the Spreadsheet component:
{% tabs %}
-{% highlight ts tabtitle="app.component.html" %}
+{% highlight ts tabtitle="app.html" %}
{% endhighlight %}
-{% highlight ts tabtitle="app.component.ts" %}
+{% highlight ts tabtitle="app.ts" %}
import { Component, ViewEncapsulation, Inject, ViewChild } from '@angular/core';
import { BeforeSaveEventArgs, SpreadsheetComponent, SpreadsheetModule } from '@syncfusion/ej2-angular-spreadsheet';
@Component({
selector: 'app-root',
- templateUrl: 'app.component.html',
- styleUrls: ['app.component.css'],
+ templateUrl: 'app.html',
+ styleUrls: ['app.css'],
encapsulation: ViewEncapsulation.None,
standalone: true,
imports: [ SpreadsheetModule, ]
@@ -146,11 +146,11 @@ export class AppComponent {
### Configure JSON serialization options during save
-Serialization options in the Angular Spreadsheet allow you to exclude specific features such as styles, formats, charts, images, wrap, etc. from the `Workbook JSON object` when saving it using the [`saveAsJson`](https://helpej2.syncfusion.com/angular/documentation/api/spreadsheet/#saveasjson) method in the Spreadsheet. By skipping unnecessary features, you can significantly improve performance, especially when working with large or complex workbooks.
+Serialization options in the Angular Spreadsheet allow you to exclude specific features such as styles, formats, charts, images, wrap, etc. from the `Workbook JSON object` when saving it using the [`saveAsJson`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#saveasjson) method in the Spreadsheet. By skipping unnecessary features, you can significantly improve performance, especially when working with large or complex workbooks.
This is particularly useful when:
* You need only the raw data without formatting.
-* You're saving the `Workbook JSON object` using the [`saveAsJson`](https://helpej2.syncfusion.com/angular/documentation/api/spreadsheet/#saveasjson) method in the Spreadsheet.
+* You're saving the `Workbook JSON object` using the [`saveAsJson`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#saveasjson) method in the Spreadsheet.
* You want to minimize the size of the JSON payload and optimize processing speed.
Proper use of serialization options during save improves performance and reduces the time taken during the save process.
@@ -165,7 +165,7 @@ Refer to the following UG section to learn how to configure these options:
When working with large datasets in the Angular Spreadsheet, user interactions such as selecting a large range of cells can experience delays. This occurs because, by default, the Spreadsheet performs aggregate calculations (e.g., SUM, AVERAGE, COUNT, MIN, and MAX) on the selected range and displays the results in the sheet tab panel at the bottom-right corner.
-To enhance the responsiveness of cell selection, particularly in performance-critical scenarios, consider disabling unnecessary aggregate calculations using the [`showAggregate`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#showaggregate) property.
+To enhance the responsiveness of cell selection, particularly in performance-critical scenarios, consider disabling unnecessary aggregate calculations using the [`showAggregate`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#showaggregate) property.
Benefits:
* Reduces selection lag when dealing with large data ranges.
@@ -175,7 +175,7 @@ Benefits:
You can disable aggregate calculation using the following code example:
{% tabs %}
-{% highlight ts tabtitle="app.component.html" %}
+{% highlight ts tabtitle="app.html" %}
{% endhighlight %}
diff --git a/Document-Processing/Excel/Spreadsheet/Angular/print.md b/Document-Processing/Excel/Spreadsheet/Angular/print.md
index 7968c9b063..24ec625091 100644
--- a/Document-Processing/Excel/Spreadsheet/Angular/print.md
+++ b/Document-Processing/Excel/Spreadsheet/Angular/print.md
@@ -30,8 +30,8 @@ The `printOptions` contain three properties, as described below.
> When the `print` method is called without any parameters, the default printing will be performed.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/print-cs2/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/print-cs2/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -43,13 +43,13 @@ The `printOptions` contain three properties, as described below.
## Disable printing
-The printing functionality in the Spreadsheet can be disabled by setting the [`allowPrint`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#allowprint) property to **false**. After disabling, the **"Print"** option will not be available in the **"File"** menu of the ribbon and as a keyboard shortcut.
+The printing functionality in the Spreadsheet can be disabled by setting the [`allowPrint`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#allowprint) property to **false**. After disabling, the **"Print"** option will not be available in the **"File"** menu of the ribbon and as a keyboard shortcut.

{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/print-cs3/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/print-cs3/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
diff --git a/Document-Processing/Excel/Spreadsheet/Angular/protect-sheet.md b/Document-Processing/Excel/Spreadsheet/Angular/protect-sheet.md
index 80d36a7e91..ee2eb3a1e3 100644
--- a/Document-Processing/Excel/Spreadsheet/Angular/protect-sheet.md
+++ b/Document-Processing/Excel/Spreadsheet/Angular/protect-sheet.md
@@ -14,7 +14,7 @@ Sheet protection helps you to prevent the users from modifying the data in the s
## Protect Sheet
Protect sheet feature helps you to prevent the unknown users from accidentally changing, editing, moving, or deleting data in a spreadsheet. And you can also protect the sheet with password.
-You can use the [`isProtected`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#isprotected) property to enable or disable the Protecting functionality.
+You can use the [`isProtected`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#isprotected) property to enable or disable the Protecting functionality.
> * The default value for `isProtected` property is `false`.
@@ -40,13 +40,13 @@ In the active Spreadsheet, the sheet protection can be done by any of the follow
* Select the Protect Sheet item in the Ribbon toolbar under the Data Tab, and then select your desired options.
* Right-click the sheet tab, select the Protect Sheet item in the context menu, and then select your desired options.
-* Use the [`protectSheet()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#protectsheet) method programmatically.
+* Use the [`protectSheet()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#protectsheet) method programmatically.
The following example shows `Protect Sheet` functionality with password in the Spreadsheet control.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/protect-sheet-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/protect-sheet-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -70,15 +70,15 @@ In the active Spreadsheet, the sheet Unprotection can be done by any of the foll
* Select the `Unprotect Sheet` item in the Ribbon toolbar under the Data Tab.
* Right-click the sheet tab, select the `Unprotect Sheet` item in the context menu.
-* Use the [`unprotectSheet()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#unprotectsheet) method programmatically.
+* Use the [`unprotectSheet()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#unprotectsheet) method programmatically.
## Unlock the particular cells in the protected sheet
-In protected spreadsheet, to make some particular cell or range of cells are editable, you can use [`lockCells()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#lockcells) method, with the parameter `range` and `isLocked` property as false.
+In protected spreadsheet, to make some particular cell or range of cells are editable, you can use [`lockCells()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#lockcells) method, with the parameter `range` and `isLocked` property as false.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/lock-cells-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/lock-cells-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -90,9 +90,9 @@ In protected spreadsheet, to make some particular cell or range of cells are edi
## Make cells read-only without protecting worksheet
-Previously, you could make cells read-only by protecting the entire sheet using the [protectSheet](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#protectsheet) method or through the UI option. Meanwhile, to make a specific range of cells editable within a protected sheet, you needed to use the [lockCells](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#lockcells) method, passing the `range` parameter and setting the `isLocked` property to **false**.
+Previously, you could make cells read-only by protecting the entire sheet using the [protectSheet](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#protectsheet) method or through the UI option. Meanwhile, to make a specific range of cells editable within a protected sheet, you needed to use the [lockCells](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#lockcells) method, passing the `range` parameter and setting the `isLocked` property to **false**.
-Now, you can make an entire row, an entire column, or a specific range of cells read-only using the [setRangeReadOnly](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#setrangereadonly) method without protecting the entire sheet. This method accepts three parameters, as detailed in the following table:
+Now, you can make an entire row, an entire column, or a specific range of cells read-only using the [setRangeReadOnly](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#setrangereadonly) method without protecting the entire sheet. This method accepts three parameters, as detailed in the following table:
| Parameter | Description |
|-----|------|
@@ -141,8 +141,8 @@ You can make the cells read-only in the cell data binding by setting the `isRead
The following example demonstrates how to make rows, columns, and cells read-only without protecting the sheet:
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/readonly-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/readonly-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -155,8 +155,8 @@ The following example demonstrates how to make rows, columns, and cells read-onl
## Protect Workbook
Protect workbook feature helps you to protect the workbook so that users cannot insert, delete, rename, hide the sheets in the spreadsheet.
-You can use the [`password`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#password) property to protect workbook with password.
-You can use the [`isProtected`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#isprotected) property to protect or unprotect the workbook without the password.
+You can use the [`password`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#password) property to protect workbook with password.
+You can use the [`isProtected`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#isprotected) property to protect or unprotect the workbook without the password.
> The default value for `isProtected` property is `false`.
@@ -164,11 +164,11 @@ You can use the [`isProtected`](https://ej2.syncfusion.com/angular/documentation
In the active Spreadsheet, you can protect the worksheet by selecting the Data tab in the Ribbon toolbar and choosing the `Protect Workbook` item. Then, enter the password and confirm it and click on OK.
-The following example shows `Protect Workbook` by using the [`isProtected`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#isprotected) property in the Spreadsheet control.
+The following example shows `Protect Workbook` by using the [`isProtected`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#isprotected) property in the Spreadsheet control.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/local-data-binding-cs4/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/local-data-binding-cs4/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -178,11 +178,11 @@ The following example shows `Protect Workbook` by using the [`isProtected`](http
{% previewsample "/document-processing/samples/spreadsheet/angular/local-data-binding-cs4" %}
-The following example shows `Protect Workbook` by using the [`password`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#password) property in the Spreadsheet control. To unprotect the workbook, click the unprotect workbook button in the data tab and provide the password as syncfusion® in the dialog box.
+The following example shows `Protect Workbook` by using the [`password`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#password) property in the Spreadsheet control. To unprotect the workbook, click the unprotect workbook button in the data tab and provide the password as syncfusion® in the dialog box.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/local-data-binding-cs5/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/local-data-binding-cs5/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -198,7 +198,7 @@ Unprotect Workbook is used to enable the insert, delete, rename, move, copy, hid
**User Interface**:
-In the active Spreadsheet, the workbook Unprotection can be done in any of the following ways:
+In the active Spreadsheet, the workbook Unprotect can be done in any of the following ways:
* Select the `Unprotect Workbook` item in the Ribbon toolbar under the Data Tab and provide the valid password in the dialog box.
diff --git a/Document-Processing/Excel/Spreadsheet/Angular/ribbon.md b/Document-Processing/Excel/Spreadsheet/Angular/ribbon.md
index df34b825aa..464e3a1a25 100644
--- a/Document-Processing/Excel/Spreadsheet/Angular/ribbon.md
+++ b/Document-Processing/Excel/Spreadsheet/Angular/ribbon.md
@@ -17,21 +17,21 @@ You can customize the ribbon using the following methods,
| Method | Action |
|-------|---------|
-| [`hideRibbonTabs`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#hideribbontabs) | Used to show or hide the existing ribbon tabs. |
-| [`enableRibbonTabs`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#enableribbontabs) | Used to enable or disable the existing ribbon tabs. |
-| [`addRibbonTabs`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#addribbontabs) | Used to add custom ribbon tabs. |
-| [`hideToolbarItems`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#hidetoolbaritems) | Used to show or hide the existing ribbon toolbar items. |
-| [`enableToolbarItems`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#enabletoolbaritems) | Used to enable or disable the specified toolbar items. |
-| [`addToolbarItems`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#addtoolbaritems) | Used to add the custom items in ribbon toolbar. |
-| [`hideFileMenuItems`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#hidefilemenuitems) | Used to show or hide the ribbon file menu items. |
-| [`enableFileMenuItems`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#enablefilemenuitems) | Used to enable or disable file menu items. |
-| [`addFileMenuItems`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#addfilemenuitems) | Used to add custom file menu items. |
+| [`hideRibbonTabs`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#hideribbontabs) | Used to show or hide the existing ribbon tabs. |
+| [`enableRibbonTabs`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#enableribbontabs) | Used to enable or disable the existing ribbon tabs. |
+| [`addRibbonTabs`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#addribbontabs) | Used to add custom ribbon tabs. |
+| [`hideToolbarItems`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#hidetoolbaritems) | Used to show or hide the existing ribbon toolbar items. |
+| [`enableToolbarItems`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#enabletoolbaritems) | Used to enable or disable the specified toolbar items. |
+| [`addToolbarItems`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#addtoolbaritems) | Used to add the custom items in ribbon toolbar. |
+| [`hideFileMenuItems`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#hidefilemenuitems) | Used to show or hide the ribbon file menu items. |
+| [`enableFileMenuItems`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#enablefilemenuitems) | Used to enable or disable file menu items. |
+| [`addFileMenuItems`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#addfilemenuitems) | Used to add custom file menu items. |
The following code example shows the usage of ribbon customization.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/ribbon/cutomization-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/ribbon/cutomization-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -43,7 +43,7 @@ The following code example shows the usage of ribbon customization.
## Note
-You can refer to our [Angular Spreadsheet](https://www.syncfusion.com/spreadsheet-editor-sdk/angular-spreadsheet-editor) feature tour page for its groundbreaking feature representations. You can also explore our [Angular Spreadsheet example](https://document.syncfusion.com/demos/spreadsheet-editor/angular/#/material3/spreadsheet/default) to knows how to present and manipulate data.
+You can explore our [Angular Spreadsheet example](https://document.syncfusion.com/demos/spreadsheet-editor/angular/#/material3/spreadsheet/default) to knows how to present and manipulate data.
## See Also
diff --git a/Document-Processing/Excel/Spreadsheet/Angular/rows-and-columns.md b/Document-Processing/Excel/Spreadsheet/Angular/rows-and-columns.md
index d6972d6c6b..1fba18ba1e 100644
--- a/Document-Processing/Excel/Spreadsheet/Angular/rows-and-columns.md
+++ b/Document-Processing/Excel/Spreadsheet/Angular/rows-and-columns.md
@@ -17,20 +17,20 @@ Spreadsheet is a tabular format consisting of rows and columns. The intersection
## Insert
-You can insert rows or columns anywhere in a spreadsheet. Use the [`allowInsert`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#allowinsert) property to enable or disable the insert option in Spreadsheet.
+You can insert rows or columns anywhere in a spreadsheet. Use the [`allowInsert`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#allowinsert) property to enable or disable the insert option in Spreadsheet.
### Row
The rows can be inserted in the following ways,
-* Using [`insertRow`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#insertrow) method, you can insert the rows once the component is loaded.
+* Using [`insertRow`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#insertrow) method, you can insert the rows once the component is loaded.
* Using context menu, insert the empty rows in the desired position.
The following code example shows the options for inserting rows in the spreadsheet.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/insert/row-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/insert/row-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -44,14 +44,14 @@ The following code example shows the options for inserting rows in the spreadshe
The columns can be inserted in the following ways,
-* Using [`insertColumn`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#insertcolumn) method, you can insert the columns once the component is loaded.
+* Using [`insertColumn`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#insertcolumn) method, you can insert the columns once the component is loaded.
* Using context menu, insert the empty columns in the desired position.
The following code example shows the options for inserting columns in the spreadsheet.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/insert/column-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/insert/column-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -63,18 +63,18 @@ The following code example shows the options for inserting columns in the spread
## Delete
-Delete support provides an option for deleting the rows and columns in the spreadsheet. Use [`allowDelete`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#allowdelete) property to enable or disable the delete option in Spreadsheet.
+Delete support provides an option for deleting the rows and columns in the spreadsheet. Use [`allowDelete`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#allowdelete) property to enable or disable the delete option in Spreadsheet.
The rows and columns can be deleted dynamically in the following ways,
-* Using [`delete`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#delete) method, you can delete the loaded rows and columns.
+* Using [`delete`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#delete) method, you can delete the loaded rows and columns.
* Using context menu, you can delete the selected rows and columns.
The following code example shows the delete operation of rows and columns in the spreadsheet.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/delete/row-column-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/delete/row-column-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -116,8 +116,8 @@ The columns can be hidden or shown through following ways,
The following code example shows the hide/show rows and columns operation in the spreadsheet.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/hide-show-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/hide-show-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -129,13 +129,13 @@ The following code example shows the hide/show rows and columns operation in the
## Changing text in column headers
-Using the [`beforeCellRender`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#beforecellrender) event, you can change the text in the column headers. In that event, you can use the `e-header-cell` class to identify the header cell element and update its text value.
+Using the [`beforeCellRender`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#beforecellrender) event, you can change the text in the column headers. In that event, you can use the `e-header-cell` class to identify the header cell element and update its text value.
The following code example shows how to change the text in the column headers.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/column-header-change-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/column-header-change-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
diff --git a/Document-Processing/Excel/Spreadsheet/Angular/scrolling.md b/Document-Processing/Excel/Spreadsheet/Angular/scrolling.md
index 3f96267b8b..a14d5bd4bc 100644
--- a/Document-Processing/Excel/Spreadsheet/Angular/scrolling.md
+++ b/Document-Processing/Excel/Spreadsheet/Angular/scrolling.md
@@ -9,7 +9,7 @@ documentation: ug
# Scrolling in Angular Spreadsheet component
-Scrolling helps you to move quickly to different areas of the worksheet. It moves faster if we use horizontal and vertical scroll bars. Scrolling can be enabled by setting the [`allowScrolling`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#allowscrolling) as true.
+Scrolling helps you to move quickly to different areas of the worksheet. It moves faster if we use horizontal and vertical scroll bars. Scrolling can be enabled by setting the [`allowScrolling`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#allowscrolling) as true.
> By default, the `allowScrolling` property is true.
@@ -20,11 +20,11 @@ You have the following options in Scrolling by using [`scrollSettings`](https://
## Finite Scrolling
-Finite scrolling supports two type of modes in scrolling. You can use the [`isFinite`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/scrollSettings/#isfinite) property in [`scrollSettings`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/scrollsettings) to specify the mode of scrolling.
+Finite scrolling supports two type of modes in scrolling. You can use the [`isFinite`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/scrollsettings#isfinite) property in [`scrollSettings`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/scrollsettings) to specify the mode of scrolling.
-* Finite - This mode does not create a new row/column when the scrollbar reaches the end. This can be achieved by setting the [`isFinite`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/scrollSettings/#isfinite) property as `true`.
+* Finite - This mode does not create a new row/column when the scrollbar reaches the end. This can be achieved by setting the [`isFinite`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/scrollsettings#isfinite) property as `true`.
-* Infinite - This mode creates a new row/column when the scrollbar reaches the end. This can be achieved by setting the [`isFinite`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/scrollSettings/#isfinite) property as `false`.
+* Infinite - This mode creates a new row/column when the scrollbar reaches the end. This can be achieved by setting the [`isFinite`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/scrollsettings#isfinite) property as `false`.
> By Default, the `isFinite` property is `false`.
@@ -46,13 +46,13 @@ You can scroll through the worksheet using one of the following ways,
## Finite scrolling with defined rows and columns
-If you want to perform scrolling with defined rows and columns, you must define `rowCount` and `colCount` in the [`sheets`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#sheets) property and set `isFinite` as true and `enableVirtualization` as false in `scrollSettings`.
+If you want to perform scrolling with defined rows and columns, you must define `rowCount` and `colCount` in the [`sheets`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#sheets) property and set `isFinite` as true and `enableVirtualization` as false in `scrollSettings`.
The following code example shows the finite scrolling with defined rows and columns in the spreadsheet. Here, we used rowCount as 20 and colCount as 20, after reaching the 20th row or 20th column you can't able to scroll.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/scrolling-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/scrolling-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
diff --git a/Document-Processing/Excel/Spreadsheet/Angular/searching.md b/Document-Processing/Excel/Spreadsheet/Angular/searching.md
index 31387aa658..a2a0bc3ba1 100644
--- a/Document-Processing/Excel/Spreadsheet/Angular/searching.md
+++ b/Document-Processing/Excel/Spreadsheet/Angular/searching.md
@@ -9,7 +9,7 @@ documentation: ug
# Searching in Angular Spreadsheet component
-Find and Replace helps you to search for the target text and replace the found text with alternative text within the sheet or workbook. You can use the [`allowFindAndReplace`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#allowfindandreplace) property to enable or disable the Find and Replace functionality.
+Find and Replace helps you to search for the target text and replace the found text with alternative text within the sheet or workbook. You can use the [`allowFindAndReplace`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#allowfindandreplace) property to enable or disable the Find and Replace functionality.
> * The default value for `allowFindAndReplace` property is `true`.
@@ -30,7 +30,7 @@ Find can be done by any of the following ways:
> * `Match case`: To find the matched value with case sensitive.
> * `Match exact cell contents`: To find the exact matched cell value with entire match cases.
-* Using [`find()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#find) method to perform find operation.
+* Using [`find()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#find) method to perform find operation.
## Replace
@@ -43,8 +43,8 @@ Replace can be done by any of the following ways:
* Use `Ctrl + H` key to open the Find and Replace dialog.
* Use Replace button to change the found value in sheet or workbook.
* Using Replace All button, all the matched criteria can be replaced with find value based on sheet or workbook.
-* Using [`replace()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#replace) method to perform replace operation by passing the argument `args.replaceby` as `replace`.
-* Using [`replace()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#replace) method to perform replace all operation by passing the argument `args.replaceby` as `replaceall`.
+* Using [`replace()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#replace) method to perform replace operation by passing the argument `args.replaceby` as `replace`.
+* Using [`replace()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#replace) method to perform replace all operation by passing the argument `args.replaceby` as `replaceall`.
## Go to
@@ -53,7 +53,7 @@ Go to feature is used to navigate to a specific cell address in the sheet or wor
**User Interface**:
* Use `Ctrl + G` key to open the Go To dialog.
-* Use [`goTo()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#goto) method to perform Go To operation.
+* Use [`goTo()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#goto) method to perform Go To operation.
In the following sample, searching can be done by following ways:
@@ -63,8 +63,8 @@ In the following sample, searching can be done by following ways:
* You can have more options to find values by selecting the more options in the search toolbar.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/searching-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/searching-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
diff --git a/Document-Processing/Excel/Spreadsheet/Angular/selection.md b/Document-Processing/Excel/Spreadsheet/Angular/selection.md
index 56d8e6039b..a0d47c6508 100644
--- a/Document-Processing/Excel/Spreadsheet/Angular/selection.md
+++ b/Document-Processing/Excel/Spreadsheet/Angular/selection.md
@@ -9,7 +9,7 @@ documentation: ug
# Selection in Angular Spreadsheet component
-Selection provides interactive support to highlight the cell, row, or column that you select. Selection can be done through Mouse, Touch, or Keyboard interaction. To enable selection, set `mode` as `Single` | `Multiple` in [`selectionSettings`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#selectionsettings). If you set `mode` to `None`, it disables the UI selection.
+Selection provides interactive support to highlight the cell, row, or column that you select. Selection can be done through Mouse, Touch, or Keyboard interaction. To enable selection, set `mode` as `Single` | `Multiple` in [`selectionSettings`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#selectionsettings). If you set `mode` to `None`, it disables the UI selection.
> * The default value for `mode` in `selectionSettings` is `Multiple`.
@@ -21,7 +21,7 @@ You have the following options in Selection,
## Cell selection
-Cell selection is used to select a single or multiple cells. It can be performed using the [`selectRange`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#selectrange) method.
+Cell selection is used to select a single or multiple cells. It can be performed using the [`selectRange`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#selectrange) method.
**User Interface**:
@@ -47,8 +47,8 @@ You can perform row selection in any of the following ways,
The following sample shows the row selection in the spreadsheet, here selecting the 5th row using the `selectRange` method.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/selection-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/selection-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -74,8 +74,8 @@ You can perform column selection in any of the following ways,
The following sample shows the column selection in the spreadsheet, here selecting the 3rd column using the `selectRange` method.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/selection-cs2/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/selection-cs2/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -87,11 +87,11 @@ The following sample shows the column selection in the spreadsheet, here selecti
## Get selected cell values
-You can select single or multiple cells, rows, or columns using mouse and keyboard interactions. You can also programmatically perform selections using the [selectRange](https://helpej2.syncfusion.com/angular/documentation/api/spreadsheet/#selectrange) method. This selection behavior is controlled by the [selectionSettings](https://helpej2.syncfusion.com/angular/documentation/api/spreadsheet/#selectionsettings) property. Finally, you can retrieve the selected cell values as a collection using the [getData](https://helpej2.syncfusion.com/angular/documentation/api/spreadsheet/#getdata) method.
+You can select single or multiple cells, rows, or columns using mouse and keyboard interactions. You can also programmatically perform selections using the [selectRange](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#selectrange) method. This selection behavior is controlled by the [selectionSettings](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#selectionsettings) property. Finally, you can retrieve the selected cell values as a collection using the [getData](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#getdata) method.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/selected-cell-values/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/selected-cell-values/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -103,11 +103,11 @@ You can select single or multiple cells, rows, or columns using mouse and keyboa
## Remove Selection
-The following sample shows, how to remove the selection in the spreadsheet. Here changing the `mode` as `None` in [`selectionSettings`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#selectionsettings) to disable's the UI selection.
+The following sample shows, how to remove the selection in the spreadsheet. Here changing the `mode` as `None` in [`selectionSettings`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#selectionsettings) to disable's the UI selection.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/selection-cs3/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/selection-cs3/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
diff --git a/Document-Processing/Excel/Spreadsheet/Angular/sort.md b/Document-Processing/Excel/Spreadsheet/Angular/sort.md
index 34fef93f80..be0aba9326 100644
--- a/Document-Processing/Excel/Spreadsheet/Angular/sort.md
+++ b/Document-Processing/Excel/Spreadsheet/Angular/sort.md
@@ -9,7 +9,7 @@ documentation: ug
# Sort in Angular Spreadsheet component
-Sorting helps arranging the data to a specific order in a selected range of cells. You can use the [`allowSorting`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#allowsorting) property to enable or disable sorting functionality.
+Sorting helps arranging the data to a specific order in a selected range of cells. You can use the [`allowSorting`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#allowsorting) property to enable or disable sorting functionality.
> * The default value for `allowSorting` property is `true`.
@@ -20,7 +20,7 @@ By default, the `sort` module is injected internally into Spreadsheet to perform
In the active Spreadsheet, select a range of cells to sort by cell value. The range sort can be done by any of the following ways:
* Select the sort item in the Ribbon toolbar and choose the ascending or descending item.
* Right-click the sheet, select the sort item in the context menu and choose the ascending/descending item.
-* Use the [`sort()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#sort) method programmatically.
+* Use the [`sort()`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#sort) method programmatically.
The cell values can be sorted in the following orders:
* Ascending
@@ -30,14 +30,14 @@ The cell values can be sorted in the following orders:
The `sort()` method with empty arguments will sort the selected range by active cell’s column as sort column in ascending order.
-> * The [`beforeSort`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#beforesort) event will be triggered before sorting the specified range.
-> * The [`sortComplete`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#sortcomplete) event will be triggered after the sort action is completed successfully.
+> * The [`beforeSort`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#beforesort) event will be triggered before sorting the specified range.
+> * The [`sortComplete`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#sortcomplete) event will be triggered after the sort action is completed successfully.
The following code example shows `sort` functionality in the Spreadsheet control.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/sort-by-cell-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/sort-by-cell-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -49,7 +49,7 @@ The following code example shows `sort` functionality in the Spreadsheet control
## Data contains header
-You can specify whether the selected range of cells contains header. To specify, you need to set the [`containsHeader`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#containsheader) property to `true` and pass it as `sortOption` arguments of the sort() method.
+You can specify whether the selected range of cells contains header. To specify, you need to set the [`containsHeader`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#containsheader) property to `true` and pass it as `sortOption` arguments of the sort() method.
> * If the `containsHeader` property is not set and active cell column’s first cell value type is differed from the second cell value type, the first row data in the range are marked as column headers.
@@ -67,7 +67,7 @@ In the custom sort dialog, the `Data contains header` checkbox is checked on loa
## Case sensitive sort
-The default sort functionality of Spreadsheet is a case insensitive sorting. When you want to perform sorting with case sensitive, you need to set the [`caseSensitive`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#casesensitive) property to `true` and pass it as `sortOption` arguments of the sort() method.
+The default sort functionality of Spreadsheet is a case insensitive sorting. When you want to perform sorting with case sensitive, you need to set the [`caseSensitive`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#casesensitive) property to `true` and pass it as `sortOption` arguments of the sort() method.
Case sensitive sorting is applicable only for cells with alphabets. In ascending order sorting with case sensitive enabled, the cells with lower case text will be placed above the cells with upper case text.
@@ -104,7 +104,7 @@ You can refer to the [`Data contains header`](./sort#data-contains-header) topic
### Passing sort criteria manually
The multi-column sorting can also be performed manually by passing sort options to the `sort()` method programmatically. The `sortOption` have the following arguments:
-* [`sortDescriptors`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#sortdescriptors) – Sort criteria collection that holds the collection of field name, sort order, and [`sortComparer`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#sortcomparer).
+* [`sortDescriptors`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#sortdescriptors) – Sort criteria collection that holds the collection of field name, sort order, and [`sortComparer`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#sortcomparer).
* `containsHeader` – Boolean argument that specifies whether the range has headers in it.
* `caseSensitive` – Boolean argument that specifies whether the range needs to consider case.
@@ -112,8 +112,8 @@ The multi-column sorting can also be performed manually by passing sort options
> * When a `sortDescriptor` is specified without field, the field of the first `sortDescriptor` from the collection will be assigned from active cell’s column name and others will be ignored. Hence, it will act as single column sorting.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/passing-sort-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/passing-sort-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
@@ -125,7 +125,7 @@ The multi-column sorting can also be performed manually by passing sort options
## Custom sort comparer
-The [`sortDescriptor`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#sortdescriptor) holds the [`sortComparer`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/#sortcomparer) property, which is a function and it is used to customize the sort comparer for specific sort criteria. Each `sortDescriptor` can be customized using the custom sort comparer function.
+The [`sortDescriptor`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#sortdescriptor) holds the [`sortComparer`](https://ej2.syncfusion.com/angular/documentation/api/spreadsheet/index-default#sortcomparer) property, which is a function and it is used to customize the sort comparer for specific sort criteria. Each `sortDescriptor` can be customized using the custom sort comparer function.
By customizing sort comparer, you can define the sort action as desired.
@@ -140,8 +140,8 @@ You can also define the sorting of cell values based on your own customized pers
In the following demo, the `Trustworthiness` column is sorted based on the custom lists `Perfect`, `Sufficient`, and `Insufficient`.
{% tabs %}
-{% highlight ts tabtitle="app.component.ts" %}
-{% include code-snippet/spreadsheet/angular/custom-sort-cs1/src/app.component.ts %}
+{% highlight ts tabtitle="app.ts" %}
+{% include code-snippet/spreadsheet/angular/custom-sort-cs1/src/app.ts %}
{% endhighlight %}
{% highlight ts tabtitle="main.ts" %}
diff --git a/Document-Processing/Excel/Spreadsheet/Angular/template.md b/Document-Processing/Excel/Spreadsheet/Angular/template.md
index 5bb435bb55..a7c9d873bf 100644
--- a/Document-Processing/Excel/Spreadsheet/Angular/template.md
+++ b/Document-Processing/Excel/Spreadsheet/Angular/template.md
@@ -16,8 +16,8 @@ The following sample describes the above behavior.
Sample link: [`Cell template`](https://document.syncfusion.com/demos/spreadsheet-editor/angular/#/material3/spreadsheet/cell-template)
2. Using the annotation toolbar
@@ -31,7 +31,7 @@ There are two ways to highlight text:
* Select text to add the highlight annotation.
* Alternatively, select text first and then click **Highlight**.
-
+
When pan mode is active and a text markup mode is entered, the PDF Viewer switches to text selection mode to enable selection.
@@ -205,7 +205,7 @@ export class AppComponent implements OnInit {
## Highlight text programmatically
-Programmatically add highlights using the [addAnnotation()](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/annotation/#addannotationn) method.
+Programmatically add highlights using the [addAnnotation()](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/annotation#addannotationn) method.
Example:
@@ -300,7 +300,7 @@ There are two ways to underline text:
*Select text in the PDF document and right-click it.
* Select **Underline** in the context menu.
-
+
2. Using the annotation toolbar
@@ -309,7 +309,7 @@ There are two ways to underline text:
* Select text to add the underline annotation.
* Alternatively, select text first and then click **Underline**.
-
+
In the pan mode, if the underline mode is entered, the PDF Viewer control will switch to text select mode to enable the text selection for underlining the text.
@@ -483,7 +483,7 @@ export class AppComponent implements OnInit {
## Underline text programmatically
-Programmatically add underlines using the [addAnnotation()](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/annotation/#addannotationn) method.
+Programmatically add underlines using the [addAnnotation()](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/annotation#addannotationn) method.
Example:
@@ -578,7 +578,7 @@ There are two ways to strikethrough text:
* Select text in the PDF document and right-click it.
* Select **Strikethrough** in the context menu.
-
+
2. Using the annotation toolbar
@@ -587,9 +587,9 @@ There are two ways to strikethrough text:
* Select text to add the strikethrough annotation.
* Alternatively, select text first and then click **Strikethrough**.
-
+
-N> While you're in the pan mode, for navigating through the document, and you click on the strikethrough button, the PDF Viewer control will smoothly transition to text select mode. This seamless transition ensures a fluid experience when switching between different interaction modes within the PDF Viewer interface.
+N> While in pan mode, clicking the strikethrough button switches the viewer to text select mode so text can be selected for annotation.
Refer to the following code sample to switch to strikethrough mode.
@@ -761,7 +761,7 @@ export class AppComponent implements OnInit {
## Strikethrough text programmatically
-Programmatically add strikethrough using the [addAnnotation](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/annotation/#addannotationn) method.
+Programmatically add strikethrough using the [addAnnotation](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/annotation#addannotationn) method.
Example:
@@ -856,7 +856,7 @@ There are two ways to add squiggly to text:
* Select text in the PDF document and right-click it.
* Select **Squiggly** in the context menu.
-
+
2. Using the annotation toolbar
@@ -865,9 +865,9 @@ There are two ways to add squiggly to text:
* Select text to add the squiggly annotation.
* Alternatively, select text first and then click **Squiggly**.
-
+
-N> While you're in the pan mode, for navigating through the document, and you click on the squiggly button, the PDF Viewer control will smoothly transition to text select mode. This seamless transition ensures a fluid experience when switching between different interaction modes within the PDF Viewer interface.
+N> While in pan mode, clicking the squiggly button switches the viewer to text select mode so text can be selected for annotation.
Refer to the following code sample to switch to squiggly mode.
@@ -1039,7 +1039,7 @@ export class AppComponent implements OnInit {
## Squiggly text programmatically
-Refer to the following code snippet to switch back to normal mode from squiggly mode.(https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/annotation/#addannotationn) method.
+Refer to the following code snippet to switch back to normal mode from squiggly mode. Use the [addAnnotation()](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/annotation#addannotationn) API to add squiggly annotations.
Example:
@@ -1138,29 +1138,29 @@ The selected annotation can be deleted in the following ways:
* Select the annotation.
* Click **Delete Annotation** in the annotation toolbar. The selected annotation is removed.
-
+
-## Edi text markup annotation properties
+## Edit text markup annotation properties
-The color and the opacity of the text markup annotation can be edited using the Edit Color tool and the Edit Opacity tool in the annotation toolbar.
+The color and opacity of text markup annotations can be edited using the Edit Color and Edit Opacity tools in the annotation toolbar.
### Edit color
Use the color palette in the Edit Color tool to change the annotation color.
-
+
### Edit opacity
Use the range slider in the Edit Opacity tool to change annotation opacity.
-
+
## Set default properties during control initialization
Set default properties before creating the control using `highlightSettings`, `underlineSettings`, `strikethroughSettings`, and `squigglySettings`.
-> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
+N> After editing default color and opacity with the Edit Color and Edit Opacity tools, the default values update to the selected settings.
Refer to the following code sample to set the default annotation settings.
diff --git a/Document-Processing/PDF/PDF-Viewer/angular/download.md b/Document-Processing/PDF/PDF-Viewer/angular/download.md
index b60f7ffbd0..d88c541d6c 100644
--- a/Document-Processing/PDF/PDF-Viewer/angular/download.md
+++ b/Document-Processing/PDF/PDF-Viewer/angular/download.md
@@ -9,7 +9,7 @@ domainurl: ##DomainURL##
---
# Download in Angular PDF Viewer component
-The PDF Viewer supports downloading the loaded PDF file. You can enable/disable the download using the following code snippet.
+The Angular PDF Viewer lets users download the currently loaded PDF. Enable the download toolbar button with `enableDownload` for both standalone and server-backed viewers. The examples below demonstrate typical configurations and how to trigger a programmatic download.
{% tabs %}
{% highlight ts tabtitle="Standalone" %}
@@ -72,10 +72,9 @@ import { LinkAnnotationService, BookmarkViewService, MagnificationService,
{% endhighlight %}
{% endtabs %}
+
-
-
-You can invoke download action using following code snippet.,
+To invoke download programmatically, use the following snippet:
```html
- ```
+```html
+
+```
-## Show/Hide the built-in toolbaritem
+## Show or hide toolbar items
-The PDF Viewer has an option to show or hide these grouped items in the built-in toolbar.
+The PDF Viewer can show or hide grouped items inside the built-in toolbar.
-* **Show/Hide toolbaritem using toolbarSettings as in the following code snippet.**
+* **Show or hide toolbar items using the `toolbarSettings` property**
{% tabs %}
{% highlight ts tabtitle="Standalone" %}
@@ -177,20 +177,20 @@ import { LinkAnnotationService, BookmarkViewService, MagnificationService,
{% endhighlight %}
{% endtabs %}
-* **Show/Hide toolbaritem using showToolbaritem as in the following code snippet**
+* **Show or hide a specific toolbar item using `showToolbarItem`**
- ```html
-
- ```
+```html
+
+```
## Show/Hide the left toolbar with the thumbnails and bookmarks
-The PDF Viewer has an option to show or hide the left toolbar with the thumbnails and bookmarks using enableNavigationToolbar API as in the following code sample.
+The PDF Viewer can show or hide the left navigation toolbar (thumbnails and bookmarks) using the `enableNavigationToolbar` API. Examples follow.
{% tabs %}
{% highlight ts tabtitle="Standalone" %}
@@ -258,15 +258,13 @@ import { LinkAnnotationService, BookmarkViewService, MagnificationService,
{% endhighlight %}
{% endtabs %}
-## Customize Built-In Toolbar
-
-PDF Viewer allows you to customize(add, show, hide, enable, and disable) existing items in a toolbar.
-
-* Add - New items can defined by [**CustomToolbarItemModel**](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/customToolbarItemModel/) and with existing items in [**ToolbarSettings**](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/toolbarSettings/) property. Newly added item click action can be defined in [`toolbarclick`](https://ej2.syncfusion.com/angular/documentation/api/toolbar/clickEventArgs/).
+## Customize the built-in toolbar
-* Show, Hide - Existing items can be shown or hidden using the [`ToolbarSettings`](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/toolbarSettings/) property. Pre-defined toolbar items are available with [`ToolbarItem`](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/toolbarItem/).
+The PDF Viewer supports customizing toolbar items: add, show, hide, enable, and disable.
-* Enable, Disable - Toolbar items can be enabled or disable using [`enabletoolbaritem`](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/toolbar/#enabletoolbaritem)
+* Add: Define new items using the [CustomToolbarItemModel](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/customToolbarItemModel) and include them in the [ToolbarSettings](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/toolbarSettings) property. Handle item clicks with the [toolbarclick](https://ej2.syncfusion.com/angular/documentation/api/toolbar/clickEventArgs) event.
+* Show / Hide: Show or hide predefined items through `ToolbarSettings`. See the [ToolbarItem](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/toolbarItem) API for available identifiers.
+* Enable / Disable: Enable or disable toolbar items using the [enabletoolbaritem](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/toolbar#enabletoolbaritem) API.
{% tabs %}
{% highlight html tabtitle="Standalone" %}
@@ -434,45 +432,44 @@ export class AppComponent implements OnInit {
{% endhighlight %}
{% endtabs %}
-N> Default value of toolbar items is ['OpenOption', 'PageNavigationTool','MagnificationTool', 'PanTool', 'SelectionTool', 'SearchOption', 'PrintOption', 'DownloadOption','UndoRedoTool', 'AnnotationEditTool', 'FormDesignerEditTool', 'CommentTool', 'SubmitForm']
+N> Default toolbar items are `['OpenOption', 'PageNavigationTool', 'MagnificationTool', 'PanTool', 'SelectionTool', 'SearchOption', 'PrintOption', 'DownloadOption', 'UndoRedoTool', 'AnnotationEditTool', 'FormDesignerEditTool', 'CommentTool', 'SubmitForm']`.
-### Align Property
+### Align property
-The align property is used to specify the alignment of a toolbar item within the toolbar.
+The `align` property specifies a toolbar item's horizontal alignment.
`Left`: Aligns the item to the left side of the toolbar.
`Right`: Aligns the item to the right side of the toolbar.
-### Tooltip Property
+### Tooltip property
-The tooltip property is used to set the tooltip text for a toolbar item. Tooltip provides additional information when a user hovers over the item.
+The `tooltipText` property sets the tooltip shown on hover for a toolbar item.
### CssClass Property
-The cssClass property is used to apply custom CSS classes to a toolbar item. It allows custom styling of the toolbar item.
+The `cssClass` property applies custom CSS classes to a toolbar item for custom styling.
### Prefix Property
-The prefix property is used to set the CSS class or icon that should be added as a prefix to the existing content of the toolbar item.
+The `prefixIcon` property sets an icon CSS class to display before the toolbar item's content.
### ID Property
-The id property within a CustomToolbarItemModel is a compulsory attribute that plays a vital role in toolbar customization. It serves as a unique identifier for each toolbar item, facilitating distinct references and interactions.
+The `id` property of a `CustomToolbarItemModel` is required and provides a unique identifier for each toolbar item. Use descriptive `id` values so handlers and API calls can reference items reliably.
-When defining or customizing toolbar items, it is mandatory to assign a specific and descriptive id to each item.
-These properties are commonly used when defining custom toolbar items with the `CustomToolbarItemModel` in the context of Syncfusion® PDF Viewer. When configuring the toolbar using the `ToolbarSettings` property, you can include these properties to customize the appearance and behavior of each toolbar item.
+These properties are used when defining custom toolbar items for the Syncfusion® PDF Viewer. Include them in `ToolbarSettings` to adjust appearance and behavior.
-N> When customizing toolbar items, you have the flexibility to include either icons or text based on your design preference.
+N> Custom toolbar items may display either icons or text depending on the design preference.
[View sample in GitHub](https://github.com/SyncfusionExamples/angular-pdf-viewer-examples/tree/master/How%20to/Customize%20existing%20toolbar)
-## Custom Toolbar
+## Custom toolbar
-The PDF Viewer provides API for user interactions options provided in its built-in toolbar. Using this, you can create your own User Interface for toolbar actions at the application level by hiding the built-in toolbar. The following steps are used to create the custom toolbar for PDF Viewer:
+The PDF Viewer exposes APIs so applications can implement a custom toolbar UI. Hide the built-in toolbar and wire an application-level toolbar to the viewer using these APIs. The following steps demonstrate the approach.
-**Step 1:** Follow the steps provided in the [link](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/angular/getting-started) to create a simple PDF Viewer sample.
+**Step 1:** Follow the [getting-started](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/angular/getting-started) guide to create a simple PDF Viewer sample.
-**Step 2:** Hide the built-in toolbar of PDF Viewer using the following code snippet.,
+**Step 2:** Hide the built-in toolbar using the `enableToolbar` and `enableNavigationToolbar` flags. Example code follows.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
@@ -502,7 +499,7 @@ The PDF Viewer provides API for user interactions options provided in its built-
{% endhighlight %}
{% endtabs %}
-**Step 3:** Add EJ2 toolbar for performing primary actions like Open, Previous page, Next page, Go to page, Print and Download using the following code snippet.
+**Step 3:** Add an EJ2 toolbar for primary actions (Open, Previous, Next, Go to page, Print, Download). Example code follows.
```html
@@ -528,7 +525,7 @@ The PDF Viewer provides API for user interactions options provided in its built-
```
-**Step 3:** Add EJ2 toolbar for performing magnification actions in PDF Viewer using the following code snippet.
+**Step 4:** Add an EJ2 toolbar for magnification actions (Fit to page, Zoom in, Zoom out). Example code follows.
```html
@@ -540,7 +537,7 @@ The PDF Viewer provides API for user interactions options provided in its built-
```
-**Step 4:** Add the following style to achieve the custom toolbar styling.
+**Step 5:** Add the following CSS to style the custom toolbar.
```css
#magnificationToolbar {
@@ -682,9 +679,9 @@ The PDF Viewer provides API for user interactions options provided in its built-
}
```
->The icons are embedded in the font file used in the previous code snippet.
+N> The icons are embedded in the font file used in the previous snippet.
-**Step 5:** Add the following code snippet in `app.component.ts` file for performing a user interaction in PDF Viewer in code behind.
+**Step 5:** Add the following code snippet in `app.ts` file for performing a user interaction in PDF Viewer in code behind.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
diff --git a/Document-Processing/PDF/PDF-Viewer/angular/troubleshooting/common-errors-when-ej2-pdfviewer-lib-assets-are-missing.md b/Document-Processing/PDF/PDF-Viewer/angular/troubleshooting/common-errors-when-ej2-pdfviewer-lib-assets-are-missing.md
index dfc78d23f5..9324870ed4 100644
--- a/Document-Processing/PDF/PDF-Viewer/angular/troubleshooting/common-errors-when-ej2-pdfviewer-lib-assets-are-missing.md
+++ b/Document-Processing/PDF/PDF-Viewer/angular/troubleshooting/common-errors-when-ej2-pdfviewer-lib-assets-are-missing.md
@@ -10,15 +10,15 @@ domainurl: ##DomainURL##
# Uncaught DOMException: Failed to execute 'importScripts' on 'WorkerGlobalScope'
-Another error that can occur when setting up the `ej2-pdfviewer-library` without the necessary assets is the **Uncaught DOMException: Failed to execute 'importScripts' on 'WorkerGlobalScope'**. This error typically arises when a web worker attempts to load a script (e.g., `pdfium.js` or `pdfium.wasm`) and fails to do so.
+An error that can occur when the `ej2-pdfviewer-lib` assets are missing is the **Uncaught DOMException: Failed to execute 'importScripts' on 'WorkerGlobalScope'**. This occurs when the PDF viewer's web worker cannot load required files such as `pdfium.js` or `pdfium.wasm`.
-To troubleshoot and resolve this error, consider the following steps:
+To troubleshoot and resolve this error, follow these steps:
-1. **Check Asset Availability:** Ensure that the required assets, specifically `pdfium.js` and `pdfium.wasm`, are present in the correct locations within your project. Confirm that they are accessible and have been copied correctly.
+1. **Check asset availability:** Verify that the required files (for example, `pdfium.js` and `pdfium.wasm`) exist in a public assets folder that the application serves (commonly `src/assets/ej2-pdfviewer-lib`). Confirm the files are present in the build output and that the request paths used by the viewer match their deployed locations.
-2. **Network and CORS:** Verify that there are no network-related issues preventing the web worker from fetching the assets. Also, address any CORS-related problems, especially if the assets are hosted on a different origin.
+2. **Network and CORS:** Use the browser developer tools to confirm the asset requests return HTTP 200. If the assets are hosted on a different origin, configure appropriate CORS response headers (for example, `Access-Control-Allow-Origin`) or host the assets on the same origin to avoid cross-origin worker load failures.
-N> If ej2-pdfviewer-lib folder is not available in the 'src/assets', copy the contents of the ej2-pdfviewer-lib folder from ./node_modules/@syncfusion/ej2-pdfviewer/dist to the src/assets directory using the command:
+N> If the `ej2-pdfviewer-lib` folder is not available in `src/assets`, copy the contents from `./node_modules/@syncfusion/ej2-pdfviewer/dist` into `src/assets/ej2-pdfviewer-lib` using the command:
```bash
cp -R ./node_modules/@syncfusion/ej2-pdfviewer/dist/ej2-pdfviewer-lib src/assets/ej2-pdfviewer-lib
```
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/angular/troubleshooting/cp-command-not-recognized.md b/Document-Processing/PDF/PDF-Viewer/angular/troubleshooting/cp-command-not-recognized.md
index d3e5952b36..bcf7ee0d35 100644
--- a/Document-Processing/PDF/PDF-Viewer/angular/troubleshooting/cp-command-not-recognized.md
+++ b/Document-Processing/PDF/PDF-Viewer/angular/troubleshooting/cp-command-not-recognized.md
@@ -22,4 +22,4 @@ Here, `/s` indicates that you want to copy directories and subdirectories recurs
Make sure to run this command in the appropriate directory where you want to perform the copy operation.
-**Note:** If you encounter other issues or error messages while working with the Windows Command Prompt, make sure to double-check your command syntax and file paths for accuracy. Additionally, ensure that you have the necessary permissions to perform the copy operation in the specified directories.
\ No newline at end of file
+N>: If you encounter other issues or error messages while working with the Windows Command Prompt, make sure to double-check your command syntax and file paths for accuracy. Additionally, ensure that you have the necessary permissions to perform the copy operation in the specified directories.
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/angular/troubleshooting/document-loading-issues.md b/Document-Processing/PDF/PDF-Viewer/angular/troubleshooting/document-loading-issues.md
index 74e2ef7060..f6761be1cd 100644
--- a/Document-Processing/PDF/PDF-Viewer/angular/troubleshooting/document-loading-issues.md
+++ b/Document-Processing/PDF/PDF-Viewer/angular/troubleshooting/document-loading-issues.md
@@ -9,9 +9,9 @@ documentation: ug
# Document Loading Issues in Version 23.1 or Newer
-If you're experiencing problems with your document not rendering in the viewer, especially when using version 23.1 or a newer version, follow these troubleshooting steps to resolve the issue:
+If a document does not render in the viewer when using version 23.1 or later, use the following troubleshooting checklist to identify and resolve the issue.
-* **Check for `viewer.dataBind()` Requirement**: Ensure that you have called `viewer.dataBind()` as required in version 23.1 or newer. This explicit call is Essential® for initializing data binding and document rendering correctly. It is must to call the dataBind() method before load.
+* **Check `viewer.dataBind()` requirement:** Versions 23.1 and later require an explicit call to `viewer.dataBind()` after setting viewer properties and before calling `load()` so data binding and rendering initialize correctly.
```typescript
@@ -26,18 +26,18 @@ function documentLoad () {
}
```
-* **Verify Document Source**: Confirm that the document source or URL you're trying to display is valid and accessible. Incorrect URLs or document paths can lead to loading issues.
+* **Verify document source:** Confirm the document URL or local path is correct and reachable. Open the document URL directly in a browser to validate accessibility.
-* **Network Connectivity**: Ensure that your application has a stable network connection. Document rendering may fail if the viewer can't fetch the document due to network issues.
+* **Network connectivity:** Ensure the application can access remote resources. Intermittent or blocked network requests will prevent the viewer from fetching the document.
-* **Console Errors**: Use your browser's developer tools to check for any error messages or warnings in the console. These messages can provide insights into what's causing the document not to load.
+* **Inspect console and network logs:** Use browser developer tools to check for errors, failed network requests (including worker script loads), and HTTP status codes that indicate resource or permission problems.
-* **Loading Sequence**: Make sure that you're calling `viewer.dataBind()` and initiating document loading in the correct sequence. The viewer should be properly initialized before attempting to load a document.
+* **Loading sequence and Angular lifecycle:** Ensure `viewer.dataBind()` is called after the viewer instance is ready. For Angular applications, prefer the idiomatic approach using `@ViewChild` to access the component instance and invoke methods in appropriate lifecycle hooks (for example, `ngAfterViewInit`) rather than relying on direct DOM access.
-* **Update Viewer**: Ensure that you're using the latest version of the viewer library or framework. Sometimes, issues related to document loading are resolved in newer releases.
+* **Update the viewer:** Verify the project uses a compatible and up-to-date viewer package. Review release notes for version-specific changes that affect initialization or API behavior.
-* **Cross-Origin Resource Sharing (CORS)**: If you're loading documents from a different domain, ensure that CORS headers are correctly configured to allow cross-origin requests.
+* **Cross-Origin Resource Sharing (CORS):** If documents or worker assets are hosted on a different origin, configure server CORS headers (for example, `Access-Control-Allow-Origin`) or host assets on the same origin to allow worker scripts and document requests.
-* **Content Security Policies (CSP)**: Check if your application's Content Security Policy allows the loading of external resources, as this can affect document loading. Refer [here](https://ej2.syncfusion.com/javascript/documentation/common/troubleshoot/content-security-policy) to troubleshoot.
+* **Content Security Policy (CSP):** Confirm the application's CSP permits loading external resources the viewer requires. See the troubleshooting guide for [CSP](https://ej2.syncfusion.com/javascript/documentation/common/troubleshoot/content-security-policy)
By following these troubleshooting steps, you should be able to address issues related to document loading in version 23.1 or newer, ensuring that your documents render correctly in the viewer.
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/angular/troubleshooting/troubleshooting.md b/Document-Processing/PDF/PDF-Viewer/angular/troubleshooting/troubleshooting.md
index 41af0b823e..17f53222a2 100644
--- a/Document-Processing/PDF/PDF-Viewer/angular/troubleshooting/troubleshooting.md
+++ b/Document-Processing/PDF/PDF-Viewer/angular/troubleshooting/troubleshooting.md
@@ -9,9 +9,6 @@ domainurl: ##DomainURL##
---
# Experience the Standalone PDF Viewer Component by copying assets from node_modules into my app
+Copy the `ej2-pdfviewer-lib` assets from `node_modules` into the application's served assets folder so the Standalone PDF Viewer can load its worker scripts and resources at runtime. The Standalone PDF Viewer integrates across build systems and does not require a bundler when its assets are linked directly in the application.
-It is must to copy the assets from node_modules in to your app to experience the new Standalone PDF Viewer component. It offers flexibility across different build systems, remaining both framework-agnostic and independent of bundlers. Even without a bundler, you can seamlessly integrate the PDF Viewer by directly linking its assets into your app.
-
-This strategic approach to lazy loading prevents unwieldy file sizes that a single bundle might impose, which is often impractical.
-
-Assets from 'ej2-pdfviewer-lib' need to be manually incorporated due to their on-demand loading. This necessity arises because the host application lacks inherent awareness of these assets' lazy loading behavior.
\ No newline at end of file
+Including these files separately enables on-demand lazy loading of large resources, preventing a single bundle from becoming excessively large. Because the viewer loads certain files dynamically, the host application must make the `ej2-pdfviewer-lib` files available (for example, under `src/assets/ej2-pdfviewer-lib`) or configure the build system (for example, add the folder to the `assets` array in `angular.json`) so the viewer can request them at runtime.
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/Redaction/mobile-view.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/Redaction/mobile-view.md
index f725e4b627..c9096ad89e 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/Redaction/mobile-view.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/Redaction/mobile-view.md
@@ -13,7 +13,7 @@ The Redaction Tool enables users to permanently mark and remove sensitive conten

-N> In mobile view, the redaction toolbar appears at the bottom of the viewer for easy thumb access. Mobile layout activates automatically on small screens.
+N> In mobile view, the redaction toolbar appears at the bottom of the viewer for thumb access. The mobile layout activates automatically on small screens.
## Adding Redaction in Mobile View
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/Redaction/overview.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/Redaction/overview.md
index 7898620824..c7d973693b 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/Redaction/overview.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/Redaction/overview.md
@@ -10,7 +10,7 @@ domainurl: ##DomainURL##
# Redaction in ASP.NET Core PdfViewer
-Redaction annotations are used to hide confidential or sensitive information in a PDF. The Syncfusion ASP.NET Core PDF Viewer lets you mark areas or entire pages for redaction, customize their appearance, and permanently apply them with a single action.
+Redaction annotations hide confidential or sensitive information in a PDF. The Syncfusion ASP.NET Core PDF Viewer enables marking areas or entire pages for redaction, customizing their appearance, and permanently applying redactions.
## Enable the redaction toolbar
@@ -55,40 +55,40 @@ window.onload = function () {
{% endhighlight %}
{% endtabs %}
-N> Prerequisites: Add the PdfViewer control to your ASP.NET Core application and ensure the redaction feature is available in the version you are using. Once applied, redaction permanently removes the selected content.
+N> Prerequisites: Add the PdfViewer control to the ASP.NET Core application and confirm that the redaction feature is available in the used product version. Applying redaction permanently removes the selected content.

## Add Redaction Annotations
-You can mark specific content for redaction using the toolbar or through code.
+Mark specific content for redaction using the toolbar or programmatically.
-Select the **Redaction tool** and draw over the text or graphics you want to hide. You can also add overlay text (such as “Confidential”) and adjust the style — fill color, border color, and opacity.
+Select the **Redaction tool** and draw over the text or graphics to hide. Optionally add overlay text (for example, “Confidential”) and adjust the style: fill color, border color, and opacity.

## Delete Redaction Annotations
-Redaction annotations can be removed easily:
+Remove redaction annotations by either:
-- Click the **Delete** button on the toolbar, or
-- Select the annotation and press the **Delete** key.
+- Clicking the **Delete** button on the toolbar, or
+- Selecting the annotation and pressing the **Delete** key.

## Redact Entire Pages
-The viewer allows you to redact whole pages that contain sensitive information. You can choose specific pages, page ranges, or redact all pages using the built‑in dialog, or perform the same action programmatically.
+Redact whole pages that contain sensitive information. Choose specific pages, page ranges, or redact all pages using the built‑in dialog, or perform the same action programmatically.

## Apply Redaction
-Once annotations are added, you can permanently apply them to the document. This action cannot be undone.
+After adding annotations, permanently apply them to the document. This action is irreversible.
Use the **Apply Redaction** button on the toolbar or call the API method:
-- The button is disabled until at least one redaction annotation exists.
+- The button remains disabled until at least one redaction annotation exists.
- It becomes active when redaction annotations are present.

diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/Redaction/programmatic-support.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/Redaction/programmatic-support.md
index 9beadd3505..ed474840f6 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/Redaction/programmatic-support.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/Redaction/programmatic-support.md
@@ -9,7 +9,7 @@ documentation: ug
# Programmatic support for redaction in ASP.NET Core PdfViewer
-The Syncfusion ASP.NET Core PDF Viewer provides APIs to add, update, delete, and apply redaction annotations programmatically. You can also redact entire pages, configure default properties, and work with the redaction property panel.
+The Syncfusion ASP.NET Core PDF Viewer provides APIs to add, update, delete, and apply redaction annotations programmatically. The viewer also supports page redaction, configuration of default properties, and interaction with the redaction property panel.
## Enable the redaction toolbar
@@ -324,5 +324,5 @@ The redaction property panel allows users to update annotation properties throug
* [Overview of Redaction](./overview)
* [Redaction UI interactions](./ui-interaction)
* [Redaction Toolbar](./toolbar)
-* [Reaction in Mobile view](./mobile-view)
+* [Redaction in Mobile view](./mobile-view)
* [Search Text and Redact](./search-redact)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/Redaction/search-redact.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/Redaction/search-redact.md
index 879f504e53..b6391e4d14 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/Redaction/search-redact.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/Redaction/search-redact.md
@@ -10,9 +10,9 @@ domainurl: ##DomainURL##
# Search text and redact in ASP.NET Core PdfViewer
-You can search for a keyword in the loaded PDF and automatically add redaction annotations over each match. The example below wires the extractTextCompleted event, triggers text extraction, performs a search, and places redaction annotations for every result.
+Search for a keyword in the loaded PDF and automatically add redaction annotations for each match. The example below wires the `extractTextCompleted` event, triggers text extraction, performs a search, and adds redaction annotations for every result.
-N> Prerequisites: Add the PdfViewer control to your ASP.NET Core application and ensure a document is loaded. Make sure the redaction feature is available in the version you are using. Once applied, redaction permanently removes the selected content.
+N> Prerequisites: Add the PdfViewer control to the ASP.NET Core application and ensure a document is loaded. Confirm the redaction feature is available in the used product version. Applying redaction permanently removes the selected content.
## Steps to add Redaction annotations on search Text Bounds
@@ -111,7 +111,7 @@ N> Prerequisites: Add the PdfViewer control to your ASP.NET Core application and
- Ensure the PDF is fully loaded before triggering extraction and search.
- Bounds from search are in points (72 DPI). Convert to pixels (96 DPI) to align with annotation coordinates.
- Customize overlay text, colors, and typography as needed.
-- Adding a redaction annotation covers the content visually. To permanently remove sensitive data, use the viewer's Apply Redaction action or equivalent API if available in your version.
+- Adding a redaction annotation covers the content visually. To permanently remove sensitive data, use the viewer's Apply Redaction action or equivalent API if available in the used product version.
## See also
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/Redaction/toolbar.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/Redaction/toolbar.md
index 597913df3c..e221e300db 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/Redaction/toolbar.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/Redaction/toolbar.md
@@ -9,7 +9,7 @@ documentation: ug
# Redaction toolbar customization in ASP.NET Core
-The redaction toolbar in the Syncfusion ASP.NET Core PDF Viewer can be customized by rearranging existing items, hiding default items, or adding new ones. You can also place custom items at specific index positions among the existing toolbar items.
+Customize the redaction toolbar by rearranging existing items, hiding default items, or adding custom items. Custom items can be inserted at specific index positions among existing toolbar items.
## Enable the redaction toolbar
@@ -60,17 +60,17 @@ Refer to the following image for the toolbar view:
## Show or hide the redaction toolbar
-You can toggle the redaction toolbar either using the built‑in toolbar icon or programmatically with the `showRedactionToolbar` method.
+Toggle the redaction toolbar using the built‑in toolbar icon or programmatically with the `showRedactionToolbar` method.
### Display the redaction toolbar using the toolbar icon
-When **RedactionEditTool** is included in the toolbar settings, clicking the redaction icon in the primary toolbar will show or hide the redaction toolbar.
+When `RedactionEditTool` is included in the toolbar settings, clicking the redaction icon in the primary toolbar shows or hides the redaction toolbar.

### Display the redaction toolbar programmatically
-You can also control visibility through code by calling `viewer.toolbar.showRedactionToolbar(true/false)`.
+Control visibility in code by calling `viewer.toolbar.showRedactionToolbar(true)` or `viewer.toolbar.showRedactionToolbar(false)`.
The following example demonstrates toggling the redaction toolbar programmatically:
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/Redaction/ui-interaction.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/Redaction/ui-interaction.md
index 2b46addc4c..c76678ef33 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/Redaction/ui-interaction.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/Redaction/ui-interaction.md
@@ -11,7 +11,7 @@ documentation: ug
## Add redaction annotations from the toolbar
-Use the redaction tool in the toolbar to draw over content that should be hidden. After marking, an annotation can display overlay text (for example, “Confidential”) and can be styled using fill color and other properties.
+Use the redaction tool to draw over content to be hidden. After marking, an annotation can display overlay text (for example, “Confidential”) and can be styled using fill color and other properties.

@@ -37,7 +37,7 @@ After adding a redaction annotation, you can update its properties through the p
### Update using the property panel
-When a redaction annotation is selected, a two‑tab property panel (General and Appearance) lets you customize text and styling. Changes are reflected instantly on the redaction mark.
+When a redaction annotation is selected, a two‑tab property panel (General and Appearance) lets the user customize text and styling. Changes are reflected instantly on the redaction mark.
The property panel can be opened in two ways:
@@ -62,7 +62,7 @@ Use the General tab to define how the content will look after redaction. These s

-Note: Hovering the mouse over a redaction annotation shows a preview of this final look. After you click Apply Redaction, these settings are flattened into the page and can’t be edited. Tip: Click Save in the dialog to keep your changes.
+N> Hovering the mouse over a redaction annotation previews the final look. After clicking Apply Redaction, these settings are flattened into the page and cannot be edited. Tip: Click Save in the dialog to keep changes.
#### Appearance tab
@@ -72,7 +72,7 @@ Use the Appearance tab to style the redaction annotation itself (before applying
* Outline Color – Optional border for the annotation.
* Fill Opacity – Controls how transparent the annotation appears during review.
-Note: The Appearance tab affects only the temporary annotation. The final look after applying redaction comes from the General tab settings.
+N> The Appearance tab affects only the temporary annotation. The final look after applying redaction uses the General tab settings.

diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/accessibility.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/accessibility.md
index 34917759eb..fa971e56cb 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/accessibility.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/accessibility.md
@@ -6,9 +6,11 @@ platform: document-processing
control: PDF Viewer
documentation: ug
---
-# Accessibility in Syncfusion PDF Viewer component
+# Accessibility in ASP.NET Core PDF Viewer component
-The PDF Viewer component adheres to accessibility guidelines and standards, including [ADA](https://www.ada.gov/), [Section 508](https://www.section508.gov/), and [WCAG 2.2](https://www.w3.org/TR/WCAG22/). It also integrates [WCAG roles](https://www.w3.org/TR/wai-aria/#roles) commonly used for accessibility evaluation.
+The PDF Viewer component adheres to accessibility guidelines and standards, including [ADA](https://www.ada.gov/), [Section 508](https://www.section508.gov/), and [WCAG 2.2](https://www.w3.org/TR/WCAG22/). It implements [WCAG roles](https://www.w3.org/TR/wai-aria/#roles) to ensure comprehensive accessibility support for all users.
+
+## Accessibility compliance
Below is an outline of the accessibility compliance for the PDF Viewer component:
@@ -58,7 +60,9 @@ Below is an outline of the accessibility compliance for the PDF Viewer component
## Keyboard interaction
-The PDF Viewer component follows the [keyboard interaction](https://www.w3.org/WAI/ARIA/apg/patterns/alert/#keyboardinteraction) guidelines, making it easy for users of assistive technologies (AT) and those who rely solely on keyboard navigation. The following keyboard shortcuts are supported by the PDF Viewer component:
+The PDF Viewer component follows the [keyboard interaction](https://www.w3.org/WAI/ARIA/apg/patterns/alert/#keyboardinteraction) guidelines, making it accessible for users of assistive technologies and those who rely solely on keyboard navigation. The built-in keyboard shortcuts support common operations such as document navigation, zooming, searching, text selection, and annotation management.
+
+### Built-in keyboard shortcuts
| **Press (Windows)** | **Press (Macintosh)** | **To do this** |
| --- | --- | --- |
@@ -93,15 +97,30 @@ The PDF Viewer component follows the [keyboard interaction](https://www.w3.org/W
| Shift + H | Shift + H | Enable pan mode |
| Shift + V | Shift + V | Enable text selection mode |
-The current implementation of our PDF Viewer includes keyboard shortcuts for functions such as scrolling, zooming, text search, printing, and annotation deletion.
+## Custom keyboard commands
+
+In addition to the built-in keyboard shortcuts, the PDF Viewer component supports custom keyboard commands, allowing developers to define application-specific keyboard gestures and actions. This feature enhances user experience by enabling efficient navigation and interaction tailored to specific workflows.
+
+### Configuring custom keyboard commands
+
+Custom keyboard commands are configured through the **CommandManager** class, which manages keyboard events and executes defined commands. The CommandManager accepts a collection of custom keyboard commands via the `keyboardCommand` parameter, where each command specifies a unique name and its associated keyboard gesture.
-To enhance user experience, we are adding additional keyboard shortcuts for actions like navigating between pages, accessing specific pages, toggling annotation tools, and displaying PDF elements (outlines, annotations, bookmarks, and thumbnails).
+Each keyboard gesture consists of two components:
+- **Key**: The primary key (represented using the `PdfKeys` enum)
+- **Modifier keys**: Optional modifier keys (Shift, Ctrl, Alt, or Meta combinations)
-To support these enhancements, we are introducing a new class called **commandManager**. This class handles custom commands triggered by specific key gestures, which are defined by users and executed accordingly.
+### Modifier keys reference
-The **commandManager** includes a parameter called `keyboardCommand` (which replaces `Commands`). This parameter holds a collection of custom keyboard commands specified by users. Each custom command is represented by a `KeyboardCommand` class, containing the `name` of the command and its associated `gesture` (keyboard combination).
+The following modifier keys can be combined with primary keys:
-Additionally, we are introducing an `EventCallback` to the `keyboardCustomCommands` parameter for the `CommandManager`. This will handle keyboard events and trigger appropriate methods when specific key combinations are pressed.
+- **Ctrl** (Control key): represented by the value `1`
+- **Alt** (Alt key): represented by the value `2`
+- **Shift** (Shift key): represented by the value `4`
+- **Meta** (Command key on macOS or Windows key on Windows): represented by the value `8`
+
+Multiple modifiers can be combined using the bitwise OR operator (`|`).
+
+### Example: Defining custom keyboard commands
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -196,21 +215,17 @@ Additionally, we are introducing an `EventCallback` to the `keyboardCustomComman
{% endhighlight %}
{% endtabs %}
-Each `keyboardCommand` object consists of a name property, specifying the `name` of the `custom command`, and a `gesture property`, defining the key gesture associated with the command.
-
-For example, the first command named `customCopy` is associated with the **G** key and requires both the **Shift** and **Alt** modifier keys to be pressed simultaneously.
-
-Additionally, there's an explanation of the key modifiers used in the gestures:
+Each `keyboardCommand` object consists of the following properties:
-* Ctrl corresponds to the Control key, represented by the value `1`.
-* Alt corresponds to the Alt key, represented by the value `2`.
-* Shift corresponds to the Shift key, represented by the value `4`.
-* Meta corresponds to the Command key on macOS or the Windows key on Windows, represented by the value `8`.
+- **name**: The identifier for the custom command (e.g., `customCopy`, `customPaste`)
+- **gesture**: An object containing the key binding configuration:
+ - **pdfKeys**: The primary key from the `PdfKeys` enum
+ - **modifierKeys**: A combination of modifier keys using the `ModifierKeys` enum with bitwise OR operations
-This setup allows users to perform custom actions within the PDF viewer by pressing specific key combinations, enhancing the user experience and providing more efficient navigation and interaction options.
+In the example above, the `customCopy` command is triggered by pressing **G** in combination with **Shift** and **Alt** keys. The gesture definition allows multiple modifier keys to be combined, enabling flexible keyboard accessibility patterns.
## Ensuring accessibility
-The PDF Viewer component's accessibility levels are ensured through an [accessibility-checker](https://www.npmjs.com/package/accessibility-checker) and [axe-core](https://www.npmjs.com/package/axe-core) software tools during automated testing.
+The PDF Viewer component's accessibility compliance is validated through automated testing using [accessibility-checker](https://www.npmjs.com/package/accessibility-checker) and [axe-core](https://www.npmjs.com/package/axe-core) software tools.
N> Follow the steps provided in the [link](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/asp-net-core/getting-started) to create a simple PDF Viewer sample.
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/annotation-event.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/annotation-event.md
index b8c7b5d36b..9d22e16dc6 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/annotation-event.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/annotation-event.md
@@ -1,14 +1,18 @@
---
-title: Annotations Events in ASP.NET Core PDF Viewer control | Syncfusion
-description: Learn here all about Annotations Events in Syncfusion ASP.NET Core PDF Viewer component of Syncfusion Essential JS 2 and more.
+title: Annotation Events in ASP.NET Core PDF Viewer | Syncfusion
+description: Comprehensive guide to annotation events in the Syncfusion ASP.NET Core PDF Viewer component with runnable examples.
platform: document-processing
control: PDF Viewer
documentation: ug
---
-# Annotations Events in ASP.NET Core PDF Viewer control
+# Annotation Events in ASP.NET Core PDF Viewer
-The PDF Viewer component triggers various events based on user interactions and changes in the component's state. These events can be used to perform actions when a specific event occurs. This section describes the events available in the PDF Viewer component.
+The PDF Viewer component triggers various events based on user interactions and annotation changes. These events allow to respond to specific annotation operations such as adding, removing, selecting, moving, and resizing annotations. Signature-related events can also be monitored for signature lifecycle management.
+
+## Available events
+
+The PDF Viewer component triggers the following annotation and signature events:
| Event | Description |
| ------------------------------------------------------------------ | ---------------------------------------------------------------------------------- |
@@ -31,16 +35,15 @@ The PDF Viewer component triggers various events based on user interactions and
| [`signatureSelect`](#signatureselect) | Triggers when a signature is selected on a page in the PDF document. |
| [`signatureUnselect`](#signatureunselect) | Triggers when a signature is unselected on a page in the PDF document. |
+## Annotation events
### annotationAdd
The [annotationAdd](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_AnnotationAdd) event is triggered when an annotation is added to a PDF document's page.
-#### Event Arguments
+**Event Arguments:** [AnnotationAddEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationAddEventArgs)
-For event data, see [AnnotationAddEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationAddEventArgs/). It provides properties such as `annotationId`, `pageNumber`, `annotationType`, and `bounds`.
-
-The following example illustrates how to handle the `annotationAdd` event.
+**Example: Handle annotation add event**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -83,11 +86,9 @@ The following example illustrates how to handle the `annotationAdd` event.
The [annotationDoubleClick](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_AnnotationDoubleClick) event is triggered when an annotation is double-clicked.
-#### Event Arguments
+**Event Arguments:** [AnnotationDoubleClickEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationDoubleClickEventArgs)
-For event data, see [AnnotationDoubleClickEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationDoubleClickEventArgs/).
-
-The following example illustrates how to handle the `annotationDoubleClick` event.
+**Example: Handle annotation double-click event**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -128,11 +129,11 @@ The following example illustrates how to handle the `annotationDoubleClick` even
The [annotationMouseLeave](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_AnnotationMouseLeave) event is triggered when the user's mouse pointer moves away from an annotation object.
-#### Event Arguments
-
-For event data, see [AnnotationMouseLeaveEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationMouseLeaveEventArgs/).
+**Event Arguments:** [AnnotationMouseLeaveEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationMouseLeaveEventArgs)
+- `pageIndex`
+- `name`
-The following example illustrates how to handle the `annotationMouseLeave` event.
+**Example: Handle annotation mouse leave event**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -173,11 +174,9 @@ The following example illustrates how to handle the `annotationMouseLeave` event
The [annotationMouseover](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_AnnotationMouseover) event is triggered when the mouse is moved over an annotation object.
-#### Event Arguments
+**Event Arguments:** [AnnotationMouseOverEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationMouseOverEventArgs)
-For event data, see [AnnotationMouseOverEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationMouseOverEventArgs/).
-
-The following example illustrates how to handle the `annotationMouseover` event.
+**Example: Handle annotation mouse over event**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -216,13 +215,11 @@ The following example illustrates how to handle the `annotationMouseover` event.
### annotationMove
-The [annotationMove](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_AnnotationMove) event is triggered when an annotation is moved over the page of the PDF document.
-
-#### Event Arguments
+The [annotationMove](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_AnnotationMove) event is triggered when an annotation drag operation completes and the annotation is positioned on the page.
-For event data, see [AnnotationMoveEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationMoveEventArgs/).
+**Event Arguments:** [AnnotationMoveEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationMoveEventArgs)
-The following example illustrates how to handle the `annotationMove` event.
+**Example: Handle annotation move event**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -261,13 +258,11 @@ The following example illustrates how to handle the `annotationMove` event.
### annotationMoving
-The [annotationMoving](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_AnnotationMoving) event is triggered while an annotation is being moved.
-
-#### Event Arguments
+The [annotationMoving](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_AnnotationMoving) event is triggered continuously while an annotation is being dragged.
-For event data, see [AnnotationMovingEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationMovingEventArgs/).
+**Event Arguments:** [AnnotationMovingEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationmovingeventargs)
-The following example illustrates how to handle the `annotationMoving` event.
+**Example: Handle annotation moving event**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -306,13 +301,11 @@ The following example illustrates how to handle the `annotationMoving` event.
### annotationPropertiesChange
-The [annotationPropertiesChange](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_AnnotationPropertiesChange) event is triggered when an annotation's property is modified on a PDF document page.
-
-#### Event Arguments
+The [annotationPropertiesChange](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_AnnotationPropertiesChange) event is triggered when an annotation's properties (color, opacity, thickness, etc.) are modified.
-For event data, see [AnnotationPropertiesChangeEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationPropertiesChangeEventArgs/). It provides properties such as `annotationId`, `pageNumber`, and `action`.
+**Event Arguments:** [AnnotationPropertiesChangeEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationPropertiesChangeEventArgs)
-The following example illustrates how to handle the `annotationPropertiesChange` event.
+**Example: Handle annotation properties change event**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -353,13 +346,11 @@ The following example illustrates how to handle the `annotationPropertiesChange`
### annotationRemove
-The [annotationRemove](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_AnnotationRemove) event is triggered when an annotation is removed from a PDF document's page.
-
-#### Event Arguments
+The [annotationRemove](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_AnnotationRemove) event is triggered when an annotation is deleted from the PDF document.
-For event data, see [AnnotationRemoveEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationRemoveEventArgs/). It provides properties such as `annotationId` and `pageNumber`.
+**Event Arguments:** [AnnotationRemoveEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationRemoveEventArgs)
-The following example illustrates how to handle the `annotationRemove` event.
+**Example: Handle annotation remove event**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -398,13 +389,11 @@ The following example illustrates how to handle the `annotationRemove` event.
### annotationResize
-The [annotationResize](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_AnnotationResize) event is triggered when an annotation is resized on a PDF document page.
-
-#### Event Arguments
+The [annotationResize](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_AnnotationResize) event is triggered when an annotation is resized.
-For event data, see [AnnotationResizeEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationResizeEventArgs/).
+**Event Arguments:** [AnnotationResizeEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationResizeEventArgs)
-The following example illustrates how to handle the `annotationResize` event.
+**Example: Handle annotation resize event**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -443,13 +432,11 @@ The following example illustrates how to handle the `annotationResize` event.
### annotationSelect
-The [annotationSelect](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_AnnotationSelect) event is triggered when an annotation is selected on a PDF document's page.
-
-#### Event Arguments
+The [annotationSelect](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_AnnotationSelect) event is triggered when the user selects or clicks on an annotation.
-For event data, see [AnnotationSelectEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationSelectEventArgs/).
+**Event Arguments:** [AnnotationSelectEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationSelectEventArgs)
-The following example illustrates how to handle the `annotationSelect` event.
+**Example: Handle annotation select event**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -488,13 +475,11 @@ The following example illustrates how to handle the `annotationSelect` event.
### annotationUnselect
-The [annotationUnselect](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_AnnotationUnSelect) event is triggered when an annotation is unselected from the PDF document's page.
+The [annotationUnselect](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_AnnotationUnSelect) event is triggered when the user deselects an annotation by clicking elsewhere.
-#### Event Arguments
-
-For event data, see [AnnotationUnSelectEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationUnSelectEventArgs/).
+**Event Arguments:** [AnnotationUnselectEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationUnselectEventArgs)
-The following example illustrates how to handle the `annotationUnselect` event.
+**Example: Handle annotation unselect event**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -533,13 +518,11 @@ The following example illustrates how to handle the `annotationUnselect` event.
### beforeAddFreeText
-The [beforeAddFreeText](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_BeforeAddFreeText) event is triggered before adding a text in the freeText annotation.
-
-#### Event Arguments
+The [beforeAddFreeText](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_BeforeAddFreeText) event is triggered before a free text annotation is added.
-For event data, see [BeforeAddFreeTextEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/beforeAddFreeTextEventArgs/).
+**Event Arguments:** [BeforeAddFreeTextEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/beforeAddFreeTextEventArgs)
-The following example illustrates how to handle the `beforeAddFreeText` event.
+**Example: Handle before add free text event**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -584,13 +567,11 @@ The following example illustrates how to handle the `beforeAddFreeText` event.
### addSignature
-The [addSignature](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_AddSignature) event is triggered when a signature is added to a page of a PDF document.
+The [addSignature](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_AddSignature) event is triggered when a signature is successfully added to the PDF document page.
-#### Event Arguments
-
-For event data, see [AddSignatureEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/addSignatureEventArgs/). It provides properties such as `pageNumber`.
+**Event Arguments:** [AddSignatureEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/addSignatureEventArgs)
-The following example illustrates how to handle the `addSignature` event.
+**Example: Handle add signature event**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -629,13 +610,11 @@ The following example illustrates how to handle the `addSignature` event.
### removeSignature
-The [removeSignature](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_RemoveSignature) event is triggered when the signature is removed from the page of a PDF document.
-
-#### Event Arguments
+The [removeSignature](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_RemoveSignature) event is triggered when a signature is deleted from the PDF document.
-For event data, see [RemoveSignatureEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/removeSignatureEventArgs/). It provides properties such as `pageNumber`.
+**Event Arguments:** [RemoveSignatureEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/removeSignatureEventArgs)
-The following example illustrates how to handle the `removeSignature` event.
+**Example: Handle remove signature event**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -674,13 +653,11 @@ The following example illustrates how to handle the `removeSignature` event.
### resizeSignature
-The [resizeSignature](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ResizeSignature) event is triggered when the signature is resized and placed on a page of a PDF document.
+The [resizeSignature](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ResizeSignature) event is triggered when a signature is resized.
-#### Event Arguments
-
-For event data, see [ResizeSignatureEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/resizeSignatureEventArgs/).
+**Event Arguments:** [ResizeSignatureEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/resizeSignatureEventArgs)
-The following example illustrates how to handle the `resizeSignature` event.
+**Example: Handle resize signature event**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -719,13 +696,11 @@ The following example illustrates how to handle the `resizeSignature` event.
### signaturePropertiesChange
-The [signaturePropertiesChange](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_SignaturePropertiesChange) event is triggered when the property of the signature is changed in the page of the PDF document.
-
-#### Event Arguments
+The [signaturePropertiesChange](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_SignaturePropertiesChange) event is triggered when a signature's properties are modified.
-For event data, see [SignaturePropertiesChangeEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/signaturePropertiesChangeEventArgs/).
+**Event Arguments:** [SignaturePropertiesChangeEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/signaturePropertiesChangeEventArgs)
-The following example illustrates how to handle the `signaturePropertiesChange` event.
+**Example: Handle signature properties change event**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -768,7 +743,7 @@ The [signatureSelect](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.e
#### Event Arguments
-For event data, see [SignatureSelectEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/signatureSelectEventArgs/).
+For event data, see [SignatureSelectEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/signatureSelectEventArgs).
The following example illustrates how to handle the `signatureSelect` event.
@@ -813,7 +788,7 @@ The [signatureUnselect](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion
#### Event Arguments
-For event data, see [SignatureUnSelectEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/signatureUnSelectEventArgs/).
+For event data, see [SignatureUnSelectEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/signatureUnSelectEventArgs).
The following example illustrates how to handle the `signatureUnselect` event.
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/annotations-in-mobile-view.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/annotations-in-mobile-view.md
index 11e8557a96..631f9e6320 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/annotations-in-mobile-view.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/annotations-in-mobile-view.md
@@ -1,121 +1,160 @@
---
layout: post
-title: Annotations in mobile view in ASP.NET Core PDF Viewer | Syncfusion
-description: Learn here all about Annotations in mobile view in Syncfusion ASP.NET Core PDF Viewer control of Syncfusion Essential JS 2 and more.
+title: Mobile Annotations in ASP.NET Core PDF Viewer | Syncfusion
+description: Master touch-based annotation workflows in mobile PDF Viewer. Add various types of annotations on mobile devices with step-by-step guides.
platform: document-processing
control: PDF Viewer
documentation: ug
---
-# Annotations in mobile view in ASP.NET Core PDF Viewer control
-## To Open the Annotation Toolbar
+# Mobile Annotations in ASP.NET Core PDF Viewer
-**Step 1:** To enable the annotation toolbar, click the editAnnotation toolbar.
+Comprehensive guide for adding and managing annotations using the touch-optimized mobile interface. The PDF Viewer provides intuitive annotation tools designed specifically for mobile devices with streamlined workflows and accessible touch gestures.
+
+## Annotation toolbar in mobile view
+
+The annotation toolbar provides access to all annotation tools on mobile devices. Enabling it displays the full range of annotation options in an optimized touch interface.
+
+### Opening the toolbar
+
+1. **Tap the Edit Annotation button** in the main toolbar at the top of the PDF Viewer
+2. The annotation toolbar appears below with all available annotation tools
+3. Each icon represents a different annotation type
+
+**Step 1:** Tap the Edit Annotation toolbar button to enable annotations

-**Step 2:** After enabling the annotation toolbar.
+**Step 2:** Annotation toolbar is now active with all annotation options visible

+### Annotation toolbar icons
+
+The toolbar displays icon buttons for quick access to each annotation type. Tap any icon to activate that annotation mode.
+
## To add sticky notes annotation
-**Step 1:** click sticky notes icon and then click in the page where you want to add this.
+Sticky notes provide quick annotation markers with optional comment text.
+
+### Adding sticky notes on mobile
+
+**Step 1:** Tap the sticky note icon to activate sticky note mode

-**Step 2:** Click in the page to add the sticky notes annotation.
+**Step 2:** Tap on the page location to add the sticky note annotation

## To add text markup annotation
-**Step 1:** click any one of the text markup icon, then select the text you want to mark, then touch the selected text to apply the markup annotation.
+Text markup annotations highlight, underline, or strikethrough important text content.
+
+**Step 1:** Tap a text markup icon, then select text on the page to mark

-**Step 2:** Add the text markup annotation in the PDF page
+**Step 2:** Text markup annotation is applied to the selected text.

## To add shape and measure annotations
-**Step 1:** click the shape/measure icon in the toolbar. It will show the toolbar with shape/measure types.
+Shape and measurement annotations provide visual drawing and dimensional analysis tools. They are useful for highlighting regions, measurements, and geometric markups.
+
+**Step 1:** Tap the shape/measure icon to display available shape and measurement types

-**Step 2:** Click the shape/measure type and add annotation to the page.
+**Step 2:** Select a measurement type from the toolbar options

-**Step 3:** Add the annotation in the PDF page.
+**Step 3:** Draw the annotation on the PDF page with touch gestures

## To add the stamp annotation
-**Step 1:** click the stamp icon and select the stamp type from the menu items.
+Stamp annotations display predefined visual marks indicating document status or approval. They communicate document state without requiring text.
+
+**Step 1:** Tap the stamp icon and select the desired stamp type from menu

-**Step 2:** Add the stamp annotation in the page.
+**Step 2:** Stamp annotation is added to the PDF page

## To add signature
-**Step 1:** click the signature icon. This will open the signature canvas to draw signature. After drawn the sign, should click the create button and touch the viewer to add the signature.
+Digital signatures provide authentication and approval marks on PDF documents. They are captured through freehand drawing on a dedicated canvas.
+
+**Step 1:** Tap the signature icon to open the signature drawing canvas

-**Step 2:** Add the signature in the page.
+**Step 2:** Signature annotation is added to the PDF page

## To add ink annotation
-**Step 1:** Click the ink icon tool and draw in the page.
+Ink annotations allow freehand drawing directly on PDF pages. They capture handwritten notes, sketches, and artistic marks.
+
+**Step 1:** Tap the ink icon tool to activate freehand drawing mode

-**Step 2:** Add the ink annotation in the page.
+**Step 2:** Ink annotation is added to the PDF page via freehand drawing

-## Change Annotation Change (Before adding)
+## Change annotation properties
+
+Mobile PDF Viewer provides two approaches for customizing annotation appearance: before creation or after placement.
-**Step 1:** We can change the properties before adding the annotation.
+### Change properties before adding
-**Step 2:** Click the annotation icon, this will show the toolbar with corresponding properties. We can change the property and add the annotation in the page.
+Customize annotation appearance before placing it on the page:
+
+**Method 1:** Access the property toolbar to customize annotation before adding

-## Change Annotation Property (After Adding)
+### Change properties after adding
-**Step 1:** We can change the annotation property after adding the annotation.
+Modify an annotation after it has been placed on the page:
-**Step 2:** Select the added annotation, it will show the corresponding property tool. This will help us to change the property of the annotation.
+**Method 2:** Tap annotation to select and modify its properties

-## Delete Annotation
+## Delete annotation
+
+Remove unwanted annotations from the PDF page using the delete tool:
-**Step 1:** To delete the annotation, first select the annotation, it will show the property toolbar. In the property tool there is an icon to delete the annotation.
+**Step 1:** Select annotation and tap the delete icon in the property toolbar

-## Open Comment Panel
+## Open comment panel
-**Step 1:** We can open the comment panel through the icon in the property tool or through the annotation toolbar.
+The comment panel allows adding notes, discussions, and threaded comments to annotations:
+
+**Step 1:** Tap the comment icon to open the comment panel

-**Step 1:** After opening the comment panel
+**Step 2:** Comment panel is now open and ready for text input

## Close the comment panel
-**Step 1:** To close the comment panel, click the close button.
+Close the comment panel when finished adding notes:
+
+**Step 1:** Tap the close button to hide the comment panel

\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/comments.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/comments.md
index f8363a8832..6d2d4b2b82 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/comments.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/comments.md
@@ -1,15 +1,19 @@
---
layout: post
-title: Comments in ASP.NET Core PDF Viewer control | Syncfusion
-description: Learn about comments, replies, and status in the Syncfusion ASP.NET Core PDF Viewer control (Essential JS 2).
+title: Comments in ASP.NET Core PDF Viewer | Syncfusion
+description: Add, reply, and manage comments in ASP.NET Core PDF Viewer with support for comment threads, replies, status tracking and programmatic controls.
platform: document-processing
control: PDF Viewer
documentation: ug
---
-# Comments in ASP.NET Core PDF Viewer control
+# Comments in ASP.NET Core PDF Viewer
-The PDF Viewer control provides options to add, edit, and delete comments for the following annotations in PDF documents:
+The PDF Viewer control provides comprehensive comment management capabilities for annotation discussions and collaboration. Add, reply, edit, and delete comments across multiple annotation types.
+
+## Supported annotation types
+
+Comments can be added to the following annotation types in PDF documents:
* Shape annotation
* Stamp annotation
@@ -25,94 +29,142 @@ The PDF Viewer control provides options to add, edit, and delete comments for th
Annotation comments, replies, and status can be managed in the PDF document using the comment panel.
-### Comment panel
+## Comment panel
-Annotation comments can be added to the PDF using the comment panel. The comment panel can be opened in the following ways:
+The comment panel provides a centralized interface for managing all annotation comments and discussions. The comment panel can be opened in multiple ways:
-1. Using the annotation menu
+### Opening the comment panel
- * Click the Edit Annotation button in the PDF Viewer toolbar. A toolbar appears below it.
- * Click the Comment Panel button. The comment panel opens.
+**Method 1: Using the annotation toolbar**
+1. Click the **Edit Annotation** button in the PDF Viewer toolbar
+2. A secondary toolbar appears below the main toolbar
+3. Click the **Comment Panel** button
+4. The comment panel opens on the right side of the screen
-2. Using Context menu
+**Method 2: Using context menu**
+1. Select an annotation in the PDF document
+2. Right-click to open the context menu
+3. Select **Comment** from the menu
+4. The comment panel opens and shows that annotation's thread
- * Select the annotation in the PDF document and right-click it.
- * Select Comment from the context menu.
+**Method 3: Using double-click**
+1. Select an annotation in the PDF document
+2. Double-click the annotation
+3. The comment panel opens automatically
-3. Using the Mouse click
+
- * Select the annotation in the PDF document and double-click it. The comment panel opens.
+### Working with the comment panel
-If the comment panel is already open, select the annotation and add comments using the panel.
+Once the comment panel is open:
+- The corresponding comment thread for the selected annotation is automatically highlighted
+- Add new comments using the text input field
+- View all replies to parent comments
+- Edit or delete existing comments
+- Change comment status from the options menu
### Adding comments
-* Select the annotation in the PDF document.
-* The corresponding comment thread is highlighted in the comment panel.
-* Add comments and replies using the comment panel.
+**Step-by-step guide:**
+
+1. **Select the annotation** - Click on any annotation in the PDF document
+2. **View comment thread** - The corresponding comment thread is automatically highlighted in the comment panel
+3. **Enter comment text** - Type your comment in the text input field at the bottom of the thread
+4. **Submit comment** - Press Enter or click the Post button to post the comment

-### Adding Comment Replies
+### Adding comment replies
+
+Comments support threaded discussions through replies.
-* Multiple replies can be added to a comment.
-* After adding a comment, add replies as needed.
+- Multiple replies can be added to a single comment
+- Replies maintain the conversation context within the thread
+- All replies are nested under the parent comment
+- Edit and delete options available for each reply
-### Adding Comment or Reply Status
+**Creating a reply:**
+1. Click an existing comment in the thread
+2. Click the **Add a reply** button
+3. Type your reply text in the reply input field
+4. Press Enter or click submit to post the reply
-* Select the annotation comment in the comment panel.
-* Click More options in the comment or reply container.
-* Select Set Status from the context menu.
-* Choose a status for the comment.
+### Adding comment or reply status
+
+Comments and replies can have status indicators for workflow tracking.
+
+**Setting status:**
+
+1. Select the annotation comment in the comment panel
+2. Click the **More options** menu (three dots) on the comment or reply container
+3. Select **Set Status** from the context menu
+4. Choose a status from the dropdown:
+ - **None** - Default state
+ - **Accepted** - Comment approved
+ - **Rejected** - Comment rejected
+ - **Cancelled** - Comment cancelled

### Editing the comments and comments replies of the annotations
-Comments, replies, and status can be edited using the comment panel.
+Comments, replies, and status can be edited at any time using the comment panel interface.
-### Editing the Comment or Comment Replies
+### Editing comments or replies
-Edit comments and replies in the following ways:
+Edit comments and replies using one of these methods:
-1. Using the Context menu
+**Method 1: Using the context menu**
+1. Select the annotation comment in the comment panel
+2. Click the **More options** menu on the comment or reply container
+3. Select **Edit** from the context menu
+4. An editable text box appears
+5. Change the comment or reply content
+6. Press Enter or click Post to confirm changes
- * Select the annotation comment in the comment panel.
- * Click More options in the comment or reply container.
- * Select Edit from the context menu.
- * An editable text box appears. Change the content of the comment or reply.
+**Method 2: Using mouse click**
+1. Select the annotation comment in the comment panel
+2. Double-click directly on the comment or reply text
+3. The text becomes editable inline
+4. Modify the content as needed
+5. Press Enter to save or Escape to cancel
-2. Using the Mouse Click
+### Editing comment or reply status
- * Select the annotation comment in the comment panel.
- * Double-click the comment or reply content.
- * An editable text box appears. Change the content of the comment or reply.
+Status can be changed at any time:
-### Editing Comment or Reply Status
+1. Select the annotation comment in the comment panel
+2. Click the **More options** menu on the comment or reply
+3. Select **Set Status** from the context menu
+4. Choose a new status from the dropdown
-* Select the annotation comment in the comment panel.
-* Click More options in the comment or reply container.
-* Select Set Status from the context menu.
-* Choose a status for the comment.
-* None is the default state. Selecting None clears the status indicator; the comment or reply remains visible.
+**Status states:**
+- **None**
+- **Accepted**
+- **Rejected**
+- **Cancelled**
+- **Completed**

-### Delete Comment or Comment Replies
+### Delete comments or replies
+
+Remove comments and replies from the discussion thread:
-* Select the annotation comment in the comment panel.
-* Click More options in the comment or reply container.
-* Select Delete from the context menu.
+1. Select the annotation comment in the comment panel
+2. Click the **More options** menu on the comment or reply
+3. Select **Delete** from the context menu
+4. The comment or reply is removed from the thread

->Deleting the root comment from the comment panel also deletes the associated annotation.
+N> Deleting the root comment (the first comment in a thread) from the comment panel also deletes the associated annotation from the PDF document.
## How to check the comments added by the user
-Comments added to the PDF document can be read using the annotation's `comments` property.
+Comments can be accessed and processed programmatically through the annotation's `comments` property, enabling integration with external systems and custom workflows.
-The following example logs comments in response to a button click.
+### Example: Access and log comments from annotations
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/free-text-annotation.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/free-text-annotation.md
index e7449932b9..cbb7e8497c 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/free-text-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/free-text-annotation.md
@@ -1,29 +1,43 @@
---
layout: post
-title: Free text annotation in EJ2 ASP.NET Core PDF Viewer | Syncfusion
-description: Learn about free text annotations in the Syncfusion ASP.NET Core PDF Viewer (Essential JS 2): add, edit, delete, and default settings.
+title: Free Text Annotations in ASP.NET Core PDF Viewer | Syncfusion
+description: Add and customize free text annotations in ASP.NET Core PDF Viewer with control over formatting tools with programmatic APIs.
platform: document-processing
control: PDF Viewer
documentation: ug
---
-# Free text annotation in ASP.NET Core PDF Viewer control
+# Free Text Annotations in ASP.NET Core PDF Viewer
-The PDF Viewer control provides options to add, edit, and delete free text annotations.
+The PDF Viewer control provides comprehensive free text annotation capabilities for adding, editing, deleting, and customizing text annotations with full typographic and styling control.
## Add a free text annotation to the PDF document
-Free text annotations can be added to the PDF document using the annotation toolbar.
+Free text annotations can be added to PDF documents using the built-in annotation toolbar with simple click and type functionality.
-* Click the **Edit Annotation** button in the PDF Viewer toolbar. The annotation toolbar appears below it.
-* Select the **Free Text Annotation** button to enable free text annotation mode.
-* Add text anywhere on the pages of the PDF document.
+### Step-by-step guide
-When in pan mode, selecting free text annotation switches the PDF Viewer to text select mode.
+**1. Enable annotation mode**
+- Click the **Edit Annotation** button in the PDF Viewer toolbar
+- The annotation toolbar appears below the main toolbar
+
+**2. Select free text tool**
+- Click the **Free Text Annotation** button in the annotation toolbar
+- The cursor changes to text input mode

-The following example switches to free text annotation mode using a button click.
+**3. Place text box on document**
+- Click on the PDF page where you want to add text
+- A text box appears at the clicked location
+
+**4. Enter text content**
+- Type your text directly into the text box
+- Use the formatting toolbar to adjust font, size, color, and alignment
+
+N> When in pan mode and free text annotation is selected, the PDF Viewer automatically switches to text select mode for smooth interaction.
+
+**Example: Enable free text annotation mode**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -67,9 +81,9 @@ The following example switches to free text annotation mode using a button click
## Add a free text annotation programmatically to the PDF document
-The PDF Viewer library allows adding a free text annotation programmatically using the [addAnnotation()](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation/#annotation) method.
+The PDF Viewer library provides the [`addAnnotation()`](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#addannotation) API method for programmatic free text insertion, enabling dynamic form filling and batch annotation operations.
-Here is an example of adding a free text annotation programmatically using addAnnotation():
+**Example: Add free text annotation programmatically**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -141,9 +155,9 @@ Here is an example of adding a free text annotation programmatically using addAn
## Change the content of an existing free text annotation programmatically
-To change the content of an existing free text annotation programmatically, use the **editAnnotation()** method.
+Modify free text annotation properties including text content, position, formatting, and styling using the **editAnnotation()** API method.
-Here is an example of changing the content of a free text annotation using **editAnnotation()**:
+**Example: Edit free text annotation content and properties**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -203,67 +217,73 @@ N> The current version of the PDF Viewer does not edit existing document text. N
## Edit the properties of free text annotations
-Font family, font size, styles, font color, text alignment, fill color, stroke color, border thickness, and opacity can be edited using the Font Family, Font Size, Font Color, Text Align, Font Style, Edit Color, Edit Stroke Color, Edit Thickness, and Edit Opacity tools in the annotation toolbar.
+Free text annotations support comprehensive typography and styling options through the annotation toolbar. Select any free text annotation to access these editing tools.
-### Edit font family
+### Text formatting tools
-Edit the font family by selecting a font in the Font Family tool.
+**1. Edit Font Family**
+- Select from available fonts in the Font Family tool
+- Changes apply to the selected free text

-### Edit font size
+**2. Edit Font Size**
-Edit the font size by selecting a size in the Font Size tool.
+Choose font size from the Font Size tool

-### Edit font color
-
-Edit the font color using the color palette in the Font Color tool.
+**3. Edit Font Color**
+- Use the color palette in the Font Color tool
+- Click to select text color

-### Edit text alignment
+### Text alignment
-Align text by selecting an option from the Text Align tool.
+**4. Edit Text Alignment**
+
+Select alignment from the Text Align tool

-### Edit text styles
+**5. Edit Text Styles**
-Edit text styles by selecting options in the Font Style tool.
+Apply formatting from the Font Style tool

-### Edit fill color
+### Free Text appearance tools
-Edit the fill color using the color palette in the Edit Color tool.
+**6. Edit Fill Color**
-
+Use the color palette in the Edit Color tool to edit the fill color.
-### Edit stroke color
+
-Edit the stroke color using the color palette in the Edit Stroke Color tool.
+**7. Edit Stroke Color (Border)**
+- Use the color palette in the Edit Stroke Color tool
+- Select border color for the free text box outline

-### Edit thickness
+**8. Edit Thickness (Border Width)**
-Edit border thickness using the range slider in the Edit Thickness tool.
+Use the range slider in the Edit Thickness tool.

-### Edit opacity
-
-Edit opacity using the range slider in the Edit Opacity tool.
+**9. Edit Opacity**
+- Use the range slider in the Edit Opacity tool
+- Adjust from 0 (fully transparent) to 1 (fully opaque)

## Set default properties during control initialization
-Default properties for free text annotations can be set before creating the control using FreeTextSettings.
+Configure default free text annotation properties globally during PDF Viewer initialization using the **freeTextSettings** property. These defaults apply to all subsequently created free text annotations.
-After changing default values, the selected values are applied. The following example sets default free text annotation settings.
+**Example: Configure default free text properties**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/ink-annotation.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/ink-annotation.md
index 141896f532..22b1a4d3be 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/ink-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/ink-annotation.md
@@ -1,15 +1,15 @@
---
layout: post
-title: Ink annotation in ASP.NET Core PDF Viewer control | Syncfusion
-description: Learn about ink annotations in the Syncfusion ASP.NET Core PDF Viewer (Essential JS 2): add, edit, delete, and default settings.
+title: Ink Annotations in ASP.NET Core PDF Viewer | Syncfusion
+description: Add and customize ink annotations in ASP.NET Core PDF Viewer. Create freehand drawings, sketches, handwritten marks and more.
platform: document-processing
control: PDF Viewer
documentation: ug
---
-# Ink annotation in ASP.NET Core PDF Viewer control
+# Ink Annotations in ASP.NET Core PDF Viewer
-The PDF Viewer control provides options to add, edit, and delete ink annotations.
+The PDF Viewer control provides comprehensive ink annotation capabilities for creating freehand drawings, sketches, and handwritten marks on PDF documents. Add, edit, and customize ink annotations with full control over appearance and properties.

@@ -17,13 +17,14 @@ The PDF Viewer control provides options to add, edit, and delete ink annotations
Ink annotations can be added to the PDF document using the annotation toolbar.
-* Click the **Edit Annotation** button in the PDF Viewer toolbar. The annotation toolbar appears below it.
-* Select the **Draw Ink** button to enable ink annotation mode.
-* Draw on any page of the PDF document.
+1. **Click the Edit Annotation button** in the PDF Viewer toolbar
+2. **Select the Draw Ink button** to enable ink annotation mode
+3. **Draw on the page** using continuous strokes
+4. Multiple strokes can be added to the same annotation

-The following example switches to ink annotation mode.
+**Example: Enable ink annotation mode with button click**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -67,9 +68,9 @@ The following example switches to ink annotation mode.
## Add an ink annotation programmatically to the PDF document
-The PDF Viewer library allows adding an ink annotation programmatically using the **addAnnotation()** method.
+The PDF Viewer library allows adding ink annotations programmatically using the **addAnnotation()** method. This enables dynamic creation of freehand drawings with precise path definition.
-Here is an example of adding an ink annotation programmatically using **addAnnotation()**:
+**Example: Add ink annotation programmatically with custom path**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -123,9 +124,9 @@ Here is an example of adding an ink annotation programmatically using **addAnnot
## Edit an existing ink annotation programmatically
-To modify an existing ink annotation programmatically, use the **editAnnotation()** method.
+To modify an existing ink annotation programmatically, use the **editAnnotation()** method. This allows updating appearance and position after creation.
-Here is an example of using **editAnnotation()**:
+**Example: Edit ink annotation styling and position**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -189,21 +190,21 @@ Here is an example of using **editAnnotation()**:
## Edit the properties of ink annotations
-Stroke color, thickness, and opacity can be edited using the Edit Stroke Color, Edit Thickness, and Edit Opacity tools in the annotation toolbar.
+Ink annotation appearance can be customized using the toolbar tools or the annotation properties panel. The following editing options are available:
-### Edit stroke color
+### 1. Edit stroke color
Edit the stroke color using the color palette in the Edit Stroke Color tool.

-### Edit thickness
+### 2. Edit thickness
Edit thickness using the range slider in the Edit Thickness tool.

-### Edit opacity
+### 3. Edit opacity
Edit opacity using the range slider in the Edit Opacity tool.
@@ -211,10 +212,9 @@ Edit opacity using the range slider in the Edit Opacity tool.
## Set default properties during control initialization
-Default properties for ink annotations can be set before creating the control using InkAnnotationSettings.
+Default properties for ink annotations can be set before creating the control using the InkAnnotationSettings object. This ensures consistent styling for all ink annotations without requiring individual customization.
-After changing default values, the selected values are applied.
-Refer to the following code sample to set the default ink annotation settings.
+**Example: Configure default ink annotation styling**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/line-angle-constraints.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/line-angle-constraints.md
index 5eb2c99188..4504d05b09 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/line-angle-constraints.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/line-angle-constraints.md
@@ -1,20 +1,21 @@
---
layout: post
-title: Line angle constraints in ASP.NET Core PDF Viewer | Syncfusion
-description: Explore how to apply and manage text markup annotations such as highlight, underline, and strikethrough in ASP.NET Core PDF Viewer.
+title: Line Angle Constraints in ASP.NET Core PDF Viewer | Syncfusion
+description: Master line angle constraints in ASP.NET Core PDF Viewer. Enable angle snapping for precise technical drawings, measurements, and consistent annotation angles.
platform: document-processing
control: PDF Viewer
documentation: ug
---
-# Line angle constraints in ASP.NET Core PDF Viewer
+# Line Angle Constraints in ASP.NET Core PDF Viewer
-The PDF Viewer control provides robust **line angle constraints** functionality. This allows users to draw line type annotations with controlled angle snapping, improving accuracy and consistency across technical drawings and measurements across your PDF documents.
+The PDF Viewer control provides robust line angle constraints functionality for precise technical drawings and measurements. Enable angle snapping to automatically align line-based annotations to fixed angles, improving accuracy and consistency across professional documents.
## Enable line angle constraints
-Configure the `enableLineAngleConstraints` property within `annotationDrawingOptions`. When enabled, supported line-type annotations snap to fixed angles.
-The following code demonstrates how to enable line angle constraints:
+Configure the `enableLineAngleConstraints` property within `annotationDrawingOptions` to enable automatic angle snapping. When enabled, supported line-type annotations snap to fixed angles as defined by the `restrictLineAngleTo` property.
+
+**Example: Enable line angle constraints configuration**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -45,12 +46,13 @@ The following code demonstrates how to enable line angle constraints:
{% endhighlight %}
{% endtabs %}
-## Configuration Properties
+## Configuration properties
-### enableLineAngleConstraints
+Line angle constraints are configured through two main properties in the `annotationDrawingOptions` object.
-The `enableLineAngleConstraints` property activates angle snapping for line-based annotations. When set to `true`, the following annotation types will snap to fixed angles as defined by the `restrictLineAngleTo` property:
+### enableLineAngleConstraints
+When `enableLineAngleConstraints` is set to `true`, the following annotation types automatically snap to fixed angles:
- Lines
- Arrows
- Polygon
@@ -59,22 +61,22 @@ The `enableLineAngleConstraints` property activates angle snapping for line-base
- Area measurements
- Volume measurements
-**Key Benefits:**
-
-- Automatic angle snapping during the drawing
-- Enhanced precision for technical drawings and measurements
-- Desktop behavior: hold Shift while drawing to toggle constraints (when disabled, Shift temporarily enables; when enabled, Shift enforces snapping)
-- Real-time visual feedback showing angle snapping behavior
+#### Key behaviors
+- **Automatic snapping** - Angles align to configured increment during drawing
+- **Precision enhancement** - Improved accuracy for technical documents
+- **Shift key toggle** - Hold Shift to temporarily toggle constraint behavior
+- **Real-time feedback** - Visual indicators show angle alignment
+- **Persistent constraints** - Constraints apply during modification via selectors
### restrictLineAngleTo
-Defines the angle increment (in degrees) used to constrain supported annotations. The default is 45.
+Defines the angle increment in degrees for snapping. The default value is 45.
-Angle snapping rules:
+#### Angle snapping rules
-- The initial drawing direction is treated as the 0° reference point
-- Snapped angles are calculated based on the increment
-- If the increment doesn’t divide 360 evenly, angles reset after 360°
+- **Initial reference** - The first drawing direction is treated as 0° reference point
+- **Increment calculation** - Snapped angles are multiples of the specified increment
+- **Angle wrapping** - Angles reset after 360° based on the increment value
Examples:
@@ -83,21 +85,22 @@ Examples:
## Work with constrained annotations
-### Drawing Behavior
+### Drawing behavior
-When line angle constraints are enabled:
+When line angle constraints are enabled, constrained drawing provides automatic angle alignment:
-- Start drawing a supported annotation (Line, Arrow, Polyline, Distance, or Perimeter).
-- The segment snaps to the nearest allowed angle.
-- A visual indicator reflects snapping in real time.
-- Release to complete the annotation.
+1. **Start drawing** - Click to start drawing a supported annotation type
+2. **Snapping occurs** - Annotation segment snaps to nearest allowed angle
+3. **Visual feedback** - Real-time indicators show angle alignment
+4. **Continue or release** - Continue drawing for multi-segment shapes or release to complete
+5. **Angle confirmation** - Final annotation locks to the snapped angle
-### Keyboard Shortcuts
+### Keyboard shortcuts
Desktop platforms:
- Shift + drag: toggles snapping. If constraints are disabled, Shift temporarily enables them; if enabled, Shift enforces snapping.
-### Selector-Based Modifications
+### Selector-based modifications
When modifying existing line annotations using selectors:
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/measurement-annotation.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/measurement-annotation.md
index 23e9b6783b..106bc26bcc 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/measurement-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/measurement-annotation.md
@@ -1,15 +1,19 @@
---
layout: post
-title: Measurement annotation in ASP.NET Core PDF Viewer control | Syncfusion
-description: Learn about measurement annotations in the Syncfusion ASP.NET Core PDF Viewer (Essential JS 2): distance, perimeter, area, radius, and volume.
+title: Measurement Annotations in ASP.NET Core PDF Viewer | Syncfusion
+description: Add and customize measurement annotations in ASP.NET Core PDF Viewer. Support for distance, perimeter, area, radius, volume measurements.
platform: document-processing
control: PDF Viewer
documentation: ug
---
-# Measurement annotation in ASP.NET Core PDF Viewer control
+# Measurement Annotations in ASP.NET Core PDF Viewer
-The PDF Viewer provides options to add measurement annotations. The supported measurement annotations are:
+The PDF Viewer provides comprehensive measurement annotation capabilities for precise calculations and dimensional analysis on PDF documents. Add and customize various measurement types with accurate scale calibration and unit conversion.
+
+## Measurement types
+
+The PDF Viewer supports five measurement annotation types with distinct use cases and calculation methods:
* Distance
* Perimeter
@@ -32,7 +36,7 @@ When in pan mode, selecting a measurement annotation switches the PDF Viewer to

-The following example switches to distance annotation mode.
+**Example: Enable Distance annotation mode using button click**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -78,7 +82,7 @@ The following example switches to distance annotation mode.
The PDF Viewer library allows adding measurement annotations programmatically using the **addAnnotation()** method.
-Here is an example showing how to add measurement annotations programmatically using **addAnnotation()**:
+**Example: Add all measurement annotation types programmatically**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -204,7 +208,7 @@ Here is an example showing how to add measurement annotations programmatically u
To modify an existing measurement annotation programmatically, use the **editAnnotation()** method.
-Here is an example of using **editAnnotation()**:
+**Example: Edit measurement annotations**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -366,33 +370,33 @@ Here is an example of using **editAnnotation()**:
## Edit the properties of measurement annotations
-The fill color, stroke color, thickness, and opacity can be edited using the Edit Color, Edit Stroke Color, Edit Thickness, and Edit Opacity tools in the annotation toolbar.
+Measurement annotation appearance can be customized using the toolbar tools or the Properties dialog. The following editing options are available:
-### Edit fill color
+### 1. Edit fill color
The fill color of the annotation can be edited using the color palette provided in the Edit Color tool.

-### Edit stroke color
+### 2. Edit stroke color
The stroke color of the annotation can be edited using the color palette provided in the Edit Stroke Color tool.

-### Edit thickness
+### 3. Edit thickness
Edit border thickness using the range slider provided in the Edit Thickness tool.

-### Edit opacity
+### 4. Edit opacity
The opacity of the annotation can be edited using the range slider provided in the Edit Opacity tool.

-### Edit the line properties
+### 5. Edit line properties
Line-based measurement annotations (distance and perimeter) have additional options in the Line Properties window. Open it by right-clicking the annotation and selecting Properties from the context menu.
@@ -400,9 +404,9 @@ Line-based measurement annotations (distance and perimeter) have additional opti
## Set default properties during control initialization
-Default properties for measurement annotations can be set before creating the control using DistanceSettings, PerimeterSettings, AreaSettings, RadiusSettings, and VolumeSettings.
+Default properties for measurement annotations can be set before creating the control using type-specific settings objects. This allows consistent styling across all annotations of the same type without individual customization.
-Refer to the following code sample to set the default annotation settings.
+**Example: Configure default measurement annotation styling**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -454,7 +458,9 @@ The scale ratio and unit of measurement can be modified using the scale ratio op

-The Units of measurements support for the measurement annotations in the PDF Viewer are
+### Supported Measurement Units
+
+The PDF Viewer supports six standard measurement units for converting raw pixel measurements to real-world dimensions:
* Inch
* Millimeter
@@ -467,7 +473,9 @@ The Units of measurements support for the measurement annotations in the PDF Vie
## Set default scale ratio settings during control initialization
-The properties of scale ratio for measurement annotation can be set before creating the control using the ScaleRatioSettings as shown in the following code sample.
+The properties of scale ratio for measurement annotation can be set before creating the control using the MeasurementSettings object. This ensures all measurements use consistent calibration without requiring manual adjustment.
+
+**Example: Configure default scale ratio during PDF Viewer initialization**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/shape-annotation.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/shape-annotation.md
index a8ea786350..ad7c3bf339 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/shape-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/shape-annotation.md
@@ -1,15 +1,19 @@
---
layout: post
-title: Shape annotation in ASP.NET Core PDF Viewer control | Syncfusion
-description: Learn about shape annotations in the Syncfusion ASP.NET Core PDF Viewer (Essential JS 2), including add, edit, delete, and default settings.
+title: Shape Annotations in ASP.NET Core PDF Viewer | Syncfusion
+description: Add and customize shape annotations in ASP.NET Core PDF Viewer with for support for lines, arrows, rectangles, circles, polygons with formatting tools.
platform: document-processing
control: PDF Viewer
documentation: ug
---
-# Shape annotation in ASP.NET Core PDF Viewer control
+# Shape Annotations in ASP.NET Core PDF Viewer
-The PDF Viewer control provides options to add, edit, and delete shape annotations. The supported shape annotation types are:
+The PDF Viewer control provides comprehensive shape annotation capabilities for adding, editing, deleting, and customizing various geometric shapes. This guide covers toolbar-based and programmatic approaches to shape creation.
+
+## Shape types
+
+The PDF Viewer supports five primary shape annotation types:
* Line
* Arrow
@@ -21,18 +25,30 @@ The PDF Viewer control provides options to add, edit, and delete shape annotatio
## Adding a shape annotation to the PDF document
-Shape annotations can be added to the PDF document using the annotation toolbar.
+Shape annotations can be added to PDF documents using the built-in annotation toolbar with an intuitive multi-step interface.
-* Click the **Edit Annotation** button in the PDF Viewer toolbar. A toolbar appears below it.
-* Click the **Shape Annotation** drop-down button. The pop-up lists available shape annotation types.
-* Select a shape type to enable its annotation mode.
-* Draw the shape on the pages of the PDF document.
+**1. Enable annotation mode**
+- Click the **Edit Annotation** button in the PDF Viewer toolbar
+- A secondary toolbar appears below the main toolbar
-N> When in pan mode and a shape annotation tool is selected, the PDF Viewer switches to text select mode automatically to ensure a smooth interaction experience.
+**2. Select shape type**
+- Click the **Shape Annotation** drop-down button
+- The pop-up displays all available shape annotation types

-Refer to the following code sample to switch to the circle annotation mode.
+**3. Choose specific shape**
+- Select a shape type to activate its annotation mode
+- The cursor changes to indicate annotation mode is active
+
+**4. Draw the shape**
+- Click and drag on the PDF page to draw the shape
+- Release to complete the shape placement
+- Use handles to resize and reposition as needed
+
+N> When in pan mode and a shape annotation tool is selected, the PDF Viewer automatically switches to text select mode for smooth interaction.
+
+**Example: Switch to circle annotation mode**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -76,9 +92,9 @@ Refer to the following code sample to switch to the circle annotation mode.
## Add a shape annotation to the PDF document programmatically
-The PDF Viewer library allows adding a shape annotation programmatically using the **addAnnotation()** method.
+The PDF Viewer library provides the **addAnnotation()** API method for programmatic shape insertion, enabling dynamic workflow automation and batch operations.
-Here is an example showing how to add shape annotations programmatically using addAnnotation():
+**Examples: Add shapes programmatically**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -203,9 +219,9 @@ Here is an example showing how to add shape annotations programmatically using a
## Edit an existing shape annotation programmatically
-To modify an existing shape annotation programmatically, use the **editAnnotation()** method.
+Modify shape properties such as colors, thickness, and appearance using the **editAnnotation()** API method.
-Here is an example of using editAnnotation():
+**Example: Edit shape annotation properties**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -365,43 +381,50 @@ Here is an example of using editAnnotation():
## Editing the properties of the shape annotation
-The fill color, stroke color, thickness, and opacity of shape annotations can be edited using the Edit Color, Edit Stroke Color, Edit Thickness, and Edit Opacity tools in the annotation toolbar.
+Shape annotations support comprehensive styling options through the annotation toolbar and context menus.
-### Editing fill color
+The annotation toolbar provides four primary editing tools for all shapes:
-The fill color of the annotation can be edited using the color palette provided in the Edit Color tool.
+**1. Edit Fill Color**
+- Access the color palette via the Edit Color tool
+- Select a color to apply fill to the shape

-### Editing stroke color
-
-The stroke color of the annotation can be edited using the color palette provided in the Edit Stroke Color tool.
+**2. Edit Stroke Color**
+- Use the Edit Stroke Color tool to change the border color
+- Open color palette and select desired stroke color

-### Editing thickness
+**3. Edit Thickness**
-The thickness of the border of the annotation can be edited using the range slider provided in the Edit Thickness tool.
+Adjust border thickness using the range slider in the Edit Thickness tool

-### Editing opacity
+**4. Edit Opacity**
-The opacity of the annotation can be edited using the range slider provided in the Edit Opacity tool.
+Control shape transparency using the range slider in the Edit Opacity tool.

-### Editing the line properties
+### Line and arrow properties
-Line and arrow annotations have additional options in the Line Properties window. Open it by right-clicking a line or arrow annotation and selecting Properties from the context menu.
+Line and arrow annotations offer additional customization through a dedicated properties dialog.
-Refer to the following code sample to set the default annotation settings.
+**Accessing line properties:**
+1. Right-click on a line or arrow annotation
+2. Select **Properties** from the context menu
+3. Modify line start/end style, dash pattern, and other options

## Set default properties during control initialization
-Default properties for shape annotations can be set before creating the control using LineSettings, ArrowSettings, RectangleSettings, CircleSettings, and PolygonSettings.
+Configure default shape annotation properties globally during PDF Viewer initialization. These defaults apply to all subsequently created shapes of each type.
+
+**Example: Configure default shape properties**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/signature-annotation.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/signature-annotation.md
index 6af65adf9d..fd0b424ea3 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/signature-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/signature-annotation.md
@@ -1,26 +1,30 @@
---
layout: post
-title: Handwritten signature in ASP.NET Core PDF Viewer | Syncfusion
-description: Learn how to enable, add programmatically, and customize handwritten signatures in the Syncfusion ASP.NET Core PDF Viewer.
+title: Handwritten Signatures in ASP.NET Core PDF Viewer | Syncfusion
+description: Add handwritten signatures to PDF documents in ASP.NET Core PDF Viewer. Enable signature capture, digitally sign documents, and customize signature properties.
platform: document-processing
-<<<<<<<< HEAD:Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/signature-annotation.md
control: PDF Viewer
-========
-control: Hand Written Signature
->>>>>>>> remotes/origin/hotfix/hotfix-v31.2.2:Document-Processing/PDF/PDF-Viewer/asp-net-core/hand-written-signature.md
documentation: ug
---
+# Handwritten Signatures in ASP.NET Core PDF Viewer
-<<<<<<<< HEAD:Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/signature-annotation.md
-# Handwritten Signature Annotation
-========
-# Handwritten Signature in EJ2 ASP.NET CORE PDF Viewer
->>>>>>>> remotes/origin/hotfix/hotfix-v31.2.2:Document-Processing/PDF/PDF-Viewer/asp-net-core/hand-written-signature.md
+The PDF Viewer provides comprehensive handwritten signature capabilities for adding digital signatures to PDF documents. Capture handwritten signatures for authentication, approval workflows, and document verification with customizable appearance and default properties.
-The PDF Viewer supports adding handwritten signatures to PDF documents. Handwritten signatures reduce paperwork during reviews and provide a simple way to verify documents digitally.
+### Signature features
-The following example shows how to enable handwritten signatures in the PDF Viewer.
+- **Freehand drawing** - Natural signature capture through drawing interface
+- **Multiple formats** - Support for drawn, typed text, and uploaded image signatures
+- **Customizable appearance** - Control stroke color, thickness, and opacity
+- **Default properties** - Pre-configure signature styling for consistency
+- **Placement control** - Position signatures at specific coordinates on pages
+- **Digital authentication** - Reduce paperwork during reviews and verify documents digitally
+
+## Enable handwritten signatures
+
+Enable handwritten signature functionality by setting the `enableHandwrittenSignature` property to `true` during PDF Viewer initialization. This activates the signature capture interface and toolbar buttons.
+
+**Example: Enable handwritten signature support**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -47,36 +51,30 @@ The following example shows how to enable handwritten signatures in the PDF View
## Adding a handwritten signature to the PDF document
-A handwritten signature can be added using the annotation toolbar:
+Handwritten signatures can be added directly using the annotation toolbar interface. The process involves the following steps:
+
+1. **Click Edit Annotation** - Tap the Edit Annotation button in the PDF Viewer toolbar to enable annotation mode
-- Click the **Edit Annotation** button in the PDF Viewer toolbar to open the annotation toolbar.
-- Select the **HandWritten Signature** button to open the signature panel.
+2. **Select HandWritten Signature** - Click the Add Signature button to open the signature drawing panel
-<<<<<<<< HEAD:Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/signature-annotation.md

-========
-
->>>>>>>> remotes/origin/hotfix/hotfix-v31.2.2:Document-Processing/PDF/PDF-Viewer/asp-net-core/hand-written-signature.md
-- Draw the signature in the signature panel.
+3. **Draw signature** - Use your mouse, touchpad, or stylus to draw your signature in the signature panel
-<<<<<<<< HEAD:Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/signature-annotation.md

-========
-
->>>>>>>> remotes/origin/hotfix/hotfix-v31.2.2:Document-Processing/PDF/PDF-Viewer/asp-net-core/hand-written-signature.md
-- Click **Create**, then move and place the signature at the desired location on the page.
+4. **Create signature** - Click the **Create** button to confirm the drawn signature
+
+5. **Place on document** - Move the cursor to desired location and click to place the signature on the PDF page
-<<<<<<<< HEAD:Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/signature-annotation.md

-========

->>>>>>>> remotes/origin/hotfix/hotfix-v31.2.2:Document-Processing/PDF/PDF-Viewer/asp-net-core/hand-written-signature.md
## Add a handwritten signature programmatically
-Use the **addAnnotation()** method to add a handwritten signature programmatically to the PDF Viewer.
+The **addAnnotation()** method enables programmatic signature creation with predefined or custom signature data. This allows dynamic signature placement and styling without user interaction.
+
+**Example: Add signature annotations programmatically**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -192,11 +190,15 @@ Use the **addAnnotation()** method to add a handwritten signature programmatical
## Edit handwritten signature properties
-Edit the stroke color, thickness, and opacity of a handwritten signature using the annotation toolbar’s edit stroke color, edit thickness, and edit opacity tools.
+Signature appearance can be customized after creation using the annotation toolbar editing tools. Select a signature annotation to access property editors.
+
+
+
+## Set default signature properties
-
+Configure default handwritten signature styling during PDF Viewer initialization using the `handWrittenSignatureSettings` object. These settings apply automatically to all new signatures.
-Use the following example to set default handwritten signature settings.
+**Example: Set default handwritten signature styling**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/stamp-annotation.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/stamp-annotation.md
index 2bfd913a67..6ef29c390e 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/stamp-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/stamp-annotation.md
@@ -1,15 +1,19 @@
---
layout: post
-title: Stamp annotation in ASP.NET Core PDF Viewer control | Syncfusion
-description: Learn about stamp annotations in the Syncfusion ASP.NET Core PDF Viewer (Essential JS 2): dynamic, sign here, standard business, and custom stamps.
+title: Stamp Annotations in ASP.NET Core PDF Viewer | Syncfusion
+description: Add, edit, and customize stamp annotations in ASP.NET Core PDF Viewer. Learn about various stamps, and custom image stamps with programmatic APIs.
platform: document-processing
control: PDF Viewer
documentation: ug
---
-# Stamp annotation in ASP.NET Core PDF Viewer control
+# Stamp Annotations in ASP.NET Core PDF Viewer
-The PDF Viewer control provides options to add, edit, delete, and rotate the following stamp annotations in PDF documents:
+The PDF Viewer control provides comprehensive stamp annotation features for adding, editing, deleting, and rotating various stamp types. This guide covers adding stamps through the UI, programmatic APIs, and customization options.
+
+### Stamp types
+
+The PDF Viewer supports four primary stamp annotation types:
* Dynamic
* Sign Here
@@ -20,22 +24,31 @@ The PDF Viewer control provides options to add, edit, delete, and rotate the fol
## Add stamp annotations to the PDF document
-The stamp annotations can be added to the PDF document using the annotation toolbar.
+Stamp annotations can be added using the built-in annotation toolbar with an intuitive multi-step interface.
+
+**1. Enable annotation mode**
+- Click the **Edit Annotation** button in the PDF Viewer toolbar
+- A secondary toolbar appears below the main toolbar
-* Click the **Edit Annotation** button in the PDF Viewer toolbar. A toolbar appears below it.
-* Click the **Stamp Annotation** drop-down button. The pop-up lists available stamp annotation types.
+**2. Select stamp type**
+- Click the **Stamp Annotation** drop-down button
+- The pop-up displays all available stamp annotation types

-* Select a stamp type to enable its annotation mode.
+**3. Choose stamp variant**
+
+Select a stamp type to activate its annotation mode.

-* Place the stamp on the pages of the PDF document.
+**4. Place stamp on document**
+- Click on any page to place the stamp at that location
+- Resize and position using handles as needed
-N> When in pan mode and a stamp annotation tool is selected, the PDF Viewer switches to text select mode automatically for a smooth interaction experience.
+N> When in pan mode and a stamp annotation tool is selected, the PDF Viewer automatically switches to text select mode for smooth interaction.
-The following examples switch to stamp annotation modes.
+**Example: Add stamp annotations using toolbar**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -101,21 +114,35 @@ The following examples switch to stamp annotation modes.
## Add a custom stamp to the PDF document
-* Click the **Edit Annotation** button in the PDF Viewer toolbar. A toolbar appears below it.
-* Click the **Stamp Annotation** drop-down button. The pop-up lists available stamp annotation types.
-* Click the Custom Stamp button.
+Custom image stamps allow you to add logos, signatures, or branded elements to PDF documents.
+
+### Supported image formats
+
+Only **JPG** and **JPEG** image formats are supported for custom stamp annotations. Other formats must be converted before use.
+
+### Adding a custom stamp
+
+**1. Open stamp annotation panel**
+- Click **Edit Annotation** and select **Stamp Annotation** dropdown
+
+**2. Select custom stamp option**
+- Click the **Custom Stamp** button

-* In the file explorer dialog, choose an image and add it to the PDF page.
+**3. Choose image file**
+- In the file explorer dialog, browse and select a JPG/JPEG image
+- The selected image becomes available as a stamp
-N> Only JPG and JPEG image formats are supported for custom stamp annotations.
+**4. Place on document**
+- Click on the PDF page to place the custom image stamp
+- Resize and position as needed
## Add a stamp annotation to the PDF document programmatically
-The PDF Viewer library allows adding a stamp annotation programmatically using the **addAnnotation()** method.
+The PDF Viewer library provides the **addAnnotation()** API method for programmatic stamp insertion, enabling dynamic workflow automation and batch operations.
-Here are examples showing how to add stamp annotations programmatically using addAnnotation():
+**Examples: Add stamps programmatically**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -235,9 +262,9 @@ Here are examples showing how to add stamp annotations programmatically using ad
## Edit an existing stamp annotation programmatically
-To modify an existing stamp annotation programmatically, use the **editAnnotation()** method.
+Modify stamp properties such as position, size, and lock status using the **editAnnotation()** API method.
-Here is an example of how you can use the **editAnnotation()** method:
+**Example: Edit stamp annotation properties**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -294,9 +321,9 @@ Here is an example of how you can use the **editAnnotation()** method:
## Set default properties during control initialization
-Default properties for stamp annotations can be set before creating the control using StampSettings.
+Configure default stamp annotation properties globally during PDF Viewer initialization using the **stampSettings** property. These defaults apply to all subsequently created stamps.
-After changing default opacity using the Edit Opacity tool, the selected value is applied. The following example sets default stamp annotation settings.
+**Example: Configure default stamp properties**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/sticky-notes-annotation.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/sticky-notes-annotation.md
index a8a04d99db..81c785926c 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/sticky-notes-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/sticky-notes-annotation.md
@@ -1,41 +1,47 @@
---
layout: post
-title: Sticky notes in ASP.NET Core PDF Viewer control | Syncfusion
-description: Learn about sticky note annotations in the Syncfusion ASP.NET Core PDF Viewer (Essential JS 2): add, edit, delete, and default settings.
+title: Sticky Notes in ASP.NET Core PDF Viewer | Syncfusion
+description: Add and manage sticky note annotations in ASP.NET Core PDF Viewer. Create quick notes, comments, and threaded discussions and default settings.
platform: document-processing
control: PDF Viewer
documentation: ug
---
-# Sticky notes in ASP.NET Core PDF Viewer control
+# Sticky Notes in ASP.NET Core PDF Viewer
-The PDF Viewer control provides options to add, edit, and delete sticky note annotations in the PDF document.
+The PDF Viewer control provides comprehensive sticky note annotation capabilities for adding quick notes and comments to PDF documents. Create, edit, and delete sticky notes with full comment support for discussions and document review workflows.

## Add a sticky note annotation to the PDF document
-Sticky note annotations can be added to the PDF document using the annotation toolbar.
+Sticky notes can be added directly using the toolbar or context menu. They serve as markers for attaching comments and discussions to specific page locations.
-* Click the **Comments** button in the PDF Viewer toolbar. The annotation toolbar appears below it.
-* Click the position where the sticky note annotation should be added.
-* The sticky note annotation is added at the clicked position.
+### Adding sticky notes using toolbar
+
+1. **Click the Comments button** in the PDF Viewer toolbar to enable annotation mode
+2. **Click on the page** at the desired location where you want to place the note
+3. **Sticky note is created** - A small marker appears at the clicked position

-Annotation comments can be added using the comment panel.
+### Adding comments to sticky notes
+
+Comments provide detailed information and discussions for sticky notes:
-* Select a sticky note annotation in the PDF document and right-click it.
-* Select Comment from the context menu.
-* Add comments, replies, and status using the comment panel.
+1. **Select a sticky note** - Click on any sticky note annotation on the page
+2. **Right-click the note** - Context menu appears with available actions
+3. **Select Comment** - Opens the comment panel for the selected note
+4. **Add comment text** - Type your comment in the text field
+5. **Save comment** - Comment is saved to the note on clicking post.

## Add a sticky note annotation to the PDF document programmatically
-The PDF Viewer library allows adding a sticky note annotation programmatically using the **addAnnotation()** method.
+The **addAnnotation()** method enables programmatic sticky note creation with precise positioning and configuration. This allows dynamic note placement without user interaction.
-Here is an example showing how to add a sticky note annotation programmatically using addAnnotation():
+**Example: Add sticky note annotations programmatically**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -145,29 +151,40 @@ Here is an example of using editAnnotation():
## Edit the properties of sticky note annotations
+Sticky note annotations support multiple property editing workflows. Properties can be modified through the UI toolbar, comment panel interface, or programmatically.
+
### Editing opacity
-Edit opacity using the range slider in the Edit Opacity tool.
+The **opacity property** controls note transparency, allowing visual customization for emphasis or reduced prominence.
-
+
### Editing comments
-Comment text, replies, and status can be edited using the comment panel.
+Comments provide detailed annotations to sticky notes. Comment text, threaded replies, and status states are fully editable through the comment panel interface.
-* Open the comment panel using the Comment Panel button in the annotation toolbar.
+**Using the comment panel:**
+1. **Open comment panel** - Click Comment Panel button in toolbar
+2. **Select sticky note** - Choose note to edit comments for
+3. **Modify or delete** - Edit existing comment text or remove comments
+4. **Add replies** - Create threaded discussion under comments
+5. **Change status** - Update comment status
-
+
-Modify or delete comments or replies, and change status using the menu options in the comment panel.
+**Comment editing options:**
+- **Edit text** - Modify comment content inline
+- **Delete comment** - Remove selected comment permanently
+- **Add reply** - Create threaded response to existing comment
+- **Mark status** - Change comment state (Review/Done/Cancelled)
-
+
## Set default properties during control initialization
-Default properties for sticky note annotations can be set before creating the control using StickyNotesSettings.
+The **StickyNotesSettings** object enables configuration of default sticky note behavior at PDF Viewer initialization. These properties apply to all subsequently created sticky notes unless explicitly overridden.
-After changing default opacity using the Edit Opacity tool, the selected value is applied. The following example sets default sticky note annotation settings.
+The following example sets default sticky note annotation settings during control initialization:
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -199,7 +216,11 @@ After changing default opacity using the Edit Opacity tool, the selected value i
## Disable sticky note annotations
-The PDF Viewer control provides an option to disable sticky note annotations. The following example disables the feature.
+The **enableStickyNotesAnnotation** property controls sticky note feature availability. When disabled, sticky note creation is prevented while existing annotations remain visible.
+
+### Disabling sticky note annotations programmatically
+
+The following example demonstrates disabling sticky note annotations during control initialization:
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/text-markup-annotation.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/text-markup-annotation.md
index 3cc1f19e49..b0cef05832 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/text-markup-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/annotation/text-markup-annotation.md
@@ -1,15 +1,15 @@
---
layout: post
-title: Text markup annotation in ASP.NET Core PDF Viewer control | Syncfusion
-description: Learn to add, edit, delete, and customize text markup annotations like highlight, underline, and squiggly in Syncfusion ASP.NET Core PDF Viewer.
+title: Text markup annotations in ASP.NET Core PDF Viewer | Syncfusion
+description: Learn to add, edit, delete, and customize text markup annotations in the Syncfusion ASP.NET Core PDF Viewer, with programmatic APIs and examples.
platform: document-processing
control: PDF Viewer
documentation: ug
---
-# Text markup annotation in ASP.NET Core PDF Viewer control
+# Text markup annotations in ASP.NET Core PDF Viewer
-The PDF Viewer provides options to add, edit, and delete text markup annotations, including Highlight, Underline, Strikethrough, and Squiggly.
+The PDF Viewer provides options to add, edit, and delete text markup annotations. Supported types include Highlight, Underline, Strikethrough, and Squiggly.

@@ -34,7 +34,7 @@ There are two ways to highlight text:
When pan mode is active and a text markup mode is entered, the PDF Viewer switches to text selection mode to enable selection.
-Refer to the following code sample to switch to highlight mode.
+**Example: Switch to highlight mode**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -136,7 +136,7 @@ Refer to the following code sample to switch back to normal mode from highlight
Programmatically add highlights using the **addAnnotation()** method.
-Here is an example showing how to add highlights programmatically using addAnnotation():
+**Example: Add highlights programmatically**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -203,7 +203,7 @@ There are two ways to underline text:
In the pan mode, if the underline mode is entered, the PDF Viewer control will switch to text select mode to enable the text selection for underlining the text.
-Refer to the following code sample to switch to underline mode.
+**Example: Switch to underline mode**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -305,7 +305,7 @@ Refer to the following code sample to switch back to normal mode from underline
Programmatically add underlines using the **addAnnotation()** method.
-Example:
+**Example: Add underline programmatically**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -372,7 +372,7 @@ There are two ways to strikethrough text:
In the pan mode, if the strikethrough mode is entered, the PDF Viewer control will switch to text select mode to enable the text selection for striking through the text.
-Refer to the following code sample to switch to strikethrough mode.
+**Example: Switch to strikethrough mode**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -474,7 +474,7 @@ Refer to the following code sample to switch back to normal mode from strikethro
Programmatically add strikethrough using the **addAnnotation()** method.
-Here is an example showing how to add strikethrough programmatically using addAnnotation():
+**Example: Add strikethrough programmatically**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -541,7 +541,7 @@ There are two ways to add squiggly to text:
In the pan mode, if the squiggly mode is entered, the PDF Viewer control will switch to text select mode to enable the text selection for adding squiggly to the text.
-Refer to the following code sample to switch to squiggly mode.
+**Example: Switch to squiggly mode**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -643,7 +643,7 @@ Refer to the following code sample to switch back to normal mode from squiggly m
Programmatically add squiggly using the **addAnnotation()** method.
-Example:
+**Example: Add squiggly programmatically**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/download.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/download.md
index 0e0be3e93a..d11d214732 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/download.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/download.md
@@ -1,15 +1,17 @@
---
layout: post
-title: Download in EJ2 ASP.NET CORE PDF Viewer | Syncfusion
-description: Learn here all about Download in ASP.NET CORE PDF Viewer component of Syncfusion Essential JS 2 and more.
+title: Download PDF Documents with EJ2 ASP.NET Core PDF Viewer | Syncfusion
+description: Learn how to enable PDF document downloads in the ASP.NET Core PDF Viewer component of Syncfusion Essential JS 2 and more.
platform: document-processing
-control: Download
+control: PDF Viewer
documentation: ug
---
-# Download PDF document in PDF Viewer component
+# Downloading PDF documents in PDF Viewer
-The PDF Viewer supports downloading the loaded PDF file. You can enable or disable the download using the following example.
+The PDF Viewer component enables users to download the currently loaded PDF document. Downloads can be triggered through the user interface or programmatically via code. This feature allows end users to save documents locally for offline access or archival purposes.
+
+By default, the download button appears in the PDF Viewer toolbar. Set the `enableDownload` property to `true` to enable the download feature, or `false` to hide the download button:
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -33,9 +35,9 @@ The PDF Viewer supports downloading the loaded PDF file. You can enable or disab
{% endhighlight %}
{% endtabs %}
-
+
-You can also programmatically invoke the download action using the `download()` method, as shown below:
+In addition to the toolbar button, the PDF Viewer provides the `download()` method to programmatically trigger document downloads. This method initiates a download of the currently displayed PDF file using the document's filename or a default name as shown below:
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -75,9 +77,9 @@ You can also programmatically invoke the download action using the `download()`
{% endhighlight %}
{% endtabs %}
-## Get the base64 string while downloading the PDF document
+## Retrieving base64 data during download
-You can use the [downloadEnd](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_DownloadEnd) event of the PDF Viewer to retrieve the downloaded document as a base64 string.
+The PDF Viewer component provides the [downloadEnd](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_DownloadEnd) event, which fires when the download process completes. This event can be used to retrieve the downloaded document as a base64-encoded string for custom processing, server transmission, or storage purposes.
## See also
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/event.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/event.md
index 829c9ed09b..556a79f286 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/event.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/event.md
@@ -1,16 +1,18 @@
---
-title: Events in ASP.NET Core PDF Viewer control | Syncfusion
-description: Learn here all about Events in Syncfusion ASP.NET Core PDF Viewer component of Syncfusion Essential JS 2 and more.
+title: Events in ASP.NET Core PDF Viewer Control | Syncfusion
+description: Learn about all the events in ASP.NET Core PDF Viewer component of Syncfusion Essential JS 2 and more.
platform: document-processing
control: PDF Viewer
documentation: ug
---
-# Events in ASP.NET Core PDF Viewer control
+# Events in ASP.NET Core PDF Viewer Control
-The PDF Viewer component triggers events for creation, page navigation, document life cycle, context menu interactions, comments, bookmarks, downloads/exports, hyperlinks, import/export of annotations, keyboard commands, printing, signatures, text search, and text selection. Use these events to integrate custom logic into your application workflows.
+The PDF Viewer component provides a comprehensive event system for integrating custom logic into application workflows. Events are triggered throughout the document lifecycle, user interactions, and feature operations.
-The following table lists the commonly used events supported by the PDF Viewer control:
+## Event reference table
+
+The following table lists all events supported by the PDF Viewer control, organized by category:
| Event | Description |
| ----- | ----------- |
@@ -64,13 +66,13 @@ The following table lists the commonly used events supported by the PDF Viewer c
| [`validateFormFields`](#validateformfields) | Triggers when form field validation fails. |
| [`zoomChange`](#zoomchange) | Triggers when the magnification value changes. |
-Note: For annotation and signature events, see the dedicated Annotations Events topic.
+For annotation and signature events, see the dedicated Annotations Events topic.
## bookmarkClick
The [bookmarkClick](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_BookmarkClick) event triggers when a bookmark item is clicked in the bookmark panel.
-- Event arguments: [BookmarkClickEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/bookmarkClickEventArgs/).
+- Event arguments: [BookmarkClickEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/bookmarkClickEventArgs).
Example:
@@ -161,7 +163,7 @@ Example:
The [validateFormFields](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ValidateFormFields) event is raised when form validation fails, typically before a download or submit action proceeds. Use this event to inspect which required fields are empty and show custom messages or block your app logic if needed.
-- Event arguments: [ValidateFormFieldsArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/validateFormFieldsArgs/)
+- Event arguments: [ValidateFormFieldsArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/validateFormFieldsArgs)
- name: Event name
- documentName: Current document name
- formField: The last interacted field’s data (if applicable)
@@ -226,7 +228,7 @@ Tip
The [zoomChange](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ZoomChange) event triggers when the magnification value changes.
-- Event arguments: [ZoomChangeEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/zoomChangeEventArgs/).
+- Event arguments: [ZoomChangeEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/zoomChangeEventArgs).
Example:
@@ -272,7 +274,7 @@ Example:
The [buttonFieldClick](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ButtonFieldClick) event triggers when a button form field is clicked.
-- Event arguments: [ButtonFieldClickEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/buttonFieldClickEventArgs/).
+- Event arguments: [ButtonFieldClickEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/buttonFieldClickEventArgs).
Example:
@@ -318,7 +320,7 @@ Example:
The [commentAdd](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_CommentAdd) event triggers when a comment is added in the comment panel.
-- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/commentEventArgs/).
+- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/commentEventArgs).
Example:
@@ -364,7 +366,7 @@ Example:
The [commentDelete](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_CommentDelete) event triggers when a comment is deleted in the comment panel.
-- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/commentEventArgs/).
+- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/commentEventArgs).
Example:
@@ -410,7 +412,7 @@ Example:
The [commentEdit](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_CommentEdit) event triggers when a comment is edited in the comment panel.
-- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/commentEventArgs/).
+- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/commentEventArgs).
Example:
@@ -456,7 +458,7 @@ Example:
The [commentSelect](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_CommentSelect) event triggers when a comment is selected in the comment panel.
-- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/commentEventArgs/).
+- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/commentEventArgs).
Example:
@@ -502,7 +504,7 @@ Example:
The [commentStatusChanged](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_CommentStatusChanged) event triggers when a comment status is changed in the comment panel.
-- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/commentEventArgs/).
+- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/commentEventArgs).
Example:
@@ -594,7 +596,7 @@ Example:
The [customContextMenuBeforeOpen](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_CustomContextMenuBeforeOpen) event fires just before the context menu is shown. Use it to show/hide items based on current state (for example, only show search items when text is selected).
-- Event arguments: [CustomContextMenuBeforeOpenEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/customContextMenuBeforeOpenEventArgs/)
+- Event arguments: [CustomContextMenuBeforeOpenEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/customContextMenuBeforeOpenEventArgs)
- name: Event name
- ids: Array of menu item ids that will be shown; you can remove ids to hide items for this open
@@ -642,7 +644,7 @@ Example:
The [customContextMenuSelect](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_CustomContextMenuSelect) event fires when a custom menu item is clicked. Use it to branch logic by the clicked item id.
-- Event arguments: [CustomContextMenuSelectEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/customContextMenuSelectEventArgs/).
+- Event arguments: [CustomContextMenuSelectEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/customContextMenuSelectEventArgs).
- name: Event name
- id: The id of the clicked menu item
@@ -691,7 +693,7 @@ Example:
The [documentLoad](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_DocumentLoad) event occurs when a document is successfully loaded.
-- Event arguments: [LoadEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/loadEventArgs/).
+- Event arguments: [LoadEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/loadEventArgs).
Example:
@@ -737,7 +739,7 @@ Example:
The [documentLoadFailed](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_DocumentLoadFailed) event is triggered when loading a document fails.
-- Event arguments: [LoadFailedEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/loadFailedEventArgs/).
+- Event arguments: [LoadFailedEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/loadFailedEventArgs).
Example:
@@ -783,7 +785,7 @@ Example:
The [documentUnload](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_DocumentUnload) event is triggered when closing the current document.
-- Event arguments: [UnloadEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/unloadEventArgs/).
+- Event arguments: [UnloadEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/unloadEventArgs).
Example:
@@ -829,7 +831,7 @@ Example:
The [downloadEnd](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_DownloadEnd) event is triggered after a document download completes.
-- Event arguments: [DownloadEndEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/downloadEndEventArgs/).
+- Event arguments: [DownloadEndEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/downloadEndEventArgs).
Example:
@@ -875,7 +877,7 @@ Example:
The [downloadStart](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_DownloadStart) event is triggered when the download operation is initiated.
-- Event arguments: [DownloadStartEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/downloadStartEventArgs/).
+- Event arguments: [DownloadStartEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/downloadStartEventArgs).
Example:
@@ -921,7 +923,7 @@ Example:
The [exportFailed](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ExportFailed) event is triggered when exporting annotations fails.
-- Event arguments: [ExportFailureEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/exportFailureEventArgs/).
+- Event arguments: [ExportFailureEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/exportFailureEventArgs).
Example:
@@ -967,7 +969,7 @@ Example:
The [exportStart](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ExportStart) event is triggered when exporting annotations starts.
-- Event arguments: [ExportStartEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/exportStartEventArgs/).
+- Event arguments: [ExportStartEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/exportStartEventArgs).
Example:
@@ -1013,7 +1015,7 @@ Example:
The [exportSuccess](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ExportSuccess) event is triggered when annotations are exported successfully.
-- Event arguments: [ExportSuccessEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/exportSuccessEventArgs/).
+- Event arguments: [ExportSuccessEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/exportSuccessEventArgs).
Example:
@@ -1059,7 +1061,7 @@ Example:
The [extractTextCompleted](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ExtractTextCompleted) event is triggered when text extraction completes.
-- Event arguments: [ExtractTextCompletedEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/extractTextCompletedEventArgs/).
+- Event arguments: [ExtractTextCompletedEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/extractTextCompletedEventArgs).
Example:
@@ -1105,7 +1107,7 @@ Example:
The [hyperlinkClick](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_HyperlinkClick) event is triggered when a hyperlink is clicked.
-- Event arguments: [HyperlinkClickEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/hyperlinkClickEventArgs/).
+- Event arguments: [HyperlinkClickEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/hyperlinkClickEventArgs).
Example:
@@ -1197,7 +1199,7 @@ Example:
The [importFailed](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ImportFailed) event is triggered when importing annotations fails.
-- Event arguments: [ImportFailureEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/importFailureEventArgs/).
+- Event arguments: [ImportFailureEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/importFailureEventArgs).
Example:
@@ -1243,7 +1245,7 @@ Example:
The [importStart](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ImportStart) event is triggered when importing annotations starts.
-- Event arguments: [ImportStartEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/importStartEventArgs/).
+- Event arguments: [ImportStartEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/importStartEventArgs).
Example:
@@ -1289,7 +1291,7 @@ Example:
The [importSuccess](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ImportSuccess) event is triggered when annotations are imported successfully.
-- Event arguments: [ImportSuccessEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/importSuccessEventArgs/).
+- Event arguments: [ImportSuccessEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/importSuccessEventArgs).
Example:
@@ -1335,7 +1337,7 @@ Example:
The [keyboardCustomCommands](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_KeyboardCustomCommands) event is triggered when customized keyboard command keys are pressed.
-- Event arguments: [KeyboardCustomCommandsEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/keyboardCustomCommandsEventArgs/).
+- Event arguments: [KeyboardCustomCommandsEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/keyboardCustomCommandsEventArgs).
- name: Event name
- keyboardCommand: The command metadata raised by Command Manager
@@ -1434,7 +1436,7 @@ Example:
The [pageChange](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_PageChange) event triggers when the current page number changes.
-- Event arguments: [PageChangeEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/pageChangeEventArgs/).
+- Event arguments: [PageChangeEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/pageChangeEventArgs).
Example:
@@ -1480,7 +1482,7 @@ Example:
The [pageClick](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_PageClick) event triggers when a mouse click occurs on a page.
-- Event arguments: [PageClickEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/pageClickEventArgs/).
+- Event arguments: [PageClickEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/pageClickEventArgs).
Example:
@@ -1618,7 +1620,7 @@ Example:
The [pageRenderComplete](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_PageRenderComplete) event triggers after a page finishes rendering.
-- Event arguments: [PageRenderCompleteEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/pageRenderCompleteEventArgs/).
+- Event arguments: [PageRenderCompleteEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/pageRenderCompleteEventArgs).
Example:
@@ -1664,7 +1666,7 @@ Example:
The [pageRenderInitiate](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_PageRenderInitiate) event triggers when page rendering begins.
-- Event arguments: [PageRenderInitiateEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/pageRenderInitiateEventArgs/).
+- Event arguments: [PageRenderInitiateEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/pageRenderInitiateEventArgs).
Example:
@@ -1710,7 +1712,7 @@ Example:
The [printEnd](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_PrintEnd) event triggers when a print action is completed.
-- Event arguments: [PrintEndEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/printEndEventArgs/).
+- Event arguments: [PrintEndEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/printEndEventArgs).
Example:
@@ -1756,7 +1758,7 @@ Example:
The [printStart](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_PrintStart) event triggers when a print action is initiated.
-- Event arguments: [PrintStartEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/printStartEventArgs/).
+- Event arguments: [PrintStartEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/printStartEventArgs).
Example:
@@ -1802,7 +1804,7 @@ Example:
The [removeSignature](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_RemoveSignature) event triggers when a signature is removed.
-- Event arguments: [RemoveSignatureEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/removeSignatureEventArgs/).
+- Event arguments: [RemoveSignatureEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/removeSignatureEventArgs).
Example:
@@ -1848,7 +1850,7 @@ Example:
The [resizeSignature](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ResizeSignature) event triggers when a signature is resized.
-- Event arguments: [ResizeSignatureEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/resizeSignatureEventArgs/).
+- Event arguments: [ResizeSignatureEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/resizeSignatureEventArgs).
Example:
@@ -1940,7 +1942,7 @@ Example:
The [signaturePropertiesChange](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_SignaturePropertiesChange) event triggers when signature properties are changed.
-- Event arguments: [SignaturePropertiesChangeEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/signaturePropertiesChangeEventArgs/).
+- Event arguments: [SignaturePropertiesChangeEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/signaturePropertiesChangeEventArgs).
Example:
@@ -1986,7 +1988,7 @@ Example:
The [signatureSelect](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_SignatureSelect) event triggers when a signature is selected.
-- Event arguments: [SignatureSelectEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/signatureSelectEventArgs/).
+- Event arguments: [SignatureSelectEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/signatureSelectEventArgs).
Example:
@@ -2032,7 +2034,7 @@ Example:
The [signatureUnselect](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_SignatureUnselect) event triggers when a signature is unselected.
-- Event arguments: [SignatureUnselectEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/signatureUnselectEventArgs/).
+- Event arguments: [SignatureUnselectEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/signatureUnselectEventArgs).
Example:
@@ -2078,7 +2080,7 @@ Example:
The [textSearchComplete](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_TextSearchComplete) event triggers when a text search is completed.
-- Event arguments: [TextSearchCompleteEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/textSearchCompleteEventArgs/).
+- Event arguments: [TextSearchCompleteEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/textSearchCompleteEventArgs).
Example:
@@ -2124,7 +2126,7 @@ Example:
The [textSearchHighlight](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_TextSearchHighlight) event triggers when the searched text is highlighted.
-- Event arguments: [TextSearchHighlightEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/textSearchHighlightEventArgs/).
+- Event arguments: [TextSearchHighlightEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/textSearchHighlightEventArgs).
Example:
@@ -2170,7 +2172,7 @@ Example:
The [textSearchStart](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_TextSearchStart) event triggers when a text search is initiated.
-- Event arguments: [TextSearchStartEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/textSearchStartEventArgs/).
+- Event arguments: [TextSearchStartEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/textSearchStartEventArgs).
Example:
@@ -2216,7 +2218,7 @@ Example:
The [textSelectionEnd](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_TextSelectionEnd) event triggers when text selection is complete.
-- Event arguments: [TextSelectionEndEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/textSelectionEndEventArgs/).
+- Event arguments: [TextSelectionEndEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/textSelectionEndEventArgs).
Example:
@@ -2308,7 +2310,7 @@ Example:
The [thumbnailClick](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ThumbnailClick) event triggers when a thumbnail is clicked.
-- Event arguments: [ThumbnailClickEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/thumbnailClickEventArgs/).
+- Event arguments: [ThumbnailClickEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/thumbnailClickEventArgs).
Example:
@@ -2350,4 +2352,4 @@ Example:
{% endhighlight %}
{% endtabs %}
-> Tip: For annotation and signature events, see the dedicated Annotations Events topic.
+> For comprehensive documentation on **annotation events** and **signature events**, see the dedicated [Annotation Events](annotation/annotation-event) topic with complete examples and use cases.
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/feature-module.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/feature-module.md
index e26d00e0d6..e026190398 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/feature-module.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/feature-module.md
@@ -8,11 +8,9 @@ documentation: ug
---
-# Feature modules in ASP.NET Core PDF Viewer
+# Feature Modules in ASP.NET Core PDF Viewer
-The PDF Viewer features are organized into individual feature modules to enable selective referencing in your application. Inject the required modules to extend functionality. The following modules can be included as needed:
-
-The available PdfViewer modules are:
+PDF Viewer features are organized into individual feature modules to enable selective referencing in the application. Required modules can be injected to extend functionality. The available modules include:
* [**Toolbar**](./toolbar-customization):- Built-in toolbar for better user interaction.
* [**Magnification**](./magnification):- Perform zooming operation for better viewing experience.
@@ -27,7 +25,7 @@ The available PdfViewer modules are:
* [**FormFields**](./form-designer/create-programmatically):- Preserve the form fields in the PDF document.
* [**FormDesigner**](./form-designer/create-programmatically):- Form fields can be added or edited in the PDF document.
-N> In addition to injecting the required modules in your application, enable the corresponding properties to extend the functionality for a PDF Viewer instance. Refer to the following table.
+N> In addition to injecting required modules in the application, enable the corresponding properties to extend functionality for a PDF Viewer instance. Refer to the following table.
| Module | Property to enable the functionality for a PDF Viewer instance |
|---|---|
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/form-designer/create-programmatically.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/form-designer/create-programmatically.md
deleted file mode 100644
index 9d3192f5dc..0000000000
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/form-designer/create-programmatically.md
+++ /dev/null
@@ -1,1903 +0,0 @@
----
-layout: post
-title: Programmatically Add Fields in ASP.NET Core PDF Viewer | Syncfusion
-description: Learn how to add, update, delete, save, print, validate, and import/export form fields in the Syncfusion ASP.NET Core PDF Viewer component.
-platform: document-processing
-control: PDF Viewer
-documentation: ug
----
-
-# Create form fields programmatically in ASP.NET Core PDF Viewer
-
-The PDF Viewer component provides options to add, edit, and delete form fields. The supported form field types are:
-
-- Textbox
-- Password
-- CheckBox
-- RadioButton
-- ListBox
-- DropDown
-- Signature field
-- Initial field
-
-## Add a form field to PDF document programmatically
-
-Use the addFormField method to add form fields programmatically. Pass the form field type and the corresponding property object as parameters. The following example demonstrates adding a field on document load.
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## Edit/Update form field programmatically
-
-Use the updateFormField method to modify a form field programmatically. Retrieve the target field from the formFieldCollections property (by object or ID) and pass it as the first parameter. Provide the properties to update as the second parameter. The following example updates the background color of a Textbox field.
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## Delete form field programmatically
-
-Use the deleteFormField method to remove a form field programmatically. Retrieve the target field from the formFieldCollections property (by object or ID) and pass it to deleteFormField. The following example deletes the first form field.
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## Save form fields
-
-Selecting the Download icon on the toolbar saves the form fields in the exported PDF without modifying the original document. See the following GIF for reference.
-
-
-
-You can invoke the download action using the following code snippet.
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## Print form fields
-
-Selecting the Print icon on the toolbar prints the PDF with the added form fields. This action does not modify the original document. See the following GIF for reference.
-
-
-
-You can invoke the print action using the following code snippet:
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## Open an existing PDF document
-
-Open a PDF that already contains form fields by clicking the Open icon on the toolbar. See the following GIF for reference.
-
-
-
-## Validate form fields
-
-Form fields are validated when `enableFormFieldsValidation` is set to true and the validateFormFields event is handled. The event triggers during download or print if required fields are not filled. The non-filled fields are available in the `nonFillableFields` property of the event arguments.
-
-Add the following code to validate form fields:
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## Export and import form fields
-
-The PDF Viewer component supports exporting and importing form field data using the `importFormFields`, `exportFormFields`, and `exportFormFieldsAsObject` methods in the following formats:
-
-- FDF
-- XFDF
-- JSON
-
-### Export and import as FDF
-
-Using the `exportFormFields` method, the form field data can be exported in the specified data format. This method accepts two parameters:
-
-- The first parameter is the destination path for the exported data. If the path is not specified, a location is requested during export.
-- The second parameter specifies the format type for the form data.
-
-The following code exports and imports form field data as FDF.
-
-```html
-
-
-
-
-
-
-
-
-
-
-
-```
-
-### Export and import as XFDF
-
-The following code exports and imports form field data as XFDF.
-
-```html
-
-
-
-
-
-
-
-
-
-
-
-```
-
-### Export and import as JSON
-
-The following code exports and imports form field data as JSON.
-
-```html
-
-
-
-
-
-
-
-
-
-
-
-```
-
-### Export and import as Object
-
-The PDF Viewer component supports exporting the form field data as an object and importing that data back into the current PDF document.
-
-The following example shows how to export the form field data as an object and import the form field data from that object into the current PDF document via a button click.
-
-```html
-
-
-
-
-
-
-
-
-
-
-
-```
-
-## Form field properties
-
-Form field properties allow customization and interaction with fields embedded in PDF documents. The following sections outline the supported field types and their configurable settings.
-
-- Textbox
-- Password
-- CheckBox
-- RadioButton
-- ListBox
-- DropDown
-- Signature field
-- Initial field
-
-### Signature and initial fields settings
-
-Use the `updateFormField` method to modify form fields programmatically.
-
-The following code example explains how to update the signature field properties on a button click.
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-The following code shows how to configure default properties for a signature field added from the Form Designer toolbar.
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-
-
-The following code shows how to configure default properties for an initial field added from the Form Designer toolbar.
-
-
-
-
-
-### Textbox field settings
-
-Use the `updateFormField` method to modify form fields programmatically.
-
-The following example updates Textbox field properties on a button click.
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-The following code shows how to configure default properties for a Textbox field added from the Form Designer toolbar.
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-
-
-### Password field settings
-
-Use the `updateFormField` method to modify form fields programmatically.
-
-The following example updates Password field properties on a button click.
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-The following code shows how to configure default properties for a Password field added from the Form Designer toolbar.
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-
-
-### CheckBox field settings
-
-Use the `updateFormField` method to modify form fields programmatically.
-
-The following example updates CheckBox field properties on a button click.
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-The following code shows how to configure default properties for a CheckBox field added from the Form Designer toolbar.
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-
-
-### RadioButton field settings
-
-Use the `updateFormField` method to modify form fields programmatically.
-
-The following example updates RadioButton field properties on a button click.
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-The following code shows how to configure default properties for a RadioButton field added from the Form Designer toolbar.
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-
-
-### ListBox field settings
-
-Use the `updateFormField` method to modify form fields programmatically.
-
-The following example updates ListBox field properties on a button click.
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-The following code shows how to configure default properties for a ListBox field added from the Form Designer toolbar.
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-
-
-### DropDown field settings
-
-Use the `updateFormField` method to modify form fields programmatically.
-
-The following example updates DropDown field properties on a button click.
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-The following code shows how to configure default properties for a DropDown field added from the Form Designer toolbar.
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/form-designer/create-with-user-interface-interaction.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/form-designer/create-with-user-interface-interaction.md
deleted file mode 100644
index b497244e58..0000000000
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/form-designer/create-with-user-interface-interaction.md
+++ /dev/null
@@ -1,138 +0,0 @@
----
-layout: post
-title: Design form fields in the ASP.NET Core PDF Viewer | Syncfusion
-description: Learn how to add, drag, resize, edit, and manage form fields using the UI in the Syncfusion ASP.NET Core PDF Viewer component.
-platform: document-processing
-control: PDF Viewer
-documentation: ug
----
-
-# Design form fields with UI interaction in ASP.NET Core PDF Viewer
-
-The PDF Viewer component supports interactive form field design, including drawing, dragging, and resizing fields directly on the page. Click the Form Field icon on the toolbar to add a field and place it on the document. Supported form field types include:
-
-- Textbox
-- Password
-- CheckBox
-- RadioButton
-- ListBox
-- DropDown
-- Signature field
-- Initial field
-
-## Enable or Disable form designer toolbar
-
-Inject the FormDesigner module and set enableFormDesignerToolbar to true to display the Form Designer icon on the toolbar. The default value is true. Use the following code to enable the toolbar option.
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## Add the form field dynamically
-
-Click the Form Field icon on the toolbar, then click on the PDF to draw a form field. See the following GIF for reference.
-
-
-
-## Drag the form field
-
-Drag the selected form field to reposition it within the PDF document. See the following GIF for reference.
-
-
-
-## Resize the form field
-
-Resize the selected form field using the resize handles on the field boundary. See the following GIF for reference.
-
-
-
-## Edit or Update the form field dynamically
-
-Edit form field properties using the Form Field Properties dialog. Open it by right-clicking a form field and selecting Properties from the context menu. The following images show examples of available settings.
-
-
-
-
-
-
-
-## Clipboard operation with form field
-
-The PDF Viewer supports clipboard operations such as cut, copy, and paste for form fields. Right-click a form field to open the context menu and choose the desired clipboard action. The following image shows the available options.
-
-
-
-## Undo and Redo
-
-Undo and redo actions are supported for runtime changes made to form fields. Use the following code to perform undo and redo operations.
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/form-designer/form-field-events.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/form-designer/form-field-events.md
deleted file mode 100644
index c7474d8646..0000000000
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/form-designer/form-field-events.md
+++ /dev/null
@@ -1,607 +0,0 @@
----
-layout: post
-title: Form field events in ASP.NET Core PDF Viewer | Syncfusion
-description: Learn about form field events supported in the Syncfusion ASP.NET Core PDF Viewer component and how to handle them.
-platform: document-processing
-control: Form Field Events
-documentation: ug
----
-
-# PDF Viewer Form Field events in ASP.NET CORE
-
-The PDF Viewer component provides support for various form field events. The following events are available:
-
-| Form field events | Description |
-|---|---|
-| formFieldAdd | Triggered when a form field is added. |
-| formFieldClick | Triggered when a form field is clicked. |
-| formFieldDoubleClick | Triggered when a form field is double-clicked. |
-| formFieldFocusOut | Triggered when focus moves out of a form field. |
-| formFieldMouseLeave | Triggered when the mouse cursor leaves a form field. |
-| formFieldMouseOver | Triggered when the mouse cursor is over a form field. |
-| formFieldMove | Triggered when a form field is moved. |
-| formFieldPropertiesChange | Triggered when a form field property changes. |
-| formFieldRemove | Triggered when a form field is removed. |
-| formFieldResize | Triggered when a form field is resized. |
-| formFieldSelect | Triggered when a form field is selected. |
-| formFieldUnselect | Triggered when a form field is unselected. |
-| validateFormFields | Triggered when validation fails. |
-
-## formFieldAdd event
-
-The [formFieldAdd](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_FormFieldAdd) event is triggered when a new form field is added, either programmatically or through user interaction. The event arguments provide details about the added form field.
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## formFieldClick event
-
-The [formFieldClick](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_FormFieldClick) event is triggered when a form field is clicked. The event arguments provide details about the clicked form field.
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## formFieldDoubleClick event
-
-The [formFieldDoubleClick](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_FormFieldDoubleClick) event is triggered when a form field is double-clicked. The event arguments provide the necessary information about the form field double-click event.
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## formFieldFocusOut event
-
-The [formFieldFocusOut](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_FormFieldFocusOut) event is triggered when a form field loses focus. The event arguments provide the necessary information about the form field focus out event.
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## formFieldMouseLeave event
-
-The [formFieldMouseLeave](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_FormFieldMouseLeave) event is triggered when the mouse leaves a form field. The event arguments provide the necessary information about the form field mouse leave event.
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## formFieldMouseOver event
-
-The [formFieldMouseOver](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_FormFieldMouseover) event is triggered when the mouse hovers over a form field. The event arguments provide the necessary information about the form field mouse over event.
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## formFieldMove event
-
-The [formFieldMove](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_FormFieldMove) event is triggered when the mouse moves inside a form field. The event arguments provide the necessary information about the form field mouse move event.
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## formFieldPropertiesChange event
-
-The [formFieldPropertiesChange](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_FormFieldPropertiesChange) event is triggered when the properties of a form field are changed. The event arguments provide the necessary information about which property of the form field has been changed.
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## formFieldRemove event
-
-The [formFieldRemove](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_FormFieldRemove) event is triggered when a form field is removed from the PDF. The event arguments provide the necessary information about which form field has been removed.
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## formFieldResize event
-
-The [formFieldResize](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_FormFieldResize) events are triggered when a form field in a PDF is resized. These events provide the relevant details about the specific form field that has been resized.
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## formFieldSelect event
-
-The [formFieldSelect](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_FormFieldSelect) events are triggered when a form field in a PDF is selected. These events provide the necessary details about the specific form field that has been selected.
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## formFieldUnselect event
-
-The [formFieldUnselect](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_FormFieldUnselect) events are triggered when a form field in a PDF is unselected. These events provide the necessary details about the specific form field that has been unselected.
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## validateFormFields event
-
-The [ValidateFormFields](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ValidateFormFields) events are triggered when a required form field is left unfilled before downloading the PDF. These events provide the necessary information for validating which form fields are incomplete.
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-{% endhighlight %}
-{% endtabs %}
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/form-filling.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/form-filling.md
deleted file mode 100644
index 866c86ed67..0000000000
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/form-filling.md
+++ /dev/null
@@ -1,93 +0,0 @@
----
-layout: post
-title: Form filling in ASP.NET Core PDF Viewer control | Syncfusion
-description: Learn how to view, fill, export, and import PDF form fields with ASP.NET Core PDF Viewer control of Syncfusion Essential JS 2 and more details.
-platform: document-processing
-control: PDF Viewer
-documentation: ug
----
-
-# Form filling in ASP.NET Core PDF Viewer Component
-
-The PDF Viewer component displays existing form fields in a PDF document and enables filling and downloading filled data.
-
-The form fields displayed in the PDF Viewer are:
-
-* Textbox
-* Password
-* CheckBox
-* RadioButton
-* ListBox
-* DropDown
-* SignatureField
-* InitialField
-
-
-
-## Disabling form fields
-
-The PDF Viewer control provides an option to disable interaction with form fields. Use the following configuration to disable form fields in the viewer.
-
-{% tabs %}
-{% highlight cshtml tabtitle="Standalone" %}
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## How to draw handwritten signature in the signature field
-
-Add a handwritten signature to a Signature field by following these steps:
-
-* Click the signature field in the PDF document to open the signature panel.
-
-
-
-* Draw the signature in the signature panel.
-
-
-
-* Click the **CREATE** button. The drawn signature is added to the signature field.
-
-
-
-## Delete the signature inside the signature field
-
-Delete a signature placed in a signature field by using the Delete option in the annotation toolbar.
-
-
-
-## Export and import form fields
-
-The PDF Viewer control provides the support to export and import the form field data in the following formats using the `importFormFields`, `exportFormFields`, and `exportFormFieldsAsObject` methods.
-
-* FDF
-* XFDF
-* JSON
-
-For detailed information about exporting and importing form fields, please refer to the [Form Fields documentation](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/asp-net-core/form-designer/create-programmatically#export-and-import-form-fields).
-
-## See also
-
-* [Handwritten Signature in ASP.NET Core PDF Viewer Component](./annotation/signature-annotation)
-* [Form Designer](./form-designer/form-field-events)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/custom-data.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/custom-data.md
new file mode 100644
index 0000000000..a6eb7d0086
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/custom-data.md
@@ -0,0 +1,166 @@
+---
+layout: post
+title: Add custom data to form fields in ASP.NET Core Pdf Viewer | Syncfusion
+description: Learn how to attach, update, and read custom Data on PDF form fields using the Form Designer UI and APIs in the Syncfusion ASP.NET Core PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Add Custom Data to PDF Form Fields in ASP.NET Core PDF Viewer
+
+The Syncfusion ASP.NET Core PDF Viewer allows attaching custom application-specific data to form fields using the **customData** property. This enables associating business identifiers, tags, validation hints, or workflow metadata with form fields.
+
+Custom data remains linked to the form field throughout the viewer session and can be accessed or updated whenever the field is queried or modified.
+
+This page explains:
+- [Adding custom data when creating form fields](#add-custom-data-while-creating-pdf-form-fields)
+- [Defining default custom data for fields created using the UI](#set-default-custom-data-for-pdf-form-fields-added-using-ui)
+- [Updating or replacing custom data for existing fields](#update-or-replace-pdf-form-field-custom-data)
+- [Reading custom data from form fields](#read-custom-data-from-pdf-form-fields)
+- [Applying best practices when using custom data](#best-practices)
+
+**Key Points**
+- **customData** is a free-form object; its structure is defined by the application.
+- Use only serializable values such as objects, arrays, strings, numbers, and booleans.
+- Custom data does not affect field appearance or behavior unless consumed by application logic.
+
+## Add Custom Data While Creating PDF Form Fields
+
+Custom data can be attached at the time of field creation by passing a **customData** object in the settings parameter of **addFormField()**.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Set Default Custom Data for PDF Form Fields Added Using UI
+
+When users add form fields using the [Form Designer toolbar](../toolbar-customization/form-designer-toolbar), default **customData** can be defined so that newly created fields automatically inherit it. Default custom data can be configured using per-field settings objects such as:
+
+- [textFieldSettings](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_TextFieldSettings)
+- [passwordFieldSettings](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_PasswordFieldSettings)
+- [checkBoxFieldSettings](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_CheckBoxFieldSettings)
+- [radioButtonFieldSettings](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_RadioButtonFieldSettings)
+- [listBoxFieldSettings](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ListBoxFieldSettings)
+- [dropDownFieldSettings](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_DropDownFieldSettings)
+- [signatureFieldSettings](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_SignatureFieldSettings)
+- [initialFieldSettings](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_InitialFieldSettings)
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Update or Replace PDF Form Field Custom Data
+
+The **customData** of an existing form field can be modified using the [updateFormField()](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#updateformfields) method. The field can be identified using its object reference or field ID.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+**Tip:**
+New values should be merged with the existing **customData** object before calling [updateFormField()](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#updateformfields) to avoid overwriting previously stored data.
+
+## Read Custom Data from PDF Form Fields
+
+The **customData** property can be accessed from any form field at any point in the application flow, such as:
+- After the document is loaded.
+- During save or submit operations.
+- While performing validation or conditional routing.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Best Practices
+
+- Treat **customData** as application metadata, not display data.
+- Use it to drive business rules, validation logic, and workflow decisions.
+- Keep data minimal and structured for easy processing.
+- When cloning or copying form fields, ensure **customData** is copied or updated as required.
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/asp-core-pdf-viewer-examples)
+
+## See Also
+
+- [Form Designer overview](./overview)
+- [Form Designer Toolbar](../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./overview-create-forms)
+- [Group form fields](./group-form-fields)
+- [Form flags](./form-constrain)
+- [Form validation](./form-validation)
+- [Form fields API](./form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/form-constrain.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/form-constrain.md
new file mode 100644
index 0000000000..da0206f82d
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/form-constrain.md
@@ -0,0 +1,277 @@
+---
+layout: post
+title: PDF form field flags in ASP.NET Core PDF Viewer | Syncfusion
+description: Learn how to apply isReadOnly, isRequired, and isPrint flags to PDF form fields in the Syncfusion ASP.NET Core PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# PDF Form Field Flags in ASP.NET Core PDF Viewer
+
+The Syncfusion ASP.NET Core PDF Viewer allows controlling how users interact with form fields and how those fields behave during validation and printing by applying form field flags. These flags define whether a form field can be modified, whether it is mandatory, and whether it appears in printed output.
+
+This topic explains:
+- [Supported form field flags](#supported-pdf-form-field-flags)
+- [How each constraint affects field behavior](#key-actions)
+- [How to apply flags during field creation](#apply-pdf-form-field-flags-using-the-ui)
+- [How to update flags on existing fields](#update-flags-on-existing-fields-programmatically)
+- [How flags work with validation and printing](#control-print-behavior)
+
+## Supported PDF Form Field Flags
+
+The following flags are supported in the PDF Viewer:
+
+- [isReadOnly](#make-fields-read-only)
+ Prevents users from modifying the form field in the UI while still allowing updates through APIs.
+
+- [isRequired](#mark-fields-as-required)
+ Marks the form field as mandatory and includes it in form field validation.
+
+- [isPrint](#control-print-behavior)
+ Controls whether the form field appears when the document is printed.
+
+## Key Actions
+
+### Make Fields Read Only
+
+The **isReadOnly** property prevents users from modifying a form field through the UI. This is useful for displaying prefilled or calculated values that should not be changed.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+{% endhighlight %}
+{% endtabs %}
+
+### Mark Fields as Required
+
+The **isRequired** property marks form fields as mandatory. To enforce this constraint, enable form field validation and validate fields before allowing actions such as printing or downloading.
+
+- Enable validation using [enableFormFieldsValidation](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_EnableFormFieldsValidation)
+- [Validate fields](./form-validation) using [validateFormFields()](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ValidateFormFields)
+
+When required fields are empty, validation can prevent further actions.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+{% endhighlight %}
+{% endtabs %}
+
+### Control Print Behavior
+
+The **isPrint** property controls whether a form field appears in the printed output of the PDF document.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+{% endhighlight %}
+{% endtabs %}
+
+N> Printing can be triggered programmatically using **pdfviewer.print()**. Form fields with **isPrint: false** are excluded from the printed output.
+
+## Apply PDF Form Field Flags Using the UI
+
+**Steps**
+1. Enable Form Designer mode in the PDF Viewer.
+2. Select an existing form field on the PDF page.
+3. Right-click to open the context menu and select Properties.
+4. Configure the required constraint options.
+5. Click OK to close the properties popover and apply changes.
+
+Changes are reflected immediately in the viewer.
+
+
+
+## Apply PDF Form Field Flags Programmatically
+
+Form field flags can be applied or modified in the following ways.
+
+### Apply Flags When Creating Fields
+
+Flags properties can be passed in the settings object when creating form fields using **addFormField()**.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+### Set Default Flags for New PDF Form Fields
+
+Default flag values can be configured so that form fields added using the [Form Designer toolbar](../toolbar-customization/form-designer-toolbar) automatically inherit them. This ensures consistent behavior for all newly created fields.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## See Also
+
+- [Form Designer overview](./overview)
+- [Form Designer Toolbar](../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./manage-form-fields/create-form-fields)
+- [Modify form fields](./manage-form-fields/modify-form-fields)
+- [Group form fields](./group-form-fields)
+- [Add custom data to PDF form fields](./custom-data)
+- [Form Validation](./form-validation)
+- [Form fields API](./form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/form-designer.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/form-designer.md
new file mode 100644
index 0000000000..6754edb807
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/form-designer.md
@@ -0,0 +1,229 @@
+---
+layout: post
+title: Form Designer and Toolbar Customization in ASP.NET Core | Syncfusion
+description: Learn here all about form designer and toolbar in Syncfusion ASP.NET Core PDF Viewer Component and more.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Form Designer in ASP.NET Core PDF Viewer
+
+When **Form Designer mode** is enabled in the Syncfusion ASP.NET Core PDF Viewer, a default [Form Designer user interface (UI)](https://document.syncfusion.com/demos/pdf-viewer/asp-net-core/pdfviewer/formdesigner#/tailwind3) is displayed. This UI includes a built in toolbar for adding form fields such as text boxes, password fields, check boxes, radio buttons, drop down lists, list boxes, and signature and initial fields.
+
+Form fields can be placed on the PDF, moved and resized, configured with field and widget properties, previewed, and removed as needed. The Form Designer toolbar can be shown, hidden, and customized to control available tools based on application requirements, enabling flexible and interactive form design directly within the viewer.
+
+## Key Features
+
+**Add Form Fields**
+
+The following form fields can be added to the PDF:
+
+- [Text box](../forms/manage-form-fields/create-form-fields#add-textbox)
+- [Password Field](../forms/manage-form-fields/create-form-fields#add-password)
+- [Check box](../forms/manage-form-fields/create-form-fields#add-checkbox)
+- [Radio button](../forms/manage-form-fields/create-form-fields#add-radiobutton)
+- [Dropdown List](../forms/manage-form-fields/create-form-fields#add-dropdown)
+- [List box](../forms/manage-form-fields/create-form-fields#add-listbox)
+- [Signature field](../forms/manage-form-fields/create-form-fields#add-signature-field)
+- [Initial field](../forms/manage-form-fields/create-form-fields#add-initial-field)
+
+**Edit Form Fields**
+
+Form fields can be moved, resized, aligned, distributed, copied, pasted, and changes can be undone or redone.
+
+**Set Field Properties**
+
+Field properties such as name, value, font, color, border, alignment, visibility, tab order, and required or read-only state can be configured.
+
+**Control Field Behavior**
+
+Read-only mode can be enabled or disabled, fields can be shown or hidden, and visibility during printing can be controlled.
+
+**Manage Form Fields**
+
+Form fields can be selected, grouped or ungrouped, reordered, and deleted as needed.
+
+**Save and Print Forms**
+
+Designed form fields can be saved to the PDF document and printed with their appearances.
+
+## Enable Form Designer
+
+Form design features are enabled using the ASP.NET Core TagHelper for the PDF Viewer. The TagHelper renders the client component and loads the EJ2 bundle (via `resourceUrl`), which provides the Form Designer modules at runtime.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+@page "{handler?}"
+@model IndexModel
+@{
+ ViewData["Title"] = "Home page";
+}
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Form Designer UI
+
+When Form Designer mode is enabled in the Syncfusion ASP.NET Core PDF Viewer, a default [Form Designer UI](https://document.syncfusion.com/demos/pdf-viewer/asp-net-core/pdfviewer/formdesigner#/tailwind3) is displayed. This UI provides a built-in toolbar for adding common form fields such as text boxes, check boxes, radio buttons, drop-down lists, and signature fields. Fields can be placed on the PDF, selected, resized or moved, and configured using available editing options, enabling interactive form creation directly within the viewer.
+
+
+
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es6/prefilledforms-cs1" %}
+
+For more information about creating and editing form fields in the PDF Viewer, refer to the [Form Creation](./manage-form-fields/create-form-fields) documentation.
+
+## Form Designer Toolbar
+
+The Form Designer toolbar appears at the top of the PDF Viewer and provides quick access to form field creation tools. It includes frequently used field types such as:
+
+- [Text box](../forms/manage-form-fields/create-form-fields#add-textbox)
+- [Password Field](../forms/manage-form-fields/create-form-fields#add-password)
+- [Check box](../forms/manage-form-fields/create-form-fields#add-checkbox)
+- [Radio button](../forms/manage-form-fields/create-form-fields#add-radiobutton)
+- [Dropdown List](../forms/manage-form-fields/create-form-fields#add-dropdown)
+- [List box](../forms/manage-form-fields/create-form-fields#add-listbox)
+- [Signature field](../forms/manage-form-fields/create-form-fields#add-signature-field)
+- [Initial field](../forms/manage-form-fields/create-form-fields#add-initial-field)
+
+Each toolbar item allows placing the corresponding form field by selecting the tool and clicking the desired location in the PDF document.
+
+
+
+The following code snippet enables Form Designer using the ASP.NET Core TagHelper:
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+@page "{handler?}"
+@model IndexModel
+@{
+ ViewData["Title"] = "Home page";
+}
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+For more information about creating and editing form fields in the PDF Viewer, refer to the [Form Creation](./manage-form-fields/create-form-fields) documentation.
+
+## Show or Hide the Built-in Form Designer Toolbar
+
+The visibility of the Form Designer toolbar can be controlled using the [isFormDesignerToolbarVisible()](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_IsFormDesignerToolbarVisible) method. This allows displaying or hiding the Form Designer tools based on application requirements.
+
+**Use this method to:**
+- Show the Form Designer toolbar when form design is required.
+- Hide the toolbar to provide a cleaner viewing experience.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Customize the Built-in Form Designer Toolbar
+
+The Form Designer toolbar can be customized by specifying the tools to display and arranging them in the required order using the [FormDesignerToolbarItems](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_EnableFormDesignerToolbar) property. This customization limits available tools and simplifies the user interface.
+
+**Key Points**
+- Include only the toolbar items needed, in the exact order specified.
+- Toolbar items not listed remain hidden, resulting in a cleaner, more focused UI.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Move, Resize, and Edit Form Fields
+
+Existing form fields can be moved, resized, and edited directly in the PDF Viewer using the Form Designer.
+
+- Move a field by selecting it and dragging it to the required position.
+- Resize a field using the handles displayed on the field boundary.
+
+
+
+- Edit a field by selecting it to open the Form Field Properties popover. The popover allows modifying form field and widget annotation properties. Changes are reflected immediately and saved when the properties popover is closed. For more information, see [Editing Form Fields](./manage-form-fields/modify-form-fields).
+
+## Deleting Form Fields
+
+Form fields can be removed from the PDF document by selecting the field and using one of the following methods:
+- Click the Delete option in the Form Designer UI.
+- Press the Delete key after selecting the form field.
+
+The selected form field and its associated widget annotation are permanently removed from the page. For more information, see [Deleting Form Fields](./manage-form-fields/remove-form-fields).
+
+## See Also
+
+- [Filling PDF Forms](./form-filling)
+- [Create](./manage-form-fields/create-form-fields), [edit](./manage-form-fields/modify-form-fields), [style](./manage-form-fields/style-form-fields) and [remove](./manage-form-fields/remove-form-fields) form fields
+- [Grouping form fields](./group-form-fields)
+- [Form Constrains](./form-constrain)
+- [Form Validation](./form-validation)
+- [Custom Data](./custom-data)
+- [Import](./import-export-form-fields/import-form-fields)/[Export Form Data](./import-export-form-fields/export-form-fields)
+- [Form field events](./form-field-events)
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/form-field-events.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/form-field-events.md
new file mode 100644
index 0000000000..afc9324a84
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/form-field-events.md
@@ -0,0 +1,114 @@
+---
+layout: post
+title: Form Field Events in ASP.NET Core PDF Viewer control | Syncfusion
+description: Learn here all about different form field events in the Syncfusion ASP.NET Core PDF Viewer component and more.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# PDF Viewer Form Field Events in ASP.NET Core
+
+The Syncfusion ASP.NET Core PDF Viewer provides comprehensive form field events for tracking user interactions, responding to form changes, and implementing custom business logic. Events support scenarios such as [validation](./form-validation), UI updates, logging, and workflow automation.
+
+Form field events are triggered when adding, selecting, modifying, moving, resizing, and removing form fields.
+
+## Supported PDF Form Field Events
+
+The following table lists all supported form field events and their descriptions:
+
+| Form Field events | Description |
+|---|---|
+| [formFieldAdd](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_FormFieldAdd) | Triggered when a new form field is added, either through the Form Designer UI or programmatically. |
+| [formFieldClick](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_FormFieldClick) | Fired when a form field is clicked in the viewer. |
+| [formFieldDoubleClick](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_FormFieldDoubleClick) | Fired when a form field is double clicked. |
+| [formFieldFocusOut](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_FormFieldFocusOut) | Triggered when a form field loses focus after editing. |
+| [formFieldMouseLeave](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_FormFieldMouseLeave) | Fired when the mouse pointer leaves a form field. |
+| [formFieldMouseOver](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_FormFieldMouseover) | Fired when the mouse pointer moves over a form field. |
+| [formFieldMove](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_FormFieldMove) | Triggered when a form field is moved to a new position. |
+| [formFieldPropertiesChange](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_FormFieldPropertiesChange) | Fired when any form field property changes, such as font, color, or constraint values. |
+| [formFieldRemove](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_FormFieldRemove) | Triggered when a form field is deleted from the document. |
+| [formFieldResize](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_FormFieldResize) | Fired when a form field is resized. |
+| [formFieldSelect](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_FormFieldSelect) | Fired when a form field is selected in the Form Designer. |
+| [formFieldUnselect](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_FormFieldUnselect) | Fired when a previously selected form field is unselected. |
+| [validateFormFields](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ValidateFormFields) | Fired when form field validation fails during print or download actions. |
+
+**Common Use Cases**
+
+Form field events support:
+- Validating form data before printing or downloading.
+- Tracking user interactions with form fields.
+- Updating UI elements dynamically.
+- Logging form changes for auditing.
+- Triggering workflow actions based on field changes.
+- Enforcing business rules during form editing.
+
+## Handle PDF Form Field Events
+
+Form field events can be wired on the PDF Viewer instance to execute custom logic when specific actions occur.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+**Event Behavior Notes**
+
+- Events triggered through the UI and programmatic APIs use the same event handlers.
+- Property-related events are raised immediately when changes occur.
+- Validation events are triggered only during print or download operations.
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/asp-core-pdf-viewer-examples)
+
+## See also
+
+- [Form Designer overview](./overview)
+- [Form Designer Toolbar](../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./manage-form-fields/create-form-fields)
+- [Edit form fields](./manage-form-fields/modify-form-fields)
+- [Group form fields](./group-form-fields)
+- [Add custom data to form fields](./custom-data)
+- [Form Field Flags](./form-constrain)
+- [Form validation](./form-validation)
+- [Form fields API](./form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/form-fields-api.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/form-fields-api.md
new file mode 100644
index 0000000000..cf5c4287f1
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/form-fields-api.md
@@ -0,0 +1,446 @@
+---
+layout: post
+title: Form Fields API in ASP.NET Core PDF Viewer | Syncfusion
+description: Learn how to use Form Fields API to enable, update, retrieve and clear in the Syncfusion ASP.NET Core PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Form Fields API in ASP.NET Core PDF Viewer
+
+The PDF Viewer provides comprehensive APIs to create, edit, validate, navigate, and manage form fields programmatically. The table below lists the available APIs:
+
+| API | Description |
+|---|---|
+| [updateFormFieldsValue](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#updateformfieldsvalue) | Updates the value for one or more form fields.|
+| [updateFormFields](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#updateformfields) | Updates the properties of one or more form fields.|
+| [retrieveFormFields](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#retrieveformfields) | Retrieves all form fields or by specific criteria.|
+| [resetFormFields](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#resetformfields) | Resets the specified or all form fields to their default values.|
+| [importFormFields](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#importformfields) | Imports values and states for form fields from a JSON object or file stream.|
+| [focusFormField](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#focusformfield) | Sets focus to a form field by name or ID.|
+| [exportFormFieldsAsObject](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#exportformfieldsasobject) | Exports form fields as a JSON object.|
+| [exportFormFields](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#exportformfields) | Exports form fields as a downloadable file.|
+| [clearFormFields](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#clearformfields) | Clears values of specified or all form fields without removing them.|
+| [isFormFieldDocument](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_IsFormFieldDocument) | Indicates whether the loaded document contains form fields.|
+| [isFormDesignerToolbarVisible](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_IsFormDesignerToolbarVisible) | Gets whether the Form Designer toolbar is currently visible.|
+| [formFieldCollections](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#formfieldcollections) | Gets the collection of current form fields with their properties.|
+| [enableFormFieldsValidation](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_EnableFormFieldsValidation) | Enables or disables form field validation.|
+| [enableFormFields](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_EnableFormFields) | Enables or disables interaction with form fields.|
+| [enableFormDesignerToolbar](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_EnableFormDesignerToolbar) | Shows or hides the Form Designer toolbar.|
+
+## updateFormFieldsValue
+
+Form field values can be updated programmatically using this API.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## updateFormFields
+
+Form field properties such as bounds, color, font, isReadOnly, required, and more can be updated using this API.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## retrieveFormFields
+
+All form fields and their properties can be retrieved, or results can be filtered by type or name.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## resetFormFields
+
+Specified form fields or all fields can be reset to their default values.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## importFormFields
+
+Form field data can be imported from an object or file into the current document.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## focusFormField
+
+Focus can be moved to a form field by name or ID.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## exportFormFieldsAsObject
+
+Current form field values and states can be exported as a JSON object.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## exportFormFields
+
+Form field data can be exported to a file for download.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## clearFormFields
+
+Values of specified or all fields can be cleared without removing the fields.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## isFormDesignerToolbarVisible
+
+Gets the visibility status of the Form Designer toolbar.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## formFieldCollections
+
+The current collection of form fields with their properties can be retrieved from the viewer instance.
+
+```html
+
+```
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## enableFormFieldsValidation
+
+Built-in validation for required and constrained fields can be enabled or disabled.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## enableFormFields
+
+User interaction with form fields can be enabled or disabled globally.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## enableFormDesignerToolbar
+
+The Form Designer toolbar can be shown or hidden at runtime.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## See also
+
+- [Form Designer overview](./overview)
+- [Form Designer Toolbar](../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./manage-form-fields/create-form-fields)
+- [Edit form fields](./manage-form-fields/modify-form-fields)
+- [Group form fields](./group-form-fields)
+- [Add custom data to form fields](./custom-data)
+- [Form Constrain](./form-constrain)
+- [Form fields Validation](./form-validation)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/form-filling.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/form-filling.md
new file mode 100644
index 0000000000..5b4a8b33d7
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/form-filling.md
@@ -0,0 +1,177 @@
+---
+layout: post
+title: Form filling in ASP.NET Core PDF Viewer Control | Syncfusion
+description: Learn to view, fill, export, and import PDF form fields in Syncfusion ASP.NET Core PDF Viewer, including disabling interaction and handling signatures.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Filling PDF Forms in ASP.NET Core PDF Viewer
+
+The Syncfusion PDF Viewer supports three form-filling methods:
+
+1. [Filling form fields programmatically](#fill-pdf-forms-programmatically)
+
+ Form fields can be filled or updated programmatically using the [updateFormFieldsValue](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#updateformfieldsvalue) API. This approach is useful when form data must be set dynamically based on application logic.
+
+2. [Form filling through the user interface](#fill-pdf-forms-through-the-user-interface)
+
+ Users can fill PDF form fields directly through the UI by typing, selecting, or interacting with supported form elements.
+
+3. [Importing form field data](#fill-pdf-forms-through-import-data)
+
+ The PDF Viewer supports importing form field data into an existing document to prefill forms from external data sources.
+
+## Fill PDF forms programmatically
+
+Form field values can be updated programmatically using the [updateFormFieldsValue](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#updateformfieldsvalue) API. This method allows setting or modifying values dynamically, without user interaction.
+
+The following example demonstrates how to update PDF form field values programmatically:
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Fill PDF forms through the User Interface
+
+Users can fill PDF form fields directly through the UI. Clicking a form field enables entering or selecting values according to the field type.
+
+
+
+The PDF Viewer supports common form fields such as text boxes, check boxes, radio buttons, drop-down lists, list boxes, and signature fields. Filled values can be edited at any time, and the entered data is retained during the viewing session.
+
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es6/prefilledforms-cs1" %}
+
+## Fill PDF forms through Import Data
+
+The PDF Viewer supports importing form field data into an existing document using the [importFormFields](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#importformfields) API. Imported data is mapped to corresponding form fields by name and displayed in the viewer; values can be edited through the UI if required.
+
+```html
+
+```
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+For more details, see [Import Form Data](./import-export-form-fields/import-form-fields).
+
+## How to get the filled data and store it to a backing system
+
+Export filled form data from the PDF Viewer and store it in a backing system such as a database or file storage. Exported data can be re-imported later to restore form state.
+
+For more details, see [Export Form Data](./import-export-form-fields/export-form-fields).
+
+## How to Validate Form Fields using `validateFormFields` Event
+
+The [validateFormFields](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ValidateFormFields) event in the Syncfusion PDF Viewer is triggered when a user tries to download or submit a form while validation is enabled. You can use the [retrieveFormFields()](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#retrieveformfields) API to get all the form fields and check them one by one to see if any form fields values are empty.
+
+Validation applies to all form field types. A textbox is empty if no text is entered, a list box or dropdown is empty if no item is selected, a signature or initial field is empty if not signed, and radio buttons or checkboxes are empty if none are chosen.
+
+Enable [enableFormFieldsValidation](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_EnableFormFieldsValidation) and wire the event to inspect each field and cancel actions when required fields are not filled.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## See also
+
+- [Form Designer overview](./overview)
+- [Form Designer Toolbar](../toolbar-customization/form-designer-toolbar)
+- [Create](./manage-form-fields/create-form-fields), [edit](./manage-form-fields/modify-form-fields), [style](./manage-form-fields/customize-form-fields) and [remove](./manage-form-fields/remove-form-fields) form fields
+- [Edit form fields](./manage-form-fields/edit-form-fields)
+- [Group form fields](./group-form-fields)
+- [Add custom data to form fields](./custom-data)
+- [Form Constrain](./form-constrain)
+- [Form validation](./form-validation)
+- [Form fields API](./form-fields-api)
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/form-validation.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/form-validation.md
new file mode 100644
index 0000000000..e6b153b306
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/form-validation.md
@@ -0,0 +1,138 @@
+---
+layout: post
+title: Form validation in the ASP.NET Core PDF Viewer component | Syncfusion
+description: Learn how to enable built in form field validation and validate missing required fields in the Syncfusion ASP.NET Core PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Validate PDF Form Fields in ASP.NET Core PDF Viewer
+
+The Syncfusion **ASP.NET Core PDF Viewer** provides built-in support for validating form fields before printing, downloading, or submitting a PDF document. Validation ensures all required form fields are filled, helping enforce data completeness and improving the reliability of collected data.
+
+## How PDF Form Validation Works
+
+Form field validation follows this flow:
+- Enable validation using the [enableFormFieldsValidation](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_EnableFormFieldsValidation) property.
+- Handle the [validateFormFields](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ValidateFormFields) event to determine which required fields remain unfilled.
+- When validation is enabled and the user attempts to print, download, or submit:
+ - The [validateFormFields](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ValidateFormFields) event is triggered.
+ - Unfilled required fields are listed in args.nonFillableFields.
+ - Cancel the action, show an error message, or focus an invalid field as needed.
+
+## Enable PDF Form Field Validation
+
+To enable validation, set the [enableFormFieldsValidation](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_EnableFormFieldsValidation) property to true and wire the validateFormFields event.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Mark Fields as Required
+
+Only fields marked as required participate in validation. Use the **isRequired** property when creating or updating form fields.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+{% endhighlight %}
+{% endtabs %}
+
+## Handle PDF Form Validation Results
+
+In the [validateFormFields](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ValidateFormFields) event, control the behavior when fields are missing. Typical actions include:
+- Cancel the print or download operation.
+- Display an error message to the user.
+- Focus the first unfilled required field.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+{% endhighlight %}
+{% endtabs %}
+
+## Tips
+
+- Use **isRequired** to mark mandatory fields clearly.
+- Validation is triggered only during [print](../print), [download](../download), or submit actions.
+- For custom validation logic (such as validating email format):
+ - Retrieve all form fields using [retrieveFormFields()](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#retrieveformfields).
+ - Apply custom checks before allowing the action to proceed.
+
+## See Also
+
+- [Form Designer overview](./overview)
+- [Form Designer Toolbar](../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./manage-form-fields/create-form-fields)
+- [Modify form fields](./manage-form-fields/modify-form-fields)
+- [Group form fields](./group-form-fields)
+- [Add custom data to PDF form fields](./custom-data)
+- [Form flags](./form-constrain)
+- [Form fields API](./form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/group-form-fields.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/group-form-fields.md
new file mode 100644
index 0000000000..cb8931d4e9
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/group-form-fields.md
@@ -0,0 +1,125 @@
+---
+layout: post
+title: Group form fields in the Core PDF Viewer component | Syncfusion
+description: Learn how to group PDF form fields in the Syncfusion ASP.NET Core PDF Viewer by assigning the same name to multiple widgets.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Group Form Fields in ASP.NET Core PDF Viewer
+
+The Syncfusion ASP.NET Core PDF Viewer allows grouping multiple form fields into a single logical field by assigning the same Name. Grouped fields share values and states automatically based on field type. Form field grouping can be done using the Form Designer UI or programmatically via APIs.
+
+This page covers:
+- [How form field grouping works](#how-grouping-works)
+- [Field behavior based on type](#field-behavior-by-type)
+- [How to group form fields using the UI](#group-using-the-form-designer-ui)
+- [How to group form fields programmatically](#group-pdf-form-fields-programmatically)
+- [Example scenarios](#example-scenarios)
+
+## How Grouping Works
+
+In a PDF form, multiple PDF Form Fields can represent the same logical form field. When fields share the same Name, they are treated as a group and remain synchronized.
+
+## Field Behavior by Type
+
+- **Textbox and Password** — Text entered in one widget appears in all widgets with the same Name.
+- **CheckBox** — Checking one widget sets the checked state for all checkboxes with the same Name.
+- **RadioButton** — Widgets with the same Name form a radio group; only one option can be selected.
+- **ListBox and DropDown** — The selected value is shared across widgets with the same Name.
+- **Signature and Initial fields** — Applied signatures or initials are mirrored across grouped widgets.
+
+N> Form field grouping is controlled by the Name property. Widget position is determined only by bounds; grouping is unaffected by location.
+
+## Group Using the Form Designer UI
+
+**Steps**
+1. Enable the [Form Designer toolbar](../toolbar-customization/form-designer-toolbar).
+2. Add the form fields to group.
+3. Select a form field, open Properties, and set the Name value.
+4. Assign the same Name to all PDF Form Fields in the group.
+5. Apply changes and verify that updates in one widget reflect in others.
+
+
+
+
+
+## Group PDF Form Fields Programmatically
+
+Form fields can be grouped during creation by assigning the same Name through code.
+
+### Example Scenarios
+- Two textboxes named EmployeeId share the same value.
+- A radio button group named Gender allows single selection.
+- Two checkboxes named Subscribe share the checked state.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/asp-core-pdf-viewer-examples)
+
+## See also
+
+- [Form Designer overview](../overview)
+- [Form Designer Toolbar](../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./manage-form-fields/create-form-fields)
+- [Modify form fields](./manage-form-fields/modify-form-fields)
+- [Add custom data to form fields](./custom-data)
+- [Form Constrain](./form-constrain)
+- [Form validation](./form-validation)
+- [Form fields API](./form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/import-export-form-fields/export-form-fields.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/import-export-form-fields/export-form-fields.md
new file mode 100644
index 0000000000..1ce1b366fc
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/import-export-form-fields/export-form-fields.md
@@ -0,0 +1,153 @@
+---
+layout: post
+title: Export form data in the ASP.NET Core PDF Viewer component | Syncfusion
+description: Learn how to export PDF form field data (FDF, XFDF, JSON, and as an object) using the Syncfusion ASP.NET Core PDF Viewer component.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Export PDF Form Data from ASP.NET Core PDF Viewer
+
+The PDF Viewer allows you to export form field data in multiple formats for easy storage or integration. Supported formats:
+
+- [FDF](#export-as-fdf)
+- [XFDF](#export-as-xfdf)
+- [JSON](#export-as-json)
+- [JavaScript Object](#export-as-object) (for custom persistence)
+
+## Available methods
+
+- [exportFormFields](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#exportformfields)(destination?, format) — Exports data to a file in the specified format.
+- [exportFormFieldsAsObject](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#exportformfieldsasobject)(format) — Exports data as a JavaScript object for custom handling.
+- [importFormFields](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#importformfields)(sourceOrObject, format) — Import data back into the PDF.
+
+## How to export
+
+Use [exportFormFields()](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#exportformfields) with an optional destination path and the format type.
+
+### Export as FDF
+The following example exports form field data as FDF.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+### Export as XFDF
+The following example exports form field data as XFDF.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+### Export as JSON
+The following example exports form field data as JSON.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+### Export as Object
+
+Use [exportFormFieldsAsObject()](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#exportformfieldsasobject) to obtain form data as a JavaScript object for database or API integration.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Common Use Cases
+
+- Save user-entered data to your server without altering the original PDF.
+- Export as JSON for REST API integration.
+- Export as FDF/XFDF for compatibility with other PDF tools.
+- Export as Object to merge with app state or store securely.
+- Automate exports after [validation](../form-validation) using [validateFormFields()](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#validateformfields)
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/asp-core-pdf-viewer-examples)
+
+## See also
+
+- [Form Designer overview](../overview)
+- [Form Designer Toolbar](../../toolbar-customization/form-designer-toolbar)
+- [Import form fields](./import-form-fields)
+- [Import Export Events](./import-export-events)
+- [Create form fields](../overview-create-forms)
+- [Group form fields](../group-form-fields)
+- [Form validation](../form-validation)
+- [Add custom data to form fields](../custom-data)
+- [Form fields API](../form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/import-export-form-fields/import-export-events.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/import-export-form-fields/import-export-events.md
new file mode 100644
index 0000000000..d807c6e18b
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/import-export-form-fields/import-export-events.md
@@ -0,0 +1,107 @@
+---
+layout: post
+title: Import/Export events in the ASP.NET Core PDF Viewer | Syncfusion
+description: Learn how to handle Import/Export events for PDF form fields in the Syncfusion ASP.NET Core PDF Viewer component.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# PDF Form Import and Export Events in ASP.NET Core
+
+Import/Export events let you **track and customize the entire life cycle** of form data being imported into or exported from the PDF Viewer.
+Use these events to:
+- Validate inputs before processing.
+- Show progress indicators.
+- Log audit trails.
+- Block operations based on business rules.
+
+Each event provides detailed context through typed event arguments such as [ImportStartEventArgs](https://ej2.syncfusion.com/documentation/api/pdfviewer/importstarteventargs), [ImportSuccessEventArgs](https://ej2.syncfusion.com/documentation/api/pdfviewer/importsuccesseventargs), [ImportFailureEventArgs](https://ej2.syncfusion.com/documentation/api/pdfviewer/importfailureeventargs), [ExportStartEventArgs](https://ej2.syncfusion.com/documentation/api/pdfviewer/exportstarteventargs), [ExportSuccessEventArgs](https://ej2.syncfusion.com/documentation/api/pdfviewer/exportsuccesseventargs), and [ExportFailureEventArgs](https://ej2.syncfusion.com/documentation/api/pdfviewer/exportfailureeventargs).
+
+## Import Events
+- [importStart](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ImportStart) — Fires when an import begins.
+- [importSuccess](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ImportSuccess) — Fires when form fields are successfully imported.
+- [importFailed](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ImportFailed) — Fires if the import fails.
+
+**Example: Handle Import Events**
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Export Events
+- [exportStart](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ExportStart) — Fires when an export begins.
+- [exportSuccess](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ExportSuccess) — Fires when form fields are successfully exported.
+- [exportFailed](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ExportFailed) — Fires if the export fails.
+
+**Example: Handle Export Events**
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Key Notes
+- importStart, importSuccess, importFailed cover the full import life cycle.
+- exportStart, exportSuccess, exportFailed cover the full export life cycle.
+
+## See also
+
+- [Form Designer overview](../overview)
+- [Form Designer Toolbar](../../toolbar-customization/form-designer-toolbar)
+- [Create form fields](../overview-create-forms)
+- [Group form fields](../group-form-fields)
+- [Form validation](../form-validation)
+- [Add custom data to form fields](../custom-data)
+- [Import form fields](./import-form-fields)
+- [Export form fields](./export-form-fields)
+- [Form validation](../form-validation)
+- [Form fields API](../form-fields-api)
+- [Form fields API](../form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/import-export-form-fields/import-form-fields.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/import-export-form-fields/import-form-fields.md
new file mode 100644
index 0000000000..accab91343
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/import-export-form-fields/import-form-fields.md
@@ -0,0 +1,110 @@
+---
+layout: post
+title: Import form data in the ASP.NET Core PDF Viewer component | Syncfusion
+description: Learn how to import PDF form field data (FDF, XFDF, JSON, and from an object) using the Syncfusion ASP.NET Core PDF Viewer component.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Import PDF Form Data into ASP.NET Core PDF Viewer
+
+The **PDF Viewer** lets you import values into interactive form fields in the currently loaded PDF. You can import data from these formats:
+
+- [FDF](#import-as-fdf)
+- [XFDF](#import-xfdf)
+- [JSON](#import-json)
+
+## API to use
+- [importFormFields](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#importformfields)(sourceOrObject, format)
+
+N>If you’re using a **server-backed viewer**, set serviceUrl before importing.
+
+### Import FDF
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Common Use Cases
+
+- Pre-fill application forms from a database using JSON.
+- Migrate data from other PDF tools using FDF/XFDF.
+- Restore user progress saved locally or on the server.
+- Combine with validation to block print/download until required fields are completed.
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/asp-core-pdf-viewer-examples)
+
+## See also
+
+- [Form Designer overview](../overview)
+- [Form Designer Toolbar](../../toolbar-customization/form-designer-toolbar)
+- [Export form fields](./export-form-fields)
+- [Import Export Events](./import-export-events)
+- [Create Edit form fields](../overview-create-forms)
+- [Group form fields](../group-form-fields)
+- [Form validation](../form-validation)
+- [Add custom data to form fields](../custom-data)
+- [Form fields API](../form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/manage-form-fields/create-form-fields.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/manage-form-fields/create-form-fields.md
new file mode 100644
index 0000000000..b4e67123be
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/manage-form-fields/create-form-fields.md
@@ -0,0 +1,392 @@
+---
+layout: post
+title: Create form fields in the ASP.NET Core PDF Viewer | Syncfusion
+description: Learn how to add each PDF form field using the PDF Viewer UI and how to create them programmatically in the Syncfusion ASP.NET Core PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Create PDF Form Fields in ASP.NET Core PDF Viewer
+
+You can create or add new form fields either visually using the [Form Designer UI](https://document.syncfusion.com/demos/pdf-viewer/asp-net-core/pdfviewer/formdesigner#/tailwind3) or dynamically using APIs.
+
+## Create Form Fields Using the Form Designer UI
+Use this approach when you want to design forms manually without writing code.
+
+**Steps:**
+
+1. Enable [Form Designer](../form-designer) mode in the PDF Viewer.
+2. Click a form field type (Textbox, Checkbox, Dropdown, etc.) from the toolbar.
+3. Click on the PDF page to place the form field.
+4. Move or resize the field as required.
+5. Configure field properties using the **Properties** panel.
+
+
+
+## Add Form Fields Programmatically (API)
+
+Use this approach when you want to generate form fields dynamically based on data or application logic.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+**Use programmatic creation when:**
+
+- Building dynamic forms
+- Pre-filling forms from databases
+- Automating form creation workflows
+
+## PDF Form Field Types and How to Add Them
+Each field can be added via the **Form Designer** or **programmatically**.
+
+### Textbox
+
+**Add via Toolbar (UI)**
+- Open **Form Designer** → select **Textbox** → click on the page → configure in **Properties**.
+
+
+**Add Programmatically (API)**
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+### Signature Field
+**Add via Toolbar (UI)**
+- Select **Signature Field** → place where signing is required → configure indicator text, thickness, tooltip, required.
+
+
+**Add Programmatically (API)**
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+### Initial Field
+**Add via Toolbar (UI)**
+- Select **Initial Field** → place where initials are needed → configure text and required state.
+
+
+**Add Programmatically (API)**
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Add Fields Dynamically with setFormFieldMode
+
+Use **setFormFieldMode()** to add fields on the fly based on user actions.
+
+### Edit Form Fields in ASP.NET Core PDF Viewer
+You can edit form fields using the UI or API.
+
+#### Edit Using the UI
+- Right click a field → **Properties** to update settings. (Image here)
+- Drag to move; use handles to resize.
+- Use the toolbar to toggle field mode or add new fields.
+
+#### Edit Programmatically
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/asp-core-pdf-viewer-examples)
+
+## See Also
+
+- [Form Designer overview](../overview)
+- [Form Designer Toolbar](../../toolbar-customization/form-designer-toolbar)
+- [Modify form fields](./modify-form-fields)
+- [Style form fields](./style-form-fields)
+- [Remove form fields](./remove-form-fields)
+- [Group form fields](../group-form-fields)
+- [Form validation](../form-validation)
+- [Form Fields API](../form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/manage-form-fields/customize-form-fields.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/manage-form-fields/customize-form-fields.md
new file mode 100644
index 0000000000..432a9a12f9
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/manage-form-fields/customize-form-fields.md
@@ -0,0 +1,112 @@
+---
+layout: post
+title: Customize form fields in the ASP.NET Core PDF Viewer | Syncfusion
+description: Learn how to customize PDF form fields using the UI and programmatically with APIs in the Syncfusion ASP.NET Core PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Customize the appearance of PDF Form Fields in ASP.NET Core PDF Viewer
+
+**Styling** customizes appearance only (font, color, alignment, border, background, indicator text).
+
+## Customize Appearance of Form Fields Using the UI
+Use the **Properties** panel to adjust:
+- Font family/size, text color, alignment
+- Border color/thickness
+- Background color
+
+
+## Customize appearance Form Fields Programmatically
+Use [updateFormField()](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#updateformfields) to apply styles.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Set Default Styles for New Form Fields
+Define defaults so fields added from the toolbar inherit styles.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/asp-core-pdf-viewer-examples)
+
+## See also
+
+- [Form Designer overview](../overview)
+- [Form Designer Toolbar](../../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./create-form-fields)
+- [Modify form fields](./modify-form-fields)
+- [Remove form fields](./remove-form-fields)
+- [Group form fields](../group-form-fields)
+- [Form validation](../form-validation)
+- [Add custom data to form fields](../custom-data)
+- [Form fields API](../form-fields-api)
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/manage-form-fields/modify-form-fields.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/manage-form-fields/modify-form-fields.md
new file mode 100644
index 0000000000..71e59298a6
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/manage-form-fields/modify-form-fields.md
@@ -0,0 +1,361 @@
+---
+layout: post
+title: Modify form fields in the ASP.NET Core PDF Viewer | Syncfusion
+description: Learn how to modify PDF form fields using the UI and programmatically with APIs in the Syncfusion ASP.NET Core PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Modify PDF Form Field Properties in ASP.NET Core PDF Viewer
+You can modify form fields using the **UI** or **API**.
+
+## Modify PDF Form Field Properties using the UI
+- Right click a field → **Properties** to update settings.
+
+- Drag to move; use handles to resize.
+- Use the toolbar to toggle field mode or add new fields.
+
+## Modify PDF Form Field Properties programmatically
+Use [updateFormField()](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#updateformfields) to change behavior/data (including position and size).
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Modify PDF Form Field Properties by Field type
+
+### Textbox
+- UI: Update value, font, size, colors, border thickness, alignment, max length, multiline.
+
+- API: [updateFormField()](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#updateformfields) for value, typography, alignment, colors, borders.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+### RadioButton
+• UI: Set selected item in a group (same Name).
+
+• API: [updateFormField()](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#updateformfields) to set selected value and border appearance.
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/asp-core-pdf-viewer-examples)
+
+## See also
+
+- [Form Designer overview](../overview)
+- [Form Designer Toolbar](../../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./create-form-fields)
+- [Remove form Fields](./remove-form-fields)
+- [Style form fields](./customize-form-fields)
+- [Group form fields](../group-form-fields)
+- [Form validation](../form-validation)
+- [Form fields API](../form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/manage-form-fields/move-resize-form-fields.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/manage-form-fields/move-resize-form-fields.md
new file mode 100644
index 0000000000..2e0906e5b9
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/manage-form-fields/move-resize-form-fields.md
@@ -0,0 +1,56 @@
+---
+layout: post
+title: Move and Resize form fields in the Core PDF Viewer | Syncfusion
+description: Learn how to move and resize PDF form fields using the UI and programmatically with APIs in the Syncfusion ASP.NET Core PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Move and Resize PDF Form Fields in ASP.NET Core PDF Viewer
+- **Move**: Drag the form field to reposition it.
+- **Resize**: Use the resize handles to change width and height.
+
+
+
+## Move and Resize Fields Programmatically (API)
+You can set absolute bounds or move fields by a delta.
+
+**Set absolute bounds**
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## See also
+
+- [Form Designer overview](../overview)
+- [Form Designer Toolbar](../../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./create-form-fields)
+- [Remove form Fields](./remove-form-fields)
+- [Customize form fields](./customize-form-fields)
+- [Group form fields](../group-form-fields)
+- [Form validation](../form-validation)
+- [Form fields API](../form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/manage-form-fields/remove-form-fields.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/manage-form-fields/remove-form-fields.md
new file mode 100644
index 0000000000..24aeb50229
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/manage-form-fields/remove-form-fields.md
@@ -0,0 +1,63 @@
+---
+layout: post
+title: Remove form fields in the Core PDF Viewer component | Syncfusion
+description: Learn how to remove PDF form fields using the UI and programmatically in the Syncfusion ASP.NET Core PDF Viewer component.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Remove PDF Form Fields in ASP.NET Core PDF Viewer
+
+## Remove Form Fields Using the UI
+**Steps:**
+1. Enable **Form Designer mode**.
+2. Select the form field.
+3. Click **Delete** in the toolbar or press the **Delete** key.
+
+
+## Remove Form Fields Programmatically
+Use **deleteFormField()** with a field reference or ID.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/asp-core-pdf-viewer-examples)
+
+## See also
+
+- [Form Designer overview](../overview)
+- [Form Designer Toolbar](../../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./create-form-fields)
+- [Modify form fields](./modify-form-fields)
+- [Customize form fields](./customize-form-fields)
+- [Group form fields](../group-form-fields)
+- [Form validation](../form-validation)
+- [Add custom data to form fields](../custom-data)
+- [Form fields API](../form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/overview-create-forms.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/overview-create-forms.md
new file mode 100644
index 0000000000..aa9424099c
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/overview-create-forms.md
@@ -0,0 +1,20 @@
+---
+layout: post
+title: Overview of Create form fields in ASP.NET Core PDF Viewer | Syncfusion
+description: Learn how to create edit each form field using the PDF Viewer UI and how to create them programmatically in the Syncfusion ASP.NET Core PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+
+# Create, Edit, Style, and Remove Form Fields in ASP.NET Core PDF Viewer
+
+The [ASP.NET Core PDF Viewer](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/asp-net-core/overview) enables creating interactive PDF form fields, updating their behavior and appearance, and removing them as needed. Form field operations can be performed using the [Form Designer UI](https://document.syncfusion.com/demos/pdf-viewer/asp-net-core/pdfviewer/formdesigner#/tailwind3) or [ASP.NET Core APIs](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html).
+
+This section explains how to:
+
+- [Create PDF form fields](./manage-form-fields/create-form-fields)
+- [Edit form field behavior and values](./manage-form-fields/modify-form-fields)
+- [Style form field appearance](./manage-form-fields/customize-form-fields)
+- [Remove form fields from PDF documents](./manage-form-fields/remove-form-fields)
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/overview.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/overview.md
new file mode 100644
index 0000000000..f3bea62aeb
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/forms/overview.md
@@ -0,0 +1,72 @@
+---
+layout: post
+title: Overview of Forms in ASP.NET Core PDF Viewer | Syncfusion
+description: Learn what the Form Designer in Syncfusion Core PDF Viewer offers, supported field types, and how the topics are organized.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Overview of Forms in ASP.NET Core PDF Viewer
+
+The Syncfusion PDF Viewer provides a complete, easy-to-use PDF forms experience. Form fields can be read, filled, added, edited, and deleted directly within PDF documents through the intuitive UI and powerful programmatic APIs. The viewer includes smooth import and export support for form data, enabling effortless integration. Developers gain extensive API control while end users enjoy a clean interface for seamless form-filling.
+
+## Filling PDF Forms
+
+PDF forms can be filled effortlessly through a clean, intuitive UI or automated workflows via powerful APIs. Flexible form data import and export support ensures smooth operations.
+
+See the [Filling PDF Forms](./form-filling) page for full details.
+
+Use the following code-snippet to enable form-filling by using the ASP.NET Core `ejs-pdfviewer` markup.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+
+
+1. [Programmatically Form fill](./form-filling#fill-pdf-forms-programmatically)
+2. [Form Fill Using UI](./form-filling#fill-pdf-forms-through-the-user-interface)
+3. [Import the Form data](./form-filling#fill-pdf-forms-through-import-data)
+
+## Form Designer
+
+A built-in Form Designer enables quick addition, editing, moving, and deletion of form fields. PDF forms can be designed interactively using built-in tools or customized form designer solutions.
+
+See the [Form Designer](./form-designer) page for full details.
+
+Use the following Code-snippet to enable Form Designer using the ASP.NET Core `ejs-pdfviewer` markup.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+
+
+Interactive fields can be created and customized directly on the PDF page.
+- [Create](./manage-form-fields/create-form-fields), [edit](./manage-form-fields/modify-form-fields), or [remove](./manage-form-fields/remove-form-fields) forms
+- [Add signature fields](./manage-form-fields/create-form-fields#add-signature-field)
+- [Edit form fields](./manage-form-fields/modify-form-fields)
+- [Remove form fields](./manage-form-fields/remove-form-fields)
+- [Form field constraints](./form-constrain)
+
+## Supported form field types
+
+- [Textbox](../forms/manage-form-fields/create-form-fields#add-textbox)
+- [Password](../forms/manage-form-fields/create-form-fields#add-password)
+- [CheckBox](../forms/manage-form-fields/create-form-fields#add-checkbox)
+- [RadioButton](../forms/manage-form-fields/create-form-fields#add-radiobutton)
+- [ListBox](../forms/manage-form-fields/create-form-fields#add-listbox)
+- [DropDown](../forms/manage-form-fields/create-form-fields#add-dropdown)
+- [Signature field](../forms/manage-form-fields/create-form-fields#add-signature-field)
+- [Initial field](../forms/manage-form-fields/create-form-fields#add-initial-field)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/getting-started-with-server-backed.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/getting-started-with-server-backed.md
index f7c8bbd8d7..96753bbbeb 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/getting-started-with-server-backed.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/getting-started-with-server-backed.md
@@ -1,43 +1,54 @@
---
layout: post
-title: Getting Started with EJ2 ASP.NET Core PDF Viewer Control | Syncfusion
-description: Learn how to getting started with PDF Viewer control in ASP.NET Core application. You can view and comment on PDFs in ease and also can fill forms.
+title: Getting Started with Server-Backed EJ2 ASP.NET Core PDF Viewer | Syncfusion
+description: Learn how to integrate the server-backed PDF Viewer control in an ASP.NET Core application. View, annotate, and fill PDF forms with server-side rendering and processing.
platform: document-processing
control: PDF Viewer
documentation: ug
---
-# Getting Started with ASP.NET Core PDF Viewer control
+# Getting Started with Server-Backed ASP.NET Core PDF Viewer
-The [ASP.NET Core PDF Viewer](https://www.syncfusion.com/pdf-viewer-sdk) control is used for viewing and printing PDF files in web applications. It provides a rich viewing experience with core interactions such as zooming, scrolling, text search, text selection, and text copying. Built-in thumbnail, bookmark, hyperlink, and table of contents support enables easy navigation within and across PDF files.
-
-This section briefly explains how to integrate the ASP.NET Core PDF Viewer control into an ASP.NET Core application using Visual Studio.
+The [ASP.NET Core PDF Viewer](https://www.syncfusion.com/pdf-viewer-sdk) control is a server-backed solution for viewing, printing, and interacting with PDF files in web applications. Unlike the standalone PDF Viewer that performs client-side rendering, the server-backed variant processes and renders PDFs on the server, providing enhanced performance and security for enterprise applications. The control delivers a rich viewing experience with core interactions such as zooming, scrolling, text search, text selection, and text copying. Built-in support for thumbnails, bookmarks, hyperlinks, and tables of contents enables seamless navigation within and across PDF documents. Users can also annotate documents and fill form fields directly within the viewer.
## Prerequisites
-[System requirements for ASP.NET Core controls](https://help.syncfusion.com/document-processing/system-requirements)
+Before starting the setup, ensure the following requirements are met:
-For production apps, ensure that a valid Syncfusion license key is registered in the application as described in the [ASP.NET Core licensing](https://ej2.syncfusion.com/aspnetcore/documentation/licensing/overview) documentation.
+- **System Requirements**: Review the [system requirements for ASP.NET Core controls](https://help.syncfusion.com/document-processing/system-requirements)
+- **License**: For production applications, a valid Syncfusion license key must be registered as described in the [ASP.NET Core licensing documentation](https://ej2.syncfusion.com/aspnetcore/documentation/licensing/overview)
## Integrate PDF Viewer into an ASP.NET Core application
+### Step 1: Create a new ASP.NET Core project
+
1. Start Visual Studio and select **Create a new project**.
2. In the **Create a new project** dialog, select **ASP.NET Core Web App**.
-
+
3. In the **Configure your new project** dialog, enter the project name and select **Next**.
-
-4. In the **Additional information** dialog, select **.NET 6.0 (Long-term Support)** or a later LTS version (such as .NET 8), and then select **Create**.
-
+
+4. In the **Additional information** dialog, select **.NET 6.0 (Long-term Support)** or a later LTS version (such as .NET 8.0), and then select **Create**.
+
## ASP.NET Core PDF Viewer NuGet package installation
-To add the ASP.NET Core PDF Viewer control, the following NuGet package needs to be installed in the ASP.NET Core application:
+### Step 2: Install required NuGet packages
+
+To add Syncfusion ASP.NET Core controls to the application, use the NuGet package manager. Open the Package Manager Console or use the NuGet Package Manager UI in Visual Studio and install the [Syncfusion.EJ2.AspNet.Core](https://www.nuget.org/packages/Syncfusion.EJ2.AspNet.Core/) package.
+
+{% tabs %}
+{% highlight C# tabtitle="Package Manager" %}
+
+Install-Package Syncfusion.EJ2.AspNet.Core -Version {{ site.releaseversion }}
-* Use [Syncfusion.EJ2.AspNet.Core](https://www.nuget.org/packages/Syncfusion.EJ2.AspNet.Core/)
+{% endhighlight %}
+{% endtabs %}
## Add Syncfusion® ASP.NET Core Tag Helper
-Open `~/Pages/_ViewImports.cshtml` and import the `Syncfusion.EJ2` Tag Helper.
+### Step 3: Import the Tag Helper
+
+Open `~/Pages/_ViewImports.cshtml` and add the Syncfusion EJ2 Tag Helper import. This makes all Syncfusion tag helpers available throughout the application.
{% tabs %}
{% highlight c# tabtitle="~/_ViewImports.cshtml" %}
@@ -49,7 +60,9 @@ Open `~/Pages/_ViewImports.cshtml` and import the `Syncfusion.EJ2` Tag Helper.
## Add style sheet
-Reference the theme using the CDN inside the `` of `~/Pages/Shared/_Layout.cshtml`:
+### Step 4: Add component styles
+
+Reference the Syncfusion theme using the CDN inside the `` of `~/Pages/Shared/_Layout.cshtml`. This stylesheet provides styling for all Syncfusion components including the PDF Viewer.
{% tabs %}
{% highlight c# tabtitle="~/_Layout.cshtml" %}
@@ -67,7 +80,9 @@ N> See the [Themes topic](https://ej2.syncfusion.com/aspnetcore/documentation/ap
## Add script reference
-Add the required scripts using the CDN inside the `` of `~/Pages/Shared/_Layout.cshtml`:
+### Step 5: Add component scripts
+
+Add the Syncfusion JavaScript library using the CDN inside the `` of `~/Pages/Shared/_Layout.cshtml`. This script provides the core functionality for all Syncfusion components.
{% tabs %}
{% highlight c# tabtitle="~/_Layout.cshtml" %}
@@ -83,7 +98,9 @@ Add the required scripts using the CDN inside the `` of `~/Pages/Shared/_L
## Register Syncfusion® Script Manager
-Open `~/Pages/Shared/_Layout.cshtml` and register the script manager in the ASP.NET Core application:
+### Step 6: Register the script manager
+
+Open `~/Pages/Shared/_Layout.cshtml` and register the script manager at the end of the `` tag. The script manager initializes Syncfusion components and manages their lifecycle.
{% tabs %}
{% highlight c# tabtitle="~/_Layout.cshtml" %}
@@ -102,7 +119,9 @@ N> Add the script manager `` at the end of the ``.
## Add ASP.NET Core PDF Viewer control
-Add the Syncfusion® ASP.NET Core PDF Viewer tag helper in `~/Pages/Index.cshtml`. A PDF file can be loaded in the PDF Viewer by setting the document name to the `documentPath` property, as shown below.
+### Step 7: Add the PDF Viewer component
+
+Add the Syncfusion® ASP.NET Core PDF Viewer tag helper in `~/Pages/Index.cshtml`. The `serviceUrl` property is essential for server-backed mode, as it specifies the server endpoint that handles all PDF processing operations.
{% tabs %}
{% highlight c# tabtitle="~/Index.cshtml" %}
@@ -121,7 +140,9 @@ Add the Syncfusion® ASP.NET Core PDF Viewer
{% endhighlight %}
{% endtabs %}
-Add the below code in the Index.cshtml.cs which is placed inside the Pages folder.
+### Step 8: Implement server-side handlers
+
+Add the following code to `Index.cshtml.cs` in the `Pages` folder. The `IndexModel` class contains handler methods that process all PDF operations on the server, such as loading documents, rendering pages, handling annotations, and managing downloads.
{% tabs %}
{% highlight c# tabtitle="Index.cshtml.cs" %}
@@ -394,28 +415,37 @@ namespace PDFViewerSample.Pages
{% endhighlight %}
{% endtabs %}
-In the preceding code:
+### Code explanation
-- The **ejs-pdfviewer** tag helper renders the PDF Viewer control with the id `pdfviewer`.
-- The **serviceUrl** property specifies the endpoint used by the viewer to communicate with the server. In this Razor Pages sample, it targets the `Index` page handlers (`OnPost...` methods) in `IndexModel`.
-- The **documentPath** property specifies the PDF file to load in the viewer.
+The implementation includes the following key components:
-Press Ctrl+F5 (Windows) or ⌘+F5 (macOS) to run the app. The Syncfusion® ASP.NET Core PDF Viewer control renders in the default web browser.
+- The **ejs-pdfviewer** tag helper renders the PDF Viewer control with the id `pdfviewer`
+- The **serviceUrl** property specifies the server endpoint (`/Index`) that processes all PDF operations
+- The **documentPath** property defines the PDF document to load (can be a URL or local file path)
-
+### Step 9: Run the application
-N> The `serviceUrl` can be changed dynamically. After updating the value at runtime, invoke `pdfViewer.dataBind()` to apply the change, and then load the document. Ensure that this approach is used with version 23.1.36 or later.
- function load() {
- var pdfViewer = document.getElementById('pdfviewer').ej2_instances[0];
- pdfViewer.serviceUrl = "/Index";
- pdfViewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
- pdfViewer.dataBind();
- pdfViewer.load(pdfViewer.documentPath, null);
- }
+Press Ctrl+F5 (Windows) or ⌘+F5 (macOS) to run the application. The Syncfusion® ASP.NET Core PDF Viewer will render in the default web browser with the server-backed rendering engine.
+
+
+
+The `serviceUrl` can be updated dynamically at runtime. After updating the value, invoke `pdfViewer.dataBind()` to apply the change and then load the document. This feature is supported in version 23.1.36 or later.
+
+```javascript
+function load() {
+ var pdfViewer = document.getElementById('pdfviewer').ej2_instances[0];
+ pdfViewer.serviceUrl = "/Index";
+ pdfViewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+ pdfViewer.dataBind();
+ pdfViewer.load(pdfViewer.documentPath, null);
+}
+```
-N> [View sample in GitHub](https://github.com/SyncfusionExamples/ASP-NET-Core-Getting-Started-Examples/tree/main/PDFViewer/ASP.NET%20Core%20Tag%20Helper%20Examples).
+N> A complete working sample is available on GitHub. [View the ASP.NET Core PDF Viewer sample](https://github.com/SyncfusionExamples/ASP-NET-Core-Getting-Started-Examples/tree/main/PDFViewer/ASP.NET%20Core%20Tag%20Helper%20Examples).
-N> When configuring the server-backed PDF Viewer, there is no need to include the `pdfium.js` and `pdfium.wasm` files. Unlike the standalone PDF Viewer, which performs client-side rendering, the server-backed PDF Viewer processes and renders PDFs on the server. As a result, omit any copy commands for these files during deployment.
+Unlike the standalone PDF Viewer which performs client-side rendering, the server-backed PDF Viewer processes and renders PDFs entirely on the server. As a result, the following files are **not required** and should be omitted during deployment:
+- `pdfium.js`
+- `pdfium.wasm`
N> For hosting the web service on Linux, include [SkiaSharp.NativeAssets.Linux](https://nuget.org/packages/SkiaSharp.NativeAssets.Linux/3.116.1). For AWS environments, use the following packages:
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/getting-started.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/getting-started.md
index f4b64ee784..02f1474f40 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/getting-started.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/getting-started.md
@@ -1,41 +1,54 @@
---
layout: post
-title: Getting started with the ASP.NET Core PDF Viewer | Syncfusion
-description: Learn how to get started with the ASP.NET Core PDF Viewer control. View, print, search, select text, annotate, and fill forms in PDF files.
+title: Getting Started with Standalone ASP.NET Core PDF Viewer | Syncfusion
+description: Learn how to integrate the standalone ASP.NET Core PDF Viewer control in your web application. View, print, search, annotate, and fill PDF forms with client-side rendering.
platform: document-processing
control: PDF Viewer
documentation: ug
---
-# Getting started with the ASP.NET Core standalone PDF Viewer control
+# Getting Started with Standalone ASP.NET Core PDF Viewer
-The [ASP.NET Core PDF Viewer](https://www.syncfusion.com/pdf-viewer-sdk) control enables viewing and printing PDF files in web applications. It provides a rich reading experience with zooming, scrolling, text search, text selection, and text copy. Thumbnails, bookmarks, hyperlinks, and a table of contents simplify navigation within and across PDF documents.
-
-This guide explains how to integrate the ASP.NET Core PDF Viewer control into an ASP.NET Core application using Visual Studio.
+The [ASP.NET Core PDF Viewer](https://www.syncfusion.com/pdf-viewer-sdk) control is a standalone solution for viewing, printing, and interacting with PDF files in web applications. Client-side rendering eliminates server processing overhead, enabling responsive performance for most use cases. The control provides a comprehensive reading experience with zooming, scrolling, text search, text selection, and text copying. Built-in support for thumbnails, bookmarks, hyperlinks, and tables of contents ensures seamless navigation within and across PDF documents. Users can also annotate documents and fill form fields directly within the viewer.
## Prerequisites
-[System requirements for ASP.NET Core controls](https://help.syncfusion.com/document-processing/system-requirements)
+Before starting the setup, ensure the following requirements are met:
+
+- **System Requirements**: Review the [system requirements for ASP.NET Core controls](https://help.syncfusion.com/document-processing/system-requirements)
+- **License**: For production applications, a valid Syncfusion license key must be registered as described in the [ASP.NET Core licensing documentation](https://ej2.syncfusion.com/aspnetcore/documentation/licensing/overview)
## Integrate PDF Viewer into an ASP.NET Core application
+### Step 1: Create a new ASP.NET Core project
+
1. Start Visual Studio and select **Create a new project**.
2. In the **Create a new project** dialog, select **ASP.NET Core Web App**.
-
+
3. In the **Configure your new project** dialog, enter the project name and select **Next**.
-
+
4. In the **Additional information** dialog, select a .NET LTS version (for example, **.NET 6.0 (Long-term Support)**) and then select **Create**.
-
+
## ASP.NET Core PDF Viewer NuGet package installation
-To add the ASP.NET Core PDF Viewer control, install the following NuGet package in the ASP.NET Core application:
+### Step 2: Install required NuGet packages
+
+To add Syncfusion ASP.NET Core controls to the application, use the NuGet package manager. Open the Package Manager Console or use the NuGet Package Manager UI in Visual Studio and install the [Syncfusion.EJ2.AspNet.Core](https://www.nuget.org/packages/Syncfusion.EJ2.AspNet.Core/) package.
+
+{% tabs %}
+{% highlight C# tabtitle="Package Manager" %}
-* [Syncfusion.EJ2.AspNet.Core](https://www.nuget.org/packages/Syncfusion.EJ2.AspNet.Core/)
+Install-Package Syncfusion.EJ2.AspNet.Core -Version {{ site.releaseversion }}
+
+{% endhighlight %}
+{% endtabs %}
## Add Syncfusion® ASP.NET Core Tag Helper
-Open `~/Pages/_ViewImports.cshtml` and import the `Syncfusion.EJ2` Tag Helper.
+### Step 3: Import the Tag Helper
+
+Open `~/Pages/_ViewImports.cshtml` and add the Syncfusion EJ2 Tag Helper import. This makes all Syncfusion tag helpers available throughout the application.
{% tabs %}
{% highlight c# tabtitle="~/_ViewImports.cshtml" %}
@@ -47,7 +60,9 @@ Open `~/Pages/_ViewImports.cshtml` and import the `Syncfusion.EJ2` Tag Helper.
## Add style sheet
-Reference a theme using the CDN inside the `` of `~/Pages/Shared/_Layout.cshtml` as shown:
+### Step 4: Add component styles (using CDN)
+
+Reference the Syncfusion theme using the CDN inside the `` of `~/Pages/Shared/_Layout.cshtml`. This stylesheet provides styling for all Syncfusion components including the PDF Viewer.
{% tabs %}
{% highlight c# tabtitle="~/_Layout.cshtml" %}
@@ -65,7 +80,9 @@ N> Check out the [Themes topic](https://ej2.syncfusion.com/aspnetcore/documentat
## Add script reference
-Add the required scripts using the CDN inside the `` of `~/Pages/Shared/_Layout.cshtml` as follows:
+### Step 5: Add component scripts
+
+Add the Syncfusion JavaScript library using the CDN inside the `` of `~/Pages/Shared/_Layout.cshtml`. This script provides the client-side functionality for all Syncfusion components.
{% tabs %}
{% highlight c# tabtitle="~/_Layout.cshtml" %}
@@ -79,15 +96,17 @@ Add the required scripts using the CDN inside the `` of `~/Pages/Shared/_L
{% endhighlight %}
{% endtabs %}
-### Steps to load PDF Viewer with local script and style
+## Using local resources
+
+### Step 5b: Add local scripts and styles (alternative to CDN)
-To use local resources with the PDF Viewer, follow these steps:
+For offline deployment or when CDN access is restricted, you can use local resources. To load the PDF Viewer with local resources, follow these steps:
**Step 1:** Place the `ej2.min.js` script and the required theme CSS files in the `wwwroot` folder of the ASP.NET Core application.
-**Step 2:** Reference the local script and style files in the `` of `_Layout.cshtml`, replacing CDN links with local paths.
+**Step 2:** Reference the local script and style files in the `` of `_Layout.cshtml`, replacing CDN links with local file paths.
-By following these steps, the PDF Viewer will load the required script and style locally. See the code snippet below for reference.
+By following these steps, the PDF Viewer will load the required resources locally. See the code snippet below for reference.
{% tabs %}
{% highlight c# tabtitle="~/_Layout.cshtml" %}
@@ -105,7 +124,9 @@ By following these steps, the PDF Viewer will load the required script and style
## Register Syncfusion® Script Manager
-Open the `~/Pages/Shared/_Layout.cshtml` page and register the script manager in the ASP.NET Core application as follows:
+### Step 6: Register the script manager
+
+Open the `~/Pages/Shared/_Layout.cshtml` page and register the script manager at the end of the `` tag. The script manager initializes Syncfusion components and manages their lifecycle.
{% tabs %}
{% highlight c# tabtitle="~/_Layout.cshtml" %}
@@ -124,7 +145,11 @@ N> Add the script manager `` at the end of the `` element.
## Add ASP.NET Core PDF Viewer control
-Add the Syncfusion® ASP.NET Core PDF Viewer Tag Helper in `~/Pages/Index.cshtml`. Load a PDF by assigning the file path or URL to the `documentPath` property.
+### Step 7: Add the PDF Viewer component
+
+Add the Syncfusion® ASP.NET Core PDF Viewer Tag Helper in `~/Pages/Index.cshtml`. The `documentPath` property specifies the PDF document to load.
+
+**Example: Using CDN resources with a remote PDF URL**
{% tabs %}
{% highlight c# tabtitle="~/Index.cshtml" %}
@@ -143,20 +168,27 @@ Add the Syncfusion® ASP.NET Core PDF Viewer
{% endhighlight %}
{% endtabs %}
-In the above code:
+**Code explanation:**
-- **ejs-pdfviewer** renders the PDF Viewer control with the id set to `pdfviewer`.
-- **documentPath** specifies the PDF to load and accepts either an absolute URL or a relative path available to the application.
+- **ejs-pdfviewer**: The tag helper that renders the PDF Viewer control with the id `pdfviewer`
+- **documentPath**: Specifies the PDF document to load. Accepts either:
+ - An absolute URL (HTTP/HTTPS) pointing to a remote PDF
+ - A relative path to a local PDF file in the `wwwroot` folder
-### How to configure PDF Viewer to use local resources
+### Configure PDF Viewer for local resources
To use the `resourceUrl` and `documentPath` locally with the PDF Viewer, follow these steps:
-**Step 1:** Ensure the application includes an `ej2-pdfviewer-lib` folder under `wwwroot` (or a publicly accessible static path). This folder must contain the `pdfium.js` and `pdfium.wasm` files, along with the PDF file to display. Keep these in the same static content area as `ej2.min.js` and related styles.
+**Step 1:** Ensure the application includes an `ej2-pdfviewer-lib` folder under `wwwroot` (or a publicly accessible static path). This folder must contain:
+- `pdfium.js` and `pdfium.wasm` files
+- The PDF file(s) to display
+- Keep these in the same static content area as `ej2.min.js` and related CSS files
-**Step 2:** Assign local paths to the `documentPath` and `resourceUrl` properties. Set `documentPath` to the PDF file and `resourceUrl` to the directory that contains the PDF Viewer’s supporting resources (`ej2-pdfviewer-lib`).
+**Step 2:** Assign local paths to the `documentPath` and `resourceUrl` properties:
+- `documentPath`: Path to the PDF file relative to the application root
+- `resourceUrl`: Path to the `ej2-pdfviewer-lib` directory containing rendering resources
-By following these steps, the PDF Viewer will load the required resources locally. See the code snippet below for reference.
+By following these steps, the standalone PDF Viewer will load all resources locally. See the code snippet below for reference.
{% tabs %}
{% highlight c# tabtitle="~/Index.cshtml" %}
@@ -178,13 +210,15 @@ By following these steps, the PDF Viewer will load the required resources locall
{% endhighlight %}
{% endtabs %}
-View the sample in GitHub to [load PDF Viewer with local resources](https://github.com/SyncfusionExamples/asp-core-pdf-viewer-examples/tree/master/How%20to/Refer%20resource%20url%20locally)
+For a complete example, [view the GitHub sample for loading PDF Viewer with local resources](https://github.com/SyncfusionExamples/asp-core-pdf-viewer-examples/tree/master/How%20to/Refer%20resource%20url%20locally).
+
+### Step 8: Run the application
-Press Ctrl+F5 (Windows) or ⌘+F5 (macOS) to run the app. Then, the Syncfusion® ASP.NET Core PDF Viewer control will be rendered in the default web browser.
+Press Ctrl+F5 (Windows) or ⌘+F5 (macOS) to run the application. The Syncfusion® ASP.NET Core PDF Viewer will render in the default web browser with client-side rendering enabled.

-N> [View Sample in GitHub](https://github.com/SyncfusionExamples/ASP-NET-Core-Getting-Started-Examples/tree/main/PDFViewer/ASP.NET%20Core%20Tag%20Helper%20Examples%20-%20Standalone%20PDF%20Viewer).
+N> [View ASP.NET Core standalone PDF Viewer sample on GitHub](https://github.com/SyncfusionExamples/ASP-NET-Core-Getting-Started-Examples/tree/main/PDFViewer/ASP.NET%20Core%20Tag%20Helper%20Examples%20-%20Standalone%20PDF%20Viewer)
## See also
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/globalization.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/globalization.md
index f069dba436..a709685db8 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/globalization.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/globalization.md
@@ -1,18 +1,19 @@
---
layout: post
-title: Globalization in ASP.NET Core PDF Viewer | Syncfusion
-description: Learn about globalization in the Syncfusion ASP.NET Core PDF Viewer component, including localization strings and culture settings.
+title: Globalization and Localization in ASP.NET Core PDF Viewer | Syncfusion
+description: Learn how to implement globalization and localization in the ASP.NET Core PDF Viewer component, including localization strings and culture settings.
platform: document-processing
control: PDF Viewer
documentation: ug
---
+# Globalization and Localization in ASP.NET Core PDF Viewer
-# Globalization in ASP.NET Core PDF Viewer
+The PDF Viewer component supports globalization, enabling users in different regions to view the interface in their native languages. Localization is achieved through a collection of culture-specific strings that translate all UI text, labels, messages, and tooltips. The component defaults to English (en-US), but you can configure it to display in any supported language by setting the `locale` property.
-The text content in the PDF Viewer can be localized using a collection of culture-specific strings. By default, the PDF Viewer uses the en-US culture.
+## Default localization strings
-The following table lists the default text values used by the PDF Viewer in the en-US culture:
+The following table lists the default text values used by the PDF Viewer in the English (en-US) culture. These strings cover all UI elements including buttons, tooltips, dialogs, and messages:
|Keywords|Values|
|---|---|
@@ -266,7 +267,11 @@ The following table lists the default text values used by the PDF Viewer in the
|Exact Matches|EXACT MATCHES|
|Total Matches|TOTAL MATCHES|
-You can set the desired culture using the `locale` property of the PDF Viewer.
+## Setting the locale
+
+The `locale` property enables you to specify the language and culture for the PDF Viewer interface. By setting this property, all UI elements automatically display in the selected language, provided the localization strings are defined for that locale.
+
+**Example: Setting locale to Arabic (ar-AE)**
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -296,7 +301,15 @@ You can set the desired culture using the `locale` property of the PDF Viewer.
{% endhighlight %}
{% endtabs %}
-Map the text content for the selected locale using the following script at the sample level:
+## Custom localization
+
+### Defining custom locale strings
+
+To use a locale other than the default en-US, or to customize the localization strings, map the text content for the selected locale using the `ej.base.L10n.load()` method. This method registers the localized strings for your chosen locale, and the PDF Viewer will use them when displaying the interface.
+
+**Example: Custom Arabic (ar-AE) localization**
+
+Add the following script to register custom localization strings for the Arabic (UAE) locale:
```html
{% endhighlight %}
{% highlight cshtml tabtitle="Server-Backed" %}
-
+
+ serviceUrl="/Index">
@@ -55,13 +55,13 @@ The following steps outline how to capture the current page number.
function currentPage() {
var viewer = document.getElementById('pdfviewer').ej2_instances[0];
var pageNumber = viewer.currentPageNumber;
- alert("current page number is" + pageNumber);
+ alert('Current page number is ' + pageNumber);
}
{% endhighlight %}
{% endtabs %}
-The script retrieves the PDF Viewer instance from the page, reads the `currentPageNumber` property, and surfaces the value in an alert dialog when the button is clicked.
+The script retrieves the PDF Viewer instance and accesses the `currentPageNumber` property to display the current page in an alert dialog when the button is clicked.
-[View sample in GitHub](https://github.com/SyncfusionExamples/asp-core-pdf-viewer-examples/tree/master/How%20to/Capture%20the%20current%20page%20number)
+[View sample on GitHub](https://github.com/SyncfusionExamples/asp-core-pdf-viewer-examples/tree/master/How%20to/Capture%20the%20current%20page%20number)
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/configure-annotation-selector-setting.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/configure-annotation-selector-setting.md
index 9a4b3d65f2..2414eec8b0 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/configure-annotation-selector-setting.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/configure-annotation-selector-setting.md
@@ -7,17 +7,15 @@ control: PDF Viewer
documentation: ug
---
-# How to Configure Annotation Selector Settings in ASP.NET Core
+# Configure annotation selector settings in ASP.NET Core
-### Annotation Selector Settings
+The [**annotationSelectorSettings**](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.PdfViewer.PdfViewerAnnotationSelectorSettings.html) property provides granular control over the appearance and behavior of the annotation selector. Customize border colors, thickness, resizer styles, and cursor types to enhance the annotation editing experience.
-The [**annotationSelectorSettings**](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.PdfViewer.PdfViewerAnnotationSelectorSettings.html) property customizes the appearance and behavior of the annotation selector in the UI. These settings control border colors, sizes, and handle styles so users can differentiate selected annotations and adjust them precisely during review workflows.
+## Customize the annotation selector
-### How to Configure Annotation Selector Settings
+**Step 1:** Follow the [Getting Started guide](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/asp-net-core/getting-started) to create a basic PDF Viewer sample with the required EJ2 script and style assets.
-**Step 1:** Follow the steps provided in the [link](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/asp-net-core/getting-started) to create simple PDF Viewer sample and include the required EJ2 script and style assets in the layout or view.
-
-**Step 2:** Set Up PDF Viewer in Your View: Add the following code snippet to your view (e.g., Index.cshtml)
+**Step 2:** Define the PDF Viewer in the Razor view (e.g., `Index.cshtml`):
```
@{
@@ -30,12 +28,12 @@ The [**annotationSelectorSettings**](https://help.syncfusion.com/cr/aspnetcore-j
```
-**Step 3:** Add JavaScript for Annotation Selector Settings: Below the PDF Viewer in your view, include the following script to configure the annotationSelectorSettings. Ensure the script runs after the viewer instance is created, such as at the end of the Razor view or within a DOM-ready handler.
+**Step 3:** Include the following script to configure the `annotationSelectorSettings`. Ensure this runs after the PDF Viewer instance is initialized.
-```
-
```
-#### Key properties include:
-
-* **selectionBorderColor**: Sets the color for the border around selected annotations.
-
-* **resizerBorderColor**: Sets the color for the border of the resizer handles.
-
-* **resizerFillColor**: Defines the fill color for the resizer handles.
-
-* **resizerSize**: Determines the size of the resizer handles.
-
-* **selectionBorderThickness**: Specifies how thick the selection border should be.
-
-* **resizerShape**: Allows you to choose the shape of the resizer handles (e.g., Circle or Square).
-
-* **selectorLineDashArray**: Specifies the dash pattern for the selector line to enhance visual cues.
+## Property descriptions
-* **resizerLocation**: Determines where the resizer appear in relation to the annotation (e.g., Corners or Edges).
+The following properties customize the annotation selector's visual feedback:
-* **resizerCursorType**: Sets the cursor style when hovering over the resizer, improving user interaction.
+* **selectionBorderColor**: Defines the color of the selection boundary.
+* **resizerBorderColor**: Sets the border color for the resizer handles.
+* **resizerFillColor**: Specifies the fill color for the resizer handles.
+* **resizerSize**: Controls the diameter or width of the resizer handles.
+* **selectionBorderThickness**: Sets the thickness of the selection border in pixels.
+* **resizerShape**: Sets the handle shape (e.g., `Circle` or `Square`).
+* **selectorLineDashArray**: Defines a dash pattern for the selection border.
+* **resizerLocation**: Specifies handle positioning (e.g., `Corners` or `Edges`).
+* **resizerCursorType**: Defines the mouse cursor style when hovering over handles.
-[View sample in GitHub](https://github.com/SyncfusionExamples/asp-core-pdf-viewer-examples/tree/master/How%20to)
+[View sample on GitHub](https://github.com/SyncfusionExamples/asp-core-pdf-viewer-examples/tree/master/How%20to)
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/control-annotation-visibility.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/control-annotation-visibility.md
index 13733ba6fc..13b11dbe38 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/control-annotation-visibility.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/control-annotation-visibility.md
@@ -7,17 +7,15 @@ control: PDF Viewer
documentation: ug
---
-# Control annotation visibility in the ASP.NET Core PDF Viewer
+# Control annotation visibility in ASP.NET Core PDF Viewer
-A concise guide to controlling annotation visibility so that annotations remain visible in the Syncfusion PDF Viewer while being hidden in the downloaded PDF.
+Manage how annotations appear at different stages of the document workflow. This guide demonstrates how to keep annotations visible within the PDF Viewer while programmatically hiding them in the final downloaded PDF file.
-## Steps to control annotation visibility
+## Control annotation visibility on download
-**Step 1:** Follow the steps provided in the [Syncfusion ASP.NET Core PDF Viewer getting started guide](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/asp-net-core/getting-started) to create a simple PDF Viewer sample.
+**Step 1:** Follow the [Syncfusion ASP.NET Core PDF Viewer getting started guide](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/asp-net-core/getting-started) to set up a basic PDF Viewer sample.
-**Step 2:** Add buttons for annotation modification and downloading.
-
-Define the viewer markup and include a button that triggers the download workflow. The following Razor code also wires up helper functions that update annotation flags before saving the document.
+**Step 2:** Add a download button and configure the viewer markup. The following example includes logic to update annotation flags before the file is saved:
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -105,17 +103,10 @@ Define the viewer markup and include a button that triggers the download workflo
{% endhighlight %}
{% endtabs %}
-**Step 3:** Add annotations to the PDF document.
-
-The `documentLoaded` function in the script above programmatically inserts highlight, underline, and strikethrough annotations. Extend this logic to include any additional annotations you require.
-
-**Step 4:** Add event listeners for button clicks.
-
-The button defined in the markup triggers the `save` function, allowing you to adjust annotation visibility before downloading the PDF.
+**Step 3:** The `documentLoaded` event handler programmatically adds highlight, underline, and strikethrough annotations for demonstration.
-**Step 5:** Modify annotation flags.
+**Step 4:** When the **Download** button is clicked, the `save()` function is triggered.
-Inside the `save` function, the script iterates through each annotation and applies the `noView` flag so the annotations remain hidden in the downloaded file while still appearing in the viewer.
+**Step 5:** Within the `save()` function, the script iterates through document annotations and applies the `noView` flag. This ensures annotations are omitted from the downloaded PDF while remaining interactive in the viewer UI.
-Sample: How to control annotation visibility
-[View sample in GitHub](https://github.com/SyncfusionExamples/asp-core-pdf-viewer-examples/tree/master/How%20to)
+[View sample on GitHub](https://github.com/SyncfusionExamples/asp-core-pdf-viewer-examples/tree/master/How%20to)
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/convert-pdf-library-bounds-to-pdf-viewer-bounds.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/convert-pdf-library-bounds-to-pdf-viewer-bounds.md
index df7aba471e..466e4bd32d 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/convert-pdf-library-bounds-to-pdf-viewer-bounds.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/convert-pdf-library-bounds-to-pdf-viewer-bounds.md
@@ -9,21 +9,15 @@ documentation: ug
# Convert PDF Library bounds to PDF Viewer bounds in ASP.NET Core
-When exporting annotations from the PDF Library, convert the bounds values into the PDF Viewer format to ensure accurate placement.
+Coordinate systems vary between the PDF Library and the PDF Viewer. When importing or exporting annotations, converting these bounds ensures that elements are rendered in the correct position relative to the document page.
## Steps to convert bounds values
-**Step 1:** Initialize the PdfViewer instance.
+**Step 1:** Initialize the PDF Viewer instance and configure the required services.
-Create an instance of the PdfViewer and configure it with the required services.
+**Step 2:** Listen for the `exportSuccess` event to intercept the exported annotation data.
-**Step 2:** Handle export success.
-
-Convert the exported blob URL to an object and then extract and convert the annotation bounds.
-
-**Step 3:** Convert the Blob URL to an object.
-
-Fetch the blob data and convert it into a JSON object that can be processed for annotation bounds.
+**Step 3:** Convert the blob URL into a JSON object and calculate the new bounds using the page height and resolution scaling:
{% tabs %}
{% highlight cshtml tabtitle="Server-Backed" %}
@@ -108,8 +102,8 @@ Fetch the blob data and convert it into a JSON object that can be processed for
{% endhighlight %}
{% endtabs %}
-## Conclusion
+## Performance considerations
+
+These steps automatically transform PDF Library values into JSON-compatible PDF Viewer coordinates, maintaining layout integrity across different rendering environments. Ensure the `pageHeight` is retrieved dynamically for each page to account for varying document dimensions.
-These steps convert PDF Library bounds values into PDF Viewer bounds values when exporting annotations as JSON, maintaining accurate annotation placement.
-
-[View sample in GitHub](https://github.com/SyncfusionExamples/asp-core-pdf-viewer-examples/tree/master/How%20to)
+[View sample on GitHub](https://github.com/SyncfusionExamples/asp-core-pdf-viewer-examples/tree/master/How%20to)
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/custom-context-menu.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/custom-context-menu.md
index ae0fadae92..306fe38c0f 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/custom-context-menu.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/custom-context-menu.md
@@ -7,14 +7,15 @@ control: PDF Viewer
documentation: ug
---
-# Customize the context menu in the ASP.NET Core PDF Viewer
+# Customize the context menu in ASP.NET Core PDF Viewer
-PDF Viewer supports adding custom options to the context menu using the `addCustomMenu()` method. Define actions for custom items with the `customContextMenuSelect()` method.
+Extend the PDF Viewer's context menu with custom options using the `addCustomMenu()` method. Handle custom menu item clicks through the `customContextMenuSelect()` event to implement custom functionality.
-## Add a custom option
+## Add custom menu items
-The following example adds custom options to the context menu.
-```
+The following example demonstrates how to add custom options to the context menu:
+
+```javascript
```
-## Customize the default vs custom menu
+## Display custom or default menu items
-Toggle the display of the default context menu. When the `addCustomMenu` parameter is `true`, the default menu is hidden; when it is `false`, default menu items are displayed alongside custom items.
+Control whether to show only custom menu items or combine them with the default context menu:
-```
-
```
-### Show or hide custom items before opening
+## Show or hide menu items dynamically
-Use the `customContextMenuBeforeOpen()` method to hide or show custom options dynamically.
+Use the `customContextMenuBeforeOpen()` event to conditionally display or hide menu items based on the current context before the menu opens. This allows menu items to appear only when relevant.
-```
+```javascript
{% endhighlight %}
{% highlight cshtml tabtitle="Server-Backed" %}
@@ -40,7 +36,7 @@ Leverage the [`downloadStart`](https://help.syncfusion.com/cr/aspnetcore-js2/syn
@@ -48,9 +44,9 @@ Leverage the [`downloadStart`](https://help.syncfusion.com/cr/aspnetcore-js2/syn
{% endhighlight %}
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/enable-local-storage.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/enable-local-storage.md
index 702a150be8..740b419ace 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/enable-local-storage.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/enable-local-storage.md
@@ -7,13 +7,13 @@ control: PDF Viewer
documentation: ug
---
-# Manage local storage in the ASP.NET Core PDF Viewer
+# Enable local storage in ASP.NET Core PDF Viewer
-Use the `enableLocalStorage` property to control whether session-specific data is stored in session storage (default) or an internal in-memory collection.
+The PDF Viewer uses the **enableLocalStorage** property to determine how session-specific data is stored. By default, this property is set to `false`, and data is stored in the browser's session storage. When set to `true`, the data is maintained in an internal in-memory collection.
-## Use enableLocalStorage
+## Configure local storage
-Set `enableLocalStorage` to manage storage behavior. When `true`, data is kept in memory; otherwise, session storage is used.
+Set the **EnableLocalStorage** property to `true` in the Razor view to keep session data in memory:
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -37,8 +37,8 @@ Set `enableLocalStorage` to manage storage behavior. When `true`, data is kept i
## Considerations
-- Memory usage can increase when using in-memory storage with large documents or many interactive elements.
-- Dispose of the PDF Viewer instance when no longer needed to avoid memory leaks.
-- Default: `enableLocalStorage` is `false`, so session storage is used unless changed.
+* **Memory Usage**: Storing data in memory can increase the memory footprint of the application, especially when processing large documents or multiple interactive elements.
+* **Instance Disposal**: Ensure the PDF Viewer instance is properly disposed of when no longer needed to prevent memory leaks.
+* **Default Behavior**: If **enableLocalStorage** is omitted or set to `false`, the component automatically utilizes session storage.
[View sample in GitHub](https://github.com/SyncfusionExamples/asp-core-pdf-viewer-examples/tree/master/How%20to)
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/enable-resize.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/enable-resize.md
index 8051624eb6..4bf810b11d 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/enable-resize.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/enable-resize.md
@@ -3,15 +3,19 @@ layout: post
title: Enable resize in ASP.NET Core PDF Viewer control | Syncfusion
description: Learn here all about Enable resize in Syncfusion ASP.NET Core PDF Viewer control of Syncfusion Essential JS 2 and more.
platform: document-processing
-control: Enable resize
+control: PDF Viewer
documentation: ug
---
-# Enable resize in ASP.NET Core PDF Viewer control
+# Resize text markup annotations in ASP.NET Core PDF Viewer
-To enable the resizer for the text markup annotation in Syncfusion PDF viewer, you can use the [**enableTextMarkupResizer**](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_EnableTextMarkupResizer) property. Default value of the property is false.
+The PDF Viewer has the option to display resizers for text markup annotations using the **enableTextMarkupResizer** property. This feature allows users to adjust the dimensions of the markup after it has been added to the document.
-Here is an example of how you can enable the resizer for the text markup annotation:
+The default value for this property is `false`.
+
+## Enable text markup resizer
+
+Set the **EnableTextMarkupResizer** property to `true` in the Razor view to display resizer handles on text markup annotations:
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -21,7 +25,7 @@ Here is an example of how you can enable the resizer for the text markup annotat
style="height:600px"
documentPath="https://cdn.syncfusion.com/content/pdf/form-filling-document.pdf"
resourceUrl="https://cdn.syncfusion.com/ej2/31.1.17/dist/ej2-pdfviewer-lib"
- enableTextMarkupResizer=false>
+ enableTextMarkupResizer="true">
@@ -33,7 +37,7 @@ Here is an example of how you can enable the resizer for the text markup annotat
style="height:600px"
documentPath="https://cdn.syncfusion.com/content/pdf/form-filling-document.pdf"
serviceUrl="/api/PdfViewer"
- enableTextMarkupResizer=false>
+ enableTextMarkupResizer="true">
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/enable-text-selection.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/enable-text-selection.md
index b3c8e43fc1..7c14c0ceb5 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/enable-text-selection.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/enable-text-selection.md
@@ -7,13 +7,13 @@ control: PDF Viewer
documentation: ug
---
-# Enable or disable text selection in the ASP.NET Core PDF Viewer
+# Enable or disable text selection in ASP.NET Core PDF Viewer
-Use the `enableTextSelection` property to control whether users can select text in the displayed PDF. This setting can be configured at initialization and toggled at runtime.
+Control whether users can select and copy text from the PDF using the `enableTextSelection` property. Configure this setting when the viewer initializes or change it dynamically at runtime.
-## Configure on initialization
+## Configure text selection at initialization
-Set initial behavior when instantiating the PDF Viewer. Text selection is enabled by default, but you can disable it as shown below.
+Text selection is enabled by default. Disable it during viewer initialization if the use case requires a read-only viewing experience.
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -36,9 +36,9 @@ Set initial behavior when instantiating the PDF Viewer. Text selection is enable
{% endhighlight %}
{% endtabs %}
-## Toggle dynamically
+## Toggle text selection at runtime
-Change the behavior at runtime using buttons or other UI controls. The following example demonstrates how to toggle text selection with button clicks.
+Dynamically enable or disable text selection using buttons or other UI triggers. The following example shows how to toggle this behavior after the viewer is initialized.
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -61,7 +61,7 @@ Change the behavior at runtime using buttons or other UI controls. The following
@@ -40,13 +46,13 @@ The PDF Viewer library allows you to identify whether the added annotations in P
+ serviceUrl="/api/PdfViewer">
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/import-export-annotation.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/import-export-annotation.md
index f0b8fb9ca0..efd06c8dd1 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/import-export-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/import-export-annotation.md
@@ -9,13 +9,15 @@ documentation: ug
# Import and export annotations in ASP.NET Core PDF Viewer
-Import annotations from objects or streams instead of files. To import such objects, first export annotations as objects using the [**exportAnnotationsAsObject()**](https://ej2.syncfusion.com/documentation/api/pdfviewer#exportannotationsasobject) method. Only objects exported from the PDF Viewer can be imported.
+Save and restore PDF annotations by exporting them in various formats (JSON, XFDF, or object) and importing them back into the viewer. This enables scenarios such as saving user annotations to a database or transferring annotations between documents.
-Use the following steps to import and export annotations as objects, JSON, or XFDF.
+Use the [**exportAnnotationsAsObject()**](https://ej2.syncfusion.com/documentation/api/pdfviewer#exportannotationsasobject) method to export annotations as objects, which can then be imported back. Only annotation objects exported from the PDF Viewer are compatible with the import function.
-**Step 1:** Follow the steps in the [Syncfusion ASP.NET Core PDF Viewer getting started guide](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/asp-net-core/getting-started) to create a sample.
+Follow these steps to implement annotation import and export functionality:
-**Step 2:** Use the following code to perform import and export operations.
+**Step 1:** Follow the [Syncfusion ASP.NET Core PDF Viewer getting started guide](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/asp-net-core/getting-started) to create a basic PDF Viewer instance.
+
+**Step 2:** Use the following code snippets to implement annotation import and export functionality:
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -54,7 +56,7 @@ Use the following steps to import and export annotations as objects, JSON, or XF
function exportAnnotation() {
var viewer = document.getElementById('pdfviewer').ej2_instances[0];
viewer.exportAnnotationsAsObject().then(function (value) {
- exportObject = value
+ exportObject = value;
});
}
//Import annotation that are exported as object.
@@ -73,40 +75,39 @@ Use the following steps to import and export annotations as objects, JSON, or XF
ViewData["Title"] = "Home page";
}
-
-
-
-
+
+
+
+
-
-
```
-**Step 3:** Implement the `SaveDocument` action in `PDFViewerController.cs`. The controller uses `PdfRenderer.GetDocumentAsBase64` to retrieve the original file stream and writes it to disk.
+**Step 3:** Implement the `SaveDocument` action in the `PDFViewerController.cs`. Use `PdfRenderer.GetDocumentAsBase64` to retrieve the original file data and write it to the server's disk.
```cs
@@ -53,6 +52,6 @@ public ActionResult SaveDocument([FromBody] Dictionary jsonObjec
```
-Download the sample [how to save original document at the server side](https://www.syncfusion.com/downloads/support/directtrac/general/ze/EJ2PDF~11039397667)
+Download the sample: [How to save original document at the server side](https://www.syncfusion.com/downloads/support/directtrac/general/ze/EJ2PDF~11039397667)
-N> Ensure that the controller has permission to write to the target folder, validate user authorization before saving sensitive files, and update the output path and file name to match your deployment standards.
+N> Ensure the controller has the necessary write permissions for the target directory. It is also recommended to validate user authorization before saving files and to manage file naming conventions to prevent overwriting existing data.
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/select-multi-page-annotations.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/select-multi-page-annotations.md
index 7279039a1d..dc0af79e5c 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/select-multi-page-annotations.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/select-multi-page-annotations.md
@@ -3,15 +3,19 @@ layout: post
title: Select multi page annotations in ASP.NET Core PDF Viewer control | Syncfusion
description: Learn here all about Select multi page annotations in Syncfusion ASP.NET Core PDF Viewer control of Syncfusion Essential JS 2 and more.
platform: document-processing
-control: Select multi page annotations
+control: PDF Viewer
documentation: ug
---
-# Select multi page annotations in ASP.NET Core PDF Viewer control
+# Select multi-page annotations in ASP.NET Core PDF Viewer
-To select a multi-page TextMarkup annotation as a single annotation in a Syncfusion PDF viewer, you can use by enabling the [**enableMultiPageAnnotation**](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_EnableMultiPageAnnotation) property. By default it is `false`.
+The Syncfusion® ASP.NET Core PDF Viewer allows you to treat TextMarkup annotations that span multiple pages as a single, unified annotation entity. This feature simplifies the interaction, selection, and management of highlights or underlines that cross page boundaries.
-Here is an example of how you can use the [**enableMultiPageAnnotation**](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_EnableMultiPageAnnotation) property to select the multi page TextMarkup annotation as a single annotation, export and import multi page annotation:
+## Enable multi-page selection
+
+Set the [`enableMultiPageAnnotation`](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_EnableMultiPageAnnotation) property to `true` to activate this behavior. When enabled, selecting any part of the multi-page annotation highlights the entire sequence across all pages. You can also export and import these unified annotations as a single record.
+
+The following example demonstrates how to configure the `enableMultiPageAnnotation` property in both standalone and server-backed viewer setups.
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/show-bookmark.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/show-bookmark.md
index 9ff2f5958d..d50705b202 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/show-bookmark.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/show-bookmark.md
@@ -7,17 +7,17 @@ control: PDF Viewer
documentation: ug
---
-# Show bookmark
+# Display the bookmark pane in ASP.NET Core PDF Viewer
-The Syncfusion® ASP.NET Core PDF Viewer can display the bookmark pane automatically by setting the [`enableBookmark`](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/#enablebookmark) property to `true`. Use this option when documents rely on bookmark navigation for quick access to chapters or tagged sections.
+Enable automatic display of the bookmark navigation pane by setting the [`enableBookmark`](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer#enablebookmark) property to `true`. Use bookmarks to provide quick navigation for documents with chapters, sections, or hierarchical content organization.
-N> The default value of `enableBookmark` is `true`, so the bookmark pane remains available unless it is explicitly disabled.
+N> By default, `enableBookmark` is set to `true`, so the bookmark pane is visible unless explicitly disabled.
-Follow these steps to show the bookmark pane:
+Follow these steps to enable the bookmark pane:
-**Step 1:** Create a PDF Viewer sample by using the [ASP.NET Core getting started guide](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/asp-net-core/getting-started) so that the required scripts, styles, and controller endpoints are configured.
+**Step 1:** Follow the [ASP.NET Core PDF Viewer getting started guide](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/asp-net-core/getting-started) to set up the required scripts, styles, and controller endpoints.
-**Step 2:** Enable the bookmark pane in the Razor markup, as shown in the following samples.
+**Step 2:** Set `enableBookmark` to `true` in the Razor markup:
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -43,4 +43,4 @@ Follow these steps to show the bookmark pane:
{% endhighlight %}
{% endtabs %}
-[View sample in GitHub](https://github.com/SyncfusionExamples/asp-core-pdf-viewer-examples/tree/master/How%20to/Show%20Bookmark)
+[View sample on GitHub](https://github.com/SyncfusionExamples/asp-core-pdf-viewer-examples/tree/master/How%20to/Show%20Bookmark)
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/show-custom-stamp-item.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/show-custom-stamp-item.md
index 031a978f39..12cdceaa5c 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/show-custom-stamp-item.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/show-custom-stamp-item.md
@@ -9,13 +9,13 @@ documentation: ug
# Display custom items in the custom stamp dropdown
-The PDF Viewer supports custom stamp templates so that reviewers can reuse organization-specific seals or approval marks. Populate the custom stamp dropdown by configuring the [`PdfViewerCustomStampSettings`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.PdfViewer.PdfViewerCustomStampSettings.html) object when initializing the viewer.
+The Syncfusion® ASP.NET Core PDF Viewer supports custom stamp templates, allowing reviewers to use organization-specific seals or approval marks. Populate the custom stamp menu by configuring the [`PdfViewerCustomStampSettings`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.PdfViewer.PdfViewerCustomStampSettings.html) object during component initialization.
-Follow these steps to surface custom stamp items:
+Follow these steps to surface custom stamp items in the viewer:
-**Step 1:** Create an ASP.NET Core PDF Viewer sample by following the [getting started guide](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/asp-net-core/getting-started). The tutorial explains how to reference the required Syncfusion scripts, styles, and Razor Page model before adding custom stamps.
+**Step 1:** Create an ASP.NET Core PDF Viewer project by following the [getting started guide](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/asp-net-core/getting-started).
-**Step 2:** Define the custom stamp collection in the Razor Page and assign it to `PdfViewerCustomStampSettings`. The sample below demonstrates how to add base64 or hosted image sources to the dropdown. Replace the placeholder image strings with production-ready assets that your application can access securely.
+**Step 2:** Define the custom stamp collection in the Razor Page and assign it to the `PdfViewerCustomStampSettings` property. The example below demonstrates how to add stamps using base64 strings or hosted image URLs.
```cs
@page "{handler?}"
@@ -51,6 +51,6 @@ Follow these steps to surface custom stamp items:
```
-After configuring the custom stamp settings, the viewer automatically lists the provided stamp items in the custom stamp dropdown so users can insert them directly onto PDF pages.
+Once configured, the viewer automatically displays the specified items in the custom stamp dropdown menu, enabling users to place them directly onto the PDF document.
[View sample in GitHub](https://github.com/SyncfusionExamples/asp-core-pdf-viewer-examples/tree/master/How%20to)
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/show-hide-annotation.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/show-hide-annotation.md
index 706b5f17bd..d4086138c9 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/show-hide-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/show-hide-annotation.md
@@ -7,15 +7,15 @@ control: PDF Viewer
documentation: ug
---
-# Toggle annotation visibility
+# Show and hide annotations in ASP.NET Core PDF Viewer
-The Syncfusion® ASP.NET Core PDF Viewer lets developers temporarily hide annotations by exporting them, clearing them from the UI, and then importing them back on demand. This workflow is helpful when presenters need to focus on document content or compare marked-up and clean versions of the same file.
+Temporarily hide and restore annotations by exporting them to memory, removing them from the view, and then re-importing them on demand. This is useful for presentations or comparing annotated versus clean document versions.
-Follow these steps to add annotation toggle controls:
+Follow these steps to implement annotation visibility toggling:
-**Step 1:** Create a PDF Viewer sample by following the [ASP.NET Core getting started guide](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/asp-net-core/getting-started). Ensure the viewer scripts, styles, and Razor Page model are registered before wiring annotation logic.
+**Step 1:** Follow the [ASP.NET Core PDF Viewer getting started guide](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/asp-net-core/getting-started) to set up the viewer with required scripts, styles, and configuration.
-**Step 2:** Add buttons that export and delete annotations to hide them, and re-import the cached annotations to show them again. Place the markup and script within the Razor page so the code runs after the viewer is initialized.
+**Step 2:** Add buttons to export, clear, and re-import annotations. Place the markup and script in the Razor page to execute after the viewer initializes:
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -55,6 +55,8 @@ ViewData["Title"] = "Home page";
{% endhighlight %}
{% endtabs %}
-The `exportAnnotationsAsObject` method returns a promise whose resolved value stores the serialized annotations; persist this object securely if it contains sensitive content. The `resourceUrl` must reference a PDF Viewer build that matches your application version, and similar logic can be applied in server-backed samples by replacing the `resourceUrl` with `serviceUrl`.
+- The `exportAnnotationsAsObject()` method returns a promise containing serialized annotation data. Store this securely if it contains sensitive information.
+- The `resourceUrl` must match the application's PDF Viewer library version.
+- In server-backed scenarios, replace `resourceUrl` with `serviceUrl` pointing to the ASP.NET Core controller.
-[View sample in GitHub](https://github.com/SyncfusionExamples/asp-core-pdf-viewer-examples/tree/master/How%20to/ShowHideAnnotations)
+[View sample on GitHub](https://github.com/SyncfusionExamples/asp-core-pdf-viewer-examples/tree/master/How%20to/ShowHideAnnotations)
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/signatureselect-signatureunselect.md b/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/signatureselect-signatureunselect.md
index bf96d0beee..8e214dbf8d 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/signatureselect-signatureunselect.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-core/how-to/signatureselect-signatureunselect.md
@@ -7,24 +7,24 @@ control: PDF Viewer
documentation: ug
---
-# signatureSelect and signatureUnselect events
+# Handle signatureSelect and signatureUnselect events
-The Syncfusion® ASP.NET Core PDF Viewer raises the `signatureSelect` and `signatureUnselect` events whenever a handwritten signature annotation gains or loses focus. Use these callbacks to log reviewer actions, update guidance in the surrounding UI, or validate that a signer completes required steps before saving a document.
+The Syncfusion® ASP.NET Core PDF Viewer triggers the `signatureSelect` and `signatureUnselect` events when a handwritten signature annotation gains or loses focus. These events enable applications to log reviewer actions, update contextual UI elements, or validate signatures before finalizing the document.
**signatureSelect**
-This event fires when the user taps or clicks an existing handwritten signature or finishes drawing a new one. The event argument includes metadata such as the annotation ID, bounds, and page number so that applications can highlight related UI elements or load signer details.
+This event fires when a user selects an existing handwritten signature or completes a new signature drawing. The event arguments provide metadata such as the annotation ID, bounds, and page index, allowing the application to synchronize the signature state with other UI components.
**signatureUnselect**
-This event fires after the focus moves away from a signature or the user deselects it. Handle the callback to persist edits, disable context commands, or reset state that should only be active while a signature is selected.
+This event fires when focus moves away from a signature or the user deselects it. Use this callback to persist changes, disable signature-specific toolbar actions, or reset state that is only relevant while a signature is active.
-Follow these steps to wire the events in an ASP.NET Core application:
+Follow these steps to integrate signature event handling in an ASP.NET Core application:
-1. Create a PDF Viewer sample by following the [ASP.NET Core getting started guide](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/asp-net-core/getting-started). The guide explains how to register the viewer scripts, styles, and controller endpoints.
-2. Place the buttons and script inside the Razor page so the handlers attach after the viewer initializes. The console output appears in the browser developer tools and can be replaced with custom UI updates or service calls.
+1. Create a PDF Viewer project by following the [ASP.NET Core getting started guide](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/asp-net-core/getting-started).
+2. Define the event handlers and assign them to the `signatureSelect` and `signatureUnselect` properties of the PDF Viewer component.
-The following sample subscribes to both events in standalone and server-backed configurations.
+The following example demonstrates how to subscribe to these events in both standalone and server-backed configurations.
{% tabs %}
{% highlight cshtml tabtitle="Standalone" %}
@@ -41,6 +41,7 @@ The following sample subscribes to both events in standalone and server-backed c
signatureUnselect="signatureUnselect">
+
-```
-{% endhighlight %}
-{% highlight html tabtitle="Server-Backed" %}
-```html
-
-
-
-```
-{% endhighlight %}
-{% endtabs %}
-
-## Edit/Update form field programmatically
-
-Use the updateFormField method to modify a form field programmatically. Retrieve the target field from the formFieldCollections property (by object or ID) and pass it as the first parameter. Provide the properties to update as the second parameter. The following example updates the background color of a Textbox field.
-
-{% tabs %}
-{% highlight html tabtitle="Standalone" %}
-```html
-
-
-```
-{% endhighlight %}
-{% endtabs %}
-
-## Delete form field programmatically
-
-Use the deleteFormField method to remove a form field programmatically. Retrieve the target field from the formFieldCollections property (by object or ID) and pass it to deleteFormField. The following example deletes the first form field.
-
-{% tabs %}
-{% highlight html tabtitle="Standalone" %}
-```html
-
-
-```
-{% endhighlight %}
-{% endtabs %}
-
-## Save form fields
-
-Selecting the Download icon on the toolbar saves the form fields in the exported PDF without modifying the original document. See the following GIF for reference.
-
-
-
-You can invoke the download action using the following code snippet.
-
-{% tabs %}
-{% highlight html tabtitle="Standalone" %}
-```html
-
-
-
-```
-{% endhighlight %}
-{% endtabs %}
-
-## Print form fields
-
-Selecting the Print icon on the toolbar prints the PDF with the added form fields. This action does not modify the original document. See the following GIF for reference.
-
-
-
-You can invoke the print action using the following code snippet:
-
-{% tabs %}
-{% highlight html tabtitle="Standalone" %}
-
-```html
-
-
-
-
-```
-{% endhighlight %}
-{% endtabs %}
-
-## Open an existing PDF document
-
-Open a PDF that already contains form fields by clicking the Open icon on the toolbar. See the following GIF for reference.
-
-
-
-## Validate form fields
-
-Form fields are validated when `enableFormFieldsValidation` is set to true and the validateFormFields event is handled. The event triggers during download or print if required fields are not filled. The non-filled fields are available in the `nonFillableFields` property of the event arguments.
-
-Add the following code to validate form fields:
-
-{% tabs %}
-{% highlight html tabtitle="Standalone" %}
-```html
-
-
-
-```
-{% endhighlight %}
-{% endtabs %}
-
-## Export and import form fields
-
-The PDF Viewer component supports exporting and importing form field data using the `importFormFields`, `exportFormFields`, and `exportFormFieldsAsObject` methods in the following formats:
-
-- FDF
-- XFDF
-- JSON
-
-### Export and import as FDF
-
-Using the `exportFormFields` method, the form field data can be exported in the specified data format. This method accepts two parameters:
-
-- The first parameter is the destination path for the exported data. If the path is not specified, a location is requested during export.
-- The second parameter specifies the format type for the form data.
-
-The following code exports and imports form field data as FDF.
-
-{% tabs %}
-{% highlight html tabtitle="Standalone" %}
-```html
-
-
-
-
-
-
-
-
-```
-{% endhighlight %}
-{% endtabs %}
-
-### Export and import as XFDF
-
-The following code exports and imports form field data as XFDF.
-
-{% tabs %}
-{% highlight html tabtitle="Standalone" %}
-```html
-
-
-
-
-
-
-```
-{% endhighlight %}
-{% endtabs %}
-
-### Export and import as JSON
-
-The following code exports and imports form field data as JSON.
-
-{% tabs %}
-{% highlight html tabtitle="Standalone" %}
-```html
-
-
-
-
-
-
-
-```
-{% endhighlight %}
-{% endtabs %}
-
-### Export and import as Object
-
-The PDF Viewer component supports exporting the form field data as an object and importing that data back into the current PDF document.
-
-The following example shows how to export the form field data as an object and import the form field data from that object into the current PDF document via a button click.
-
-{% tabs %}
-{% highlight html tabtitle="Standalone" %}
-```html
-
-
-
-
-
-
-```
-{% endhighlight %}
-{% endtabs %}
-
-## Form field properties
-
-Form field properties allow customization and interaction with fields embedded in PDF documents. The following sections outline the supported field types and their configurable settings.
-
-- Textbox
-- Password
-- CheckBox
-- RadioButton
-- ListBox
-- DropDown
-- Signature field
-- Initial field
-
-### Signature and initial fields settings
-
-Use the `updateFormField` method to modify form fields programmatically.
-
-The following code example explains how to update the signature field properties on a button click.
-
-{% tabs %}
-{% highlight html tabtitle="Standalone" %}
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-The following code shows how to configure default properties for a signature field added from the Form Designer toolbar.
-
-```html
-
-```
-
-
-
-The following code shows how to configure default properties for an initial field added from the Form Designer toolbar.
-
-```html
-
-```
-
-
-
-### Textbox field settings
-
-Use the `updateFormField` method to modify form fields programmatically.
-
-The following example updates Textbox field properties on a button click.
-
-{% tabs %}
-{% highlight html tabtitle="Standalone" %}
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-The following code shows how to configure default properties for a Textbox field added from the Form Designer toolbar.
-
-```html
-
-```
-
-
-
-### Password field settings
-
-Use the `updateFormField` method to modify form fields programmatically.
-
-The following example updates Password field properties on a button click.
-
-{% tabs %}
-{% highlight html tabtitle="Standalone" %}
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-The following code shows how to configure default properties for a Password field added from the Form Designer toolbar.
-
-```html
-
-```
-
-
-
-### CheckBox field settings
-
-Use the `updateFormField` method to modify form fields programmatically.
-
-The following example updates CheckBox field properties on a button click.
-
-{% tabs %}
-{% highlight html tabtitle="Standalone" %}
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-The following code shows how to configure default properties for a CheckBox field added from the Form Designer toolbar.
-
-```html
-
-```
-
-
-
-### RadioButton field settings
-
-Use the `updateFormField` method to modify form fields programmatically.
-
-The following example updates RadioButton field properties on a button click.
-
-{% tabs %}
-{% highlight html tabtitle="Standalone" %}
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-The following code shows how to configure default properties for a RadioButton field added from the Form Designer toolbar.
-
-```html
-
-```
-
-
-
-### ListBox field settings
-
-Use the `updateFormField` method to modify form fields programmatically.
-
-The following example updates ListBox field properties on a button click.
-
-{% tabs %}
-{% highlight html tabtitle="Standalone" %}
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-The following code shows how to configure default properties for a ListBox field added from the Form Designer toolbar.
-
-```html
-
-```
-
-
-
-### DropDown field settings
-
-Use the `updateFormField` method to modify form fields programmatically.
-
-The following example updates DropDown field properties on a button click.
-
-{% tabs %}
-{% highlight html tabtitle="Standalone" %}
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-The following code shows how to configure default properties for a DropDown field added from the Form Designer toolbar.
-
-```html
-
-```
-
-
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/form-designer/create-with-user-interface-interaction.md b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/form-designer/create-with-user-interface-interaction.md
deleted file mode 100644
index 8050f97e61..0000000000
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/form-designer/create-with-user-interface-interaction.md
+++ /dev/null
@@ -1,125 +0,0 @@
----
-layout: post
-title: Design form fields in the ASP.NET MVC PDF Viewer | Syncfusion
-description: Learn how to add, drag, resize, edit, and manage form fields using the UI in the Syncfusion ASP.NET MVC PDF Viewer component.
-platform: document-processing
-control: PDF Viewer
-documentation: ug
----
-
-# Design form fields with UI interaction in ASP.NET MVC PDF Viewer
-
-The PDF Viewer component supports interactive form field design, including drawing, dragging, and resizing fields directly on the page. Click the Form Field icon on the toolbar to add a field and place it on the document. Supported form field types include:
-
-- Textbox
-- Password
-- CheckBox
-- RadioButton
-- ListBox
-- DropDown
-- SignatureField
-- InitialField
-
-## Enable or Disable form designer toolbar
-
-Inject the FormDesigner module and set enableFormDesignerToolbar to true to display the Form Designer icon on the toolbar. The default value is true. Use the following code to enable the toolbar option.
-
-{% tabs %}
-{% highlight html tabtitle="Standalone" %}
-```html
-
-
-
-```
-{% endhighlight %}
-{% endtabs %}
-
-## Add the form field dynamically
-
-Click the Form Field icon on the toolbar, then click on the PDF to draw a form field. See the following GIF for reference.
-
-
-
-## Drag the form field
-
-Drag the selected form field to reposition it within the PDF document. See the following GIF for reference.
-
-
-
-## Resize the form field
-
-Resize the selected form field using the resize handles on the field boundary. See the following GIF for reference.
-
-
-
-## Edit or Update the form field dynamically
-
-Edit form field properties using the Form Field Properties dialog. Open it by right-clicking a form field and selecting Properties from the context menu. The following images show examples of available settings.
-
-
-
-
-
-
-
-## Clipboard operation with form field
-
-The PDF Viewer supports clipboard operations such as cut, copy, and paste for form fields. Right-click a form field to open the context menu and choose the desired clipboard action. The following image shows the available options.
-
-
-
-## Undo and Redo
-
-Undo and redo actions are supported for runtime changes made to form fields. Use the following code to perform undo and redo operations.
-
-{% tabs %}
-{% highlight html tabtitle="Standalone" %}
-```html
-
-
-
-
-```
-{% endhighlight %}
-{% endtabs %}
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/form-designer/form-field-events.md b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/form-designer/form-field-events.md
deleted file mode 100644
index 6717f64486..0000000000
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/form-designer/form-field-events.md
+++ /dev/null
@@ -1,543 +0,0 @@
----
-layout: post
-title: Form field events in ASP.NET MVC PDF Viewer | Syncfusion
-description: Learn about form field events supported in the Syncfusion ASP.NET MVC PDF Viewer component and how to handle them.
-platform: document-processing
-control: PDF Viewer
-documentation: ug
----
-
-# Form field events in ASP.NET MVC PDF Viewer
-
-The PDF Viewer component provides support for various form field events. The following events are available:
-
-| Form field events | Description |
-|---|---|
-| formFieldAdd | Triggered when a form field is added. |
-| formFieldClick | Triggered when a form field is clicked. |
-| formFieldDoubleClick | Triggered when a form field is double-clicked. |
-| formFieldFocusOut | Triggered when focus moves out of a form field. |
-| formFieldMouseLeave | Triggered when the mouse cursor leaves a form field. |
-| formFieldMouseOver | Triggered when the mouse cursor is over a form field. |
-| formFieldMove | Triggered when a form field is moved. |
-| formFieldPropertiesChange | Triggered when a form field property changes. |
-| formFieldRemove | Triggered when a form field is removed. |
-| formFieldResize | Triggered when a form field is resized. |
-| formFieldSelect | Triggered when a form field is selected. |
-| formFieldUnselect | Triggered when a form field is unselected. |
-| validateFormFields | Triggered when validation fails. |
-
-## formFieldAdd event
-
-The [formFieldAdd](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_FormFieldAdd) event is triggered when a new form field is added, either programmatically or through user interaction. The event arguments provide details about the added form field.
-
-{% tabs %}
-{% highlight html tabtitle="Standalone" %}
-```html
-
-
-```
-{% endhighlight %}
-{% endtabs %}
-
-## formFieldMove event
-
-The [formFieldMove](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_FormFieldMove) event is triggered when the mouse moves inside a form field. The event arguments provide the necessary information about the form field mouse move event.
-
-{% tabs %}
-{% highlight html tabtitle="Standalone" %}
-```html
-
-
-```
-{% endhighlight %}
-{% endtabs %}
-
-## formFieldPropertiesChange event
-
-The [formFieldPropertiesChange](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_FormFieldPropertiesChange) event is triggered when the properties of a form field are changed. The event arguments provide the necessary information about which property of the form field has been changed.
-
-{% tabs %}
-{% highlight html tabtitle="Standalone" %}
-```html
-
-
-```
-{% endhighlight %}
-{% endtabs %}
-
-## formFieldRemove event
-
-The [formFieldRemove](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_FormFieldRemove) event is triggered when a form field is removed from the PDF. The event arguments provide details about the removed field.
-
-{% tabs %}
-{% highlight html tabtitle="Standalone" %}
-```html
-
-
-```
-{% endhighlight %}
-{% endtabs %}
-
-## formFieldResize event
-
-The [formFieldResize](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_FormFieldResize) event is triggered when a form field is resized. The event arguments include current and previous positions.
-
-{% tabs %}
-{% highlight html tabtitle="Standalone" %}
-```html
-
-
-```
-{% endhighlight %}
-{% endtabs %}
-
-## formFieldSelect event
-
-The [formFieldSelect](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_FormFieldSelect) events are triggered when a form field in a PDF is selected. These events provide the necessary details about the specific form field that has been selected.
-
-{% tabs %}
-{% highlight html tabtitle="Standalone" %}
-```html
-
-
-```
-{% endhighlight %}
-{% endtabs %}
-
-## formFieldUnselect event
-
-The [formFieldUnselect](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_FormFieldUnselect) events are triggered when a form field in a PDF is unselected. These events provide the necessary details about the specific form field that has been unselected.
-
-{% tabs %}
-{% highlight html tabtitle="Standalone" %}
-```html
-
-
-```
-{% endhighlight %}
-{% endtabs %}
-
-## validateFormFields event
-
-The [ValidateFormFields](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ValidateFormFields) events are triggered when a required form field is left unfilled before downloading the PDF. These events provide the necessary information for validating which form fields are incomplete.
-
-{% tabs %}
-{% highlight html tabtitle="Standalone" %}
-```html
-
-
-```
-{% endhighlight %}
-{% endtabs %}
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/form-filling.md b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/form-filling.md
deleted file mode 100644
index f76b29e4b8..0000000000
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/form-filling.md
+++ /dev/null
@@ -1,136 +0,0 @@
----
-layout: post
-title: Form filling in ASP.NET MVC PDF Viewer control | Syncfusion
-description: Learn how to view, fill, export, and import PDF form fields with ASP.NET MVC PDF Viewer control of Syncfusion Essential JS 2 and more details.
-platform: document-processing
-control: PDF Viewer
-documentation: ug
----
-
-# Form filling in ASP.NET MVC PDF Viewer Component
-
-The PDF Viewer component displays existing form fields in a PDF document and enables filling and downloading filled data.
-
-The form fields displayed in the PDF Viewer are:
-
-* TextBox
-* Password
-* CheckBox
-* RadioButton
-* ListBox
-* DropDown
-* SignatureField
-* InitialField
-
-
-
-## Disabling form fields
-
-The PDF Viewer control provides an option to disable interaction with form fields. Use the following configuration to disable form fields in the viewer.
-
-{% tabs %}
-{% highlight html tabtitle="Standalone" %}
-```html
-
-```
-{% endhighlight %}
-{% endtabs %}
-
-## How to draw handwritten signature in the signature field
-
-Add a handwritten signature to a Signature field by following these steps:
-
-* Click the signature field in the PDF document to open the signature panel.
-
-
-
-* Draw the signature in the signature panel.
-
-
-
-* Click the **CREATE** button. The drawn signature is added to the signature field.
-
-
-
-## Delete the signature inside the signature field
-
-Delete a signature placed in a signature field by using the Delete option in the annotation toolbar.
-
-
-
-## Export and import form fields
-
-The PDF Viewer control provides the support to export and import the form field data in the following formats using the `importFormFields`, `exportFormFields`, and `exportFormFieldsAsObject` methods.
-
-* FDF
-* XFDF
-* JSON
-
-## Importing form fields using PDF Viewer API
-
-You can import the form fields using JSON file or JSON object in code behind like the below code sample.
-
-```html
-
-
-
-```
-
-N>The JSON file for importing the form fields should be placed in the desired location and the path should be provided correctly.
-
-## Exporting form fields from the PDF document using PDF Viewer API
-
-You can export the form fields as JSON file in code behind as the following code sample.
-
-{% tabs %}
-{% highlight html tabtitle="Standalone" %}
-```html
-
-
-
-```
-{% endhighlight %}
-{% endtabs %}
-
-## See also
-
-* [Handwritten Signature in ASP.NET MVC PDF Viewer Component](./annotation/signature-annotation)
-* [Form Designer](./form-designer/form-field-events)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/custom-data.md b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/custom-data.md
new file mode 100644
index 0000000000..de75a7fcfc
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/custom-data.md
@@ -0,0 +1,177 @@
+---
+layout: post
+title: Add custom data to form fields in MVC PDF Viewer | Syncfusion
+description: Learn how to attach, update, and read custom data on PDF form fields using the Form Designer UI and APIs in the Syncfusion MVC PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Add Custom Data to PDF Form Fields in MVC PDF Viewer
+
+The **Syncfusion MVC PDF Viewer** allows you to attach **custom application-specific data** to form fields by using the customData property. This enables you to associate business identifiers, tags, validation hints, or workflow metadata with form fields.
+
+The custom data remains linked to the form field throughout the viewer session and can be accessed or updated whenever the field is queried or modified.
+
+This page explains how to:
+- [Add custom data when creating form fields](#add-custom-data-while-creating-pdf-form-fields)
+- [Define default custom data for fields created using the UI](#set-default-custom-data-for-pdf-form-fields-added-using-ui)
+- [Update or replace custom data for existing fields](#update-or-replace-pdf-form-field-custom-data)
+- [Read custom data from form fields](#read-custom-data-from-pdf-form-fields)
+- [Apply best practices when using custom data](#best-practices)
+
+**Key Points**
+- customData is a **free form object**; you control its structure.
+- Use only **serializable values** such as objects, arrays, strings, numbers, and booleans.
+- Custom data does not affect the field appearance or behavior unless consumed by your application logic.
+
+## Add Custom Data While Creating PDF Form Fields
+
+You can attach custom data at the time of field creation by passing a **customData** object in the settings parameter of **addFormField()**.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Set Default Custom Data for PDF Form Fields Added Using UI
+
+When users add form fields using the [Form Designer toolbar](../toolbar-customization/form-designer-toolbar), you can define default customData so that newly created fields automatically inherit it. Default custom data can be configured using per-field settings objects such as:
+
+- [textFieldSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_TextFieldSettings)
+- [passwordFieldSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_PasswordFieldSettings)
+- [checkBoxFieldSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_CheckBoxFieldSettings)
+- [radioButtonFieldSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_RadioButtonFieldSettings)
+- [listBoxFieldSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ListBoxFieldSettings)
+- [dropDownFieldSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_DropDownFieldSettings)
+- [signatureFieldSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_SignatureFieldSettings)
+- [initialFieldSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_InitialFieldSettings)
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Update or Replace PDF Form Field Custom Data
+
+You can modify the customData of an existing form field by using the [updateFormField()](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#updateFormField) method. The field can be identified using either its object reference or field ID.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+**Tip:**
+Merge new values with the existing customData object before calling [updateFormField()](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#updateFormField) to avoid overwriting previously stored data.
+
+## Read Custom Data from PDF Form Fields
+
+You can access the customData property from any form field at any point in your application flow, such as:
+- After the document is loaded
+- During save or submit operations
+- While performing validation or conditional routing
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Best Practices
+
+- Treat customData as application metadata, not display data.
+- Use it to drive business rules, validation logic, and workflow decisions.
+- Keep the data minimal and structured for easy processing.
+- When cloning or copying form fields, ensure customData is copied or updated as required.
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/mvc-pdf-viewer-examples)
+
+## See Also
+
+- [Form Designer overview](./overview)
+- [Form Designer Toolbar](../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./overview-create-forms)
+- [Group form fields](../group-form-fields)
+- [Form flags](./form-constrain)
+- [Form validation](./form-validation)
+- [Form fields API](./form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/form-constrain.md b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/form-constrain.md
new file mode 100644
index 0000000000..52ce373320
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/form-constrain.md
@@ -0,0 +1,289 @@
+---
+layout: post
+title: PDF form field flags in MVC PDF Viewer | Syncfusion
+description: Learn how to apply isReadOnly, isRequired, and isPrint flags to PDF form fields in the Syncfusion MVC PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# PDF form field flags in MVC PDF Viewer
+
+The Syncfusion **MVC PDF Viewer** allows you to control how users interact with form fields and how those fields behave during validation and printing by applying **form field flags**. These flags define whether a form field can be modified, whether it is mandatory, and whether it appears in printed output.
+
+This topic explains:
+- [Supported form field flags](#supported-pdf-form-field-flags)
+- [How each constraint affects field behavior](#key-actions)
+- [How to apply flags during field creation](#apply-pdf-form-field-flags-using-the-ui)
+- [How to update flags on existing fields](#update-flags-on-existing-fields-programmatically)
+- [How flags work with validation and printing](#control-print-behavior)
+
+## Supported PDF Form Field Flags
+
+The following flags are supported in the PDF Viewer:
+
+- [isReadOnly](#make-fields-read-only)
+ Prevents users from modifying the form field in the UI while still allowing updates through APIs.
+
+- [isRequired](#mark-fields-as-required)
+ Marks the form field as mandatory and includes it in form field validation.
+
+- [isPrint](#control-print-behavior)
+ Controls whether the form field appears when the document is printed.
+
+## Key Actions
+
+### Make Fields Read Only
+Use the **isReadOnly** property to prevent users from modifying a form field through the UI. This is useful for displaying pre-filled or calculated values that should not be changed by the user.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+### Mark Fields as Required
+Use the **isRequired** property to mark form fields as mandatory. To enforce this constraint, enable form field validation and validate fields before allowing actions such as printing or downloading.
+
+- Enable validation using [enableFormFieldsValidation](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#enableFormFieldsValidation)
+- [Validate fields](./form-validation) using [validateFormFields](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#validateFormFields)
+
+If required fields are empty, validation can prevent further actions.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+### Control Print Behavior
+Use the **isPrint** property to control whether a form field appears in the printed output of the PDF document.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+N> Printing can be triggered programmatically using **pdfviewer.print()**. Form fields with **isPrint: false** are excluded from the printed output.
+
+## Apply PDF Form Field Flags Using the UI
+
+**Steps**
+1. Enable **Form Designer** mode in the PDF Viewer.
+2. Select an existing form field on the PDF page.
+3. The **Right click To open context menu - > Properties** popover is displayed.
+4. Configure the required constraint options.
+5. Click “Ok” and Close the properties popover to apply the changes.
+
+Changes are reflected immediately in the viewer.
+
+[Applying form field flags using the UI](../../javascript-es6/images/formfields-flag.gif)
+
+## Apply PDF Form Field Flags Programmatically
+
+You can apply or modify form field flags in the following ways.
+
+### Apply flags When Creating Fields
+Pass the flags properties in the settings object when creating form fields using **addFormField()**.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+### Set Default Flags for New PDF Form Fields
+You can configure default flag values so that form fields added using the [Form Designer toolbar](../toolbar-customization/form-designer-toolbar) automatically inherit them. This helps ensure consistent behavior for all newly created fields.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## See Also
+
+- [Form Designer overview](./overview)
+- [Form Designer Toolbar](../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./manage-form-fields/create-form-fields)
+- [Modify form fields](./manage-form-fields/modify-form-fields)
+- [Group form fields](./group-form-fields)
+- [Add custom data to PDF form fields](./custom-data)
+- [Form Validation](./form-validation)
+- [Form fields API](./form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/form-designer.md b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/form-designer.md
new file mode 100644
index 0000000000..10b53c5533
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/form-designer.md
@@ -0,0 +1,215 @@
+---
+layout: post
+title: Form Designer and Toolbar Customization in MVC | Syncfusion
+description: Learn here all about form designer and toolbar in Syncfusion MVC PDF Viewer of Syncfusion Essential JS 2 and more.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Form Designer in MVC PDF Viewer
+
+When **Form Designer mode** is enabled in the Syncfusion MVC PDF Viewer, a default [Form Designer user interface (UI)](https://document.syncfusion.com/demos/pdf-viewer/asp-net-mvc/pdfviewer/default#/tailwind3) is displayed. This UI includes a built in toolbar for adding form fields such as text boxes, password fields, check boxes, radio buttons, drop down lists, list boxes, and signature and initial fields.
+
+Using the Form Designer UI, users can place form fields on the PDF, move and resize them, configure field and widget properties, preview the designed form, and remove fields when required. The Form Designer toolbar can also be shown or hidden and customized to control the available tools based on application requirements, enabling flexible and interactive form design directly within the viewer.
+
+## Key Features
+
+**Add Form Fields**
+You can add the following form fields to the PDF:
+
+- [Text box](../forms/manage-form-fields/create-form-fields#add-textbox)
+- [Password Field](../forms/manage-form-fields/create-form-fields#add-password)
+- [Check box](../forms/manage-form-fields/create-form-fields#add-checkbox)
+- [Radio button](../forms/manage-form-fields/create-form-fields#add-radiobutton)
+- [Dropdown List](../forms/manage-form-fields/create-form-fields#add-dropdown)
+- [List box](../forms/manage-form-fields/create-form-fields#add-listbox)
+- [Signature field](../forms/manage-form-fields/create-form-fields#add-signature-field)
+- [Initial field](../forms/manage-form-fields/create-form-fields#add-initial-field)
+
+**Edit Form Fields**
+You can move, resize, align, distribute, copy, paste, and undo or redo changes to form fields.
+
+**Set Field Properties**
+You can configure field properties such as name, value, font, color, border, alignment, visibility, tab order, and required or read only state.
+
+**Control Field Behavior**
+You can enable or disable read only mode, show or hide fields, and control whether fields appear when printing the document.
+
+**Manage Form Fields**
+You can select, group or ungroup, reorder, and delete form fields as needed.
+
+**Save and Print Forms**
+Designed form fields can be saved into the PDF document and printed with their appearances.
+
+## Enable Form Designer
+
+To enable form design features, use the MVC PDF Viewer helper to render the viewer and control the `enableFormDesigner` option. After rendering, set `enableFormDesigner` via the viewer instance or in the server-side helper.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Form Designer UI
+
+When Form Designer mode is enabled in the Syncfusion MVC PDF Viewer, a default [Form Designer user interface (UI)](https://document.syncfusion.com/demos/pdf-viewer/asp-net-mvc/pdfviewer/default#/tailwind3) is displayed. This UI provides a built in toolbar for adding common form fields such as text boxes, check boxes, radio buttons, drop down lists, and signature fields. Users can place fields on the PDF, select them, resize or move them, and configure their properties using the available editing options, enabling interactive form creation directly within the viewer.
+
+
+
+For more information about creating and editing form fields in the PDF Viewer, refer to the [Form Creation](./manage-form-fields/create-form-fields) in MVC PDF Viewer documentation.
+
+## Form Designer Toolbar
+
+The **Form Designer toolbar** appears at the top of the PDF Viewer and provides quick access to form field creation tools. It includes frequently used field types such as:
+
+- [Text box](../forms/manage-form-fields/create-form-fields#add-textbox)
+- [Password Field](../forms/manage-form-fields/create-form-fields#add-password)
+- [Check box](../forms/manage-form-fields/create-form-fields#add-checkbox)
+- [Radio button](../forms/manage-form-fields/create-form-fields#add-radiobutton)
+- [Dropdown List](../forms/manage-form-fields/create-form-fields#add-dropdown)
+- [List box](../forms/manage-form-fields/create-form-fields#add-listbox)
+- [Signature field](../forms/manage-form-fields/create-form-fields#add-signature-field)
+- [Initial field](../forms/manage-form-fields/create-form-fields#add-initial-field)
+
+Each toolbar item allows users to place the corresponding form field by selecting the tool and clicking on the desired location in the PDF document.
+
+
+
+Use the following example to render the MVC PDF Viewer and enable/disable the Form Designer option.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+For more information about creating and editing form fields in the PDF Viewer, refer to the [Form Creation in MVC PDF Viewer documentation](./manage-form-fields/create-form-fields).
+
+
+## Show or Hide the Built-in Form Designer Toolbar
+
+You can control the visibility of the Form Designer toolbar using the [isFormDesignerToolbarVisible](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_IsFormDesignerToolbarVisible) property on the viewer instance. This allows you to display or hide the Form Designer tools in the PDF Viewer based on your application requirements.
+
+**Use this method to:**
+- Show the Form Designer toolbar when form design is required
+- Hide the toolbar to provide cleaner viewing experience
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Customize the Built-in Form Designer Toolbar
+
+You can customize the Form Designer toolbar by specifying the tools to display and arranging them in the required order using the [FormDesignerToolbarItems](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_FormDesignerToolbarItems) property.
+
+This customization helps you limit the available tools and simplify the user interface.
+
+**Key Points**
+- Include only the toolbar items you need, in the exact order you specify.
+- Any toolbar items not listed remain hidden, resulting in a cleaner and more focused UI.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Move, Resize, and Edit Form Fields
+
+You can move, resize, and edit an existing form field directly in the PDF Viewer using the Form Designer.
+
+- Move a field by selecting it and dragging it to the required position.
+
+- Resize a field using the handles displayed on the field boundary.
+
+
+
+- Edit a field by selecting it to open the Form Field Properties popover. The popover allows you to modify the form field and widget annotation properties. Changes are reflected immediately in the viewer and are saved when the properties popover is closed.
+For more information, see Editing Form Fields
+
+## Deleting Form Fields
+
+You can remove a form field from the PDF document by selecting the field and using one of the following methods:
+- Click the `Delete option` in the Form Designer UI.
+- Press the `Delete key` on the keyboard after selecting the form field.
+
+The selected form field and its associated widget annotation are permanently removed from the page.
+For more information, see [Deleting Form Fields](./manage-form-fields/remove-form-fields)
+
+## See Also
+
+- [Filling PDF Forms](./form-filling)
+- [Create](./manage-form-fields/create-form-fields), [edit](./manage-form-fields/modify-form-fields), [style](./manage-form-fields/style-form-fields) and [remove](./manage-form-fields/remove-form-fields) form fields
+- [Grouping form fields](./group-form-fields)
+- [Form Constrains](./form-constrain)
+- [Form Validation](./form-validation)
+- [Custom Data](./custom-data)
+- [Import](./import-export-form-fields/import-form-fields)/[Export Form Data](./import-export-form-fields/export-form-fields)
+- [Form field events](./form-field-events)
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/form-field-events.md b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/form-field-events.md
new file mode 100644
index 0000000000..10a1b17109
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/form-field-events.md
@@ -0,0 +1,111 @@
+---
+layout: post
+title: Form Field Events in MVC PDF Viewer control | Syncfusion
+description: Learn here all about different form field events in Syncfusion ASP.NET MVC PDF Viewer component and more.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# PDF Viewer Form Field Events in MVC
+
+The Syncfusion **MVC PDF Viewer** provides a comprehensive set of **form field events** that allow developers to track user interactions, respond to form changes, and implement custom business logic. These events can be used for scenarios such as [validation](./form-validation), **UI updates**, **logging**, and **workflow automation**.
+
+Form field events are triggered during actions such as adding, selecting, modifying, moving, resizing, and removing form fields.
+
+## Supported PDF Form Field Events
+
+The following table lists all supported form field events and their descriptions:
+
+| Form Field events | Description |
+|---|---|
+| [formFieldAdd](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html) | Triggered when a new form field is added, either through the Form Designer UI or programmatically. |
+| [formFieldClick](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html) | Fired when a form field is clicked in the viewer. |
+| [formFieldDoubleClick](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html) | Fired when a form field is double clicked. |
+| [formFieldFocusOut](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html) | Triggered when a form field loses focus after editing. |
+| [formFieldMouseLeave](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html) | Fired when the mouse pointer leaves a form field. |
+| [formFieldMouseOver](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html) | Fired when the mouse pointer moves over a form field. |
+| [formFieldMove](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html) | Triggered when a form field is moved to a new position. |
+| [formFieldPropertiesChange](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html) | Fired when any form field property changes, such as font, color, or constraint values. |
+| [formFieldRemove](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html) | Triggered when a form field is deleted from the document. |
+| [formFieldResize](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html) | Fired when a form field is resized. |
+| [formFieldSelect](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html) | Fired when a form field is selected in the Form Designer. |
+| [formFieldUnselect](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html) | Fired when a previously selected form field is unselected. |
+| [validateFormFields](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html) | Fired when form field validation fails during print or download actions. |
+
+**Common Use Cases**
+
+Form field events can be used to:
+- Validate form data before printing or downloading
+- Track user interaction with form fields
+- Update UI elements dynamically
+- Log form changes for auditing
+- Trigger workflow actions based on field changes
+- Enforce business rules during form editing
+
+## Handle PDF Form Field Events
+
+You can wire up form field events on the PDF Viewer instance to execute custom logic when specific actions occur.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+**Event Behavior Notes**
+
+- Events triggered through the UI and programmatic APIs use the same event handlers.
+- Property related events are raised immediately when changes occur.
+- Validation events are triggered only during print or download operations.
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/mvc-pdf-viewer-examples)
+
+## See also
+
+- [Form Designer overview](./overview)
+- [Form Designer Toolbar](../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./manage-form-fields/create-form-fields)
+- [Edit form fields](./manage-form-fields/modify-form-fields)
+- [Group form fields](./group-form-fields)
+- [Add custom data to form fields](./custom-data)
+- [Form Field Flags](./form-constrain)
+- [Form validation](./form-validation)
+- [Form fields API](./form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/form-fields-api.md b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/form-fields-api.md
new file mode 100644
index 0000000000..f002a1c9bc
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/form-fields-api.md
@@ -0,0 +1,447 @@
+---
+layout: post
+title: Form Fields API in MVC PDF Viewer | Syncfusion
+description: Learn How to use Form Fields API to enable, update, retrieve and clear in the Syncfusion MVC PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Form Fields API in MVC PDF Viewer
+
+The PDF Viewer provides comprehensive APIs to create, edit, validate, navigate, and manage form fields programmatically. The following APIs are available:
+
+| API | Description |
+|---|---|
+| [updateFormFieldsValue](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_UpdateFormFieldsValue) | Updates the value for one or more form fields.|
+| [updateFormFields](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_UpdateFormFields) | Updates the properties of one or more form fields.|
+| [retrieveFormFields](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_RetrieveFormFields) | Retrieves all form fields or by specific criteria.|
+| [resetFormFields](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ResetFormFields) | Resets the specified or all form fields to their default values.|
+| [importFormFields](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ImportFormFields) | Imports values and states for form fields from a JSON object or file stream.|
+| [focusFormField](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_FocusFormField) | Sets focus to a form field by name or ID.|
+| [exportFormFieldsAsObject](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ExportFormFieldsAsObject) | Exports form fields as a JSON object.|
+| [exportFormFields](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ExportFormFields) | Exports form fields as a downloadable file.|
+| [clearFormFields](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ClearFormFields) | Clears values of specified or all form fields without removing them.|
+| [isFormFieldDocument](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_IsFormFieldDocument) | Indicates whether the loaded document contains form fields.|
+| [isFormDesignerToolbarVisible](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_IsFormDesignerToolbarVisible) | Gets whether the Form Designer toolbar is currently visible.|
+| [formFieldCollections](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_FormFieldCollections) | Gets the collection of current form fields with their properties.|
+| [enableFormFieldsValidation](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_EnableFormFieldsValidation) | Enables or disables form field validation.|
+| [enableFormFields](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_EnableFormFields) | Enables or disables interaction with form fields.|
+| [enableFormDesignerToolbar](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_EnableFormDesignerToolbar) | Shows or hides the Form Designer toolbar.|
+
+## updateFormFieldsValue
+
+Updates the value of one or more form fields programmatically.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## importFormFields
+
+Imports form field data from an object or file into the current document.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## isFormDesignerToolbarVisible
+
+Opens the form designer toolbar when the PDF document is loaded in the PDF Viewer control initially
+and get the form designer Toolbar Visible status.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## formFieldCollections
+
+Gets the current collection of form fields with their properties from the viewer instance.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## See also
+
+- [Form Designer overview](./overview)
+- [Form Designer Toolbar](../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./manage-form-fields/create-form-fields)
+- [Edit form fields](./manage-form-fields/modify-form-fields)
+- [Group form fields](./group-form-fields)
+- [Add custom data to form fields](./custom-data)
+- [Form Constrain](./form-constrain)
+- [Form fields Validation](./form-validation)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/form-filling.md b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/form-filling.md
new file mode 100644
index 0000000000..d4483c05b7
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/form-filling.md
@@ -0,0 +1,170 @@
+---
+layout: post
+title: Form filling in MVC PDF Viewer Control | Syncfusion
+description: Learn to view, fill, export, and import PDF form fields in Syncfusion MVC PDF Viewer, including disabling interaction and handling signatures.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Filling PDF Forms in MVC PDF Viewer
+
+The Syncfusion PDF Viewer supports three types of form-filling:
+
+1. [Filling Form Fields Programmatically](#fill-pdf-forms-programmatically)
+
+ You can fill or update PDF form fields programmatically using the [updateFormFieldsValue](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_UpdateFormFieldsValue) APIs. This approach is useful when form data needs to be set dynamically based on application logic.
+
+2. [Form Filling Through User Interface](#fill-pdf-forms-through-the-user-interface)
+
+ Users can fill in PDF form fields directly through the PDF Viewer user interface by typing text, selecting options, or interacting with supported form elements.
+
+3. [Importing Form Field Data](#fill-pdf-forms-through-import-data)
+
+ The PDF Viewer allows you to import form field data into an existing PDF document. This enables pre filled forms using external data sources.
+
+## Fill PDF forms programmatically
+
+You can update the values of PDF form fields programmatically using the [updateFormFieldsValue](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_UpdateFormFieldsValue) API. This method allows you to set or modify form field values dynamically based on application logic, without user interaction.
+
+The following example demonstrates how to update PDF form field values programmatically:
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Fill PDF forms through the User Interface
+
+The Syncfusion PDF Viewer allows users to fill PDF form fields directly through the user interface without using code. Users can click on form fields and enter or select values based on the field type.
+
+
+
+The PDF Viewer supports common form fields such as text boxes, check boxes, radio buttons, drop-down lists, list boxes, and signature fields. Filled values can be edited at any time, and the entered data is retained during the viewing session.
+
+## Fill PDF forms through Import Data
+
+The PDF Viewer allows you to import form field data into an existing PDF document using the [importFormFields](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ImportFormFields) API. This feature enables you to pre-fill form fields using data from an external source without requiring manual user input.
+
+Imported form field data is automatically mapped to the corresponding form fields in the PDF document based on the field names. Once the data is imported, the populated values are displayed in the PDF Viewer and can be edited through the user interface if required.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+For more details, see [Import Form Data](./import-export-form-fields/import-form-fields).
+
+## How to get the filled data and store it to a backing system
+
+You can export the filled form field data from the PDF Viewer and store it in a backing system such as a database or file storage. The exported data can later be imported to restore the form state.
+
+For more details, see [Export Form Data](./import-export-form-fields/export-form-fields).
+
+## How to Validate Form Fields using `validateFormFields` Event
+
+The [validateFormFields](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ValidateFormFields) event in the Syncfusion PDF Viewer is triggered when a user tries to download or submit a form while validation is enabled. You can use the [retrieveFormFields()](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_RetrieveFormFields) API to get all the form fields and check them one by one to see if any form fields values are empty.
+
+This validation applies to all form field types in the PDF Viewer. A textbox is empty if no text is entered, a list box or dropdown is empty if no item is selected, a signature or initial field is empty if the user has not signed, and radio buttons or checkboxes are empty if none are chosen.
+By enabling [enableFormFieldsValidation](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_EnableFormFieldsValidation) and wiring the event, you can go through each field and stop the action if required fields are not filled.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## See also
+
+- [Form Designer overview](./overview)
+- [Form Designer Toolbar](../toolbar-customization/form-designer-toolbar)
+- [Create](./manage-form-fields/create-form-fields), [edit](./manage-form-fields/modify-form-fields), [style](./manage-form-fields/customize-form-fields) and [remove](./manage-form-fields/remove-form-fields) form fields
+- [Edit form fields](./manage-form-fields/edit-form-fields)
+- [Group form fields](./group-form-fields)
+- [Add custom data to form fields](./custom-data)
+- [Form Constrain](./form-constrain)
+- [Form validation](./form-validation)
+- [Form fields API](./form-fields-api)
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/form-validation.md b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/form-validation.md
new file mode 100644
index 0000000000..8a01367bbb
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/form-validation.md
@@ -0,0 +1,146 @@
+---
+layout: post
+title: Form validation in the MVC PDF Viewer component | Syncfusion
+description: Learn how to enable built in form field validation and validate missing required fields in the Syncfusion MVC PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Validate PDF Form Fields in MVC PDF Viewer
+
+The Syncfusion **MVC PDF Viewer** provides built in support for **validating form fields** before users perform actions such as **printing**, **downloading**, or **submitting** a PDF document. Validation ensures that all required form fields are filled before allowing these actions to complete.
+This feature helps enforce data completeness and improves the reliability of collected form data.
+
+## How PDF Form Validation Works
+
+Form field validation follows this flow:
+- Enable validation using the [enableFormFieldsValidation](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_EnableFormFieldsValidation) property.
+- Handle the [validateFormFields](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ValidateFormFields) event to determine which required fields are not filled.
+- When validation is enabled and a user attempts to print, download, or submit the document:
+ - The [validateFormFields](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ValidateFormFields) event is triggered.
+ - Unfilled required fields are listed in args.nonFillableFields.
+ - You can cancel the action, show an error message, or move focus to an invalid field.
+
+## Enable PDF Form Field Validation
+
+To enable validation, set the [enableFormFieldsValidation](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_EnableFormFieldsValidation) property to true and wire the validateFormFields event.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Mark Fields as Required
+
+Only fields marked as **required** participate in validation. Use the **isRequired** property when creating or updating a form field.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Handle PDF Form Validation Results
+
+In the [validateFormFields](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ValidateFormFields) event, you can control the behavior when fields are missing. Typical actions include:
+- Cancel the print or download operation
+- Display an error message to the user
+- Set focus to the first unfilled required field
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Tips
+
+- Use isRequired to clearly mark mandatory fields.
+- Validation is triggered only during [print](../print), [download](../download), or **submit** actions.
+- For custom validation logic (such as validating an email format):
+ - Retrieve all form fields using [retrieveFormFields()](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_RetrieveFormFields).
+ - Apply custom checks before allowing the action to proceed.
+
+## See Also
+
+- [Form Designer overview](./overview)
+- [Form Designer Toolbar](../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./manage-form-fields/create-form-fields)
+- [Modify form fields](./manage-form-fields/modify-form-fields)
+- [Group form fields](./group-form-fields)
+- [Add custom data to PDF form fields](./custom-data)
+- [Form flags](./form-constrain)
+- [Form fields API](./form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/group-form-fields.md b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/group-form-fields.md
new file mode 100644
index 0000000000..d4b8d9bc10
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/group-form-fields.md
@@ -0,0 +1,124 @@
+---
+layout: post
+title: Group form fields in the MVC PDF Viewer component | Syncfusion
+description: Learn how to group PDF form fields in the Syncfusion MVC PDF Viewer by assigning the same name to multiple widgets.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Group form fields in MVC PDF Viewer
+
+The Syncfusion **MVC PDF Viewer** allows you to **group multiple form fields into a single logical field** by assigning the **same Name** to them. Grouped form fields share their values and states automatically based on the field type. You can group form fields using the **Form Designer UI** or **programmatically using APIs**, making it easy to keep related fields synchronized across the PDF document.
+
+This page covers:
+- [How form field grouping works](#how-grouping-works)
+- [Field behavior based on type](#field-behavior-by-type)
+- [How to group form fields using the UI](#group-using-the-form-designer-ui)
+- [How to group form fields programmatically](#group-pdf-form-fields-programmatically)
+- [Related references and samples](#example-scenarios)
+
+
+## How grouping works
+
+In a PDF form, multiple PDF Form Fields can represent the same logical form field. When PDF Form Fields share the same **Name**, they are treated as a group and stay synchronized.
+
+## Field behavior by type
+
+- **Textbox and Password** — Text entered in one widget appears in all widgets with the same Name.
+- **CheckBox** — Checking one widget sets the checked state for all checkboxes with the same Name.
+- **RadioButton** — Widgets with the same Name form a radio group; only one option can be selected.
+- **ListBox and DropDown** — The selected value is shared across widgets with the same Name.
+- **Signature and Initial fields** — Applied signature/initial is mirrored across grouped widgets.
+
+N>Form field grouping is controlled by the **Name** property. The position of each widget is determined only by its bounds; grouping is not affected by location.
+
+## Group using the Form Designer UI
+
+**Steps**
+1. Enable the [Form Designer toolbar](../toolbar-customization/form-designer-toolbar).
+2. Add the form fields you want to group.
+3. Select a form field, open **Properties**, and set the **Name** value.
+4. Assign the same **Name** to all PDF Form Field that belong to the group.
+5. Apply the changes and verify that updates in one widget reflect in the others.
+
+
+
+
+
+## Group PDF Form Fields Programmatically
+
+You can also group form fields during creation by assigning the same **Name** through code.
+
+### Example Scenarios
+- Two textboxes named **EmployeeId** share the same value.
+- A radio button group named **Gender** allows single selection.
+- Two checkboxes named **Subscribe** share the checked state.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/mvc-pdf-viewer-examples)
+
+## See also
+
+- [Form Designer overview](../overview)
+- [Form Designer Toolbar](../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./manage-form-fields/create-form-fields)
+- [Modify form fields](./manage-form-fields/modify-form-fields)
+- [Add custom data to form fields](./custom-data)
+- [Form Constrain](./form-constrain)
+- [Form validation](./form-validation)
+- [Form fields API](./form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/import-export-form-fields/export-form-fields.md b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/import-export-form-fields/export-form-fields.md
new file mode 100644
index 0000000000..3efb2c0a62
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/import-export-form-fields/export-form-fields.md
@@ -0,0 +1,143 @@
+---
+layout: post
+title: Export form data in MVC PDF Viewer | Syncfusion
+description: Learn how to export PDF form field data (FDF, XFDF, JSON, and as an object) using the Syncfusion MVC PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Export PDF Form Data from MVC PDF Viewer
+
+The PDF Viewer allows you to export form field data in multiple formats for easy storage or integration. Supported formats:
+
+- [FDF](#export-as-fdf)
+- [XFDF](#export-as-xfdf)
+- [JSON](#export-as-json)
+- [JavaScript Object](#export-as-object) (for custom persistence)
+
+## Available methods
+
+- [exportFormFields](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/index-default#exportformfields)(destination?, format) — Exports data to a file in the specified format.
+- [exportFormFieldsAsObject](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/index-default#exportformfieldsasobject)(format) — Exports data as a JavaScript object for custom handling.
+- [importFormFields](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/index-default#importformfields)(sourceOrObject, format) — Import data back into the PDF.
+
+## How to export
+
+Use [exportFormFields()](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/index-default#exportformfields) with an optional destination path and the format type.
+
+### Export as FDF
+The following example exports form field data as FDF.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+### Export as XFDF
+The following example exports form field data as XFDF.
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+### Export as JSON
+The following example exports form field data as JSON.
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+### Export as Object
+
+Use [exportFormFieldsAsObject()](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/index-default#exportformfieldsasobject) to obtain form data as a JavaScript object for database or API integration.
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Common Use Cases
+
+- Save user-entered data to your server without altering the original PDF.
+- Export as JSON for REST API integration.
+- Export as FDF/XFDF for compatibility with other PDF tools.
+- Export as Object to merge with app state or store securely.
+- Automate exports after [validation](../form-validation) using [validateFormFields()](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ValidateFormFields)
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/mvc-pdf-viewer-examples)
+
+## See also
+
+- [Form Designer overview](../overview)
+- [Form Designer Toolbar](../../toolbar-customization/form-designer-toolbar)
+- [Import form fields](./import-form-fields)
+- [Import Export Events](./import-export-events)
+- [Create form fields](../overview-create-forms)
+- [Group form fields](../group-form-fields)
+- [Form validation](../form-validation)
+- [Add custom data to form fields](../custom-data)
+- [Form fields API](../form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/import-export-form-fields/import-export-events.md b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/import-export-form-fields/import-export-events.md
new file mode 100644
index 0000000000..84ec7e81e3
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/import-export-form-fields/import-export-events.md
@@ -0,0 +1,103 @@
+---
+layout: post
+title: Import/Export events in MVC PDF Viewer | Syncfusion
+description: Learn how to handle Import/Export events for PDF form fields in the Syncfusion ASP.NET MVC PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# PDF Form Import and Export Events in MVC
+
+Import/Export events let you **track and customize the entire life cycle** of form data being imported into or exported from the PDF Viewer.
+Use these events to:
+- Validate inputs before processing.
+- Show progress indicators.
+- Log audit trails.
+- Block operations based on business rules.
+
+Each event provides detailed context through typed event arguments such as [ImportStartEventArgs](https://ej2.syncfusion.com/documentation/api/pdfviewer/importstarteventargs), [ImportSuccessEventArgs](https://ej2.syncfusion.com/documentation/api/pdfviewer/importsuccesseventargs), [ImportFailureEventArgs](https://ej2.syncfusion.com/documentation/api/pdfviewer/importfailureeventargs), [ExportStartEventArgs](https://ej2.syncfusion.com/documentation/api/pdfviewer/exportstarteventargs), [ExportSuccessEventArgs](https://ej2.syncfusion.com/documentation/api/pdfviewer/exportsuccesseventargs), and [ExportFailureEventArgs](https://ej2.syncfusion.com/documentation/api/pdfviewer/exportfailureeventargs).
+
+## Import Events
+- [importStart](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ImportStart) — Fires when an import begins.
+- [importSuccess](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ImportSuccess) — Fires when form fields are successfully imported.
+- [importFailed](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#Syncfusion_EJ2_PdfViewer_PdfViewer_ImportFailed) — Fires if the import fails.
+
+**Example: Handle Import Events**
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Key Notes
+- importStart, importSuccess, importFailed cover the full import life cycle.
+- exportStart, exportSuccess, exportFailed cover the full export life cycle.
+
+## See also
+
+- [Form Designer overview](../overview)
+- [Form Designer Toolbar](../../toolbar-customization/form-designer-toolbar)
+- [Create form fields](../overview-create-forms)
+- [Group form fields](../group-form-fields)
+- [Form validation](../form-validation)
+- [Add custom data to form fields](../custom-data)
+- [Import form fields](./import-form-fields)
+- [Export form fields](./export-form-fields)
+- [Form validation](../form-validation)
+- [Form fields API](../form-fields-api)
+- [Form fields API](../form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/import-export-form-fields/import-form-fields.md b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/import-export-form-fields/import-form-fields.md
new file mode 100644
index 0000000000..90749ecbc8
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/import-export-form-fields/import-form-fields.md
@@ -0,0 +1,106 @@
+---
+layout: post
+title: Import form data in MVC PDF Viewer | Syncfusion
+description: Learn how to import PDF form field data (FDF, XFDF, JSON) using the Syncfusion ASP.NET MVC PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Import PDF Form Data into MVC PDF Viewer
+
+The **PDF Viewer** lets you import values into interactive form fields in the currently loaded PDF. You can import data from these formats:
+
+- [FDF](#import-as-fdf)
+- [XFDF](#import-xfdf)
+- [JSON](#import-json)
+
+## API to use
+- [importFormFields](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/index-default#importformfields)(sourceOrObject, format)
+
+Note: If you’re using a **server-backed viewer**, include `.ServiceUrl(...)` in the helper so the viewer can access server APIs during import/export.
+
+### Import FDF
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Common Use Cases
+
+- Pre-fill application forms from a database using JSON.
+- Migrate data from other PDF tools using FDF/XFDF.
+- Restore user progress saved locally or on the server.
+- Combine with validation to block print/download until required fields are completed.
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/mvc-pdf-viewer-examples)
+
+## See also
+
+- [Form Designer overview](../overview)
+- [Form Designer Toolbar](../../toolbar-customization/form-designer-toolbar)
+- [Export form fields](./export-form-fields)
+- [Import Export Events](./import-export-events)
+- [Create Edit form fields](../overview-create-forms)
+- [Group form fields](../group-form-fields)
+- [Form validation](../form-validation)
+- [Add custom data to form fields](../custom-data)
+- [Form fields API](../form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/manage-form-fields/create-form-fields.md b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/manage-form-fields/create-form-fields.md
new file mode 100644
index 0000000000..becdb47e35
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/manage-form-fields/create-form-fields.md
@@ -0,0 +1,400 @@
+---
+layout: post
+title: Create form fields in MVC PDF Viewer | Syncfusion
+description: Learn how to add each PDF form field using the PDF Viewer UI and how to create them programmatically in the Syncfusion MVC PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Create PDF Form Fields in MVC PDF Viewer
+
+You can create or add new form fields either visually using the [Form Designer UI](https://document.syncfusion.com/demos/pdf-viewer/javascript/#/tailwind3/pdfviewer/formdesigner.html) or dynamically using APIs.
+
+## Create Form Fields Using the Form Designer UI
+Use this approach when you want to design forms manually without writing code.
+
+**Steps:**
+
+1. Enable [Form Designer](../form-designer) mode in the PDF Viewer.
+2. Click a form field type (Textbox, Checkbox, Dropdown, etc.) from the toolbar.
+3. Click on the PDF page to place the form field.
+4. Move or resize the field as required.
+5. Configure field properties using the **Properties** panel.
+
+
+
+## Add Form Fields Programmatically (API)
+
+Use this approach when you want to generate form fields dynamically based on data or application logic.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+**Use programmatic creation when:**
+
+- Building dynamic forms
+- Pre-filling forms from databases
+- Automating form creation workflows
+
+## PDF Form Field Types and How to Add Them
+Each field can be added via the **Form Designer** or **programmatically**.
+
+### Textbox
+
+**Add via Toolbar (UI)**
+- Open **Form Designer** → select **Textbox** → click on the page → configure in **Properties**.
+
+
+**Add Programmatically (API)**
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Add Fields Dynamically with setFormFieldMode
+
+Use **setFormFieldMode()** to add fields on the fly based on user actions.
+
+### Edit Form Fields in MVC PDF Viewer
+You can edit form fields using the UI or API.
+
+#### Edit Using the UI
+- Right click a field → **Properties** to update settings. (Image here)
+- Drag to move; use handles to resize.
+- Use the toolbar to toggle field mode or add new fields.
+
+#### Edit Programmatically
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/mvc-pdf-viewer-examples)
+
+## See Also
+
+- [Form Designer overview](../overview)
+- [Form Designer Toolbar](../../toolbar-customization/form-designer-toolbar)
+- [Modify form fields](./modify-form-fields)
+- [Style form fields](./style-form-fields)
+- [Remove form fields](./remove-form-fields)
+- [Group form fields](../group-form-fields)
+- [Form validation](../form-validation)
+- [Form Fields API](../form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/manage-form-fields/customize-form-fields.md b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/manage-form-fields/customize-form-fields.md
new file mode 100644
index 0000000000..8f784d8a54
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/manage-form-fields/customize-form-fields.md
@@ -0,0 +1,113 @@
+---
+layout: post
+title: Customize form fields in MVC PDF Viewer | Syncfusion
+description: Learn how to customize PDF form fields using the UI and programmatically with APIs in the Syncfusion MVC PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Customize the appearance of PDF Form Fields in MVC PDF Viewer
+
+**Styling** customizes appearance only (font, color, alignment, border, background, indicator text).
+
+## Customize Appearance of Form Fields Using the UI
+Use the **Properties** panel to adjust:
+- Font family/size, text color, alignment
+- Border color/thickness
+- Background color
+
+
+## Customize appearance Form Fields Programmatically
+Use [updateFormField()](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#updateFormField) to apply styles:
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/mvc-pdf-viewer-examples)
+
+## See also
+
+- [Form Designer overview](../overview)
+- [Form Designer Toolbar](../../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./create-form-fields)
+- [Modify form fields](./modify-form-fields)
+- [Remove form fields](./remove-form-fields)
+- [Group form fields](../group-form-fields)
+- [Form validation](../form-validation)
+- [Add custom data to form fields](../custom-data)
+- [Form fields API](../form-fields-api)
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/manage-form-fields/modify-form-fields.md b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/manage-form-fields/modify-form-fields.md
new file mode 100644
index 0000000000..ae6c098471
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/manage-form-fields/modify-form-fields.md
@@ -0,0 +1,399 @@
+---
+layout: post
+title: Modify form fields in MVC PDF Viewer | Syncfusion
+description: Learn how to modify PDF form fields using the UI and programmatically with APIs in the Syncfusion MVC PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Modify PDF Form Field Properties in MVC PDF Viewer
+You can modify form fields using the **UI** or **API**.
+
+## Modify PDF Form Field Properties using the UI
+- Right click a field → **Properties** to update settings.
+
+- Drag to move; use handles to resize.
+- Use the toolbar to toggle field mode or add new fields.
+
+## Modify PDF Form Field Properties programmatically
+Use [updateFormField()](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html#updateFormField) to change behavior/data (including position and size):
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/mvc-pdf-viewer-examples)
+
+## See also
+
+- [Form Designer overview](../overview)
+- [Form Designer Toolbar](../../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./create-form-fields)
+- [Remove form Fields](./remove-form-fields)
+- [Style form fields](./customize-form-fields)
+- [Group form fields](../group-form-fields)
+- [Form validation](../form-validation)
+- [Form fields API](../form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/manage-form-fields/move-resize-form-fields.md b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/manage-form-fields/move-resize-form-fields.md
new file mode 100644
index 0000000000..a234fd76b0
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/manage-form-fields/move-resize-form-fields.md
@@ -0,0 +1,60 @@
+---
+layout: post
+title: Move and Resize form fields in MVC PDF Viewer | Syncfusion
+description: Learn how to move and resize PDF form fields using the UI and programmatically with APIs in the Syncfusion MVC PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Move and Resize PDF Form Fields in MVC PDF Viewer
+- **Move**: Drag the form field to reposition it.
+- **Resize**: Use the resize handles to change width and height.
+
+
+
+## Move and Resize Fields Programmatically (API)
+You can set absolute bounds or move fields by a delta.
+
+**Set absolute bounds**
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+
+## See also
+
+- [Form Designer overview](../overview)
+- [Form Designer Toolbar](../../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./create-form-fields)
+- [Remove form Fields](./remove-form-fields)
+- [Customize form fields](./customize-form-fields)
+- [Group form fields](../group-form-fields)
+- [Form validation](../form-validation)
+- [Form fields API](../form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/manage-form-fields/remove-form-fields.md b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/manage-form-fields/remove-form-fields.md
new file mode 100644
index 0000000000..54812a55f9
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/manage-form-fields/remove-form-fields.md
@@ -0,0 +1,64 @@
+---
+layout: post
+title: Remove form fields in MVC PDF Viewer | Syncfusion
+description: Learn how to remove PDF form fields using the UI and programmatically in the Syncfusion MVC PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Remove PDF Form Fields from a PDF in MVC
+
+## Remove Form Fields Using the UI
+**Steps:**
+1. Enable **Form Designer mode**.
+2. Select the form field.
+3. Click **Delete** in the toolbar or press the **Delete** key.
+
+
+## Remove Form Fields Programmatically
+Use **deleteFormField()** with a field reference or ID.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/mvc-pdf-viewer-examples)
+
+## See also
+
+- [Form Designer overview](../overview)
+- [Form Designer Toolbar](../../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./create-form-fields)
+- [Modify form fields](./modify-form-fields)
+- [Customize form fields](./customize-form-fields)
+- [Group form fields](../group-form-fields)
+- [Form validation](../form-validation)
+- [Add custom data to form fields](../custom-data)
+- [Form fields API](../form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/overview-create-forms.md b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/overview-create-forms.md
new file mode 100644
index 0000000000..e2bf18d754
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/overview-create-forms.md
@@ -0,0 +1,20 @@
+---
+layout: post
+title: Overview of Create form fields in MVC PDF Viewer | Syncfusion
+description: Learn how to create edit each form field using the PDF Viewer UI and how to create them programmatically in the Syncfusion MVC PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Create, Edit, Style, and Remove Form Fields in MVC PDF Viewer
+
+The [MVC PDF Viewer](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/asp-net-mvc/overview) allows you to create interactive PDF form fields, update their behavior and appearance, and remove them when they are no longer needed.
+All form field operations can be performed using either the [Form Designer user interface (UI)](https://document.syncfusion.com/demos/pdf-viewer/asp-net-mvc/pdfviewer/formdesigner#/tailwind3) or [MVC APIs.](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.pdfviewer.pdfviewer.html)
+
+This section explains how to:
+
+- [Create PDF form fields](./manage-form-fields/create-form-fields)
+- [Edit form field behavior and values](./manage-form-fields/modify-form-fields)
+- [Style the appearance of form fields](./manage-form-fields/customize-form-fields)
+- [Remove form fields from a PDF document](./manage-form-fields/remove-form-fields)
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/overview.md b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/overview.md
new file mode 100644
index 0000000000..cbf4a953f0
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/forms/overview.md
@@ -0,0 +1,76 @@
+---
+layout: post
+title: Overview of Forms in MVC PDF Viewer Control | Syncfusion
+description: Learn what the Form Designer in Syncfusion MVC PDF Viewer offers, supported field types, and how the topics are organized.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Overview of Forms in MVC PDF Viewer
+
+The Syncfusion PDF Viewer delivers a complete, easy-to-use PDF forms experience. You can read, fill, add, edit, and delete form fields directly within your PDF documents. These actions are supported through both the intuitive user interface and powerful programmatic APIs.
+
+The viewer also includes smooth import and export support for form data, making integration effortless. Developers benefit from extensive API control, while end users enjoy a clean and simple interface designed for a seamless and stress-free form-filling experience.
+
+## Filling PDF Forms
+
+Experience effortless PDF form filling through a clean, intuitive UI or automated workflows using powerful APIs. Flexible form data import and export support ensures smooth and efficient operations when working with PDF forms.
+
+See the [Filling PDF Forms](./form-filling) page for full details.
+
+Use the following ASP.NET MVC code-snippet to enable basic PDF Viewer rendering.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+
+
+1. [Programmatically Form fill](./form-filling#fill-pdf-forms-programmatically)
+2. [Form Fill Using UI](./form-filling#fill-pdf-forms-through-the-user-interface)
+3. [Import the Form data](./form-filling#fill-pdf-forms-through-import-data)
+
+## Form Designer
+
+A built in Form Designer lets you quickly add, edit, move, and delete form fields in the PDF documents. This viewer allows you to design fillable PDF forms interactively either using the built-in form designer tools or building your own customized form designer tools.
+
+See the [Form Designer](./form-designer) page for full details.
+
+Use the following ASP.NET MVC code-snippet to enable the Form Designer rendering.
+
+{% tabs %}
+{% highlight cshtml tabtitle="Standalone" %}
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+
+
+Create and customize interactive fields directly on the PDF page.
+- [Create](./manage-form-fields/create-form-fields), [edit](./manage-form-fields/modify-form-fields), or [remove](./manage-form-fields/remove-form-fields) forms
+- [Add a Signature Field](./manage-form-fields/create-form-fields#add-signature-field)
+- [Edit Form Field](./manage-form-fields/modify-form-fields)
+- [Remove Form Field](./manage-form-fields/remove-form-fields)
+- [Form Field Constraints](./form-constrain)
+
+## Supported form field types
+
+- [Textbox](../forms/manage-form-fields/create-form-fields#add-textbox)
+- [Password](../forms/manage-form-fields/create-form-fields#add-password)
+- [CheckBox](../forms/manage-form-fields/create-form-fields#add-checkbox)
+- [RadioButton](../forms/manage-form-fields/create-form-fields#add-radiobutton)
+- [ListBox](../forms/manage-form-fields/create-form-fields#add-listbox)
+- [DropDown](../forms/manage-form-fields/create-form-fields#add-dropdown)
+- [Signature field](../forms/manage-form-fields/create-form-fields#add-signature-field)
+- [Initial field](../forms/manage-form-fields/create-form-fields#add-initial-field)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/how-to/custom-fonts.md b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/how-to/custom-fonts.md
index 7de673a263..6965f8fcfd 100644
--- a/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/how-to/custom-fonts.md
+++ b/Document-Processing/PDF/PDF-Viewer/asp-net-mvc/how-to/custom-fonts.md
@@ -1,22 +1,46 @@
---
layout: post
-title: Add custom fonts in ASP.NET MVC PDF Viewer | Syncfusion
-description: Learn how to add and load custom TTF fonts for documents displayed in the Syncfusion ASP.NET MVC PDF Viewer using the customFonts property.
+title: Add custom fonts in MVC PDF Viewer | Syncfusion
+description: Learn how to add and load custom TTF fonts for documents displayed in the MVC PDF Viewer using the customFonts property.
platform: document-processing
control: PDF Viewer
-publishingplatform: ASP.NET MVC
documentation: ug
+domainurl: ##DomainURL##
---
-# Add custom fonts in the ASP.NET MVC PDF Viewer
+# Add Custom Fonts to PDF Forms in MVC PDF Viewer
-To use custom fonts in the Syncfusion ASP.NET MVC PDF Viewer, add the custom TTF files to the resource URL directory and configure the viewer to load them. Specify font file names using the `customFonts` property as an array of names.
+The Syncfusion **MVC PDF Viewer** supports loading, editing, and saving **custom fonts** in form fields such as [TextBox](../forms/manage-form-fields/create-form-fields#textbox), [ListBox](../forms/manage-form-fields/create-form-fields#listbox), and [DropDown](../forms/manage-form-fields/create-form-fields#dropdown) fields using the customFonts property. This ensures consistent text rendering even when the required fonts are not installed on the user’s system.
+Custom fonts are embedded and preserved when form fields are modified or saved, making the PDF display correctly across environments.
-## Steps to add custom fonts
+## When dynamic fonts are used
+Dynamic fonts are currently used in the following scenarios:
+- **Text annotations** — When users enter text annotations that use non standard fonts, the viewer dynamically loads the required fonts to ensure correct character rendering.
+- **PDF forms** — When users fill form fields that rely on fonts not included by default, dynamic font loading ensures the entered text is rendered correctly.
-**Step 1:** Add custom TTF font files to the resource URL path referenced in the application. For example, place the TTF files in the ej2-pdfviewer-lib folder that serves as the resource URL path.
+## How Custom Fonts Work
+The custom font workflow in the PDF Viewer is as follows:
+- Place the required **TrueType Font (TTF)** files in the resource directory used by the viewer.
+- Specify the font names using the customFonts property.
+- The specified fonts become available for:
+ - Rendering form field content
+ - Editing text in form fields
+ - Saving and downloading the PDF with embedded fonts
-**Step 2:** Use the following code to configure custom fonts in the PDF Viewer.
+## Steps to Add Custom Fonts
+
+### Add TTF Font Files
+1. Place the TTF font files in the resource path used by the PDF Viewer (for example, the ej2-pdfviewer-lib folder).
+2. Fonts can be referenced in either of the following ways:
+ - **Relative path**
+ Example:
+ calibri.ttf
+ fallback-fonts/calibri.ttf
+ - **Absolute URL**
+ Fonts can be hosted on a server and referenced using a fully qualified URL. Ensure that the hosting server has **CORS** enabled.
+
+### Configure Custom Fonts in the PDF Viewer
+Specify the required font names in the customFonts property.
{% tabs %}
{% highlight html tabtitle="Standalone" %}
@@ -41,4 +65,18 @@ To use custom fonts in the Syncfusion ASP.NET MVC PDF Viewer, add the custom TTF
{% endhighlight %}
{% endtabs %}
-These steps integrate custom fonts into PDF documents displayed in the PDF Viewer.
+N>Ensure that the font file names match the specified font names.
+
+## Supported Form Fields
+Custom fonts can be applied to the following form field types:
+- [TextBox](../forms/manage-form-fields/create-form-fields#textbox)
+- [ListBox](../forms/manage-form-fields/create-form-fields#listbox)
+- [DropDown](../forms/manage-form-fields/create-form-fields#dropdown)
+
+## Notes and Limitations
+- If text rendered using a custom font exceeds the form field’s bounds, the downloaded PDF may render incorrectly in some third party PDF viewers.
+- The same content displays correctly in the **Syncfusion PDF Viewer**.
+
+## To avoid rendering issues:
+- Use an appropriate font size that fits within the form field.
+- Increase the size of the form field before saving or downloading the PDF.
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/accessibility.md b/Document-Processing/PDF/PDF-Viewer/blazor/accessibility.md
index bcfab5c1ab..b505dbd241 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/accessibility.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/accessibility.md
@@ -37,29 +37,29 @@ The accessibility compliance for the Blazor SfPdfViewer component is outlined be
## WAI-ARIA attributes
-[WAI-ARIA](https://www.w3.org/WAI/ARIA/apg/patterns/alert/) (Accessibility Initiative – Accessible Rich Internet Applications) defines a way to enhance the accessibility of web pages, dynamic content, and user interface components developed with Ajax, HTML, JavaScript, and related technologies. ARIA provides additional semantics to describe the role, state, and functionality of web components. The following ARIA attributes are used in the Blazor SfPdfViewer component:
+[WAI-ARIA](https://www.w3.org/WAI/ARIA/apg/patterns/alert/) (Accessibility Initiative – Accessible Rich Internet Applications) defines a way to enhance the accessibility of web pages, dynamic content, and user interface components developed with Ajax, HTML, JavaScript, and related technologies. ARIA provides additional semantics to describe the role, state, and functionality of web components. The following ARIA attributes are commonly applied in the SfPdfViewer component:
| Attributes | Purpose |
| --- | --- |
-| `aria-disabled`| Indicates whether the Blazor SfPdfViewer component is in a disabled state or not.|
-| `aria-expanded`| Indicates whether the suggestion list has expanded or not. |
-| `aria-readonly` | Indicates the readonly state of the Blazor SfPdfViewer element. |
-| `aria-haspopup` | Indicates whether the Blazor SfPdfViewer input element has a suggestion list or not. |
-| `aria-label` | Indicates the breadcrumb item text. |
-| `aria-labelledby` | Provides a label for the SfPdfViewer. Typically, the "aria-labelledby" attribute will contain the id of the element used as the Blazor SfPdfViewer's title. |
-| `aria-describedby` | This attribute points to the Blazor SfPdfViewer element describing the one it's set on. |
-| `aria-orientation` | Indicates whether the Blazor SfPdfViewer element is oriented horizontally or vertically. |
-| `aria-valuetext` | Returns the current text of the SfPdfViewer. |
-| `aria-valuemax` | Indicates the Maximum value of the SfPdfViewer. |
-| `aria-valuemin` | Indicates the Minimum value of the SfPdfViewer. |
-| `aria-valuenow` | Indicates the current value of the SfPdfViewer. |
-| `aria-controls` | Attribute is set to the button and it points to the corresponding content. |
+| `aria-disabled` | Indicates whether an interactive control (for example, a toolbar button) is disabled and not operable. |
+| `aria-expanded` | Indicates whether an expandable element (for example, a panel or toolbar menu) is currently expanded. |
+| `aria-readonly` | Indicates that the element is read-only and user input is not expected. |
+| `aria-haspopup` | Identifies that the element opens a popup (menu, dialog, or toolbar). |
+| `aria-label` | Provides an accessible name for controls or regions when a visible label is not available. |
+| `aria-labelledby` | Identifies the element that labels this element by referencing that element's id. |
+| `aria-describedby` | Identifies the element that provides a description for this element by referencing that element's id. |
+| `aria-orientation` | Indicates the orientation (horizontal or vertical) of widgets such as sliders or splitters. |
+| `aria-valuetext` | Provides a human-readable text alternative of the current value (for example, a zoom level). |
+| `aria-valuemax` | Indicates the maximum value for range widgets (for example, maximum zoom). |
+| `aria-valuemin` | Indicates the minimum value for range widgets (for example, minimum zoom). |
+| `aria-valuenow` | Indicates the current numeric value for range widgets (for example, current zoom). |
+| `aria-controls` | Identifies the element or region controlled by this element (for example, a button that opens a panel). |
## Keyboard interaction
The Blazor SfPdfViewer component follows the [keyboard interaction](https://www.w3.org/WAI/ARIA/apg/patterns/alert/#keyboardinteraction) guideline, making it accessible to users who rely on assistive technologies (AT) and keyboard navigation. The following keyboard shortcuts are supported by the SfPdfViewer component.
-| Windows | Mac | Actions |
+| Windows | Mac | Action |
| --- | --- | --- |
|||**Shortcuts for page navigation**|
| Ctrl + ← / Ctrl + ↑ | ⌘ + ← / ⌘ + ↑ |Navigate to the first page |
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/accessible-pdf-reading.md b/Document-Processing/PDF/PDF-Viewer/blazor/accessible-pdf-reading.md
index d1c6ec8805..c597669ec4 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/accessible-pdf-reading.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/accessible-pdf-reading.md
@@ -16,7 +16,7 @@ This accessible PDF reading feature supports two approaches:
2. Windows Speech Synthesis API
The following demo illustrates both supported approaches:
-- [Blazor PDF Viewer example -Accessible PDF Reading](https://document.syncfusion.com/demos/pdf-viewer/blazor-server/pdf-viewer/accessible-pdf-reading?theme=fluent2)
+- [Blazor PDF Viewer example - Accessible PDF Reading](https://document.syncfusion.com/demos/pdf-viewer/blazor-server/pdf-viewer/accessible-pdf-reading?theme=fluent2)
## Microsoft Edge’s Screen Reader
@@ -917,7 +917,7 @@ function clearAllHighlights() {
{% endhighlight %}
{% endtabs %}
-
+
[View sample in GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/tree/master/Accessible/WebSynthesis)
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/annotation/annotations-in-mobile-view.md b/Document-Processing/PDF/PDF-Viewer/blazor/annotation/annotations-in-mobile-view.md
index 722714e680..ee8ba6517d 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/annotation/annotations-in-mobile-view.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/annotation/annotations-in-mobile-view.md
@@ -9,37 +9,37 @@ documentation: ug
# Annotations in mobile view
-This article explains how to work with annotations in the mobile view of the Blazor SfPdfViewer. It covers opening the annotation toolbar, adding each annotation type, adjusting properties, deleting annotations, and using the comments panel.
+This topic explains how to work with annotations in the mobile view of the Blazor `SfPdfViewer`. It covers opening the annotation toolbar, adding annotation types, adjusting properties, deleting annotations, and using the comments panel.
-## To open the annotation toolbar
+## Open the annotation toolbar
-To open the annotation toolbar, tap the **Edit Annotation** option in the mobile primary toolbar. The annotation toolbar appears at the bottom of the viewer.
+Open the annotation toolbar by tapping the **Edit Annotation** option in the mobile primary toolbar. The annotation toolbar appears at the bottom of the viewer.

-## To add sticky notes annotation
+## Add a sticky note annotation
Tap the **Sticky Note Annotation** icon, then tap anywhere in the viewer to place the note.

-The comments panel opens so the comment for the sticky note can be entered.
+The comments panel opens to enter the comment associated with the sticky note.

-## To add text markup annotation
+## Add a text markup annotation
-Long-press to select text in the PDF, then tap a **Text Markup Annotation** in the toolbar (for example, highlight, underline, strikethrough, or squiggly).
+Long-press to select text in the PDF, then tap a **Text Markup Annotation** option in the toolbar (for example, highlight, underline, strikethrough, or squiggly).

-The toolbar then shows the available properties for the chosen annotation (such as color and opacity).
+The toolbar then shows properties for the chosen annotation (such as color and opacity).

-## To add shape annotation
+## Add a shape annotation
-Tap the **Shape Annotation** icon in the toolbar to view the available shapes.
+Tap the **Shape Annotation** icon in the toolbar to view available shapes.

@@ -47,11 +47,11 @@ Choose a shape, then tap and drag in the viewer to draw it.

-After placement, the toolbar switches to the properties toolbar for the added annotation, where options such as fill color, stroke color, thickness, and opacity can be adjusted.
+After placement, the toolbar switches to the properties toolbar for the added annotation; adjust options such as fill color, stroke color, thickness, and opacity.

-## To add measure annotation
+## Add a measurement annotation
Tap the **Measure Annotation** icon in the toolbar to view supported measurement types.
@@ -65,7 +65,7 @@ After placement, the properties toolbar appears with options relevant to the mea

-## To add free text annotation
+## Add a free text annotation
Tap the **Free Text Annotation** icon in the toolbar. The properties toolbar appears with options for text formatting (such as font size, color, and opacity).
@@ -75,7 +75,7 @@ Tap anywhere in the viewer to insert the free text annotation.

-## To add stamp annotation
+## Add a stamp annotation
Tap the **Stamp Annotation** icon, then choose a stamp from the available list.
@@ -85,7 +85,7 @@ Tap anywhere in the viewer to place the stamp. The properties toolbar then appea

-## To add signature
+## Add a signature
Tap the **Handwritten Signature** icon to open the signature dialog.
@@ -99,7 +99,7 @@ Tap anywhere in the viewer to place the signature. The properties toolbar then a

-## To add ink annotation
+## Add an ink annotation
Tap the **Ink Annotation** icon, then draw directly in the viewer.
@@ -111,25 +111,25 @@ When finished, tap the Ink Annotation icon again to exit drawing mode. The prope
## Change annotation properties before adding
-Annotation properties can be configured before placement. For example, tap the rectangle shape to show its properties toolbar, adjust the settings, and then tap and drag to place the annotation. The annotation is added using the modified properties.
+Annotation properties can be configured before placement. For example, tap a shape to show its properties toolbar, adjust the settings, then tap and drag to place the annotation. The annotation is added with the modified properties.

## Change annotation properties after adding
-After placement, select the annotation to display its properties toolbar. Adjust the required properties; the changes are applied immediately to the selected annotation.
+After placement, select the annotation to display its properties toolbar. Adjust required properties; the changes are applied immediately to the selected annotation.

-## Delete Annotation
+## Delete an annotation
Select the annotation to delete. In the properties toolbar, tap the Delete icon. The annotation is removed from the PDF, and any associated comment is also deleted.

-## Open and Close Comment Panel
+## Open and close the comments panel
-Open the comments panel from the **more option** menu at the right end of the mobile primary toolbar.
+Open the comments panel from the More options menu at the right end of the mobile primary toolbar.

diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/annotation/comments.md b/Document-Processing/PDF/PDF-Viewer/blazor/annotation/comments.md
index e9eb6dde24..8efcad93d0 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/annotation/comments.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/annotation/comments.md
@@ -9,7 +9,7 @@ documentation: ug
# Comments in Blazor SfPdfViewer Component
-The SfPdfViewer component provides options to add, edit, and delete comments for the following annotation types in PDF documents:
+The `SfPdfViewer` component provides options to add, edit, and delete comments for the following annotation types in PDF documents:
* Shape annotation
* Stamp annotation
@@ -20,7 +20,7 @@ The SfPdfViewer component provides options to add, edit, and delete comments for

-## Adding a comment to the annotation
+## Add a comment to an annotation
Comments, replies, and status can be added to a PDF document using the comment panel.
@@ -28,17 +28,17 @@ Comments, replies, and status can be added to a PDF document using the comment p
Annotation comments can be added using the comment panel. Open the comment panel in any of the following ways:
-1. Using the annotation menu.
+1. From the annotation menu
- * Click the Edit Annotation button in the SfPdfViewer toolbar. A toolbar appears below it.
+ * Click the Edit Annotation button in the `SfPdfViewer` toolbar. A toolbar appears below it.
* Click the Comment panel button. The comment panel opens.
-2. Using the context menu.
+2. From the context menu
* Select an annotation in the PDF document and right-click it.
* Select the Comment option in the context menu.
-3. Using mouse click.
+3. Using double-click
* Select an annotation in the PDF document and double-click it to open the comment panel.
@@ -52,12 +52,12 @@ If the comment panel is already open, select an annotation and add a comment usi

-### Adding Comment Replies
+### Adding comment replies
-* The SfPdfViewer supports adding multiple replies to a comment.
+* The `SfPdfViewer` supports adding multiple replies to a comment.
* After adding an annotation comment, add one or more replies as needed.
-### Adding Comment or Reply Status
+### Adding comment or reply status
* Select the annotation comment in the comment panel.
* Click the More options button in the comment or reply container.
@@ -66,38 +66,38 @@ If the comment panel is already open, select an annotation and add a comment usi

-### Editing the comments and comments replies of the annotations
+### Edit comments and replies
Edit the comment, its replies, and the status of an annotation using the comment panel.
-### Editing Comment or Comment Replies
+### Editing comments or replies
Edit comments and replies in the following ways:
-1. Using the context menu.
+1. From the context menu
* Select the annotation comment in the comment panel.
* Click the More options button in the comment or reply container.
* Select Edit in the context menu.
* An editable text box appears to change the content of the comment or reply.
-2. Using mouse click.
+2. Using double-click
* Select the annotation comment in the comment panel.
* Double-click the comment or reply content.
* An editable text box appears to change the content of the comment or reply.
-### Editing Comment or Reply Status
+### Editing comment or reply status
* Select the annotation comment in the comment panel.
* Click the More options button in the comment or reply container.
* Select Set status in the context menu.
* Choose the required status for the annotation comment.
-* Status 'None' is the default. Choosing 'None' removes the status indicator from the comment or reply.
+* Status `None` is the default. Choosing `None` removes the status indicator from the comment or reply.

-### Delete Comment or Comment Replies
+### Delete a comment or reply
* Select the annotation comment in the comment panel.
* Click the More options button in the comment or reply container.
@@ -150,11 +150,11 @@ The following code snippet explains how to show the comment panel.
```
[View sample in GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/tree/master/Annotations/Comment%20Panel/Show%20or%20hide%20comment%20panel).
-## Add Comments and Reply Comments Programmatically
+## Add comments and replies programmatically
-The Blazor SfPdfViewer supports programmatically adding a line annotation with a comment and reply comments using the [AddAnnotationAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_AddAnnotationAsync_Syncfusion_Blazor_SfPdfViewer_PdfAnnotation_) method.
+The `SfPdfViewer` supports programmatically adding a line annotation with a comment and replies using the [AddAnnotationAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_AddAnnotationAsync_Syncfusion_Blazor_SfPdfViewer_PdfAnnotation_) method.
-The following example demonstrates how to add a line annotation with a comment and reply comments to a PDF document:
+The following example demonstrates how to add a line annotation with a comment and replies to a PDF document:
```cshtml
@@ -242,17 +242,17 @@ The following example demonstrates how to add a line annotation with a comment a
```
-This code adds a line annotation with a comment and reply comments to the first page of the PDF document.
+This code adds a line annotation with a comment and replies to the first page of the PDF document.

[View sample in GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/tree/master/Annotations/Programmatic%20Support/Comment/Add).
-## Edit Comments and Reply Comments Programmatically
+## Edit comments and replies programmatically
-The Blazor SfPdfViewer supports programmatically editing the comment and reply comments of an annotation using the [EditAnnotationAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_EditAnnotationAsync_Syncfusion_Blazor_SfPdfViewer_PdfAnnotation_) method.
+The `SfPdfViewer` supports programmatically editing the comment and replies of an annotation using the [EditAnnotationAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_EditAnnotationAsync_Syncfusion_Blazor_SfPdfViewer_PdfAnnotation_) method.
-The following example demonstrates how to edit the comment and reply comments programmatically:
+The following example demonstrates how to edit the comment and replies programmatically:
```cshtml
@@ -296,13 +296,13 @@ The following example demonstrates how to edit the comment and reply comments pr
}
```
-This code edits the comment and reply comments programmatically within the SfPdfViewer control.
+This code edits the comment and replies programmatically within the `SfPdfViewer` control.

[View sample in GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/tree/master/Annotations/Programmatic%20Support/Comment/Edit).
-## Customizing DateTime Format
+## Customizing date and time format
The PDF Viewer supports customizing the date and time format displayed in the comment panel using the [PdfViewerCommentPanelSettings](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerCommentPanelSettings.html). This feature tailors the appearance of date and time according to preferences or regional standards.
@@ -358,7 +358,7 @@ This code implements date and time formatting for the comment panel of the PDF V
[View sample in GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/tree/master/Annotations/Comment%20Panel/Customize%20DateTimeFormat).
-## Enabling Multiline Support
+## Enabling multiline support
Multiline support in the comment panel allows users to input and display comments that span multiple lines. Enable multiline support using the [PdfViewerCommentPanelSettings](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerCommentPanelSettings.html).
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/annotation/events.md b/Document-Processing/PDF/PDF-Viewer/blazor/annotation/events.md
index 9347d4535b..aacb4eca63 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/annotation/events.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/annotation/events.md
@@ -13,38 +13,38 @@ Annotation events notify the application when annotations are added, selected, m
|Name|Description|
|---|---|
-|AddSignature|Triggers when a signature is added to a page in the PDF document.|
-|AnnotationAdded|Triggers when an annotation is added to a page in the PDF document.|
-|AnnotationMouseover|Triggers when the mouse pointer moves over an annotation object.|
-|AnnotationMoved|Triggers when an annotation is moved on a page in the PDF document.|
-|AnnotationPropertiesChanged|Triggers when annotation properties are modified on a PDF page.|
-|AnnotationRemoved|Triggers when an annotation is removed from a page in the PDF document.|
-|AnnotationResized|Triggers when an annotation is resized on a page in the PDF document.|
-|AnnotationSelected|Triggers when an annotation is selected on a page in the PDF document.|
-|AnnotationUnselected|Triggers when an annotation is unselected on a page in the PDF document.|
-|ExportFailed|Triggers when exporting annotations fails in the SfPdfViewer.|
-|ExportStarted|Triggers when exporting annotations starts in the SfPdfViewer.|
-|ExportSucceed|Triggers when exporting annotations succeeds in the SfPdfViewer.|
-|ImportFailed|Triggers when importing annotations fails in the PDF document.|
-|ImportStarted|Triggers when importing annotations starts in the PDF document.|
-|ImportSucceed|Triggers when importing annotations succeeds in the PDF document.|
-|MoveSignature|Triggers when a signature is moved on a page in the PDF document.|
-|OnAnnotationDoubleClick|Triggers when an annotation is double-clicked.|
-|RemoveSignature|Triggers when a signature is removed from a page in the PDF document.|
-|ResizeSignature|Triggers when a signature is resized on a page in the PDF document.|
-|SignaturePropertiesChange|Triggers when the properties of a signature are changed on a page in the PDF document.|
-|SignatureSelected|Triggers when a signature is selected on a page in the PDF document.|
-|SignatureUnselected|Triggers when a signature is unselected on a page in the PDF document.|
-
-## AddSignature Event
-
-The [AddSignature](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_AddSignature) event triggers when a signature is added to a page in the PDF document.
-
-#### Event Arguments
-
-For event data, see [AddSignatureEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.AddSignatureEventArgs.html) for properties such as Id, PageNumber, and Bounds.
-
-The following example illustrates how to handle the AddSignature event.
+|AddSignature|Triggers when a signature is added to a page.|
+|AnnotationAdded|Triggers when an annotation is added to a page.|
+|AnnotationMouseover|Triggers when the mouse pointer moves over an annotation.|
+|AnnotationMoved|Triggers when an annotation is moved on a page.|
+|AnnotationPropertiesChanged|Triggers when annotation properties are modified.|
+|AnnotationRemoved|Triggers when an annotation is removed from a page.|
+|AnnotationResized|Triggers when an annotation is resized on a page.|
+|AnnotationSelected|Triggers when an annotation is selected on a page.|
+|AnnotationUnselected|Triggers when an annotation is unselected on a page.|
+|ExportFailed|Triggers when an annotation export fails.|
+|ExportStarted|Triggers when annotation export starts.|
+|ExportSucceed|Triggers when annotation export succeeds.|
+|ImportFailed|Triggers when an annotation import fails.|
+|ImportStarted|Triggers when annotation import starts.|
+|ImportSucceed|Triggers when annotation import succeeds.|
+|MoveSignature|Triggers when a signature is moved on a page.|
+|OnAnnotationDoubleClick|Triggers when an annotation is double-clicked.|
+|RemoveSignature|Triggers when a signature is removed from a page.|
+|ResizeSignature|Triggers when a signature is resized on a page.|
+|SignaturePropertiesChange|Triggers when signature properties are changed on a page.|
+|SignatureSelected|Triggers when a signature is selected on a page.|
+|SignatureUnselected|Triggers when a signature is unselected on a page.|
+
+## AddSignature event
+
+The [AddSignature](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_AddSignature) event triggers when a signature is added to a page.
+
+#### Event arguments
+
+See [AddSignatureEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.AddSignatureEventArgs.html) for properties such as `Id`, `PageNumber`, and `Bounds`.
+
+The following example illustrates handling the `AddSignature` event.
```cshtml
@@ -64,15 +64,15 @@ The following example illustrates how to handle the AddSignature event.
```
-## AnnotationAdded Event
+## AnnotationAdded event
-The [AnnotationAdded](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_AnnotationAdded) event triggers when an annotation is added to a page in the PDF document.
+The [AnnotationAdded](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_AnnotationAdded) event triggers when an annotation is added to a page.
-#### Event Arguments
+#### Event arguments
-See [AnnotationAddedEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.AnnotationAddedEventArgs.html) for details such as AnnotationId, AnnotationType, PageNumber, and Bounds.
+See [AnnotationAddedEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.AnnotationAddedEventArgs.html) for details such as `AnnotationId`, `AnnotationType`, `PageNumber`, and `Bounds`.
-The following example illustrates how to handle the AnnotationAdded event.
+The following example illustrates handling the `AnnotationAdded` event.
```cshtml
@@ -92,15 +92,15 @@ The following example illustrates how to handle the AnnotationAdded event.
```
-## AnnotationMouseover Event
+## AnnotationMouseover event
-The [AnnotationMouseover](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_AnnotationMouseover) event triggers when the mouse pointer moves over an annotation object.
+The [AnnotationMouseover](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_AnnotationMouseover) event triggers when the mouse pointer moves over an annotation.
-#### Event Arguments
+#### Event arguments
-See [AnnotationMouseoverEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.AnnotationMouseoverEventArgs.html) for details such as AnnotationId, AnnotationType, PageNumber, and cursor position.
+See [AnnotationMouseoverEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.AnnotationMouseoverEventArgs.html) for details such as `AnnotationId`, `AnnotationType`, `PageNumber`, and cursor position.
-The following example illustrates how to handle the AnnotationMouseover event.
+The following example illustrates handling the `AnnotationMouseover` event.
```cshtml
@@ -120,15 +120,15 @@ The following example illustrates how to handle the AnnotationMouseover event.
```
-## AnnotationMoved Event
+## AnnotationMoved event
-The [AnnotationMoved](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_AnnotationMoved) event triggers when an annotation is moved on a page in the PDF document.
+The [AnnotationMoved](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_AnnotationMoved) event triggers when an annotation is moved on a page.
-#### Event Arguments
+#### Event arguments
-See [AnnotationMovedEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.AnnotationMovedEventArgs.html) for details such as AnnotationId, PageNumber, PreviousBounds, and Bounds.
+See [AnnotationMovedEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.AnnotationMovedEventArgs.html) for details such as `AnnotationId`, `PageNumber`, `PreviousBounds`, and `Bounds`.
-The following example illustrates how to handle the AnnotationMoved event.
+The following example illustrates handling the `AnnotationMoved` event.
```cshtml
@@ -148,15 +148,15 @@ The following example illustrates how to handle the AnnotationMoved event.
```
-## AnnotationPropertiesChanged Event
+## AnnotationPropertiesChanged event
-The [AnnotationPropertiesChanged](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_AnnotationPropertiesChanged) event triggers when annotation properties are modified on a PDF page.
+The [AnnotationPropertiesChanged](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_AnnotationPropertiesChanged) event triggers when annotation properties are modified on a page.
-#### Event Arguments
+#### Event arguments
-See [AnnotationPropertiesChangedEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.AnnotationPropertiesChangedEventArgs.html) for details such as AnnotationId, PageNumber, changed property names, and old/new values.
+See [AnnotationPropertiesChangedEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.AnnotationPropertiesChangedEventArgs.html) for details such as `AnnotationId`, `PageNumber`, changed property names, and old/new values.
-The following example illustrates how to handle the AnnotationPropertiesChanged event.
+The following example illustrates handling the `AnnotationPropertiesChanged` event.
```cshtml
@@ -176,15 +176,15 @@ The following example illustrates how to handle the AnnotationPropertiesChanged
```
-## AnnotationRemoved Event
+## AnnotationRemoved event
-The [AnnotationRemoved](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_AnnotationRemoved) event triggers when an annotation is removed from a page in the PDF document.
+The [AnnotationRemoved](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_AnnotationRemoved) event triggers when an annotation is removed from a page.
-#### Event Arguments
+#### Event arguments
-See [AnnotationRemovedEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.AnnotationRemovedEventArgs.html) for details such as AnnotationId, AnnotationType, and PageNumber.
+See [AnnotationRemovedEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.AnnotationRemovedEventArgs.html) for details such as `AnnotationId`, `AnnotationType`, and `PageNumber`.
-The following example illustrates how to handle the AnnotationRemoved event.
+The following example illustrates handling the `AnnotationRemoved` event.
```cshtml
@@ -204,15 +204,15 @@ The following example illustrates how to handle the AnnotationRemoved event.
```
-## AnnotationResized Event
+## AnnotationResized event
-The [AnnotationResized](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_AnnotationResized) event triggers when an annotation is resized on a page in the PDF document.
+The [AnnotationResized](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_AnnotationResized) event triggers when an annotation is resized on a page.
-#### Event Arguments
+#### Event arguments
-See [AnnotationResizedEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.AnnotationResizedEventArgs.html) for details such as AnnotationId, PageNumber, PreviousBounds, and Bounds.
+See [AnnotationResizedEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.AnnotationResizedEventArgs.html) for details such as `AnnotationId`, `PageNumber`, `PreviousBounds`, and `Bounds`.
-The following example illustrates how to handle the AnnotationResized event.
+The following example illustrates handling the `AnnotationResized` event.
```cshtml
@@ -232,15 +232,15 @@ The following example illustrates how to handle the AnnotationResized event.
```
-## AnnotationSelected Event
+## AnnotationSelected event
-The [AnnotationSelected](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_AnnotationSelected) event triggers when an annotation is selected on a page in the PDF document.
+The [AnnotationSelected](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_AnnotationSelected) event triggers when an annotation is selected on a page.
-#### Event Arguments
+#### Event arguments
-See [AnnotationSelectedEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.AnnotationSelectedEventArgs.html) for details such as AnnotationId, AnnotationType, and PageNumber.
+See [AnnotationSelectedEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.AnnotationSelectedEventArgs.html) for details such as `AnnotationId`, `AnnotationType`, and `PageNumber`.
-The following example illustrates how to handle the AnnotationSelected event.
+The following example illustrates handling the `AnnotationSelected` event.
```cshtml
@@ -260,15 +260,15 @@ The following example illustrates how to handle the AnnotationSelected event.
```
-## AnnotationUnselected Event
+## AnnotationUnselected event
-The [AnnotationUnselected](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_AnnotationUnselected) event triggers when an annotation is unselected on a page in the PDF document.
+The [AnnotationUnselected](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_AnnotationUnselected) event triggers when an annotation is unselected on a page.
-#### Event Arguments
+#### Event arguments
-See [AnnotationUnselectedEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.AnnotationUnselectedEventArgs.html) for details such as AnnotationId, AnnotationType, and PageNumber.
+See [AnnotationUnselectedEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.AnnotationUnselectedEventArgs.html) for details such as `AnnotationId`, `AnnotationType`, and `PageNumber`.
-The following example illustrates how to handle the AnnotationUnselected event.
+The following example illustrates handling the `AnnotationUnselected` event.
```cshtml
@@ -288,15 +288,15 @@ The following example illustrates how to handle the AnnotationUnselected event.
```
-## ExportFailed Event
+## ExportFailed event
-The [ExportFailed](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_ExportFailed) event triggers when an export annotations failed in the PDF Viewer.
+The [ExportFailed](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_ExportFailed) event triggers when annotation export fails.
-#### Event Arguments
+#### Event arguments
-See [ExportFailureEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.ExportFailureEventArgs.html) for details such as ErrorDetails.
+See [ExportFailureEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.ExportFailureEventArgs.html) for details such as `ErrorDetails`.
-The following example illustrates how to handle the ExportFailed event.
+The following example illustrates handling the `ExportFailed` event.
```cshtml
@@ -316,15 +316,15 @@ The following example illustrates how to handle the ExportFailed event.
```
-## ExportStarted Event
+## ExportStarted event
-The [ExportStarted](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_ExportStarted) event triggers when an exported annotations started in the PDF Viewer.
+The [ExportStarted](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_ExportStarted) event triggers when annotation export starts.
-#### Event Arguments
+#### Event arguments
-See [ExportStartEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.ExportStartEventArgs.html) triggers when an exported annotations started in the PDF Viewer.
+See [ExportStartEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.ExportStartEventArgs.html) for details about the export start event.
-The following example illustrates how to handle the ExportStarted event.
+The following example illustrates handling the `ExportStarted` event.
```cshtml
@@ -344,15 +344,15 @@ The following example illustrates how to handle the ExportStarted event.
```
-## ExportSucceed Event
+## ExportSucceed event
-The [ExportSucceed](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_ExportSucceed) event triggers when an export annotations succeed in the PDF Viewer.
+The [ExportSucceed](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_ExportSucceed) event triggers when annotation export succeeds.
-#### Event Arguments
+#### Event arguments
-See [ExportSuccessEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.ExportSuccessEventArgs.html) for details such as FileName.
+See [ExportSuccessEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.ExportSuccessEventArgs.html) for details such as `FileName`.
-The following example illustrates how to handle the ExportSucceed event.
+The following example illustrates handling the `ExportSucceed` event.
```cshtml
@@ -372,15 +372,15 @@ The following example illustrates how to handle the ExportSucceed event.
```
-## ImportFailed Event
+## ImportFailed event
-The [ImportFailed](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_ImportFailed) event triggers when an imports annotations failed in the PDF document.
+The [ImportFailed](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_ImportFailed) event triggers when annotation import fails.
-#### Event Arguments
+#### Event arguments
-See [ImportFailureEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.ImportFailureEventArgs.html) for details such as ErrorDetails.
+See [ImportFailureEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.ImportFailureEventArgs.html) for details such as `ErrorDetails`.
-The following example illustrates how to handle the ImportFailed event.
+The following example illustrates handling the `ImportFailed` event.
```cshtml
@@ -400,15 +400,15 @@ The following example illustrates how to handle the ImportFailed event.
```
-## ImportStarted Event
+## ImportStarted event
-The [ImportStarted](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_ImportStarted) event triggers when an imported annotations started in the PDF document.
+The [ImportStarted](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_ImportStarted) event triggers when annotation import starts.
-#### Event Arguments
+#### Event arguments
-See [ImportStartEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.ImportStartEventArgs.html) triggers when an imported annotations started in the PDF document.
+See [ImportStartEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.ImportStartEventArgs.html) for details about the import start event.
-The following example illustrates how to handle the ImportStarted event.
+The following example illustrates handling the `ImportStarted` event.
```cshtml
@@ -428,15 +428,15 @@ The following example illustrates how to handle the ImportStarted event.
```
-## ImportSucceed Event
+## ImportSucceed event
-The [ImportSucceed](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_ImportSucceed) event triggers when an imports annotations succeed in the PDF document.
+The [ImportSucceed](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_ImportSucceed) event triggers when annotation import succeeds.
-#### Event Arguments
+#### Event arguments
-See [ImportSuccessEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.ImportSuccessEventArgs.html) triggers when an imports annotations succeed in the PDF document.
+See [ImportSuccessEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.ImportSuccessEventArgs.html) for details about successful import.
-The following example illustrates how to handle the ImportSucceed event.
+The following example illustrates handling the `ImportSucceed` event.
```cshtml
@@ -456,15 +456,15 @@ The following example illustrates how to handle the ImportSucceed event.
```
-## MoveSignature Event
+## MoveSignature event
-The [MoveSignature](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_MoveSignature) event triggers when a signature is moved on a page in the PDF document.
+The [MoveSignature](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_MoveSignature) event triggers when a signature is moved on a page.
-#### Event Arguments
+#### Event arguments
-See [MoveSignatureEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.MoveSignatureEventArgs.html) for details such as Id, PageNumber, PreviousBounds, and Bounds.
+See [MoveSignatureEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.MoveSignatureEventArgs.html) for details such as `Id`, `PageNumber`, `PreviousBounds`, and `Bounds`.
-The following example illustrates how to handle the MoveSignature event.
+The following example illustrates handling the `MoveSignature` event.
```cshtml
@@ -484,15 +484,15 @@ The following example illustrates how to handle the MoveSignature event.
```
-## OnAnnotationDoubleClick Event
+## OnAnnotationDoubleClick event
The [OnAnnotationDoubleClick](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_OnAnnotationDoubleClick) event triggers when an annotation is double-clicked.
-#### Event Arguments
+#### Event arguments
-See [AnnotationDoubleClickEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.AnnotationDoubleClickEventArgs.html) for details such as AnnotationId, AnnotationType, PageNumber, and mouse position.
+See [AnnotationDoubleClickEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.AnnotationDoubleClickEventArgs.html) for details such as `AnnotationId`, `AnnotationType`, `PageNumber`, and mouse position.
-The following example illustrates how to handle the OnAnnotationDoubleClick event.
+The following example illustrates handling the `OnAnnotationDoubleClick` event.
```cshtml
@@ -512,15 +512,15 @@ The following example illustrates how to handle the OnAnnotationDoubleClick even
```
-## RemoveSignature Event
+## RemoveSignature event
-The [RemoveSignature](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_RemoveSignature) event triggers when a signature is removed from a page in the PDF document.
+The [RemoveSignature](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_RemoveSignature) event triggers when a signature is removed from a page.
-#### Event Arguments
+#### Event arguments
-See [RemoveSignatureEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.RemoveSignatureEventArgs.html) for details such as Id and PageNumber.
+See [RemoveSignatureEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.RemoveSignatureEventArgs.html) for details such as `Id` and `PageNumber`.
-The following example illustrates how to handle the RemoveSignature event.
+The following example illustrates handling the `RemoveSignature` event.
```cshtml
@@ -540,15 +540,15 @@ The following example illustrates how to handle the RemoveSignature event.
```
-## ResizeSignature Event
+## ResizeSignature event
-The [ResizeSignature](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_ResizeSignature) event triggers when a signature is resized on a page in the PDF document.
+The [ResizeSignature](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_ResizeSignature) event triggers when a signature is resized on a page.
-#### Event Arguments
+#### Event arguments
-See [ResizeSignatureEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.ResizeSignatureEventArgs.html) for details such as Id, PageNumber, PreviousBounds, and Bounds.
+See [ResizeSignatureEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.ResizeSignatureEventArgs.html) for details such as `Id`, `PageNumber`, `PreviousBounds`, and `Bounds`.
-The following example illustrates how to handle the ResizeSignature event.
+The following example illustrates handling the `ResizeSignature` event.
```cshtml
@@ -568,15 +568,15 @@ The following example illustrates how to handle the ResizeSignature event.
```
-## SignaturePropertiesChange Event
+## SignaturePropertiesChange event
-The [SignaturePropertiesChange](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_SignaturePropertiesChange) event triggers when the properties of a signature are changed on a page in the PDF document.
+The [SignaturePropertiesChange](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_SignaturePropertiesChange) event triggers when signature properties are changed on a page.
-#### Event Arguments
+#### Event arguments
-See [SignaturePropertiesChangeEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.SignaturePropertiesChangeEventArgs.html) for details such as Id, PageNumber, and changed property values.
+See [SignaturePropertiesChangeEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.SignaturePropertiesChangeEventArgs.html) for details such as `Id`, `PageNumber`, and changed property values.
-The following example illustrates how to handle the SignaturePropertiesChange event.
+The following example illustrates handling the `SignaturePropertiesChange` event.
```cshtml
@@ -596,15 +596,15 @@ The following example illustrates how to handle the SignaturePropertiesChange ev
```
-## SignatureSelected Event
+## SignatureSelected event
-The [SignatureSelected](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_SignatureSelected) event triggers when a signature is selected on a page in the PDF document.
+The [SignatureSelected](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_SignatureSelected) event triggers when a signature is selected on a page.
-#### Event Arguments
+#### Event arguments
-See [SignatureSelectedEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.SignatureSelectedEventArgs.html) for details such as Id and PageNumber.
+See [SignatureSelectedEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.SignatureSelectedEventArgs.html) for details such as `Id` and `PageNumber`.
-The following example illustrates how to handle the SignatureSelected event.
+The following example illustrates handling the `SignatureSelected` event.
```cshtml
@@ -624,15 +624,15 @@ The following example illustrates how to handle the SignatureSelected event.
```
-## SignatureUnselected Event
+## SignatureUnselected event
-The [SignatureUnselected](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_SignatureUnselected) event triggers when a signature is unselected on a page in the PDF document.
+The [SignatureUnselected](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_SignatureUnselected) event triggers when a signature is unselected on a page.
-#### Event Arguments
+#### Event arguments
-See [SignatureUnselectedEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.SignatureUnselectedEventArgs.html) for details such as Id and PageNumber.
+See [SignatureUnselectedEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.SignatureUnselectedEventArgs.html) for details such as `Id` and `PageNumber`.
-The following example illustrates how to handle the SignatureUnselected event.
+The following example illustrates handling the `SignatureUnselected` event.
```cshtml
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/annotation/import-export-annotation.md b/Document-Processing/PDF/PDF-Viewer/blazor/annotation/import-export-annotation.md
index 760d192609..8120064188 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/annotation/import-export-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/annotation/import-export-annotation.md
@@ -80,7 +80,7 @@ Supported formats:
[View sample in GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/tree/master/Annotations/Import-Export/Annotations%20as%20JSON%20object).
-N> Ensure that the JSON file used for importing annotations is available at the specified path. Paths are case-sensitive in some hosting environments.
+N> Ensure that the JSON file used for importing annotations is available at the specified path. Paths can be case-sensitive in some hosting environments.
## Exporting annotation from the PDF document
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/annotation/ink-annotation.md b/Document-Processing/PDF/PDF-Viewer/blazor/annotation/ink-annotation.md
index d18c5dcd7e..ff8723fb0c 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/annotation/ink-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/annotation/ink-annotation.md
@@ -116,7 +116,7 @@ Below is an example demonstrating how to add an ink annotation to a PDF document
PdfAnnotation annotation = new PdfAnnotation();
// Set the annotation type of Ink
annotation.Type = AnnotationType.Ink;
- // Set the PageNumber starts from 0. So, if set 0 it repersent the page 1.
+ // Page numbers start from 0. So, if set to 0 it represents page 1.
annotation.PageNumber = 0;
// Bound of the Ink annotation
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/annotation/measurement-annotation.md b/Document-Processing/PDF/PDF-Viewer/blazor/annotation/measurement-annotation.md
index 7ee13844f5..c8606668f3 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/annotation/measurement-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/annotation/measurement-annotation.md
@@ -24,11 +24,11 @@ The SfPdfViewer provides options to add and work with measurement annotations. U
Measurement annotations can be added using the annotation toolbar.
* Click the **Edit Annotation** button in the SfPdfViewer toolbar. A toolbar appears below it.
-* Click the **measurement Annotation** dropdown button. A dropdown pop-up appears with the available measurement annotation types.
+* Click the **measurement Annotation** dropdown button. A dropdown appears with the available measurement annotation types.
* Select a measurement type to enable that annotation mode.
* Click on the page to add and measure using the selected annotation.
-When a measurement mode is enabled while in Pan mode, the SfPdfViewer switches to Text Select mode.
+When a measurement mode is enabled while in Pan mode, the viewer automatically switches to Text Select mode.

@@ -219,7 +219,7 @@ The following example demonstrates adding a measurement annotation to a PDF docu
PdfAnnotation annotation = new PdfAnnotation();
// Set the annotation type of measurement annotation like radius, distance, perimeter, area, volume
annotation.Type = AnnotationType.Radius;
- // Set the PageNumber starts from 0. So, if set 0 it represents the page 1.
+ // Page numbers start from 0. So, if set to 0 it represents page 1.
annotation.PageNumber = 0;
// Bound of the radius annotation
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/annotation/shape-annotation.md b/Document-Processing/PDF/PDF-Viewer/blazor/annotation/shape-annotation.md
index f841b2833f..d8aa6f5ba9 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/annotation/shape-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/annotation/shape-annotation.md
@@ -28,7 +28,7 @@ Shape annotations can be added from the annotation toolbar.
* Choose a shape type to enable the corresponding drawing mode.
* Draw the selected shape on the PDF page.
-When the viewer is in pan mode and a shape drawing mode is activated, the control switches to text selection mode to enable drawing.
+When the viewer is in Pan mode and a shape drawing mode is activated, the viewer switches to Text Select mode.

@@ -161,7 +161,7 @@ The appearance of an annotation’s selector can be customized using [Annotation
@@ -188,7 +188,7 @@ The appearance of an annotation’s selector can be customized using [Annotation
[View sample in GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/tree/master/Annotations/Selector/Customize%20Annotation%20%20Selector).
-## Add shape annotation Programmatically
+## Add shape annotation programmatically
The Blazor SfPdfViewer supports programmatic creation of shape annotations Rectangle, Line, Arrow, Circle, and Polygon using [AddAnnotationAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_AddAnnotationAsync_Syncfusion_Blazor_SfPdfViewer_PdfAnnotation_). Ensure the document is loaded and the component reference is available before invoking API calls.
@@ -211,7 +211,7 @@ Below is an example demonstrating how to use this method to add a shape annotati
PdfAnnotation annotation = new PdfAnnotation();
// Set the Shape annotation type like Rectangle, Line, Arrow, Circle, Polygon.
annotation.Type = AnnotationType.Rectangle;
- // Set the page number starts from 0. So, if set 0 it represents the page 1.
+ // Page numbers start from 0. So, if set to 0 it represents page 1.
annotation.PageNumber = 0;
// Bound of the rectangle annotation
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/annotation/stamp-annotation.md b/Document-Processing/PDF/PDF-Viewer/blazor/annotation/stamp-annotation.md
index e3ddcd163b..df7e2357ab 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/annotation/stamp-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/annotation/stamp-annotation.md
@@ -33,7 +33,7 @@ Stamp annotations can be added using the annotation toolbar.
* Place the annotation on the desired page in the PDF document.
-When entering stamp mode while in pan mode, the SfPdfViewer automatically switches to text selection mode to enable annotation placement.
+When entering stamp mode while in Pan mode, the viewer switches to Text Select mode to enable annotation placement.
## Adding custom stamp to the PDF document through interaction
@@ -59,7 +59,7 @@ After changing the default opacity using the Edit Opacity tool, the currently se
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/annotation/sticky-notes-annotation.md b/Document-Processing/PDF/PDF-Viewer/blazor/annotation/sticky-notes-annotation.md
index cd69273b65..36e99f4bea 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/annotation/sticky-notes-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/annotation/sticky-notes-annotation.md
@@ -9,7 +9,7 @@ documentation: ug
# Sticky notes annotations in Blazor SfPdfViewer Component
-The SfPdfViewer control provides options to add, edit, and delete sticky notes annotations in a PDF document.
+The SfPdfViewer component provides options to add, edit, and delete sticky notes annotations in a PDF document.

@@ -121,9 +121,9 @@ Below is an example demonstrating how to add a sticky note annotation to a PDF d
public async void AddStickyNoteAnnotationAsync(MouseEventArgs args)
{
PdfAnnotation annotation = new PdfAnnotation();
- // Set the annotation type sticky note
+ // Set the annotation type to sticky note
annotation.Type = AnnotationType.StickyNotes;
- // Set the PageNumber starts from 0. So, if set 0 it represents the page 1.
+ // Page numbers start from 0. So, if set to 0 it represents page 1.
annotation.PageNumber = 0;
// Bound of the sticky note annotation
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/annotation/text-markup-annotation.md b/Document-Processing/PDF/PDF-Viewer/blazor/annotation/text-markup-annotation.md
index 03de3e168f..4c950a5c71 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/annotation/text-markup-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/annotation/text-markup-annotation.md
@@ -9,7 +9,7 @@ documentation: ug
# Text markup annotations in Blazor SfPdfViewer Component
-The SfPdfViewer control supports adding, editing, and deleting text markup annotations, including highlight, underline, strikethrough, and squiggly, in a PDF document.
+The SfPdfViewer component supports adding, editing, and deleting text markup annotations, including highlight, underline, strikethrough, and squiggly, in a PDF document.

@@ -37,7 +37,7 @@ There are two ways to highlight text in a PDF document.

-In pan mode, entering highlight mode switches the viewer to text select mode to enable text selection for highlighting.
+When entering highlight mode while in Pan mode, the viewer switches to Text Select mode to enable text selection for highlighting.
```cshtml
@@ -83,7 +83,7 @@ There are two ways to underline text in a PDF document.

-In pan mode, entering underline mode switches the viewer to text select mode to enable text selection for underlining.
+When entering underline mode while in Pan mode, the viewer switches to Text Select mode to enable text selection for underlining.
```cshtml
@@ -129,7 +129,7 @@ Using the context menu.

-In pan mode, entering strikethrough mode switches the viewer to text select mode to enable text selection for striking through.
+When entering strikethrough mode while in Pan mode, the viewer switches to Text Select mode to enable text selection for striking through.
```cshtml
@@ -174,7 +174,7 @@ Using the context menu.

-In pan mode, entering squiggly mode switches the viewer to text select mode to enable text selection for applying the squiggly annotation.
+When entering squiggly mode while in Pan mode, the viewer switches to Text Select mode to enable text selection for applying the squiggly annotation.
```cshtml
@@ -287,9 +287,9 @@ Below is an example demonstrating how to add a text markup annotation to a PDF d
public async void AddTextMarkupAnnotation(MouseEventArgs args)
{
PdfAnnotation annotation = new PdfAnnotation();
- // Set the Text markup annotation type like highlight, underline, strikethrough, Squiggly.
+ // Set the Text markup annotation type like highlight, underline, strikethrough, squiggly.
annotation.Type = AnnotationType.Highlight;
- // Set the PageNumber starts from 0. So, if set to 2 it represents the page 3.
+ // Page numbers start from 0. So, if set to 2 it represents page 3.
annotation.PageNumber = 2;
List bounds = new List();
Bound bound = new Bound();
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/command-manager.md b/Document-Processing/PDF/PDF-Viewer/blazor/command-manager.md
index c9b9114455..5eacf4fc76 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/command-manager.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/command-manager.md
@@ -9,25 +9,27 @@ documentation: ug
# Command Manager in Blazor SfPdfViewer Component
-The PDF viewer provides support to map or bind command execution with a desired combination of key gestures.
+The PDF Viewer supports mapping keyboard gestures to named commands so that pressing a defined key combination triggers a viewer action.
-The [PdfViewerCommandManager](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerCommandManager.html) provides support to define custom commands. These custom commands are executed when the specified key gesture is recognized.
+The [PdfViewerCommandManager](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerCommandManager.html) enables defining custom commands that execute when the specified key gesture is recognized.
-## Command Execution
-To execute custom commands, simply provide a list of keyboard shortcuts along with the corresponding actions. These actions will be triggered when the specified keyboard shortcuts are pressed.
+## Command execution
+Provide a list of keyboard shortcuts and corresponding action names; the viewer raises `CommandExecuted` when a registered shortcut is detected.
-* [Commands](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.KeyboardCommand.html): Defines the collection of custom keyboard shortcuts and the action names to execute in the PDF Viewer.
+- [Commands](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.KeyboardCommand.html): Defines the collection of custom keyboard shortcuts and their action names.
+- [CommandExecuted](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.CommandExecutedEventArgs.html): Raised when a registered keyboard shortcut is detected; handle this event to perform the action.
-* [CommandExecuted](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.CommandExecutedEventArgs.html): Raised when a registered keyboard shortcut is detected; handle this event to perform the action.
-
-## How to create custom command:
+## How to create a custom command
Create custom keyboard commands by specifying an action name and the corresponding key gesture for the PDF Viewer.
-* [ActionName](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.CommandExecutedEventArgs.html#Syncfusion_Blazor_SfPdfViewer_CommandExecutedEventArgs_ActionName): Specifies the name of the action to execute when the keyboard shortcut is pressed (for example, FitToWidth, FitToPage). The action name must correspond to a recognized PDF Viewer action.
+- [ActionName](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.CommandExecutedEventArgs.html#Syncfusion_Blazor_SfPdfViewer_CommandExecutedEventArgs_ActionName): The name of the action to execute when the keyboard shortcut is pressed (for example, `FitToWidth`, `FitToPage`). The action name must match a recognized viewer action.
+
+- [Gesture](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.KeyGesture.html): The combination of [keys](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.KeyGesture.html#Syncfusion_Blazor_SfPdfViewer_KeyGesture_Key) and [modifiers](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.KeyGesture.html#Syncfusion_Blazor_SfPdfViewer_KeyGesture_Modifiers) (Control, Shift, Alt, Meta). On macOS, Meta maps to the Command key.
-* [Gesture](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.KeyGesture.html): Specifies the combination of [keys](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.KeyGesture.html#Syncfusion_Blazor_SfPdfViewer_KeyGesture_Key) and [modifiers](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.KeyGesture.html#Syncfusion_Blazor_SfPdfViewer_KeyGesture_Modifiers), including Control, Shift, Alt or Meta key that are utilized within the PDF viewer. On macOS, Meta maps to the Command key.
+### Usage
+Register commands with `PdfViewerCommandManager` and handle `CommandExecuted` to invoke viewer methods (for example, `FitToWidthAsync` or `FitToPageAsync`). See the `CommandExecuted` API documentation for recognized action names and expected behavior.
-The following example registers two custom keyboard commands (FitToWidth and FitToPage) and handles them in CommandExecuted. The example uses SfPdfViewer2; use the component that matches the project version.
+The following example registers two custom keyboard commands (`FitToWidth` and `FitToPage`) and handles them in `CommandExecuted`. The example uses `SfPdfViewer2`; use the component that matches the project version.
```cshtml
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/document-security-overview.md b/Document-Processing/PDF/PDF-Viewer/blazor/document-security-overview.md
index c640a22822..4dc12ee31d 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/document-security-overview.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/document-security-overview.md
@@ -9,12 +9,12 @@ documentation: ug
# Document security in Blazor SfPdfViewer
-This article describes how the Blazor PDF Viewer (SfPdfViewer) handles secured PDF documents, including password-protected files and documents with permission restrictions. It also outlines expected behavior when opening these files and links to task-focused guides.
+This article explains how `SfPdfViewer` handles secured PDF documents, including password-protected files and documents with permission restrictions. It describes expected behavior when opening secured files and links to task-focused guides for implementation details.
-The PDF specification supports two primary security configurations:
+The PDF specification defines two common security configurations:
-- [Password-protected](./document-security/password-protected) (password required to decrypt and open the file)
-- [Permission-restricted](./document-security/permission) (owner password sets granular permissions such as printing, copying, editing, annotating, and form filling)
+- [Password-protected documents](./document-security/password-protected) — a password is required to decrypt and open the file.
+- [Permission-restricted documents](./document-security/permission) — an owner password sets granular permissions such as printing, copying, editing, annotating, and form filling.
Behavior and expectations:
- When a password-protected PDF is loaded, the viewer prompts for the password. If the password is incorrect or omitted, the document does not open.
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/events.md b/Document-Processing/PDF/PDF-Viewer/blazor/events.md
index 0ab404e7e8..10398e9e2b 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/events.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/events.md
@@ -27,45 +27,45 @@ The following events are available in the SfPdfViewer component.
|[DocumentEdited](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_DocumentEdited)|Triggers when the PDF document is edited in the SfPdfViewer.|
|[DocumentLoaded](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_DocumentLoaded)|Triggers when a document is loaded into the PDF Viewer.|
|[DocumentLoadFailed](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_DocumentLoadFailed)|Triggers when loading a document into the PDF Viewer fails.|
-|[DcoumentUnloaded](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_DocumentUnloaded)|Triggers when the document is closed.|
+|[DocumentUnloaded](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_DocumentUnloaded)|Triggers when the document is closed.|
|[DownloadEnd](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_DownloadEnd)|Triggers when a download action is completed.|
|[DownloadStart](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_DownloadStart)|Triggers when a download action starts.|
|[ExportFailed](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_ExportFailed)|Triggers when exporting annotations fails in the SfPdfViewer.|
|[ExportStarted](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_ExportStarted)|Triggers when exporting annotations starts in the SfPdfViewer.|
|[ExportSucceed](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_ExportSucceed)|Triggers when exporting annotations succeeds in the SfPdfViewer.|
|[ExtractTextCompleted](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_ExtractTextCompleted)|Triggers when text extraction is completed in the SfPdfViewer.|
-|[FormFieldAdded](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldAdded)|Triggered when a form field is added to the PDF document.|
-|[FormFieldAdding](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldAdding)|Triggered before a new form field is added, allowing validation before insertion.|
-|[FormFieldClick](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldClick)|Triggered when a user clicks on a form field while designer mode is off.|
-|[FormFieldDeleted](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldDeleted)|Triggered when a form field is removed from the document.|
-|[FormFieldDoubleClick](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldDoubleClick)|Triggered when a form field is double-clicked.|
-|[FormFieldFocusIn](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldFocusIn)|Triggered when focus enters a form field.|
-|[FormFieldFocusOut](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldFocusOut)|Triggered when focus leaves a form field.|
-|[FormFieldMouseEnter](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldMouseEnter)|Triggered when the mouse hovers over a form field.|
-|[FormFieldMouseLeave](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldMouseLeave)|Triggered when the mouse leaves a form field.|
-|[FormFieldPropertyChanged](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldPropertyChanged)|Triggered when a form field's properties are modified.|
-|[FormFieldResized](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldResized)|Triggered when a form field is resized.|
-|[FormFieldSelected](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldSelected)|Triggered when a form field is selected.|
-|[FormFieldsExported](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldsExported)|Triggered when form fields are successfully exported.|
-|[FormFieldsExportFailed](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldsExportFailed)|Triggered when form fields export operation fails.|
-|[FormFieldsExporting](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldsExporting)|Triggered before form fields are exported, allowing customization of the export process.|
-|[FormFieldsImported](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldsImported)|Triggered when form fields are successfully imported.|
-|[FormFieldsImportFailed](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldsImportFailed)|Triggered when form fields import operation fails.|
-|[FormFieldsImporting](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldsImporting)|Triggered before form fields are imported, allowing validation or modifications.|
-|[FormFieldUnselected](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldUnselected)|Triggered when a form field is unselected.|
-|[ImportFailed](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_ImportFailed)|Triggers when importing annotations fails in the PDF document.|
-|[ImportStarted](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_ImportStarted)|Triggers when importing annotations starts in the PDF document.|
-|[ImportSucceed](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_ImportSucceed)|Triggers when importing annotations succeeds in the PDF document.|
+|[FormFieldAdded](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldAdded)|Triggers when a form field is added to the PDF document.|
+|[FormFieldAdding](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldAdding)|Triggers before a new form field is added, allowing validation before insertion.|
+|[FormFieldClick](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldClick)|Triggers when a user clicks on a form field while designer mode is off.|
+|[FormFieldDeleted](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldDeleted)|Triggers when a form field is removed from the document.|
+|[FormFieldDoubleClick](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldDoubleClick)|Triggers when a form field is double-clicked.|
+|[FormFieldFocusIn](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldFocusIn)|Triggers when focus enters a form field.|
+|[FormFieldFocusOut](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldFocusOut)|Triggers when focus leaves a form field.|
+|[FormFieldMouseEnter](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldMouseEnter)|Triggers when the mouse hovers over a form field.|
+|[FormFieldMouseLeave](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldMouseLeave)|Triggers when the mouse leaves a form field.|
+|[FormFieldPropertyChanged](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldPropertyChanged)|Triggers when a form field's properties are modified.|
+|[FormFieldResized](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldResized)|Triggers when a form field is resized.|
+|[FormFieldSelected](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldSelected)|Triggers when a form field is selected.|
+|[FormFieldsExported](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldsExported)|Triggers when form fields are successfully exported.|
+|[FormFieldsExportFailed](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldsExportFailed)|Triggers when form fields export operation fails.|
+|[FormFieldsExporting](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldsExporting)|Triggers before form fields are exported, allowing customization of the export process.|
+|[FormFieldsImported](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldsImported)|Triggers when form fields are successfully imported.|
+|[FormFieldsImportFailed](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldsImportFailed)|Triggers when form fields import operation fails.|
+|[FormFieldsImporting](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldsImporting)|Triggers before form fields are imported, allowing validation or modifications.|
+|[FormFieldUnselected](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_FormFieldUnselected)|Triggers when a form field is unselected.|
+|[ImportFailed](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_ImportFailed)|Triggers when importing annotations fails in the PDF document.|
+|[ImportStarted](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_ImportStarted)|Triggers when importing annotations starts in the PDF document.|
+|[ImportSucceed](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_ImportSucceed)|Triggers when importing annotations succeeds in the PDF document.|
|[MoveSignature](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_MoveSignature)|Triggers when a signature is moved on a page in the PDF document.|
|[OnAnnotationDoubleClick](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_OnAnnotationDoubleClick)|Triggers when an annotation is double-clicked.|
|[OnHyperlinkClick](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_OnHyperlinkClick)|Triggers when a hyperlink in the PDF document is clicked.|
|[OnHyperlinkMouseOver](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_OnHyperlinkMouseOver)|Triggers when a hyperlink in the PDF document is hovered.|
|[OnPageClick](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_OnPageClick)|Triggers when a mouse click is performed on a page in the PDF document.|
-|[OnTextSearchComplete](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_OnTextSearchComplete)|Triggers when a text search is completed.|
-|[OnTextSearchHighlight](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_OnTextSearchHighlight)|Triggers when searched text is highlighted.|
-|[OnTextSearchStart](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_OnTextSearchStart)|Triggers when a text search starts.|
-|[OnTextSelectionEnd](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_OnTextSelectionEnd)|Triggers when text selection ends.|
-|[OnTextSelectionStart](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_OnTextSelectionStart)|Triggers when text selection starts.|
+|[OnTextSearchComplete](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_OnTextSearchComplete)|Triggers when a text search is completed.|
+|[OnTextSearchHighlight](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_OnTextSearchHighlight)|Triggers when searched text is highlighted.|
+|[OnTextSearchStart](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_OnTextSearchStart)|Triggers when a text search starts.|
+|[OnTextSelectionEnd](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_OnTextSelectionEnd)|Triggers when text selection ends.|
+|[OnTextSelectionStart](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_OnTextSelectionStart)|Triggers when text selection starts.|
|[OnThumbnailClick](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_OnThumbnailClick)|Triggers when a thumbnail is clicked in the thumbnail panel of the SfPdfViewer.|
|[PageChanged](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_PageChanged)|Triggers when the current page number changes.|
|[PageMouseover](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_PageMouseover)|Triggers when the mouse pointer moves over a page.|
@@ -76,8 +76,8 @@ The following events are available in the SfPdfViewer component.
|[SignaturePropertiesChange](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_SignaturePropertiesChange)|Triggers when the properties of a signature are changed on a page in the PDF document.|
|[SignatureSelected](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_SignatureSelected)|Triggers when a signature is selected on a page in the PDF document.|
|[SignatureUnselected](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_SignatureUnselected)|Triggers when a signature is unselected on a page in the PDF document.|
-|[ToolbarClicked](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_ToolbarClicked)|Triggers an event when a Custom Toolbar Item is clicked in the Toolbar.|
-|[ValidateFormFields](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_ValidateFormFields)|Triggered when form fields are validated.|
+|[ToolbarClicked](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_ToolbarClicked)|Triggers when a custom toolbar item is clicked in the toolbar.|
+|[ValidateFormFields](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_ValidateFormFields)|Triggers when form fields are validated.|
|[ZoomChanged](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_ZoomChanged)|Triggers when the magnification value changes.|
## Adding SfPdfViewer events to Blazor component
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/faq.md b/Document-Processing/PDF/PDF-Viewer/blazor/faq.md
index 9887911505..ad794b48f0 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/faq.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/faq.md
@@ -7,9 +7,9 @@ control: SfPdfViewer
documentation: ug
---
-# Frequently Asked Questions Section in Blazor SfPdfViewer Component
+# Frequently Asked Questions in Blazor SfPdfViewer Component
-The frequently asked questions in Syncfusion Blazor PDF Viewer
+Common questions and answers for using the Syncfusion Blazor SfPdfViewer component.
* [How to Load PDF from URL to server-side PDF viewer?](./faqs/how-to-load-PDF-from-URL-to-server-side-PDF-viewer)
* [How to Create a SfPdfViewer within a popup window in Blazor?](./faqs/how-to-create-sfpdfviewer-in-a-popup-window)
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-change-the-highlighted-color-of-the-text.md b/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-change-the-highlighted-color-of-the-text.md
index 53c53099be..4b080c32f0 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-change-the-highlighted-color-of-the-text.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-change-the-highlighted-color-of-the-text.md
@@ -9,9 +9,9 @@ documentation: ug
# Change the highlight color of the text in Blazor SfPdfViewer Component
-Use the `Color` property of the [PdfViewerHighlightSettings](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerHighlightSettings.html) class to set the default highlight color for the Highlight text markup annotation. This setting applies only to Highlight annotations. Other text markup types (such as Underline or Strikethrough) have their own settings.
+Use the `Color` property of [PdfViewerHighlightSettings](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerHighlightSettings.html) to set the default highlight color for text markup highlights. This applies only to Highlight annotations; other text-markup types (such as Underline or Strikethrough) use their own settings.
-The following code illustrates how to change the highlight color of the text.
+The following example shows how to set the highlight color.
```cshtml
@using Syncfusion.Blazor.Buttons
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-check-status-of-annotations-or-comments.md b/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-check-status-of-annotations-or-comments.md
index a7f109c11f..762ba0719e 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-check-status-of-annotations-or-comments.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-check-status-of-annotations-or-comments.md
@@ -16,7 +16,7 @@ The following code example shows how to obtain the review status of each annotat
```cshtml
@using Syncfusion.Blazor.SfPdfViewer
@using Syncfusion.Blazor.Buttons
-@inject IJSRuntime JsRuntime;
+@inject IJSRuntime JsRuntime
Review Status
@code{
- public SfPdfViewer Viewer { get; set; }
+ public SfPdfViewer2 Viewer { get; set; }
private string DocumentPath { get; set; } = "Data/PDF_Succinctly.pdf";
- //Prints the document's edited status in console window.
+ // Logs the document's edited status to the console (null-safe).
public void OnClick(MouseEventArgs args)
{
Console.WriteLine(Viewer.IsDocumentEdited);
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-configure-content-security-policy.md b/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-configure-content-security-policy.md
index 3794b3df7a..d5bec77472 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-configure-content-security-policy.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-configure-content-security-policy.md
@@ -11,7 +11,7 @@ documentation: ug
Content Security Policy (CSP) is a browser security mechanism that mitigates attacks such as cross-site scripting (XSS) and data injection by restricting the allowed sources for loaded content.
-When enforcing a strict [Content Security Policy (CSP)](https://csp.withgoogle.com/docs/strict-csp.html), some features are blocked by default. To use the Blazor SfPdfViewer under strict CSP, include the following directives in the CSP meta tag.
+When enforcing a strict [Content Security Policy (CSP)](https://csp.withgoogle.com/docs/strict-csp.html), some browser features are blocked by default. To use the Blazor `SfPdfViewer` with a strict CSP, add the directives below to your CSP meta tag.
* The SfPdfViewer renders calculated inline styles and Base64 font icons, which are blocked by strict CSP. Allow these by adding the [`style-src 'self' 'unsafe-inline' blob:`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/style-src) and [`font-src 'self' data:`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/font-src) directives.
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-coordinate-conversion-between-page-and-client-points.md b/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-coordinate-conversion-between-page-and-client-points.md
index fdc09b7a2a..80dc6f380d 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-coordinate-conversion-between-page-and-client-points.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-coordinate-conversion-between-page-and-client-points.md
@@ -126,7 +126,7 @@ window.convertClientPointToPagePoint = function (clientPoint) {
-
+
ArrowSettings controls the default arrow head styles for annotations created using the toolbar or programmatically. Set LineHeadStartStyle and LineHeadEndStyle to LineHeadStyle.None to remove heads. Other common values include LineHeadStyle.Closed, LineHeadStyle.Round, LineHeadStyle.Square, LineHeadStyle.ClosedArrow, LineHeadStyle.Diamond and LineHeadStyle.Open.
+N> ArrowSettings controls the default arrow head styles for annotations created using the toolbar or programmatically. Set `LineHeadStartStyle` and `LineHeadEndStyle` to `LineHeadStyle.None` to remove heads. Other common values include `LineHeadStyle.Closed`, `LineHeadStyle.Round`, `LineHeadStyle.Square`, `LineHeadStyle.ClosedArrow`, `LineHeadStyle.Diamond`, and `LineHeadStyle.Open`.
[View sample in GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/tree/master/Annotations/Shapes/Remove%20arrow%20annotation%20heads).
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-deploy-maui-using-android-emulator.md b/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-deploy-maui-using-android-emulator.md
index 6cb3bd4f9a..706fdd5c69 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-deploy-maui-using-android-emulator.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-deploy-maui-using-android-emulator.md
@@ -77,7 +77,7 @@ N> For emulator issues, see Troubleshooting Android Emulator: https://learn.micr

->[View sample on GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/tree/master/Getting%20Started/MAUI%20Blazor%20App/MauiBlazorAndroid).
+N> [View sample on GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/tree/master/Getting%20Started/Blazor%20Hybrid%20-%20.NET%20MAUI/MauiBlazorAndroid).
## See also
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-extract-particular-text-and-highlight.md b/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-extract-particular-text-and-highlight.md
index 22eea852d6..a375f54f70 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-extract-particular-text-and-highlight.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-extract-particular-text-and-highlight.md
@@ -17,7 +17,7 @@ The following code example demonstrates how to extract text from a PDF document
```cshtml
@page "/"
-@using Microsoft.Extensions.Caching.Memory
+@using Microsoft.Extensions.Caching.Memory;
@using Syncfusion.Blazor.Popups;
@using Syncfusion.Blazor.Buttons;
@using Syncfusion.Blazor.Navigations;
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-load-desired-pdf-for-initial-loading-in-hosted-sample.md b/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-load-desired-pdf-for-initial-loading-in-hosted-sample.md
index fdbfe00683..2b108bb216 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-load-desired-pdf-for-initial-loading-in-hosted-sample.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-load-desired-pdf-for-initial-loading-in-hosted-sample.md
@@ -15,7 +15,7 @@ Load a specific PDF on initial display and change the document at runtime in the
@inject HttpClient Http;
@using Syncfusion.Blazor.Buttons;
-@using Syncfusion.Blazor.SfPdfViewer
+@using Syncfusion.Blazor.SfPdfViewer;
Load Another Document
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-load-office-files.md b/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-load-office-files.md
index ab0cd41fd1..273c773c0a 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-load-office-files.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-load-office-files.md
@@ -19,8 +19,8 @@ In the following example, a Word document is converted to a PDF and then loaded
```cshtml
@page "/"
-@using Syncfusion.Blazor.SfPdfViewer
-@using Syncfusion.Blazor.Buttons
+@using Syncfusion.Blazor.SfPdfViewer;
+@using Syncfusion.Blazor.Buttons;
@using Syncfusion.Pdf;
@using Syncfusion.Pdf.Graphics;
@using Syncfusion.Pdf.Interactive;
@@ -32,7 +32,7 @@ In the following example, a Word document is converted to a PDF and then loaded
@using Syncfusion.Presentation;
@using Syncfusion.PresentationRenderer;
@using Syncfusion.XlsIO;
-@using Syncfusion.XlsIORenderer
+@using Syncfusion.XlsIORenderer;
@using Syncfusion.DocIORenderer;
@using System.IO;
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-render-ej2-pdf-viewer-in-blazor.md b/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-render-ej2-pdf-viewer-in-blazor.md
index 2d7f6f9a67..3091e9078e 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-render-ej2-pdf-viewer-in-blazor.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-render-ej2-pdf-viewer-in-blazor.md
@@ -13,7 +13,7 @@ The Syncfusion® Blazor SfPdfViewer component supports rendering the EJ2 Java
The following steps show how to embed the JavaScript PDF Viewer in a Blazor component.
->Note: Ensure that the EJ2 PDF Viewer scripts and styles are referenced in the application, and that the serviceUrl points to a reachable EJ2 PDF Viewer web service endpoint.
+N> Ensure that the EJ2 PDF Viewer scripts and styles are referenced in the application, and that the serviceUrl points to a reachable EJ2 PDF Viewer web service endpoint.
**Step 1:** Add a JavaScript file to the application and reference it in the head element.
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-show-or-hide-sfpdfviewer-dynamically.md b/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-show-or-hide-sfpdfviewer-dynamically.md
index f8f8fa378d..8614e7425e 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-show-or-hide-sfpdfviewer-dynamically.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/faqs/how-to-show-or-hide-sfpdfviewer-dynamically.md
@@ -13,7 +13,7 @@ The following example initializes the PDF Viewer hidden and toggles its visibili
```cshtml
-@using Syncfusion.Blazor.Buttons
+@using Syncfusion.Blazor.Buttons;
@using Syncfusion.Blazor.SfPdfViewer;
@using System.Net;
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/form-designer/create-programmatically.md b/Document-Processing/PDF/PDF-Viewer/blazor/form-designer/create-programmatically.md
index 3df735ab23..8674c8d791 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/form-designer/create-programmatically.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/form-designer/create-programmatically.md
@@ -9,15 +9,15 @@ documentation: ug
# Programmatic Support for Form Designer in Blazor PDF Viewer
-The Blazor SfPdfViewer component provides programmatic control over PDF form fields, enabling creation, update, and management entirely through code for automated and reliable form workflows.
+The Blazor SfPdfViewer component provides programmatic APIs to create, update, and manage PDF form fields, enabling automated and reliable form workflows.
-N> Programmatic operations do not require enabling the Form Designer UI. Ensure a document is loaded and an instance reference (for example, SfPdfViewer2 via @ref) is available before invoking API methods.
+N> Programmatic operations do not require the Form Designer UI. Ensure a document is loaded and an instance reference (for example, `SfPdfViewer2` via `@ref`) is available before invoking API methods.
## Adding Form Fields Programmatically
-The Blazor SfPdfViewer offers a way to add form fields programmatically using the [AddFormFieldsAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_AddFormFieldsAsync_System_Collections_Generic_List_Syncfusion_Blazor_SfPdfViewer_FormFieldInfo__) method. This method accepts a list of [FormFieldInfo](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldInfo.html) objects, where each object represents a form field (for example, ButtonField, TextBoxField, PasswordField, CheckBoxField, RadioButtonField, DropDownField, ListBoxField, SignatureField) with specific properties and [Bound](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.Bound.html) coordinates.
+The [AddFormFieldsAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_AddFormFieldsAsync_System_Collections_Generic_List_Syncfusion_Blazor_SfPdfViewer_FormFieldInfo__) API accepts a list of [FormFieldInfo](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldInfo.html) instances. Each instance defines a form field type (for example, `ButtonField`, `TextBoxField`, `PasswordField`, `CheckBoxField`, `RadioButtonField`, `DropDownField`, `ListBoxField`, `SignatureField`) and its [Bound](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.Bound.html) coordinates.
-The example below demonstrates how to add form fields in the SfPdfViewer2 component:
+The example below demonstrates adding form fields to the SfPdfViewer2 component:
```cshtml
@page "/"
@@ -68,9 +68,7 @@ N> Form fields can also be added interactively using the Form Designer UI for an
## Form Field Settings
-The Blazor SfPdfViewer provides [FormFieldSettings](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldSettings.html) to configure form field appearance, including borders, background, text styles, and related properties.
-
-The example below demonstrates configuring [thickness](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldSettings.html#Syncfusion_Blazor_SfPdfViewer_FormFieldSettings_Thickness). Additional options include [background color](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldSettings.html#Syncfusion_Blazor_SfPdfViewer_FormFieldSettings_BackgroundColor), [border color](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldSettings.html#Syncfusion_Blazor_SfPdfViewer_FormFieldSettings_BorderColor), [text color](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldSettings.html#Syncfusion_Blazor_SfPdfViewer_FormFieldSettings_Color), [font family](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldSettings.html#Syncfusion_Blazor_SfPdfViewer_FormFieldSettings_FontFamily), [font size](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldSettings.html#Syncfusion_Blazor_SfPdfViewer_FormFieldSettings_FontSize), and [font style](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldSettings.html#Syncfusion_Blazor_SfPdfViewer_FormFieldSettings_FontStyle).
+The Blazor SfPdfViewer provides [FormFieldSettings](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldSettings.html) to configure form field appearance, including border thickness, background color, text color, font family, and font size. The example below demonstrates adjusting [thickness](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldSettings.html#Syncfusion_Blazor_SfPdfViewer_FormFieldSettings_Thickness); additional appearance options are available.
```cshtml
@page "/"
@@ -168,10 +166,10 @@ The following image illustrates setting and clearing the form field mode in Blaz
## Update Form Fields
-Form fields can be modified dynamically by retrieving them with [GetFormFieldsAsync()](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_GetFormFieldsAsync) and applying changes using [UpdateFormFieldsAsync()](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_UpdateFormFieldsAsync_Syncfusion_Blazor_SfPdfViewer_FormField_). Use null/empty checks and batch updates to efficiently apply multiple changes.
+Form fields can be retrieved with [GetFormFieldsAsync()](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_GetFormFieldsAsync) and updated with [UpdateFormFieldsAsync()](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_UpdateFormFieldsAsync_Syncfusion_Blazor_SfPdfViewer_FormField_). Use null/empty checks and batch updates to apply multiple changes efficiently.
### Appearance Properties
-Controls the visual aspects of form fields, including [background color](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldInfo.html#Syncfusion_Blazor_SfPdfViewer_FormFieldInfo_BackgroundColor), [border color](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldInfo.html#Syncfusion_Blazor_SfPdfViewer_FormFieldInfo_BorderColor), [text color](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldInfo.html#Syncfusion_Blazor_SfPdfViewer_FormFieldInfo_Color), [thickness](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldInfo.html#Syncfusion_Blazor_SfPdfViewer_FormFieldInfo_Thickness), [maxLength](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.TextBoxField.html#Syncfusion_Blazor_SfPdfViewer_TextBoxField_MaxLength), [visibility](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldInfo.html#Syncfusion_Blazor_SfPdfViewer_FormFieldInfo_Visibility), [font size](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldInfo.html#Syncfusion_Blazor_SfPdfViewer_FormFieldInfo_FontSize), [font family](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldInfo.html#Syncfusion_Blazor_SfPdfViewer_FormFieldInfo_FontFamily), [font style](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldInfo.html#Syncfusion_Blazor_SfPdfViewer_FormFieldInfo_FontStyle), and [text alignment](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldInfo.html#Syncfusion_Blazor_SfPdfViewer_FormFieldInfo_TextAlignment). These properties customize the visual presentation of fields.
+Appearance properties control the visual aspects of form fields, including [background color](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldInfo.html#Syncfusion_Blazor_SfPdfViewer_FormFieldInfo_BackgroundColor), [border color](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldInfo.html#Syncfusion_Blazor_SfPdfViewer_FormFieldInfo_BorderColor), [text color](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldInfo.html#Syncfusion_Blazor_SfPdfViewer_FormFieldInfo_Color), [thickness](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldInfo.html#Syncfusion_Blazor_SfPdfViewer_FormFieldInfo_Thickness), [maxLength](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.TextBoxField.html#Syncfusion_Blazor_SfPdfViewer_TextBoxField_MaxLength), [visibility](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldInfo.html#Syncfusion_Blazor_SfPdfViewer_FormFieldInfo_Visibility), [font size](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldInfo.html#Syncfusion_Blazor_SfPdfViewer_FormFieldInfo_FontSize), [font family](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldInfo.html#Syncfusion_Blazor_SfPdfViewer_FormFieldInfo_FontFamily), [font style](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldInfo.html#Syncfusion_Blazor_SfPdfViewer_FormFieldInfo_FontStyle), and [text alignment](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldInfo.html#Syncfusion_Blazor_SfPdfViewer_FormFieldInfo_TextAlignment). These properties allow precise control over field presentation.
```cshtml
@page "/"
@@ -216,7 +214,7 @@ The following image illustrates updating the appearance of a button form field i
[View sample in GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/blob/master/Form%20Designer/Components/Pages/UpdateApperanceProperties.razor).
### Identification & Metadata Properties
-Use [name](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.ListItem.html#Syncfusion_Blazor_SfPdfViewer_ListItem_Name) (identifier) and [value](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.ListItem.html#Syncfusion_Blazor_SfPdfViewer_ListItem_Value) (display/value data) on dropdown [ListItem] entries to define item metadata. These properties help organize options and manage related form fields effectively.
+Use [name](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.ListItem.html#Syncfusion_Blazor_SfPdfViewer_ListItem_Name) (identifier) and [value](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.ListItem.html#Syncfusion_Blazor_SfPdfViewer_ListItem_Value) (display/value data) on dropdown [ListItem] entries to define item metadata. These values improve option organization and facilitate management of related form fields.
```cshtml
@page "/"
@@ -258,7 +256,7 @@ The following image illustrates updating the metadata of a dropdown field in Bla
### Grouping and Synchronizing Form Fields Properties
-When multiple fields share the same name, changes apply to all linked fields. Updates to [Value](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.TextBoxField.html#Syncfusion_Blazor_SfPdfViewer_TextBoxField_Value), [Required](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldInfo.html#Syncfusion_Blazor_SfPdfViewer_FormFieldInfo_IsRequired), [Readonly](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldInfo.html#Syncfusion_Blazor_SfPdfViewer_FormFieldInfo_IsReadOnly), [Multiline](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.TextBoxField.html#Syncfusion_Blazor_SfPdfViewer_TextBoxField_IsMultiline), and [Tooltip](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldInfo.html#Syncfusion_Blazor_SfPdfViewer_FormFieldInfo_TooltipText) reflect instantly. This ensures consistency across the document.
+When multiple fields share the same name, updates apply to all linked fields. Changes to [Value](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.TextBoxField.html#Syncfusion_Blazor_SfPdfViewer_TextBoxField_Value), [Required](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldInfo.html#Syncfusion_Blazor_SfPdfViewer_FormFieldInfo_IsRequired), [Readonly](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldInfo.html#Syncfusion_Blazor_SfPdfViewer_FormFieldInfo_IsReadOnly), [Multiline](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.TextBoxField.html#Syncfusion_Blazor_SfPdfViewer_TextBoxField_IsMultiline), and [Tooltip](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldInfo.html#Syncfusion_Blazor_SfPdfViewer_FormFieldInfo_TooltipText) propagate instantly, ensuring document-wide consistency.
```cshtml
@page "/"
@@ -294,7 +292,7 @@ N> Users can also update form fields through the UI in SfPdfViewer for an intuit
## Delete Form Fields
-The [DeleteFormFieldsAsync()](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_DeleteFormFieldsAsync_System_Boolean_) method enables the removal of form fields from the document, allowing users to manage and modify form structures efficiently.
+The [DeleteFormFieldsAsync()](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_DeleteFormFieldsAsync_System_Boolean_) method removes form fields from the document, enabling efficient management of form structures.
### Delete All Form Fields
Removes all form fields from the document using [DeleteFormFieldsAsync()](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_DeleteFormFieldsAsync_System_Boolean_) , clearing all interactive elements at once.
@@ -404,7 +402,7 @@ N> Users can also delete form fields through the UI in SfPdfViewer for an intuit
## Select Form Field
-Form fields can be programmatically selected using the [SelectFormFieldAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_SelectFormFieldAsync_Syncfusion_Blazor_SfPdfViewer_FormFieldInfo_) method. Selection is supported either by unique ID or by passing the form field object reference.
+Form fields can be selected programmatically using [SelectFormFieldAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_SelectFormFieldAsync_Syncfusion_Blazor_SfPdfViewer_FormFieldInfo_). Selection supports either the field's unique ID or its object reference.
### Select Form Field by ID
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/form-designer/custom-font.md b/Document-Processing/PDF/PDF-Viewer/blazor/form-designer/custom-font.md
index f57b7d4b57..191fd39846 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/form-designer/custom-font.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/form-designer/custom-font.md
@@ -9,11 +9,11 @@ documentation: ug
# Custom Font Support for Form Fields
-The Blazor SfPdfViewer supports loading, editing, and saving custom fonts in form fields such as text boxes, list boxes, and drop-downs by using the [FallbackFontCollection](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_FallbackFontCollection) and [FontFamilies](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_FontFamilies) properties.
+The Blazor SfPdfViewer supports loading, using, and saving custom fonts for form fields (TextBox, ListBox, DropDown) via the [FallbackFontCollection](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_FallbackFontCollection) and `FontFamilies` properties.
## Integrating Custom Font Collections into Form Fields in SfPdfViewer
-To ensure proper rendering and saving of form fields that use custom fonts, especially when the fonts are not installed on the system, set the FallbackFontCollection property. Additionally, load custom fonts (TTF files) and expose them in the Font Family drop-down of the property dialog by using the FontFamilies property (string array). These fonts can then be used seamlessly in form fields for loading, editing, and saving.
+To ensure correct rendering and saving of form fields that use custom fonts (especially when fonts are not installed on the host system), set the `FallbackFontCollection` property and load the TTF files the application can access. Add those font family names to the `FontFamilies` (string[]) property so the fonts appear in the Font Family dropdown in the property dialog. Ensure TTF files are available at the configured path (for example, `wwwroot/Data`) and that font licenses permit distribution with the application.
```cshtml
@page "/"
@@ -44,15 +44,15 @@ To ensure proper rendering and saving of form fields that use custom fonts, espe
[View sample in GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/tree/master/Common/Custom%20Font%20Support%20For%20FormFields).
->**Note:** If a form field (TextBox, ListBox, DropDown) using a custom font has text larger than the field’s bounds, the downloaded PDF may render incorrectly in browsers or third‑party viewers. It displays correctly in the Syncfusion SfPdfViewer. To avoid this, use a font size that fits within the field or enlarge the field before saving/downloading.
+N> If a form field (TextBox, ListBox, DropDown) using a custom font contains text larger than the field’s bounds, the downloaded PDF may render differently in some browsers or third‑party viewers. The Syncfusion SfPdfViewer renders these fields correctly. To avoid rendering issues, use a font size that fits the field, enlarge the field prior to saving, or adjust layout before downloading.
## Custom Font Support for Signature Fields
-The Blazor SfPdfViewer allows loading, editing, and saving custom fonts in signature fields by using the [FallbackFontCollection](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_FallbackFontCollection) and [SignatureFonts](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerSignatureDialogSettings.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerSignatureDialogSettings_SignatureFonts) properties.
+The Blazor SfPdfViewer allows loading, editing, and saving custom fonts for signature fields by using the [FallbackFontCollection](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_FallbackFontCollection) and [SignatureFonts](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerSignatureDialogSettings.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerSignatureDialogSettings_SignatureFonts) properties.
### Integrating Custom Font Collections into Signature Fields in SfPdfViewer
-To ensure proper rendering and saving of signatures that use custom fonts, especially when the fonts are not installed on the system, set the FallbackFontCollection property. Additionally, load custom fonts (TTF files), add them to the signature dialog by using the SignatureFonts property (string array), and use them seamlessly in signature fields for loading, editing, and saving.
+To ensure correct rendering and saving of signatures that use custom fonts (especially when those fonts are not installed on the host system), set the `FallbackFontCollection` property and load the TTF files the application can access. Add the font family names to the `SignatureFonts` (string[]) property so they appear in the signature dialog. Verify that the font files are reachable at the configured path (for example, `wwwroot/Data`) and that licensing allows distribution.
```cshtml
@page "/"
@@ -68,7 +68,7 @@ To ensure proper rendering and saving of signatures that use custom fonts, espec
private string DocumentPath { get; set; } = "wwwroot/Data/With_Four_Signature_Fields.pdf";
// Use the FontFamilies property to add custom font families to the Font Family dropdown in the annotation toolbar
- public string[] signatureFonts = { "Allura", "Tangerine, "Sacramento", "Inspiration" };
+ public string[] signatureFonts = { "Allura", "Tangerine", "Sacramento", "Inspiration" };
public void Created()
{
@@ -85,7 +85,7 @@ To ensure proper rendering and saving of signatures that use custom fonts, espec
[View sample in GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/tree/master/Common/Custom%20Font%20Support%20For%20Signature%20Field).
-When using Google Fonts or other externally hosted fonts with the PDF Viewer, load the fonts in the application to ensure consistent rendering. This is required because FreeText annotations render directly onto the canvas and need the fonts to be available in the hosting environment.
+When using Google Fonts or other externally hosted fonts with the PDF Viewer, load the fonts in the application to ensure consistent rendering. This is required because FreeText annotations render directly onto the canvas and need the fonts available in the hosting environment.
The following example illustrates how to load custom fonts in FreeText annotations using fonts from Google Fonts or other external sources.
@@ -105,7 +105,7 @@ The following example illustrates how to load custom fonts in FreeText annotatio
```
->**Note:** If external fonts are not loaded in the environment, importing and rendering FreeText annotations that reference those fonts may show minor differences. This typically occurs only with fonts referenced from web-based sources.
+N> If external fonts are not loaded in the environment, importing and rendering FreeText annotations that reference those fonts may show minor differences. This typically occurs only with fonts referenced from web-based sources.
[View sample in GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/tree/master/Annotations/FreeText/Load%20Custom%20Font%20From%20External%20Links).
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/form-designer/events.md b/Document-Processing/PDF/PDF-Viewer/blazor/form-designer/events.md
index 4c9be1b9f4..4e3e4e4d6d 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/form-designer/events.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/form-designer/events.md
@@ -8,10 +8,10 @@ documentation: ug
---
# Form Designer events in Blazor PDF Viewer
-The Blazor PDF Viewer includes Form Designer events to handle form field interactions. These events enable tracking and customizing behaviors such as adding, deleting, selecting, resizing, validating, importing, and exporting form fields.
+The Blazor SfPdfViewer exposes Form Designer events for handling form field interactions. These events let applications track, validate, and customize behaviors such as adding, deleting, selecting, resizing, validating, importing, and exporting form fields.
-## Event List
-Below are the key events provided by the Form Designer to handle form field interactions in the PDF Viewer.
+## Event list
+The table below lists key Form Designer events available in the PDF Viewer and their purpose.
| Event Name | Description |
|---------------------------|-------------|
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/form-designer/form-designer-in-mobile-view.md b/Document-Processing/PDF/PDF-Viewer/blazor/form-designer/form-designer-in-mobile-view.md
index 433b08bcf3..c426ac6b1c 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/form-designer/form-designer-in-mobile-view.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/form-designer/form-designer-in-mobile-view.md
@@ -9,85 +9,85 @@ documentation: ug
# To open the form designer toolbar
-This topic explains how to design and manage PDF form fields in mobile view using the Blazor SfPdfViewer.
+This topic explains how to design and manage PDF form fields in mobile view using the Blazor `SfPdfViewer`.
-Prerequisites:
-- Form designer must be enabled for the viewer instance.
+**Prerequisites**
+- Form Designer must be enabled for the viewer instance.
- Use a supported mobile browser.
-To open the form designer toolbar, tap the **Form Designer** option in the primary toolbar on mobile. The form designer toolbar opens at the bottom of the viewer.
+To open the form designer toolbar, tap the **Form Designer** option in the primary toolbar. The form designer toolbar opens at the bottom of the viewer.

-## To add text box
+## Add a text box
-Tap the **Text Box** icon in the toolbar, then tap anywhere in the viewer to place the text box form field.
+Tap the **Text Box** icon in the toolbar, then tap anywhere in the viewer to place a text box form field.


-## To add password box
+## Add a password box
-Tap the **Password Box** icon in the toolbar, then tap anywhere in the viewer to place the password box.
+Tap the **Password Box** icon in the toolbar, then tap anywhere in the viewer to place a password box.

-## To add check box
+## Add a check box
-Tap the **Check Box** icon in the toolbar, then tap anywhere in the viewer to place the check box.
+Tap the **Check Box** icon in the toolbar, then tap anywhere in the viewer to place a check box.

-## To add radio button
+## Add a radio button
-Tap the **Radio Button** icon in the toolbar, then tap anywhere in the viewer to place the radio button.
+Tap the **Radio Button** icon in the toolbar, then tap anywhere in the viewer to place a radio button.

-## To add list box
+## Add a list box
-Tap the **List Box** icon in the toolbar, then tap anywhere in the viewer to place the list box.
+Tap the **List Box** icon in the toolbar, then tap anywhere in the viewer to place a list box.

-## To add dropdown field
+## Add a dropdown field
-Tap the **Dropdown** icon in the toolbar, then tap anywhere in the viewer to place the dropdown field.
+Tap the **Dropdown** icon in the toolbar, then tap anywhere in the viewer to place a dropdown field.

-## To add signature field
+## Add a signature field
-Tap the **Signature Field** icon in the toolbar, then tap anywhere in the viewer to place the signature field.
+Tap the **Signature Field** icon in the toolbar, then tap anywhere in the viewer to place a signature field.

-## To add button
+## Add a button
-Tap the **Button** icon in the toolbar, then tap anywhere in the viewer to place the button.
+Tap the **Button** icon in the toolbar, then tap anywhere in the viewer to place a button.

-## Modify Form Field Properties
+## Modify form field properties
-Form field properties can be configured as needed. To edit a field on mobile, select the form field while the form designer toolbar is open to display the properties dialog, then adjust the required options:
+Configure form field properties as required. To edit a field on mobile, select the field while the form designer toolbar is open to display the properties dialog, then update the needed options:
- **Name**: Unique identifier for the form field.
-- **Tooltip value**: Text shown as a tooltip for the field.
+- **Tooltip**: Text displayed as a tooltip for the field.
- **Value**: Default value assigned during design.
-- **Form field visibility**: Display behavior — Visible, Visible but doesn’t print, Hidden, or Hidden but printable.
+- **Visibility**: Display behavior — Visible, Visible but does not print, Hidden, or Hidden but printable.
- **Read-only**: Prevents users from editing the field.
-- **Required**: Marks the field as mandatory for input.
-- **Appearance**: Visual settings such as background color, border color and style, and font family and size.
+- **Required**: Marks the field as mandatory.
+- **Appearance**: Visual settings such as background color, border color and style, font family, and font size.
-Tap Save to apply the changes to the selected form field. On mobile, drag the field or its resize handles to reposition or resize; minimum field sizes may apply, and snapping occurs within page bounds where supported.
+Tap Save to apply changes to the selected form field. On mobile, drag the field or its resize handles to reposition or resize; minimum field sizes may apply, and snapping occurs within page bounds where supported.

-## Delete Form Field
+## Delete a form field
-To delete a form field, select the field to remove. The Delete icon appears in the form designer toolbar; tap it to remove the field from the PDF. Alternatively, press the Delete key after selecting the form field.
+To delete a form field, select it. The Delete icon appears in the form designer toolbar; tap it to remove the field from the PDF. Alternatively, press the Delete key after selecting the form field.

diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/form-designer/overview.md b/Document-Processing/PDF/PDF-Viewer/blazor/form-designer/overview.md
index 2fb4c55b4a..9c8a3dd47a 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/form-designer/overview.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/form-designer/overview.md
@@ -9,54 +9,54 @@ documentation: ug
# Overview of the Form Designer in Blazor SfPdfViewer Component
-The Form Designer in [SfPdfViewer](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.html) enables creating, editing, and managing interactive form fields. It supports dynamic availability in the UI, so the designer can be shown or hidden while updating related toolbar elements. Form fields such as [Textbox](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.TextBoxField.html), [Password](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PasswordField.html), [Radio Button](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.RadioButtonField.html), [Check Box](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.CheckBoxField.html), [Dropdown](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.DropDownField.html), [List Box](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.ListBoxField.html), [Signature Field](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.SignatureField.html), and [Button](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.ButtonField.html) can be added with custom names, grouping, and consistent data across pages.
+The Form Designer in `SfPdfViewer` enables creation, editing, and management of interactive form fields. The designer can be shown or hidden dynamically and updates related toolbar elements. Supported form fields include [TextBox](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.TextBoxField.html), [Password](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PasswordField.html), [Radio Button](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.RadioButtonField.html), [Check Box](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.CheckBoxField.html), [DropDown](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.DropDownField.html), [List Box](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.ListBoxField.html), [Signature Field](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.SignatureField.html), and [Button](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.ButtonField.html). These fields support custom names, grouping, and consistent data across document pages.

-Fields retain their properties when downloaded or reloaded, even in large documents. Essential operations like cut, copy, paste, zoom, and resize work smoothly while preserving data integrity. Additional features include read-only and required field modes, validation, extensive customization, undo/redo functionality, and form submission controls.
+Fields retain their properties and data when a document is downloaded or reloaded, including large documents. Core editing operations such as cut, copy, paste, zoom, and resize preserve field state. Additional capabilities include read-only and required field modes, validation, appearance customization, undo/redo, and form submission controls.
-## Supported Form Fields
+## Supported form fields
-SfPdfViewer supports a range of interactive form fields for structured and dynamic data collection:
+`SfPdfViewer` supports the following interactive form fields used for structured data collection:
-1. [Textbox](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.TextBoxField.html)
-2. [Password](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PasswordField.html)
+1. [TextBox](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.TextBoxField.html)
+2. [Password](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PasswordField.html)
3. [Check Box](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.CheckBoxField.html)
4. [Radio Button](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.RadioButtonField.html)
5. [List Box](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.ListBoxField.html)
-6. [Dropdown](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.DropDownField.html)
+6. [DropDown](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.DropDownField.html)
7. [Signature Field](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.SignatureField.html)
8. [Button](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.ButtonField.html)
-These fields ensure seamless interaction, customization, and data consistency, enabling the creation of well-structured and user-friendly PDF forms.
+These fields support customization and consistent data across documents, enabling well-structured, user-friendly PDF forms.
-## Form Field Management
+## Form field management
-The [SfPdfViewer](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.html) enables efficient form field management by supporting opening, saving, and printing PDFs while maintaining field integrity.
+The `SfPdfViewer` supports opening, saving, and printing PDFs while preserving form field data and properties.
-### Open the PDF Documents with Interactive Form Fields
+### Open PDF documents with interactive form fields
-The [SfPdfViewer](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.html) component loads PDFs with interactive form fields while preserving properties and data. This enables modifications, validation, and data retention, even in large documents. A saved PDF with form fields can be opened using the Open icon in the toolbar. See the image below.
+`SfPdfViewer` preserves interactive form fields and their properties when loading a PDF. This enables in-viewer modifications, validation, and data retention even in large documents. Use the Open icon in the toolbar to load a saved PDF containing form fields.

-Also, see [Open PDF files in SfPdfViewer](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/blazor/opening-pdf-file) for more details.
+See [Open PDF files in SfPdfViewer](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/blazor/opening-pdf-file) for additional details.
-### Saving Form Fields
+### Saving form fields
-The [SfPdfViewer](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.html) saves form fields within the PDF without modifying the original file. Selecting the Download icon preserves all field data and properties for future use. See the image below.
+`SfPdfViewer` preserves form fields and their properties when exporting or downloading a document. Use the Download icon to save a PDF that retains field data and appearance for future use.

-Also, see [Saving PDF file in Blazor SfPdfViewer component](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/blazor/saving-pdf-file) for more details.
+See [Saving PDF file in Blazor SfPdfViewer component](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/blazor/saving-pdf-file) for more details.
-### Printing Form Fields
+### Printing form fields
-In [SfPdfViewer](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.html), form fields can have different visibility modes that control their appearance in the viewer and printed documents.
+`SfPdfViewer` supports multiple visibility modes to control whether form fields appear in the viewer and in printed output.
To control the [Visibility](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormFieldInfo.html#Syncfusion_Blazor_SfPdfViewer_FormFieldInfo_Visibility) of form fields in print mode, the [VisibilityMode](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.VisibilityMode.html) enum provides the following options:
-#### Available Visibility Modes
+#### Available visibility modes
| **Mode** | **Behavior** |
|--------------------------|-------------|
@@ -65,9 +65,9 @@ To control the [Visibility](https://help.syncfusion.com/cr/blazor/Syncfusion.Bla
| [VisibleNotPrintable](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.VisibilityMode.html#Syncfusion_Blazor_SfPdfViewer_VisibilityMode_VisibleNotPrintable) | Visible in viewer but excluded from printing. |
| [HiddenPrintable](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.VisibilityMode.html#Syncfusion_Blazor_SfPdfViewer_VisibilityMode_HiddenPrintable) | Hidden in viewer but appears in print. |
-N> The [**Visible**](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.VisibilityMode.html#Syncfusion_Blazor_SfPdfViewer_VisibilityMode_Visible) mode is the **default** mode for form fields in [**SfPdfViewer**](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.html).
+N> The [**Visible**](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.VisibilityMode.html#Syncfusion_Blazor_SfPdfViewer_VisibilityMode_Visible) mode is the **default** for form fields in `SfPdfViewer`.
-This flexibility ensures precise control over which form fields are displayed or printed as needed.
+This flexibility enables precise control over which form fields are visible in the viewer and in print output.
The following code snippet shows how to add a form field that is visible in the viewer but excluded from printing in the SfPdfViewer component.
@@ -111,19 +111,17 @@ The following image shows the print preview.
[View sample in GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/blob/master/Form%20Designer/Components/Pages/Visibility.razor).
-### Enable or Disable Form Designer Module in SfPdfViewer
+### Enable or disable Form Designer
-The Form Designer module in [SfPdfViewer](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.html) allows users to add and modify form fields within a PDF document.
+The Form Designer module allows users to add and modify form fields inside a PDF document.
-To show the Form Designer icon on the toolbar in [SfPdfViewer2](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.SfPdfViewer2.html), set the [EnableFormDesigner](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_EnableFormDesigner) property to `true`. No manual module injection is required in SfPdfViewer2.
+To show the Form Designer icon on the toolbar in `SfPdfViewer2`, set the [EnableFormDesigner](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_EnableFormDesigner) property to `true`. No manual module injection is required for `SfPdfViewer2`.
-If set to `false`, the PDF Viewer remains in Form Filling mode only, and the Form Designer feature is disabled.
+If `EnableFormDesigner` is `false`, the viewer operates in form-filling mode only and the Form Designer UI is not available.
-N> By default, [EnableFormDesigner](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_EnableFormDesigner) is `true`.
+N> By default, `EnableFormDesigner` is `true`.
-#### Example code for Injecting Form Designer Module
-
-The following code snippet shows enabling the Form Designer toolbar in SfPdfViewer.
+#### Example: enable the Form Designer toolbar
```cshtml
@using Syncfusion.Blazor.SfPdfViewer;
@@ -139,15 +137,15 @@ The following code snippet shows enabling the Form Designer toolbar in SfPdfView
[View sample in GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/blob/master/Form%20Designer/Components/Pages/EnableFormDesigner.razor).
-### Enable or Disable Designer Mode in Form Designer
+### Enable or disable Designer Mode
-The Designer Mode in [SfPdfViewer](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.html) allows users to interact with form field design elements.
+Designer Mode allows direct interaction with form field design elements.
-When Designer Mode is enabled, users can edit, move, and manipulate form fields within the PDF Viewer. If disabled, form fields remain static and can only be filled.
+When Designer Mode is enabled, users can edit, move, and manipulate form fields. When disabled, fields remain editable only for form filling.
-N> By default, [IsDesignerMode](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_IsDesignerMode) is set to `false`, meaning form fields can be filled but not modified.
+N> By default, [IsDesignerMode](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_IsDesignerMode) is `false` (fields can be filled but not modified).
-The following example demonstrates how to Enable Designer Mode using SfButton components.
+The following example demonstrates how to enable Designer Mode using `SfPdfViewer2`.
```cshtml
@using Syncfusion.Blazor.SfPdfViewer;
@@ -165,23 +163,21 @@ The following example demonstrates how to Enable Designer Mode using SfButton co
[View sample in GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/blob/master/Form%20Designer/Components/Pages/InteractionMode.razor).
-## Export and Import Form Fields Data
-
-The [SfPdfViewer](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.html) control supports exporting and importing form field data in multiple formats.
+## Export and import form field data
-This functionality allows saving, transferring, or restoring form field values efficiently using the following supported formats:
+The `SfPdfViewer` control supports exporting and importing form field data in multiple formats. This enables saving, transferring, or restoring form field values using the following formats:
1. XML
-2. FDF
-3. XFDF
+2. FDF
+3. XFDF
4. JSON
5. Object-based
-The [ExportFormFieldsAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_ExportFormFieldsAsync_Syncfusion_Blazor_SfPdfViewer_FormFieldDataFormat_) and [ImportFormFieldsAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_ImportFormFieldsAsync_System_IO_Stream_Syncfusion_Blazor_SfPdfViewer_FormFieldDataFormat_) methods allow you to export the form field data as a stream, which can later be used to import the saved data into another PDF document.
+The [ExportFormFieldsAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_ExportFormFieldsAsync_Syncfusion_Blazor_SfPdfViewer_FormFieldDataFormat_) and [ImportFormFieldsAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_ImportFormFieldsAsync_System_IO_Stream_Syncfusion_Blazor_SfPdfViewer_FormFieldDataFormat_) methods export or import form field data as a stream, which can be applied to another PDF document.
### Types of Form Fields Export and Import
-#### Export and Import as XML
+#### Export and import as XML
Exports form field data in XML format and allows importing the same data back into a PDF document.
@@ -242,7 +238,7 @@ The following code shows how to export the form fields as an XML data stream and
[View sample in GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/blob/master/Form%20Designer/Components/Pages/XMLFormat.razor).
-#### Export and Import as FDF
+#### Export and import as FDF
Exports form field data in Forms Data Format (FDF) and allows importing the same data back into a PDF document.
@@ -300,7 +296,7 @@ The following code demonstrates exporting form fields as FDF to a stream and imp
[View sample in GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/blob/master/Form%20Designer/Components/Pages/FDFFormat.razor).
-#### Export and Import as XFDF
+#### Export and import as XFDF
Similar to FDF, but in XML-based format, XFDF ensures structured data handling for form fields.
@@ -357,7 +353,7 @@ The following code shows how to export the form fields as an XFDF data stream an
[View sample in GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/blob/master/Form%20Designer/Components/Pages/XFDFFormat.razor).
-#### Export and Import as JSON
+#### Export and import as JSON
Exports form field data in JSON format, which can be easily read and imported back into the PDF Viewer.
@@ -415,7 +411,7 @@ The following code demonstrates exporting form fields as JSON to a stream and im
[View sample in GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/blob/master/Form%20Designer/Components/Pages/JSONFormat.razor).
-#### Export and Import as an Object
+#### Export and import as an object
The Form fields can be exported and imported as an object, which is useful for in-memory processing and quick data manipulation.
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/form-designer/ui-interactions.md b/Document-Processing/PDF/PDF-Viewer/blazor/form-designer/ui-interactions.md
index f1932a8505..51b2e19b14 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/form-designer/ui-interactions.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/form-designer/ui-interactions.md
@@ -9,17 +9,17 @@ documentation: ug
# Form Designer UI Interactions in Blazor PDF Viewer
-The Form Designer in the Blazor PDF Viewer enables adding, editing, and manipulating form fields directly within a PDF document. It provides an intuitive interface to design interactive forms efficiently.
+The Form Designer in `SfPdfViewer` enables adding, editing, and manipulating form fields directly within a PDF document. It provides an intuitive interface for designing interactive forms efficiently.
## Form Field Interactions
### Adding Form Fields
-Click the **Edit Form Fields** icon on the toolbar, choose the required form field, and place it on the PDF document.
+Click the **Edit Form Fields** icon in the toolbar, select the desired field type, and place it on the PDF document.

-N> Form fields can also be added programmatically in SfPdfViewer for advanced scenarios.
+N> Form fields can also be added programmatically in `SfPdfViewer` for advanced scenarios.
[See Add form fields programmatically](./create-programmatically).
### Dragging Form Fields
@@ -40,7 +40,7 @@ Edit form fields using the Form Field Properties panel. Open the panel by select
The Form Field Properties panel consists of three tabs that provide customization options. Available options may vary by field type.
-N> Edit form fields can also be performed programmatically in SfPdfViewer for precise customization.
+N> Editing form fields can also be performed programmatically in `SfPdfViewer` for precise customization.
[See Edit form fields programmatically](./create-programmatically).
#### General Tab
@@ -88,7 +88,7 @@ Remove form fields by selecting the desired field and clicking the Delete icon i

-N> Form fields can also be deleted programmatically in SfPdfViewer.
+N> Form fields can also be deleted programmatically in `SfPdfViewer`.
[See Delete form fields programmatically](./create-programmatically).
## See also
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/form-filling.md b/Document-Processing/PDF/PDF-Viewer/blazor/form-filling.md
index e91770bd4f..6498a132a0 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/form-filling.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/form-filling.md
@@ -9,7 +9,7 @@ documentation: ug
# Form filling in Blazor SfPdfViewer Component
-The SfPdfViewer component displays existing form fields in a PDF document and enables filling and downloading filled data.
+The SfPdfViewer component displays existing form fields in a PDF document and enables filling and downloading filled form data.
The form fields displayed in the SfPdfViewer are:
@@ -25,7 +25,7 @@ The form fields displayed in the SfPdfViewer are:
## Disabling form fields
-The SfPdfViewer control provides an option to disable interaction with form fields. Use the following configuration to disable form fields in the viewer.
+The SfPdfViewer component provides an option to disable interaction with form fields. Use the following configuration to disable form fields in the viewer.
```cshtml
@@ -58,22 +58,22 @@ Add a handwritten signature to a Signature field by following these steps:

-## Delete the signature inside the signature field
+## Delete a signature from the signature field
-Delete a signature placed in a signature field by using the Delete option in the annotation toolbar.
+Remove a signature placed in a signature field using the Delete option in the annotation toolbar.

## Export and import form fields
-The SfPdfViewer control supports exporting and importing form field data in the following formats using the [ImportFormFieldsAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_ImportFormFieldsAsync_System_Collections_Generic_Dictionary_System_String_System_String__) and [ExportFormFieldsAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_ExportFormFieldsAsync_Syncfusion_Blazor_SfPdfViewer_FormFieldDataFormat_) methods:
+The SfPdfViewer component supports exporting and importing form field data in the following formats using the [ImportFormFieldsAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_ImportFormFieldsAsync_System_Collections_Generic_Dictionary_System_String_System_String__) and [ExportFormFieldsAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_ExportFormFieldsAsync_Syncfusion_Blazor_SfPdfViewer_FormFieldDataFormat_) methods:
* XML
* FDF
* XFDF
* JSON
-N> Form field data is exported as a stream, and that stream can be imported back into the current PDF document.
+Note: Form field data is exported as a stream, and that stream can be imported back into the current PDF document.
### Export and import as XML
@@ -155,7 +155,7 @@ The following example exports the form fields as an FDF data stream and imports
```
-### Export and import as XFDF
+### Export and import as XFDF
The following example exports the form fields as an XFDF data stream and imports that data from the stream into the current PDF document via button clicks.
@@ -236,7 +236,7 @@ The following example exports the form fields as a JSON data stream and imports
```
-### Export form fields as Json file
+### Export form fields as JSON file
```cshtml
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/getting-started/maui-blazor-app.md b/Document-Processing/PDF/PDF-Viewer/blazor/getting-started/maui-blazor-app.md
index 254f9bbfea..25c867827e 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/getting-started/maui-blazor-app.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/getting-started/maui-blazor-app.md
@@ -9,7 +9,7 @@ documentation: ug
# View PDF files using the PDF Viewer in a Blazor .NET MAUI app
-This article describes how to add the Syncfusion® Blazor PDF Viewer component to a Blazor .NET MAUI app and deploy it on Windows.
+This article shows how to add the Syncfusion® Blazor PDF Viewer to a Blazor .NET MAUI app and deploy it on Windows.
## Prerequisites
@@ -17,18 +17,18 @@ To use the .NET MAUI project templates, install the Mobile development with .NET
## Create a new Blazor .NET MAUI app in Visual Studio
-Create a new Blazor .NET MAUI app and name it **PDFViewerGettingStarted**.
+Create a new Blazor .NET MAUI app named **PDFViewerGettingStarted**.
-N> The PDF Viewer component is supported on .NET 8.0 and later.
+N> The PDF Viewer supports .NET 8.0 and later.
-## Install PDF Viewer NuGet packages in the Blazor .NET MAUI app
+## Install PDF Viewer NuGet packages
-Add the following NuGet packages to the Blazor .NET MAUI app.
+Install the following NuGet packages in the Blazor .NET MAUI app.
-* [Syncfusion.Blazor.SfPdfViewer](https://www.nuget.org/packages/Syncfusion.Blazor.SfPdfViewer)
+* [Syncfusion.Blazor.SfPdfViewer](https://www.nuget.org/packages/Syncfusion.Blazor.SfPdfViewer)
* [Syncfusion.Blazor.Themes](https://www.nuget.org/packages/Syncfusion.Blazor.Themes)
-## Register Syncfusion® Blazor Service
+## Register Syncfusion Blazor service
* In the **~/_Imports.razor** file, add the following namespaces:
@@ -41,7 +41,7 @@ Add the following NuGet packages to the Blazor .NET MAUI app.
{% endhighlight %}
{% endtabs %}
-* Register the Syncfusion® Blazor Service in the **~/MauiProgram.cs** file.
+* Register Syncfusion Blazor service in the **~/MauiProgram.cs** file.
{% tabs %}
{% highlight c# tabtitle="~/MauiProgram.cs" hl_lines="3 20 28" %}
@@ -81,9 +81,9 @@ public static class MauiProgram
{% endhighlight %}
{% endtabs %}
-## Adding stylesheet and script
+## Add stylesheet and script
-Add the following stylesheet and script to the head section of the **~/wwwroot/index.html** file.
+Add the following stylesheet and script to the head and body sections of **~/wwwroot/index.html**.
{% tabs %}
{% highlight html hl_lines="3 7" %}
@@ -102,7 +102,7 @@ Add the following stylesheet and script to the head section of the **~/wwwroot/i
## Add the PDF Viewer component
-Add the Syncfusion® PDF Viewer (Next-Gen) component in the **~/Pages/Index.razor** file.
+Add the Syncfusion® PDF Viewer (Next-Gen) component to **~/Pages/Index.razor**.
{% tabs %}
{% highlight razor %}
@@ -123,11 +123,11 @@ Add the Syncfusion® PDF Viewer (Next-Gen) c
{% endhighlight %}
{% endtabs %}
-N> If the [DocumentPath](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_DocumentPath) property is not set, the PDF Viewer renders without loading a PDF document. Users can use the Open option in the toolbar to browse and open a PDF as needed.
+N> If the [DocumentPath](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_DocumentPath) property is not set, the PDF Viewer renders without loading a document. Use the Open toolbar option to browse and open a PDF.
## Run on Windows
-Run the sample on a Windows machine to execute the Blazor .NET MAUI app.
+Run the app on Windows.

@@ -137,7 +137,7 @@ After the application launches, the PDF Viewer renders the specified PDF documen
## Run on Android
-To run the PDF Viewer in a Blazor .NET MAUI Android application using the Android emulator, follow these steps:
+To run the PDF Viewer on Android using the Android emulator, follow these steps:

@@ -147,7 +147,7 @@ N> If any errors occur while using the Android Emulator, see [Troubleshooting An

->[View the sample on GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/tree/master/Getting%20Started/Blazor%20Hybrid%20-%20.NET%20MAUI/MauiBlazorWindow).
+N> [View the sample on GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/tree/master/Getting%20Started/Blazor%20Hybrid%20-%20.NET%20MAUI/MauiBlazorWindow).
## See also
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/getting-started/web-app.md b/Document-Processing/PDF/PDF-Viewer/blazor/getting-started/web-app.md
index 444b3f3928..f69c7991f7 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/getting-started/web-app.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/getting-started/web-app.md
@@ -9,7 +9,7 @@ documentation: ug
# View PDF files using the PDF Viewer in a Blazor Web App
-This article describes how to add the Syncfusion® Blazor PDF Viewer component to a Blazor Web App using [Visual Studio](https://visualstudio.microsoft.com/vs/) or Visual Studio Code.
+This article shows how to add the Syncfusion® Blazor PDF Viewer to a Blazor Web App using [Visual Studio](https://visualstudio.microsoft.com/vs/) or Visual Studio Code.
{% tabcontents %}
@@ -28,11 +28,11 @@ You can create a Blazor Web App using Visual Studio 2022 via [Microsoft Template
Configure the appropriate [interactive render mode](https://learn.microsoft.com/en-us/aspnet/core/blazor/components/render-modes?view=aspnetcore-8.0#render-modes) and [interactivity location](https://learn.microsoft.com/en-us/aspnet/core/blazor/tooling?view=aspnetcore-8.0&pivots=windows) when creating a Blazor Web App.
-## Install Blazor PDF Viewer NuGet package in Blazor Web App
+## Install Blazor PDF Viewer NuGet packages
-To add **Blazor PDF Viewer** component in the app, open the NuGet package manager in Visual Studio (*Tools → NuGet Package Manager → Manage NuGet Packages for Solution*), search and install
+To add the Blazor PDF Viewer component, open the NuGet package manager in Visual Studio (*Tools → NuGet Package Manager → Manage NuGet Packages for Solution*), then search for and install:
-* [Syncfusion.Blazor.SfPdfViewer](https://www.nuget.org/packages/Syncfusion.Blazor.SfPdfViewer)
+* [Syncfusion.Blazor.SfPdfViewer](https://www.nuget.org/packages/Syncfusion.Blazor.SfPdfViewer)
* [Syncfusion.Blazor.Themes](https://www.nuget.org/packages/Syncfusion.Blazor.Themes)
If using the WebAssembly or Auto interactive render mode, install the NuGet packages in the client project to add the component to the Web App.
@@ -104,7 +104,7 @@ N> Syncfusion® uses [SkiaSharp.Views.Blazor](https://www.nuget.org/packages/
{% endtabcontents %}
-## Register Syncfusion® Blazor Service
+## Register Syncfusion Blazor service
| Interactive Render Mode | Description |
| -- | -- |
@@ -116,13 +116,13 @@ N> Syncfusion® uses [SkiaSharp.Views.Blazor](https://www.nuget.org/packages/
{% tabs %}
{% highlight razor tabtitle="~/_Imports.razor" %}
-@using Syncfusion.Blazor;
-@using Syncfusion.Blazor.SfPdfViewer;
+@using Syncfusion.Blazor
+@using Syncfusion.Blazor.SfPdfViewer
{% endhighlight %}
{% endtabs %}
-* Register the Syncfusion® Blazor Service in the **~/Program.cs** file of your Blazor Web App.
+* Register the Syncfusion® Blazor service in the **~/Program.cs** file of your Blazor Web App.
If the interactive render mode is set to WebAssembly or Auto, register the Syncfusion® Blazor service in both **~/Program.cs** files of the Blazor Web App.
@@ -239,9 +239,9 @@ app.MapRazorComponents()
N> [Processing Large Files Without Increasing Maximum Message Size in SfPdfViewer Component](../faqs/how-to-processing-large-files-without-increasing-maximum-message-size)
-## Adding stylesheet and script
+## Add stylesheet and script
-Add the following stylesheet and script to the head section of the **~/Components/App.razor** file.
+Add the following stylesheet and script to the head section of **~/Components/App.razor**.
{% tabs %}
{% highlight html hl_lines="3 7" %}
@@ -258,9 +258,9 @@ Add the following stylesheet and script to the head section of the **~/Component
{% endhighlight %}
{% endtabs %}
-## Adding Blazor PDF Viewer Component
+## Add Blazor PDF Viewer component
-Add the Syncfusion® PDF Viewer (Next-Gen) component in the **~Pages/.razor** file. If the interactivity location is set to Per page/component, define a render mode at the top of the **~Pages/.razor** component as follows:
+Add the Syncfusion® PDF Viewer (Next-Gen) component in the **~/Pages/*.razor** file. If interactivity location is Per page/component, define a render mode at the top of the page as follows:
| Interactivity location | RenderMode | Code |
| --- | --- | --- |
@@ -281,8 +281,9 @@ N> If the interactivity location is set to Global and the render mode is set to
{% endtabs %}
N> If the interactivity location is set to Global, a render mode does not need to be specified per page. The interactivity mode applies to the entire app.
+ Enable interactivity only via client-side rendering (CSR) by using the WebAssembly or Auto option
-Add the Syncfusion® PDF Viewer component in the **~/Pages/Index.razor** file.
+Add the Syncfusion® PDF Viewer component in **~/Pages/Index.razor**.
{% tabs %}
{% highlight razor %}
@@ -296,15 +297,15 @@ Add the Syncfusion® PDF Viewer component in
{% endhighlight %}
{% endtabs %}
-N> If the [DocumentPath](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_DocumentPath) property is not set, the PDF Viewer renders without loading a PDF document. Users can use the **Open** option in the toolbar to browse and open a PDF as needed.
+N> If the [DocumentPath](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_DocumentPath) property is not set, the PDF Viewer renders without loading a PDF. Use the **Open** toolbar option to browse and open a PDF.
-## Run the application
+## Run the app
-Run the application to display the PDF file in the Syncfusion® Blazor PDF Viewer component in the browser.
+Run the app to display the PDF in the Syncfusion® Blazor PDF Viewer in the browser.
{% previewsample "https://blazorplayground.syncfusion.com/embed/hZVzNWqXLSZpnuzc?appbar=false&editor=false&result=true&errorlist=false&theme=bootstrap5" backgroundimage "[Blazor Web App SfPdfViewer rendering in browser](gettingstarted-images/blazor-pdfviewer.png)" %}
-N> [View the sample on GitHub](https://github.com/SyncfusionExamples/Blazor-Getting-Started-Examples/tree/main/PDFViewer2/NET10/PDFViewer2_WebApp).
+N> [View the sample on GitHub](https://github.com/SyncfusionExamples/Blazor-Getting-Started-Examples/tree/main/PDFViewer2/NET10/PDFViewer2_WebAppServerMode).
## See also
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/getting-started/web-assembly-application.md b/Document-Processing/PDF/PDF-Viewer/blazor/getting-started/web-assembly-application.md
index 861783645e..df4fd3c74a 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/getting-started/web-assembly-application.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/getting-started/web-assembly-application.md
@@ -9,7 +9,7 @@ documentation: ug
# View PDF files using the PDF Viewer in a Blazor WebAssembly (WASM) app
-This article describes how to add the Syncfusion® Blazor PDF Viewer component to a Blazor WebAssembly (WASM) app using Visual Studio or Visual Studio Code. A fully functional example project is available in the [GitHub repository](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/tree/master/Getting%20Started/Blazor%20WebAssembly).
+This article shows how to add the Syncfusion® Blazor PDF Viewer to a Blazor WebAssembly (WASM) app using Visual Studio or Visual Studio Code. A fully functional example project is available in the [GitHub repository](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/tree/master/Getting%20Started/Blazor%20WebAssembly).
{% tabcontents %}
@@ -19,21 +19,21 @@ This article describes how to add the Syncfusion® Blazor PDF Viewer componen
* [System requirements for Blazor components](https://blazor.syncfusion.com/documentation/system-requirements)
-* To use the PDF Viewer component in a Blazor WebAssembly application with SkiaSharp, ensure the required .NET workloads are installed by running the following commands:
+* To use the PDF Viewer with SkiaSharp in a Blazor WebAssembly app, ensure the required .NET workloads are installed by running:
* dotnet workload install wasm-tools
- * dotnet workload install wasm-tools-net8
+ * dotnet workload install wasm-tools-net8 (For .NET 8.0) or dotnet workload install wasm-tools-net9 (For .NET 9.0) or dotnet workload install wasm-tools-net10 (For .NET 10.0)
## Create a new Blazor App in Visual Studio
You can create a **Blazor WebAssembly App** using Visual Studio via [Microsoft Templates](https://learn.microsoft.com/en-us/aspnet/core/blazor/tooling?view=aspnetcore-7.0) or the [Syncfusion® Blazor Extension](https://blazor.syncfusion.com/documentation/visual-studio-integration/template-studio).
-N> The PDF Viewer component is supported on .NET 8.0 and later.
+N> The PDF Viewer supports .NET 8.0 and later.
-## Install Syncfusion® Blazor SfPdfViewer and Themes NuGet packages in the app
+## Install NuGet packages
-To add the Blazor PDF Viewer component to the app, open the NuGet Package Manager in Visual Studio (Tools → NuGet Package Manager → Manage NuGet Packages for Solution), then install
+To add the Blazor PDF Viewer, open the NuGet Package Manager in Visual Studio (Tools → NuGet Package Manager → Manage NuGet Packages for Solution), then install:
-* [Syncfusion.Blazor.SfPdfViewer](https://www.nuget.org/packages/Syncfusion.Blazor.SfPdfViewer)
+* [Syncfusion.Blazor.SfPdfViewer](https://www.nuget.org/packages/Syncfusion.Blazor.SfPdfViewer)
* [Syncfusion.Blazor.Themes](https://www.nuget.org/packages/Syncfusion.Blazor.Themes)
* [SkiaSharp.Views.Blazor](https://www.nuget.org/packages/SkiaSharp.Views.Blazor)
@@ -47,9 +47,9 @@ N> Syncfusion® uses SkiaSharp.Views.Blazor version 3.119.1. Ensure this vers
* [System requirements for Blazor components](https://blazor.syncfusion.com/documentation/system-requirements)
-* To use the PDF Viewer component in a Blazor WebAssembly application with SkiaSharp, make sure to have the required .NET workloads installed by executing the following commands in the command prompt.
+* To use the PDF Viewer with SkiaSharp in a Blazor WebAssembly app, ensure the required .NET workloads are installed by running:
* dotnet workload install wasm-tools
- * dotnet workload install wasm-tools-net8
+ * dotnet workload install wasm-tools-net8 (For .NET 8.0) or dotnet workload install wasm-tools-net9 (For .NET 9.0) or dotnet workload install wasm-tools-net10 (For .NET 10.0)
## Create a new Blazor App in Visual Studio Code
@@ -68,13 +68,13 @@ cd BlazorApp
{% endtabs %}
-N> The PDF Viewer component is supported on .NET 8.0 and later.
+N> The PDF Viewer supports .NET 8.0 and later.
## Install Syncfusion® Blazor NuGet packages in the app
* Press Ctrl+` to open the integrated terminal in Visual Studio Code.
* Ensure you’re in the project root directory where your `.csproj` file is located.
-* Run the following commands to install the [Syncfusion.Blazor.SfPdfViewer](https://www.nuget.org/packages/Syncfusion.Blazor.SfPdfViewer), [Syncfusion.Blazor.Themes](https://www.nuget.org/packages/Syncfusion.Blazor.Themes/), and [SkiaSharp.Views.Blazor](https://www.nuget.org/packages/SkiaSharp.Views.Blazor) NuGet packages and ensure all dependencies are installed.
+* Run the following commands to install the required NuGet packages and their dependencies.
{% tabs %}
@@ -104,13 +104,13 @@ N> Syncfusion® Blazor components are available on [nuget.org](https://www.nu
{% tabs %}
{% highlight razor tabtitle="~/_Imports.razor" %}
-@using Syncfusion.Blazor;
-@using Syncfusion.Blazor.SfPdfViewer;
+@using Syncfusion.Blazor
+@using Syncfusion.Blazor.SfPdfViewer
{% endhighlight %}
{% endtabs %}
-* Register the Syncfusion® Blazor Service in the **~/Program.cs** file.
+* Register the Syncfusion® Blazor service in the **~/Program.cs** file.
{% tabs %}
{% highlight C# tabtitle=".NET 6 & .NET 7 (~/Program.cs)" hl_lines="3 9 13" %}
@@ -133,9 +133,9 @@ await builder.Build().RunAsync();
{% endhighlight %}
{% endtabs %}
-## Adding stylesheet and script
+## Add stylesheet and script
-Add the following stylesheet and script to the head section of the **wwwroot/index.html** file.
+Add the following stylesheet and script to the head section of **wwwroot/index.html**.
{% tabs %}
{% highlight html hl_lines="3 7" %}
@@ -152,9 +152,9 @@ Add the following stylesheet and script to the head section of the **wwwroot/ind
{% endhighlight %}
{% endtabs %}
-## Adding Blazor PDF Viewer Component
+## Add Blazor PDF Viewer component
-Add the Syncfusion® PDF Viewer (Next-Gen) component in the **~/Pages/Index.razor** file.
+Add the Syncfusion® PDF Viewer (Next-Gen) component to **~/Pages/Index.razor**.
{% tabs %}
{% highlight razor %}
@@ -169,14 +169,16 @@ Add the Syncfusion® PDF Viewer (Next-Gen) c
{% endhighlight %}
{% endtabs %}
-N> If the [DocumentPath](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_DocumentPath) property is not set, the PDF Viewer renders without loading a PDF document. Users can use the **Open** option in the toolbar to browse and open a PDF as needed.
+N> If the [DocumentPath](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_DocumentPath) property is not set, the PDF Viewer renders without loading a PDF. Use the **Open** toolbar option to browse and open a PDF.
-## Run the application
+## Run the app
-Run the application to display the PDF file in the Syncfusion® Blazor PDF Viewer component in the browser.
+Run the app to display the PDF in the Syncfusion® Blazor PDF Viewer in the browser.
{% previewsample "https://blazorplayground.syncfusion.com/embed/hZVzNWqXLSZpnuzc?appbar=false&editor=false&result=true&errorlist=false&theme=bootstrap5" backgroundimage "[Blazor WebAssembly SfPdfViewer rendering in browser](gettingstarted-images/blazor-pdfviewer.png)" %}
+N> [View the sample on GitHub](https://github.com/SyncfusionExamples/Blazor-Getting-Started-Examples/tree/main/PDFViewer2/NET10/PDFViewer2_WasmStandalone).
+
## See also
* [Getting started with the Blazor PDF Viewer in a Blazor Web app Server app](./web-app)
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/getting-started/winforms-blazor-app.md b/Document-Processing/PDF/PDF-Viewer/blazor/getting-started/winforms-blazor-app.md
index a2d79446b9..494f7e9f51 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/getting-started/winforms-blazor-app.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/getting-started/winforms-blazor-app.md
@@ -9,7 +9,7 @@ documentation: ug
# View PDF files using the PDF Viewer in a WinForms Blazor Hybrid App
-This article explains how to add the Syncfusion® Blazor PDF Viewer component to a WinForms Blazor Hybrid App using [Visual Studio](https://visualstudio.microsoft.com/vs/) or Visual Studio Code. The result is a desktop application (WinForms) that hosts Blazor UI inside a BlazorWebView control.
+This article shows how to add the Syncfusion® Blazor PDF Viewer to a WinForms Blazor Hybrid app using [Visual Studio](https://visualstudio.microsoft.com/vs/) or Visual Studio Code. The result is a desktop (WinForms) application that hosts Blazor UI inside a BlazorWebView control.
{% tabcontents %}
@@ -21,17 +21,17 @@ This article explains how to add the Syncfusion® Blazor PDF Viewer component
## Create a new WinForms app in Visual Studio
-Create a WinForms application using Visual Studio 2022 with the WinForms project template. The app will later host Blazor components via BlazorWebView. For reference, see [Microsoft Blazor tooling](https://learn.microsoft.com/en-us/aspnet/core/blazor/tooling?view=aspnetcore-8.0&pivots=windows) or the [Syncfusion® Blazor Extension](https://blazor.syncfusion.com/documentation/visual-studio-integration/template-studio).
+Create a WinForms app using Visual Studio 2022 with the WinForms project template. The app hosts Blazor components via BlazorWebView. For reference, see [Microsoft Blazor tooling](https://learn.microsoft.com/en-us/aspnet/core/blazor/tooling?view=aspnetcore-8.0&pivots=windows) or the [Syncfusion® Blazor Extension](https://blazor.syncfusion.com/documentation/visual-studio-integration/template-studio).
-## Install Blazor PDF Viewer NuGet package in WinForms App
+## Install Blazor PDF Viewer NuGet packages
-To add **Blazor PDF Viewer** component in the app, open the NuGet package manager in Visual Studio (*Tools → NuGet Package Manager → Manage NuGet Packages for Solution*), search and install
+To add the Blazor PDF Viewer component, open the NuGet package manager in Visual Studio (Tools → NuGet Package Manager → Manage NuGet Packages for Solution), then install:
-* [Syncfusion.Blazor.SfPdfViewer](https://www.nuget.org/packages/Syncfusion.Blazor.SfPdfViewer)
+* [Syncfusion.Blazor.SfPdfViewer](https://www.nuget.org/packages/Syncfusion.Blazor.SfPdfViewer)
* [Syncfusion.Blazor.Themes](https://www.nuget.org/packages/Syncfusion.Blazor.Themes)
* [Microsoft.AspNetCore.Components.WebView.WindowsForms](https://www.nuget.org/packages/Microsoft.AspNetCore.Components.WebView.WindowsForms)
-N> Ensure that the package `Microsoft.AspNetCore.Components.WebView.WindowsForms` updated to version `8.0.16`.
+N> Ensure the package `Microsoft.AspNetCore.Components.WebView.WindowsForms` is updated to version `8.0.16`.

@@ -45,7 +45,7 @@ N> Ensure that the package `Microsoft.AspNetCore.Components.WebView.WindowsForms
## Create a new WinForms app in Visual Studio Code
-Create a WinForms desktop project (not a WinForms Blazor HybridApp) using the .NET CLI in Visual Studio Code. This WinForms project will host Blazor UI through BlazorWebView. For guidance, see [Microsoft templates](https://learn.microsoft.com/en-us/aspnet/core/blazor/tooling?view=aspnetcore-8.0&pivots=vsc) or the [Syncfusion® Blazor Extension](https://blazor.syncfusion.com/documentation/visual-studio-code-integration/create-project).
+Create a WinForms desktop project (not a WinForms Blazor HybridApp) using the .NET CLI in Visual Studio Code. This WinForms project hosts Blazor UI through BlazorWebView. For guidance, see [Microsoft templates](https://learn.microsoft.com/en-us/aspnet/core/blazor/tooling?view=aspnetcore-8.0&pivots=vsc) or the [Syncfusion® Blazor Extension](https://blazor.syncfusion.com/documentation/visual-studio-code-integration/create-project).
{% tabs %}
{% highlight c# tabtitle="WinForms Blazor HybridApp" %}
@@ -77,15 +77,15 @@ dotnet restore
{% endtabs %}
-N> Syncfusion® Blazor components are available on [nuget.org](https://www.nuget.org/packages?q=syncfusion.blazor). See [NuGet packages](https://blazor.syncfusion.com/documentation/nuget-packages) for the list of available packages and component details.
+N> Syncfusion® Blazor components are available on [nuget.org](https://www.nuget.org/packages?q=syncfusion.blazor). See [NuGet packages](https://blazor.syncfusion.com/documentation/nuget-packages) for package details.
-N> Ensure that the package `Microsoft.AspNetCore.Components.WebView.WindowsForms` updated to version `8.0.16`.
+N> Ensure the package `Microsoft.AspNetCore.Components.WebView.WindowsForms` is updated to version `8.0.16`.
{% endtabcontent %}
{% endtabcontents %}
-## Register Syncfusion® Blazor service
+## Register Syncfusion Blazor service
The WinForms project must target Windows and enable WinForms. A typical project file looks like the following.
@@ -114,9 +114,9 @@ Create a **Component** folder, add an **_Imports.razor** file in it, and include
## Create wwwroot folder and index.html file
-* Create a new folder named wwwroot in the WinForms project root.
+* Create a new folder named `wwwroot` in the WinForms project root.
-* Inside wwwroot, create an index.html host page for the Blazor UI. This host page is required by BlazorWebView to initialize the Blazor runtime and load static assets (themes and scripts). A basic index.html might look like the following:
+* Inside `wwwroot`, create an `index.html` host page for the Blazor UI. This host page initializes the Blazor runtime and loads static assets (themes and scripts). A basic `index.html` might look like the following:
{% tabs %}
{% highlight html tabtitle="index.html" hl_lines="8 13" %}
@@ -142,7 +142,7 @@ Create a **Component** folder, add an **_Imports.razor** file in it, and include
N> Ensure that the PDF Viewer static assets (themes and scripts) are loaded properly.
-Register Syncfusion Blazor services and BlazorWebView in **~/Form1.cs** so that the WinForms window can host Blazor components.
+Register Syncfusion Blazor services and BlazorWebView in **~/Form1.cs** so the WinForms window can host Blazor components.
{% tabs %}
{% highlight c# tabtitle="Form1.cs (WinForms host)" hl_lines="2 3 4 5 9 10 11 12 13 14 15 16 17 18 19 21" %}
@@ -175,7 +175,7 @@ using WinFormsBlazorHybridApp.Components;
## Adding Blazor PDF Viewer component
-Create a Razor component (for example, PDFViewer.razor) in the project and add the Syncfusion® PDF Viewer component to it within the **Component** folder
+Create a Razor component (for example, PDFViewer.razor) in the project and add the Syncfusion® PDF Viewer component to it within the **Component** folder.
{% tabs %}
{% highlight razor %}
@@ -192,13 +192,13 @@ Create a Razor component (for example, PDFViewer.razor) in the project and add t
N> If the [DocumentPath](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_DocumentPath) property is not set, the PDF Viewer renders without loading a document. Users can use the **Open** toolbar option to browse and open a PDF.
-## Run the application
+## Run the app
-Run the WinForms application. The Syncfusion® Blazor PDF Viewer renders inside the WinForms window.
+Run the WinForms app. The Syncfusion® Blazor PDF Viewer renders inside the WinForms window.

->[View the sample on GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/tree/master/Getting%20Started/Blazor%20Hybrid%20-%20WinForms).
+N> [View the sample on GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/tree/master/Getting%20Started/Blazor%20Hybrid%20-%20WinForms).
## See also
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/getting-started/wpf-blazor-app.md b/Document-Processing/PDF/PDF-Viewer/blazor/getting-started/wpf-blazor-app.md
index f1bbf29609..863c9fca34 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/getting-started/wpf-blazor-app.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/getting-started/wpf-blazor-app.md
@@ -9,7 +9,7 @@ documentation: ug
# View PDF files using the PDF Viewer in a WPF Blazor Hybrid App
-This article explains how to add the Syncfusion® Blazor PDF Viewer component to a WPF Blazor Hybrid App using [Visual Studio](https://visualstudio.microsoft.com/vs/) or Visual Studio Code. The result is a desktop application (WPF) that hosts Blazor UI inside a BlazorWebView control.
+This article shows how to add the Syncfusion® Blazor PDF Viewer to a WPF Blazor Hybrid app using [Visual Studio](https://visualstudio.microsoft.com/vs/) or Visual Studio Code. The result is a desktop (WPF) application that hosts Blazor UI inside a BlazorWebView control.
{% tabcontents %}
@@ -21,17 +21,18 @@ This article explains how to add the Syncfusion® Blazor PDF Viewer component
## Create a new WPF app in Visual Studio
-Create a WPF application using Visual Studio 2022 with the WPF project template. The app will later host Blazor components via BlazorWebView. For reference, see [Microsoft Blazor tooling](https://learn.microsoft.com/en-us/aspnet/core/blazor/tooling?view=aspnetcore-8.0&pivots=windows) or the [Syncfusion® Blazor Extension](https://blazor.syncfusion.com/documentation/visual-studio-integration/template-studio).
+Create a WPF app using Visual Studio 2022 with the WPF project template. The app hosts Blazor components via BlazorWebView. For reference, see [Microsoft Blazor tooling](https://learn.microsoft.com/en-us/aspnet/core/blazor/tooling?view=aspnetcore-8.0&pivots=windows) or the [Syncfusion® Blazor Extension](https://blazor.syncfusion.com/documentation/visual-studio-integration/template-studio).
-## Install Blazor PDF Viewer NuGet package in WPF App
-To add **Blazor PDF Viewer** component in the app, open the NuGet package manager in Visual Studio (*Tools → NuGet Package Manager → Manage NuGet Packages for Solution*), search and install
+## Install Blazor PDF Viewer NuGet packages
-* [Syncfusion.Blazor.SfPdfViewer](https://www.nuget.org/packages/Syncfusion.Blazor.SfPdfViewer)
+To add the Blazor PDF Viewer component, open the NuGet package manager in Visual Studio (Tools → NuGet Package Manager → Manage NuGet Packages for Solution), then install:
+
+* [Syncfusion.Blazor.SfPdfViewer](https://www.nuget.org/packages/Syncfusion.Blazor.SfPdfViewer)
* [Syncfusion.Blazor.Themes](https://www.nuget.org/packages/Syncfusion.Blazor.Themes)
* [Microsoft.AspNetCore.Components.WebView.Wpf](https://www.nuget.org/packages/Microsoft.AspNetCore.Components.WebView.Wpf)
-N> Ensure that the package `Microsoft.AspNetCore.Components.WebView.Wpf` updated to version `8.0.16`.
+N> Ensure the package `Microsoft.AspNetCore.Components.WebView.Wpf` is updated to version `8.0.16`.

@@ -45,7 +46,7 @@ N> Ensure that the package `Microsoft.AspNetCore.Components.WebView.Wpf` updated
## Create a new WPF app in Visual Studio Code
-Create a WPF desktop project (not a WPF Blazor HybridApp) using the .NET CLI in Visual Studio Code. This WPF project will host Blazor UI through BlazorWebView. For guidance, see [Microsoft templates](https://learn.microsoft.com/en-us/aspnet/core/blazor/tooling?view=aspnetcore-8.0&pivots=vsc) or the [Syncfusion® Blazor Extension](https://blazor.syncfusion.com/documentation/visual-studio-code-integration/create-project).
+Create a WPF desktop project (not a WPF Blazor HybridApp) using the .NET CLI in Visual Studio Code. This WPF project hosts Blazor UI through BlazorWebView. For guidance, see [Microsoft templates](https://learn.microsoft.com/en-us/aspnet/core/blazor/tooling?view=aspnetcore-8.0&pivots=vsc) or the [Syncfusion® Blazor Extension](https://blazor.syncfusion.com/documentation/visual-studio-integration/template-studio).
{% tabs %}
{% highlight c# tabtitle="WPF Blazor HybridApp" %}
@@ -61,7 +62,7 @@ Install the required NuGet packages in the WPF project that will host the Blazor
* Press Ctrl+` to open the integrated terminal in Visual Studio Code.
* Ensure the current directory contains the WPF project `.csproj` file.
-* Run the following commands to install [Syncfusion.Blazor.SfPdfViewer](https://www.nuget.org/packages/Syncfusion.Blazor.SfPdfViewer), [Syncfusion.Blazor.Themes](https://www.nuget.org/packages/Syncfusion.Blazor.Themes/), and [Microsoft.AspNetCore.Components.WebView.Wpf](https://www.nuget.org/packages/Microsoft.AspNetCore.Components.WebView.Wpf). This adds the PDF Viewer, theme, and the BlazorWebView host control.
+* Run the following commands to install the required packages. This adds the PDF Viewer, theme, and the BlazorWebView host control.
{% tabs %}
@@ -76,15 +77,15 @@ dotnet restore
{% endtabs %}
-N> Syncfusion® Blazor components are available on [nuget.org](https://www.nuget.org/packages?q=syncfusion.blazor). See [NuGet packages](https://blazor.syncfusion.com/documentation/nuget-packages) for the list of available packages and component details.
+N> Syncfusion® Blazor components are available on [nuget.org](https://www.nuget.org/packages?q=syncfusion.blazor). See [NuGet packages](https://blazor.syncfusion.com/documentation/nuget-packages) for package details.
-N> Ensure that the package `Microsoft.AspNetCore.Components.WebView.Wpf` updated to version `8.0.16`.
+N> Ensure the package `Microsoft.AspNetCore.Components.WebView.Wpf` is updated to version `8.0.16`.
{% endtabcontent %}
{% endtabcontents %}
-## Register Syncfusion® Blazor service
+## Register Syncfusion Blazor service
The WPF project must target Windows and enable WPF. A typical project file looks like the following.
@@ -134,9 +135,9 @@ using Syncfusion.Blazor;
## Create wwwroot folder and index.html file
-* Create a new folder named wwwroot in the WPF project root.
+* Create a new folder named `wwwroot` in the WPF project root.
-* Inside wwwroot, create an index.html host page for the Blazor UI. This host page is required by BlazorWebView to initialize the Blazor runtime and load static assets (themes and scripts). A basic index.html might look like the following:
+* Inside `wwwroot`, create an `index.html` host page for the Blazor UI. This host page initializes the Blazor runtime and loads static assets (themes and scripts). A basic `index.html` might look like the following:
{% tabs %}
@@ -165,7 +166,7 @@ N> Ensure that the PDF Viewer static assets (themes and scripts) are loaded prop
## Adding Blazor PDF Viewer component
-Create a Razor component (for example, Main.razor) in the project and add the Syncfusion® PDF Viewer component to it.
+Create a Razor component (for example, Main.razor) in the project and add the Syncfusion® PDF Viewer component to it.
{% tabs %}
{% highlight razor %}
@@ -209,13 +210,13 @@ N> If the [DocumentPath](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor
{% endhighlight %}
{% endtabs %}
-## Run the application
+## Run the app
-Run the WPF application. The Syncfusion® Blazor PDF Viewer renders inside the WPF window.
+Run the WPF app. The Syncfusion® Blazor PDF Viewer renders inside the WPF window.

->[View the sample on GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/tree/master/Getting%20Started/Blazor%20Hybrid%20-%20WPF).
+N> [View the sample on GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/tree/master/Getting%20Started/Blazor%20Hybrid%20-%20WPF).
## See also
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/globalization.md b/Document-Processing/PDF/PDF-Viewer/blazor/globalization.md
index 40df107a84..1c86b9eaf2 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/globalization.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/globalization.md
@@ -14,15 +14,15 @@ documentation: ug
The [Blazor SfPdfViewer](https://www.syncfusion.com/pdf-viewer-sdk/blazor-pdf-viewer) component can be localized to display culture-specific text. Refer to the [Blazor Localization](https://blazor.syncfusion.com/documentation/common/localization) guide for steps to add culture resource files, register localization services, and set the current culture.
N>
-* Provide localized string resources for the viewer’s UI texts (such as toolbar tooltips, dialog messages).
-* Ensure the app culture (CurrentCulture and CurrentUICulture) is set before the component renders for correct resource lookup.
-* Localization applies to the viewer UI; it does not translate the PDF document content.
+* Provide localized string resources for the viewer’s UI text (for example, toolbar tooltips and dialog messages).
+* Ensure the application culture (`CurrentCulture` and `CurrentUICulture`) is set before the component renders for correct resource lookup.
+* Localization applies to the viewer UI only; it does not translate PDF document content.
## Right to Left
-To enable right-to-left (RTL) rendering for the viewer UI, set the [EnableRtl](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_EnableRtl) property to true. This mirrors the layout and aligns UI elements for RTL languages such as Arabic, Hebrew, Azerbaijani, Persian, and Urdu. The following code snippet demonstrates how to enable RTL rendering.
+To enable right-to-left (RTL) rendering for the viewer UI, set the [EnableRtl](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_EnableRtl) property to `true`. This mirrors the layout and aligns UI elements for RTL languages such as Arabic, Hebrew, Azerbaijani, Persian, and Urdu. The following code snippet demonstrates how to enable RTL rendering.
-By setting EnableRtl to `true`, the control will adjust its layout and appearance to align text, icons, and other elements from right to left, providing an optimized user experience for RTL language users.
+When `EnableRtl` is `true`, the component adjusts its layout and appearance to align text, icons, and other elements from right to left, providing an optimized experience for RTL language users.
```cshtml
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/hand-written-signature.md b/Document-Processing/PDF/PDF-Viewer/blazor/hand-written-signature.md
index 10439651e5..65606b7b28 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/hand-written-signature.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/hand-written-signature.md
@@ -15,12 +15,12 @@ The SfPdfViewer component supports adding handwritten signatures to PDF document
Add a handwritten signature using the annotation toolbar.
-* Click the **Edit Annotation** in the SfPdfViewer toolbar to open the annotation toolbar.
-* Select the **HandWritten Signature** tool to open the signature panel.
+* Click the **Edit Annotation** button in the SfPdfViewer toolbar to open the annotation toolbar.
+* Select the **Handwritten Signature** tool to open the signature panel.

-* Draw the signature in the signature panel using a mouse, or touch.
+* Draw the signature in the signature panel using a mouse or touch input.

@@ -32,7 +32,7 @@ The added signature becomes part of the PDF annotations and is preserved when sa
## Editing the properties of handwritten signature
-The stroke color, thickness, and opacity of a handwritten signature can be adjusted using the annotation toolbar’s edit stroke color tool, edit thickness tool, and edit opacity tools. Select the signature on the page to enable these property editors for that item. After placement, the signature can also be moved, resized, or removed like other annotations.
+Stroke color, thickness, and opacity can be adjusted using the annotation toolbar’s property editors. Select the signature on the page to enable these editors. After placement, the signature can be moved, resized, or removed like other annotations.

diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/interaction.md b/Document-Processing/PDF/PDF-Viewer/blazor/interaction.md
index 2e7ce6e421..6f3eadd012 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/interaction.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/interaction.md
@@ -9,7 +9,7 @@ documentation: ug
# Interaction mode in Blazor SfPdfViewer Component
-SfPdfViewer provides two user interaction options to control how the document responds to pointer input. By default, text selection is enabled and the interaction mode is Selection.
+SfPdfViewer provides two user interaction options to control how the document responds to pointer input. By default, text selection is enabled and the interaction mode is `Selection`.
The built-in toolbar of SfPdfViewer contains the following two interaction options:
@@ -20,7 +20,7 @@ The built-in toolbar of SfPdfViewer contains the following two interaction optio
In this mode, users can select and copy text from the PDF document loaded in SfPdfViewer. This is useful for extracting and sharing textual content.
-N> In Selection mode, page panning by touch/drag is disabled. Scrolling is still available through the mouse wheel scrollbars, or keyboard shortcuts.
+N> In Selection mode, page panning by touch/drag is disabled. Users can still scroll using the mouse wheel, scrollbars, or keyboard shortcuts.
You can enable or disable text selection by setting the [EnableTextSelection](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_EnableTextSelection) property.
@@ -41,7 +41,7 @@ You can enable or disable text selection by setting the [EnableTextSelection](ht
## Panning mode
-In this mode, users can pan and scroll pages in the loaded PDF document in the SfPdfViewer, but the text selection cannot be performed.
+In this mode, users can pan and scroll pages in the loaded PDF document, but text selection is disabled.
The interaction mode of the SfPdfViewer component can be modified using the [InteractionMode](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_InteractionMode) property. This property supports runtime updates, and any changes are applied immediately to the viewer.
@@ -59,11 +59,11 @@ The interaction mode of the SfPdfViewer component can be modified using the [Int
}
```
-## Disable interaction with Annotations
+## Disable annotation interaction
-Annotation interactions such as dragging, resizing, and deleting can be disabled by setting the [IsLock](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerAnnotationSettings.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerAnnotationSettings_IsLock) property in the [AnnotationSettings](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_AnnotationSettings) configuration.
+Annotation interactions, such as dragging, resizing, and deleting, can be disabled by setting the [IsLock](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerAnnotationSettings.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerAnnotationSettings_IsLock) property in the [AnnotationSettings](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_AnnotationSettings) configuration.
-The following code illustrates how to disable the annotation interaction.
+The following code illustrates how to lock annotation interactions.
```cshtml
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/interactive-pdf-navigation/bookmark.md b/Document-Processing/PDF/PDF-Viewer/blazor/interactive-pdf-navigation/bookmark.md
index 4c8932cf0d..587f9100cb 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/interactive-pdf-navigation/bookmark.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/interactive-pdf-navigation/bookmark.md
@@ -9,13 +9,13 @@ documentation: ug
# Bookmark navigation in SfPdfViewer
-Use the bookmark panel to jump directly to labeled destinations in a PDF.
+Use the bookmark panel to jump to labeled destinations in the PDF.
-Bookmarks defined in the PDF document are automatically loaded and listed in the bookmark panel. Selecting a bookmark navigates to its target. Nested bookmarks are supported; if the document has no bookmarks, the panel appears empty.
+Bookmarks embedded in the PDF are loaded automatically and listed in the bookmark panel. Selecting a bookmark navigates to its target. Nested bookmarks are supported. If a document has no bookmarks, the panel appears empty.

-Enable or disable the bookmark panel by setting the [EnableBookmarkPanel](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_EnableBookmarkPanel) property. This property only controls the panel’s visibility; bookmarks are read from the PDF.
+Show or hide the bookmark panel by setting the [EnableBookmarkPanel](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_EnableBookmarkPanel) property. This property controls only the panel’s visibility; bookmarks are read from the PDF itself.
```cshtml
@@ -29,6 +29,6 @@ Enable or disable the bookmark panel by setting the [EnableBookmarkPanel](https:
```
-## See Also
+## See also
* [Page thumbnail navigation in Blazor SfPdfViewer](./page-thumbnail)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/interactive-pdf-navigation/hyperlink.md b/Document-Processing/PDF/PDF-Viewer/blazor/interactive-pdf-navigation/hyperlink.md
index 9c66e67e47..b377dc01ba 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/interactive-pdf-navigation/hyperlink.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/interactive-pdf-navigation/hyperlink.md
@@ -9,15 +9,15 @@ documentation: ug
# Hyperlink navigation in SfPdfViewer
-Use hyperlinks in a PDF to navigate either to external URLs or to destinations within the same document. Hyperlinks are detected from the PDF content and work by default.
+Use hyperlinks in a PDF to navigate to external URLs or to destinations within the same document. Hyperlinks are extracted from the PDF and enabled by default.
-- External links (HTTP/HTTPS, etc.) open in the browser according to browser security and settings (for example, a new tab or window).
+- External links (HTTP/HTTPS, etc.) open in the browser according to browser settings (for example, in a new tab or window).
- In-document links navigate directly to the referenced page or location in the viewer.
-If a document does not contain hyperlinks, no link-specific highlighting appears.
+If a document contains no hyperlinks, the viewer shows no link highlighting.

-## See Also
+## See also
* [Table of content navigation in Blazor SfPdfViewer](./table-of-content)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/interactive-pdf-navigation/modern-panel.md b/Document-Processing/PDF/PDF-Viewer/blazor/interactive-pdf-navigation/modern-panel.md
index 792e5780b5..ec8c2563a6 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/interactive-pdf-navigation/modern-panel.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/interactive-pdf-navigation/modern-panel.md
@@ -9,12 +9,11 @@ documentation: ug
# Modern navigation panel in SfPdfViewer
-The modern navigation panel consolidates thumbnails, bookmarks, comments, and custom panels in a single, flexible side panel for a streamlined navigation experience.
+The modern navigation panel consolidates thumbnails, bookmarks, comments, and custom panels into a single flexible side panel for streamlined navigation.
-Enable the modern navigation panel using the [EnableNavigationPanel](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_EnableNavigationPanel) property. Visibility can be toggled from the UI or programmatically.
-
-The following example enables the modern navigation panel:
+Enable the modern navigation panel by setting the [EnableNavigationPanel](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_EnableNavigationPanel) property. You can toggle its visibility from the UI or programmatically.
+Example — enable the modern navigation panel:
```cshtml
@using Syncfusion.Blazor.SfPdfViewer;
@@ -41,7 +40,7 @@ The modern navigation panel contains the following built-in items:
Use the [BuiltInItems](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.NavigationToolbarSettings.html#Syncfusion_Blazor_SfPdfViewer_NavigationToolbarSettings_BuiltInItems) property, which accepts a list of [NavigationToolbarItem](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.NavigationToolbarItem.html) enums. The viewer renders the navigation icons in the exact sequence provided.
-The following example displays Thumbnails first, followed by Bookmarks and the Comment panel.
+Example — display Thumbnails first, followed by Bookmarks and the Comment panel.
```cshtml
@@ -72,8 +71,7 @@ The following example displays Thumbnails first, followed by Bookmarks and the C
Open or close a navigation panel programmatically by calling the [ToggleItemByIndex](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_ToggleItemByIndex_System_Int32_) method. Indices are zero-based and apply to the combined sequence of built-in and custom items.
-The following example toggles the visibility of the second item in the navigation panel (index 1).
-
+Example — toggle the navigation panel item at index 1:
```cshtml
@using Syncfusion.Blazor.SfPdfViewer;
@@ -101,7 +99,7 @@ The following example toggles the visibility of the second item in the navigatio
### Add custom items to the navigation panel
-You can add custom items to the SfPdfViewer navigation toolbar. Create a list of [CustomNavigationToolbarItem](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.CustomNavigationToolbarItem.html) objects and assign it to the [CustomItems](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.NavigationToolbarSettings.html#Syncfusion_Blazor_SfPdfViewer_NavigationToolbarSettings_CustomItems) property.
+You can add custom items to the SfPdfViewer navigation toolbar by creating a list of [CustomNavigationToolbarItem](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.CustomNavigationToolbarItem.html) objects and assigning it to the [CustomItems](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.NavigationToolbarSettings.html#Syncfusion_Blazor_SfPdfViewer_NavigationToolbarSettings_CustomItems) property.
Each CustomNavigationToolbarItem object includes:
- Index: Position of the item in the toolbar.
@@ -116,7 +114,7 @@ Each CustomNavigationToolbarItem object includes:
Define a custom UI for a navigation panel by assigning a RenderFragment to the `Template` property of a [CustomNavigationToolbarItem](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.CustomNavigationToolbarItem.html).
-The following example adds a default toolbar with a custom item containing a small, interactive panel with a customized UI.
+Example — add a default toolbar with a custom item that contains a small interactive panel and customized UI:
```cshtml
@@ -214,15 +212,15 @@ The following example adds a default toolbar with a custom item containing a sma

-### Demand rendering for the navigation panel
+### Rendering strategies for the navigation panel
-SfPdfViewer supports different loading strategies for navigation panel content to optimize performance. The available options are:
+SfPdfViewer supports different loading strategies for navigation panel content to optimize performance:
-* **Dynamic** : The content for a panel is only loaded into the DOM when that panel is selected. When you switch to a different panel, the previous content is removed and replaced.
-* **Init** : The content for all navigation panels is rendered during the initial load and is always present in the DOM.
-* **Demand** : The content for a panel is loaded into the DOM the first time it is selected. The content is then kept in the DOM, even if you navigate to other panels.
+* **Dynamic**: Content for a panel is loaded into the DOM only when that panel is selected. Switching panels replaces the previous content.
+* **Init**: Content for all navigation panels is rendered during the initial load and remains in the DOM.
+* **Demand**: Content for a panel is loaded into the DOM the first time it is selected and then retained.
-The following example sets the loading strategy to Demand.
+Example — set the loading strategy to `Demand`:
```cshtml
@@ -240,10 +238,10 @@ The following example sets the loading strategy to Demand.
### Modern navigation panel in mobile view
-On mobile devices, the navigation toolbar collapses into a toggle menu to save space. Any custom items appear at the beginning of this menu.
+On mobile devices the navigation toolbar collapses into a toggle menu to save space. Custom items appear at the beginning of this menu.

-## See Also
+## See also
* [Page navigation in Blazor SfPdfViewer](./pages)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/interactive-pdf-navigation/page-thumbnail.md b/Document-Processing/PDF/PDF-Viewer/blazor/interactive-pdf-navigation/page-thumbnail.md
index b568c8d8ec..c345db1f34 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/interactive-pdf-navigation/page-thumbnail.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/interactive-pdf-navigation/page-thumbnail.md
@@ -9,11 +9,11 @@ documentation: ug
# Page thumbnail navigation in SfPdfViewer
-Use the thumbnail panel to preview pages and navigate quickly through a PDF. Each thumbnail represents a page; selecting one navigates to that page in the viewer.
+Use the thumbnail panel to preview pages and quickly navigate a PDF. Each thumbnail represents a page — select one to jump to that page in the viewer.

-Enable or disable the thumbnail panel by setting the [EnableThumbnailPanel](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_EnableThumbnailPanel) property. This property enables the feature; visibility at load time is controlled separately.
+Show or hide the thumbnail panel by setting the [EnableThumbnailPanel](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_EnableThumbnailPanel) property. This property enables the feature; initial visibility at load time is controlled separately.
```cshtml
@@ -29,9 +29,9 @@ Enable or disable the thumbnail panel by setting the [EnableThumbnailPanel](http
## Open thumbnail panel programmatically
-To show the thumbnail panel when the document loads, set the [IsThumbnailPanelOpen](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_IsThumbnailPanelOpen) property to true. This controls initial visibility and works when the thumbnail feature is enabled.
+To show the thumbnail panel when the document loads, set the [IsThumbnailPanelOpen](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_IsThumbnailPanelOpen) property to `true`. This controls initial visibility and requires the thumbnail feature to be enabled.
-The following example opens the thumbnail panel at initial render.
+Example — open the thumbnail panel at initial render:
```cshtml
@@ -56,6 +56,6 @@ The following example opens the thumbnail panel at initial render.
[View sample in GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/tree/master/Thumbnail/Show%20thumbnail%20panel).
-## See Also
+## See also
* [Hyperlink navigation in Blazor SfPdfViewer](./hyperlink)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/interactive-pdf-navigation/pages.md b/Document-Processing/PDF/PDF-Viewer/blazor/interactive-pdf-navigation/pages.md
index bc8206d0b3..fab64f7e7f 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/interactive-pdf-navigation/pages.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/interactive-pdf-navigation/pages.md
@@ -9,19 +9,19 @@ documentation: ug
# Page navigation in SfPdfViewer
-Move between pages using the built-in toolbar or programmatic APIs.
+Navigate pages using the toolbar or programmatic APIs.
-The built-in toolbar of SfPdfViewer contains the following page navigation tools:
+SfPdfViewer's toolbar includes these page navigation tools:
-* **First page**: Navigates to the first page in the document.
-* **Previous page**: Scrolls backward one page at a time.
-* **Next page**: Scrolls forward one page at a time.
-* **Last page**: Navigates to the last page in the document.
-* **Go to page**: Jumps to a specified page number.
+* **First page**: Navigate to the first page.
+* **Previous page**: Scroll backward one page.
+* **Next page**: Scroll forward one page.
+* **Last page**: Navigate to the last page.
+* **Go to page**: Jump to a specified page number.

-The navigation tools appear in the primary toolbar. Enable or disable these buttons by setting the [EnableNavigation](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_EnableNavigation) property. This setting affects only the toolbar buttons; programmatic navigation APIs remain available regardless of this value.
+These toolbar buttons are controlled by the [EnableNavigation](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_EnableNavigation) property. Programmatic navigation APIs remain available regardless.
```cshtml
@@ -38,9 +38,9 @@ The navigation tools appear in the primary toolbar. Enable or disable these butt
```
-Page navigation can also be performed programmatically. The following example shows how to navigate between pages using APIs.
+Navigate pages programmatically using the APIs shown in the example below.
-N> GoToPageAsync expects a 1-based page number.
+N> `GoToPageAsync` expects a 1‑based page number.
```cshtml
@@ -108,7 +108,7 @@ N> GoToPageAsync expects a 1-based page number.
```
-## See Also
+## See also
* [Magnification in Blazor SfPdfViewer](../magnification)
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/interactive-pdf-navigation/table-of-content.md b/Document-Processing/PDF/PDF-Viewer/blazor/interactive-pdf-navigation/table-of-content.md
index 9d8db68aa6..232211f9e9 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/interactive-pdf-navigation/table-of-content.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/interactive-pdf-navigation/table-of-content.md
@@ -9,12 +9,11 @@ documentation: ug
# Table of contents navigation in SfPdfViewer
-Use the table of contents (TOC) to jump to sections within a PDF. Each TOC entry maps to a location in the document; selecting one navigates to that destination.
+Use the table of contents (TOC) to jump to sections within a PDF. Each entry maps to a location in the document; selecting one navigates to that destination.

-Enable or disable both hyperlink and TOC navigation by setting the [EnableHyperlink](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_EnableHyperlink) property. TOC entries are parsed from the PDF; if the document has no TOC, no entries appear.
-
+Enable or disable hyperlink and TOC navigation by setting the [EnableHyperlink](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_EnableHyperlink) property. TOC entries are parsed from the PDF; if the document has no TOC, no entries appear.
```cshtml
@using Syncfusion.Blazor.SfPdfViewer
@@ -27,7 +26,7 @@ Enable or disable both hyperlink and TOC navigation by setting the [EnableHyperl
```
-Control where external hyperlinks open by using the [HyperlinkOpenState](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_HyperlinkOpenState) property (for example, a new tab). In-document TOC links always navigate within the viewer.
+Control where external hyperlinks open using the [HyperlinkOpenState](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_HyperlinkOpenState) property (for example, a new tab). In-document TOC links always navigate within the viewer.
```cshtml
@@ -44,6 +43,6 @@ Control where external hyperlinks open by using the [HyperlinkOpenState](https:/
```
-## See Also
+## See also
* [Modern navigation panel in Blazor SfPdfViewer](./modern-panel)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/migration.md b/Document-Processing/PDF/PDF-Viewer/blazor/migration.md
index 4a230aab86..4474633f38 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/migration.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/migration.md
@@ -11,18 +11,18 @@ documentation: ug
## Why PDF Viewer (Classic) to PDF Viewer control
-Migrating to the PDF Viewer control delivers better performance and a simplified deployment model. Scrolling, page navigation, and printing are optimized for a smoother user experience. The newer viewer also removes the WebAssembly server service dependency required by the classic control, reducing app complexity and maintenance.
+Migrating to SfPdfViewer delivers better performance and a simplified deployment model. Scrolling, page navigation, and printing are optimized for a smoother user experience. SfPdfViewer also removes the WebAssembly server service dependency required by the classic viewer, reducing app complexity and maintenance.
* **Enhanced performance**:
Experience faster scrolling, more responsive page navigation, and improved printing throughput for large documents.
* **No server service dependency**:
-The newer viewer does not require a separate ServiceUrl or server-side WebAssembly service; client-side rendering is handled by the component.
+SfPdfViewer does not require a separate `ServiceUrl` or server-side WebAssembly service; client-side rendering is handled by the component.
* **Unified package across platforms**:
A single package supports Windows, macOS, and Linux, making installation consistent across environments.
-### Nuget Package
+### NuGet package
To initialize the PDF Viewer component, add the following package references to the project **.csproj** file.
@@ -71,7 +71,7 @@ To initialize the PDF Viewer component, add the following package references to
To use the PDF Viewer component, add the corresponding script reference in the app host page (**Host.cshtml** or **Layout.cshtml**) based on the framework version.
-N> The same script file is used for both `Server application` and `Web assembly application` for the PDF Viewer component.
+N> The same script file is used for both `Server application` and `WebAssembly application` for the PDF Viewer component.
@@ -159,7 +159,7 @@ builder.Services.AddSyncfusionBlazor();
### Index.razor
-To render the PDF Viewer component, add the following code in the **Index.razor** file. In the newer viewer, a ServiceUrl is not required; specify only the DocumentPath and layout attributes.
+To render the PDF Viewer component, add the following code in the **Index.razor** file. In the newer viewer, the `ServiceUrl` is not required; specify only the `DocumentPath` and layout attributes.
@@ -225,7 +225,7 @@ For WebAssembly applications, include the following properties in the project **
N> For WebAssembly applications, install the [SkiaSharp.NativeAssets.WebAssembly](https://www.nuget.org/packages/SkiaSharp.NativeAssets.WebAssembly) NuGet package.
-N> When hosting in certain environments (for example, Azure App Service), use [SkiaSharp.Views.Blazor](https://www.nuget.org/packages/SkiaSharp.Views.Blazor) instead of [SkiaSharp.NativeAssets.WebAssembly](https://www.nuget.org/packages/SkiaSharp.NativeAssets.WebAssembly). Align native asset versions in the project file with the installed package version.
+N> When hosting in certain environments (for example, Azure App Service), consider using [SkiaSharp.Views.Blazor](https://www.nuget.org/packages/SkiaSharp.Views.Blazor) instead of [SkiaSharp.NativeAssets.WebAssembly](https://www.nuget.org/packages/SkiaSharp.NativeAssets.WebAssembly). Align native asset versions in the project file with the installed package version.
## See also
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/open-pdf-file/from-amazon-s3.md b/Document-Processing/PDF/PDF-Viewer/blazor/open-pdf-file/from-amazon-s3.md
index 12dc952f46..3bd3d2e1d1 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/open-pdf-file/from-amazon-s3.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/open-pdf-file/from-amazon-s3.md
@@ -7,19 +7,19 @@ control: SfPdfViewer
documentation: ug
---
-# Open PDF file from AWS S3 in SfPdfViewer
+# Open PDF from AWS S3 in SfPdfViewer
-To load a PDF file from AWS S3 in the SfPdfViewer component, follow the steps below.
+This article shows how to load a PDF stored in AWS S3 into the Syncfusion Blazor `SfPdfViewer` component.
-**Step 1:** Create AWS S3 account
+## Step 1 — Create an S3 bucket and grant read access
Set up an AWS account by following the official guide: [AWS Management Console](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html). Create an S3 bucket, upload a PDF file, and create an IAM user with permissions to read objects (for example, s3:GetObject). Generate access keys and store them securely.
-**Step 2:** Create a simple SfPdfViewer sample in Blazor
+## Step 2 — Create a simple SfPdfViewer sample
Follow the steps in the Blazor Server [getting started](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/blazor/getting-started/web-app) guide for PDF Viewer to create a basic sample. This provides the required project setup and SfPdfViewer configuration.
-**Step 3:** Include the following namespaces in the **Index.razor** file.
+## Step 3 — Add required namespaces
1. Import the required namespaces at the top of the file:
@@ -30,7 +30,9 @@ Follow the steps in the Blazor Server [getting started](https://help.syncfusion.
@using Syncfusion.Blazor.SfPdfViewer;
```
-**Step 4:** Add the following code example to the Index.razor file.
+## Step 4 — Example: load a PDF from S3 and set DocumentPath
+
+The example below retrieves the PDF from S3, converts it to a base64 data URL, and assigns it to `DocumentPath`.
```csharp
@@ -70,15 +72,15 @@ Follow the steps in the Blazor Server [getting started](https://help.syncfusion.
}
```
-Replace the fileName value with the actual S3 object key for the PDF to load. Pass the document name to the [DocumentPath](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_DocumentPath) property of the SfPdfViewer component.
+Replace `fileName` with the S3 object key for the PDF. Assign the resulting value to the [DocumentPath](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_DocumentPath) property of `SfPdfViewer`.
N> Replace **Your Access Key from AWS S3**, **Your Secret Key from AWS S3**, and **Your Bucket name from AWS S3** with valid values for your environment. Do not expose credentials in client-side code; store secrets securely using app settings, environment variables, or IAM roles.
-N> The **AWSSDK.S3** NuGet package must be installed in the application to use the previous code example.
+N> The `AWSSDK.S3` NuGet package must be installed to use the AWS SDK in this example.
[View sample in GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/tree/master/Load%20and%20Save/Open%20and%20Save%20from%20AWS%20S3)
-N> Ensure that the RegionEndpoint in the code matches the region of the target S3 bucket to avoid authorization or not-found errors.
+N> Ensure `RegionEndpoint` matches the S3 bucket region to avoid authorization or not-found errors.
## See also
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/open-pdf-file/from-azure-blob-storage.md b/Document-Processing/PDF/PDF-Viewer/blazor/open-pdf-file/from-azure-blob-storage.md
index ab6c56263c..1686b74368 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/open-pdf-file/from-azure-blob-storage.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/open-pdf-file/from-azure-blob-storage.md
@@ -7,30 +7,32 @@ control: SfPdfViewer
documentation: ug
---
-# Open PDF file from Azure Blob Storage in Blazor SfPdfViewer
+# Open PDF from Azure Blob Storage in SfPdfViewer
-To load a PDF file from Azure Blob Storage in the SfPdfViewer component, follow the steps below.
+This article shows how to load a PDF stored in Azure Blob Storage into the Syncfusion Blazor `SfPdfViewer` component.
-**Step 1:** Create the Azure Blob Storage account
+## Step 1 — Create the storage account and container
Sign in to the Azure portal and create a Storage account with the required settings. Record the access keys or prepare a SAS token for secure access. Within the Storage Account, create a Blob Container following the steps in this [link](https://learn.microsoft.com/en-us/azure/storage/common/storage-account-create?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&tabs=azure-portal).
-**Step 2:** Create a simple SfPdfViewer sample in Blazor
+## Step 2 — Create a minimal SfPdfViewer sample
Create a basic Blazor Server application and integrate the SfPdfViewer component by following [Getting started with the Blazor PDF Viewer](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/blazor/getting-started/web-app). This provides the required project configuration and a working viewer scaffold.
-**Step 3:** Include the following namespaces in the **Index.razor** file.
+## Step 3 — Add required namespaces
1. Add the required namespaces at the top of Index.razor:
```csharp
-@using System.IO;
-@using Azure.Storage.Blobs;
-@using Azure.Storage.Blobs.Specialized;
-@using Syncfusion.Blazor.SfPdfViewer;
+@using System.IO
+@using Azure.Storage.Blobs
+@using Azure.Storage.Blobs.Specialized
+@using Syncfusion.Blazor.SfPdfViewer
```
-**Step 4:** Add the below code example to load a PDF from `Azure blob storage` container.
+## Step 4 — Example: load a PDF from Azure Blob Storage
+
+The example below downloads the blob to memory, converts it to a Base64 data URL, and assigns it to `DocumentPath`.
```csharp
@@ -66,7 +68,7 @@ N> Replace the placeholder values as follows:
• **Your container name in Azure**: the name of the Blob container that stores the PDF.
• **File Name to be Loaded into Syncfusion® SfPdfViewer**: the file name to load from the Azure container to the SfPdfViewer.
-N> Ensure the **Azure.Storage.Blobs** NuGet package is installed in the application to compile the preceding code. The example converts the blob to a Base64 data URL and assigns it to the `DocumentPath` property.
+N> Ensure the `Azure.Storage.Blobs` NuGet package is installed. Prefer server-side retrieval or managed identities to avoid exposing secrets.
[View the Azure Blob Storage sample on GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/tree/master/Load%20and%20Save/Open%20and%20Save%20from%20Azure%20blob%20storage).
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/open-pdf-file/from-box-cloud-file-storage.md b/Document-Processing/PDF/PDF-Viewer/blazor/open-pdf-file/from-box-cloud-file-storage.md
index 933b9d4f97..2b68705072 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/open-pdf-file/from-box-cloud-file-storage.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/open-pdf-file/from-box-cloud-file-storage.md
@@ -7,7 +7,7 @@ control: SfPdfViewer
documentation: ug
---
-# Open PDF file from Box cloud file storage in Blazor SfPdfViewer
+# Open PDF from Box cloud storage in SfPdfViewer
To load a PDF file from Box cloud file storage in the Blazor SfPdfViewer, follow the steps below.
@@ -36,7 +36,9 @@ Import the required namespaces at the top of your `Index.razor` file:
@using Syncfusion.Blazor.SfPdfViewer;
```
-### Step 2: Add Code to Load a PDF from Box Storage
+## Step 4 — Example: download a file and load into the viewer
+
+The example below locates a file in a Box folder, downloads it, converts it to a Base64 data URI, and assigns it to `DocumentPath`.
```csharp
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/open-pdf-file/from-google-cloud-storage.md b/Document-Processing/PDF/PDF-Viewer/blazor/open-pdf-file/from-google-cloud-storage.md
index b51480b46e..489879fc79 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/open-pdf-file/from-google-cloud-storage.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/open-pdf-file/from-google-cloud-storage.md
@@ -7,19 +7,19 @@ control: SfPdfViewer
documentation: ug
---
-# Open PDF file from Google Cloud Storage in Blazor SfPdfViewer
+# Open PDF from Google Cloud Storage in SfPdfViewer
-To load a PDF file from Google Cloud Storage in a SfPdfViewer, follow the steps below.
+This article shows how to load a PDF stored in Google Cloud Storage into the Syncfusion Blazor `SfPdfViewer` component.
-**Step 1:** Create a service account.
+## Step 1 — Create a service account
Open the Google Cloud Console and navigate to `IAM & Admin` > `Service accounts`. Select `Create service account`, provide a name, assign the required role (for example, Storage Object Admin), and create a JSON key. Download the key file securely. Use this key file for authenticating your application to access the Google Cloud Storage bucket. For more information, refer to the [official Google Cloud documentation](https://cloud.google.com/iam/docs/service-accounts-create)..
-**Step 2:** Create a simple SfPdfViewer sample in Blazor.
+## Step 2 — Create a minimal SfPdfViewer sample
Follow the [getting started](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/blazor/getting-started/web-app) guide to create a basic Blazor application with the SfPdfViewer component. This provides the required project setup and a working viewer instance.
-**Step 3:** Include the following namespaces in the Index.razor file.
+## Step 3 — Add required namespaces
1. Import the required namespaces at the top of the file:
@@ -29,7 +29,9 @@ Follow the [getting started](https://help.syncfusion.com/document-processing/pdf
@using Syncfusion.Blazor.SfPdfViewer;
```
-**Step 4:** Add the following code example.
+## Step 4 — Example: download an object and load into the viewer
+
+The example below loads a PDF object from a GCS bucket into memory, converts it to a Base64 data URI, and assigns it to `DocumentPath`.
```csharp
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/open-pdf-file/from-google-drive.md b/Document-Processing/PDF/PDF-Viewer/blazor/open-pdf-file/from-google-drive.md
index 3b212841a6..d42b88e1d9 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/open-pdf-file/from-google-drive.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/open-pdf-file/from-google-drive.md
@@ -7,19 +7,19 @@ control: SfPdfViewer
documentation: ug
---
-# Open PDF file from Google Drive in Blazor SfPdfViewer
+# Open PDF from Google Drive in SfPdfViewer
-To load a PDF file from Google Drive in the Blazor SfPdfViewer, follow the steps below.
+This article shows how to load a PDF stored in Google Drive into the Syncfusion Blazor `SfPdfViewer` component.
-**Step 1** Set up Google Drive API
+## Step 1 — Enable the Google Drive API
Create a project in Google Developers Console and enable the Google Drive API. Obtain the necessary credentials to access the API. For detailed guidance, see the [Google Drive documentation](https://developers.google.com/drive/api/guides/enable-sdk).
-**Step 2:** Create a simple SfPdfViewer sample in Blazor
+## Step 2 — Create a minimal SfPdfViewer sample
Follow the [getting started](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/blazor/getting-started/web-app) guide to create a basic Blazor application with the SfPdfViewer component.
-**Step 3:** Include the following namespaces in the **Index.razor** file.
+## Step 3 — Add required namespaces
1. Import the required namespaces at the top of the file:
@@ -32,7 +32,9 @@ Follow the [getting started](https://help.syncfusion.com/document-processing/pdf
@using Syncfusion.Blazor.SfPdfViewer;
```
-**Step 4:** Add the below code example to load a PDF from `Google drive` file.
+## Step 4 — Example: authorize, download, and load
+
+The example below authenticates with OAuth 2.0, lists PDF files in a folder, downloads the selected file into memory, converts it to a Base64 data URI, and assigns it to `DocumentPath`.
```csharp
@page "/"
@@ -67,10 +69,10 @@ Follow the [getting started](https://help.syncfusion.com/document-processing/pdf
}
var service = new DriveService(new BaseClientService.Initializer()
- {
- HttpClientInitializer = credential,
- ApplicationName = ApplicationName,
- });
+ {
+ HttpClientInitializer = credential,
+ ApplicationName = ApplicationName,
+ });
var listRequest = service.Files.List();
listRequest.Q = $"mimeType='application/pdf' and '{FolderId}' in parents and trashed=false";
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/opening-pdf-file.md b/Document-Processing/PDF/PDF-Viewer/blazor/opening-pdf-file.md
index 81943306d9..18cc1b955c 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/opening-pdf-file.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/opening-pdf-file.md
@@ -7,9 +7,9 @@ control: SfPdfViewer
documentation: ug
---
-# Open PDF files in SfPdfViewer for Blazor from various storage location
+# Open PDF files in SfPdfViewer for Blazor from various storage locations
-This article explains how to open and display PDF files in the SfPdfViewer component from multiple sources, including URL, cloud storage, database, local file system, Base64 string, and stream. The DocumentPath parameter accepts either a direct URL to the PDF file or a data URL that contains Base64-encoded PDF content.
+This article explains how to open and display PDF files in the SfPdfViewer component from multiple sources, including URL, cloud storage, database, local file system, Base64 string, and stream. The `DocumentPath` parameter accepts either a direct URL to the PDF file or a data URL that contains Base64-encoded PDF content.
## Opening a PDF from remote URL
@@ -30,9 +30,9 @@ If a PDF file is hosted on the web, it can be opened in the viewer by providing
```
-## Opening a PDF from Cloud
+## Opening a PDF from cloud storage
-Open PDF files stored in cloud storage by converting the file to a Base64 string and assigning it to DocumentPath.
+Open PDF files stored in cloud storage by converting the file to a Base64 string and assigning it to `DocumentPath`.
The following code example shows how to open and load a PDF file stored in Azure Blob Storage.
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/organize-pages/events.md b/Document-Processing/PDF/PDF-Viewer/blazor/organize-pages/events.md
index 26ca31634a..a88dcc6dc8 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/organize-pages/events.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/organize-pages/events.md
@@ -7,27 +7,23 @@ control: SfPdfViewer
documentation: ug
---
-# Organize Pages Events in Blazor PDF Viewer
+# Organize pages events
-The PDF Viewer provides events to track and respond to actions within the page organizer, allowing for the customization of page manipulation features.
+Use the page organizer events to react to rotations, rearranges, inserts, deletes, and other page-manipulation actions performed in the page organizer.
-|Name|Description|
+| Name | Description |
|---|---|
-|PageOrganizerSaveRequested|Triggers when a save action is performed in the page organizer.|
-|PageOrganizerZoomChanged|Triggers when the zoom level of the page organizer is changed.|
-|PageOrganizerVisibilityChanged|Triggers when the page organizer dialog visibility is changed.|
+| PageOrganizerSaveRequested | Triggers when the page organizer requests a save of the modified document. |
+| PageOrganizerZoomChanged | Triggers when the page organizer zoom level changes. |
+| PageOrganizerVisibilityChanged | Triggers when the page organizer dialog visibility changes. |
-## PageOrganizerSaveRequested Event
+## PageOrganizerSaveRequested
-The `PageOrganizerSaveRequested` event is triggered when a save action is performed in the page organizer.
+Raised when the user saves changes from the page organizer (for example, after clicking the **Save as** button). The event args include:
-- Occurs when the **Save as** button in the page organizer toolbar is clicked after modifying the document structure.
-
-The event arguments provide the necessary information about the save event:
-
-- `FileName`: The name of the currently loaded PDF document.
-- `DownloadDocument`: A base64 string of the modified PDF document data.
-- `Cancel`: A boolean that, when set to `true`, prevents the default save action from proceeding.
+- `FileName`: the current PDF file name.
+- `DownloadDocument`: a base64 string containing the modified PDF bytes.
+- `Cancel`: set to `true` to prevent the built-in save behavior.
{% tabs %}
{% highlight razor %}
@@ -40,24 +36,23 @@ The event arguments provide the necessary information about the save event:
@code {
- private void SavePages(PageOrganizerSaveEventArgs args) {
- Console.WriteLine("Saved File Name : " + args.FileName.ToString());
+ private void SavePages(PageOrganizerSaveEventArgs args)
+ {
+ Console.WriteLine($"Saved File Name: {args.FileName}");
}
}
{% endhighlight %}
{% endtabs %}
-## PageOrganizerZoomChanged Event
-
-The `PageOrganizerZoomChanged` event is triggered when the zoom level of the page organizer is changed.
+## PageOrganizerZoomChanged
-- This event is fired when the user interacts with the zoom slider in the page organizer. The `ShowImageZoomingSlider` property in `PageOrganizerSettings` must be set to `true` for the slider to be visible.
+Raised when the zoom slider in the page organizer changes value. Enable the slider by setting `PageOrganizerSettings.ShowImageZoomingSlider` to `true`.
-Event arguments:
+Event args:
-- `PreviousZoom`: The previous zoom value.
-- `CurrentZoom`: The current zoom value.
+- `PreviousZoom`: previous zoom value.
+- `CurrentZoom`: current zoom value.
{% tabs %}
{% highlight razor %}
@@ -70,17 +65,18 @@ Event arguments:
@code {
- private void ZoomChange(PageOrganizerZoomChangedEventArgs args) {
- Console.WriteLine("Current Zoom : " + args.CurrentZoom);
+ private void ZoomChange(PageOrganizerZoomChangedEventArgs args)
+ {
+ Console.WriteLine($"Current Zoom: {args.CurrentZoom}");
}
}
{% endhighlight %}
{% endtabs %}
-## PageOrganizerVisibilityChanged Event
+## PageOrganizerVisibilityChanged
-The `PageOrganizerVisibilityChanged` event is triggered when the page organizer dialog visibility is changed.
+Raised when the page organizer dialog is opened or closed.
{% tabs %}
{% highlight razor %}
@@ -92,8 +88,9 @@ The `PageOrganizerVisibilityChanged` event is triggered when the page organizer
@code {
- private void VisibleChanged(bool isVisible) {
- Console.WriteLine("Organize Dialog Visibility : " + isVisible.ToString());
+ private void VisibleChanged(bool isVisible)
+ {
+ Console.WriteLine($"Organize dialog visibility: {isVisible}");
}
}
@@ -104,6 +101,6 @@ The `PageOrganizerVisibilityChanged` event is triggered when the page organizer
## See also
-- Overall Viewer events: [Event](../events)
+- Overall viewer events: [Event](../events)
- Annotation events: [Annotation events](../annotation/events)
- Form designer events: [Form field events](../form-designer/events)
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/organize-pages/mobile-view.md b/Document-Processing/PDF/PDF-Viewer/blazor/organize-pages/mobile-view.md
index 17d7b5fa32..133c2f8a9b 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/organize-pages/mobile-view.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/organize-pages/mobile-view.md
@@ -8,34 +8,33 @@ documentation: ug
---
# Organize Pages in Mobile PDF Viewer Blazor
+The PDF Viewer provides a mobile-responsive experience for the Organize Pages feature so users can manage pages comfortably on small screens.
-The PDF Viewer offers a mobile-responsive layout for the `Organize Pages` feature, ensuring a seamless experience on smaller devices. When viewed on a mobile device, the toolbar and navigation elements adapt to the screen size, providing easy access to all page management tools.
+
-
+## Mobile toolbar
-## Mobile-Friendly Toolbar
+On mobile, the `Organize Pages` toolbar appears in a bottom-anchored layout for easy one-handed use. It exposes the same core tools as desktop (insert, delete, rotate, etc.) with mobile-optimized spacing and icons.
-In the mobile view, the `Organize Pages` toolbar is displayed at the bottom of the screen for easy one-handed access. The toolbar includes the same set of tools as the desktop version, such as insert, delete, and rotate, but with a mobile-optimized layout.
+## Context menu
-## Context Menu for Page Operations
+Tap-and-hold a page thumbnail to open the context menu. Available actions include:
-To perform actions on a page thumbnail, tap and hold on the thumbnail to open a context menu. This menu contains all the available page operations:
+* **Rotate clockwise** — rotate the page 90° clockwise.
+* **Rotate counter-clockwise** — rotate the page 90° counter-clockwise.
+* **Rearrange pages** — drag thumbnails to update order.
+* **Insert page** — insert a new page at the selected position.
+* **Duplicate page** — create a copy of the selected page.
+* **Delete page** — remove the selected page.
+* **Select all** — select all pages in the document.
+* **Import a PDF** — merge pages from another PDF file.
+* **Extract pages** — export selected pages as a new PDF.
+* **Save updates** — apply changes and use **Save** or **Save as** to download the modified PDF.
-* **Rotate Clockwise**: Rotate the selected page 90 degrees clockwise.
-* **Rotate Counter-Clockwise**: Rotate the selected page 90 degrees counter-clockwise.
-* **Rearrange pages**: Drag and drop pages to update the reading order.
-* **Insert Page**: Insert a new page.
-* **Duplicate Page**: Duplicate the selected page.
-* **Delete Page**: Remove the selected page.
-* **Select All**: Select all pages in the document.
-* **Import a PDF document**: Merge the current document with pages from another PDF file.
-* **Extract Pages**: Extract the current document pages as a PDF file.
-* **Save updates**: Review changes in real time and use **Save** or **Save As** to download the revised document.
+
-
+## Rearranging pages
-## Rearranging Pages on Mobile
+To rearrange pages on mobile, tap-and-hold a thumbnail to select it, then drag it to the target position. A drop indicator shows the insertion point.
-To rearrange pages, tap and hold a page thumbnail to select it, then drag it to the desired position. A blue line will indicate the drop location.
-
-By providing a mobile-friendly interface, the PDF Viewer ensures that users can efficiently manage their PDF documents from any device, anywhere.
+The mobile UI ensures users can manage document pages efficiently from any device.
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/organize-pages/overview.md b/Document-Processing/PDF/PDF-Viewer/blazor/organize-pages/overview.md
index 17e88351ae..8187cabd45 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/organize-pages/overview.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/organize-pages/overview.md
@@ -7,110 +7,75 @@ control: SfPdfViewer
documentation: ug
---
-# Organize Pages in Blazor PDF Viewer component
+# Organize pages in SfPdfViewer
-The PDF Viewer allows you to manage your PDF documents efficiently by organizing pages seamlessly. Whether you need to add new pages, remove unnecessary ones, rotate pages, move pages within the document, and duplicate pages, the PDF Viewer facilitates these tasks effortlessly.
+The Organize Pages feature in `SfPdfViewer` helps you manage PDF pages quickly — add, remove, rotate, reorder, duplicate, import, extract, and save changes with a few clicks.
## Getting started
-To access the organize pages feature, simply open the PDF document in the PDF Viewer and navigate to the left vertical toolbar. Look for the `Organize Pages` option to begin utilizing these capabilities.
+Open a PDF in the viewer and choose **Organize Pages** from the left toolbar to open the organizer dialog.
-
+
-The page organization support enables you to perform various actions such as rotating, rearranging, inserting, duplicating, and deleting pages within a PDF document using organize pages dialog.
+## Common actions
-### Rotating PDF pages
+### Rotate pages
-You can adjust the orientation of PDF pages to ensure proper alignment. The rotate icon offers the following options:
+- **Rotate clockwise** — rotate selected pages 90° clockwise.
-* `Rotate clockwise`: Rotate the selected pages 90 degrees clockwise.
+
-
+- **Rotate counter-clockwise** — rotate selected pages 90° counter-clockwise.
-* `Rotate counter-clockwise`: Rotate the selected pages 90 degrees counter-clockwise.
+
-
+### Rearrange pages
-### Rearranging PDF pages
+Drag and drop thumbnails to change page order.
-You can easily change the sequence of pages within your document using the drag and drop method:
+
-* `Drag and drop`: Click and drag a page thumbnail to the desired position within the document, then release it to rearrange the page order.
+### Insert, duplicate, delete
-
+- **Insert page** — add a blank page to the left or right of the selection.
-### Inserting new pages
+
-Effortlessly add new pages to your document with the following options:
+- **Duplicate page** — create a copy placed to the right of the original.
-* `Insert blank page left`: Insert a blank page to the left of the selected page using the respective icon.
+
-
+- **Delete page** — remove selected pages.
-* `Insert blank page right`: Insert a blank page to the right of the selected page using the corresponding icon.
+
-
+### Import and extract
-### Deleting PDF pages
+- **Import PDF** — insert pages from another PDF; imported pages are merged when you save.
-Removing unwanted pages from your document is straight forward:
+
-* `Select pages to delete`: Click on the page thumbnails you wish to remove. You can select multiple pages at once.
-* `Delete selected pages`: Use the delete option in the organize pages pane to remove the selected pages from the document.
+- **Extract pages** — export selected pages as a separate PDF.
-
+
-### Duplicating PDF pages
+### Select all and thumbnail zoom
-Duplicate the pages within your PDF document effortlessly:
+- **Select all** — select every page for bulk actions.
-* `Select pages to Duplicate`: Click on the page thumbnails you wish to duplicate. Use the duplicate option to create duplicates. When a page is copied, the duplicate is automatically added to the right of the selected page. Multiple copies can be made using the toolbar action.
+
-
+- **Thumbnail zoom** — adjust thumbnail size with the zoom slider for better visibility or overview.
-### Importing a PDF Document
+
-Seamlessly import a PDF document into your existing document:
+## Real-time edits and saving
-* `Import PDF document`: Click the **Import Document** button to import a PDF. If a page is selected, the imported document’s thumbnail will be inserted to the right of the selected page. If multiple or no pages are selected, the thumbnail will be added as the first page. When **Save** or **Save As** is clicked, the imported PDF will be merged with the current document. You can insert a blank page to the left or right of the imported thumbnail, delete it, or drag and drop it to reposition as needed.
+Changes in the organizer are reflected in the viewer immediately. Use **Save** to overwrite the document or **Save As** to download a modified copy.
-
+## Supported APIs
-### Extract Document Pages
-
-* `Extract Document Pages`: Click the **Extract Document** button to extract a PDF pages. If a pages are selected, the selected pages are extracted as a separate document.
-
-
-
-### Selecting all pages
-
-Make comprehensive adjustments by selecting all pages simultaneously. This facilitates efficient editing and formatting across the entire document.
-
-
-
-### Zooming Page Thumbnails
-
-Adjust the size of page thumbnails within the organizer panel for better visibility and precision when editing. The zoom functionality allows you to:
-
-* Increase or decrease the size of page thumbnails using the zoom slider
-* See more details on pages when zoomed in
-* View more pages simultaneously when zoomed out
-
-This feature is especially useful when working with documents containing complex layouts or small details that need careful examination during organization.
-
-
-
-### Real-time updates
-
-Witness instant changes in page organization reflected within the PDF Viewer. Simply click the **Save** button to preserve your modifications.
-
-### SaveAs functionality
-
-Safeguard your edits by utilizing the **Save As** feature. This enables you to download the modified version of the PDF document for future reference, ensuring that your changes are securely stored.
-
-## API's supported
-
-**EnablePageOrganizer:** This API enables or disables the page organizer feature in the PDF Viewer. By default, it is set to `true`, indicating that the page organizer is enabled.
+- `EnablePageOrganizer` (bool) — enable or disable the organizer. Default: `true`.
{% tabs %}
{% highlight razor %}
@@ -124,7 +89,7 @@ Safeguard your edits by utilizing the **Save As** feature. This enables you to d
{% endhighlight %}
{% endtabs %}
-**PageOrganizerVisibility:** This API determines whether the page organizer dialog will be displayed automatically when a document is loaded into the PDF Viewer. By default, it is set to `false`, meaning the dialog is not displayed initially.
+- `PageOrganizerVisibility` (bool) — show the organizer dialog on load. Default: `false`.
{% tabs %}
{% highlight razor %}
@@ -138,22 +103,20 @@ Safeguard your edits by utilizing the **Save As** feature. This enables you to d
{% endhighlight %}
{% endtabs %}
-**PageOrganizerSettings:** This API allows control over various page management functionalities within the PDF Viewer. It includes options to enable or disable actions such as deleting, inserting, rotating, duplicating, importing and rearranging pages, as well as configuring thumbnail zoom settings. By default, all these actions are enabled and standard zoom settings are applied.
-
-* **CanDelete** : It allow users to enable or disable the delete pages from the document. By default it set as `true`.
-* **CanInsert** : It allow users to enable or disable the insert new pages from the document. By default it set as `true`.
-* **CanRotate** : It allow users to enable or disable the rotate pages from the document. By default it set as `true`.
-* **CanDuplicate** : It allow users to enable or disable the duplicate pages from the document. By default it set as `true`.
-* **CanRearrange** : It allow users to enable or disable the order of pages from the document. By default it set as `true`.
-* **CanExtractPages** : It allow users to enable or disable extract pages into a separate document. By default it set as `true`.
-* **ShowImageZoomingSlider** : It allow users to enable or disable the zoom slider for images. By default it set as `true`.
-* **ImageZoom** : It represents the current zoom value of the images in the page organizer view. By default it set as `1`.
-* **ImageZoomMin** : It represent minimum value for the image zooming slider in the page organizer view. By default it set as `1` and acceptable values: `1` to `4`.
-* **ImageZoomMin** : It represent maximum value for the image zooming slider in the page organizer view. By default it set as `5` and acceptable values: `2` to `5`.
-* **FooterButtons** : It specifies which buttons are visible in the Page Organizer dialog footer.
- * `None` - Hide both Save and Save As buttons.
- * `Save` - Show only the "Save" button.
- * `Save As` - Show only the "SaveAs" button.
+- `PageOrganizerSettings` — controls available actions and thumbnail zoom settings. Common properties:
+
+* `CanDelete` — allow delete. Default: `true`.
+* `CanInsert` — allow insert. Default: `true`.
+* `CanRotate` — allow rotate. Default: `true`.
+* `CanDuplicate` — allow duplicate. Default: `true`.
+* `CanRearrange` — allow rearrange. Default: `true`.
+* `CanExtractPages` — allow extract. Default: `true`.
+* `CanImport` — allow import. Default: `true`.
+* `ShowImageZoomingSlider` — show thumbnail zoom slider. Default: `true`.
+* `ImageZoom` — current thumbnail zoom. Default: `1`.
+* `ImageZoomMin` — minimum zoom (1).
+* `ImageZoomMax` — maximum zoom (5).
+* `FooterButtons` — which footer buttons to show: `None`, `Save`, `SaveAs`, or combinations.
{% tabs %}
{% highlight razor %}
@@ -168,13 +131,11 @@ Safeguard your edits by utilizing the **Save As** feature. This enables you to d
## Keyboard shortcuts
-The following keyboard shortcuts are available at the organize pages dialog.
-
-* **Ctrl+Z** : Undo the last action performed.
-* **Ctrl+Y** : Redo the action that was undone.
+- **Ctrl+Z** — undo.
+- **Ctrl+Y** — redo.
-#### Conclusion
+## Conclusion
-With the Organize Pages feature in the PDF Viewer, managing your PDF documents has never been easier. Whether you are adding new content, adjusting page orientation, moving the pages, duplicating the pages, or removing unnecessary pages, this feature provides the tools you need to streamline your document management workflow. Explore these capabilities today and take control of your PDF documents with ease!
+Organize Pages provides a compact, efficient interface to manage document pages in `SfPdfViewer`. Use the available settings and APIs to tailor the organizer to your application's needs.
[View sample in GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/tree/master/Page%20Organizer)
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/organize-pages/programmatic-support.md b/Document-Processing/PDF/PDF-Viewer/blazor/organize-pages/programmatic-support.md
index 54cc0836f8..07124e2281 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/organize-pages/programmatic-support.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/organize-pages/programmatic-support.md
@@ -7,11 +7,11 @@ control: SfPdfViewer
documentation: ug
---
-# Programmatic Support for Organize Pages in Blazor PDF Viewer control
+# Programmatic support for Organize Pages
-The PDF Viewer provides comprehensive programmatic support for organizing pages, allowing you to integrate and manage PDF functionalities directly within your application. This section details the available APIs to enable, control, and interact with the page organization features.
+The PDF Viewer exposes APIs to programmatically rotate, move, insert, delete, duplicate, export, and import pages. The examples below show common calls; each operation updates the client-side view and is persisted when you save the document.
-## Rotate Pages
+## Rotate pages
This method allows programmatic rotation of individual or multiple pages within the PDF document. The rotation is applied to the client-side representation and will be persisted upon saving the document. Provide the indexes of the page to rotate and rotation direction.
@@ -37,10 +37,9 @@ This method allows programmatic rotation of individual or multiple pages within
{% endhighlight %}
{% endtabs %}
-`RotationDirection` represent the rotation direction of the page. It has two types
+`RotationDirection` values: `RotationDirection.Clockwise` and `RotationDirection.CounterClockwise`.
-- `RotationDirection.Clockwise` - It rotates the page in the clock wise direction.
-- `RotationDirection.CounterClockwise` - It rotates the page in the anti clock wise direction.
+### Rotate to a specific angle
### Rotate Pages with angle
@@ -68,14 +67,9 @@ This method allows programmatic rotation of individual or multiple pages within
{% endhighlight %}
{% endtabs %}
-`PageRotation` represent the rotation angle of the page. It has four types
+`PageRotation` options: `RotateAngle0`, `RotateAngle90`, `RotateAngle180`, `RotateAngle270`.
-- `PageRotation.RotateAngle0` - It rotates the page in the 0 degree direction.
-- `PageRotation.RotateAngle90` - It rotates the page in the 90 degree direction.
-- `PageRotation.RotateAngle180` - It rotates the page in the 180 degree direction.
-- `PageRotation.RotateAngle270` - It rotates the page in the 270 degree direction.
-
-## Move Pages
+## Move pages
This method allows asynchronously arranges the specified pages at the given target position. It rearrange the pages in the document based in the targeted index. Provide the indexes of the page to move and targeted index to move.
@@ -101,7 +95,7 @@ This method allows asynchronously arranges the specified pages at the given targ
{% endhighlight %}
{% endtabs %}
-## Insert Pages
+## Insert blank pages
This method allows asynchronously inserts one or more blank pages at the specified index. It insert the blank pages in the document based in the targeted index. Provide the indexes to add blank pages and count of the pages need to be added.
@@ -127,7 +121,7 @@ This method allows asynchronously inserts one or more blank pages at the specifi
{% endhighlight %}
{% endtabs %}
-## Delete Pages
+## Delete pages
This method allows asynchronously deletes the pages at the specified indices from the document. It delete the pages in the document based in the targeted index. Provide the indexes to delete pages of the document.
@@ -153,7 +147,7 @@ This method allows asynchronously deletes the pages at the specified indices fro
{% endhighlight %}
{% endtabs %}
-## Duplicate Pages
+## Duplicate pages
This method allows asynchronously duplicates the pages at the specified indices from the document. It duplicates the pages in the document based in the targeted index. Provide the indexes to duplicates pages of the document.
@@ -179,7 +173,7 @@ This method allows asynchronously duplicates the pages at the specified indices
{% endhighlight %}
{% endtabs %}
-## Export Pages
+## Export pages
This method allows extracts the specified pages and downloads them as a separate PDF document. It extract the pages in the document based in the targeted index. Provide the indexes to extract pages of the document.
@@ -205,7 +199,7 @@ This method allows extracts the specified pages and downloads them as a separate
{% endhighlight %}
{% endtabs %}
-### Export Pages as Stream
+### Export pages as stream
This method allows extracts the specified pages and returns the extracted PDF as a stream. It extract the pages in the document as index based in the targeted index. Provide the indexes to extract pages of the document as stream.
@@ -232,7 +226,7 @@ This method allows extracts the specified pages and returns the extracted PDF as
{% endhighlight %}
{% endtabs %}
-## Import Pages
+## Import pages
This method allows inserts pages from another PDF document at the specified index. It insert the pages of the another document based in the targeted index. Provide the indexes to import pages of the another document, byte array of the imported document and password.
@@ -259,7 +253,7 @@ This method allows inserts pages from another PDF document at the specified inde
{% endhighlight %}
{% endtabs %}
-### Import Pages as Stream
+### Import pages as stream
This method allows inserts pages from another PDF document as stream at the specified index. It insert the pages of the another document as stream based in the targeted index. Provide the indexes to import pages of the another document, stream of the imported document and password.
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/organize-pages/toolbar.md b/Document-Processing/PDF/PDF-Viewer/blazor/organize-pages/toolbar.md
index 11946b9fcf..b434db0390 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/organize-pages/toolbar.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/organize-pages/toolbar.md
@@ -7,11 +7,11 @@ control: SfPdfViewer
documentation: ug
---
-# Organize Page Toolbar Customization in Blazor PDF Viewer control
+# Organize page toolbar
-The PDF Viewer allows you to customize the toolbar for the organize pages feature, enabling you to show or hide specific tools based on your application's requirements. The `PageOrganizerSettings` API provides properties to control the visibility of each tool in the organize pages dialog.
+Customize which tools appear in the Organize Pages toolbar using `PageOrganizerSettings`. Toggle features to match your application's needs.
-## Show or hide the insert option
+## Hide insert
The `CanInsert` property controls the visibility of the insert tool. When set to `false`, the insert tool will be hidden from the toolbar.
@@ -28,9 +28,9 @@ The `CanInsert` property controls the visibility of the insert tool. When set to
{% endhighlight %}
{% endtabs %}
-
+
-## Show or hide the delete option
+## Hide delete
The `CanDelete` property controls the visibility of the delete tool. When set to `false`, the delete tool will be hidden.
@@ -47,9 +47,9 @@ The `CanDelete` property controls the visibility of the delete tool. When set to
{% endhighlight %}
{% endtabs %}
-
+
-## Show or hide the rotate option
+## Hide rotate
The `CanRotate` property controls the visibility of the rotate tool. When set to `false`, the rotate tool will be hidden.
@@ -66,9 +66,9 @@ The `CanRotate` property controls the visibility of the rotate tool. When set to
{% endhighlight %}
{% endtabs %}
-
+
-## Show or hide the duplicate option
+## Hide duplicate
The `CanDuplicate` property controls the visibility of the copy tool. When set to `false`, the copy tool will be hidden.
@@ -85,9 +85,9 @@ The `CanDuplicate` property controls the visibility of the copy tool. When set t
{% endhighlight %}
{% endtabs %}
-
+
-## Show or hide the import option
+## Hide import
The `CanImport` property controls the visibility of the import tool. When set to `false`, the import tool will be hidden.
@@ -104,9 +104,9 @@ The `CanImport` property controls the visibility of the import tool. When set to
{% endhighlight %}
{% endtabs %}
-
+
-## Show or hide the extract option
+## Hide extract
The `CanExtractPages` property controls the visibility of the extract tool. When set to `false`, the extract tool will be hidden.
@@ -123,9 +123,9 @@ The `CanExtractPages` property controls the visibility of the extract tool. When
{% endhighlight %}
{% endtabs %}
-
+
-## Show or hide the rearrange option
+## Disable rearrange
The `CanRearrange` property controls the ability to rearrange pages. When set to `false`, pages cannot be rearranged.
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/organize-pages/ui-interactions.md b/Document-Processing/PDF/PDF-Viewer/blazor/organize-pages/ui-interactions.md
index 13eb3de073..f2c31c8979 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/organize-pages/ui-interactions.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/organize-pages/ui-interactions.md
@@ -7,99 +7,82 @@ control: SfPdfViewer
documentation: ug
---
-# UI Interactions for Organizing Pages in Blazor PDF Viewer
+# UI interactions for Organize Pages
-The PDF Viewer provides an intuitive user interface for managing and organizing pages within a PDF document. This section covers the various UI interactions available in the `Organize Pages` dialog.
+The Organize Pages dialog provides simple, touch-friendly controls to manage page thumbnails and perform common page operations.
-## Rotating PDF pages
+## Rotate pages
You can adjust the orientation of pages to ensure proper alignment. The rotate icon in the Organize Pages dialog provides the following options:
-* **Rotate clockwise**: Rotate the selected pages 90 degrees clockwise.
+- **Rotate clockwise** — rotate selected pages 90° clockwise.
-
+
-* **Rotate counter-clockwise**: Rotate the selected pages 90 degrees counter-clockwise.
+- **Rotate counter-clockwise** — rotate selected pages 90° counter-clockwise.
-
+
-## Rearranging PDF pages
+## Rearrange pages
-Easily change the sequence of pages using the drag-and-drop method:
+Drag and drop thumbnails to change page order.
-* **Drag and drop**: Click and drag a page thumbnail to the desired position within the document, then release it to reorder the pages.
+
-
+## Insert pages
-## Inserting new pages
+- **Insert blank page left** — insert a blank page to the left of the selected page.
+- **Insert blank page right** — insert a blank page to the right of the selected page.
-Effortlessly add blank pages to your document with the following options:
+
-* **Insert blank page left**: Insert a blank page to the left of the selected page.
-* **Insert blank page right**: Insert a blank page to the right of the selected page.
+## Delete pages
-
+1. Select thumbnails to remove (multi-select supported).
+2. Use the Delete action in the organizer to remove the selected pages.
-## Deleting PDF pages
+
-Remove unwanted pages from your document with these steps:
+## Duplicate pages
-1. **Select pages to delete**: Click on the thumbnails of the pages you wish to remove. You can select multiple pages at once.
-2. **Delete selected pages**: Use the delete option in the Organize Pages pane to remove the selected pages from the document.
+- Select thumbnails to duplicate.
+- Use the Duplicate action to add copies (copies appear to the right of the originals).
-
+
-## Duplicating PDF pages
+## Import pages
-Duplicate pages within your PDF document effortlessly:
+- **Import PDF** — select a PDF to insert pages into the current document. If a page is selected the imported pages are added to its right; otherwise they are added at the start. Imported pages are merged with the document when you save.
-* **Select pages to duplicate**: Click on the page thumbnails you wish to duplicate.
-* **Duplicate selected pages**: Use the duplicate option to create duplicates. The copied pages will be added to the right of the selected pages.
+
-
+## Extract pages
-## Importing a PDF document
+- **Extract Document** — export selected pages as a separate PDF file.
-Seamlessly import another PDF document into your current document:
+
-* **Import PDF document**: Click the **Import Document** button to select and import a PDF. The imported document will be inserted as a thumbnail. If a page is selected, the thumbnail will be added to its right. If no pages are selected, it will be added as the first page. The imported PDF will be merged with the current document upon saving.
+## Select all
-
+- **Select all** — select every page for bulk operations such as rotate, delete, or duplicate.
-### Extract Document Pages
+
-* `Extract Document Pages`: Click the **Extract Document** button to extract a PDF pages. If a pages are selected, the selected pages are extracted as a separate document.
+## Thumbnail zoom
-
+- Use the zoom slider to increase or decrease thumbnail size.
+- Zoom in to inspect page details or zoom out to view more pages.
-## Selecting all pages
-
-Select all pages simultaneously to perform bulk operations, such as rotating or deleting all pages at once.
-
-
-
-## Zooming page thumbnails
-
-Adjust the size of page thumbnails for better visibility and precision:
-
-* Use the zoom slider to increase or decrease the thumbnail size.
-* Zoom in to see more detail on each page.
-* Zoom out to view more pages at once.
-
-
+
## Real-time updates and saving
-All changes are reflected instantly in the Organize Pages dialog. Click the **Save** button to apply the modifications to the document. Use the **Save As** feature to download a new version of the PDF with your changes.
+Changes in the organizer are reflected instantly in the viewer. Click **Save** to persist changes or **Save As** to download a modified copy.
## Keyboard shortcuts
-The following keyboard shortcuts are available in the Organize Pages dialog:
-
-* **Ctrl+Z**: Undo the last action.
-
-
-
-* **Ctrl+Y**: Redo the last undone action.
+- **Ctrl+Z** — undo.
+- **Ctrl+Y** — redo.
-
+
+
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/organize-pdf.md b/Document-Processing/PDF/PDF-Viewer/blazor/organize-pdf.md
index b653d789f5..28698a0fa8 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/organize-pdf.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/organize-pdf.md
@@ -9,9 +9,9 @@ documentation: ug
# Organize pages in Blazor PDF Viewer
-The Blazor PDF Viewer component provides an Organize Pages panel that helps you prepare documents before sharing them. Use it to tidy scanned files, move pages into the right order, and duplicate important content without leaving the viewer.
+The SfPdfViewer component provides an Organize Pages panel that helps prepare documents before sharing. Use it to tidy scanned files, move pages into the correct order, and duplicate content without leaving the viewer.
-To open the Organize Pages panel, load a document, ensure that the Organize Pages toolbar item is enabled, and choose **Organize Pages** from the left vertical toolbar. The document must allow page-level edits; otherwise, the toolbar item is hidden.
+To open the Organize Pages panel, load a document, ensure that the Organize Pages toolbar item is enabled, and choose **Organize Pages** from the left vertical toolbar. The document must allow page-level edits for the toolbar item to be available.
The Organize Pages panel supports the following actions:
@@ -21,11 +21,11 @@ The Organize Pages panel supports the following actions:
* **Delete pages**: Remove pages that are no longer needed.
* **Duplicate pages**: Duplicate selected pages to reuse content elsewhere in the document.
* **Import a PDF document**: Merge the current document with pages from another PDF file.
-* **Extract Pages**: Extract the current document pages as a PDF file.
+* **Extract pages**: Extract pages from the current document as a separate PDF file.
* **Select all pages**: Apply bulk actions, such as rotation or deletion, to every page.
* **Save updates**: Review changes in real time and use **Save** or **Save As** to download the revised document.
-After completing the changes, apply them by selecting **Save** to overwrite the current document or **Save As** to download a new copy that retains the updated page order.
+After completing the changes, select **Save** to overwrite the current document or **Save As** to download a new copy that retains the updated page order.
For a full guide to Organize Pages in Blazor, see the feature landing page: [Organize pages in Blazor PDF Viewer](./organize-pages/overview).
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/overview.md b/Document-Processing/PDF/PDF-Viewer/blazor/overview.md
index d0304a5666..39af4bbe00 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/overview.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/overview.md
@@ -9,25 +9,25 @@ documentation: ug
# Overview of Blazor PDF Viewer Component
-The Blazor SfPdfViewer component enables viewing, editing, printing, and downloading PDF files in Blazor applications without a web service dependency. It is optimized for speed and responsiveness and provides a feature set comparable to the classic Blazor PDF Viewer. The component is straightforward to integrate into both Blazor Server and Blazor WebAssembly (WASM) applications.
+The Blazor `SfPdfViewer` component enables viewing, annotating, printing, and downloading PDF files in Blazor applications without requiring a separate server-side PDF service. It provides fast, responsive rendering and is straightforward to integrate into both Blazor Server and Blazor WebAssembly (WASM) applications.
-The SfPdfViewer component provides the same key capabilities as the [Blazor PDF Viewer component](../blazor-classic/overview), with additional advantages described below.
+`SfPdfViewer` delivers the core capabilities of the [Blazor PDF Viewer component](../blazor-classic/overview) while adding client-side rendering, reduced server round-trips, and a unified cross-platform package. Key advantages are summarized below.
## Performance Improvements
-Rendering, scrolling, zooming, panning, and printing have been optimized for faster, smoother interaction.
+Rendering, scrolling, zooming, panning, and printing have been optimized for faster, smoother interaction and reduced latency.
## Elimination of Service Dependency
-The classic PDF Viewer required a separate [service URL](./getting-started/web-assembly-application) to load documents. In the [Blazor SfPdfViewer](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/blazor/getting-started/web-assembly-application), documents can be loaded directly without a service URL, enabling offline scenarios and reducing network overhead. Server-side hosting remains supported when needed.
+The classic PDF Viewer required a separate [service URL](./getting-started/web-assembly-application) to load documents. `SfPdfViewer` can load documents directly in the browser (see the [Blazor WebAssembly](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/blazor/getting-started/web-assembly-application)), enabling offline scenarios and reducing network overhead. Server-side hosting remains supported when required.
## Common Package
-Previously, separate NuGet packages were required for each operating system: [Windows](https://www.nuget.org/packages/Syncfusion.Blazor.PdfViewerServer.Windows), [Linux](https://www.nuget.org/packages/Syncfusion.Blazor.PdfViewerServer.Linux), and [OSX](https://www.nuget.org/packages/Syncfusion.Blazor.PdfViewerServer.OSX). The [Syncfusion.Blazor.SfPdfViewer](https://www.nuget.org/packages/Syncfusion.Blazor.SfPdfViewer) package now provides a single, cross-platform package for all environments.
+Previously, separate NuGet packages were required for each operating system: [Windows](https://www.nuget.org/packages/Syncfusion.Blazor.PdfViewerServer.Windows), [Linux](https://www.nuget.org/packages/Syncfusion.Blazor.PdfViewerServer.Linux), and [OSX](https://www.nuget.org/packages/Syncfusion.Blazor.PdfViewerServer.OSX). The `Syncfusion.Blazor.SfPdfViewer` package now provides a single, cross-platform distribution for all supported environments.
## Reduced Server Calls
-In the classic viewer, many C# service calls were required to retrieve information such as page text, hyperlinks, and page images. The SfPdfViewer moves these operations to the client side, decreasing round trips and improving responsiveness.
+In the classic viewer, many C# service calls were required to retrieve page text, hyperlinks, and page images. `SfPdfViewer` performs these operations client-side where possible, decreasing round trips and improving responsiveness.
## Some of the key features are listed below
@@ -49,14 +49,14 @@ In the classic viewer, many C# service calls were required to retrieve informati
* [Measurement annotations](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/blazor/annotation/measurement-annotation)
* [Free text annotations](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/blazor/annotation/free-text-annotation)
* [Redaction annotations](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/blazor/redaction/overview)
- * [Comments](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/blazor/annotation/comments) and [sticky notes](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/blazor/annotation/sticky-notes-annotation) for all annotation types
+ * [Comments](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/blazor/annotation/comments) and [sticky notes](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/blazor/annotation/sticky-notes-annotation)
* [Form filling](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/blazor/form-filling)
* [Form designer](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/blazor/form-designer)
* [Handwritten signature](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/blazor/hand-written-signature)
### Supported Features: Desktop vs Mobile
-The table below lists supported and unsupported features on desktop and mobile devices.
+The following table summarizes feature support on desktop and mobile devices.
| Feature | Desktop | Mobile devices |
|--|--|--|
@@ -78,10 +78,12 @@ The table below lists supported and unsupported features on desktop and mobile d
| Add annotation through touch | Yes | No |
| Import/export annotation | Yes | Yes |
| Form fields rendering | Yes | Yes |
+| Form Designer | Yes | Yes |
+| Modern Navigation Panel | Yes | Yes |
+| Organize Pages | Yes | Yes |
N> Enable desktop mode on mobile devices using the [EnableDesktopMode](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_EnableDesktopMode) property to display the toolbar as on desktop.
-N> Syncfusion® provides the SfPdfViewer component for both Blazor Server and Blazor WebAssembly applications.
- For both Blazor WebAssembly and Blazor Server applications, use the [SfPdfViewer](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.PdfViewer.SfPdfViewer.html) component from the Syncfusion.Blazor.SfPdfViewer NuGet package. This component does not require server-side processing through a web service to render PDF files For Windows, Linux, and macOS, use the [Syncfusion.Blazor.SfPdfViewer](https://www.nuget.org/packages/Syncfusion.Blazor.SfPdfViewer) NuGet package.
+N> The `SfPdfViewer` component is available for both Blazor Server and Blazor WebAssembly applications. Use the `SfPdfViewer` component from the `Syncfusion.Blazor.SfPdfViewer` NuGet package; server-side processing through a web service is not required to render PDF files in client scenarios. For platform-specific server packages, see the NuGet listings for Windows, Linux, and macOS.
-N> Refer to the [Blazor SfPdfViewer feature tour](https://www.syncfusion.com/pdf-viewer-sdk/blazor-pdf-viewer) for an overview of its capabilities. Explore the [Blazor SfPdfViewer demo](https://document.syncfusion.com/demos/pdf-viewer/blazor-server/pdf-viewer/default-functionalities?theme=fluent) to see the core features in action.
\ No newline at end of file
+N> See the [Blazor SfPdfViewer feature tour](https://www.syncfusion.com/pdf-viewer-sdk/blazor-pdf-viewer) for a concise overview of capabilities and the [Blazor SfPdfViewer demo](https://document.syncfusion.com/demos/pdf-viewer/blazor-server/pdf-viewer/default-functionalities?theme=fluent) to explore core features interactively.
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/print.md b/Document-Processing/PDF/PDF-Viewer/blazor/print.md
index 51c5a6b908..2506758b6e 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/print.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/print.md
@@ -9,7 +9,7 @@ documentation: ug
# Print in Blazor SfPdfViewer Component
-The SfPdfViewer supports printing the loaded PDF by default. Enable or disable the toolbar Print option by setting the [EnablePrint](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_EnablePrint) property.
+The `SfPdfViewer` component supports printing the loaded PDF by default. Enable or disable the toolbar Print option by setting the [EnablePrint](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_EnablePrint) property. Code examples in this topic use the local component reference name shown in the snippets (for example, `SfPdfViewer2`); the component class is `SfPdfViewer`.
```cshtml
@@ -94,7 +94,7 @@ The SfPdfViewer supports printing the loaded PDF by default. Enable or disable t
## PrintScaleFactor
-[PrintScaleFactor](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_PrintScaleFactor) sets the scale used when rendering pages for printing. By default the scale factor set as 1.0 (prints at the on-screen scale). Valid range from 0.5 to 5.0. Higher values can improve output clarity for documents with smaller page dimensions and may increase print processing time.
+[PrintScaleFactor](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_PrintScaleFactor) sets the scale used when rendering pages for printing. By default, `PrintScaleFactor` is `1.0` (prints at the on-screen scale). The valid range is `0.5` to `5.0`. Increasing the scale can improve clarity for documents with small page dimensions but may increase print processing time and memory usage.
```cshtml
@@ -118,20 +118,20 @@ The following events are available for print in the SfPdfViewer component.
|Name|Description|
|---|---|
|PrintStart|Triggers when a print action starts.|
-|PrintEnd|Triggers when a print action is completed.|
+|PrintEnd|Triggers when a print action completes.|
### PrintStart Event
-The [PrintStart](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_PrintStart) event triggers when the print action is started.
+The [PrintStart](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_PrintStart) event triggers when a print action begins.
-#### Event Arguments
+#### Event arguments
-See [PrintStartEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PrintStartEventArgs.html) for details such as Filename, Cancel option.
+See [PrintStartEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PrintStartEventArgs.html) for details such as `FileName` and the `Cancel` option.
-- If the [Cancel](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PrintStartEventArgs.html#Syncfusion_Blazor_SfPdfViewer_PrintStartEventArgs_Cancel) property is set to true in the PrintStart event, the print operation is canceled and the print dialog will not open.
-- By default, Cancel is false. Set it to true to prevent printing.
+- If the [Cancel](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PrintStartEventArgs.html#Syncfusion_Blazor_SfPdfViewer_PrintStartEventArgs_Cancel) property is set to `true` in the `PrintStart` event handler, the print operation is canceled and the print dialog does not open.
+- By default, `Cancel` is `false`.
-The following example illustrates how to handle the PrintStart event.
+The following example illustrates how to handle the `PrintStart` event.
```cshtml
@@ -151,13 +151,13 @@ The following example illustrates how to handle the PrintStart event.
### PrintEnd Event
-The [PrintEnd](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_PrintEnd) event triggers when an annotation is added to a page in the PDF document.
+The [PrintEnd](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_PrintEnd) event triggers when a print action completes.
-#### Event Arguments
+#### Event arguments
-See [PrintEndEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PrintEndEventArgs.html) for details such as Filename.
+See [PrintEndEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PrintEndEventArgs.html) for details such as `FileName`.
-The following example illustrates how to handle the PrintEnd event.
+The following example illustrates how to handle the `PrintEnd` event.
```cshtml
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/redaction/mobile-view.md b/Document-Processing/PDF/PDF-Viewer/blazor/redaction/mobile-view.md
index 4dd87255f2..4244a27a0e 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/redaction/mobile-view.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/redaction/mobile-view.md
@@ -7,17 +7,17 @@ control: SfPdfViewer
documentation: ug
---
-# Redaction in Mobile View in Blazor SfPdfViewer Component
+# Redaction in mobile view
-The **Redaction Tool** enables users to permanently mark and remove sensitive content from PDF documents in mobile view using the SfPdfViewer component. This feature is optimized for touch interactions and provides a streamlined redaction workflow specifically designed for mobile devices.
+Redaction mode in mobile view provides a touch-optimized toolbar and tools to mark, review, and apply redactions on the go.
-
+
N> In mobile view, the redaction toolbar appears at the bottom of the viewer for easy thumb access. Mobile layout activates automatically on small screens.
-## Adding Redaction in Mobile View
+## Enable redaction in mobile view
-To enable redaction functionality in your Blazor application, configure the PDF Viewer with the following setup,
+Configure the viewer toolbar to include redaction tools for both desktop and mobile. Example:
```cshtml
@page "/"
@@ -73,60 +73,25 @@ To enable redaction functionality in your Blazor application, configure the PDF
}
```
-## Understanding Mobile Redaction Toolbar Tools
+## Toolbar tools overview
-When you enter redaction mode in mobile view, a specialized redaction toolbar appears with multiple tools optimized for touch interaction. Each tool serves a specific purpose in the redaction workflow.
+### Redaction annotation
-### Redaction Annotation Tool
+Draw rectangular overlays to mark selective content for redaction. Overlays are editable until applied.
-The **Redaction Annotation** tool is the primary redaction feature that allows you to draw redaction rectangles on specific content:
+
-**Function**: Creates visual redaction annotations that mark content for permanent removal
-**Usage**:
-Touch and drag to draw rectangular redaction overlays on any content area.
+### Page redaction
-**Process**:
-- Selected content appears with a customizable overlay (default black)
-- Annotations remain editable until explicitly applied
-- Can be repositioned or deleted before final application
+Redact whole pages or page ranges using patterns (odd/even/ranges/current page).
-
+
-### Page Redaction Tool
+### Redaction properties
-The **Page Redaction** tool enables batch redaction of entire pages based on specific patterns.
+Customize overlay color, outline, overlay text, font, alignment, and size before applying redactions.
-
-
-**Function**: Redacts complete pages or page ranges with a single action
-**Options Available**:
-- **Odd Pages**: Redacts only odd-numbered pages (1, 3, 5, etc.)
-- **Even Pages**: Redacts only even-numbered pages (2, 4, 6, etc.)
-- **Specific Page**: Specify single pages, ranges (e.g., 1-5, 10-15), or comma-separated lists (e.g., 1,3,5-7)
-- **Current Page**: Redacts only the currently displayed page
-
-**Usage**:
-Select desired pattern → Review affected pages in the viewer → Confirm redaction scope
-
-
-
-### Redaction Properties Tool
-
-The **Redaction Properties** tool allows customization of redaction appearance before application.
-
-
-
-**Function**: Customize the visual appearance of redaction overlays and text replacement
-**Customizable Properties**:
-- **Fill Color**: Change the redaction overlay color (default: black)
-- **Outline Color**: Set outline color for redaction boxes (optional)
-- **Overlay Text**: Add custom text to appear on redacted areas (e.g., "REDACTED", "CONFIDENTIAL")
-- **Text Color**: Change overlay text color for better visibility
-- **Text Font**: Select font family for overlay text
-- **Text Alignment**: Position overlay text within redaction boxes
-- **Text Size**: Adjust overlay text size relative to redaction area
-
-
+
## Enabling Redaction Mode in Mobile View
@@ -161,7 +126,7 @@ The **Redaction Properties** tool allows customization of redaction appearance b
3. **Preview**: See changes applied to existing annotations
4. **Apply**: Use customized appearance for final redaction
-## Applying Redactions in Mobile View
+## Apply redactions
N> Applying redactions is permanent. After applying, the underlying content and text are removed from the document and cannot be recovered.
@@ -195,11 +160,11 @@ To remove existing redaction annotations before they are applied:

-N> Once redactions have been applied to the document, they become part of the PDF content and cannot be removed or modified.
+N> After redactions are applied they become part of the PDF content and cannot be removed.
[View sample in GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/tree/master/Toolbar)
-## See Also
+## See also
* [Mobile Toolbar](../toolbar-customization/mobile-toolbar)
* [Annotation in Mobile View](../annotation/annotations-in-mobile-view)
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/redaction/overview.md b/Document-Processing/PDF/PDF-Viewer/blazor/redaction/overview.md
index aeb1ca23bd..37a73af5f9 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/redaction/overview.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/redaction/overview.md
@@ -9,66 +9,58 @@ documentation: ug
# Redaction annotations in Blazor SfPdfViewer Component
-Redaction annotations conceal sensitive content in a PDF. The Syncfusion Blazor PDF Viewer (SfPdfViewer) supports both interactive and programmatic redaction with customizable appearance and a one-click final apply action.
-
-Check the following video to learn how to work with Redaction annotations in Blazor PDF Viewer.
+Check the following video to learn how to work with redaction annotations in the Blazor PDF Viewer.
{% youtube "https://youtu.be/pUlTIazVyUU" %}
-N> Prerequisites: Add the SfPdfViewer component to the Blazor app and ensure the redaction feature is available in the used version. Redaction permanently removes content when applied.
+N> Prerequisites: Add the `SfPdfViewer` component to your Blazor app and ensure your Syncfusion package version includes the redaction feature. Applying redactions permanently removes underlying content.

-## Add a Redaction annotation to the PDF document
-
-The redaction feature hides sensitive information by adding redaction annotations to pages. Annotations can be added from the toolbar or programmatically.
+## Add a redaction annotation
-Click the Redaction tool on the toolbar and draw over the content to redact. After marking, optionally show overlay text (for example, "Confidential") and customize appearance, including fill color, border color, and opacity.
+Add redaction annotations using the toolbar or programmatically. Click the Redaction tool and draw over content to mark it for redaction. You can optionally add overlay text (for example, "Confidential") and customize appearance such as fill color, border color, and opacity.

-## Delete Redaction Annotations
+## Delete redaction annotations
-Redaction annotations can be removed through the UI or programmatically.
+Remove redaction annotations through the UI or the API:
* Click the Delete button on the toolbar, or
* Press the **Delete** key after selecting the annotation.

-## Add Page Redaction in Blazor SfPdfViewer Component
+## Page redaction
-The Blazor PDF Viewer supports redacting entire pages that contain sensitive or confidential information. Use the built-in UI dialog (to choose specific pages, ranges, or all pages) or perform page redaction programmatically.
+Redact entire pages or page ranges using the built-in page-redaction dialog, or perform page redaction programmatically.

-## Apply Redaction to the Document in Blazor SfPdfViewer Component
+## Apply redaction to the document
-The Blazor PDF Viewer can permanently apply redaction annotations to the document, removing the marked content. This action is irreversible. Apply redaction using the toolbar button or programmatically.
+Applying redactions permanently removes the marked content from the PDF. Use the toolbar button or API to apply redactions.
-The Apply Redaction button on the toolbar applies all redaction annotations in the document.
-
-* The button is disabled when no redaction annotations exist.
-* The button automatically enables when at least one redaction annotation is present.
+* The Apply Redaction button is disabled when no redaction annotations exist.
+* It enables automatically when at least one redaction annotation is present.

-A confirmation dialog appears before applying redaction to confirm the irreversible operation.
+A confirmation dialog appears before applying redactions to confirm this irreversible operation.

N> The redaction process is irreversible. Once applied, the original content cannot be recovered.
-## Comment Panel Support for Redaction Annotations
-
-Redaction annotations support comments through the built-in comment panel. Use comments to add notes, track reviews, or record the reason for redaction.
+## Comment panel support
-Comments are available through the UI and API. For details, see the Comments documentation.
+Redaction annotations support comments via the built-in comment panel. Use comments to add notes, track reviews, or record reasons for redaction. Comments are available through both the UI and API; see the Comments documentation for details.
For details, see the [Comments documentation](../annotation/comments).
-## Export and Import Support for the Redaction Annotations
+## Export and import support
-The viewer supports exporting and importing redaction annotations to save and reload them for future use. Annotations can be exchanged in JSON format for persistence and sharing.
+The viewer supports exporting and importing redaction annotations in JSON format so annotations can be saved and reloaded later.
For details, see the [Export and import annotations documentation](../annotation/import-export-annotation).
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/redaction/ui-interactions.md b/Document-Processing/PDF/PDF-Viewer/blazor/redaction/ui-interactions.md
index 71a3b07c31..f009f07f02 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/redaction/ui-interactions.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/redaction/ui-interactions.md
@@ -11,11 +11,11 @@ documentation: ug
## Add redaction annotations from the toolbar
-Use the redaction tool on the toolbar to draw over content that should be redacted. After marking, an annotation can display overlay text (for example, “Confidential”) and can be styled using fill color and other properties.
+Use the redaction tool on the toolbar to draw over content to be redacted. After marking, an annotation can display overlay text (for example, "Confidential") and be styled with fill color and other properties.

-#### Redaction annotations are interactive
+### Interactive redaction annotations
* **Movable**: Reposition an annotation within the same page.
@@ -25,23 +25,23 @@ Use the redaction tool on the toolbar to draw over content that should be redact

-N> The redaction tool is hidden by default. Customize the toolbar to include it. For instructions, see the [Toolbar customization](../toolbar-customization-overview).
+N> The redaction tool is hidden by default. Customize the toolbar to include it. For instructions, see [Toolbar customization](../toolbar-customization-overview).
## Update redaction properties
Update redaction annotations after they are added. Changes can be made using the property panel for the selected redaction or programmatically via the [EditAnnotationAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_EditAnnotationAsync_Syncfusion_Blazor_SfPdfViewer_PdfAnnotation_) API.
-### Update redaction annotations using the property panel
+### Using the property panel
-When a redaction annotation is selected, update properties such as overlay text, font, and fill color using the property panel. Changes are applied immediately in the viewer.
+When a redaction annotation is selected, update properties such as overlay text, font, and fill color in the property panel. Changes appear immediately in the viewer.
-The property panel can be accessed in multiple ways:
+Access the panel by:
-* By clicking the **redaction panel** icon available on the redaction toolbar.
+* Clicking the **redaction panel** icon on the redaction toolbar.

-* Through the **context menu** by right-clicking (or long-pressing on mobile) the redaction annotation and selecting the Properties option.
+* Using the **context menu** (right-click or long-press on mobile) and choosing Properties.

@@ -49,42 +49,39 @@ The property panel can be accessed in multiple ways:
Delete redaction annotations using any of the following:
-* **Right-click and select Delete** from the context menu.
+* Right-click and select Delete from the context menu.

-* **Click the Delete button** on the toolbar.
+* Click the Delete button on the toolbar.

-* **Press the Delete key** after selecting the annotation.
+* Press the Delete key after selecting the annotation.
## Redact pages using the UI
-Users can redact entire pages using the Redact Pages option from the redaction toolbar. Upon clicking the redact pages icon, a Mark Page Range popup appears with the following options:
+Use the Redact Pages option on the redaction toolbar to mark whole pages. The Mark Page Range dialog offers:
* **Current Page** – Redacts the currently visible page.
-
* **Odd Pages Only** – Redacts all odd-numbered pages.
-
* **Even Pages Only** – Redacts all even-numbered pages.
+* **Specific Pages** – Enter a list or ranges (for example, 1, 3–5, 7).
-* **Specific Pages** – Allows the user to manually enter a list of specific page numbers to redact (e.g., 1, 3–5, 7).
-
-After selecting the desired range, selecting Save applies redaction marks to the selected pages.
+After choosing a range, select Save to apply redaction marks to the selected pages.

## Apply redaction from the toolbar
-The redact button in the toolbar allows users to permanently apply all redaction annotations present in the document.
+The redact button applies all redaction annotations in the document.
-* The redact button is disabled when no redaction annotations exist in the document.
-* The button automatically enables when redaction annotations are present.
+* The button is disabled when no redaction annotations exist.
+* It enables automatically when redaction annotations are present.

-A confirmation dialog appears before applying redaction to confirm that the process is permanent and irreversible.
+A confirmation dialog appears before applying redactions to confirm the operation is permanent and irreversible.

diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/save-pdf-file/to-amazon-s3.md b/Document-Processing/PDF/PDF-Viewer/blazor/save-pdf-file/to-amazon-s3.md
index d80eddf779..8dde01fed7 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/save-pdf-file/to-amazon-s3.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/save-pdf-file/to-amazon-s3.md
@@ -7,7 +7,7 @@ control: SfPdfViewer
documentation: ug
---
-# Save PDF file to AWS S3 in Blazor SfPdfViewer
+# Save PDF to AWS S3 in Blazor SfPdfViewer
To save a PDF file to AWS S3, you can follow the steps below
@@ -28,7 +28,7 @@ Start by following the steps provided in this [link](https://help.syncfusion.com
@using Amazon.S3;
@using Amazon.S3.Model;
@using Syncfusion.Blazor.SfPdfViewer;
-@using Syncfusion.Blazor.Buttons
+@using Syncfusion.Blazor.Buttons;
```
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/save-pdf-file/to-azure-blob-storage.md b/Document-Processing/PDF/PDF-Viewer/blazor/save-pdf-file/to-azure-blob-storage.md
index bffa50e5da..49582dde70 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/save-pdf-file/to-azure-blob-storage.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/save-pdf-file/to-azure-blob-storage.md
@@ -7,9 +7,9 @@ control: SfPdfViewer
documentation: ug
---
-# Save PDF file to Azure Blob Storage in Blazor SfPdfViewer
+# Save PDF to Azure Blob Storage in Blazor SfPdfViewer
-To save a PDF file to Azure Blob Storage, follow the steps below.
+Follow these steps to save a PDF from the SfPdfViewer to Azure Blob Storage.
**Step 1:** Create the Azure Blob Storage account
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/save-pdf-file/to-box-cloud-file-storage.md b/Document-Processing/PDF/PDF-Viewer/blazor/save-pdf-file/to-box-cloud-file-storage.md
index 3ae16a501d..24c219e08d 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/save-pdf-file/to-box-cloud-file-storage.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/save-pdf-file/to-box-cloud-file-storage.md
@@ -7,9 +7,9 @@ control: SfPdfViewer
documentation: ug
---
-# Save PDF file to Box cloud file storage in Blazor SfPdfViewer
+# Save PDF to Box cloud storage in Blazor SfPdfViewer
-To save a PDF file to Box cloud file storage, follow the steps below.
+Follow these steps to save a PDF from the SfPdfViewer to Box cloud storage.
**Step 1:** Set up a Box developer account and create a Box application
@@ -29,7 +29,7 @@ Create a basic Blazor Web App Server application that hosts the SfPdfViewer comp
@using Box.V2.Config;
@using Box.V2.Models;
@using Syncfusion.Blazor.SfPdfViewer;
-@using Syncfusion.Blazor.Buttons
+@using Syncfusion.Blazor.Buttons;
```
**Step 4:** Add the following code example to save a PDF to `Box cloud storage`
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/save-pdf-file/to-google-cloud-storage.md b/Document-Processing/PDF/PDF-Viewer/blazor/save-pdf-file/to-google-cloud-storage.md
index f56783e2ed..754a7eb117 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/save-pdf-file/to-google-cloud-storage.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/save-pdf-file/to-google-cloud-storage.md
@@ -7,9 +7,9 @@ control: SfPdfViewer
documentation: ug
---
-# Save PDF file to Google Cloud Storage in Blazor SfPdfViewer
+# Save PDF to Google Cloud Storage in Blazor SfPdfViewer
-To save a PDF file to Google Cloud Storage from the SfPdfViewer, follow the steps below.
+Follow these steps to save a PDF from the SfPdfViewer to Google Cloud Storage (GCS).
**Step 1** Create a service account
@@ -27,7 +27,7 @@ Start by following the steps in this guide to create a [basic SfPdfViewer](https
@using Google.Cloud.Storage.V1;
@using Google.Apis.Auth.OAuth2;
@using Syncfusion.Blazor.SfPdfViewer;
-@using Syncfusion.Blazor.Buttons
+@using Syncfusion.Blazor.Buttons;
```
**Step 4:** Add the below code example to the Index.razor file to upload the currently loaded document to GCS.
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/save-pdf-file/to-google-drive.md b/Document-Processing/PDF/PDF-Viewer/blazor/save-pdf-file/to-google-drive.md
index 99327b25d4..9065af0805 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/save-pdf-file/to-google-drive.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/save-pdf-file/to-google-drive.md
@@ -19,9 +19,9 @@ Create a project in Google Cloud Console and enable the Google Drive API. Obtain
Follow the [Getting Started](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/blazor/getting-started/web-app) guide to create a basic Blazor application with the SfPdfViewer component.
-**Step 3:** Include the following namespaces in the **Index.razor** file.
+**Step 3:** Include the following namespaces in the `Index.razor` file.
-1. Import the required namespaces at the top of the file:
+Import the required namespaces at the top of the file:
```csharp
@using Google.Apis.Drive.v3;
@@ -30,7 +30,7 @@ Follow the [Getting Started](https://help.syncfusion.com/document-processing/pdf
@using Google.Apis.Util.Store;
@using System.Threading.Tasks;
@using Syncfusion.Blazor.SfPdfViewer;
-@using Syncfusion.Blazor.Buttons
+@using Syncfusion.Blazor.Buttons;
```
**Step 4:** Add the following example to save the downloaded PDF file to `Google Drive`.
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/saving-pdf-file.md b/Document-Processing/PDF/PDF-Viewer/blazor/saving-pdf-file.md
index 217b6135b7..518f88d53a 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/saving-pdf-file.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/saving-pdf-file.md
@@ -9,11 +9,11 @@ documentation: ug
# Saving PDF file in Blazor SfPdfViewer Component
-After editing a PDF with annotations and form fields, the updated document can be saved to a server, a database, or downloaded to the local file system. The examples below illustrate common approaches.
+After editing a PDF with annotations or form fields, the updated document can be saved to a server, persisted to a database, or downloaded to the local file system. Examples below illustrate common approaches and recommended practices.
## Save PDF file to Server
-Use this approach to persist the modified PDF to a server-side folder. Ensure the application has write permissions to the target directory and consider using framework services (for example, IWebHostEnvironment) to resolve application paths.
+Use this approach to persist the modified PDF to a server-side folder. Ensure the application has write permissions to the target directory and use framework services (for example, `IWebHostEnvironment`) to resolve application paths.
```cshtml
@using Syncfusion.Blazor.SfPdfViewer
@@ -45,11 +45,11 @@ Use this approach to persist the modified PDF to a server-side folder. Ensure th
}
```
-N> For production scenarios, prefer using using statements for stream disposal, handle I/O exceptions, and validate input. Avoid writing to wwwroot at runtime unless the behavior is intentional.
+N> For production scenarios, prefer `using` statements for stream disposal, handle I/O exceptions, and validate input. Avoid writing files to `wwwroot` at runtime unless the behavior is intentional and secure.
## Save PDF file to Database
-Use this method to update the PDF content stored in a relational database. This is useful when documents are managed centrally and retrieved by name or identifier.
+Use this method to update PDF content stored in a relational database when documents are managed centrally and retrieved by name or identifier.
```cshtml
@using Syncfusion.Blazor.SfPdfViewer
@@ -89,11 +89,11 @@ Use this method to update the PDF content stored in a relational database. This
}
```
-N> Use parameterized queries for all user or variable input to prevent SQL injection. Wrap database operations with error handling and transactions as appropriate for your data layer.
+N> Use parameterized queries for all user or variable input to prevent SQL injection. Wrap database operations with error handling, transactions, and appropriate connection disposal patterns.
## Download
-The SfPdfViewer includes a built-in toolbar button to download the loaded or modified PDF. Control this behavior with the [EnableDownload](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_EnableDownload) API.
+The `SfPdfViewer` includes a built-in toolbar button to download the loaded or modified PDF. Control this behavior with the [EnableDownload](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_EnableDownload) API.
```cshtml
@@ -110,7 +110,7 @@ The SfPdfViewer includes a built-in toolbar button to download the loaded or mod

-Programmatic download can also be triggered from application UI, such as a button click.
+Programmatic download can also be triggered from application UI, for example by calling `DownloadAsync()` from a button click handler.
```cshtml
@@ -134,7 +134,7 @@ Programmatic download can also be triggered from application UI, such as a butto
```
-### Download Filename
+### Download filename
Use the [DownloadFileName](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_DownloadFileName) property to set the default file name for the downloaded PDF.
@@ -165,7 +165,7 @@ The following example shows how to specify a custom file name.
### Download PDF file as a copy
-Use the built-in toolbar option or programmatic API to download the updated PDF as a copy to the local file system.
+Use the built-in toolbar option or the programmatic API to download the updated PDF as a copy to the local file system.
```cshtml
@using Syncfusion.Blazor.Buttons
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/text-search.md b/Document-Processing/PDF/PDF-Viewer/blazor/text-search.md
index 2ad4153f97..b32acfe332 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/text-search.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/text-search.md
@@ -27,7 +27,7 @@ Enable or disable the text search UI using the [EnableTextSearch](https://help.s
```
-Text search can also be performed programmatically using the following APIs: [SearchTextAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_SearchTextAsync_System_String_System_Boolean_), [SearchNextAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_SearchNextAsync), [SearchPreviousAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_SearchPreviousAsync), and [CancelTextSearchAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_CancelTextSearchAsync).
+Text search can also be performed programmatically using the following APIs: [SearchTextAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_SearchTextAsync_System_String_System_Boolean_), [SearchNextAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_SearchNextAsync), [SearchPreviousAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_SearchPreviousAsync), and [CancelTextSearchAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_CancelTextSearchAsync). These APIs enable programmatic control of search initiation, navigation, and cancellation.
```cshtml
@@ -83,7 +83,7 @@ Text search can also be performed programmatically using the following APIs: [Se
## Customize text search highlight colors
-Use the [PdfViewerTextSearchColorSettings](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerTextSearchColorSettings.html) to customize the highlight appearance used for search results. Configure [SearchColor](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerTextSearchColorSettings.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerTextSearchColorSettings_SearchColor) for other matches and [SearchHighlightColor](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerTextSearchColorSettings.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerTextSearchColorSettings_SearchHighlightColor) for the current match. By default, distinct colors are applied for current and other occurrences; adjust these to align with application theme requirements.
+Use the [PdfViewerTextSearchColorSettings](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerTextSearchColorSettings.html) to customize the highlight appearance used for search results. Configure [SearchColor](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerTextSearchColorSettings.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerTextSearchColorSettings_SearchColor) for other matches and [SearchHighlightColor](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerTextSearchColorSettings.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerTextSearchColorSettings_SearchHighlightColor) for the current match. By default, distinct colors are applied for the current occurrence and other matches; adjust these to align with application theme and accessibility contrast requirements.
```cshtml
@@ -101,25 +101,25 @@ Use the [PdfViewerTextSearchColorSettings](https://help.syncfusion.com/cr/blazor

-## Text Search Events
+## Text search events
-The following events are available for text search in the SfPdfViewer component.
+The following events are available for text search in the `SfPdfViewer` component.
|Name|Description|
|---|---|
-|OnTextSearchStart|Triggers when a text search starts.|
-|OnTextSearchComplete|Triggers when a text search is completed.|
-|OnTextSearchHighlight|Triggers when searched text is highlighted.|
+|OnTextSearchStart|Triggers when a text search begins.|
+|OnTextSearchComplete|Triggers when a text search completes.|
+|OnTextSearchHighlight|Triggers when search results are highlighted.|
-### OnTextSearchStart Event
+### OnTextSearchStart event
-The [OnTextSearchStart](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_OnTextSearchStart) event triggers when the text search is started.
+The [OnTextSearchStart](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_OnTextSearchStart) event triggers when a text search begins.
-#### Event Arguments
+#### Event arguments
-See [TextSearchStartEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.TextSearchStartEventArgs.html) for details such as matchcase, search text.
+See [TextSearchStartEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.TextSearchStartEventArgs.html) for details such as `SearchText` and `MatchCase`.
-The following example illustrates how to handle the TextSearchStart event.
+The following example illustrates how to handle the `OnTextSearchStart` event.
```cshtml
@@ -137,15 +137,15 @@ The following example illustrates how to handle the TextSearchStart event.
```
-### OnTextSearchComplete Event
+### OnTextSearchComplete event
-The [OnTextSearchComplete](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_OnTextSearchComplete) event triggers when the text search is completed.
+The [OnTextSearchComplete](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_OnTextSearchComplete) event triggers when a text search completes.
-#### Event Arguments
+#### Event arguments
-[TextSearchCompleteEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.TextSearchCompleteEventArgs.html) triggers when the text search is completed.
+See [TextSearchCompleteEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.TextSearchCompleteEventArgs.html) for details such as total match counts and summary information.
-The following example illustrates how to handle the TextSearchComplete event.
+The following example illustrates how to handle the `OnTextSearchComplete` event.
```cshtml
@@ -163,15 +163,15 @@ The following example illustrates how to handle the TextSearchComplete event.
```
-### OnTextSearchHighlight Event
+### OnTextSearchHighlight event
-The [OnTextSearchHighlight](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_OnTextSearchHighlight) event triggers when the text search text is highlighted.
+The [OnTextSearchHighlight](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerEvents.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerEvents_OnTextSearchHighlight) event triggers when search results are highlighted on the page.
-#### Event Arguments
+#### Event arguments
-[TextSearchHighlightEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.TextSearchHighlightEventArgs.html) for details such as bounds, pagenumber of the highlighted text.
+See [TextSearchHighlightEventArgs](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.TextSearchHighlightEventArgs.html) for details such as highlight bounds and `PageNumber`.
-The following example illustrates how to handle the TextSearchHighlight event.
+The following example illustrates how to handle the `OnTextSearchHighlight` event.
```cshtml
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/toolbar-customization-overview.md b/Document-Processing/PDF/PDF-Viewer/blazor/toolbar-customization-overview.md
index 22b0ecb13b..5a20bb9a7c 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/toolbar-customization-overview.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/toolbar-customization-overview.md
@@ -9,9 +9,9 @@ documentation: ug
# Toolbar in Blazor SfPdfViewer Component
-The SfPdfViewer includes a built-in, responsive toolbar that surfaces common PDF actions and provides entry points to feature-specific toolbars. It adapts across desktop, tablet, and mobile, and can be customized to show or hide items, reorder commands, add custom items, and handle toolbar events.
+The `SfPdfViewer` provides a built-in, responsive toolbar that surfaces common PDF actions and exposes feature-specific toolbars. The toolbar adapts to desktop, tablet, and mobile layouts and supports customization to show or hide items, reorder commands, add custom items, and handle toolbar events.
-There are four toolbars in the SfPdfViewer:
+There are four toolbar groups in `SfPdfViewer`:
* Primary toolbar
* Annotation toolbar
* Form designer toolbar
@@ -19,11 +19,11 @@ There are four toolbars in the SfPdfViewer:
## Primary Toolbar in Blazor SfPdfViewer Component
-The SfPdfViewer includes a built-in, responsive primary toolbar that provides quick access to common viewer actions and feature-specific toolbars. It adapts to the available width for desktop, tablet, and mobile layouts.
+The primary toolbar provides quick access to common viewer actions and entry points to feature-specific toolbars. It adapts to available width and presents controls appropriate for the current device and layout.
-The primary toolbar includes the following options:
+Primary toolbar options include:
-* Open PDF file
+* Open file
* Page navigation
* Magnification
* Pan tool
@@ -42,29 +42,33 @@ The primary toolbar includes the following options:

-* [Get more info about primary toolbar customization](./toolbar-customization/primary-toolbar)
+See [Primary toolbar customization](./toolbar-customization/primary-toolbar) for configuration options and examples.
## Annotation toolbar in Blazor SfPdfViewer Component
-The Annotation toolbar appears below the primary toolbar when annotation features are enabled. It provides tools to create and edit annotations.
+The annotation toolbar appears below the primary toolbar when annotation features are enabled. It provides tools to create and edit annotations.
+
+Annotation toolbar options include:
* Text markup: Highlight, Underline, Strikethrough, Squiggly
* Shapes: Line, Arrow, Rectangle, Circle, Polygon
* Measurement: Distance, Perimeter, Area, Radius, Volume
* Freehand: Ink, Signature
* Text: Free text
-* Stamp: Predefined and custom stamps
+* Stamp: Built-in and custom stamps
* Properties: Color, opacity, thickness, font
* Edit helpers: Comments panel, Delete
* Close

-* [Get more info about annotation toolbar customization](./toolbar-customization/annotation-toolbar)
+See [Annotation toolbar customization](./toolbar-customization/annotation-toolbar) for configuration and examples.
## Form Designer toolbar in Blazor SfPdfViewer Component
-Use the Form Designer toolbar to add and configure interactive form fields in the PDF. It appears below the primary toolbar when form designer is enabled.
+The form designer toolbar appears when form designer mode is enabled and provides tools to add and configure interactive form fields.
+
+Form designer toolbar options include:
* Field types: Button, Text box, Password, Checkbox, Radio button, Drop-down, List box, Signature, Initial
* Edit helpers: Delete
@@ -72,11 +76,13 @@ Use the Form Designer toolbar to add and configure interactive form fields in th

-* [Get more info about form designer toolbar customization](./toolbar-customization/form-designer-toolbar)
+See [Form designer toolbar customization](./toolbar-customization/form-designer-toolbar) for configuration details.
## Redaction toolbar in Blazor SfPdfViewer Component
-The Redaction toolbar provides tools to mark and permanently remove sensitive content from the document. It appears below the primary toolbar when redaction is enabled.
+The redaction toolbar provides tools to mark and permanently remove sensitive content. It appears below the primary toolbar when redaction is enabled.
+
+Redaction toolbar options include:
* Redaction marks: Mark for redaction, Redact page
* Apply redactions: Permanently remove marked content
@@ -86,7 +92,7 @@ The Redaction toolbar provides tools to mark and permanently remove sensitive co

-* [Get more info about redaction toolbar customization](./toolbar-customization/redaction-toolbar)
+See [Redaction toolbar customization](./toolbar-customization/redaction-toolbar) for configuration and examples.
## See also
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/toolbar-customization/annotation-toolbar.md b/Document-Processing/PDF/PDF-Viewer/blazor/toolbar-customization/annotation-toolbar.md
index 94554e3e31..01db85cbc0 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/toolbar-customization/annotation-toolbar.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/toolbar-customization/annotation-toolbar.md
@@ -9,15 +9,13 @@ documentation: ug
# Annotation toolbar customization
-The annotation toolbar can be customized by showing or hiding default items and by controlling the order in which the items appear.
+Customize which tools appear in the annotation toolbar, control their order, and toggle toolbar visibility programmatically.
## Show or hide the annotation toolbar
-Show or hide the annotation toolbar programmatically during initialization or at runtime.
+Toggle the annotation toolbar during initialization or at runtime using the [EnableAnnotationToolbar](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_EnableAnnotationToolbar) property or the [ShowAnnotationToolbar](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_ShowAnnotationToolbar_System_Boolean_) method.
-Use the [EnableAnnotationToolbar](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_EnableAnnotationToolbar) property or the [ShowAnnotationToolbar](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_ShowAnnotationToolbar_System_Boolean_) method to toggle visibility.
-
-The following code snippet explains how to show or hide the annotation toolbar using the ShowAnnotationToolbar method.
+Example: show the annotation toolbar when a document loads.
```cshtml
@@ -46,15 +44,13 @@ The following code snippet explains how to show or hide the annotation toolbar u
```
[View the sample on GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/tree/master/Toolbar/Annotation%20Toolbar/Show%20or%20hide%20on%20loading).
-## How to customize the annotation toolbar
-
-Choose which tools appear and control their order in the annotation toolbar.
+## Customize annotation toolbar items
-Use [PdfViewerToolbarSettings](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerToolbarSettings.html) with the [AnnotationToolbarItems](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerToolbarSettings.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerToolbarSettings_AnnotationToolbarItems) property to choose which tools are displayed in the annotation toolbar. The property accepts a list of [AnnotationToolbarItem](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.AnnotationToolbarItem.html) values. Only the items included in this list are shown; any item not listed is hidden. The rendered order follows the sequence of items in the list.
+Use [PdfViewerToolbarSettings](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerToolbarSettings.html) to specify which annotation tools are shown and their order. The property accepts a list of [AnnotationToolbarItems](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerToolbarSettings.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerToolbarSettings_AnnotationToolbarItems) values; only listed items are rendered, and the displayed order follows the list sequence.
-The annotation toolbar is presented when entering annotation mode in SfPdfViewer2 and adapts responsively based on the available width. Include the Close tool to allow users to exit the annotation toolbar when needed.
+Include the Close tool so users can exit the annotation toolbar when needed. The annotation toolbar appears when entering annotation mode in `SfPdfViewer2` and adapts responsively to available width.
-The following example demonstrates how to customize the annotation toolbar by specifying a selected set of tools using `AnnotationToolbarItem`.
+Example: configure a custom set of annotation tools.
```cshtml
@@ -98,6 +94,7 @@ Refer to the image below for the mobile view (responsive layout adapts to width)
[View the sample on GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/blob/master/Form%20Designer/Components/Pages/CustomAnnotationToolbar.razor)
N> Properties tools (color, opacity, thickness, font, etc.) now appear only after you select or add the related annotation. Until you select or add one, these tools are hidden.
+
N> This change reduces clutter and shows options only when they’re relevant to the selected annotation.
## See also
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/toolbar-customization/form-designer-toolbar.md b/Document-Processing/PDF/PDF-Viewer/blazor/toolbar-customization/form-designer-toolbar.md
index f0606cb6ae..637a0e4c1b 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/toolbar-customization/form-designer-toolbar.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/toolbar-customization/form-designer-toolbar.md
@@ -9,15 +9,13 @@ documentation: ug
# Form designer toolbar customization
-The form designer toolbar can be customized by showing or hiding default items and by controlling the order in which the items appear.
+Customize which tools appear in the form designer toolbar, control their order, and toggle visibility programmatically.
## Show or hide the form designer toolbar
-Show or hide the form designer toolbar programmatically.
+Toggle the form designer toolbar using the [EnableFormDesigner](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_EnableFormDesigner) property.
-Use the [EnableFormDesigner](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerBase.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerBase_EnableFormDesigner) property to toggle visibility.
-
-The following code snippet explains how to show or hide the toolbar using the EnableFormDesigner property.
+Example: disable the form designer toolbar.
```cshtml
@@ -28,13 +26,11 @@ The following code snippet explains how to show or hide the toolbar using the En
```
-## How to customize the form designer toolbar
-
-Choose which tools appear and control their order in the form designer toolbar.
+## Customize form designer toolbar items
-The [PdfViewerToolbarSettings](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerToolbarSettings.html) component in [SfPdfViewer2](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.html) customizes which form design tools are available. The [FormDesignerToolbarItems](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerToolbarSettings.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerToolbarSettings_FormDesignerToolbarItems) property accepts a list of [FormDesignerToolbarItem](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.FormDesignerToolbarItem.html) values. The items you include are both displayed and rendered in the order listed; any items you omit are hidden. This provides a streamlined, user-friendly form design experience across devices.
+Use [PdfViewerToolbarSettings](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerToolbarSettings.html) to specify which form-design tools are shown and their order. The property accepts a list of [FormDesignerToolbarItems](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerToolbarSettings.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerToolbarSettings_FormDesignerToolbarItems) values; only listed items are rendered, and the displayed order follows the list sequence.
-The following example demonstrates how to customize the form designer toolbar by configuring specific tools using `FormDesignerToolbarItem`.
+Example: configure a custom set of form designer tools.
```cshtml
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/toolbar-customization/mobile-toolbar.md b/Document-Processing/PDF/PDF-Viewer/blazor/toolbar-customization/mobile-toolbar.md
index 1229b044f0..1f7f8af742 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/toolbar-customization/mobile-toolbar.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/toolbar-customization/mobile-toolbar.md
@@ -26,11 +26,10 @@ The primary toolbar includes the following options:
Reorder the [MobileToolbarItems](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.SfPdfViewer.PdfViewerToolbarSettings.html#Syncfusion_Blazor_SfPdfViewer_PdfViewerToolbarSettings_MobileToolbarItems) list to control the display order. The toolbar renders items in the order they appear in the collection.
-Use the following code snippet to add the redaction toolbar to the PDF Viewer.
+Example: add the redaction toolbar to the viewer.
```cshtml
-
-@page "/";
+@page "/"
diff --git a/Document-Processing/PDF/PDF-Viewer/blazor/toolbar-customization/primary-toolbar.md b/Document-Processing/PDF/PDF-Viewer/blazor/toolbar-customization/primary-toolbar.md
index 69d81f141a..f0c174f0c0 100644
--- a/Document-Processing/PDF/PDF-Viewer/blazor/toolbar-customization/primary-toolbar.md
+++ b/Document-Processing/PDF/PDF-Viewer/blazor/toolbar-customization/primary-toolbar.md
@@ -392,7 +392,7 @@ Customize the appearance of toolbar icons for custom toolbar items. The followin
}
.e-icons.e-save::before {
- content: '\e7a8'
+ content: '\e7a8';
}
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/Localization/default-language.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/Localization/default-language.md
index 6f687afb3b..a20b27f87c 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/Localization/default-language.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/Localization/default-language.md
@@ -8,12 +8,14 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Localization support in JavaScript PDF Viewer
+# Localization in the JavaScript PDF Viewer
-The PDF Viewer fully supports localization, allowing all UI text, tooltips, and messages to be replaced with culture-specific strings so the interface matches users’ language and regional settings.
+The PDF Viewer supports localization of UI text, tooltips, and messages using culture-specific string collections so the interface matches users' language and regional settings.

+N> Change the viewer locale by setting the `locale` property in the viewer options during initialization or by assigning `pdfviewer.locale` before rendering.
+
## Default language (en-US)
By default, the PDF Viewer uses the en-US culture and requires no additional configuration.
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/Localization/new-language.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/Localization/new-language.md
index 88ec41fb1b..4ad83d8dce 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/Localization/new-language.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/Localization/new-language.md
@@ -8,15 +8,15 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Set a new language (localization) in JavaScript
+# Set a new language in the JavaScript PDF Viewer
-You can localize the PDF Viewer UI by:
-- Registering localized strings for each culture using `L10n.load` at the application level
-- Setting the `locale` property of the `PdfViewer` instance to the desired culture
+Localize the PDF Viewer UI by:
+- Registering culture-specific strings with `L10n.load` at the application level
+- Setting the `locale` property on the `PdfViewer` instance to the desired culture

-## Example Code-snippet to change language using Locale
+## Example: change language using `locale` and `L10n.load`
{% tabs %}
{% highlight js tabtitle="Standalone" %}
@@ -308,7 +308,7 @@ ej.pdfviewer.PdfViewer.Inject(
{% endhighlight %}
{% endtabs %}
-N> You can find a comprehensive list of localization files/strings here: [GitHub Locale](https://github.com/syncfusion/ej2-locale). Provide only the keys you want to override, missing keys fall back to defaults.
+N> A comprehensive list of localization files and default strings is available on GitHub: [GitHub Locale](https://github.com/syncfusion/ej2-locale). Provide only the keys that require overrides; missing keys fall back to the default `en-US` values.
## See Also
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/Localization/rtl-language-support.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/Localization/rtl-language-support.md
index c71526109c..8173a703bb 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/Localization/rtl-language-support.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/Localization/rtl-language-support.md
@@ -8,20 +8,19 @@ documentation: ug
domainurl: ##DomainURL##
---
-# RTL Language Support in JavaScript PDF Viewer
-RTL support in JavaScript PDF Viewer:
+# RTL language support in JavaScript PDF Viewer
-- PDF Viewer component supports right-to-left layouts.
-- For RTL languages (Arabic, Hebrew, Persian), enable the [`enableRtl`](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#enablertl) property.
-- Load culture-specific strings globally using `L10n.load`.
-- Set the PdfViewer [`locale`](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#locale) property to the target culture.
+Use RTL support to render the viewer interface for right-to-left languages.
+- Enable `enableRtl` to apply right-to-left layout.
+- Load culture-specific strings globally with `L10n.load`.
+- Set the `locale` property on the `PdfViewer` instance to the target culture.

-## Example Code-snippet to Enable RTL with Arabic Localization
+## Example: enable RTL and provide Arabic localization
-Use the below code-snippet to enable RTL for RTL Languages(Arabic, Hebrew, Persian)
+Use the example below to enable RTL for languages such as Arabic, Hebrew, and Persian.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
@@ -306,7 +305,8 @@ ej.pdfviewer.PdfViewer.Inject(
{% endhighlight %}
{% endtabs %}
-N> You can find a comprehensive list of localization files/strings here: [GitHub Locale](https://github.com/syncfusion/ej2-locale). Provide only the keys you want to override, missing keys fall back to defaults.
+
+N> A comprehensive list of localization files and default strings is available on GitHub: [GitHub Locale](https://github.com/syncfusion/ej2-locale). Provide only keys that require overrides; missing keys fall back to the default `en-US` values.
[View Sample on GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples)
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/Redaction/mobile-view.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/Redaction/mobile-view.md
index b0ca355da9..3feae31c4a 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/Redaction/mobile-view.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/Redaction/mobile-view.md
@@ -9,11 +9,11 @@ documentation: ug
# Redaction in Mobile View in JavaScript (ES5) PdfViewer Component
-The Redaction Tool enables users to permanently mark and remove sensitive content from PDF documents in mobile view using the JavaScript (ES5) PdfViewer component. This feature is optimized for touch interactions and provides a streamlined redaction workflow specifically designed for mobile devices.
+The Redaction Tool enables permanent marking and removal of sensitive content from PDF documents in mobile view using the JavaScript (ES5) PdfViewer component. This feature is optimized for touch interactions and provides a streamlined redaction workflow specifically designed for mobile devices.

-N> In mobile view, the redaction toolbar appears at the bottom of the viewer for easy thumb access. Mobile layout activates automatically on small screens.
+N> In mobile view, the redaction toolbar appears at the bottom of the viewer for easy thumb access. The mobile layout activates automatically on small screens.
## Adding Redaction in Mobile View
@@ -52,11 +52,10 @@ When you enter redaction mode in mobile view, a specialized redaction toolbar ap
### Redaction Annotation Tool
-The Redaction Annotation tool is the primary redaction feature that allows you to draw redaction rectangles on specific content:
+The Redaction Annotation tool is the primary redaction feature that allows you to drawing redaction rectangles on specific content:
Function: Creates visual redaction annotations that mark content for permanent removal
-Usage:
-Touch and drag to draw rectangular redaction overlays on any content area.
+Usage: Touch and drag to draw rectangular redaction overlays on any content area.
Process:
- Selected content appears with a customizable overlay (default black)
@@ -72,7 +71,7 @@ The Page Redaction tool enables batch redaction of entire pages based on specifi

Function: Redacts complete pages or page ranges with a single action
-Options Available:
+Options available:
- Odd Pages: Redacts only odd-numbered pages (1, 3, 5, etc.)
- Even Pages: Redacts only even-numbered pages (2, 4, 6, etc.)
- Specific Page: Specify single pages, ranges (e.g., 1-5, 10-15), or comma-separated lists (e.g., 1,3,5-7)
@@ -90,7 +89,7 @@ The Redaction Properties tool allows customization of redaction appearance befor

Function: Customize the visual appearance of redaction overlays and text replacement
-Customizable Properties:
+Customizable properties:
- Fill Color: Change the redaction overlay color (default: black)
- Outline Color: Set outline color for redaction boxes (optional)
- Overlay Text: Add custom text to appear on redacted areas (e.g., "REDACTED", "CONFIDENTIAL")
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/Redaction/overview.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/Redaction/overview.md
index 251095a986..0764c9bb1b 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/Redaction/overview.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/Redaction/overview.md
@@ -1,7 +1,7 @@
---
layout: post
title: Redaction annotation in Javascript PDF Viewer | Syncfusion
-description: Learn how to hide sensitive information with interactive and programmatic redaction using the Syncfusion JavaScript PDF Viewer.
+description: Learn how to hide sensitive information with interactive and programmatic redaction using the Syncfusion JavaScript(ES5) PDF Viewer.
platform: document-processing
control: PDF Viewer
documentation: ug
@@ -10,7 +10,7 @@ domainurl: ##DomainURL##
# Redaction in JavaScript (ES5) PdfViewer
-Redaction annotations are used to hide confidential or sensitive information in a PDF. The Syncfusion JavaScript PDF Viewer (EJ2) lets you mark areas or entire pages for redaction, customize their appearance, and permanently apply them with a single action.
+Redaction annotations are used to hide confidential or sensitive information in a PDF. The Syncfusion JavaScript PDF Viewer (EJ2) enables marking regions or entire pages for redaction, customizing appearance, and permanently applying redaction them with a single action.
## Enable the redaction toolbar
@@ -45,49 +45,47 @@ ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearc
pdfviewer.appendTo('#PdfViewer');
```
-N> Prerequisites: Add the PdfViewer control to your JavaScript application and ensure the redaction feature is available in the version you are using. Once applied, redaction permanently removes the selected content.
+N> Add the PdfViewer control to the JavaScript application and ensure the redaction feature is included in the installed package version. Once applied, redaction permanently removes the selected content.

## Add Redaction Annotations
-You can mark specific content for redaction using the toolbar or through code.
+Mark specific content for redaction using the toolbar or programmatically.
-Select the **Redaction tool** and draw over the text or graphics you want to hide. You can also add overlay text (such as “Confidential”) and adjust the style — fill color, border color, and opacity.
+Select the **Redaction tool** and draw over text or graphics to hide. Optionally add overlay text (for example, “Confidential”) and adjust style properties: fill color, border color, and opacity.

## Delete Redaction Annotations
-Redaction annotations can be removed easily:
+Remove redaction annotations using the toolbar or keyboard shortcuts:
-- Click the **Delete** button on the toolbar, or
+- Click the **Delete** button on the toolbar, or
- Select the annotation and press the **Delete** key.

## Redact Entire Pages
-The viewer allows you to redact whole pages that contain sensitive information. You can choose specific pages, page ranges, or redact all pages using the built‑in dialog, or perform the same action programmatically.
+The viewer supports redacting entire pages that contain sensitive information. Use the built-in dialog to select specific pages, page ranges, or all pages, or invoke the same behavior programmatically.

## Apply Redaction
-Once annotations are added, you can permanently apply them to the document. This action cannot be undone.
+After adding redaction annotations, permanently apply them to the document using the **Apply Redaction** toolbar button or the corresponding API method.
-Use the **Apply Redaction** button on the toolbar or call the API method:
-
-- The button is disabled until at least one redaction annotation exists.
-- It becomes active when redaction annotations are present.
+- The **Apply Redaction** button remains disabled until at least one redaction annotation exists.
+- The button becomes enabled when redaction annotations are present.

-A confirmation dialog appears before applying redaction to ensure you acknowledge the irreversible nature of the process.
+A confirmation dialog appears before applying redaction to ensure acknowledgment of the irreversible action.

-N> After redaction is applied, the original content cannot be recovered.
+N> Applying redaction is irreversible. Once applied, the original content cannot be recovered.
## Comment Support
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/Redaction/programmatic-support.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/Redaction/programmatic-support.md
index 88b5c91965..e67255cd60 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/Redaction/programmatic-support.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/Redaction/programmatic-support.md
@@ -9,7 +9,7 @@ documentation: ug
# Programmatic support for redaction in JavaScript (ES5) PdfViewer
-The Syncfusion JavaScript PDF Viewer (EJ2) provides APIs to add, update, delete, and apply redaction annotations programmatically. You can also redact entire pages, configure default properties, and work with the redaction property panel.
+The Syncfusion JavaScript `PdfViewer` control provides APIs to add, update, delete, and apply redaction annotations programmatically. You can also redact entire pages, configure default properties, and work with the redaction property panel.
## Enable the redaction toolbar
@@ -78,7 +78,7 @@ viewer.annotationAdd = (args) => {
## Delete redaction annotations programmatically
-Redaction annotations can be removed using the `deleteAnnotationById` event or by selecting and deleting them through code.
+Redaction annotations can be removed using the `deleteAnnotationById` method or by selecting and deleting them through code.
```html
@@ -152,7 +152,7 @@ document.getElementById('redact').addEventListener('click', () => {
});
```
-N> Applying redaction is irreversible. Once applied, the original content cannot be recovered.
+N> Applying redaction is irreversible. Before calling `redact()`, save or export a backup copy of the document; the original content cannot be recovered.
## Configure default redaction annotation properties
@@ -178,7 +178,7 @@ viewer.redactionSettings= {
The redaction property panel allows users to update annotation properties through the UI. Programmatically, you can invoke the property panel by selecting an annotation and calling the relevant APIs. Properties such as overlay text, font style, and fill color can be updated directly in the panel.
-
+
## See also
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/Redaction/search-redact.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/Redaction/search-redact.md
index 3e5e867c36..3c30ff05b5 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/Redaction/search-redact.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/Redaction/search-redact.md
@@ -8,19 +8,17 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Search text and redact in JavaScript (ES5) PdfViewer
+# Search text and redact in JavaScript (ES5) PDF Viewer
-You can search for a keyword in the loaded PDF and automatically add redaction annotations over each match. The example below wires the extractTextCompleted event, triggers text extraction, performs a search, and places redaction annotations for every result.
+You can search for a keyword in the loaded PDF and automatically add redaction annotations over each match. The example below wires the `extractTextCompleted` event, triggers text extraction, performs a search, and places redaction annotations for every result.
-N> Prerequisites: Add the PdfViewer control to your JavaScript application and ensure a document is loaded. Make sure the redaction feature is available in the version you are using. Once applied, redaction permanently removes the selected content.
+N> Prerequisites: Add the PDF Viewer control to your JavaScript application and ensure a document is loaded. Confirm the redaction feature is available in the viewer version in use and that text extraction is enabled (`isExtractText: true`). Redaction is permanent once applied.
-## Steps to add Redaction annotations on search Text Bounds
+## Steps to add redaction annotations on search text bounds
-**Step 1:** Follow the steps provided in the [link](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/javascript-ES5/getting-started) to create a simple PDF Viewer sample.
-
-
-**Step 2:** Use the following code-snippets to Add Redaction annotation on Search Text Bounds.
+**Step 1:** Follow the steps in [PDF Viewer - Getting started](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/javascript-ES5/getting-started) to create a simple PDF Viewer sample.
+**Step 2:** Use the following code-snippets to add Redaction annotation on search text bounds.
```html
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/Redaction/toolbar.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/Redaction/toolbar.md
index 3fc4887cbe..8cd5f5a089 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/Redaction/toolbar.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/Redaction/toolbar.md
@@ -9,11 +9,11 @@ documentation: ug
# Redaction toolbar customization in JavaScript
-The redaction toolbar in the Syncfusion JavaScript (ES5/JavaScript) PDF Viewer can be customized by rearranging existing items, hiding default items, or adding new ones. You can also place custom items at specific index positions among the existing toolbar items.
+The redaction toolbar in the Syncfusion JavaScript PDF Viewer can be customized by rearranging items, hiding default items, or adding custom items. Custom items can be inserted at specific index positions within the existing toolbar.
## Enable the redaction toolbar
-To enable the redaction toolbar, configure the `toolbarSettings.toolbarItems` property of the PdfViewer instance to include the **RedactionEditTool**.
+To enable the redaction toolbar, configure the `toolbarSettings.toolbarItems` property of the PdfViewer instance to include the `RedactionEditTool`.
The following example shows how to enable the redaction toolbar:
@@ -50,17 +50,17 @@ Refer to the following image for the toolbar view:
## Show or hide the redaction toolbar
-You can toggle the redaction toolbar either using the built‑in toolbar icon or programmatically with the `showRedactionToolbar` method.
+The redaction toolbar can be toggled using the built‑in toolbar icon or programmatically with the `showRedactionToolbar` method.
### Display the redaction toolbar using the toolbar icon
-When **RedactionEditTool** is included in the toolbar settings, clicking the redaction icon in the primary toolbar will show or hide the redaction toolbar.
+When `RedactionEditTool` is included in the toolbar settings, clicking the redaction icon in the primary toolbar will show or hide the redaction toolbar.

### Display the redaction toolbar programmatically
-You can also control visibility through code by calling `viewer.toolbar.showRedactionToolbar(true/false)`.
+Programmatic control is available via the viewer instance. For example, call `this.pdfViewer.toolbar.showRedactionToolbar(true)` to display the redaction toolbar, or `this.pdfViewer.toolbar.showRedactionToolbar(false)` to hide it.
The following example demonstrates toggling the redaction toolbar programmatically:
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/Redaction/ui-interaction.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/Redaction/ui-interaction.md
index d4ca4bf74e..0d250a624d 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/Redaction/ui-interaction.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/Redaction/ui-interaction.md
@@ -7,7 +7,7 @@ control: PDF Viewer
documentation: ug
---
-# Redaction UI interactions in JavaScript (ES5) PdfViewer
+# Redaction UI interactions in JavaScript (ES5) PDF Viewer
## Add redaction annotations from the toolbar
@@ -27,21 +27,21 @@ N> The redaction tool is hidden by default. Customize the toolbar to include it.
## Add redaction annotations using the context menu
-In addition to the toolbar, you can add redaction annotations directly from the context menu. Select the text or region, right‑click (or long‑press on mobile), and choose the **Redact Annotation** option. This creates a redaction mark over the selected content.
+In addition to the toolbar, redaction annotations can be added directly from the context menu. To add from the context menu, select the text or region, right‑click (or long‑press on mobile), and choose the **Redact Annotation** option. This creates a redaction mark over the selected content.

## Update redaction properties
-After adding a redaction annotation, you can update its properties through the property panel or programmatically.
+After adding a redaction annotation, properties can be updated through the property panel or programmatically.
### Update using the property panel
-When a redaction annotation is selected, a two‑tab property panel (General and Appearance) lets you customize text and styling. Changes are reflected instantly on the redaction mark.
+When a redaction annotation is selected, a two‑tab property panel (General and Appearance) allows customization of text and styling. Changes are reflected instantly on the redaction mark.
The property panel can be opened in two ways:
-* By clicking the **redaction property panel** icon in the toolbar.
+* By clicking the **Redaction property panel** icon in the toolbar.

* By right‑clicking (or long‑pressing) the annotation and choosing **Properties** from the context menu.
@@ -62,7 +62,7 @@ Use the General tab to define how the content will look after redaction. These s

-Note: Hovering the mouse over a redaction annotation shows a preview of this final look. After you click Apply Redaction, these settings are flattened into the page and can’t be edited. Tip: Click Save in the dialog to keep your changes.
+N> Hovering over a redaction annotation shows a preview of the final look. After Apply Redaction is selected, these settings are flattened into the page and cannot be edited. Tip: Select Save in the dialog to persist changes.
#### Appearance tab
@@ -78,12 +78,12 @@ Note: The Appearance tab affects only the temporary annotation. The final look a
### What changes after applying redaction?
-When you click Apply Redaction:
+When Apply Redaction is selected:
* The selected content is permanently removed from the page.
* The redaction region is flattened into the page with a solid fill that uses the General tab Fill Color.
* If overlay text was enabled, the text is burned into the page. If Repeat Overlay Text was enabled, the text is tiled across the region.
-* All properties become read‑only. You cannot edit overlay text, fill color, outline, or opacity after applying. Set the final look in the General tab and use the Appearance tab only to style the annotation before you apply.
+* All properties become read‑only. Overlay text, fill color, outline, and opacity cannot be edited after applying. Set the final look in the General tab and use the Appearance tab only to style the annotation before applying.
## Delete redaction annotations
@@ -108,7 +108,7 @@ Entire pages can be marked for redaction using the **Redact Pages** option in th
* **Even Pages Only** – Redacts all even‑numbered pages.
* **Specific Pages** – Enter page numbers or ranges (e.g., 1, 3–5, 7) to redact.
-After choosing the range, click **Save** to apply redaction marks to the selected pages.
+After choosing the range, select **Save** to apply redaction marks to the selected pages.

@@ -121,7 +121,7 @@ The **Apply Redaction** button permanently removes all marked content from the d

-A confirmation dialog appears before applying redaction to ensure you acknowledge the irreversible nature of the process.
+A confirmation dialog appears before applying redaction to ensure acknowledgment of the irreversible nature of the process.

diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/accessibility.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/accessibility.md
index acec186ae1..890ad57d5b 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/accessibility.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/accessibility.md
@@ -10,9 +10,7 @@ domainurl: ##DomainURL##
# Accessibility in Syncfusion JavaScript ES5 PDF Viewer components
-The PDF Viewer component follows established accessibility guidelines and standards, including [ADA](https://www.ada.gov/), [Section 508](https://www.section508.gov/), [WCAG 2.2](https://www.w3.org/TR/WCAG22/), and [WCAG roles](https://www.w3.org/TR/wai-aria/#roles) that are commonly used to evaluate accessibility.
-
-The accessibility compliance for the PDF Viewer component is summarized below.
+The PDF Viewer complies with widely adopted accessibility standards and guidance, including [ADA](https://www.ada.gov/), [Section 508](https://www.section508.gov/), [WCAG 2.2](https://www.w3.org/TR/WCAG22/), and WAI-ARIA roles. The following table summarizes the component's accessibility coverage.
| Accessibility Criteria | Compatibility |
| -- | -- |
@@ -42,7 +40,7 @@ Note: Mobile device support is marked as partial due to platform-level constrain
## WAI-ARIA attributes
-[WAI-ARIA](https://www.w3.org/WAI/ARIA/apg/patterns/alert/) (Accessibility Initiative – Accessible Rich Internet Applications) defines a way to increase the accessibility of web pages, dynamic content, and user interface components developed with Ajax, HTML, JavaScript, and related technologies. ARIA provides additional semantics to describe the role, state, and functionality of web components. The following ARIA attributes are used in the PDF Viewer component:
+[WAI-ARIA](https://www.w3.org/WAI/ARIA/apg/patterns/alert/) (Accessible Rich Internet Applications) provides semantics that improve the accessibility of dynamic web content. The following ARIA attributes are used by the PDF Viewer to expose roles, states, and relationships to assistive technologies:
| Attributes | Purpose |
| --- | --- |
@@ -62,7 +60,7 @@ Note: Mobile device support is marked as partial due to platform-level constrain
## Keyboard interaction
-The PDF Viewer component follows the [keyboard interaction](https://www.w3.org/WAI/ARIA/apg/patterns/alert/#keyboardinteraction) guideline, making it easy for people who use assistive technologies (AT) and those who rely on keyboard navigation. The following keyboard shortcuts are supported by the PDF Viewer component.
+The PDF Viewer follows WAI-ARIA [keyboard interaction](https://www.w3.org/WAI/ARIA/apg/patterns/alert/#keyboardinteraction) recommendations to support users who rely on keyboard navigation and assistive technologies. The following keyboard shortcuts are supported.
| **Press (Windows)** |**Press (Macintosh)** | **To do this** |
| --- | --- | --- |
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-event.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-event.md
index 0a732025be..fc1f3ff1bc 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-event.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-event.md
@@ -7,9 +7,9 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Annotations Events in JavaScript Pdf viewer control
+# Annotation events in JavaScript PDF Viewer
-The PDF Viewer component triggers various events based on user interactions and changes in the component's state. These events can be used to perform actions when a specific event occurs. This section describes the events available in the PDF Viewer component.
+This page documents annotation-related events for the JavaScript PDF Viewer and when to use them. The PDF Viewer triggers events for user interactions and component state changes; use these events to run handlers that respond to specific occurrences. The sections below list each event, the associated event-args type, and an example handler.
| Event | Description |
| ------------------------------------------------------------------ | ---------------------------------------------------------------------------------- |
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-permission.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-permission.md
index 86e3b1cc99..cfec1cb860 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-permission.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-permission.md
@@ -10,13 +10,15 @@ domainurl: ##DomainURL##
# Annotation permissions in JavaScript PDF Viewer
-Use [annotationSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#annotationsettings) to control creation-time permissions and behavior of annotations in the PDF Viewer.
+Use [annotationSettings](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/index-default#annotationsettings) to control creation-time permissions and default behavior for annotations in the PDF Viewer. These settings establish defaults for annotations created through the UI and programmatic flows.
## Common permissions
-- isLock: Locks the annotation so it cannot be moved, resized, edited, or deleted.
-- skipPrint: Excludes annotations from the print output when the document is printed from the viewer.
-- skipDownload: Excludes annotations from the exported/downloaded document.
+- `isLock`: Lock an annotation so it cannot be moved, resized, edited, or deleted.
+- `skipPrint`: Exclude annotations from the print output when printing from the viewer.
+- `skipDownload`: Exclude annotations from the exported/downloaded PDF.
+
+Example: inject modules and create a viewer instance with default `annotationSettings`.
```js
// Ensure you have included the required EJ2 PDF Viewer scripts and styles via CDN before this script
@@ -61,8 +63,10 @@ viewer.appendTo('#pdfViewer');
## Individual permissions
-- isPrint: Controls whether a specific annotation participates in printing. Set to false to prevent just that annotation from printing.
-- isLock: You can also lock/unlock a specific annotation instance programmatically.
+- `isPrint`: Controls whether a specific annotation participates in printing. Set to `false` to exclude only that annotation from print output.
+- `isLock`: Lock or unlock a specific annotation instance programmatically.
+
+Example: create a viewer instance with per-annotation defaults for text markup, shapes, and measurements.
```js
// Ensure you have included the required EJ2 PDF Viewer scripts and styles via CDN before this script
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/Squiggly-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/Squiggly-annotation.md
index 43ba1a4f5f..25b6ced6f6 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/Squiggly-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/Squiggly-annotation.md
@@ -27,18 +27,18 @@ You can add squiggly annotations in two ways:

2. Using the annotation toolbar
-* Click the **Edit Annotation** button in the PDF Viewer toolbar to open the annotation toolbar.
-* Select **Squiggly** to enable squiggly mode.
-* Select text to add the squiggly annotation.
-* Alternatively, select text first and then click **Squiggly**.
+- Click the **Edit Annotation** button in the PDF Viewer toolbar to open the annotation toolbar.
+- Select **Squiggly** to enable squiggly mode.
+- Select text to add a squiggly annotation.
+- Alternatively, select text first and then click **Squiggly**.

N> When in pan mode, selecting a text markup annotation switches the PDF Viewer to text select mode.
-### Enable Squiggly Mode
+### Enable squiggly mode
-Enable/exit squiggly mode using the following code:
+Enable or exit squiggly mode using the following code:
```html
@@ -107,7 +107,7 @@ document.getElementById('setNone').addEventListener('click', function () {
{% endhighlight %}
{% endtabs %}
-### Add squiggly annotation programmatically
+### Add squiggly annotations programmatically
Add squiggly annotations programmatically using the [addAnnotation](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#addannotation) method.
@@ -175,11 +175,11 @@ document.getElementById('addSquiggly').addEventListener('click', function () {
{% endhighlight %}
{% endtabs %}
-## Edit Squiggly Annotation
+## Edit Squiggly Annotations
-### Edit squiggly annotation in UI
+### Edit squiggly annotations in UI
-You can select and delete squiggly annotations directly in the viewer. Use the context menu or toolbar options as needed.
+Use the viewer to select and delete squiggly annotations. Use the context menu or toolbar options as needed.
Delete the selected annotation in the following ways:
@@ -195,7 +195,7 @@ Delete the selected annotation in the following ways:
#### Edit squiggly annotation properties in UI
-The color and opacity of the squiggly annotation can be edited using the Edit Color and Edit Opacity tools in the annotation toolbar.
+The color and opacity of squiggly annotations can be edited using the Edit Color and Edit Opacity tools in the annotation toolbar.
- Edit color: Use the color palette in the Edit Color tool to change the annotation color.
@@ -286,7 +286,7 @@ document.getElementById('editSquiggly').addEventListener('click', function () {
Set default properties before creating the control using `squigglySettings`.
-> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
+N> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
@@ -332,11 +332,11 @@ pdfviewer.appendTo('#PdfViewer');
## Set properties while adding Individual Annotation
-Set properties for individual annotation before creating the control using `SquigglySettings`.
+Set properties for individual annotations before creating the control using `SquigglySettings`.
-> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
+N> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
-Refer to the following code snippet to set the default highlight settings.
+Refer to the following code snippet to set the default squiggly settings.
```html
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/area-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/area-annotation.md
index 92424415c2..36b76702f2 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/area-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/area-annotation.md
@@ -18,7 +18,7 @@ Area is a measurement annotation used to measure the surface of a closed region
### Add area annotation via UI
-Use the annotation toolbar:
+- Use the annotation toolbar to:
- Click the **Edit Annotation** button in the PDF Viewer toolbar.
- Click the **Measurement Annotation** dropdown.
- Choose **Area**, then draw the region on the page.
@@ -348,9 +348,9 @@ pdfviewer.appendTo('#PdfViewer');
## Set properties while adding Individual Annotation
-Set properties for individual annotation before creating the control using `AreaSettings`.
+Set properties for individual annotations before creating the control using `AreaSettings`.
-> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
+N> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
Refer to the following code snippet to set the default Area settings.
@@ -434,7 +434,7 @@ The scale ratio and unit of measurement can be modified using the scale ratio op

-The Units of measurements support for the measurement annotations in the PDF Viewer are
+Supported units for measurement annotations are
* Inch
* Millimeter
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/arrow-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/arrow-annotation.md
index c8016a52ad..a030fc3f89 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/arrow-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/arrow-annotation.md
@@ -18,9 +18,9 @@ Arrow is a shape annotation used to point, direct attention, or indicate flow. C
### Add arrow annotation via UI
-Use the annotation toolbar:
+Use the annotation toolbar to:
- Click the **Edit Annotation** button in the PDF Viewer toolbar.
-- Open the **Shape Annotation**** dropdown.
+- Open the **Shape Annotation** dropdown.
- Choose **Arrow**, then draw on the page.
N> When in pan mode, selecting a shape annotation switches the viewer to text select mode.
@@ -335,9 +335,9 @@ pdfviewer.appendTo('#PdfViewer');
## Set properties while adding Individual Annotation
-Set properties for individual annotation before creating the control using `ArrowSettings`.
+Set properties for individual annotations before creating the control using `ArrowSettings`.
-> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
+N> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
Refer to the following code snippet to set the default arrow settings.
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/circle-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/circle-annotation.md
index 4e1a6d8aaa..e6a32dccc2 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/circle-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/circle-annotation.md
@@ -18,7 +18,7 @@ Circle is a shape annotation used to highlight circular regions or draw emphasis
### Add circle annotation via UI
-Use the annotation toolbar:
+Use the annotation toolbar to:
- Click the **Edit Annotation** button in the PDF Viewer toolbar.
- Open the **Shape Annotation** dropdown.
- Choose **Circle**, then draw on the page.
@@ -29,7 +29,7 @@ N> When in pan mode, selecting a shape annotation switches the viewer to text se
### Enable circle mode
-The PDF Viewer library allows drawing Circle annotations programmatically after enabling Circle mode in button clicks.
+The PDF Viewer library allows drawing circle annotations programmatically after enabling circle mode via button clicks.
```html
@@ -350,9 +350,9 @@ pdfviewer.appendTo('#PdfViewer');
## Set properties while adding Individual Annotation
-Set properties for individual annotation before creating the control using `CircleSettings`.
+Set properties for individual annotations before creating the control using `CircleSettings`.
-> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
+N> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
Refer to the following code snippet to set the default Circle settings.
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/distance-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/distance-annotation.md
index c123d3b8ef..91ce8d7d2f 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/distance-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/distance-annotation.md
@@ -18,7 +18,7 @@ Distance is a measurement annotation used to measure the length between two poin
### Add distance annotation via UI
-Use the annotation toolbar:
+Use the annotation toolbar to:
- Click the **Edit Annotation** button in the PDF Viewer toolbar.
- Open the **Measurement Annotation** dropdown.
- Choose **Distance**, then draw on the page.
@@ -29,7 +29,7 @@ N> When in pan mode, selecting a measurement annotation switches the viewer to t
### Enable distance mode
-The PDF Viewer component allows drawing Distance annotations programmatically after enabling Distance mode in button clicks.
+The PDF Viewer component allows drawing distance annotations programmatically after enabling distance mode via button clicks.
```html
@@ -181,7 +181,7 @@ You can select, move, and resize Distance annotations directly in the viewer:
- Resize: drag the end handles to adjust its length.
- Delete or access more options from the context menu.
-#### Edit the properties of area annotations
+#### Edit the properties of distance annotations
The fill color, stroke color, thickness, and opacity can be edited using the Edit Color, Edit Stroke Color, Edit Thickness, and Edit Opacity tools in the annotation toolbar.
@@ -337,9 +337,9 @@ pdfviewer.appendTo('#PdfViewer');
## Set properties while adding Individual Annotation
-Set properties for individual annotation before creating the control using `DistanceSettings`.
+Set properties for individual annotations before creating the control using `DistanceSettings`.
-> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
+N> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
Refer to the following code snippet to set the default Distance settings.
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/free-text-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/free-text-annotation.md
index e5bc79d25f..53aad96fdd 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/free-text-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/free-text-annotation.md
@@ -18,18 +18,18 @@ Free Text is a text box annotation used to place formatted text anywhere on the
### Add Free Text annotation via UI
-Use the annotation toolbar:
+Use the annotation toolbar to:
- Click the **Edit Annotation** button in the PDF Viewer toolbar.
- Click the **Free Text Annotation** button to enable Free Text mode.
- Click on the page to add text.
-When in pan mode, selecting Free Text switches the viewer to text select mode.
+N> When in pan mode, selecting Free Text switches the viewer to text select mode.

### Switch to Free Text mode
-The PDF Viewer component allows drawing Distance annotations programmatically after enabling Distance mode in button clicks.
+The PDF Viewer component allows drawing free text annotations programmatically after enabling Free Text mode via button clicks.
```html
@@ -374,9 +374,9 @@ pdfviewer.appendTo('#PdfViewer');
## Set properties while adding Individual Annotation
-Set properties for individual annotation before creating the control using `FreeTextSettings`.
+Set properties for individual annotations before creating the control using `FreeTextSettings`.
-> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
+N> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
Refer to the following code snippet to set the default FreeText settings.
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/highlight-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/highlight-annotation.md
index 4c6b044e64..a16dda9b56 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/highlight-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/highlight-annotation.md
@@ -18,7 +18,7 @@ The PDF Viewer provides options to add, edit, and delete Highlight annotations o
### Add highlight annotation via UI
-You can add highlights in two ways:
+Add highlights in two ways:
1. Using the context menu
- Select text in the PDF document and right-click it.
@@ -27,9 +27,10 @@ You can add highlights in two ways:

2. Using the annotation toolbar
+Use the annotation toolbar to:
- Click the **Edit Annotation** button in the PDF Viewer toolbar to open the annotation toolbar.
- Select **Highlight** to enable highlight mode.
-- Select text to add the highlight annotation. Alternatively, select text first and then click **Highlight**.
+- Select text to add the highlight annotation, or select text first and then click **Highlight**.

@@ -37,7 +38,7 @@ N> When pan mode is active and a text markup mode is entered, the PDF Viewer swi
### Switch to Highlight Mode
-The PDF Viewer component allows add highlight annotations programmatically after enabling Highlight mode in button clicks.
+The PDF Viewer component allows adding highlight annotations programmatically after enabling Highlight mode via button clicks.
```html
@@ -187,7 +188,7 @@ document.getElementById('highlight').addEventListener('click', function () {
### Edit highlight annotation in UI
-You can select a highlight to change its appearance or remove it:
+Select a highlight to change its appearance or remove it:
- Change appearance using the annotation toolbar: Edit Color and Edit Opacity.
- Delete using Delete/Backspace keys or the Delete Annotation button in the annotation toolbar.
@@ -288,7 +289,7 @@ document.getElementById('editHighlight').addEventListener('click', function () {
Set default properties before creating the control using `highlightSettings`.
-> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
+N> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
Refer to the following code snippet to set the default highlight settings.
@@ -335,9 +336,9 @@ pdfviewer.appendTo('#PdfViewer');
## Set properties while adding Individual Annotation
-Set properties for individual annotation before creating the control using `highlightSettings`.
+Set properties for individual annotations before creating the control using `highlightSettings`.
-> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
+N> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
Refer to the following code snippet to set the default highlight settings.
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/ink-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/ink-annotation.md
index 1629a87581..93c8926fec 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/ink-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/ink-annotation.md
@@ -18,16 +18,16 @@ Ink is a freehand drawing annotation used to sketch, sign, or mark up content.
### Add ink annotation via UI
-Use the annotation toolbar:
-- Click the Edit Annotation button in the PDF Viewer toolbar.
-- Click the Draw Ink button to enable ink mode.
+Use the annotation toolbar to:
+- Click the **Edit Annotation** button in the PDF Viewer toolbar.
+- Click the **Draw Ink** button to enable ink mode.
- Draw on any page of the PDF document.

### Enable ink mode
-The PDF Viewer component allows add ink annotations programmatically after enabling ink mode in button clicks.
+The PDF Viewer component allows adding ink annotations programmatically after enabling ink mode via button clicks.
```html
@@ -157,7 +157,7 @@ document.getElementById('addInkAnnotationProgram').addEventListener('click', fun
### Edit ink annotation in UI
-You can select, move, and resize Ink annotations directly in the viewer:
+Select, move, and resize ink annotations directly in the viewer:
- Select an Ink annotation to show its handles.
- Move: drag inside the stroke to reposition it on the page.
- Resize: drag the selector handles to adjust its bounds.
@@ -323,9 +323,9 @@ pdfviewer.appendTo('#PdfViewer');
## Set properties while adding Individual Annotation
-Set properties for individual annotation before creating the control using `InkSettings`.
+Set properties for individual annotations before creating the control using `InkSettings`.
-> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
+N> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
Refer to the following code snippet to set the default Ink settings.
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/line-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/line-annotation.md
index e28beb5ffe..636bfa3f25 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/line-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/line-annotation.md
@@ -18,7 +18,7 @@ Line is a shape annotation used to mark straight connections or callouts. Common
### Add line annotation via UI
-Use the annotation toolbar:
+Use the annotation toolbar to:
- Click the **Edit Annotation** button in the PDF Viewer toolbar.
- Open the **Shape Annotation** dropdown.
- Choose **Line**, then draw on the page.
@@ -29,7 +29,7 @@ N> When in pan mode, selecting a shape annotation switches the viewer to text se
### Enable line mode
-The PDF Viewer component allows to add line annotations programmatically after enabling line mode in button clicks.
+The PDF Viewer component allows adding line annotations programmatically after enabling line mode via button clicks.
```html
@@ -175,8 +175,8 @@ document.getElementById('addLineAnnotation').addEventListener('click', function(
### Edit Line Annotation in UI
-You can select, move, and resize Line annotations directly in the viewer:
-- Select a Line to show its end-point handles.
+Select, move, and resize line annotations directly in the viewer:
+- Select a line to show its end-point handles.
- Move: drag the line to reposition it on the page.
- Resize/reshape: drag either end-point to adjust the line.
- Delete or access more options from the context menu.
@@ -348,13 +348,13 @@ pdfviewer.appendTo('#PdfViewer');
{% endhighlight %}
{% endtabs %}
-N> In both [Arrow](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#arrowsettings) and [Line](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#linesettings) annotations Settings, the Fill Color option is available only when an arrowhead style is applied at the Start or End. If both Start and End arrowhead styles are set to None, lines do not support fill rendering and the Fill Color option remains disabled.
+N> In both [Arrow](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#arrowsettings) and [Line](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#linesettings) annotation settings, the Fill Color option is available only when an arrowhead style is applied at the Start or End. If both Start and End arrowhead styles are set to None, lines do not support fill rendering and the Fill Color option remains disabled.
## Set properties while adding Individual Annotation
-Set properties for individual annotation before creating the control using `lineSettings`.
+Set properties for individual annotations before creating the control using `lineSettings`.
-> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
+N> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
Refer to the following code snippet to set the default line settings.
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/perimeter-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/perimeter-annotation.md
index 15afc5e1ec..f3f0297d00 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/perimeter-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/perimeter-annotation.md
@@ -18,18 +18,18 @@ Perimeter is a measurement annotation used to measure the length around a closed
### Add perimeter annotation via UI
-Use the annotation toolbar:
-- Click the Edit Annotation button in the PDF Viewer toolbar.
-- Click the Measurement Annotation dropdown.
-- Choose Perimeter, then draw the polyline on the page.
+Use the annotation toolbar to:
+- Click the **Edit Annotation** button in the PDF Viewer toolbar.
+- Open the **Measurement Annotation** dropdown.
+- Choose **Perimeter**, then draw the polyline on the page.
-N> When in pan mode, selecting a measurement annotation switches the viewer to text select mode.
+N> When in pan mode, selecting measurement annotations switches the viewer to text select mode.

### Enable perimeter mode
-The PDF Viewer library allows drawing measurement annotations programmatically after enabling perimeter mode in button clicks.
+The PDF Viewer library allows drawing perimeter annotations programmatically after enabling perimeter mode via button clicks.
```html
@@ -95,7 +95,7 @@ if (perimeterBtn) {
### Add a perimeter annotation programmatically
-The PDF Viewer library allows adding measurement annotations programmatically using the [addAnnotation()](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#annotation) method.
+The PDF Viewer library allows adding perimeter annotations programmatically using the [addAnnotation()](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#annotation) method.
```html
@@ -181,7 +181,7 @@ if (addBtn) {
### Edit perimeter annotation in UI
-You can select, move, and resize Perimeter annotations directly in the viewer:
+Use the viewer to select, move, and resize Perimeter annotations:
- Select a Perimeter to show its vertex handles.
- Move: drag inside the shape to reposition it on the page.
- Resize/reshape: drag any vertex handle to adjust the polyline points and size.
@@ -363,9 +363,9 @@ pdfviewer.appendTo('#PdfViewer');
## Set properties while adding Individual Annotation
-Set properties for individual annotation before creating the control using `PerimeterSettings`.
+Set properties for individual annotations before creating the control using `PerimeterSettings`.
-> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
+N> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
Refer to the following code snippet to set the default Perimeter settings.
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/polygon-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/polygon-annotation.md
index bdedea0534..469178bb38 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/polygon-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/polygon-annotation.md
@@ -18,18 +18,18 @@ Polygon is a shape annotation used to outline irregular regions, highlight areas
### Add polygon annotation via UI
-Use the annotation toolbar:
-- Click the Edit Annotation button in the PDF Viewer toolbar.
-- Open the Shape Annotation dropdown.
-- Choose Polygon, then draw on the page.
+Use the annotation toolbar to:
+- Click the **Edit Annotation** button in the PDF Viewer toolbar.
+- Open the **Shape Annotation** dropdown.
+- Choose **Polygon**, then draw on the page.
-N> When in pan mode, selecting a shape annotation switches the viewer to text select mode.
+N> When in pan mode, selecting shape annotations switches the viewer to text select mode.

### Enable polygon mode
-The PDF Viewer library allows drawing shape annotations programmatically after enabling polygon mode in button clicks.
+The PDF Viewer library allows drawing polygon annotations programmatically after enabling polygon mode via button clicks.
```html
@@ -179,18 +179,18 @@ document.getElementById('addPolygonAnnotation') && document.getElementById('addP
### Edit Polygon Annotation in UI
-You can select, move, and resize Polygon annotations directly in the viewer:
+Use the viewer to select, move, and resize Polygon annotations:
- Select a Polygon to show its vertex handles.
- Move: drag inside the shape to reposition it on the page.
- Resize/reshape: drag any vertex handle to adjust the polygon points and size.
- Delete or access more options from the context menu.
Use the toolbar to change appearance:
-- Edit Color, Edit Stroke Color, Edit Thickness, and Edit Opacity tools.
+- Use the Edit Color, Edit Stroke Color, Edit Thickness, and Edit Opacity tools.
See the sections below for details.
-#### Edit the properties of area annotations
+#### Edit the properties of polygon annotations
The fill color, stroke color, thickness, and opacity can be edited using the Edit Color, Edit Stroke Color, Edit Thickness, and Edit Opacity tools in the annotation toolbar.
@@ -348,9 +348,9 @@ pdfviewer.appendTo('#PdfViewer');
## Set properties while adding Individual Annotation
-Set properties for individual annotation before creating the control using `PolygonSettings`.
+Set properties for individual annotations before creating the control using `PolygonSettings`.
-> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
+N> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
Refer to the following code snippet to set the default Polygon settings.
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/radius-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/radius-annotation.md
index a821ed0eb3..9322791d71 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/radius-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/radius-annotation.md
@@ -18,18 +18,18 @@ Radius is a measurement annotation used to measure the radius of a circle in the
### Add radius annotation via UI
-Use the annotation toolbar:
-- Click the Edit Annotation button in the PDF Viewer toolbar.
-- Open the Measurement Annotation dropdown.
-- Choose Radius, then draw on the page.
+Use the annotation toolbar to:
+- Click the **Edit Annotation** button in the PDF Viewer toolbar.
+- Open the **Measurement Annotation** dropdown.
+- Choose **Radius**, then draw on the page.
-N> When in pan mode, selecting a measurement annotation switches the viewer to text select mode.
+N> When in pan mode, selecting measurement annotations switches the viewer to text select mode.

### Enable radius mode
-The PDF Viewer component allows drawing Radius annotations programmatically after enabling Radius mode in button clicks.
+The PDF Viewer component allows drawing radius annotations programmatically after enabling radius mode via button clicks.
```html
@@ -104,7 +104,7 @@ document.getElementById('setNone').addEventListener('click', function() {
### Add a radius annotation programmatically
-Add measurement annotations programmatically using the [addAnnotation()](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#annotation) method.
+Add radius annotations programmatically using the [addAnnotation()](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#annotation) method.
```html
@@ -177,7 +177,7 @@ document.getElementById('addRadiusAnnotation').addEventListener('click', functio
### Edit radius annotation in UI
-You can select, move, and resize Radius annotations directly in the viewer:
+Use the viewer to select, move, and resize Radius annotations:
- Select a Radius measurement to show its handles.
- Move: drag the shape to reposition it on the page.
- Resize: drag the handles to adjust its size.
@@ -339,9 +339,9 @@ pdfviewer.appendTo('#PdfViewer');
## Set properties while adding Individual Annotation
-Set properties for individual annotation before creating the control using `RadiusSettings`.
+Set properties for individual annotations before creating the control using `RadiusSettings`.
-> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
+N> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
Refer to the following code snippet to set the default Radius settings.
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/rectangle-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/rectangle-annotation.md
index 5e278c37f5..cde1e1489c 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/rectangle-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/rectangle-annotation.md
@@ -18,10 +18,10 @@ Rectangle is a shape annotation used to highlight regions, group content, or dra
### Add rectangle annotation via UI
-Use the annotation toolbar:
-- Click the Edit Annotation button in the PDF Viewer toolbar.
-- Open the Shape Annotation dropdown.
-- Choose Rectangle, then draw on the page.
+Use the annotation toolbar to:
+- Click the **Edit Annotation** button in the PDF Viewer toolbar.
+- Open the **Shape Annotation** dropdown.
+- Choose **Rectangle**, then draw on the page.
N> When pan mode is active and a shape tool is selected, the viewer switches to text select mode automatically.
@@ -29,7 +29,7 @@ N> When pan mode is active and a shape tool is selected, the viewer switches to
### Enable rectangle mode
-The PDF Viewer library allows drawing shape annotations programmatically after enabling rectangle mode in button clicks.
+The PDF Viewer library allows drawing rectangle annotations programmatically after enabling rectangle mode via button clicks.
```html
@@ -104,7 +104,7 @@ document.getElementById('setNone') && document.getElementById('setNone').addEven
### Add a rectangle annotation programmatically
-Use the addAnnotation method with Rectangle settings to add a rectangle annotation programmatically.
+Use the `addAnnotation` method to add rectangle annotations programmatically.
```html
@@ -177,16 +177,16 @@ document.getElementById('addRectangleAnnotation') && document.getElementById('ad
### Edit Rectangle Annotation in UI
-You can select, move, and resize Rectangle annotations directly in the viewer:
+Use the viewer to select, move, and resize Rectangle annotations:
- Select a Rectangle to show its resize handles.
- Move: drag inside the shape to reposition it on the page.
- Resize: drag any corner or side handle to adjust size.
- Delete or access more options from the context menu.
Use the toolbar to change appearance:
-- Edit Color, Edit Stroke Color, Edit Thickness, and Edit Opacity tools.
+- Use the Edit Color, Edit Stroke Color, Edit Thickness, and Edit Opacity tools.
-#### Edit the properties of area annotations
+#### Edit the properties of rectangle annotations
The fill color, stroke color, thickness, and opacity can be edited using the Edit Color, Edit Stroke Color, Edit Thickness, and Edit Opacity tools in the annotation toolbar.
@@ -344,9 +344,9 @@ pdfviewer.appendTo('#PdfViewer');
## Set properties while adding Individual Annotation
-Set properties for individual annotation before creating the control using `RectangleSettings`.
+Set properties for individual annotations before creating the control using `RectangleSettings`.
-> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
+N> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
Refer to the following code snippet to set the default rectangle settings.
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/redaction-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/redaction-annotation.md
index 8007801ea9..c755640a27 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/redaction-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/redaction-annotation.md
@@ -16,9 +16,9 @@ Redaction annotations permanently remove sensitive content from a PDF. You can d
## Add Redaction Annotation
-### Add redaction annotation in UI
+### Add redaction annotations in UI
-- Use the Redaction tool from the toolbar to draw over content to hide.
+- Use the Redaction tool from the toolbar to draw over content to hide it.
- Redaction marks can show overlay text (for example, "Confidential") and can be styled.

@@ -29,15 +29,15 @@ Redaction annotations are interactive:
- Resizable

-You can also add redaction from the context menu by selecting content and choosing Redact Annotation.
+You can also add redaction annotations from the context menu by selecting content and choosing Redact Annotation.

-N> Ensure the Redaction tool is included in the toolbar. See [RedactionToolbar](../../Redaction/toolbar.md)for configuration.
+N> Ensure the Redaction tool is included in the toolbar. See [RedactionToolbar](../../Redaction/toolbar.md) for configuration.
-### Add a redaction annotation programmatically
+### Add redaction annotations programmatically
-Use the addAnnotation method with the Redaction type.
+Use the `addAnnotation` method with the Redaction type to add redaction annotations programmatically.
```html
@@ -67,11 +67,11 @@ viewer.annotationAdd = (args) => {
};
```
-## Edit Redaction Annotation
+## Edit Redaction Annotations
-### Edit redaction annotation in UI
+### Edit redaction annotations in UI
-You can select, move, and resize Redaction annotations directly in the viewer. Use the context menu for additional actions.
+Use the viewer to select, move, and resize Redaction annotations. Use the context menu for additional actions.
#### Edit the properties of redaction annotations in UI
@@ -80,7 +80,7 @@ Use the property panel or context menu Properties to change overlay text, font,


-### Edit a redaction annotation programmatically
+### Edit redaction annotations programmatically
Use editAnnotation to modify overlay text, colors, fonts, etc.
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/stamp-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/stamp-annotation.md
index 24062226a1..a978f30342 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/stamp-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/stamp-annotation.md
@@ -21,11 +21,11 @@ The PDF Viewer control provides options to add, edit, delete, and rotate the fol
## Add Stamp Annotation
-### Add Stamp Annotation in UI
+### Add Stamp annotations in UI
-Use the annotation toolbar:
-- Click the Edit Annotation button.
-- Open the Stamp Annotation dropdown.
+Use the annotation toolbar to:
+- Click the **Edit Annotation** button.
+- Open the **Stamp Annotation** dropdown.

- Choose a stamp type and place it on the page.

@@ -99,9 +99,9 @@ document.getElementById('standardBusinessStamp') && document.getElementById('sta
{% endhighlight %}
{% endtabs %}
-### Add Stamp Annotation programmatically
+### Add Stamp annotations programmatically
-Create stamps via addAnnotation.
+Create stamps programmatically using the `addAnnotation` method.
```html
@@ -183,9 +183,9 @@ document.getElementById('addCustom') && document.getElementById('addCustom').add
## Edit Stamp Annotation
-### Edit Stamp Annotation in UI
+### Edit Stamp annotations in UI
-You can select, move, resize, rotate, and delete Stamp annotations directly in the viewer:
+Use the viewer to select, move, resize, rotate, and delete Stamp annotations:
- Select a Stamp to show its resize and rotation handles.
- Move: drag inside the stamp to reposition it on the page.
- Resize: drag any corner or side handle to adjust the size.
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/sticky-notes-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/sticky-notes-annotation.md
index f35f0ff365..d2a64aa1b4 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/sticky-notes-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/sticky-notes-annotation.md
@@ -14,26 +14,26 @@ Sticky Notes are comment annotations used to leave notes, replies, and review st

-## Add Annotation
+## Add annotations
-### Add Annotation in UI
+### Add annotations in UI
-Use the Comments tool:
+Use the Comments tool to:
- Click the Comments button in the PDF Viewer toolbar.
- Click on the page where the sticky note should be added.
- The sticky note icon is placed at the clicked position.

-Add and manage comments using the comment panel:
+Use the comment panel to add and manage comments:
- Select a sticky note, right‑click, and choose Comment.
- Add comments, replies, and statuses in the panel.

-### Add Annotation programmatically
+### Add annotations programmatically
-Use addAnnotation to programmatically create a sticky note.
+Use the `addAnnotation` method to programmatically create sticky note annotations.
```html
@@ -102,11 +102,11 @@ document.getElementById('stickyNote').addEventListener('click', function () {
{% endhighlight %}
{% endtabs %}
-## Edit Annotation
+## Edit annotations
-### Edit Annotation in UI
+### Edit annotations in UI
-You can select and manage sticky notes directly in the viewer:
+Use the viewer to select and manage sticky notes:
- Select: click the sticky note icon to focus it and show context actions.
- Move: drag the icon to reposition on the page.
- Delete or more options: use the context menu on the selected note.
@@ -132,9 +132,9 @@ Modify or delete comments or replies, and change status using the menu options i

-### Edit Annotation programmatically
+### Edit annotations programmatically
-Use editAnnotation to update an existing note's bounds.
+Use `editAnnotation` to update an existing note's bounds.
```html
@@ -264,9 +264,9 @@ pdfviewer.appendTo('#PdfViewer');
## Set properties while adding Individual Annotation
-Set properties for individual annotation before creating the control using `StickyNotesSettings`.
+Set properties for individual annotations before creating the control using `StickyNotesSettings`.
-> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
+N> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
Refer to the following code snippet to set the default StickyNotes settings.
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/strikethrough-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/strikethrough-annotation.md
index b9925d52c4..d346dadd9a 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/strikethrough-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/strikethrough-annotation.md
@@ -14,9 +14,9 @@ The PDF Viewer provides options to add, edit, and delete Strikethrough annotatio

-## Add strikethrough annotation
+## Add strikethrough annotations
-### Add strikethrough annotation via UI
+### Add strikethrough annotations via UI
You can add strikethrough in two ways:
@@ -28,10 +28,10 @@ You can add strikethrough in two ways:
2. Using the annotation toolbar
-* Click the **Edit Annotation** button in the PDF Viewer toolbar to open the annotation toolbar.
-* Select **Strikethrough** to enable strikethrough mode.
-* Select text to add the strikethrough annotation.
-* Alternatively, select text first and then click **Strikethrough**.
+- Click the **Edit Annotation** button in the PDF Viewer toolbar to open the annotation toolbar.
+- Select **Strikethrough** to enable strikethrough mode.
+- Select text to add a strikethrough annotation.
+- Alternatively, select text first and then click **Strikethrough**.

@@ -169,9 +169,9 @@ Add the below `serviceUrl` in the `index.js` file
{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es6/text-markup-annotation/strikethrough-normal-mode-cs1" %}
-### Add strikethrough annotation programmatically
+### Add strikethrough annotations programmatically
-Programmatically add strikethrough using the [addAnnotation](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#addannotation) method.
+Programmatically add strikethrough annotations using the [addAnnotation](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#addannotation) method.
Example:
@@ -246,11 +246,11 @@ if (strikethrough) {
{% endhighlight %}
{% endtabs %}
-## Edit strikethrough annotation
+## Edit strikethrough annotations
-### Edit strikethrough annotation in UI
+### Edit strikethrough annotations in UI
-The color and opacity of the strikethrough annotation can be edited using the Edit Color and Edit Opacity tools in the annotation toolbar.
+The color and opacity of strikethrough annotations can be edited using the Edit Color and Edit Opacity tools in the annotation toolbar.
#### Edit color
Use the color palette in the Edit Color tool to change the annotation color.
@@ -262,7 +262,7 @@ Use the range slider in the Edit Opacity tool to change annotation opacity.

-#### Delete strikethrough annotation
+#### Delete strikethrough annotations
- Select the annotation and press Delete, or
- Click **Delete Annotation** in the annotation toolbar.
@@ -271,11 +271,11 @@ Use the range slider in the Edit Opacity tool to change annotation opacity.
#### Edit strikethrough annotation properties
-The color and opacity of the strikethrough annotation can be edited using the Edit Color and Edit Opacity tools in the annotation toolbar.
+The color and opacity of strikethrough annotations can be edited using the Edit Color and Edit Opacity tools in the annotation toolbar.
-### Edit an existing strikethrough annotation programmatically
+### Edit existing strikethrough annotations programmatically
-To modify an existing strikethrough annotation programmatically, use the editAnnotation() method. Example:
+To modify existing strikethrough annotations programmatically, use the `editAnnotation()` method. Example:
```html
@@ -361,7 +361,7 @@ if (editStrikethroughAnnotation) {
Set default properties before creating the control using `strikethroughSettings`.
-> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
+N> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
Refer to the following code snippet to set the default strikethrough settings.
@@ -408,9 +408,9 @@ pdfviewer.appendTo('#PdfViewer');
## Set properties while adding Individual Annotation
-Set properties for individual annotation before creating the control using `StrikethroughSettings`.
+Set properties for individual annotations before creating the control using `StrikethroughSettings`.
-> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
+N> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
Refer to the following code snippet to set the default highlight settings.
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/underline-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/underline-annotation.md
index fee9952255..23bdecfd77 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/underline-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/underline-annotation.md
@@ -14,9 +14,9 @@ The PDF Viewer provides options to add, edit, and delete Underline annotations o

-## Add underline annotation
+## Add underline annotations
-### Add underline annotation via UI
+### Add underline annotations via UI
You can add underlines in two ways:
@@ -28,10 +28,10 @@ You can add underlines in two ways:
2. Using the annotation toolbar
-* Click the **Edit Annotation** button in the PDF Viewer toolbar to open the annotation toolbar.
-* Select **Underline** to enable underline mode.
-* Select text to add the underline annotation.
-* Alternatively, select text first and then click **Underline**.
+- Click the **Edit Annotation** button in the PDF Viewer toolbar to open the annotation toolbar.
+- Select **Underline** to enable underline mode.
+- Select text to add an underline annotation.
+- Alternatively, select text first and then click **Underline**.

@@ -169,9 +169,9 @@ Add the below `serviceUrl` in the `index.js` file
{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es6/text-markup-annotation/underline-normal-mode-cs1" %}
-### Add underline annotation programmatically
+### Add underline annotations programmatically
-Programmatically add underlines using the [addAnnotation](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#addannotation) method.
+Programmatically add underline annotations using the [addAnnotation](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#addannotation) method.
Example:
@@ -248,9 +248,11 @@ if (underline) {
## Edit underline annotation
-### Edit underline annotation in UI
+## Edit underline annotations
-The color and opacity of the underline annotation can be edited using the Edit Color and Edit Opacity tools in the annotation toolbar.
+### Edit underline annotations in UI
+
+The color and opacity of underline annotations can be edited using the Edit Color and Edit Opacity tools in the annotation toolbar.
#### Edit color
Use the color palette in the Edit Color tool to change the annotation color.
@@ -269,7 +271,9 @@ Use the range slider in the Edit Opacity tool to change annotation opacity.

-### Edit an existing underline annotation programmatically
+### Edit existing underline annotations programmatically
+
+To modify existing underline annotations programmatically, use the `editAnnotation()` method. Example:
To modify an existing underline annotation programmatically, use the editAnnotation() method. Example:
@@ -357,7 +361,7 @@ if (editUnderlineAnnotation) {
Set default properties before creating the control using `underlineSettings`.
-> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
+N> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
Refer to the following code snippet to set the default underline settings.
@@ -404,9 +408,9 @@ pdfviewer.appendTo('#PdfViewer');
## Set properties while adding Individual Annotation
-Set properties for individual annotation before creating the control using `underlineSettings`.
+Set properties for individual annotations before creating the control using `underlineSettings`.
-> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
+N> After editing default color and opacity using the Edit Color and Edit Opacity tools, the values update to the selected settings.
Refer to the following code snippet to set the default highlight settings.
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/volume-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/volume-annotation.md
index 7ad2863a13..1ffe89fd8f 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/volume-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/volume-annotation.md
@@ -18,18 +18,18 @@ Volume is a measurement annotation used to calculate the volume of a rectangular
### Add volume annotation via UI
-Use the annotation toolbar:
-- Click the Edit Annotation button in the PDF Viewer toolbar.
-- Open the Measurement Annotation dropdown.
-- Choose Volume, then draw on the page.
+Use the annotation toolbar to:
+- Click the **Edit Annotation** button in the PDF Viewer toolbar.
+- Open the **Measurement Annotation** dropdown.
+- Choose **Volume**, then draw on the page.
-N> When in pan mode, selecting a measurement annotation switches the viewer to text select mode.
+N> When in pan mode, selecting measurement annotations switches the viewer to text select mode.

### Enable volume mode
-The PDF Viewer component allows drawing Volume annotations programmatically after enabling Volume mode in button clicks.
+The PDF Viewer component allows drawing volume annotations programmatically after enabling volume mode via button clicks.
```html
@@ -113,9 +113,9 @@ if (setNoneBtn) {
{% endhighlight %}
{% endtabs %}
-### Add a volume annotation programmatically
+### Add volume annotations programmatically
-Add measurement annotations programmatically using the [addAnnotation()](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#annotation) method.
+Add volume annotations programmatically using the `addAnnotation` method.
```html
@@ -198,7 +198,7 @@ if (addVolBtn) {
### Edit volume annotation in UI
-You can select, move, and resize Volume annotations directly in the viewer:
+Use the viewer to select, move, and resize Volume annotations:
- Select a Volume measurement to show its handles.
- Move: drag the shape to reposition it on the page.
- Resize: drag the handles to adjust its size.
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotations-in-mobile-view.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotations-in-mobile-view.md
index f2690c2dbc..eb1fe5bc1b 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotations-in-mobile-view.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotations-in-mobile-view.md
@@ -9,115 +9,117 @@ domainurl: ##DomainURL##
---
# Annotations in mobile view in JavaScript PDF Viewer control
+This article describes how to use annotation tools in the Syncfusion JavaScript (Essential JS 2) PDF Viewer on touch-enabled devices. It covers enabling the annotation toolbar; adding sticky notes, text markups, shapes, measurements, stamps, signatures, and ink; adjusting annotation properties before and after placement; using comments; and removing annotations.
+
## Open the annotation toolbar
-**Step 1:** Click Edit Annotation on the toolbar to enable the annotation toolbar.
+**Step 1:** Select the Edit Annotation icon on the main toolbar to enable the annotation toolbar.

-**Step 2:** The annotation toolbar appears below the main toolbar.
+**Step 2:** The annotation toolbar appears below the main toolbar and displays tools optimized for touch interaction.

## Add sticky note annotations
-**Step 1:** Click the Sticky Notes icon, then tap the page where the note should be placed.
+**Step 1:** Select the Sticky Notes icon to activate the sticky note tool, then tap the desired location on the page to place a note.

-**Step 2:** Tap the page to add the sticky note annotation.
+**Step 2:** A sticky note annotation is added at the selected location; opening the note allows viewing or editing its content.

## Add text markup annotations
-**Step 1:** Tap a text markup icon, select the text to mark, then tap the selection to apply the markup.
+**Step 1:** Select a text markup icon, highlight the desired text, then confirm the selection to apply the markup.

-**Step 2:** The text markup annotation is applied to the selected text.
+**Step 2:** The text markup annotation is applied to the highlighted text.

## Add shape and measurement annotations
-**Step 1:** Tap the Shape or Measure icon to open the corresponding toolbar.
+**Step 1:** Select the Shape or Measure icon to open the corresponding toolbar.

-**Step 2:** Choose a shape or measurement type, then draw it on the page.
+**Step 2:** Choose a shape or measurement type and draw it on the page.

-**Step 3:** The annotation appears on the PDF page.
+**Step 3:** The annotation is rendered on the PDF page.

## Add stamp annotations
-**Step 1:** Tap the Stamp icon and select a stamp type from the menu.
+**Step 1:** Select the Stamp icon and choose a stamp type from the menu.

-**Step 2:** Tap the page to place the stamp annotation.
+**Step 2:** Tap the page to place the chosen stamp annotation.

## Add signature annotations
-**Step 1:** Tap the Signature icon to open the canvas. Draw the signature, tap Create, then tap the viewer to place it.
+**Step 1:** Select the Signature icon to open the signature canvas. Draw the signature, choose Create, then tap the viewer to place it.

-**Step 2:** The signature is added to the page.
+**Step 2:** The signature annotation is added to the page.

## Add ink annotations
-**Step 1:** Tap the Ink tool and draw on the page.
+**Step 1:** Select the Ink tool and draw directly on the page.

-**Step 2:** The ink annotation appears on the page.
+**Step 2:** The ink annotation is rendered on the page.

## Change annotation properties (before adding)
-**Step 1:** Change properties before placing the annotation.
+**Step 1:** Adjust annotation properties before placement as required.
-**Step 2:** Tap the annotation icon to open the property toolbar, adjust properties, then place the annotation on the page.
+**Step 2:** Open the property toolbar for the annotation icon, set the desired properties, and then place the annotation on the page.

## Change annotation properties (after adding)
-**Step 1:** Change annotation properties after adding the annotation.
+**Step 1:** Modify annotation properties after placement when necessary.
-**Step 2:** Select the annotation to show the property toolbar, then adjust the properties.
+**Step 2:** Select the annotation to display the property toolbar, then update the properties as needed.

## Delete annotations
-**Step 1:** Select the annotation to show the property toolbar, then tap the Delete icon to remove it.
+**Step 1:** Select the annotation to display the property toolbar, then choose the Delete icon to remove the annotation.

## Open the comment panel
-**Step 1:** Open the comment panel using the icon in the property toolbar or the annotation toolbar.
+**Step 1:** Open the comment panel from the property toolbar or the annotation toolbar.

-**Step 2:** The comment panel appears.
+**Step 2:** The comment panel is displayed.

## Close the comment panel
-**Step 1:** Tap the Close button to close the comment panel.
+**Step 1:** Use the Close button to dismiss the comment panel.

diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotations-undo-redo.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotations-undo-redo.md
index 1cb8f5ae89..cc697a0948 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotations-undo-redo.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotations-undo-redo.md
@@ -8,16 +8,16 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Perform undo and redo in JavaScript
+# Undo and redo annotations in JavaScript PDF Viewer
-The PDF Viewer supports undo and redo for Annotations.
+The PDF Viewer supports undo and redo for annotations.

-Undo and redo actions can be performed in the following ways:
+Undo and redo actions can be performed by using either of the following methods:
-1. Using keyboard shortcuts:
- After performing a highlight annotation action, press Ctrl+Z to undo and Ctrl+Y to redo.
+1. Using keyboard shortcuts (desktop):
+ After performing an annotation action, press `Ctrl+Z` to undo and `Ctrl+Y` to redo on Windows and Linux. On macOS, use `Command+Z` to undo and `Command+Shift+Z` to redo.
2. Using the toolbar:
Use the **Undo** and **Redo** tools in the toolbar.
@@ -59,8 +59,7 @@ document.getElementById('redo').addEventListener('click', function () {
{% endhighlight %}
{% endtabs %}
-N> To set up the **server-backed PDF Viewer**,
-Add the below `serviceUrl` in the `index.js` file
+N> To set up the **server-backed PDF Viewer**, add the following `serviceUrl` in the `index.js` file:
`pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';`
{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es6/text-markup-annotation/undo-redo-cs1" %}
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/comments.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/comments.md
index 7c8a99b42c..fa7c18b372 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/comments.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/comments.md
@@ -8,9 +8,9 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Comments in JavaScript PDF Viewer control
+# Comments in JavaScript PDF Viewer
-The PDF Viewer control provides options to add, edit, and delete comments for the following annotations in PDF documents:
+The PDF Viewer provides options to add, edit, and delete comments for the following annotation types in PDF documents:
* Shape annotation
* Stamp annotation
@@ -32,90 +32,90 @@ Annotation comments can be added to the PDF using the comment panel. The comment
1. Using the annotation menu
- * Click the Edit Annotation button in the PDF Viewer toolbar. A toolbar appears below it.
- * Click the Comment Panel button. The comment panel opens.
+ * Select the Edit Annotation button in the PDF Viewer toolbar. A toolbar appears below it.
+ * Select the Comment Panel button to open the comment panel.
-2. Using Context menu
+2. Using the context menu
* Select the annotation in the PDF document and right-click it.
- * Select Comment from the context menu.
+ * Choose Comment from the context menu.
-3. Using the Mouse click
+3. Using a mouse click
- * Select the annotation in the PDF document and double-click it. The comment panel opens.
+ * Select the annotation in the PDF document and double-click it to open the comment panel.
If the comment panel is already open, select the annotation and add comments using the panel.
### Adding comments
-* Select the annotation in the PDF document.
-* The corresponding comment thread is highlighted in the comment panel.
-* Add comments and replies using the comment panel.
+- Select an annotation in the PDF document.
+- The corresponding comment thread is highlighted in the comment panel.
+- Add comments and replies using the comment panel.

-### Adding Comment Replies
+### Adding comment replies
-* Multiple replies can be added to a comment.
-* After adding a comment, add replies as needed.
+- Multiple replies can be added to a comment.
+- After adding a comment, add replies as needed.
-### Adding Comment or Reply Status
+### Adding comment or reply status
-* Select the annotation comment in the comment panel.
-* Click More options in the comment or reply container.
-* Select Set Status from the context menu.
-* Choose a status for the comment.
+- Select the annotation comment in the comment panel.
+- Click More options in the comment or reply container.
+- Select Set Status from the context menu.
+- Choose a status for the comment.

-### Editing the comments and comments replies of the annotations
+### Editing comments and comment replies for annotations
Comments, replies, and status can be edited using the comment panel.
-### Editing the Comment or Comment Replies
+### Editing a comment or comment reply
Edit comments and replies in the following ways:
-1. Using the Context menu
+1. Using the context menu
* Select the annotation comment in the comment panel.
* Click More options in the comment or reply container.
* Select Edit from the context menu.
- * An editable text box appears. Change the content of the comment or reply.
+ * An editable text box appears; update the content of the comment or reply.
-2. Using the Mouse Click
+2. Using a mouse click
* Select the annotation comment in the comment panel.
* Double-click the comment or reply content.
- * An editable text box appears. Change the content of the comment or reply.
+ * An editable text box appears; update the content of the comment or reply.
-### Editing Comment or Reply Status
+### Editing comment or reply status
-* Select the annotation comment in the comment panel.
-* Click More options in the comment or reply container.
-* Select Set Status from the context menu.
-* Choose a status for the comment.
-* None is the default state. Selecting None clears the status indicator; the comment or reply remains visible.
+- Select the annotation comment in the comment panel.
+- Click More options in the comment or reply container.
+- Select Set Status from the context menu.
+- Choose a status for the comment.
+- None is the default state; selecting None clears the status indicator while the comment or reply remains visible.

-### Delete Comment or Comment Replies
+### Delete comment or comment replies
-* Select the annotation comment in the comment panel.
-* Click More options in the comment or reply container.
-* Select Delete from the context menu.
+- Select the annotation comment in the comment panel.
+- Click More options in the comment or reply container.
+- Select Delete from the context menu.

->Deleting the root comment from the comment panel also deletes the associated annotation.
+> Deleting the root comment from the comment panel also deletes the associated annotation.
-## Add Comments to the annotation Programmatically
+## Add comments to an annotation programmatically
-### How to Add Commnets and Replies programmatically
+### How to add comments and replies programmatically
Comments can be added to the PDF document programmatically using the `editAnnotation` property.
-The following example Shows how to add comments and reply in response to a button click.
+The following example shows how to add comments and a reply in response to a button click.
```html
@@ -182,11 +182,11 @@ document.getElementById("addReply")?.addEventListener("click", function() {
{% endhighlight %}
{% endtabs %}
-### How to Edit Comments programmatically
+### How to edit comments programmatically
Comments can be edited in the PDF document programmatically using the `editAnnotation` property.
-The following example Shows how to edit comments and reply in response to a button click.
+The following example shows how to edit comments and a reply in response to a button click.
```html
@@ -256,7 +256,7 @@ document.getElementById("editReply")?.addEventListener("click", function() {
{% endhighlight %}
{% endtabs %}
-### How to check the comments added by the user
+### How to check comments added by users
Comments added to the PDF document can be read using the annotation's `comments` property.
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/create-modify-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/create-modify-annotation.md
index feeee94b83..39eb8f0691 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/create-modify-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/create-modify-annotation.md
@@ -10,28 +10,28 @@ domainurl: ##DomainURL##
# Create and modify annotations
-Use the PDF Viewer annotation tools to add, edit, and manage markups across your documents. This page provides a quick overview with convenient navigation to each annotation type and common ways to create and modify annotations.
+The PDF Viewer annotation tools add, edit, and manage markups across documents. This page provides an overview with quick navigation to each annotation type and common creation and modification workflows.
## Quick navigation to annotation types
Jump directly to a specific annotation type for detailed usage and examples:
-TextMarkup Annotations:
+Text markup annotations:
-- Highlight : [Highlight annotation](./annotation-types/highlight-annotation)
+- Highlight: [Highlight annotation](./annotation-types/highlight-annotation)
- Strikethrough: [Strikethrough annotation](./annotation-types/strikethrough-annotation)
- Underline: [Underline annotation](./annotation-types/underline-annotation)
- Squiggly: [Squiggly annotation](./annotation-types/Squiggly-annotation)
-Shape Annotations:
+Shape annotations:
- Line: [Line annotation](./annotation-types/line-annotation)
- Arrow: [Arrow annotation](./annotation-types/arrow-annotation)
- Rectangle: [Rectangle annotation](./annotation-types/rectangle-annotation)
-- Circle : [Circle annotation](./annotation-types/circle-annotation)
+- Circle: [Circle annotation](./annotation-types/circle-annotation)
- Polygon: [Polygon annotation](./annotation-types/polygon-annotation)
-Measurement Annotations:
+Measurement annotations:
- Distance: [Distance annotation](./annotation-types/distance-annotation)
- Perimeter: [Perimeter annotation](./annotation-types/perimeter-annotation)
@@ -39,13 +39,13 @@ Measurement Annotations:
- Radius: [Radius annotation](./annotation-types/ra)
- Volume: [Volume annotation](./annotation-types/vo)
-Other Annotations:
+Other annotations:
- Redaction: [Redaction annotation](./annotation-types/redaction-annotation)
-- Free Text: [Free text annotation](./annotation-types/free-text-annotation)
-- Ink (Freehand): [Ink annotation](./annotation-types/ink-annotation)
+- Free text: [Free text annotation](./annotation-types/free-text-annotation)
+- Ink (freehand): [Ink annotation](./annotation-types/ink-annotation)
- Stamp: [Stamp annotation](./annotation-types/stamp-annotation)
-- Sticky Notes: [Sticky notes annotation](./annotation-types/sticky-notes-annotation)
+- Sticky notes: [Sticky notes annotation](./annotation-types/sticky-notes-annotation)
N> Each annotation type page includes both UI steps and programmatic examples specific to that type.
@@ -54,18 +54,16 @@ N> Each annotation type page includes both UI steps and programmatic examples sp
### Create via UI
- Open the annotation toolbar in the PDF Viewer.
-- Choose the required tool (for example, Shape, Free Text, Ink, Stamp, Redaction).
+- Choose the required tool (for example, Shape, Free text, Ink, Stamp, Redaction).
- Click or drag on the page to place the annotation.

-Notes:
-- When pan mode is active and you select a shape or stamp tool, the viewer switches to text select mode automatically.
-- Property pickers in the annotation toolbar let you choose color, stroke color, thickness, and opacity while drawing.
+N> When pan mode is active and a shape or stamp tool is selected, the viewer switches to text select mode automatically. Property pickers in the annotation toolbar let users choose color, stroke color, thickness, and opacity while drawing.
### Create programmatically
-Creation patterns vary slightly by type. Refer to the type pages above for tailored code. Example: creating a Redaction annotation using addAnnotation.
+Creation patterns vary by type. Refer to the individual annotation pages for tailored code. Example: creating a Redaction annotation using `addAnnotation`.
```html
@@ -88,20 +86,20 @@ document.getElementById('addRedactAnnot')?.addEventListener('click', () => {
});
```
-See the individual annotation pages (links above) for enabling draw modes from UI buttons and other type-specific creation samples.
+Refer to the individual annotation pages for enabling draw modes from UI buttons and other type-specific creation samples.
## Modify annotations
### Modify via UI
Use the annotation toolbar after selecting an annotation:
-- Edit Color: change the fill or text color (when applicable)
+- Edit color: change the fill or text color (when applicable)

-- Edit Stroke Color: change the border/line color (shape and line types)
+- Edit stroke color: change the border or line color (shape and line types)

-- Edit Thickness: adjust the border/line thickness
+- Edit thickness: adjust the border or line thickness

-- Edit Opacity: change transparency
+- Edit opacity: change transparency

@@ -109,10 +107,10 @@ Additional options such as Line Properties (for line/arrow) are available from t
### Modify programmatically
-Use editAnnotation to apply changes to an existing annotation. Common flow:
-- Locate the target annotation from annotationCollection
-- Update the desired properties
-- Call editAnnotation with the modified object
+Use `editAnnotation` to apply changes to an existing annotation. Common flow:
+- Locate the target annotation from `annotationCollection`.
+- Update the desired properties.
+- Call `editAnnotation` with the modified object.
```html
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/custom-data.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/custom-data.md
index 2de082c1e2..5d89c11fab 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/custom-data.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/custom-data.md
@@ -10,11 +10,12 @@ domainurl: ##DomainURL##
# Custom data in annotations
-You can attach any custom key–value data to annotations using the customData property. This works at two levels:
-- Default level with annotationSettings: Applies to all annotations created via the UI.
-- Per-annotation-type level: Supply customData in each annotation type settings (highlightSettings, rectangleSettings, etc.).
+Annotations can include custom key–value data via the `customData` property. This is supported at two levels:
-The customData value can be any serializable object. It is preserved when exporting or importing annotations and is available at runtime on the annotation object.
+- Default level via `annotationSettings`: applies to all annotations created through the UI.
+- Per-annotation-type level: provide `customData` inside specific annotation-type settings (for example, `highlightSettings`, `rectangleSettings`).
+
+The `customData` value can be any JSON-serializable object. It is preserved during annotation export/import and is available at runtime on the annotation object.
## Default custom data (annotationSettings)
@@ -134,9 +135,9 @@ if (btn) {
}
```
-### Notes
-- customData can be any JSON-serializable object and is stored with the annotation.
-- Use default annotationSettings.customData for global defaults and override with per-tool settings as needed.
+### Note
+- `customData` can be any JSON-serializable object and is stored with the annotation.
+- Use `annotationSettings.customData` for global defaults and override with per-tool settings as needed.
[View Sample on GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples/tree/master)
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/custom-tools.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/custom-tools.md
index f96959c611..e1f9f77c05 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/custom-tools.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/custom-tools.md
@@ -10,17 +10,17 @@ domainurl: ##DomainURL##
# Custom annotation tools in JavaScript PDF Viewer
-PDF viewer allows to add your own toolbar and toggle PDF annotation tools programmatically using the setAnnotationMode method. You can enable tools such as Highlight, Underline, Rectangle, Circle, Arrow, Free Text, Ink, and Measurement annotations (Distance, Perimeter, Area, Radius).
+The PDF Viewer supports adding a custom toolbar and toggling annotation tools programmatically using the `setAnnotationMode` method. The viewer can enable tools such as Highlight, Underline, Rectangle, Circle, Arrow, Free Text, Ink, and measurement annotations (Distance, Perimeter, Area, Radius).
Follow these steps to build a minimal custom annotation toolbar.
Step 1: Start from a basic PDF Viewer sample
-See the [Getting started guide](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/javascript-es5/getting-started) to create a basic sample.
+Refer to the [Getting started guide](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/javascript-es5/getting-started) to create a basic sample.
Step 2: Add HTML for a lightweight custom toolbar
-Add buttons for the tools you want to expose. You can use plain buttons or Syncfusion Toolbar. Below is a plain-HTML variant that keeps things simple.
+Add buttons for the tools to expose. The sample below uses plain HTML buttons for simplicity; replace with a Syncfusion Toolbar for a richer UI if desired.
```html
@@ -46,7 +46,7 @@ Add buttons for the tools you want to expose. You can use plain buttons or Syncf
Step 3: Import and inject modules
-Make sure the Annotation module is injected. If you also want text selection/search, include those as needed.
+Ensure the `Annotation` module is injected. Include text selection and search modules if those capabilities are required.
```js
var PdfViewer = ej.pdfviewer.PdfViewer;
@@ -96,9 +96,9 @@ function bindAnnoTools() {
bindAnnoTools();
```
-## Custom Tools Using Syncfusion Toolbar for a richer UI
+## Custom tools using Syncfusion Toolbar for a richer UI
-You can replace the plain buttons with Syncfusion EJ2 Toolbar items and icons similar to the custom toolbar sample. Here is a compact example showing a few common tools. Add the Toolbar package (@syncfusion/ej2-navigations) and wire each item’s click to setAnnotationMode.
+Replace the plain buttons with Syncfusion EJ2 Toolbar items and icons for a richer UI. The compact example below shows common tools. Add the Toolbar package `@syncfusion/ej2-navigations` and wire each item’s click handler to `setAnnotationMode`.
```js
// Add built-in icon classes via EJ2 CSS (match your version), for example:
@@ -156,10 +156,10 @@ var annoToolbar = new Tool({
annoToolbar.appendTo('#annotationToolbar');
```
-Notes
+Note
-- setAnnotationMode accepts the annotation type name. Common values include: Highlight, Underline, Strikethrough, StickyNotes, FreeText, Ink, Rectangle, Circle, Line, Arrow, Polygon, Polyline, Distance, Perimeter, Area, Radius, and None to exit.
-- You can predefine default annotation styles using the corresponding settings properties (for example, areaSettings as shown in the Area annotation topic).
+- `setAnnotationMode` accepts the annotation type name. Common values include: `Highlight`, `Underline`, `Strikethrough`, `StickyNotes`, `FreeText`, `Ink`, `Rectangle`, `Circle`, `Line`, `Arrow`, `Polygon`, `Polyline`, `Distance`, `Perimeter`, `Area`, `Radius`, and `None` to exit.
+- Default annotation styles can be predefined using the corresponding settings properties (for example, `areaSettings`).
- To combine with a fully custom viewer toolbar, see Custom Toolbar in JavaScript PDF Viewer.
[View Sample on GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples/tree/master)
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/customize-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/customize-annotation.md
index 39388b8d90..45b81cad2d 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/customize-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/customize-annotation.md
@@ -10,42 +10,43 @@ domainurl: ##DomainURL##
# Customize annotations
-You can customize annotation color, stroke color, thickness, opacity, and other properties using the built‑in UI or via code. This page summarizes common customization patterns and shows how to set defaults per annotation type.
+Annotation appearance and behavior (for example color, stroke color, thickness, and opacity) can be customized using the built‑in UI or programmatically. This page summarizes common customization patterns and shows how to set defaults per annotation type.
## Customize via UI
Use the annotation toolbar after selecting an annotation:
-- Edit Color: changes the annotation fill/text color
+
+- Edit color: change the annotation fill or text color.

-- Edit Stroke Color: changes border/line color (shapes and lines)
+- Edit stroke color: change the border or line color for shapes and line types.

-- Edit Thickness: adjusts border/line thickness
+- Edit thickness: adjust the border or line thickness.

-- Edit Opacity: adjusts transparency
+- Edit opacity: change annotation transparency.

-Type‑specific options (for example, Line Properties) are available from the context menu (right‑click > Properties) where supported.
+Type‑specific options (for example, Line properties) are available from the context menu (right‑click > Properties) where supported.
## Set default properties during initialization
-You can set defaults for specific annotation types when creating the PdfViewer instance. You can set author, subject, color, opacity using Annotation Settings. Below are examples using settings already used in the annotation type pages.
+Set defaults for specific annotation types when creating the `PdfViewer` instance. Configure properties such as author, subject, color, and opacity using annotation settings. The examples below reference settings used on the annotation type pages.
-TextMarkup Annotations:
+Text markup annotations:
-- Highlight : Set default properties before creating the control using [`highlightSettings`](./annotation-types/highlight-annotation/#set-default-properties-during-control-initialization)
+- Highlight: Set default properties before creating the control using [`highlightSettings`](./annotation-types/highlight-annotation/#set-default-properties-during-control-initialization)
- Strikethrough: Use [`strikethroughSettings`](./annotation-types/strikethrough-annotation/#default-strikethrough-settings-during-initialization)
- Underline: Use [`underlineSettings`](./annotation-types/underline-annotation/#default-underline-settings-during-initialization)
- Squiggly: Use [`squigglySettings`](./annotation-types/Squiggly-annotation/#set-default-properties-during-control-initialization)
-Shape Annotations:
+Shape annotations:
- Line: Use [`lineSettings`](./annotation-types/line-annotation/#default-line-settings-during-initialization)
- Arrow: Use [`arrowSettings`](./annotation-types/arrow-annotation/#default-arrow-settings-during-initialization)
- Rectangle: Use [`rectangleSettings`](./annotation-types/rectangle-annotation/#default-rectangle-settings-during-initialization)
-- Circle : Use [`circleSettings`](./annotation-types/circle-annotation/#default-circle-settings-during-initialization)
+- Circle: Use [`circleSettings`](./annotation-types/circle-annotation/#default-circle-settings-during-initialization)
- Polygon: Use [`polygonSettings`](./annotation-types/polygon-annotation/#default-polygon-settings-during-initialization)
-Measurement Annotations:
+Measurement annotations:
- Distance: Use [`distanceSettings`](./annotation-types/distance-annotation/#default-distance-settings-during-initialization)
- Perimeter: Use [`perimeterSettings`](./annotation-types/perimeter-annotation/#default-perimeter-settings-during-initialization)
@@ -53,13 +54,13 @@ Measurement Annotations:
- Radius: Use [`radiusSettings`](./annotation-types/radius-annotation/#default-radius-settings-during-initialization)
- Volume: Use [`volumeSettings`](./annotation-types/volume-annotation/#default-volume-settings-during-initialization)
-Other Annotations:
+Other annotations:
- Redaction: Use [`redactionSettings`](./annotation-types/redaction-annotation/#default-redaction-settings-during-initialization)
-- Free Text: Use [`freeTextSettings`](./annotation-types/free-text-annotation/#default-free-text-settings-during-initialization)
-- Ink (Freehand): Use [`inkAnnotationSettings`](./annotation-types/ink-annotation/#default-ink-settings-during-initialization)
+- Free text: Use [`freeTextSettings`](./annotation-types/free-text-annotation/#default-free-text-settings-during-initialization)
+- Ink (freehand): Use [`inkAnnotationSettings`](./annotation-types/ink-annotation/#default-ink-settings-during-initialization)
- Stamp: Use [`stampSettings`](./annotation-types/stamp-annotation/#default-stamp-settings-during-initialization)
-- Sticky Notes: Use [`stickyNotesSettings`](./annotation-types/sticky-notes-annotation/#default-sticky-notes-settings-during-initialization)
+- Sticky notes: Use [`stickyNotesSettings`](./annotation-types/sticky-notes-annotation/#default-sticky-notes-settings-during-initialization)
Set defaults for specific annotation types when creating the PdfViewer instance. Below are examples using settings already used in the annotation type pages.
@@ -153,7 +154,7 @@ pdfviewer.appendTo('#PdfViewer');
{% endhighlight %}
{% endtabs %}
-N> After changing defaults using UI tools (Edit Color, Edit Opacity, etc.), the values will reflect the latest selection for subsequent annotations in the same session.
+N> After changing defaults using UI tools (for example, Edit color or Edit opacity), the updated values apply to subsequent annotations within the same session.
## Customize programmatically at runtime
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/delete-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/delete-annotation.md
index e5bbf5922a..0c8b0b6083 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/delete-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/delete-annotation.md
@@ -10,20 +10,21 @@ domainurl: ##DomainURL##
# Remove annotations
-You can remove annotations using the built-in UI or programmatically. This page shows the common ways to delete annotations in the viewer.
+Annotations can be removed using the built-in UI or programmatically. This page shows common methods to delete annotations in the viewer.
## Delete via UI
-You can delete a selected annotation in three ways:
-- Context menu: Right-click the annotation and choose Delete.
+A selected annotation can be deleted in three ways:
+
+- Context menu: right-click the annotation and choose Delete.

-- Secondary toolbar: Select the annotation and click the Delete button on the annotation toolbar.
+- Annotation toolbar: select the annotation and click the Delete button on the annotation toolbar.

-- Keyboard: Select the annotation and press the `Delete` key.
+- Keyboard: select the annotation and press the `Delete` key.
## Delete programmatically
-You can delete the currently selected annotation, or delete a specific annotation by its id.
+Annotations can be deleted programmatically either by removing the currently selected annotation or by specifying an annotation id.
```html
This PDF file is protected. Please enter the password to open it.
+
AddUnderlineToastMessage
+
Drag over a text to underline it
-
-
Copy
-
Copy
+
+
AddYourComment
+
Add comment
-
Highlight
-
Highlight
+
Annotations
+
Annotations
-
Save
-
Save
+
Apply
+
Apply
-
Squiggly
-
Squiggly
+
ApplyRedactionsConfirmation
+
You are about to permanently remove all content that has been marked for redaction. Once the document is saved, this operation cannot be undone. Are you sure you want to continue?
-
Strikeout
-
Strikeout
+
Arrow
+
Arrow
-
Underline
-
Underline
+
Back
+
Back
-
StickyNoteEditorPlaceholder
-
Write Your Note...
+
Bookmarks
+
Bookmarks
-
FreeTextEditorPlaceHolder
-
Text...
+
Border
+
Border
-
AddFreeTextToastMessage
-
Tap on the page to add the free text annotation
+
Cancel
+
Cancel
-
Draw your signature
-
Draw your signature
+
CanOpenWebPage
+
Do you want to open
-
Color
-
Color
+
Circle
+
Circle
Clear
Clear
-
Add Signature
-
Add Signature
-
-
-
Draw
-
Draw
-
-
-
Type
-
Type
-
-
-
Upload
-
Upload
-
-
-
Type your signature
-
Type your signature
-
-
-
Signature
-
Signature
-
-
-
Create
-
Create
-
-
-
Insert
-
Insert
-
-
-
Upload an image
-
Upload an image
-
-
-
Drag and drop an image here
-
Drag and drop an image here
-
-
-
AddHighlightToastMessage
-
Drag over a text to highlight it
+
Close
+
CLOSE
-
AddSignature
-
Add signature
+
Cloud
+
Cloud
-
AddSignatureToastMessage
-
Tap to add the signature
+
Color
+
Color
-
AddSquigglyToastMessage
-
Drag over a text to add a squiggly underline
+
ColorPicker
+
Color picker
-
AddStampToastMessage
-
Tap to add the stamp
+
Comment
+
Comment
-
-
AddStickyNoteToastMessage
-
Tap to add a sticky note
+
+
Comments
+
Comments
-
AddStrikeoutToastMessage
-
Drag over a text to strike it through
+
ContinuousPage
+
Continuous page
-
AddUnderlineToastMessage
-
Drag over a text to underline it
+
Copy
+
Copy
-
Apply
-
Apply
+
Create
+
Create
-
Annotations
-
Annotations
+
CreateSignature
+
Create Signature
-
Arrow
-
Arrow
+
CreateStamps
+
Create Stamps
-
-
Border
-
Border
+
+
CurrentPage
+
Current page
-
Circle
-
Circle
+
CustomStamps
+
Custom Stamps
-
Cloud
-
Cloud
+
CustomText
+
Custom text
-
ColorPicker
-
Color picker
+
Delete
+
Delete
-
Comment
-
Comment
+
DocumentLoadFailed
+
Failed to load the PDF document.
-
ContinuousPage
-
Continuous page
+
Drag and drop an image here
+
Drag and drop an image here
-
CreateStamps
-
Create Stamps
+
DragAndDropImage
+
Drag and drop an image here.
-
Delete
-
Delete
+
Draw
+
Draw
-
DragAndDropImage
-
Drag and drop an image here.
+
Draw your signature
+
Draw your signature
DrawArrowToastMessage
@@ -359,14 +315,46 @@ The following table contains the default name and value details used in the SfPd
DrawSquareToastMessage
Drag to draw a square
+
+
Edit
+
Edit
+
+
+
EditYourComment
+
Edit comment
+
+
+
Enter
+
Enter
+
+
+
EnterPassword
+
Enter Password
+
EraseInkToastMessage
Drag over an ink to erase it
+
Error
+
Error
+
+
+
EvenPagesOnly
+
Even pages only
+
+
Fill
Fill
+
+
FillColor
+
Fill color
+
+
+
FillOpacity
+
Fill opacity
+
FitToPage
Fit to Page
@@ -376,6 +364,14 @@ The following table contains the default name and value details used in the SfPd
Fit to Width
+
Font
+
Font
+
+
+
FontColor
+
Font color
+
+
FontSize
Font size
@@ -388,10 +384,22 @@ The following table contains the default name and value details used in the SfPd
Text…
+
GoToPage
+
Go to Page
+
+
+
GuestUser
+
Guest User
+
+
Help
Help
+
Highlight
+
Highlight
+
+
Ink
Ink
@@ -400,10 +408,18 @@ The following table contains the default name and value details used in the SfPd
Ink eraser
+
Insert
+
Insert
+
+
InvalidPageNumber
Invalid page number
+
InvalidPasswordError
+
Can't open an encrypted document. The password is invalid.
+
+
Key
Key
@@ -412,10 +428,22 @@ The following table contains the default name and value details used in the SfPd
Line
+
MarkForRedaction
+
Mark for Redaction
+
+
+
MarkPageRange
+
Mark page range
+
+
MatchCase
Match Case
+
MoreItems
+
More items
+
+
NewParagraph
New Paragraph
@@ -423,6 +451,10 @@ The following table contains the default name and value details used in the SfPd
NextPage
Next page
+
+
NoBookmark
+
No Bookmark
+
NoBookmarks
No Bookmarks
@@ -431,6 +463,10 @@ The following table contains the default name and value details used in the SfPd
NoColor
No Color
+
+
NoComments
+
No Comments available
+
NoMatchesWereFoundToastMessage
No matches were found.
@@ -440,14 +476,50 @@ The following table contains the default name and value details used in the SfPd
No more matches were found
+
NoOutline
+
No outline
+
+
Note
Note
+
+
OddPagesOnly
+
Odd pages only
+
+
+
of
+
of
+
+
+
Ok
+
OK
+
Opacity
Opacity
+
Open
+
OPEN
+
+
+
OpenWebPage
+
Open Web Page
+
+
+
Outline
+
Outline
+
+
+
OutlineColor
+
Outline color
+
+
+
Page
+
Page
+
+
PageByPage
Page by page
@@ -468,10 +540,18 @@ The following table contains the default name and value details used in the SfPd
Enter page number here
+
PageRange
+
Page range
+
+
Paragraph
Paragraph
+
PasswordErrorHint
+
Check your password
+
+
Polygon
Polygon
@@ -488,100 +568,120 @@ The following table contains the default name and value details used in the SfPd
Print
-
Redo
-
Redo
+
Properties
+
Properties
-
Rename
-
Rename
+
RedactArea
+
Redact area
+
+
+
RedactedAreaFillColor
+
Redacted area fill color
+
+
+
RedactionMarkAppearance
+
Redaction mark appearance
+
+
+
RedactionProperties
+
Redaction properties
-
Search
-
Search
+
RedactPages
+
Redact pages
-
Shapes
-
Shapes
+
RedactText
+
Redact text
-
Square
-
Square
+
Redo
+
Redo
-
Stamps
-
Stamps
+
Rename
+
Rename
-
StickyNote
-
Sticky note
+
RepeatOverlayText
+
Repeat overlay text
-
StickyNoteIcons
-
Sticky note icons
+
Replies
+
Replies
-
Stroke
-
Stroke
+
RequestPassword
+
This PDF file is protected. Please enter the password to open it.
+
+
+
Save
+
Save
SaveSignature
Save Signature
+
Search
+
Search
+
+
SearchPlaceholder
Find in the document
-
Text
-
Text
+
Shapes
+
Shapes
-
TextMarkups
-
Text markups
+
Signature
+
Signature
-
-
Thickness
-
Thickness
+
+
SpecificPage
+
Specific page
-
TypeSignaturePlaceHolder
-
Type your signature
+
Square
+
Square
-
Undo
-
Undo
+
Squiggly
+
Squiggly
-
UploadImage
-
Upload an image
+
Stamps
+
Stamps
-
ZoomMode
-
Zoom mode
+
StandardStamps
+
Standard Stamps
-
CustomStamps
-
Custom Stamps
+
StickyNote
+
Sticky note
-
Enter
-
Enter
+
StickyNoteEditorPlaceholder
+
Write Your Note...
-
StandardStamps
-
Standard Stamps
+
StickyNoteIcons
+
Sticky note icons
-
AddBookmark
-
Add bookmark
+
Strikeout
+
Strikeout
-
Back
-
Back
+
Stroke
+
Stroke
-
MoreItems
-
More items
+
Text
+
Text
TextColor
@@ -592,27 +692,60 @@ The following table contains the default name and value details used in the SfPd
Text fill color
-
Bookmarks
-
Bookmarks
+
TextMarkups
+
Text markups
-
of
-
of
+
Thickness
+
Thickness
-
GoToPage
-
Go to Page
+
Type
+
Type
-
CreateSignature
-
Create Signature
+
Type your signature
+
Type your signature
+
+
+
TypeSignaturePlaceHolder
+
Type your signature
+
+
+
Underline
+
Underline
+
+
+
Undo
+
Undo
+
+
+
Upload
+
Upload
+
+
+
Upload an image
+
Upload an image
+
+
+
UploadImage
+
Upload an image
+
+
+
UseOverlayText
+
Use overlay text
XFAFormNotSupportedMessage
This PDF cannot be loaded because it contains an XFA form.
-
InvalidPasswordError
-
Can't open an encrypted document. The password is invalid.
+
ZoomMode
+
Zoom mode
+
+
+## See Also
+- [Right To Left](../right-to-left)
+- [Getting Started](../getting-started)
diff --git a/Document-Processing/PDF/PDF-Viewer/maui/Lock-Unlock.md b/Document-Processing/PDF/PDF-Viewer/maui/Lock-Unlock.md
index d7938bf4bc..377605ff14 100644
--- a/Document-Processing/PDF/PDF-Viewer/maui/Lock-Unlock.md
+++ b/Document-Processing/PDF/PDF-Viewer/maui/Lock-Unlock.md
@@ -1,7 +1,7 @@
---
layout: post
title: Locking and Unlocking annotations in .NET MAUI PDF Viewer | Syncfusion
-description: Learn here all about locking and unlocking annotations using Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control.
+description: Learn how to lock and unlock annotations using the Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control.
platform: document-processing
control: SfPdfViewer
documentation: ug
@@ -91,3 +91,8 @@ void LockSelectedAnnotation(Annotation selectedAnnotation)
{% endtabs %}
* Similarly, to unlock the selected annotation, set the [IsLocked](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.Annotation.html#Syncfusion_Maui_PdfViewer_Annotation_IsLocked) property value to `false`.
+
+## See Also
+- [Annotations Overview](../annotations-overview)
+- [Select and Deselect Annotations](../select-deselect-annotations)
+- [Show and Hide Annotations](../show-hide)
diff --git a/Document-Processing/PDF/PDF-Viewer/maui/Magnification.md b/Document-Processing/PDF/PDF-Viewer/maui/Magnification.md
index be219e0fb3..28657fe153 100644
--- a/Document-Processing/PDF/PDF-Viewer/maui/Magnification.md
+++ b/Document-Processing/PDF/PDF-Viewer/maui/Magnification.md
@@ -1,16 +1,16 @@
---
layout: post
-title: Magnification in .NET MAUI PDF Viewer control | Syncfusion
-description: Learn to use magnification in Syncfusion® .NET MAUI PDF Viewer including zoom factor control and zoom mode options.
+title: Magnification in .NET MAUI PDF Viewer | Syncfusion
+description: Learn how to control zoom factor and zoom modes in the Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control.
platform: document-processing
control: SfPdfViewer
documentation: ug
-keywords: .net maui pdf viewer, .net maui view pdf, pdf viewer in .net maui, .net maui open pdf, maui pdf viewer, maui pdf view.
+keywords: .net maui pdf viewer, .net maui view pdf, pdf viewer in .net maui, .net maui open pdf, maui pdf viewer, maui pdf view
---
-# Magnification .NET MAUI PDF Viewer (SfPdfViewer)
+# Magnification in .NET MAUI PDF Viewer (SfPdfViewer)
-The [SfPdfViewer](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html) control supports intuitive magnification features, allowing users to zoom in and out of PDF content using gestures or programmatic controls.
+Give users precise control over how PDF content is displayed — from pinch-to-zoom on touch screens to setting an exact zoom percentage in code. You can also lock the view to predefined zoom modes like *Fit to Page* or *Fit to Width* to optimize readability for different document types.
## Adjusting the Zoom Factor
@@ -57,10 +57,11 @@ You can download a sample project demonstrating magnification features [here](ht
The PDF Viewer supports the following zoom modes via the [ZoomMode](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.ZoomMode.html#fields) property:
-1. **Fit to Page** – Displays the entire page within the viewport.
-2. **Fit to Width** – Expands the page to fill the width of the viewer.
+1. **Default** – Restores the viewer to the last user-set zoom level. This is the initial mode when a document is loaded.
+2. **Fit to Page** – Displays the entire page within the viewport.
+3. **Fit to Width** – Expands the page to fill the width of the viewer.
-The default value is [ZoomMode.Default](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.ZoomMode.html#Syncfusion_Maui_PdfViewer_ZoomMode_Default)
+The default value is [ZoomMode.Default](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.ZoomMode.html#Syncfusion_Maui_PdfViewer_ZoomMode_Default).
### Zoom Mode via Built-In Toolbar
@@ -111,3 +112,48 @@ pdfViewer.ZoomMode = ZoomMode.FitToWidth;
{% endtabs %}
N> When the `ZoomFactor` is manually changed, the `ZoomMode` resets to `Default`. You can reapply the desired zoom mode afterward.
+
+## Maintain Zoom Level in Single Page View Mode
+
+In single-page view mode, the zoom level resets to default each time you navigate to a new page. To maintain a consistent zoom factor throughout the document, enable the PersistZoomOnPageChange property. This applies whether navigation is triggered by the built-in toolbar controls or programmatic APIs.
+The default value of `PersistZoomOnPageChange` is `False`.
+
+### Enable PersistZoomOnPageChange
+
+You can enable persistent zoom by setting the `PersistZoomOnPageChange` property to `True`. When enabled, the viewer preserves the numeric `ZoomFactor` when switching pages in `SinglePage` layout and applies that same zoom to the destination page. Refer to the following code example:
+
+{% tabs %}
+{% highlight xaml %}
+
+{% endhighlight %}
+
+{% highlight c# %}
+// Enable persistence and set an initial zoom
+PdfViewer.PageLayoutMode = PageLayoutMode.SinglePage;
+PdfViewer.PersistZoomOnPageChange = true;
+{% endhighlight %}
+{% endtabs %}
+
+### Disable PersistZoomOnPageChange
+
+Set `PersistZoomOnPageChange` to `False` to keep the viewer's default behavior. When disabled, navigating to a different page resets the viewer to the default zoom level unless you explicitly set a zoom after navigation. Refer to the following example:
+
+{% tabs %}
+{% highlight xaml %}
+
+{% endhighlight %}
+
+{% highlight c# %}
+// Disable persistence
+PdfViewer.PersistZoomOnPageChange = false;
+{% endhighlight %}
+{% endtabs %}
+
+## See Also
+- [Scrolling](../scrolling)
+- [Page Navigation](../page-navigation)
+- [Gesture Events](../gesture-events)
diff --git a/Document-Processing/PDF/PDF-Viewer/maui/Migration.md b/Document-Processing/PDF/PDF-Viewer/maui/Migration.md
index 71e7a851aa..301c1fa95e 100644
--- a/Document-Processing/PDF/PDF-Viewer/maui/Migration.md
+++ b/Document-Processing/PDF/PDF-Viewer/maui/Migration.md
@@ -1,16 +1,16 @@
---
layout: post
title: Migrate from Xamarin SfPdfViewer to .NET MAUI SfPdfViewer | Syncfusion
-description: Learn here all about migrating from Syncfusion® Xamarin SfPdfViewer to Syncfusion® .NET MAUI SfPdfViewer control and more.
+description: Learn how to migrate from the Syncfusion® Xamarin SfPdfViewer to the Syncfusion® .NET MAUI SfPdfViewer control.
platform: document-processing
control: SfPdfViewer
documentation: ug
-keywords: .net maui pdf viewer, .net maui view pdf, pdf viewer in .net maui, .net maui open pdf, maui pdf viewer, maui pdf view.
+keywords: .net maui pdf viewer, .net maui view pdf, pdf viewer in .net maui, .net maui open pdf, maui pdf viewer, maui pdf view
---
# Migrate from Xamarin.Forms SfPdfViewer to .NET MAUI SfPdfViewer
-To make migration from [Xamarin SfPdfViewer](https://www.syncfusion.com/xamarin-ui-controls/xamarin-pdf-viewer) to [.NET MAUI SfPdfViewer](https://www.syncfusion.com/maui-controls/maui-pdf-viewer) easier, we kept most of the APIs from Xamarin SfPdfViewer in MAUI SfPdfViewer. However, to maintain the consistency of API naming in MAUI SfPdfViewer, we renamed some of the APIs. The APIs that have been changed in MAUI SfPdfViewer from Xamarin SfPdfViewer are detailed as follows.
+To simplify migration from [Xamarin SfPdfViewer](https://www.syncfusion.com/xamarin-ui-controls/xamarin-pdf-viewer) to [.NET MAUI SfPdfViewer](https://www.syncfusion.com/maui-controls/maui-pdf-viewer), most APIs from Xamarin SfPdfViewer are retained in the MAUI SfPdfViewer. However, some APIs have been renamed to maintain consistency with MAUI API naming conventions. The APIs that have changed are listed below.
## Namespaces
@@ -587,3 +587,7 @@ For detailed implementation guidance, please refer to the following API document
Provides data for the {{'[AnnotationAdded](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html#Syncfusion_Maui_PdfViewer_SfPdfViewer_AnnotationAdded)'| markdownify}}, {{'[AnnotationSelected](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html#Syncfusion_Maui_PdfViewer_SfPdfViewer_AnnotationSelected)'| markdownify}}, {{'[AnnotationDeselected](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html#Syncfusion_Maui_PdfViewer_SfPdfViewer_AnnotationDeselected)'| markdownify}}, {{'[AnnotationEdited](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html#Syncfusion_Maui_PdfViewer_SfPdfViewer_AnnotationEdited)'| markdownify}}, {{'[AnnotationRemoved](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html#Syncfusion_Maui_PdfViewer_SfPdfViewer_AnnotationRemoved)'| markdownify}} events.
+
+## See Also
+- [Getting Started](../getting-started)
+- [Overview](../overview)
diff --git a/Document-Processing/PDF/PDF-Viewer/maui/Open-a-Document-From-Base64String.md b/Document-Processing/PDF/PDF-Viewer/maui/Open-a-Document-From-Base64String.md
index cb88f7f86d..7b545484ad 100644
--- a/Document-Processing/PDF/PDF-Viewer/maui/Open-a-Document-From-Base64String.md
+++ b/Document-Processing/PDF/PDF-Viewer/maui/Open-a-Document-From-Base64String.md
@@ -1,13 +1,14 @@
---
layout: post
-title: Open a PDF From Base64 string in MAUI PDF Viewer control | Syncfusion
-description: Learn here about opening a PDF document from the Base64 string in Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control.
+title: Open a PDF from a Base64 String in .NET MAUI PDF Viewer | Syncfusion
+description: Learn how to open a PDF document from a Base64 string in the Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control.
platform: document-processing
control: SfPdfViewer
documentation: ug
+keywords: .net maui pdf viewer, .net maui view pdf, pdf viewer in .net maui, .net maui open pdf, maui pdf viewer, maui pdf view
---
-# Open a Document from base64 string in .NET MAUI PDF Viewer (SfPdfViewer)
+# Open a Document from a Base64 String in .NET MAUI PDF Viewer (SfPdfViewer)
A PDF document can be opened in the [SfPdfViewer](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html) from a given Base64 string by converting it to a byte[] and assigning it to the [DocumentSource](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html#Syncfusion_Maui_PdfViewer_SfPdfViewer_DocumentSource) property.
@@ -83,3 +84,8 @@ namespace PdfViewerExample
{% endtabs %}
The example project to open a PDF document from a Base64 string can be downloaded [here](https://github.com/SyncfusionExamples/maui-pdf-viewer-examples/tree/master/Open%20PDF%20From%20Base-64%20String).
+
+## See Also
+- [Open a Document](../open-a-document)
+- [Open from URL](../open-a-document-from-url)
+- [Open from Local Storage](../open-a-document-from-local-storage)
diff --git a/Document-Processing/PDF/PDF-Viewer/maui/Open-a-Document-From-Local-Storage.md b/Document-Processing/PDF/PDF-Viewer/maui/Open-a-Document-From-Local-Storage.md
index 918a7a4b97..58d1756f85 100644
--- a/Document-Processing/PDF/PDF-Viewer/maui/Open-a-Document-From-Local-Storage.md
+++ b/Document-Processing/PDF/PDF-Viewer/maui/Open-a-Document-From-Local-Storage.md
@@ -1,10 +1,11 @@
---
layout: post
title: Open a PDF From Local Storage in .NET MAUI PDF Viewer | Syncfusion
-description: Learn here about opening a PDF document from local storage in Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control.
+description: Learn how to open a PDF document from local storage in the Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control.
platform: document-processing
control: SfPdfViewer
documentation: ug
+keywords: .net maui pdf viewer, .net maui view pdf, pdf viewer in .net maui, .net maui open pdf, maui pdf viewer, maui pdf view
---
# Open a PDF from Local Storage in .NET MAUI PDF Viewer (SfPdfViewer)
@@ -168,3 +169,8 @@ namespace OpenLocalFile
{% endtabs %}
The example project to open a PDF document from local storage using `File Picker` can be downloaded [here](https://github.com/SyncfusionExamples/maui-pdf-viewer-examples).
+
+## See Also
+- [Open a Document](../open-a-document)
+- [Open from URL](../open-a-document-from-url)
+- [Document Load Notifications](../documentloadnotifications)
diff --git a/Document-Processing/PDF/PDF-Viewer/maui/Open-a-Document-From-URL.md b/Document-Processing/PDF/PDF-Viewer/maui/Open-a-Document-From-URL.md
index 5589c258f5..612a2904bc 100644
--- a/Document-Processing/PDF/PDF-Viewer/maui/Open-a-Document-From-URL.md
+++ b/Document-Processing/PDF/PDF-Viewer/maui/Open-a-Document-From-URL.md
@@ -1,10 +1,11 @@
---
layout: post
-title: Open a Document From URL in .NET MAUI PDF Viewer control | Syncfusion
-description: Learn here about opening a PDF document from the URL in Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control.
+title: Open a Document from URL in .NET MAUI PDF Viewer | Syncfusion
+description: Learn how to open a PDF document from a URL in the Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control.
platform: document-processing
control: SfPdfViewer
documentation: ug
+keywords: .net maui pdf viewer, .net maui view pdf, pdf viewer in .net maui, .net maui open pdf, maui pdf viewer, maui pdf view
---
# Open a Document from URL in .NET MAUI PDF Viewer (SfPdfViewer)
@@ -78,3 +79,8 @@ namespace PdfViewerExample
{% endtabs %}
The example project to open a PDF document from a given URL can be downloaded [here](https://github.com/SyncfusionExamples/maui-pdf-viewer-examples).
+
+## See Also
+- [Open a Document](../open-a-document)
+- [Open from Base64](../open-a-document-from-base64string)
+- [Document Load Notifications](../documentloadnotifications)
diff --git a/Document-Processing/PDF/PDF-Viewer/maui/Open-a-Document.md b/Document-Processing/PDF/PDF-Viewer/maui/Open-a-Document.md
index e2941fc2cb..17d63216af 100644
--- a/Document-Processing/PDF/PDF-Viewer/maui/Open-a-Document.md
+++ b/Document-Processing/PDF/PDF-Viewer/maui/Open-a-Document.md
@@ -1,17 +1,29 @@
---
layout: post
-title: Open a Document in .NET MAUI PDF Viewer control | Syncfusion
-description: Learn here all about opening a PDF document in Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control and more.
+title: Open a Document in .NET MAUI PDF Viewer | Syncfusion
+description: Learn how to open a PDF document in the Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control from various sources.
platform: document-processing
control: SfPdfViewer
documentation: ug
+keywords: .net maui pdf viewer, .net maui view pdf, pdf viewer in .net maui, .net maui open pdf, maui pdf viewer, maui pdf view
---
# Open a Document in .NET MAUI PDF Viewer (SfPdfViewer)
-The [SfPdfViewer](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html) allows you to open PDF documents from various sources, like local storage or URLs. It also lets you view password-protected documents.
+The [SfPdfViewer](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html) allows you to open PDF documents from various sources, such as local storage or URLs. It also supports viewing password-protected documents.
-This section walks you through the loading and unloading of documents in [SfPdfViewer](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html) and handling the load-specific events.
+This section walks you through loading and unloading documents in the [SfPdfViewer](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html) and handling load-specific events.
+
+## In This Section
+
+| Topic | Description |
+|---|---|
+| [Open a Document](https://help.syncfusion.com/maui/pdf-viewer/open-a-document) | Load from a stream or byte array, unload documents, and handle loading events. |
+| [Open from a URL](https://help.syncfusion.com/maui/pdf-viewer/open-a-document-from-url) | Download and display a PDF directly from a remote URL. |
+| [Open from Local Storage](https://help.syncfusion.com/maui/pdf-viewer/open-a-document-from-local-storage) | Open a PDF from the device's file system using the file picker. |
+| [Open from Base64](https://help.syncfusion.com/maui/pdf-viewer/open-a-document-from-base64string) | Load a PDF encoded as a Base64 string. |
+| [Open a Password-Protected Document](https://help.syncfusion.com/maui/pdf-viewer/open-a-password-protected-document) | Display a password dialog and open encrypted PDF documents. |
+| [Document Load Notifications](https://help.syncfusion.com/maui/pdf-viewer/documentloadnotifications) | Subscribe to document and page load/unload events for custom logic. |
## Document and page loading indications
@@ -79,8 +91,30 @@ The .NET MAUI PDF Viewer does not currently support annotations comparable to Xa
N> * All the [LoadDocument](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html#Syncfusion_Maui_PdfViewer_SfPdfViewer_LoadDocument_System_IO_Stream_System_String_System_Nullable_Syncfusion_Maui_PdfViewer_FlattenOptions__) methods accept the flatten options parameter.
N> * Refer to this [section](https://help.syncfusion.com/maui/pdf-viewer/migration#upcoming-features) for the upcoming annotation features in the [SfPdfViewer](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html).
+## Optimizing document loading on Android
+
+When your application handles large images, complex graphics, or memory-intensive operations, the default heap size may not be sufficient, leading to performance issues or crashes. Enabling a larger heap allows the app to allocate more memory, ensuring smooth performance and preventing out-of-memory errors in such scenarios. You can enable this by adding the following highlighted attribute in your AndroidManifest.xml under the tag.
+
+{% tabs %}
+{% highlight xml hl_lines="4" %}
+
+
+
+ ...
+
+{% endhighlight %}
+{% endtabs %}
+
## Check other PDF opening options
* [Open a document from local storage](https://help.syncfusion.com/maui/pdf-viewer/open-a-document-from-local-storage)
* [Open a document from a URL](https://help.syncfusion.com/maui/pdf-viewer/open-a-document-from-url)
* [Open a password-protected document](https://help.syncfusion.com/maui/pdf-viewer/open-a-password-protected-document)
+
+## See Also
+- [Open from URL](../open-a-document-from-url)
+- [Open from Base64](../open-a-document-from-base64string)
+- [Open from Local Storage](../open-a-document-from-local-storage)
+- [Open a Password-Protected Document](../open-a-password-protected-document)
+- [Document Load Notifications](../documentloadnotifications)
diff --git a/Document-Processing/PDF/PDF-Viewer/maui/Open-a-Password-Protected-Document.md b/Document-Processing/PDF/PDF-Viewer/maui/Open-a-Password-Protected-Document.md
index 9c8f299b3f..b899873887 100644
--- a/Document-Processing/PDF/PDF-Viewer/maui/Open-a-Password-Protected-Document.md
+++ b/Document-Processing/PDF/PDF-Viewer/maui/Open-a-Password-Protected-Document.md
@@ -1,11 +1,11 @@
---
layout: post
title: Open a Password-Protected PDF in .NET MAUI PDF Viewer | Syncfusion
-description: Learn here about opening a password-protected document in Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control and more.
+description: Learn how to open a password-protected PDF document in the Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control.
platform: document-processing
control: SfPdfViewer
documentation: ug
-keywords : .net maui pdf viewer, .net maui view pdf, pdf viewer in .net maui, .net maui open pdf, maui pdf viewer, maui pdf view
+keywords: .net maui pdf viewer, .net maui view pdf, pdf viewer in .net maui, .net maui open pdf, maui pdf viewer, maui pdf view
---
# Open a Password-Protected PDF in .NET MAUI PDF Viewer (SfPdfViewer)
@@ -388,3 +388,7 @@ If the entered password is correct, the document will be loaded into the PDF Vie
## GitHub example
The example project to open a password-protected document with a customized password request view can be downloaded [here](https://github.com/SyncfusionExamples/maui-pdf-viewer-examples).
+
+## See Also
+- [Open a Document](../open-a-document)
+- [Document Load Notifications](../documentloadnotifications)
diff --git a/Document-Processing/PDF/PDF-Viewer/maui/Overview.md b/Document-Processing/PDF/PDF-Viewer/maui/Overview.md
index 85d21e8f8f..1386bede15 100644
--- a/Document-Processing/PDF/PDF-Viewer/maui/Overview.md
+++ b/Document-Processing/PDF/PDF-Viewer/maui/Overview.md
@@ -1,20 +1,39 @@
---
layout: post
-title: About .NET MAUI PDF Viewer control | Syncfusion
-description: Learn here all about introduction of Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control, its key features and more.
+title: Overview of .NET MAUI PDF Viewer control | Syncfusion
+description: Learn about the Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control, its key features, and the problems it solves.
platform: document-processing
control: SfPdfViewer
documentation: ug
-keywords : .net maui pdf viewer, .net maui view pdf, pdf viewer in .net maui, .net maui open pdf, maui pdf viewer, maui pdf view
+keywords: .net maui pdf viewer, .net maui view pdf, pdf viewer in .net maui, .net maui open pdf, maui pdf viewer, maui pdf view
---
# .NET MAUI PDF Viewer (SfPdfViewer) Overview
-The [.NET MAUI PDF Viewer](https://www.syncfusion.com/maui-controls/maui-pdf-viewer) control lets you view PDF documents seamlessly and efficiently. It has highly interactive and customizable features such as magnification, page navigation, text selection, text search, document link navigation, hyperlink navigation, outline view, form filling, and the ability to review PDF files with annotations.
+Build powerful PDF experiences into your .NET MAUI app with the [SfPdfViewer](https://www.syncfusion.com/maui-controls/maui-pdf-viewer) control. Whether you need to display documents for review, let users fill out forms, redact sensitive data, or annotate content — the PDF Viewer gives you a full-featured, cross-platform solution that works on Android, iOS, macOS, and Windows from a single codebase.
-**Key Features**
+## In This Section
-* **Virtual scrolling** - Easily scroll through the pages in the document fluently. The pages are rendered only when required to increase the loading and scrolling performance.
+| Topic | Description |
+|---|---|
+| [Getting Started](https://help.syncfusion.com/maui/pdf-viewer/getting-started) | Install the package, configure the handler, and load your first PDF document. |
+| [Open a Document](https://help.syncfusion.com/maui/pdf-viewer/open-a-document) | Load documents from streams, local storage, URLs, Base64 strings, or password-protected files. |
+| [Annotations Overview](https://help.syncfusion.com/maui/pdf-viewer/annotations-overview) | Add, edit, import, and export highlights, shapes, ink, stamps, sticky notes, and more. |
+| [Form Filling Overview](https://help.syncfusion.com/maui/pdf-viewer/form-filling-overview) | Fill, edit, import, and export PDF form fields including text boxes, checkboxes, and signatures. |
+| [Text Search](https://help.syncfusion.com/maui/pdf-viewer/text-search) | Search for text and navigate all occurrences in a document. |
+| [Save a Document](https://help.syncfusion.com/maui/pdf-viewer/save-a-document) | Save modified documents to a file stream, with optional annotation flattening. |
+| [Toolbar](https://help.syncfusion.com/maui/pdf-viewer/toolbar) | Reference guide to all built-in toolbar names and toolbar item names. |
+| [Toolbar Customization](https://help.syncfusion.com/maui/pdf-viewer/toolbar-customization) | Show, hide, add, remove, and reorder toolbar items. |
+| [UI Customization](https://help.syncfusion.com/maui/pdf-viewer/ui-customization) | Customize the appearance of the PDF Viewer control. |
+| [Redaction](https://help.syncfusion.com/maui/pdf-viewer/redaction) | Permanently remove sensitive content from PDF documents. |
+| [Electronic Signature](https://help.syncfusion.com/maui/pdf-viewer/signature) | Add handwritten, typed, or image-based signatures. |
+| [Keyboard Shortcuts](https://help.syncfusion.com/maui/pdf-viewer/keyboard-shortcuts) | Keyboard shortcuts available on desktop platforms. |
+| [Localization](https://help.syncfusion.com/maui/pdf-viewer/localization) | Translate all built-in strings into any supported language. |
+| [Migration Guide](https://help.syncfusion.com/maui/pdf-viewer/migration) | Migrate from Xamarin.Forms SfPdfViewer to .NET MAUI SfPdfViewer. |
+
+## Key Features
+
+* **Virtual scrolling** - Easily scroll through the pages in the document fluently. Pages are rendered only when required to improve loading and scrolling performance.
* **Magnification** - The content of a PDF document can be efficiently zoomed in and out by pinching or changing the zoom factor programmatically.
* **Zoom modes** - Improve document readability by adjusting magnification to suit your viewing needs. Use *Fit to Page* to display the entire page without scrolling, ideal for quick overviews. Choose *Fit to Width* for optimal reading of content with narrow columns, such as newspapers or multi-column layouts.
* **Page navigation** - Navigate to the desired pages instantly using the page navigation option programmatically or by dragging the scroll head in the UI.
@@ -41,3 +60,8 @@ The [.NET MAUI PDF Viewer](https://www.syncfusion.com/maui-controls/maui-pdf-vie
* **Print** - Print the PDF files.
* **Coordinates conversion** - Obtain the PDF page coordinates relative to the PDF Viewer’s client coordinates and vice versa. It also helps to obtain the scroll point relative to the PDF page coordinates and bring the given region into view.
* **Localization** - All static text within the PDF Viewer can be localized to any supported language.
+
+## See Also
+- [Getting Started](../getting-started)
+- [Annotations Overview](../annotations-overview)
+- [Form Filling Overview](../form-filling-overview)
diff --git a/Document-Processing/PDF/PDF-Viewer/maui/Page-Navigation.md b/Document-Processing/PDF/PDF-Viewer/maui/Page-Navigation.md
index a3cb75310f..211cee1f0b 100644
--- a/Document-Processing/PDF/PDF-Viewer/maui/Page-Navigation.md
+++ b/Document-Processing/PDF/PDF-Viewer/maui/Page-Navigation.md
@@ -1,10 +1,11 @@
---
layout: post
-title: Page Navigation in .NET MAUI PDF Viewer control | Syncfusion
-description: Learn here all about page navigation feature in Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control and more.
+title: Page Navigation in .NET MAUI PDF Viewer | Syncfusion
+description: Learn how to navigate pages in the Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control programmatically and through the UI.
platform: document-processing
control: SfPdfViewer
documentation: ug
+keywords: .net maui pdf viewer, .net maui view pdf, pdf viewer in .net maui, .net maui open pdf, maui pdf viewer, maui pdf view
---
# Page Navigation in .NET MAUI PDF Viewer (SfPdfViewer)
@@ -29,7 +30,7 @@ To enable the continuous page layout mode, you can call the following code in a
// Enable or activate the Continuous Page Layout mode.
void EnableContinuousPageLayoutMode()
{
- // Set the PageLayout mode to Continuous using the `SfPdfViewer` instance.
+ // Set the PageLayoutMode to Continuous on the SfPdfViewer instance.
PdfViewer.PageLayoutMode = PageLayoutMode.Continuous;
}
@@ -47,7 +48,7 @@ To enable the single page layout mode, you can call the following code in a butt
// Enable or activate the Single Page Layout mode.
void EnableSinglePageLayoutMode()
{
- // Set the PageLayout mode to Single using the `SfPdfViewer` instance.
+ // Set the PageLayoutMode to Single on the SfPdfViewer instance.
PdfViewer.PageLayoutMode = PageLayoutMode.Single;
}
@@ -120,4 +121,10 @@ private void LastPageButton_Clicked(object sender, EventArgs e)
{% endhighlight %}
{% endtabs %}
-The example project with the page navigation functionalities can be downloaded [here](https://github.com/SyncfusionExamples/maui-pdf-viewer-examples).
\ No newline at end of file
+The example project with the page navigation functionalities can be downloaded [here](https://github.com/SyncfusionExamples/maui-pdf-viewer-examples).
+
+## See Also
+- [Scrolling](../scrolling)
+- [Document Link Annotations](../document-link-annotations)
+- [Document Outline](../document-outline)
+- [Hyperlink Navigation](../hyperlink-navigation)
diff --git a/Document-Processing/PDF/PDF-Viewer/maui/Print-a-Document.md b/Document-Processing/PDF/PDF-Viewer/maui/Print-a-Document.md
index 8b0a968a7f..85cc5bce15 100644
--- a/Document-Processing/PDF/PDF-Viewer/maui/Print-a-Document.md
+++ b/Document-Processing/PDF/PDF-Viewer/maui/Print-a-Document.md
@@ -1,7 +1,7 @@
---
layout: post
-title: Print a Document in .NET MAUI PDF Viewer Control | Syncfusion
-description: Learn here all about printing feature in Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control and more.
+title: Print a Document in .NET MAUI PDF Viewer | Syncfusion
+description: Learn how to print a PDF document using the Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control.
platform: document-processing
control: SfPdfViewer
documentation: ug
@@ -10,16 +10,19 @@ keywords: .net maui pdf viewer, .net maui view pdf, pdf viewer in .net maui, .ne
# Print a Document in .NET MAUI PDF Viewer (SfPdfViewer)
-The print feature of [SfPdfViewer](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html) allows you to effortlessly print PDF documents directly from your application code.
+Print PDFs directly from your app using the viewer's built-in print integration. This page shows how to trigger printing, provide optional print settings, and handle platform print dialogs so your users see familiar system UI.
-Moreover, when performing a print operation, the default device print dialog opens, providing users with familiar options and settings to customize their printing experience.
+N> Note: On some platforms the system print dialog controls options such as paper size and print quality — collect any user-specific print options in your UI and pass them to the print API where supported.
-To print a PDF programmatically, you can use the [PrintDocument](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html#Syncfusion_Maui_PdfViewer_SfPdfViewer_PrintDocument) method provided by [SfPdfViewer](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html).Refer to the following code example.
+To print a PDF programmatically, use the [PrintDocument](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html#Syncfusion_Maui_PdfViewer_SfPdfViewer_PrintDocument) method. For example, call it from a toolbar or a Print button's click handler.
{% tabs %}
-{% highlight c# %}
-// Prints the PDF document.
-PdfViewer.PrintDocument();
+{% highlight c# tabtitle="MainPage.xaml.cs" %}
+// Call from a Print button's Clicked handler.
+private void PrintButton_Clicked(object sender, EventArgs e)
+{
+ PdfViewer.PrintDocument();
+}
{% endhighlight %}
{% endtabs %}
@@ -57,3 +60,8 @@ N> The [PrintQuality](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfVie
## Limitations
Currently, when printing a document that contains sticky note annotations, the sticky note icon always appears as the default [comment](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.StickyNoteIcon.html#Syncfusion_Maui_PdfViewer_StickyNoteIcon_Comment) icon appearance in the printed document.
+
+## See Also
+- [Save a Document](../save-a-document)
+- [Annotations Overview](../annotations-overview)
+- [Form Filling Overview](../form-filling-overview)
diff --git a/Document-Processing/PDF/PDF-Viewer/maui/Redaction.md b/Document-Processing/PDF/PDF-Viewer/maui/Redaction.md
index 4c0ad34444..8982ee2654 100644
--- a/Document-Processing/PDF/PDF-Viewer/maui/Redaction.md
+++ b/Document-Processing/PDF/PDF-Viewer/maui/Redaction.md
@@ -1,7 +1,7 @@
---
layout: post
-title: Redaction in .NET MAUI PDF Viewer control | Syncfusion
-description: Learn here all about Redaction in Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control and its functionalities.
+title: Redaction in .NET MAUI PDF Viewer | Syncfusion
+description: Learn how to redact sensitive content in a PDF document using the Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control.
platform: document-processing
control: SfPdfViewer
documentation: ug
@@ -10,7 +10,7 @@ keywords: .net maui pdf viewer, .net maui view pdf, pdf viewer in .net maui, .ne
# Redaction in .NET MAUI PDF Viewer (SfPdfViewer)
-Redaction support of [SfPdfViewer](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html) allows you to conceal sensitive or confidential information in text and images within a PDF document. This ensures that private data, such as personal details or financial information, is securely hidden before sharing or publishing. Once redaction is applied and the document is resaved, the concealed content cannot be recovered.
+Before sharing a PDF externally, use redaction to permanently remove sensitive data — such as personal details, financial figures, or confidential text — from the document. Unlike simply covering content with a shape or annotation, redaction in [SfPdfViewer](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html) eliminates the underlying content entirely once the document is saved, making recovery impossible.
## Types of Redactions
@@ -170,4 +170,10 @@ void CustomizeDefaultRedactionSettings()
PdfViewer.RedactionSettings.IsRepeat = true; // Repeat overlay text across the redacted area.
}
{% endhighlight %}
-{% endtabs %}
\ No newline at end of file
+{% endtabs %}
+
+## See Also
+- [Save a Document](../save-a-document)
+- [Text Search](../text-search)
+- [Annotations Overview](../annotations-overview)
+- [Undo and Redo](../undo-redo)
diff --git a/Document-Processing/PDF/PDF-Viewer/maui/Right-To-Left.md b/Document-Processing/PDF/PDF-Viewer/maui/Right-To-Left.md
index f171a1b9a8..ea827ff4ac 100644
--- a/Document-Processing/PDF/PDF-Viewer/maui/Right-To-Left.md
+++ b/Document-Processing/PDF/PDF-Viewer/maui/Right-To-Left.md
@@ -1,14 +1,14 @@
---
layout: post
-title: Right to Left in .NET MAUI PDF Viewer control | Syncfusion
-description: Learn here all about the layouting Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control in right-to-left.
+title: Right-to-Left Layout in .NET MAUI PDF Viewer | Syncfusion
+description: Learn how to enable right-to-left layout in the Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control.
platform: document-processing
control: SfPdfViewer
documentation: ug
keywords: .net maui pdf viewer, .net maui view pdf, pdf viewer in .net maui, .net maui open pdf, maui pdf viewer, maui pdf view
---
-# Right to left in .NET MAUI PDF Viewer (SfPdfViewer)
+# Right-to-Left Layout in .NET MAUI PDF Viewer (SfPdfViewer)
By default, the [SfPdfViewer](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html) control is laid out in the left-to-right flow direction. For the convenience of right-to-left language users, it enables changing the flow direction to right-to-left (RTL). This can be achieved by setting the [FlowDirection](https://learn.microsoft.com/en-us/dotnet/api/microsoft.maui.iview.flowdirection?view=net-maui-7.0) property to `RightToLeft`.
Setting the [FlowDirection](https://learn.microsoft.com/en-us/dotnet/api/microsoft.maui.iview.flowdirection?view=net-maui-7.0) property to `RightToLeft` on the SfPdfViewer sets the alignment to the right, and layouts the built-in controls used in the SfPdfViewer to flow from right-to-left. Refer to the following code example to apply the same.
@@ -28,4 +28,8 @@ PdfViewer.FlowDirection = FlowDirection.RightToLeft;
{% endhighlight %}
{% endtabs %}
-N> Right-to-Left language users can also refer to this [section](https://help.syncfusion.com/maui/pdf-viewer/migration#upcoming-features) for information on how to localize the static text used in the PDF reader to other languages.
\ No newline at end of file
+N> Right-to-Left language users can also refer to this [section](https://help.syncfusion.com/maui/pdf-viewer/migration#upcoming-features) for information on how to localize the static text used in the PDF reader to other languages.
+
+## See Also
+- [Localization](../localization)
+- [Getting Started](../getting-started)
diff --git a/Document-Processing/PDF/PDF-Viewer/maui/Save-a-Document.md b/Document-Processing/PDF/PDF-Viewer/maui/Save-a-Document.md
index 12dfd23ac9..56636893ba 100644
--- a/Document-Processing/PDF/PDF-Viewer/maui/Save-a-Document.md
+++ b/Document-Processing/PDF/PDF-Viewer/maui/Save-a-Document.md
@@ -1,7 +1,7 @@
---
layout: post
-title: Save a Document in .NET MAUI PDF Viewer control | Syncfusion
-description: Learn here all about saving a PDF document in Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control to prevent the work from being lost.
+title: Save a Document in .NET MAUI PDF Viewer | Syncfusion
+description: Learn how to save a modified PDF document in the Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control.
platform: document-processing
control: SfPdfViewer
documentation: ug
@@ -10,25 +10,52 @@ keywords: .net maui pdf viewer, .net maui view pdf, pdf viewer in .net maui, .ne
# Save a Document in .NET MAUI PDF Viewer (SfPdfViewer)
-The [SfPdfViewer](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html) allows you to save a modified document to the specified file stream. It helps you to prevent your work from being lost. You need to provide the PDF file stream as a parameter to the [SaveDocument](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html#Syncfusion_Maui_PdfViewer_SfPdfViewer_SaveDocument_System_IO_Stream_) method of the [SfPdfViewer](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html). The modified document will be saved to the given file stream.
+After annotating, filling forms, or applying redactions, use the PDF Viewer's save methods to persist all changes back to a file stream. You can save synchronously with [SaveDocument](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html#Syncfusion_Maui_PdfViewer_SfPdfViewer_SaveDocument_System_IO_Stream_) or asynchronously with [SaveDocumentAsync](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html#Syncfusion_Maui_PdfViewer_SfPdfViewer_SaveDocumentAsync_System_IO_Stream_System_Threading_CancellationToken_) — and optionally flatten annotations or form fields into static content at the same time.
The following example explains how to save the modified document if the document needs to be saved in the application’s data directory.
{% tabs %}
{% highlight c# %}
+private void SaveButton_Clicked(object sender, EventArgs e)
+{
+ SaveDocument();
+}
+
private void SaveDocument()
{
- // Create a file stream to save the PDF document. Here, a file named "ModifiedDocument.pdf" is created in the application's data directory.
- string fileName = Path.Combine(FileSystem.Current.AppDataDirectory, "ModifiedDocument.pdf");
- using FileStream fileStream = File.Create(fileName);
-
- // Save the PDF document.
- PdfViewer.SaveDocument(fileStream);
+ // Create a file stream to save the PDF document.
+ // The file "ModifiedDocument.pdf" is written to the app's sandboxed data directory.
+ string fileName = Path.Combine(FileSystem.Current.AppDataDirectory, "ModifiedDocument.pdf");
+ using FileStream fileStream = File.Create(fileName);
+
+ // Save the PDF document to the stream.
+ PdfViewer.SaveDocument(fileStream);
}
{% endhighlight %}
{% endtabs %}
-To save a document asynchronously, you may use the [SaveDocumentAsync](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html#Syncfusion_Maui_PdfViewer_SfPdfViewer_SaveDocumentAsync_System_IO_Stream_System_Threading_CancellationToken_) method of the [SfPdfViewer](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html).
+## Save a document asynchronously
+
+To save a document without blocking the UI thread, use the [SaveDocumentAsync](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html#Syncfusion_Maui_PdfViewer_SfPdfViewer_SaveDocumentAsync_System_IO_Stream_System_Threading_CancellationToken_) method. This is the recommended approach for saving from event handlers or UI interactions. An optional [CancellationToken](https://learn.microsoft.com/en-us/dotnet/api/system.threading.cancellationtoken) can be passed to cancel the operation if needed.
+
+{% tabs %}
+{% highlight c# %}
+private async void SaveButton_Clicked(object sender, EventArgs e)
+{
+ await SaveDocumentAsync();
+}
+
+private async Task SaveDocumentAsync()
+{
+ // Create a file stream to save the PDF document asynchronously.
+ string fileName = Path.Combine(FileSystem.Current.AppDataDirectory, "ModifiedDocument.pdf");
+ using FileStream fileStream = File.Create(fileName);
+
+ // Save the PDF document without blocking the UI thread.
+ await PdfViewer.SaveDocumentAsync(fileStream);
+}
+{% endhighlight %}
+{% endtabs %}
## Flatten annotations and form fields on save
@@ -66,4 +93,11 @@ formField.FlattenOnSave = true;
### Limitation
-Currently, when saving a document by flattening that contains sticky note annotations, the sticky note icon always appears as the default [comment](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.StickyNoteIcon.html#Syncfusion_Maui_PdfViewer_StickyNoteIcon_Comment) icon appearance in the saved document.
\ No newline at end of file
+Currently, when saving a document by flattening that contains sticky note annotations, the sticky note icon always appears as the default [comment](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.StickyNoteIcon.html#Syncfusion_Maui_PdfViewer_StickyNoteIcon_Comment) icon appearance in the saved document.
+
+## See Also
+- [Annotations Overview](../annotations-overview)
+- [Form Filling Overview](../form-filling-overview)
+- [Import and Export Annotations](../import-export-annotations)
+- [Redaction](../redaction)
+- [Electronic Signature](../signature)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/maui/Scrolling.md b/Document-Processing/PDF/PDF-Viewer/maui/Scrolling.md
index 0f0d1aab99..9fdf65f3c4 100644
--- a/Document-Processing/PDF/PDF-Viewer/maui/Scrolling.md
+++ b/Document-Processing/PDF/PDF-Viewer/maui/Scrolling.md
@@ -5,11 +5,12 @@ description: Explore scrolling features in .NET MAUI PDF Viewer, including how t
platform: document-processing
control: SfPdfViewer
documentation: ug
+keywords: .net maui pdf viewer, .net maui view pdf, pdf viewer in .net maui, .net maui open pdf, maui pdf viewer, maui pdf view
---
# Scrolling in .NET MAUI PDF Viewer (SfPdfViewer)
-The .NET MAUI PDF Viewer provides built-in scrolling capabilities that allow users to navigate through PDF content smoothly. This guide covers how to control scroll positions programmatically, detect scroll changes, and manage scroll-related UI elements.
+Keep document navigation smooth and predictable by using the PDF Viewer's built-in scrolling features. This guide shows how to programmatically control scroll position, respond to scroll events, and implement performance-friendly patterns (for example, avoid nesting the viewer inside other scrollable containers).
W> Since the PDF Viewer includes built-in scrolling, avoid placing it inside other scrollable containers like [ScrollView](https://learn.microsoft.com/en-us/dotnet/maui/user-interface/controls/scrollview?view=net-maui-8.0), as this may lead to unexpected behavior.
@@ -164,4 +165,9 @@ PdfViewer.LoadDocument("sample.pdf");
{% endtabs %}
N> - Use a reasonable OverscanCount value. Large values can cause memory spikes and app freezes.
-N> - Pages with very high resolution may still render slowly due to native rendering limitations.
\ No newline at end of file
+N> - Pages with very high resolution may still render slowly due to native rendering limitations.
+
+## See Also
+- [Page Navigation](../page-navigation)
+- [Magnification](../magnification)
+- [Gesture Events](../gesture-events)
diff --git a/Document-Processing/PDF/PDF-Viewer/maui/Select-Deselect-Annotations.md b/Document-Processing/PDF/PDF-Viewer/maui/Select-Deselect-Annotations.md
index 7f004d27fc..cb9f57e77f 100644
--- a/Document-Processing/PDF/PDF-Viewer/maui/Select-Deselect-Annotations.md
+++ b/Document-Processing/PDF/PDF-Viewer/maui/Select-Deselect-Annotations.md
@@ -1,7 +1,7 @@
---
layout: post
title: Select and Deselect Annotations in .NET MAUI PDF Viewer | Syncfusion
-description: Learn here all about select and deselect annotations in PDF documents using the .NET MAUI PDF Viewer (SfPdfViewer) control and its settings customization.
+description: Learn how to select and deselect annotations in PDF documents using the Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control.
platform: document-processing
control: SfPdfViewer
documentation: ug
@@ -174,4 +174,9 @@ private void OnAnnotationDeselected(object sender, AnnotationEventArgs e)
// You can handle your logics here…
}
{% endhighlight %}
-{% endtabs %}
\ No newline at end of file
+{% endtabs %}
+
+## See Also
+- [Annotations Overview](../annotations-overview)
+- [Add, Remove, and Modify Annotations](../add-remove-modify-annotations)
+- [Lock and Unlock Annotations](../lock-unlock)
diff --git a/Document-Processing/PDF/PDF-Viewer/maui/Shapes.md b/Document-Processing/PDF/PDF-Viewer/maui/Shapes.md
index d10883d2ba..dae2a1400e 100644
--- a/Document-Processing/PDF/PDF-Viewer/maui/Shapes.md
+++ b/Document-Processing/PDF/PDF-Viewer/maui/Shapes.md
@@ -1,7 +1,7 @@
---
layout: post
-title: Shape Annotations in .NET MAUI PDF Viewer control | Syncfusion
-description: Learn here all about Shape Annotations in Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control and its types.
+title: Shape Annotations in .NET MAUI PDF Viewer | Syncfusion
+description: Learn how to add and manage shape annotations in the Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control.
platform: document-processing
control: SfPdfViewer
documentation: ug
@@ -270,3 +270,8 @@ void AddCloudAnnotation()
{% endhighlight %}
{% endtabs %}
+
+## See Also
+- [Annotations Overview](../annotations-overview)
+- [Add, Remove, and Modify Annotations](../add-remove-modify-annotations)
+- [Undo and Redo](../undo-redo)
diff --git a/Document-Processing/PDF/PDF-Viewer/maui/Show-Hide.md b/Document-Processing/PDF/PDF-Viewer/maui/Show-Hide.md
index 75eaefcf09..acd501b93e 100644
--- a/Document-Processing/PDF/PDF-Viewer/maui/Show-Hide.md
+++ b/Document-Processing/PDF/PDF-Viewer/maui/Show-Hide.md
@@ -1,13 +1,14 @@
---
layout: post
-title: Show and Hide annotations in .NET MAUI PDF Viewer | Syncfusion
-description: Learn here about showing and hiding annotations in a document in Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control and more.
+title: Show and Hide Annotations in .NET MAUI PDF Viewer | Syncfusion
+description: Learn how to show and hide annotations in the Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control.
platform: document-processing
control: SfPdfViewer
documentation: ug
keywords: .net maui pdf viewer, .net maui view pdf, pdf viewer in .net maui, .net maui open pdf, maui pdf viewer, maui pdf view
---
-# Show and Hide annotations in .NET MAUI PDF Viewer (SfPdfViewer)
+
+# Show and Hide Annotations in .NET MAUI PDF Viewer (SfPdfViewer)
You can manage the visibility of annotations using the `Hidden` property. It helps you to hide annotations containing confidential data when sharing documents externally or presenting documents, ensuring data privacy and security. Also, it makes it easier to read the documents that are cluttered with more annotations. Like other annotation properties, you can undo and redo the hiding or showing actions. Additionally, when an annotation is locked, it cannot be hidden. Annotations that are hidden will remain hidden during import, export, printing, and saving.
@@ -79,4 +80,9 @@ private void HideAnnotationButton_Clicked(object sender, EventArgs e)
* Similarly, to show the annotation, set the `Hidden` property value to `false`.
N> * On iOS and Mac, while printing a document containing hidden annotations, the hidden annotations will be visible in the print preview or the printed document.
-N> * When a document containing hidden annotations is loaded, it will not only disappear in the UI but also will not be added to the [SfPdfViewer.Annotations](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html#Syncfusion_Maui_PdfViewer_SfPdfViewer_Annotations) collection as well.
\ No newline at end of file
+N> * When a document containing hidden annotations is loaded, it will not only disappear in the UI but also will not be added to the [SfPdfViewer.Annotations](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html#Syncfusion_Maui_PdfViewer_SfPdfViewer_Annotations) collection as well.
+
+## See Also
+- [Annotations Overview](../annotations-overview)
+- [Lock and Unlock Annotations](../lock-unlock)
+- [Select and Deselect Annotations](../select-deselect-annotations)
diff --git a/Document-Processing/PDF/PDF-Viewer/maui/Signature.md b/Document-Processing/PDF/PDF-Viewer/maui/Signature.md
index 1ba0a152da..a68cc84b44 100644
--- a/Document-Processing/PDF/PDF-Viewer/maui/Signature.md
+++ b/Document-Processing/PDF/PDF-Viewer/maui/Signature.md
@@ -1,11 +1,11 @@
---
layout: post
-title: Electronic Signature in .NET MAUI PDF Viewer control | Syncfusion
-description: Learn here all about Electronic Signature in Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control and its types.
+title: Electronic Signature in .NET MAUI PDF Viewer | Syncfusion
+description: Learn how to add and manage electronic signatures in the Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control.
platform: document-processing
control: SfPdfViewer
documentation: ug
-keywords: .net maui pdf viewer, .net maui view pdf, pdf viewer in .net maui, .net maui open pdf, maui pdf viewer, maui pdf view.
+keywords: .net maui pdf viewer, .net maui view pdf, pdf viewer in .net maui, .net maui open pdf, maui pdf viewer, maui pdf view
---
# Electronic Signature in .NET MAUI PDF Viewer (SfPdfViewer)
@@ -54,7 +54,7 @@ Similarly, refer to the following code to disable the signature mode.
{% tabs %}
{% highlight c# %}
-// Disable or deactivate the ink drawing mode.
+// Disable or deactivate the signature mode.
void DisableSignatureMode()
{
// Set the annotation mode to none using the [SfPdfViewer](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html) instance.
@@ -223,3 +223,9 @@ private void PdfViewer_SignatureCreated(object? sender, SignatureCreatedEventArg
}
{% endhighlight %}
{% endtabs %}
+
+## See Also
+- [Electronic Signature (Form Field)](../form-filling-overview)
+- [Annotations Overview](../annotations-overview)
+- [Add, Remove, and Modify Annotations](../add-remove-modify-annotations)
+- [Save a Document](../save-a-document)
diff --git a/Document-Processing/PDF/PDF-Viewer/maui/Stamps.md b/Document-Processing/PDF/PDF-Viewer/maui/Stamps.md
index 156e269e4c..d6d066cb5e 100644
--- a/Document-Processing/PDF/PDF-Viewer/maui/Stamps.md
+++ b/Document-Processing/PDF/PDF-Viewer/maui/Stamps.md
@@ -1,11 +1,11 @@
---
layout: post
-title: Stamp Annotations in .NET MAUI PDF Viewer control | Syncfusion
-description: Learn here all about Stamp Annotations in Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control and its types.
+title: Stamp Annotations in .NET MAUI PDF Viewer | Syncfusion
+description: Learn how to add and manage stamp annotations in the Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control.
platform: document-processing
control: SfPdfViewer
documentation: ug
-keywords: .net maui pdf viewer, .net maui view pdf, pdf viewer in .net maui, .net maui open pdf, maui pdf viewer, maui pdf view.
+keywords: .net maui pdf viewer, .net maui view pdf, pdf viewer in .net maui, .net maui open pdf, maui pdf viewer, maui pdf view
---
# Stamp Annotations in .NET MAUI PDF Viewer (SfPdfViewer)
@@ -178,6 +178,55 @@ void EditSelectedStampAnnotation(Annotation selectedAnnotation)
N> Changing the color of a stamp annotation after it has been added to a PDF is not supported due to the predefined nature of standard stamps. These stamps use fixed colors to ensure consistency and convey distinct meanings. As a work around, you can create a [Custom stamp](https://help.syncfusion.com/maui/pdf-viewer/stamps#add-custom-stamps-using-the-toolbar) which allows users to design stamps with user-defined colors and text.
+## Access Custom Stamp Annotation Views
+
+The view associated with a custom stamp annotation can be accessed and modified using the `CustomStampView` API available on the `StampAnnotation` class. This allows developers to retrieve and update the MAUI `View` that was originally used to create the custom stamp.
+
+N> * `CustomStampView` is supported only for custom stamp annotations created from a MAUI `View`.
+N> * Standard (built-in) stamp annotations or stamps created from images/text do not expose a view and return `null` for `CustomStampView`.
+
+### Retrieve the custom stamp annotation view
+
+You can retrieve the view used to create a custom stamp annotation by accessing the `CustomStampView` property. This is useful for previewing the stamp, inspecting its contents, or applying programmatic visual changes. The following example demonstrates accessing the custom stamp view using the `AnnotationSelected` event:
+
+{% tabs %}
+{% highlight c# %}
+pdfViewer.AnnotationSelected += PdfViewer_AnnotationSelected;
+
+private void PdfViewer_AnnotationSelected(object? sender, AnnotationEventArgs e)
+{
+ if (e.Annotation != null && e.Annotation is StampAnnotation stamp)
+ {
+ // Retrieve the MAUI view that was used to create this custom stamp annotation.
+ View? stampView = stamp.CustomStampView;
+ }
+}
+{% endhighlight %}
+{% endtabs %}
+
+### Customize the custom stamp annotation view
+
+Once you obtain the custom stamp's view you can modify its content or styling. In the example below, the custom stamp was originally created from a `Button`, and its `Text` is updated when the annotation is selected.
+
+{% tabs %}
+{% highlight c# %}
+pdfViewer.AnnotationSelected += PdfViewer_AnnotationSelected;
+
+private void PdfViewer_AnnotationSelected_Customize(object? sender, AnnotationEventArgs e)
+{
+ if (e.Annotation != null && e.Annotation is StampAnnotation stamp)
+ {
+ if (stamp.CustomStampView is Button button)
+ {
+ // Modify the original view used for the custom stamp.
+ // In this example, update the button text dynamically.
+ button.Text = "Button Clicked";
+ }
+ }
+}
+{% endhighlight %}
+{% endtabs %}
+
## Custom stamp modal view
The custom stamp modal view appears when the user wants to create a custom stamp from a typed text. The [SfPdfViewer](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html) notifies when the modal view is appearing and disappearing through events. The events help you in hiding and showing elements that are part of the app UI that are not necessary as long as the modal view is visible.
@@ -259,3 +308,8 @@ private void PdfViewer_Tapped(object sender, GestureEventArgs e)
{% endhighlight %}
{% endtabs %}
+
+## See Also
+- [Annotations Overview](../annotations-overview)
+- [Add, Remove, and Modify Annotations](../add-remove-modify-annotations)
+- [Undo and Redo](../undo-redo)
diff --git a/Document-Processing/PDF/PDF-Viewer/maui/Sticky-Notes.md b/Document-Processing/PDF/PDF-Viewer/maui/Sticky-Notes.md
index e633d7ea60..cf7f4c68ea 100644
--- a/Document-Processing/PDF/PDF-Viewer/maui/Sticky-Notes.md
+++ b/Document-Processing/PDF/PDF-Viewer/maui/Sticky-Notes.md
@@ -1,14 +1,14 @@
---
layout: post
-title: Sticky Note Annotations in .NET MAUI PDF Viewer control | Syncfusion
-description: Learn here all about Sticky Note Annotations in Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control and its functionalities.
+title: Sticky Note Annotations in .NET MAUI PDF Viewer | Syncfusion
+description: Learn how to add and manage sticky note annotations in the Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control.
platform: document-processing
control: SfPdfViewer
documentation: ug
-keywords: .net maui pdf viewer, .net maui view pdf, pdf viewer in .net maui, .net maui open pdf, maui pdf viewer, maui pdf view.
+keywords: .net maui pdf viewer, .net maui view pdf, pdf viewer in .net maui, .net maui open pdf, maui pdf viewer, maui pdf view
---
-# Sticky Note Annotation in .NET MAUI PDF Viewer (SfPdfViewer)
+# Sticky Note Annotations in .NET MAUI PDF Viewer (SfPdfViewer)
The sticky note annotation feature of [SfPdfViewer](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html) allows you to add, remove, and modify sticky notes in a PDF document. This feature will help add comments or notes to specific parts of a document to clarify complex concepts, terms, or ideas. This section will cover the various functions available in [SfPdfViewer](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html) for working with sticky note annotations.
@@ -220,4 +220,9 @@ Private void customDialogOkButton_Clicked(object sender, EventArgs e)
{% endhighlight %}
{% endtabs %}
-N> For WinUI and MacCatalyst platforms, there is no separate modal view to receive text input from the users. As a result, the `StickyNoteModalViewAppearing` and `StickyNoteModalViewDisappearing` events are not applicable to these platforms.
\ No newline at end of file
+N> For WinUI and MacCatalyst platforms, there is no separate modal view to receive text input from the users. As a result, the `StickyNoteModalViewAppearing` and `StickyNoteModalViewDisappearing` events are not applicable to these platforms.
+
+## See Also
+- [Annotations Overview](../annotations-overview)
+- [Add, Remove, and Modify Annotations](../add-remove-modify-annotations)
+- [Annotation Comments](../annotations-comment)
diff --git a/Document-Processing/PDF/PDF-Viewer/maui/Text-Markups.md b/Document-Processing/PDF/PDF-Viewer/maui/Text-Markups.md
index 96107f7b84..afb198ad96 100644
--- a/Document-Processing/PDF/PDF-Viewer/maui/Text-Markups.md
+++ b/Document-Processing/PDF/PDF-Viewer/maui/Text-Markups.md
@@ -1,11 +1,11 @@
---
layout: post
-title: Text Markup Annotations in .NET MAUI PDF Viewer control | Syncfusion
-description: Learn here all about Text Markup Annotations in Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control and its types.
+title: Text Markup Annotations in .NET MAUI PDF Viewer | Syncfusion
+description: Learn how to add and manage text markup annotations in the Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control.
platform: document-processing
control: SfPdfViewer
documentation: ug
-keywords: .net maui pdf viewer, .net maui view pdf, pdf viewer in .net maui, .net maui open pdf, maui pdf viewer, maui pdf view.
+keywords: .net maui pdf viewer, .net maui view pdf, pdf viewer in .net maui, .net maui open pdf, maui pdf viewer, maui pdf view
---
# Text Markup Annotations in .NET MAUI PDF Viewer (SfPdfViewer)
@@ -156,4 +156,9 @@ void EditSelectedHighlightAnnotation(Annotation selectedAnnotation)
}
}
{% endhighlight %}
-{% endtabs %}
\ No newline at end of file
+{% endtabs %}
+
+## See Also
+- [Annotations Overview](../annotations-overview)
+- [Text Selection](../text-selection)
+- [Add, Remove, and Modify Annotations](../add-remove-modify-annotations)
diff --git a/Document-Processing/PDF/PDF-Viewer/maui/Text-Search.md b/Document-Processing/PDF/PDF-Viewer/maui/Text-Search.md
index d722d2d20d..7692d5d424 100644
--- a/Document-Processing/PDF/PDF-Viewer/maui/Text-Search.md
+++ b/Document-Processing/PDF/PDF-Viewer/maui/Text-Search.md
@@ -1,19 +1,24 @@
---
layout: post
-title: Text Search in .NET MAUI PDF Viewer control | Syncfusion
-description: Learn here all about searching a text in the PDF documents using Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer).
+title: Text Search in .NET MAUI PDF Viewer | Syncfusion
+description: Learn how to search for text in PDF documents using the Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control.
platform: document-processing
control: SfPdfViewer
documentation: ug
+keywords: .net maui pdf viewer, .net maui view pdf, pdf viewer in .net maui, .net maui open pdf, maui pdf viewer, maui pdf view
---
# Text Search in .NET MAUI PDF Viewer (SfPdfViewer)
-The [SfPdfViewer](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html) allows you to search for text in a PDF document and navigate to all its occurrences.
+Quickly locate any word or phrase in a PDF document and jump between every occurrence — forward, backward, or directly to a specific match. The PDF Viewer's built-in text search highlights all results in real time as it scans the document, and exposes a result object so you can display match counts or build a custom search UI.
+
+You can also watch the video tutorial below to learn about text search.
+
+
## Initiate a text search
-The [SearchTextAsync](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html#Syncfusion_Maui_PdfViewer_SfPdfViewer_SearchTextAsync_System_String_TextSearchOptions_System_Threading_CancellationTokenSource_) method asynchronously searches the specified text throughout the PDF document and highlights each occurrence (match). To start the search, you need to call the method in a button click by passing the text to be searched as a parameter, as shown in the following example:
+The [SearchTextAsync](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html#Syncfusion_Maui_PdfViewer_SfPdfViewer_SearchTextAsync_System_String_TextSearchOptions_System_Threading_CancellationTokenSource_) method asynchronously searches the specified text throughout the PDF document and highlights each occurrence (match). To start the search, call the method from a button click handler and pass the text to search as a parameter.
{% tabs %}
{% highlight C# hl_lines="8" %}
@@ -25,7 +30,7 @@ private void SearchButtonClicked(object sender, EventArgs e)
async void SearchText(string text)
{
- await PdfViewer.SearchTextAsync(text);
+ await PdfViewer.SearchTextAsync(text);
}
{% endhighlight %}
@@ -230,4 +235,9 @@ PdfViewer.TextSearchSettings.CurrentMatchHighlightColor = Color.FromRgba("#8F00F
PdfViewer.TextSearchSettings.OtherMatchesHighlightColor= Color.FromRgba("#00FF0043");
{% endhighlight %}
-{% endtabs %}
\ No newline at end of file
+{% endtabs %}
+
+## See Also
+- [Text Selection](../text-selection)
+- [Page Navigation](../page-navigation)
+- [Scrolling](../scrolling)
diff --git a/Document-Processing/PDF/PDF-Viewer/maui/Text-Selection.md b/Document-Processing/PDF/PDF-Viewer/maui/Text-Selection.md
index a6fb5ff0b6..f4e6551498 100644
--- a/Document-Processing/PDF/PDF-Viewer/maui/Text-Selection.md
+++ b/Document-Processing/PDF/PDF-Viewer/maui/Text-Selection.md
@@ -1,13 +1,14 @@
---
layout: post
-title: Select text from a PDF document using .NET MAUI PDF Viewer control | Syncfusion
-description: Learn here all about selecting text from PDF documents and copying it to the clipboard using Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer).
+title: Text Selection in .NET MAUI PDF Viewer | Syncfusion
+description: Learn how to select text from a PDF document and copy it to the clipboard using the Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control.
platform: document-processing
control: SfPdfViewer
documentation: ug
+keywords: .net maui pdf viewer, .net maui view pdf, pdf viewer in .net maui, .net maui open pdf, maui pdf viewer, maui pdf view
---
-# Selecting text from a PDF document in .NET MAUI PDF Viewer (SfPdfViewer)
+# Text Selection in .NET MAUI PDF Viewer (SfPdfViewer)
Using [SfPdfViewer](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html), you can select text from a PDF document and copy it to the clipboard. This process allows you to easily extract text from the PDF and paste it into other applications.
@@ -118,3 +119,8 @@ private void PdfViewer_TextSelectionChanged(object sender, TextSelectionChangedE
## Limitations
The text from the images cannot be selected and, the multiple-page text selection is not supported for now.
+
+## See Also
+- [Text Search](../text-search)
+- [Text Markups](../text-markups)
+- [Copy and Annotations from Selection](../add-remove-modify-annotations)
diff --git a/Document-Processing/PDF/PDF-Viewer/maui/Toolbar-Customization.md b/Document-Processing/PDF/PDF-Viewer/maui/Toolbar-Customization.md
new file mode 100644
index 0000000000..326bc80916
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/maui/Toolbar-Customization.md
@@ -0,0 +1,267 @@
+---
+layout: post
+title: Customize the Toolbar in .NET MAUI PDF Viewer | Syncfusion
+description: Learn how to show, hide, add, remove, and reorder toolbars and toolbar items in the Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control.
+platform: document-processing
+control: SfPdfViewer
+documentation: ug
+keywords: .net maui pdf viewer, customize toolbar, show hide toolbar, add toolbar item, remove toolbar item, maui pdf viewer toolbar
+---
+
+# Toolbar Customization in .NET MAUI PDF Viewer (SfPdfViewer)
+
+The [SfPdfViewer](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html) allows you to fully customize its built-in toolbars — including showing or hiding entire toolbars, and adding, removing, or reordering individual toolbar items. This flexibility lets you tailor the viewer's interface to match your application's workflow.
+
+For the list of toolbar names and toolbar item names, see [Toolbar](https://help.syncfusion.com/maui/pdf-viewer/toolbar).
+
+## Show and hide all toolbars
+
+The built-in toolbars are visible by default. In certain scenarios, you might want to hide all the toolbars in the PDF Viewer to display the document in full view or to use customized toolbars based on your application needs. You can do this by setting the [ShowToolbars](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html#Syncfusion_Maui_PdfViewer_SfPdfViewer_ShowToolbars) property to `false`. Set it back to `true` to restore the built-in toolbars.
+
+{% tabs %}
+{% highlight C# %}
+
+// Hide all toolbars
+public MainPage()
+{
+ SfPdfViewer pdfViewer = new SfPdfViewer();
+ pdfViewer.ShowToolbars = false;
+}
+
+{% endhighlight %}
+{% endtabs %}
+
+{% tabs %}
+{% highlight XAML %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+You can find the sample project from the [link provided here](https://github.com/SyncfusionExamples/maui-pdf-viewer-examples/tree/master/Toolbar%20customization/HideToolbars).
+
+## Show and hide specific toolbars
+
+Sometimes, you might need to hide specific toolbars instead of all. This can be useful if you want to simplify the user interface by removing unnecessary tools or creating a more focused environment for certain tasks. The `Toolbars` collection property in the PDF Viewer allows you to hide a specific toolbar by using its index or name.
+
+### Hide specific toolbars by index
+
+If you know the position of the toolbar you want to hide within the `Toolbars` collection, you can access and hide it using its index. For example, the following code hides the first and second toolbars in the collection.
+
+{% tabs %}
+{% highlight C# %}
+if (pdfViewer?.Toolbars?.Count > 1)
+{
+ var firstToolbar = pdfViewer?.Toolbars[0];
+ if (firstToolbar != null)
+ firstToolbar.IsVisible = false; // Hide the first toolbar
+
+ var secondToolbar = pdfViewer?.Toolbars[1];
+ if (secondToolbar != null)
+ secondToolbar.IsVisible = false; // Hide the second toolbar
+}
+{% endhighlight %}
+{% endtabs %}
+
+### Hide specific toolbars by name
+
+By using the [GetByName](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.ToolbarItemCollection.html#Syncfusion_Maui_PdfViewer_ToolbarItemCollection_GetByName_System_String) method with a specified toolbar name, you can access and modify that toolbar's properties. The following example retrieves the `BottomToolbar` by name and hides it.
+
+{% tabs %}
+{% highlight C# %}
+// On mobile, access the bottom toolbar using the GetByName method.
+var toolbar = pdfViewer.Toolbars?.GetByName("BottomToolbar");
+if (toolbar != null)
+{
+ toolbar.IsVisible = false; // Hide the bottom toolbar
+}
+{% endhighlight %}
+{% endtabs %}
+
+N> For the full list of toolbar names, see [Mobile toolbar names](https://help.syncfusion.com/maui/pdf-viewer/toolbar#mobile-toolbar-names) and [Desktop toolbar names](https://help.syncfusion.com/maui/pdf-viewer/toolbar#desktop-toolbar-names).
+
+## Manage toolbar items
+
+In addition to customizing the visibility of toolbars, you can customize the items within each toolbar. This includes adding new items, removing existing ones, or rearranging their order to suit your app's workflow better.
+
+N> All toolbar customization code should run **after** the PDF Viewer has been initialized and attached to the visual tree. The recommended place is the `DocumentLoaded` event handler or the page's `OnAppearing()` override — not the constructor, where the toolbar may not yet be populated.
+
+### Add a new toolbar item
+
+To add an item to a toolbar, first create the UI element you want to include, then convert it into a `ToolbarItem`, and finally add it to the toolbar using the `Add` method. The following example creates a button and adds it to the `PrimaryToolbar`.
+
+{% tabs %}
+{% highlight C# tabtitle="MainPage.xaml.cs" %}
+// Recommended: place inside the DocumentLoaded event handler or OnAppearing().
+// Create the button you want to add to the toolbar.
+Button fileOpenButton = new Button
+{
+ Text = "\ue712",
+ FontSize = 24,
+ IsEnabled = false,
+ FontFamily = "Maui Material Assets",
+ HorizontalOptions = LayoutOptions.Center,
+ VerticalOptions = LayoutOptions.Center,
+ BackgroundColor = Colors.Transparent,
+ BorderColor = Colors.Transparent,
+ Padding = 10,
+ Margin = new Thickness(5, 0, 0, 0),
+ Opacity = 0.5
+};
+
+// Access the PrimaryToolbar (desktop) and append the new item at the end.
+pdfViewer.Toolbars?.GetByName("PrimaryToolbar")?.Items?.Add(
+ new Syncfusion.Maui.PdfViewer.ToolbarItem(fileOpenButton, "FileOpenButton"));
+{% endhighlight %}
+{% endtabs %}
+
+### Add a toolbar item at a specific index
+
+To add an item at a specific index, use the [Insert](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.ToolbarItemCollection.html#Syncfusion_Maui_PdfViewer_ToolbarItemCollection_Insert_System_Int32_Syncfusion_Maui_PdfViewer_ToolbarItem) method. Use the [Index](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.ToolbarItem.html#Syncfusion_Maui_PdfViewer_ToolbarItem_Index) property to get the current index of an existing item, then insert the new item relative to it. The following example inserts a save button right after the `Print` button in the `PrimaryToolbar`.
+
+{% tabs %}
+{% highlight C# %}
+// Create a button you want to add.
+Button fileSaveButton = new Button
+{
+ Text = "\ue75f",
+ FontSize = 24,
+ FontFamily = "Maui Material Assets",
+ HorizontalOptions = LayoutOptions.Center,
+ VerticalOptions = LayoutOptions.Center,
+ BackgroundColor = Colors.Transparent,
+ BorderColor = Colors.Transparent,
+ IsEnabled = false,
+ Opacity = 0.5,
+ Padding = 10
+};
+
+// Access the Print item in PrimaryToolbar and insert the new button after it.
+var item = PdfViewer?.Toolbars?.GetByName("PrimaryToolbar")?.Items?.GetByName("Print");
+if (item != null)
+{
+ PdfViewer?.Toolbars?.GetByName("PrimaryToolbar")?.Items?.Insert(
+ item.Index + 1,
+ new Syncfusion.Maui.PdfViewer.ToolbarItem(fileSaveButton, "FileSaveButton"));
+}
+{% endhighlight %}
+{% endtabs %}
+
+### Remove a toolbar item by index
+
+You can access a specific item using its index and remove it from the toolbar's `Items` collection using the `Remove` method. The following example retrieves and removes the first item from the `TopToolbar`.
+
+{% tabs %}
+{% highlight C# %}
+// Get the top toolbar on mobile platforms.
+Syncfusion.Maui.PdfViewer.Toolbar? topToolbar = PdfViewer.Toolbars?.GetByName("TopToolbar");
+if (topToolbar != null)
+{
+ // Get the first item from the toolbar.
+ Syncfusion.Maui.PdfViewer.ToolbarItem? firstItem = topToolbar.Items?[0];
+ if (firstItem != null)
+ {
+ // Remove the first item from the toolbar.
+ topToolbar?.Items?.Remove(firstItem);
+ }
+}
+{% endhighlight %}
+{% endtabs %}
+
+### Remove a toolbar item by name
+
+Use the [GetByName](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.ToolbarItemCollection.html#Syncfusion_Maui_PdfViewer_ToolbarItemCollection_GetByName_System_String) method to access a specific item and then call [Remove](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.ToolbarItemCollection.html#Syncfusion_Maui_PdfViewer_ToolbarItemCollection_Remove_Syncfusion_Maui_PdfViewer_ToolbarItem) to remove it. The following example removes the `Outline` item from the `PrimaryToolbar`.
+
+{% tabs %}
+{% highlight C# %}
+// Access the Outline item in PrimaryToolbar and remove it.
+var item = pdfViewer.Toolbars?.GetByName("PrimaryToolbar")?.Items?.GetByName("Outline");
+if (item != null)
+{
+ pdfViewer.Toolbars?.GetByName("PrimaryToolbar")?.Items?.Remove(item);
+}
+{% endhighlight %}
+{% endtabs %}
+
+### Remove an item from all toolbars
+
+Each toolbar in [SfPdfViewer](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html) operates independently — removing an item from one toolbar does not affect others. To remove an item from all toolbars, iterate through the `Toolbars` collection and remove the item from each. The following example removes the `StickyNote` item from all toolbars.
+
+{% tabs %}
+{% highlight C# %}
+// Iterate through all toolbars and remove the StickyNote item from each.
+for (int i = 0; i < pdfViewer?.Toolbars?.Count; i++)
+{
+ var item = pdfViewer.Toolbars?[i]?.Items?.GetByName("StickyNote");
+ if (item != null)
+ {
+ pdfViewer?.Toolbars?[i]?.Items?.Remove(item);
+ }
+}
+{% endhighlight %}
+{% endtabs %}
+
+You can find the sample project for removing an item from the desktop toolbar using the [link provided here](https://github.com/SyncfusionExamples/maui-pdf-viewer-examples/tree/master/Toolbar%20customization/RemoveToolbarItemDesktop).
+
+### Hide a toolbar item by index
+
+To hide a toolbar item by its index, access the item in the `Items` collection and set its [IsVisible](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.ToolbarItem.html#Syncfusion_Maui_PdfViewer_ToolbarItem_IsVisible) property to `false`.
+
+{% tabs %}
+{% highlight C# %}
+int indexToHide = 2; // Replace with the actual index of the item you want to hide.
+
+var toolbar = pdfViewer.Toolbars?.GetByName("PrimaryToolbar");
+if (toolbar != null && indexToHide >= 0 && indexToHide < toolbar.Items?.Count)
+{
+ var item = toolbar.Items[indexToHide];
+ item.IsVisible = false; // Hide the item by index
+}
+{% endhighlight %}
+{% endtabs %}
+
+### Hide a toolbar item by name
+
+Use the [GetByName](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.ToolbarItemCollection.html#Syncfusion_Maui_PdfViewer_ToolbarItemCollection_GetByName_System_String) method to access a specific item, then set its [IsVisible](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.ToolbarItem.html#Syncfusion_Maui_PdfViewer_ToolbarItem_IsVisible) property to `false`. The following example hides the `Search` item in the `PrimaryToolbar`.
+
+{% tabs %}
+{% highlight C# %}
+// On desktop, access the Search button in the PrimaryToolbar and hide it.
+var item = pdfViewer.Toolbars?.GetByName("PrimaryToolbar")?.Items?.GetByName("Search");
+if (item != null)
+{
+ item.IsVisible = false; // Hide the search item
+}
+{% endhighlight %}
+{% endtabs %}
+
+### Hide an item in all toolbars
+
+Each toolbar operates independently, so hiding an item in one toolbar does not affect others. To hide an item across all toolbars, iterate through the `Toolbars` collection. The following example hides the `Signature` icon in every toolbar where it appears.
+
+{% tabs %}
+{% highlight C# %}
+// Iterate through all toolbars and hide the Signature item in each.
+for (int i = 0; i < pdfViewer?.Toolbars?.Count; i++)
+{
+ var item = pdfViewer.Toolbars[i]?.Items?.GetByName("Signature");
+ if (item != null)
+ {
+ item.IsVisible = false; // Hide the Signature item
+ }
+}
+{% endhighlight %}
+{% endtabs %}
+
+N> You can identify items that appear in multiple toolbars by checking the availability column in [Mobile toolbar item names](https://help.syncfusion.com/maui/pdf-viewer/toolbar#mobile-toolbar-item-names) and [Desktop toolbar item names](https://help.syncfusion.com/maui/pdf-viewer/toolbar#desktop-toolbar-item-names).
+
+## See Also
+- [Toolbar](../toolbar)
+- [UI Customization](../ui-customization)
+- [Annotations Overview](../annotations-overview)
+- [Show or Hide Annotations](../show-hide)
diff --git a/Document-Processing/PDF/PDF-Viewer/maui/Toolbar.md b/Document-Processing/PDF/PDF-Viewer/maui/Toolbar.md
index 4da5cd2f0a..f8e0552ca7 100644
--- a/Document-Processing/PDF/PDF-Viewer/maui/Toolbar.md
+++ b/Document-Processing/PDF/PDF-Viewer/maui/Toolbar.md
@@ -1,16 +1,16 @@
----
+---
layout: post
-title: Working with Toolbar in .NET MAUI PDF Viewer control | Syncfusion
-description: Learn here all about the toolbar in .NET MAUI PDF Viewer (SfPdfViewer) control, its functionalites and more.
+title: Working with the Toolbar in .NET MAUI PDF Viewer | Syncfusion
+description: Learn how to use, customize, and extend the built-in toolbar in the Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control.
platform: document-processing
control: SfPdfViewer
documentation: ug
-keywords : .net maui pdf viewer, .net maui view pdf, pdf viewer in .net maui, .net maui open pdf, maui pdf viewer, maui pdf view
+keywords: .net maui pdf viewer, .net maui view pdf, pdf viewer in .net maui, .net maui open pdf, maui pdf viewer, maui pdf view
---
-# Working with Toolbar in .NET MAUI Pdf Viewer (SfPdfViewer)
+# Working with the Toolbar in .NET MAUI PDF Viewer (SfPdfViewer)
-The [SfPdfViewer](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html) has a built-in toolbar, which enhances PDF viewing and editing capabilities, allowing you to perform operations such as adding and modifying annotations, searching text, and more.
+The [SfPdfViewer](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html) includes a built-in toolbar that enhances PDF viewing and editing capabilities, allowing you to perform operations such as adding and modifying annotations, searching for text, and more.
## Toolbars structure
@@ -188,72 +188,9 @@ The names of these toolbars and their description are listed in the following se
-### Show/hide the toolbars
-
-The built-in toolbars are visible by default. In certain scenarios, you might want to hide all the toolbars in the PDF Viewer to display the document in full view or to use customized toolbars based on your application needs. You can do this by setting the [ShowToolbars](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html#Syncfusion_Maui_PdfViewer_SfPdfViewer_ShowToolbars) property of the PDF Viewer to `false`. And you can show the built-in toolbar by setting the [ShowToolbars](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html#Syncfusion_Maui_PdfViewer_SfPdfViewer_ShowToolbars) property of the PDF Viewer to `true`.
-
-{% tabs %}
-{% highlight C# %}
-
-//set the ShowToolbars to false
-public MainPage()
-{
- SfPdfViewer pdfViewer=new SfPdfViewer();
- pdfViewer.ShowToolbars = false;
-}
-
-{% endhighlight %}
-{% endtabs %}
-
-{% tabs %}
-{% highlight XAML %}
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-You can find the sample project from the [link provided here](https://github.com/SyncfusionExamples/maui-pdf-viewer-examples/tree/master/Toolbar customization/HideToolbars).
-
-### Customize the toolbar
-
-Sometimes, you might need to hide specific toolbars instead of all. This can be useful if you want to simplify the user interface by removing unnecessary tools or creating a more focused environment for certain tasks. The Toolbars collection property in the PDF Viewer allows you to hide a specific toolbar by using its index or name.
-
-#### Hide specific toolbars by index
-
-If you know the position of the toolbar you want to hide within the Toolbars collection, you can access and hide it using its index. For example, you can use the following code to hide the first and second toolbars in the collection.
-
-{% tabs %}
-{% highlight C# %}
-if (pdfViewer?.Toolbars?.Count > 1)
-{
- var firstToolbar = pdfViewer?.Toolbars[0];
- if (firstToolbar != null)
- firstToolbar.IsVisible = false; //Hide the first toolbar
- var secondToolbar= pdfViewer?.Toolbars[1];
- if (secondToolbar != null)
- secondToolbar.IsVisible = false; //Hide the second toolbar
-}
-{% endhighlight %}
-{% endtabs %}
-
-#### Hide specific toolbars by name
-
-By using the [GetByName](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.ToolbarItemCollection.html#Syncfusion_Maui_PdfViewer_ToolbarItemCollection_GetByName_System_String) method with its specified toolbar names, you can access the properties of those toolbars. After accessing the toolbar, you can modify its visibility by setting the IsVisible property. Here, we retrieve the toolbar “BottomToolbar” using the GetByName method and hide it by setting its visibility to false.
+### Toolbar customization
-{% tabs %}
-{% highlight C# %}
-// On the mobile, we access the primary toolbar using the GetByName method.
-
- var toolbar = pdfViewer.Toolbars?.GetByName("BottomToolbar");
- if (toolbar != null)
- {
- toolbar.IsVisible = false; // Hide the bottom toolbar
- }
-{% endhighlight %}
-{% endtabs %}
+For details on showing, hiding, adding, removing, and reordering toolbars and toolbar items, see [Toolbar Customization](https://help.syncfusion.com/maui/pdf-viewer/toolbar-customization).
## Toolbar items
@@ -796,196 +733,8 @@ The names of these toolbar items, along with their descriptions and availability
-### Customize toolbar items
-
-In addition to customizing the visibility of toolbars, you can customize the items within each toolbar of the .NET MAUI PDF Viewer. This includes adding new items, removing existing ones, or rearranging their order to suit your app’s workflow better.
-
-#### Adding a new toolbar item
-
-To add an item to the toolbar in [SfPdfViewer](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html), first, create the UI element you want to include. Then, convert that element into a ToolbarItem using the `ToolbarItem` method. Finally, add the newly created ToolbarItem to the toolbar using the `Add` method. Here we create the new button fileOpenButton and retrieve the "PrimaryToolbar" using the GetByName method. Add the new button to the "Primary Toolbar".
-
-{% tabs %}
-{% highlight C# %}
-//Create a button you want to add.
-
-Button fileOpenButton = new Button
- {
- Text = "\ue712",
- FontSize = 24,
- IsEnabled = false,
- FontFamily = "Maui Material Assets",
- HorizontalOptions = LayoutOptions.Center,
- VerticalOptions = LayoutOptions.Center,
- BackgroundColor = Colors.Transparent,
- BorderColor = Colors.Transparent,
- Padding = 10,
- Margin = new Thickness(5, 0, 0, 0),
- Opacity = 0.5
- };
-//We access the PrimaryToolbar on the desktop using the GetByName method and add the item you created to it.
-
-pdfViewer.Toolbars?.GetByName("PrimaryToolbar")?.Items?.Add(new Syncfusion.Maui.PdfViewer.ToolbarItem(fileOpenButton, "FileOpenButton"));
-{% endhighlight %}
-{% endtabs %}
-
-#### Adding a new toolbar item at a specific index
-
-To add an item at a specific index in the toolbar in [SfPdfViewer](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html), first create the UI element you want to include. Then, convert that element into a ToolbarItem using the [ToolbarItem](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.ToolbarItem.html#Syncfusion_Maui_PdfViewer_ToolbarItem__ctor_Microsoft_Maui_Controls_View_System_String) method. Finally, add the newly created ToolbarItem to the toolbar using the [Insert](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.ToolbarItemCollection.html#Syncfusion_Maui_PdfViewer_ToolbarItemCollection_Insert_System_Int32_Syncfusion_Maui_PdfViewer_ToolbarItem) method. Use the [Index](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.ToolbarItem.html#Syncfusion_Maui_PdfViewer_ToolbarItem_Index) property to get the index of the item you want to add after, and insert the new item at a specific index. Here we create the button fileSaveButton and retrieve the index of the "Print" button in the "PrimaryToolbar". The new button is inserted into the toolbar right after the "Print" button.
-
-{% tabs %}
-{% highlight C# %}
-//Create a button you want to add.
-
-Button fileSaveButton = new Button
- {
- Text = "\ue75f",
- FontSize = 24,
- FontFamily = "Maui Material Assets",
- HorizontalOptions = LayoutOptions.Center,
- VerticalOptions = LayoutOptions.Center,
- BackgroundColor = Colors.Transparent,
- BorderColor = Colors.Transparent,
- IsEnabled = false,
- Opacity = 0.5,
- Padding = 10
- };
-
-// We access the PrimaryToolbar on the desktop using the GetByName method.
-var item = PdfViewer?.Toolbars?.GetByName("PrimaryToolbar")?.Items?.GetByName("Print");
-if (item != null)
-{
- // We accessed the PrimaryToolbar on the desktop using the GetByName method and inserted the item after the last item index.
- PdfViewer?.Toolbars?.GetByName("PrimaryToolbar")?.Items?.Insert(item.Index + 1, new Syncfusion.Maui.PdfViewer.ToolbarItem(fileSaveButton, "FileSaveButton"));
-}
-{% endhighlight %}
-{% endtabs %}
-
-#### Remove Items from the Toolbar
-
-If you need to remove specific items from the toolbar in [SfPdfViewer](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html), you can do so from the Items collection. You can remove them either by index or by name.
-
-##### Remove Item by Index
-
-You can access the specific item using its index and then remove it from the toolbar’s item collection using the Remove method. Here we retrieve the first item from the “TopToolbar” using its index. If the item is found, it is removed from the toolbar.
-
-{% tabs %}
-{% highlight C# %}
-// Get the top toolbar of the PDF Viewer that contains annotation tools on mobile platforms.
-Syncfusion.Maui.PdfViewer.Toolbar? topToolbar = PdfViewer.Toolbars?.GetByName("TopToolbar");
-if (topToolbar != null)
-{
- // Get the first item from the toolbar.
- Syncfusion.Maui.PdfViewer.ToolbarItem? firstItem = topToolbar.Items?[0];
- if (firstItem != null)
- {
- // Remove the first item from the toolbar.
- topToolbar?.Items?.Remove(firstItem);
- }
-}
-{% endhighlight %}
-{% endtabs %}
-
-##### Remove Item by Name
-
-You can access the specific item using the [GetByName](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.ToolbarItemCollection.html#Syncfusion_Maui_PdfViewer_ToolbarItemCollection_GetByName_System_String) method and then remove it from the toolbar's item collection using the [Remove](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.ToolbarItemCollection.html#Syncfusion_Maui_PdfViewer_ToolbarItemCollection_Remove_Syncfusion_Maui_PdfViewer_ToolbarItem) method. Here we retrieve the "Outline" item from the "PrimaryToolbar" using the GetByName method. If the item is found, it is removed from the toolbar.
-
-{% tabs %}
-{% highlight C# %}
-//We access the outline item in the PrimaryToolbar on the desktop using the GetByName method and remove it.
-
- var item = pdfViewer.Toolbars?.GetByName("PrimaryToolbar")?.Items?.GetByName("Outline");
- if (item != null)
- {
- pdfViewer.Toolbars?.GetByName("PrimaryToolbar")?.Items?.Remove(item); // Remove the outline item
- }
-{% endhighlight %}
-{% endtabs %}
-
-#### Remove the item from all toolbars
-
-In [SfPdfViewer](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html), each toolbar operates independently. Removing an item from one toolbar does not affect others. For example, removing the Sticky note icon from the "AnnotationsToolbar" does not impact other toolbars.
-
-To remove an item from all toolbars, iterate through the toolbar collection and remove the item from each toolbar. Here’s how to remove the "Sticky note" item from all toolbars:
-
-{% tabs %}
-{% highlight C# %}
-// Iterate through the toolbar collection of the PDF Viewer
-for (int i = 0; i < pdfViewer?.Toolbars?.Count; i++)
-{
- // Get the toolbar item with the name "Sticky note" from the current toolbar
- var item = pdfViewer.Toolbars?[i]?.Items?.GetByName("Sticky note");
- if (item != null)
- {
- // Remove the "Sticky note" item
- pdfViewer?.Toolbars?[i]?.Items?.Remove(item);
- }
-}
-{% endhighlight %}
-{% endtabs %}
-
-You can find the sample project for removing an item from the desktop toolbar using the [link provided here](https://github.com/SyncfusionExamples/maui-pdf-viewer-examples/tree/master/Toolbar customization/RemoveToolbarItemDesktop).
-
-#### Hide items from the toolbar
-
-If you need to hide specific items in the [SfPdfViewer](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html), you can do so by modifying the visibility of the items. You can hide them either by index or by name.
-
-##### Hide Item by Index
-
-To hide a toolbar item by its index, you can directly access the item in the toolbar's Items collection using the index and then set its [IsVisible](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.ToolbarItem.html#Syncfusion_Maui_PdfViewer_ToolbarItem_IsVisible) property to false. Here’s how you can do it:
-
-{% tabs %}
-{% highlight C# %}
-// Assuming you want to hide the item at a specific index in the PrimaryToolbar.
-int indexToHide = 2; // Replace with the actual index of the item you want to hide.
-
-var toolbar = pdfViewer.Toolbars?.GetByName("PrimaryToolbar");
-if (toolbar != null && indexToHide >= 0 && indexToHide < toolbar.Items?.Count)
-{
- var item = toolbar.Items[indexToHide];
- item.IsVisible = false; // Hide the item by index
-}
-
-{% endhighlight %}
-{% endtabs %}
-
-##### Hide item by name
-
-By using the [GetByName](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.ToolbarItemCollection.html#Syncfusion_Maui_PdfViewer_ToolbarItemCollection_GetByName_System_String) method with its specified toolbar names, you can access the items of those toolbars. After accessing the item, you can modify its visibility by setting the [IsVisible]https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.ToolbarItem.html#Syncfusion_Maui_PdfViewer_ToolbarItem_IsVisible property. Here, we retrieve the toolbar "PrimaryToolbar" and "Search" item using the GetByName method and hide the "Search" item by setting its visibility to false.
-
-{% tabs %}
-{% highlight C# %}
-// On the desktop, we access the search button located in the primary toolbar using the GetByName method.
-
-var item = pdfViewer.Toolbars?.GetByName("PrimaryToolbar")?.Items?.GetByName("Search");
-if (item != null)
-{
-item.IsVisible = false; // Hide the search item
-}
-{% endhighlight %}
-{% endtabs %}
-
-#### Hide the item in all toolbars
-
-In [SfPdfViewer](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html), each toolbar operates independently. Hiding an item in one toolbar does not affect others. For example, changing the visibility of the signature icon in the "AnnotationsToolbar" does not impact other toolbars. You can identify an item present in multiple toolbars by referring to the availability toolbar column in the toolbar item availability topic under the table of [Mobile toolbar item names](https://help.syncfusion.com/maui/pdf-viewer/toolbar#mobile-toolbar-item-names) and [Desktop toolbar item names](https://help.syncfusion.com/maui/pdf-viewer/toolbar#desktop-toolbar-item-names).
-
-To hide an icon from all toolbars, iterate through the toolbar collection and adjust the visibility of the item in each toolbar. Here’s how to hide the "Signature" icon from all toolbars:
-
-{% tabs %}
-{% highlight C# %}
-// Iterate through the toolbar collection of the PDF Viewer
-for (int i = 0; i < pdfViewer?.Toolbars.Count; i++)
-{
- // Get the toolbar item with the name "Signature" from the current toolbar
- var item = pdfViewer.Toolbars[i]?.Items?.GetByName("Signature");
- // Check if the item exists in the toolbar
- if (item != null)
- {
- // Set the visibility of the "Signature" item to false, effectively hiding it
- item.IsVisible = false; // Hide the Signature
- }
-}
-{% endhighlight %}
-{% endtabs %}
-
-
+## See Also
+- [Toolbar Customization](../toolbar-customization)
+- [UI Customization](../ui-customization)
+- [Annotations Overview](../annotations-overview)
diff --git a/Document-Processing/PDF/PDF-Viewer/maui/UI-Customization.md b/Document-Processing/PDF/PDF-Viewer/maui/UI-Customization.md
index b5c720e697..7f92d8561f 100644
--- a/Document-Processing/PDF/PDF-Viewer/maui/UI-Customization.md
+++ b/Document-Processing/PDF/PDF-Viewer/maui/UI-Customization.md
@@ -1,10 +1,11 @@
---
layout: post
-title: UI Customization in .NET MAUI PDF Viewer control | Syncfusion
-description: Learn here all about the UI customization options in Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control and more.
+title: UI Customization in .NET MAUI PDF Viewer | Syncfusion
+description: Learn how to customize the UI of the Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control, including the loading indicator and theming.
platform: document-processing
control: SfPdfViewer
documentation: ug
+keywords: .net maui pdf viewer, .net maui view pdf, pdf viewer in .net maui, .net maui open pdf, maui pdf viewer, maui pdf view
---
# UI Customization in .NET MAUI PDF Viewer (SfPdfViewer)
@@ -30,4 +31,9 @@ You can customize the loading indicator’s properties by applying a style with
{% endhighlight %}
{% endtabs %}
-N> For complete customization of the PDF Viewer, themes can be applied. Refer to the [theme user guide](https://help.syncfusion.com/maui/themes/themes) for detailed instructions. You can also explore the [sample project](https://github.com/SyncfusionExamples/maui-pdf-viewer-examples/tree/master/Styles/PDFViewerThemes), which demonstrates the custom theme implementation for the PDF Viewer in .NET MAUI applications.
\ No newline at end of file
+N> For complete customization of the PDF Viewer, themes can be applied. Refer to the [theme user guide](https://help.syncfusion.com/maui/themes/themes) for detailed instructions. You can also explore the [sample project](https://github.com/SyncfusionExamples/maui-pdf-viewer-examples/tree/master/Styles/PDFViewerThemes), which demonstrates the custom theme implementation for the PDF Viewer in .NET MAUI applications.
+
+## See Also
+- [Toolbar Customization](../toolbar-customization)
+- [Toolbar](../toolbar)
+- [Annotations Overview](../annotations-overview)
diff --git a/Document-Processing/PDF/PDF-Viewer/maui/Undo-Redo.md b/Document-Processing/PDF/PDF-Viewer/maui/Undo-Redo.md
index 663cb545b7..4bf10c3f3f 100644
--- a/Document-Processing/PDF/PDF-Viewer/maui/Undo-Redo.md
+++ b/Document-Processing/PDF/PDF-Viewer/maui/Undo-Redo.md
@@ -1,7 +1,7 @@
---
layout: post
title: Undo and Redo actions in .NET MAUI PDF Viewer | Syncfusion
-description: Learn here all about Undo and Redo actions on the annotations using Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control.
+description: Learn how to undo and redo annotation changes using the Syncfusion® .NET MAUI PDF Viewer (SfPdfViewer) control.
platform: document-processing
control: SfPdfViewer
documentation: ug
@@ -52,7 +52,7 @@ void PerformUndo()
## Redo
-You can perform redo to restore the last undone function using the [RedoCommand](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html#Syncfusion_Maui_PdfViewer_SfPdfViewer_RedoCommand) of the [SfPdfViewer](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html).. The following code examples explains how to bind the command to a button in XAML to perform the action on button click and also executing the command programmatically as well.
+You can perform redo to restore the last undone function using the [RedoCommand](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html#Syncfusion_Maui_PdfViewer_SfPdfViewer_RedoCommand) of the [SfPdfViewer](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html). The following code examples explain how to bind the command to a button in XAML to perform the action on button click, and also execute the command programmatically.
{% tabs %}
{% highlight XAML %}
@@ -65,4 +65,19 @@ void PerformRedo()
PdfViewer.RedoCommand.Execute(true);
}
{% endhighlight %}
-{% endtabs %}
\ No newline at end of file
+{% endtabs %}
+
+## Limitations
+
+The undo and redo history covers annotation changes only. The following operations **cannot** be undone:
+
+* Saving a document using [SaveDocumentAsync](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html#Syncfusion_Maui_PdfViewer_SfPdfViewer_SaveDocumentAsync).
+* Applying redaction using [RedactAsync](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html#Syncfusion_Maui_PdfViewer_SfPdfViewer_RedactAsync_System_Threading_CancellationToken_).
+* Unloading a document using [UnloadDocument](https://help.syncfusion.com/cr/maui/Syncfusion.Maui.PdfViewer.SfPdfViewer.html#Syncfusion_Maui_PdfViewer_SfPdfViewer_UnloadDocument). Unloading clears the undo/redo history entirely.
+
+N> The undo/redo stack is also cleared when a new document is loaded.
+
+## See Also
+- [Annotations Overview](../annotations-overview)
+- [Add, Remove, and Modify Annotations](../add-remove-modify-annotations)
+- [Keyboard Shortcuts](../keyboard-shortcuts)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/maui/liquid-glass-effect.md b/Document-Processing/PDF/PDF-Viewer/maui/liquid-glass-effect.md
index 6e79c33500..d8c9a6eb76 100644
--- a/Document-Processing/PDF/PDF-Viewer/maui/liquid-glass-effect.md
+++ b/Document-Processing/PDF/PDF-Viewer/maui/liquid-glass-effect.md
@@ -96,4 +96,8 @@ this.Content = grid;
N>
* Supported on `macOS 26 or higher` and `iOS 26 or higher`.
-* This feature is available only in `.NET 10.`
\ No newline at end of file
+* This feature is available only in `.NET 10.`
+
+## See Also
+- [UI Customization](../ui-customization)
+- [Toolbar Customization](../toolbar-customization)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/Redaction/mobile-view.md b/Document-Processing/PDF/PDF-Viewer/react/Redaction/mobile-view.md
index c10795c987..241194efae 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/Redaction/mobile-view.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/Redaction/mobile-view.md
@@ -7,196 +7,106 @@ control: PdfViewer
documentation: ug
---
-# Redaction in Mobile View in React PdfViewer Component
-
-The Redaction Tool enables users to permanently mark and remove sensitive content from PDF documents in mobile view using the React PdfViewer component. This feature is optimized for touch interactions and provides a streamlined redaction workflow specifically designed for mobile devices.
-
-
-
-N> In mobile view, the redaction toolbar appears at the bottom of the viewer for easy thumb access. Mobile layout activates automatically on small screens.
-
-## Adding Redaction in Mobile View
-
-To enable redaction functionality in your React application, configure the PDF Viewer with the following setup:
-
-{% tabs %}
-{% highlight js tabtitle="index.js" %}
-
-import * as ReactDOM from 'react-dom/client';
-import * as React from 'react';
-import './index.css';
-import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView, ThumbnailView, Print, TextSelection, Annotation, TextSearch, FormFields, FormDesigner, Inject } from '@syncfusion/ej2-react-pdfviewer';
-export function App() {
- // includes RedactionEditTool
- const toolbarSettings = {
- toolbarItems: [
- 'OpenOption',
- 'UndoRedoTool',
- 'PageNavigationTool',
- 'MagnificationTool',
- 'PanTool',
- 'SelectionTool',
- 'CommentTool',
- 'SubmitForm',
- 'AnnotationEditTool',
- 'RedactionEditTool', // Redaction entry in the primary toolbar
- 'FormDesignerEditTool',
- 'SearchOption',
- 'PrintOption',
- 'DownloadOption'
- ]
- };
- return (
-
-
-
-
-
-
);
-
-}
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
+# Redaction in mobile view in React PDF Viewer
-{% endhighlight %}
-{% endtabs %}
+## Overview
-## Understanding Mobile Redaction Toolbar Tools
+This tutorial teaches you how to enable and use the Redaction tools in the Syncfusion React PDF Viewer optimized for mobile (phone/tablet) screens. You will add a redaction button to the viewer toolbar, open the viewer on a small-screen layout, create selective and page-wide redactions, customize appearance, and apply redactions permanently.
-When you enter redaction mode in mobile view, a specialized redaction toolbar appears with multiple tools optimized for touch interaction. Each tool serves a specific purpose in the redaction workflow.
+**Outcome**: a working React sample where users can mark content for redaction using touch, configure appearance, and apply redactions.
-### Redaction Annotation Tool
+
-The Redaction Annotation tool is the primary redaction feature that allows you to draw redaction rectangles on specific content:
+N> In mobile view the redaction toolbar appears at the bottom of the viewer for easy thumb access. Mobile layout activates automatically on small screens.
-Function: Creates visual redaction annotations that mark content for permanent removal
-Usage:
-Touch and drag to draw rectangular redaction overlays on any content area.
+## Prerequisites
-Process:
-- Selected content appears with a customizable overlay (default black)
-- Annotations remain editable until explicitly applied
-- Can be repositioned or deleted before final application
+- A React project with PDF Viewer added to project. See [getting started guide](../getting-started)
-
+## Steps
-### Page Redaction Tool
+1. Add the PdfViewer to your React app and include the redaction toolbar item.
-The Page Redaction tool enables batch redaction of entire pages based on specific patterns.
+ - Enable the redaction tool with the code example in this [guide](./toolbar#enable-redaction-toolbar). The example includes a toolbar entry for [`RedactionEditTool`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbaritem) which enables redaction controls in the viewer.
-
+2. Start the app and open it on a narrow viewport (phone width) to trigger mobile layout.
-Function: Redacts complete pages or page ranges with a single action
-Options Available:
-- Odd Pages: Redacts only odd-numbered pages (1, 3, 5, etc.)
-- Even Pages: Redacts only even-numbered pages (2, 4, 6, etc.)
-- Specific Page: Specify single pages, ranges (e.g., 1-5, 10-15), or comma-separated lists (e.g., 1,3,5-7)
-- Current Page: Redacts only the currently displayed page
+3. Use the mobile redaction toolbar (bottom of the screen) to:
+ - Draw redaction boxes with the Redaction Annotation tool (touch & drag)
+ - Use Page Redaction to redact odd/even/specified pages
+ - Open Redaction Properties to change overlay color, overlay text, and font
-Usage:
-Select desired pattern → Review affected pages in the viewer → Confirm redaction scope
+4. Review annotations, then tap Apply Redactions to permanently remove content.
-
+## Understanding mobile redaction toolbar tools
-### Redaction Properties Tool
+When entering redaction mode in mobile view, a specialized redaction toolbar appears with tools optimized for touch. Each tool supports a specific step in the redaction workflow.
-The Redaction Properties tool allows customization of redaction appearance before application.
+### Redaction annotation tool
-
+The Redaction Annotation tool creates rectangular overlays that mark content for removal. Touch and drag to draw boxes; overlays remain editable until applied.
-Function: Customize the visual appearance of redaction overlays and text replacement
-Customizable Properties:
-- Fill Color: Change the redaction overlay color (default: black)
-- Outline Color: Set outline color for redaction boxes (optional)
-- Overlay Text: Add custom text to appear on redacted areas (e.g., "REDACTED", "CONFIDENTIAL")
-- Text Color: Change overlay text color for better visibility
-- Text Font: Select font family for overlay text
-- Text Alignment: Position overlay text within redaction boxes
-- Text Size: Adjust overlay text size relative to redaction area
+
-
+### Page redaction tool
-## Enabling Redaction Mode in Mobile View
+Use Page Redaction to redact whole pages or page ranges (odd, even, specific ranges). This helps remove patterns of sensitive pages quickly.
-Step 1: Tap the Redaction button in the mobile toolbar to activate redaction mode. The redaction toolbar will appear at the bottom of the viewer.
+
-
+
-Step 2: From the redaction toolbar, select your desired redaction tool:
-- First Tool (Redaction Annotation): For selective content redaction
-- Second Tool (Page Redaction): For page-wide or pattern-based redaction
-- Third Tool (Redaction Properties): For appearance customization
+### Redaction properties tool
-Step 3: Configure your redaction parameters using the selected tool interface.
+Open Redaction Properties to change overlay fill color, outline color, overlay text, text color, font and alignment before applying.
-## Applying Different Redaction Types in Mobile View
+
-### Selective Content Redaction
-1. Select Redaction Annotation tool (first button)
-2. Choose Content: Tap and drag over text or draw rectangular areas
-3. Preview: Check redaction overlays for accuracy
-4. Apply: Tap "Apply Redactions" button
+
-### Page-Wide Redaction
-1. Select Page Redaction tool (second button)
-2. Choose Pattern: Select odd pages, even pages, or custom range
-3. Review: Verify affected pages in the viewer
-4. Apply: Confirm page redaction scope and apply
+## Applying redactions in mobile view
-### Custom Appearance Redaction
-1. Select Redaction Properties tool (third button)
-2. Customize: Adjust colors, overlay text, and formatting
-3. Preview: See changes applied to existing annotations
-4. Apply: Use customized appearance for final redaction
+Applying redactions is permanent. Back up the original document before applying.
-## Applying Redactions in Mobile View
+1. Review all redaction marks and configurations.
-N> Applying redactions is permanent. After applying, the underlying content and text are removed from the document and cannot be recovered.
+ 
-Once you have configured redactions using any combination of tools.
+2. Tap the **Apply Redactions** button in the redaction toolbar.
-Step 1: Review all redaction marks and configurations.
+ 
-
+3. Confirm the action when prompted — this operation is irreversible.
-Step 2: Tap the Apply Redactions button in the redaction toolbar
+ 
-
+4. After applying, the selected content is permanently removed and replaced according to redaction properties.
-Step 3: Confirm the action when prompted - this operation is permanent and cannot be undone
+ 
-
+### Removing redaction annotations
-The selected content will be permanently removed and replaced according to your redaction properties (solid color blocks or custom overlay text).
+To remove a redaction annotation prior to applying it: enter Redaction Edit mode, tap the annotation to select it and choose Delete.
-
+
-## Removing Redaction Annotations
+## Mobile redaction workflow
-To remove existing redaction annotations before they are applied:
+1. Tap the Redaction button in the main toolbar to open the mobile redaction toolbar at the bottom.
+2. Choose Redaction Annotation to draw boxes by touch-and-drag.
+3. Use Redaction Properties to set fill color and overlay text.
+4. Tap Apply Redactions to make changes permanent (this is irreversible).
-- Step 1: Tap the Redaction Edit button in the mobile toolbar to enter annotation editing mode
-- Step 2: Tap on any existing redaction annotation you wish to remove
-- Step 3: Select Delete from the context menu that appears
+## Troubleshooting
-Alternative: Tap redaction annotation → Use delete button in annotation properties panel
+- If toolbar or redaction controls don't appear: ensure your [`toolbarSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#toolbarsettings) includes [`RedactionEditTool`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbaritem) and that the `Inject` list contains [`Annotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotation).
+- If the viewer is blank: confirm [`resourceUrl`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#resourceurl) points to the correct Syncfusion PDF Viewer resource package version.
+- For production builds, ensure your app serves the WASM and resource files from [`resourceUrl`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#resourceurl) or a hosted CDN.
-
+## Related topics
-N> Once redactions have been applied to the document, they become part of the PDF content and cannot be removed or modified.
-
-## See Also
-
-* [Redaction Overview](./overview)
-* [UI Interaction](./ui-interaction)
-* [Programmatic Support in Redaction](./programmatic-support)
-* [Toolbar](./toolbar)
-* [Search Text and Redact](./search-redact)
+- [Redaction Overview](./overview)
+- [UI Interaction](./ui-interaction)
+- [Programmatic Support in Redaction](./programmatic-support)
+- [Toolbar](./toolbar)
+- [Search Text and Redact](./search-redact)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/Redaction/overview.md b/Document-Processing/PDF/PDF-Viewer/react/Redaction/overview.md
index 50cff678f4..c0557050a8 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/Redaction/overview.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/Redaction/overview.md
@@ -1,6 +1,6 @@
---
layout: post
-title: Redaction annotation in React PDF Viewer | Syncfusion
+title: Redact sensitive content in React PDF Viewer | Syncfusion
description: Learn how to hide sensitive information with interactive and programmatic redaction using the Syncfusion React PDF Viewer.
platform: document-processing
control: PDF Viewer
@@ -8,65 +8,13 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Redaction in React PdfViewer
+# Redact sensitive content in React PDF Viewer
-Redaction annotations are used to hide confidential or sensitive information in a PDF. The Syncfusion React PDF Viewer (EJ2) lets you mark areas or entire pages for redaction, customize their appearance, and permanently apply them with a single action.
+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.
## Enable the redaction toolbar
-To enable the redaction toolbar, configure the `toolbarSettings.toolbarItems` property of the PdfViewer instance to include the **RedactionEditTool**.
-
-The following example shows how to enable the redaction toolbar:
-
-{% tabs %}
-{% highlight js tabtitle="index.js" %}
-
-import * as ReactDOM from 'react-dom/client';
-import * as React from 'react';
-import './index.css';
-import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView, ThumbnailView, Print, TextSelection, Annotation, TextSearch, FormFields, FormDesigner, Inject } from '@syncfusion/ej2-react-pdfviewer';
-export function App() {
- // includes RedactionEditTool
- const toolbarSettings = {
- toolbarItems: [
- 'OpenOption',
- 'UndoRedoTool',
- 'PageNavigationTool',
- 'MagnificationTool',
- 'PanTool',
- 'SelectionTool',
- 'CommentTool',
- 'SubmitForm',
- 'AnnotationEditTool',
- 'RedactionEditTool', // Redaction entry in the primary toolbar
- 'FormDesignerEditTool',
- 'SearchOption',
- 'PrintOption',
- 'DownloadOption'
- ]
- };
- return (
-
-
-
-
-
-
);
-
-}
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
-
-{% endhighlight %}
-{% endtabs %}
+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.
N> Prerequisites: Add the PdfViewer control to your React application and ensure the redaction feature is available in the version you are using. Once applied, redaction permanently removes the selected content.
@@ -110,7 +58,7 @@ A confirmation dialog appears before applying redaction to ensure you acknowledg

-N> After redaction is applied, the original content cannot be recovered.
+N> After redaction is applied the original content cannot be recovered.
## Comment Support
diff --git a/Document-Processing/PDF/PDF-Viewer/react/Redaction/programmatic-support.md b/Document-Processing/PDF/PDF-Viewer/react/Redaction/programmatic-support.md
index 5e0db5078c..e38ce5ffda 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/Redaction/programmatic-support.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/Redaction/programmatic-support.md
@@ -7,705 +7,191 @@ control: PdfViewer
documentation: ug
---
-# Programmatic support for redaction in React PdfViewer
+# Programmatic support for redaction in React PDF Viewer
-The Syncfusion React PDF Viewer provides APIs to add, update, delete, and apply redaction annotations programmatically. You can also redact entire pages, configure default properties, and work with the redaction property panel.
+## Overview
-## Enable the redaction toolbar
+This guide shows how to add, edit, delete, mark full pages, and apply redaction annotations programmatically in the Syncfusion React PDF Viewer.
-To enable the redaction toolbar, configure the `toolbarSettings.toolbarItems` property of the PdfViewer instance to include the **RedactionEditTool**.
+**Outcome**: You will have working code to control redactions from UI buttons and to set default redaction properties.
-The following example shows how to enable the redaction toolbar:
-
-{% tabs %}
-{% highlight js tabtitle="index.js" %}
-
-import * as ReactDOM from 'react-dom/client';
-import * as React from 'react';
-import './index.css';
-import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView, ThumbnailView, Print, TextSelection, Annotation, TextSearch, FormFields, FormDesigner, Inject } from '@syncfusion/ej2-react-pdfviewer';
-export function App() {
- // includes RedactionEditTool
- const toolbarSettings = {
- toolbarItems: [
- 'OpenOption',
- 'UndoRedoTool',
- 'PageNavigationTool',
- 'MagnificationTool',
- 'PanTool',
- 'SelectionTool',
- 'CommentTool',
- 'SubmitForm',
- 'AnnotationEditTool',
- 'RedactionEditTool', // Redaction entry in the primary toolbar
- 'FormDesignerEditTool',
- 'SearchOption',
- 'PrintOption',
- 'DownloadOption'
- ]
- };
- return (
+ );
+}
+{% endraw %}
{% endhighlight %}
{% endtabs %}
-[View Sample in GitHub](https://github.com/SyncfusionExamples/react-pdf-viewer-examples)
-
-## Redaction property panel
+**Expected result**: The viewer loads the sample PDF. Clicking the buttons will add, delete, edit, mark pages for redaction, or permanently apply redactions.
-The redaction property panel allows users to update annotation properties through the UI. Programmatically, you can invoke the property panel by selecting an annotation and calling the relevant APIs. Properties such as overlay text, font style, and fill color can be updated directly in the panel.
+## Troubleshooting
-
+- No viewer assets / missing icons: confirm [`resourceUrl`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#resourceurl) is reachable from the browser and points to a compatible ej2-pdfviewer-lib version.
+- `viewerRef.current` is undefined: ensure the `PdfViewerComponent` renders before calling APIs (wrap API calls in event handlers or use `useEffect` after mount).
+- Applying redactions fails: ensure the viewer has finished loading the document and that any server-side redaction workflows (if used) are available. Always backup originals before applying.
-## See also
+## Related topics
-* [Overview of Redaction](./overview)
-* [Redaction UI interactions](./ui-interaction)
-* [Redaction Toolbar](./toolbar)
-* [Reaction in Mobile view](./mobile-view)
-* [Search Text and Redact](./search-redact)
\ No newline at end of file
+- [Overview of Redaction](./overview)
+- [Redaction UI interactions](./ui-interactions)
+- [Redaction Toolbar](./toolbar)
+- [Redaction in Mobile view](./mobile-view)
+- [Search Text and Redact](./search-redact)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/Redaction/redaction-annotations-images/apply-redaction-context-menu.png b/Document-Processing/PDF/PDF-Viewer/react/Redaction/redaction-annotations-images/apply-redaction-context-menu.png
new file mode 100644
index 0000000000..e904915ce4
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/react/Redaction/redaction-annotations-images/apply-redaction-context-menu.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/react/Redaction/search-redact.md b/Document-Processing/PDF/PDF-Viewer/react/Redaction/search-redact.md
index 4cfd7e47f9..7d783b8b9e 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/Redaction/search-redact.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/Redaction/search-redact.md
@@ -8,163 +8,157 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Search text and redact in React PdfViewer
+# How to search text and redact in React PDF Viewer
-You can search for a keyword in the loaded PDF and automatically add redaction annotations over each match. The example below wires the extractTextCompleted event, triggers text extraction, performs a search, and places redaction annotations for every result.
+## Overview
-N> Prerequisites: Add the PdfViewer control to your React application and ensure a document is loaded. Make sure the redaction feature is available in the version you are using. Once applied, redaction permanently removes the selected content.
+This guide shows how to search for text inside a loaded PDF and add redaction annotations programmatically for every match. You will add two buttons: one to locate and mark matches with redaction annotations, and another to apply redactions (permanently remove the marked content).
-## Steps to add Redaction annotations on search Text Bounds
+**Outcome:** After following the steps you will have a working React sample where clicking "Search & Mark for Redaction" marks found text with redaction annotations and clicking "Apply Redaction" permanently removes the marked content.
-**Step 1:** Follow the steps provided in the [link](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started) to create a simple PDF Viewer sample.
+## Prerequisites
+- EJ2 React PDF Viewer added to your project. See [getting started guide](../getting-started).
+- The viewer's redaction feature enabled in your product version.
-**Step 2:** Use the following code-snippets to Add Redaction annotation on Search Text Bounds.
+## Steps
-{% tabs %}
-{% highlight js tabtitle="index.js" %}
+1. Create a React component that includes the `PdfViewerComponent` and Inject required services.
+2. Add two buttons: one to perform the text search and add redaction annotations, and one to apply redactions.
+3. Use the viewer's [`findTextAsync()`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/textsearch#findtextasync) to get match bounds (returned in points), convert those bounds to pixels, and add a `Redaction` annotation for each bound using [`addAnnotation('Redaction', ...)`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotation#addannotation).
+4. Call [`redact()`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotation#redact) to apply redactions permanently when the user confirms.
+
+## Complete runnable example
-import * as ReactDOM from 'react-dom/client';
+{% tabs %}
+{% highlight ts tabtitle="App.tsx" %}
+{% raw %}
import * as React from 'react';
import './index.css';
import {
- PdfViewerComponent,
- Toolbar,
- Magnification,
- Navigation,
- LinkAnnotation,
- BookmarkView,
- ThumbnailView,
- Print,
- TextSelection,
- Annotation,
- TextSearch,
- FormFields,
- FormDesigner,
- Inject
+ PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView, ThumbnailView, Print, TextSelection, Annotation, TextSearch, FormFields, FormDesigner, Inject, ToolbarItem
} from '@syncfusion/ej2-react-pdfviewer';
-export function App() {
- const viewerRef = React.useRef(null);
-
- const toolbarSettings = {
- toolbarItems: [
- 'OpenOption',
- 'UndoRedoTool',
- 'PageNavigationTool',
- 'MagnificationTool',
- 'PanTool',
- 'SelectionTool',
- 'CommentTool',
- 'SubmitForm',
- 'AnnotationEditTool',
- 'RedactionEditTool',
- 'FormDesignerEditTool',
- 'SearchOption',
- 'PrintOption',
- 'DownloadOption'
- ]
- };
-
- const px = (pt) => (pt * 96) / 72; // points -> pixels
-
- const searchTextAndRedact = async () => {
- if (!viewerRef.current) return;
- const term = 'syncfusion';
- const results = await viewerRef.current.textSearchModule.findTextAsync(term, false);
- if (!results || results.length === 0) {
- console.warn('No matches found.');
- return;
- }
-
- for (const pageResult of results) {
- if (!pageResult?.bounds?.length) continue;
- const pageNumber = (pageResult.pageIndex ?? -1) + 1; // 1-based
- if (pageNumber < 1) continue;
-
- for (const bound of pageResult.bounds) {
- viewerRef.current.annotation.addAnnotation('Redaction', {
- bound: {
- x: px(bound.x),
- y: px(bound.y),
- width: px(bound.width),
- height: px(bound.height)
- },
- pageNumber,
- overlayText: 'Confidential',
- fillColor: '#00FF40FF',
- fontColor: '#333333',
- fontSize: 12,
- fontFamily: 'Arial',
- markerFillColor: '#FF0000',
- markerBorderColor: '#000000'
- });
- }
- }
- };
-
- const applyRedaction = () => {
- if (!viewerRef.current) return;
- viewerRef.current.annotation.redact();
- };
-
- return (
-
+ );
}
-
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
-
+{% endraw %}
{% endhighlight %}
{% endtabs %}
-[View Sample in GitHub](https://github.com/SyncfusionExamples/react-pdf-viewer-examples)
+### Expected result
+
+- The viewer loads the specified PDF.
+- Clicking "Search \"syncfusion\" & Mark for Redaction" adds redaction annotations over the matched text.
+- Clicking "Apply Redaction" permanently removes the marked content from the document; this operation is irreversible.
+
+## Troubleshooting
-## Notes
-- Ensure the PDF is fully loaded before triggering extraction and search.
-- Bounds from search are in points (72 DPI). Convert to pixels (96 DPI) to align with annotation coordinates.
-- Customize overlay text, colors, and typography as needed.
-- Adding a redaction annotation covers the content visually. To permanently remove sensitive data, use the viewer's Apply Redaction action or equivalent API if available in your version.
+- Issue: "No matches found" even though text exists — Cause: PDF text extraction may not be ready. Solution: Wait for the document to finish loading or call search after the [`documentLoad`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#documentload) event.
+- Issue: Bounds look misplaced — Cause: [`findTextAsync()`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/textsearch#findtextasync) returns bounds in points (72 DPI). Ensure conversion to pixels using the provided `px()` helper.
+- Issue: `textSearchModule` is undefined — Cause: [`TextSearch`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/textsearch) service not injected. Add [`TextSearch`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/textsearch) to the `Inject` services list.
+- Issue: Redactions not applied — Cause: [`redact()`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotation#redact) requires redaction annotations present and viewer to support apply-redaction; ensure [`Annotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotation) service and `Redaction` features are available in your build.
-## See also
+## Related topics
-* [Overview of Redaction](./overview)
-* [Programmatic Support in Redaction](./programmatic-support)
-* [UI interactions](./ui-interaction)
-* [Redaction in Mobile View](./mobile-view)
-* [Redaction Toolbar](./toolbar)
\ No newline at end of file
+- [Overview of Redaction](./overview)
+- [Programmatic Support in Redaction](./programmatic-support)
+- [Redaction UI interactions](./ui-interactions)
+- [Redaction in Mobile View](./mobile-view)
+- [Redaction Toolbar](./toolbar)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/Redaction/toolbar.md b/Document-Processing/PDF/PDF-Viewer/react/Redaction/toolbar.md
index e1fdc7a068..deaed46c30 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/Redaction/toolbar.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/Redaction/toolbar.md
@@ -7,190 +7,127 @@ control: PDF Viewer
documentation: ug
---
-# Redaction toolbar customization in React
+# Customize the redaction toolbar in React PDF Viewer
-The redaction toolbar in the Syncfusion React PDF Viewer can be customized by rearranging existing items, hiding default items, or adding new ones. You can also place custom items at specific index positions among the existing toolbar items.
+This guide shows how to enable and control the redaction toolbar in the Syncfusion React PDF Viewer, including showing/hiding it from the primary toolbar programmatically.
-## Enable the redaction toolbar
+**Outcome**: a working viewer with the Redaction toolbar available and code to toggle it.
-To enable the redaction toolbar, configure the `toolbarSettings.toolbarItems` property of the PdfViewer instance to include the **RedactionEditTool**.
+## Prerequisites
-The following example shows how to enable the redaction toolbar:
+- EJ2 React PDF Viewer installed and imported. See [getting started guide](../getting-started)
+- A public PDF or service endpoint (the examples use a CDN-hosted PDF and the Syncfusion resource URL).
-{% tabs %}
-{% highlight js tabtitle="index.js" %}
+## Steps
-import * as ReactDOM from 'react-dom/client';
-import * as React from 'react';
-import './index.css';
-import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView, ThumbnailView, Print, TextSelection, Annotation, TextSearch, FormFields, FormDesigner, Inject } from '@syncfusion/ej2-react-pdfviewer';
-export function App() {
- // includes RedactionEditTool
- const toolbarSettings = {
- toolbarItems: [
- 'OpenOption',
- 'UndoRedoTool',
- 'PageNavigationTool',
- 'MagnificationTool',
- 'PanTool',
- 'SelectionTool',
- 'CommentTool',
- 'SubmitForm',
- 'AnnotationEditTool',
- 'RedactionEditTool', // Redaction entry in the primary toolbar
- 'FormDesignerEditTool',
- 'SearchOption',
- 'PrintOption',
- 'DownloadOption'
- ]
- };
- return (
-
-
-
-
-
-
);
-
-}
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
-
-{% endhighlight %}
-{% endtabs %}
+### Enable redaction toolbar
-Refer to the following image for the toolbar view:
+Enable the redaction toolbar by adding `RedactionEditTool` to [`toolbarSettings.toolbarItems`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbarsettings#toolbaritems).
-
+**Example code**:
-## Show or hide the redaction toolbar
+{% tabs %}
+{% highlight ts tabtitle="App.tsx" %}
+{% raw %}
+import {
+ PdfViewerComponent, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
+ BookmarkView, ThumbnailView, Print, TextSelection, TextSearch, FormFields,
+ FormDesigner, Inject, ToolbarItem
+} from '@syncfusion/ej2-react-pdfviewer';
-You can toggle the redaction toolbar either using the built‑in toolbar icon or programmatically with the `showRedactionToolbar` method.
+export default function App() {
+ const toolbarSettings = {
+ toolbarItems: [
+ 'OpenOption', 'UndoRedoTool', 'PageNavigationTool', 'MagnificationTool',
+ 'PanTool', 'SelectionTool', 'CommentTool', 'SubmitForm', 'AnnotationEditTool',
+ 'RedactionEditTool', 'FormDesignerEditTool', 'SearchOption', 'PrintOption', 'DownloadOption'
+ ] as ToolbarItem[]
+ };
+
+ return (
+
+
+
+
+
+ );
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
-### Display the redaction toolbar using the toolbar icon
+**Expected result**: the primary toolbar contains the Redaction icon. Clicking it opens the redaction toolbar.
-When **RedactionEditTool** is included in the toolbar settings, clicking the redaction icon in the primary toolbar will show or hide the redaction toolbar.
+### Toggle redaction toolbar
-
+- Toggle the redaction toolbar using the primary toolbar icon.
-### Display the redaction toolbar programmatically
+ - When `RedactionEditTool` is included, the viewer shows a redaction icon. Clicking it toggles the redaction toolbar without additional code.
-You can also control visibility through code by calling `viewer.toolbar.showRedactionToolbar(true/false)`.
+- Show or hide the redaction toolbar programmatically.
-The following example demonstrates toggling the redaction toolbar programmatically:
+ - Use the viewer reference and call [`toolbar.showRedactionToolbar(false)`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbar#showredactiontoolbar) to hide the redaction toolbar:
{% tabs %}
-{% highlight js tabtitle="index.js" %}
-
-import * as ReactDOM from 'react-dom/client';
+{% highlight ts tabtitle="App.tsx" %}
+{% raw %}
import * as React from 'react';
-import './index.css';
-import {
- PdfViewerComponent,
- Toolbar,
- Magnification,
- Navigation,
- LinkAnnotation,
- BookmarkView,
- ThumbnailView,
- Print,
- TextSelection,
- Annotation,
- TextSearch,
- FormFields,
- FormDesigner,
- Inject
-} from '@syncfusion/ej2-react-pdfviewer';
-
-export function App() {
- const viewerRef = React.useRef(null);
-
- const toolbarSettings = {
- toolbarItems: [
- 'OpenOption',
- 'UndoRedoTool',
- 'PageNavigationTool',
- 'MagnificationTool',
- 'PanTool',
- 'SelectionTool',
- 'CommentTool',
- 'SubmitForm',
- 'AnnotationEditTool',
- 'RedactionEditTool',
- 'FormDesignerEditTool',
- 'SearchOption',
- 'PrintOption',
- 'DownloadOption'
- ]
- };
-
- const showRedactionToolbar = () => {
- if (!viewerRef.current) return;
- viewerRef.current.toolbar.showRedactionToolbar(true);
- };
-
- const hideRedactionToolbar = () => {
- if (!viewerRef.current) return;
- viewerRef.current.toolbar.showRedactionToolbar(false);
- };
-
- return (
-
+ );
}
-
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
-
+{% endraw %}
{% endhighlight %}
{% endtabs %}
-[View Sample in GitHub](https://github.com/SyncfusionExamples/react-pdf-viewer-examples)
+**Expected result**: the two buttons above the viewer show and hide the redaction toolbar on demand.
+
+## Troubleshooting
+
+- If redaction icon not visible, ensure if `'RedactionEditTool'` is added to [`toolbarSettings.toolbarItems`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbarsettings#toolbaritems) and [`Toolbar`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbar) is included in ``.
-Refer to the following image for details:
+- If toolbar buttons have no effect, verify [`resourceUrl`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#resourceurl) points to a reachable `ej2-pdfviewer-lib` bundle appropriate for your viewer version.
-
+- If viewer fails to load PDF, use a public PDF URL or configure a server-side service endpoint.
-## See also
+## Related topics
-* [Adding the redaction annotation in PDF viewer](../redaction/overview)
-* [UI interactions](./ui-interaction)
-* [Programmatic support](./programmatic-support)
-* [Mobile view](./mobile-view)
-* [Search Text and Redact](./search-redact)
\ No newline at end of file
+- [Adding the redaction annotation in PDF viewer](../redaction/overview)
+- [Redaction UI interactions](./ui-interactions)
+- [Programmatic support](./programmatic-support)
+- [Mobile view](./mobile-view)
+- [Search Text and Redact](./search-redact)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/Redaction/ui-interaction.md b/Document-Processing/PDF/PDF-Viewer/react/Redaction/ui-interaction.md
index f0ddd480e6..395d774a91 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/Redaction/ui-interaction.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/Redaction/ui-interaction.md
@@ -1,135 +1,108 @@
---
layout: post
title: Redaction UI interactions in React PDF Viewer | Syncfusion
-description: Learn about UI interactions in Redaction annotations of the Syncfusion React PDF Viewer component.
+description: Learn about UI interactions like add, edit and modify in Redaction annotations of the Syncfusion React PDF Viewer component.
platform: document-processing
control: PDF Viewer
documentation: ug
---
-# Redaction UI interactions in React PdfViewer
+# Redaction UI interactions in React PDF Viewer
-## Add redaction annotations from the toolbar
+## Overview
-Use the redaction tool in the toolbar to draw over content that should be hidden. After marking, an annotation can display overlay text (for example, “Confidential”) and can be styled using fill color and other properties.
+This guide explains how to use the Redaction UI in the Syncfusion React PDF Viewer: drawing redaction marks, customizing their appearance, deleting marks, redacting whole pages, and applying redaction. The page provides step-by-step UI instructions to redact a PDF.
-
+## Prerequisites
-#### Redaction annotations are interactive
+- A React project with PDF Viewer added to it. See [getting started guide](../getting-started)
+- The EJ2 React PDF Viewer version you use must include the Redaction feature.
-* **Movable** – Drag and reposition the annotation within the same page.
-
+## Steps
-* **Resizable** – Resize the annotation to cover the required area.
-
+1. Enable the Redaction tool
-N> The redaction tool is hidden by default. Customize the toolbar to include it. For instructions, see the [Toolbar customization](../toolbar).
+ - Open the viewer with the [`toolbarSettings.toolbarItems`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbarsettings#toolbaritems) configured to include the Redaction tool.
+ - The Redaction tool is hidden by default; adding it to [`toolbarItems`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbarsettings#toolbaritems) makes it visible.
-## Add redaction annotations using the context menu
+2. Add a redaction annotation from the toolbar
-In addition to the toolbar, you can add redaction annotations directly from the context menu. Select the text or region, right‑click (or long‑press on mobile), and choose the **Redact Annotation** option. This creates a redaction mark over the selected content.
+ - Select the Redaction tool in the toolbar, then draw a rectangle over the text or graphics to hide.
-
+ 
-## Update redaction properties
+3. Add a redaction annotation from the context menu
-After adding a redaction annotation, you can update its properties through the property panel or programmatically.
+ - Select text or region, right‑click (or long‑press on mobile), and choose **Redact Annotation**.
-### Update using the property panel
+ 
-When a redaction annotation is selected, a two‑tab property panel (General and Appearance) lets you customize text and styling. Changes are reflected instantly on the redaction mark.
+4. Move or resize a redaction annotation
-The property panel can be opened in two ways:
+ - Drag to move the box
-* By clicking the **redaction property panel** icon in the toolbar.
-
+ 
-* By right‑clicking (or long‑pressing) the annotation and choosing **Properties** from the context menu.
-
+ - Drag the handles to resize.
-#### General tab
+ 
-Use the General tab to define how the content will look after redaction. These settings control the final, burned‑in result and provide a live preview on hover.
+5. Update redaction properties using the property panel
-* Use Overlay Text – Enable to show text (for example, Confidential) over the redacted area.
-* Overlay Text – Enter the text to display.
-* Repeat Overlay Text – Tile the text to cover the whole region.
+ - Select an annotation and open the Property Panel from the toolbar icon or choose **Properties** from the context menu.
-
+ 
-* Font options – Choose family, size, color, and alignment for the overlay text.
-* Fill Color – Select the color that will fill the region after redaction is applied.
+ 
-
+ - General tab: set Overlay Text, Repeat Overlay Text, font, and final Fill Color (these values are used when you apply redaction).
-Note: Hovering the mouse over a redaction annotation shows a preview of this final look. After you click Apply Redaction, these settings are flattened into the page and can’t be edited. Tip: Click Save in the dialog to keep your changes.
+ 
-#### Appearance tab
+ 
-Use the Appearance tab to style the redaction annotation itself (before applying). These options help you see and manage the box on the page but do not change the final redacted output.
+ - Appearance tab: style the temporary annotation (fill, outline, opacity).
-* Fill Color – Sets the annotation’s fill while you review and move/resize it.
-* Outline Color – Optional border for the annotation.
-* Fill Opacity – Controls how transparent the annotation appears during review.
+ 
-Note: The Appearance tab affects only the temporary annotation. The final look after applying redaction comes from the General tab settings.
+6. Delete a redaction annotation
-
+ - Right‑click the annotation and select **Delete**, press the **Delete** key, or click the toolbar Delete button.
-### What changes after applying redaction?
+ 
-When you click Apply Redaction:
+ 
-* The selected content is permanently removed from the page.
-* The redaction region is flattened into the page with a solid fill that uses the General tab Fill Color.
-* If overlay text was enabled, the text is burned into the page. If Repeat Overlay Text was enabled, the text is tiled across the region.
-* All properties become read‑only. You cannot edit overlay text, fill color, outline, or opacity after applying. Set the final look in the General tab and use the Appearance tab only to style the annotation before you apply.
+7. Redact pages using the UI
-## Delete redaction annotations
+ - Use **Redact Pages** from the toolbar to mark whole pages (Current, Odd, Even, or Specific page ranges). Click **Save** to apply page marks.
-Delete redaction annotations using any of the following:
+ 
-* **Right-click and select Delete** from the context menu.
+8. Apply redaction
-
+ - Click **Apply Redaction** in the toolbar or select **Apply redactions** in context menu to permanently remove marked content.
-* **Click the Delete button** on the toolbar.
-
+ 
-* **Press the Delete key** after selecting the annotation.
+ 
-## Redact pages using the UI
+ - A confirmation dialog appears before changes are flattened.
-Entire pages can be marked for redaction using the **Redact Pages** option in the toolbar. Clicking the icon opens a dialog with options:
+ 
-* **Current Page** – Redacts the page currently in view.
-* **Odd Pages Only** – Redacts all odd‑numbered pages.
-* **Even Pages Only** – Redacts all even‑numbered pages.
-* **Specific Pages** – Enter page numbers or ranges (e.g., 1, 3–5, 7) to redact.
+ - After applying: the selected content is permanently removed, overlay text (if enabled) is burned in, and properties become read‑only.
-After choosing the range, click **Save** to apply redaction marks to the selected pages.
+## Troubleshooting
-
+- Redaction tool not visible: ensure you added `RedactionEditTool` to [`toolbarSettings.toolbarItems`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbarsettings#toolbaritems) and injected required services.
+- Apply Redaction disabled: there are no redaction annotations present; add at least one mark.
+- Final redacted content not editable: this is expected — applied redaction flattens content and becomes read‑only. Keep a backup of the original file before applying.
-## Apply redaction from the toolbar
+## Related topics
-The **Apply Redaction** button permanently removes all marked content from the document.
-
-* The button is disabled when no redaction annotations exist.
-* It automatically enables once at least one annotation is present.
-
-
-
-A confirmation dialog appears before applying redaction to ensure you acknowledge the irreversible nature of the process.
-
-
-
-N> Redaction is permanent. Once applied, the original content cannot be restored.
-
-## See also
-
-* [Overview of Redaction](./overview)
-* [Programmatic Support in Redaction](./programmatic-support)
-* [Redaction in Mobile View](./mobile-view)
-* [Redaction Toolbar](./toolbar)
-* [Search Text and Redact](./search-redact)
+- [Redaction overview](./overview)
+- [Programmatic Support in Redaction](./programmatic-support)
+- [Redaction in Mobile View](./mobile-view)
+- [Redaction Toolbar](./toolbar)
+- [Search Text and Redact](./search-redact)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/accessibility.md b/Document-Processing/PDF/PDF-Viewer/react/accessibility.md
index 07fe349bc3..bd111fd596 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/accessibility.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/accessibility.md
@@ -10,9 +10,7 @@ domainurl: ##DomainURL##
# Accessibility in Syncfusion PDF Viewer components React
-The PDF Viewer component followed the accessibility guidelines and standards, including [ADA](https://www.ada.gov/), [Section 508](https://www.section508.gov/), [WCAG 2.2](https://www.w3.org/TR/WCAG22/) standards, and [WCAG roles](https://www.w3.org/TR/wai-aria/#roles) that are commonly used to evaluate accessibility.
-
-The accessibility compliance for the PDF Viewer component is outlined below.
+The PDF Viewer component follows accessibility guidelines and standards, including [ADA](https://www.ada.gov/), [Section 508](https://www.section508.gov/), [WCAG 2.2](https://www.w3.org/TR/WCAG22/), and the WCAG ARIA roles specified by WAI-ARIA. The component's accessibility compliance is outlined below.
| Accessibility Criteria | Compatibility |
| -- | -- |
@@ -40,7 +38,7 @@ The accessibility compliance for the PDF Viewer component is outlined below.
## WAI-ARIA attributes
-[WAI-ARIA](https://www.w3.org/WAI/ARIA/apg/patterns/alert/) (Accessibility Initiative – Accessible Rich Internet Applications) defines a way to increase the accessibility of web pages, dynamic content, and user interface components developed with Ajax, HTML, JavaScript,and related technologies. ARIA provides additional semantics to describe the role, state, and functionality of web components. The following ARIA attributes are used in the PDF Viewer component
+[WAI-ARIA](https://www.w3.org/WAI/ARIA/apg/patterns/alert/) (Accessible Rich Internet Applications) provides semantics to describe the role, state, and functionality of web components. The following ARIA attributes are used by the PDF Viewer component.
| Attributes | Purpose |
| --- | --- |
@@ -60,7 +58,7 @@ The accessibility compliance for the PDF Viewer component is outlined below.
## Keyboard interaction
-The PDF Viewer component followed the [keyboard interaction](https://www.w3.org/WAI/ARIA/apg/patterns/alert/#keyboardinteraction) guideline, making it easy for people who use assistive technologies (AT) and those who completely rely on keyboard navigation. The following keyboard shortcuts are supported by the Message component.
+The PDF Viewer component follows the [keyboard interaction](https://www.w3.org/WAI/ARIA/apg/patterns/alert/#keyboardinteraction) guideline to support users of assistive technologies and users who rely on keyboard navigation. The following keyboard shortcuts are supported by the PDF Viewer component.
| **Press (Windows)** |**Press (Macintosh)** | **To do this** |
| --- | --- | --- |
@@ -95,15 +93,13 @@ The PDF Viewer component followed the [keyboard interaction](https://www.w3.org/
|Shift + H |Shift + H |Enable pan mode|
|Shift + V |Shift + V |Enable text selection mode|
-The current implementation of our PDF Viewer includes keyboard shortcuts for various functions like scrolling, zooming, text search, printing, and annotation deletion.
-
-To enhance user experience, we're adding additional keyboard shortcuts for actions such as navigating between pages, accessing specific pages, toggling annotation tools, and displaying PDF elements like outlines, annotations, bookmarks, and thumbnails.
+The current implementation of the PDF Viewer includes keyboard shortcuts for scrolling, zooming, text search, printing, annotation deletion, and other common actions.
-To support this, we're introducing a new class called **commandManager**, which handles custom commands triggered by specific key gestures. These custom commands will be defined by users and executed accordingly.
+Additional keyboard shortcuts support navigation between pages, direct access to specific pages, toggling annotation tools, and displaying PDF elements such as outlines, annotations, bookmarks, and thumbnails.
-The **commandManager** will have a parameter called Commands, which will hold the collection of custom keyboard commands specified by users. Each custom command will be represented by a KeyboardCommand class, containing the `command name` and associated `keyboard combination`.
+To support custom keyboard actions, the implementation includes a `commandManager` construct that handles commands triggered by specific key gestures. The `commandManager` exposes a `Commands` parameter that contains a collection of custom keyboard commands. Each custom command is represented by a `KeyboardCommand` object containing a `name` and an associated `gesture` description.
-Additionally, we're introducing the **keyboardCustomCommands** parameter for the CommandManager, which will utilize the EventCallback to handle keyboard events and trigger appropriate methods when specific key combinations are pressed.
+A `keyboardCustomCommands` callback is available to handle keyboard events and trigger custom behavior when a defined key combination is detected.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
@@ -237,18 +233,18 @@ root.render();
{% endhighlight %}
{% endtabs %}
-Each `keyboardCommand` object consists of a name property, specifying the `name` of the `custom command`, and a `gesture property`, defining the key gesture associated with the command.
+Each `keyboardCommand` object includes a `name` property that identifies the command and a `gesture` property that defines the key gesture associated with the command.
-For example, the first command named `customCopy` is associated with the **G** key and requires both the **Shift** and **Alt** modifier keys to be pressed simultaneously.
+For example, a command named `customCopy` can be associated with the **G** key together with the **Shift** and **Alt** modifiers.
-Additionally, there's an explanation of the key modifiers used in the gestures:
+Key modifier encodings used in gesture definitions are as follows:
-* Ctrl corresponds to the Control key, represented by the value `1`.
-* Alt corresponds to the Alt key, represented by the value `2`.
-* Shift corresponds to the Shift key, represented by the value `4`.
-* Meta corresponds to the Command key on macOS or the Windows key on Windows, represented by the value `8`.
+- Control (Ctrl): `1`
+- Alt: `2`
+- Shift: `4`
+- Meta (Command on macOS or Windows key on Windows): `8`
-This setup allows users to perform custom actions within the PDF viewer by pressing specific key combinations, enhancing the user experience and providing more efficient navigation and interaction options.
+These gesture definitions enable users to invoke custom actions in the PDF Viewer by pressing specified key combinations, improving navigation and interaction efficiency.
## Ensuring accessibility
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-event.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-event.md
index edecf46068..5b159c7aac 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-event.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-event.md
@@ -8,39 +8,39 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Annotations Events in React PDF Viewer control
+# Annotation events in React PDF Viewer component
-The PDF Viewer component triggers various events based on user interactions and changes in the component's state. These events can be used to perform actions when a specific event occurs. This section describes the events available in the PDF Viewer component.
+The PDF Viewer raises events for annotation and signature interactions (add, remove, move, resize, select, etc.). Handle these events to integrate custom workflows, telemetry, or UI updates. Code samples below demonstrate typical handlers — code blocks are preserved unchanged.
| Event | Description |
| ------------------------------------------------------------------ | ---------------------------------------------------------------------------------- |
-| [`annotationAdd`](#annotationadd) | Triggers when an annotation is added to a page in the PDF document. |
-| [`annotationDoubleClick`](#annotationdoubleclick) | Triggers when an annotation is double-clicked. |
-| [`annotationMouseLeave`](#annotationmouseleave) | Triggers when the mouse pointer moves away from an annotation object. |
-| [`annotationMouseover`](#annotationmouseover) | Triggers when the mouse pointer moves over an annotation object. |
-| [`annotationMove`](#annotationmove) | Triggers when an annotation is moved on a page in the PDF document. |
-| [`annotationMoving`](#annotationmoving) | Triggers while an annotation is being moved. |
-| [`annotationPropertiesChange`](#annotationpropertieschange) | Triggers when the properties of an annotation are modified on a PDF page. |
-| [`annotationRemove`](#annotationremove) | Triggers when an annotation is removed from a page in the PDF document. |
-| [`annotationResize`](#annotationresize) | Triggers when an annotation is resized on a page in the PDF document. |
-| [`annotationSelect`](#annotationselect) | Triggers when an annotation is selected on a page in the PDF document. |
-| [`annotationUnSelect`](#annotationunselect) | Triggers when an annotation is unselected on a page in the PDF document. |
-| [`beforeAddFreeText`](#beforeaddfreetext) | Triggers before adding a text in the freeText annotation. |
-| [`addSignature`](#addsignature) | Triggers when a signature is added to a page in the PDF document. |
-| [`removeSignature`](#removesignature) | Triggers when a signature is removed from a page in the PDF document. |
-| [`resizeSignature`](#resizesignature) | Triggers when a signature is resized on a page in the PDF document. |
-| [`signaturePropertiesChange`](#signaturepropertieschange) | Triggers when the properties of a signature are changed on a page in the PDF document. |
-| [`signatureSelect`](#signatureselect) | Triggers when a signature is selected on a page in the PDF document. |
-| [`signatureUnselect`](#signatureunselect) | Triggers when a signature is unselected on a page in the PDF document. |
+| [`annotationAdd`](#annotationadd) | Fires when an annotation is added to a page in the PDF document. |
+| [`annotationDoubleClick`](#annotationdoubleclick) | Fires when an annotation is double-clicked. |
+| [`annotationMouseLeave`](#annotationmouseleave) | Fires when the mouse pointer moves away from an annotation object. |
+| [`annotationMouseover`](#annotationmouseover) | Fires when the mouse pointer moves over an annotation object. |
+| [`annotationMove`](#annotationmove) | Fires when an annotation is moved on a page in the PDF document. |
+| [`annotationMoving`](#annotationmoving) | Fires while an annotation is being moved. |
+| [`annotationPropertiesChange`](#annotationpropertieschange) | Fires when the properties of an annotation are modified on a PDF page. |
+| [`annotationRemove`](#annotationremove) | Fires when an annotation is removed from a page in the PDF document. |
+| [`annotationResize`](#annotationresize) | Fires when an annotation is resized on a page in the PDF document. |
+| [`annotationSelect`](#annotationselect) | Fires when an annotation is selected on a page in the PDF document. |
+| [`annotationUnSelect`](#annotationunselect) | Fires when an annotation is unselected on a page in the PDF document. |
+| [`beforeAddFreeText`](#beforeaddfreetext) | Fires before a free-text annotation is added. |
+| [`addSignature`](#addsignature) | Fires when a signature is added to a page in the PDF document. |
+| [`removeSignature`](#removesignature) | Fires when a signature is removed from a page in the PDF document. |
+| [`resizeSignature`](#resizesignature) | Fires when a signature is resized on a page in the PDF document. |
+| [`signaturePropertiesChange`](#signaturepropertieschange) | Fires when the properties of a signature are changed on a page in the PDF document. |
+| [`signatureSelect`](#signatureselect) | Fires when a signature is selected on a page in the PDF document. |
+| [`signatureUnselect`](#signatureunselect) | Fires when a signature is unselected on a page in the PDF document. |
### annotationAdd
-The [annotationAdd](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#annotationaddevent) event is triggered when an annotation is added to a PDF document's page.
+The [annotationAdd](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#annotationaddevent) event is triggered when an annotation is added to a PDF document's page.
#### Event Arguments
-For event data, see [AnnotationAddEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotationAddEventArgs/). It provides properties such as `annotationId`, `pageNumber`, `annotationType`, and `bounds`.
+For event data, see [AnnotationAddEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotationAddEventArgs). It provides properties such as `annotationId`, `pageNumber`, `annotationType`, and `bounds`.
The following example illustrates how to handle the `annotationAdd` event.
@@ -112,11 +112,11 @@ export default App;
### annotationDoubleClick
-The [annotationDoubleClick](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#annotationdoubleclickevent) event is triggered when an annotation is double-clicked.
+The [annotationDoubleClick](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#annotationdoubleclickevent) event is triggered when an annotation is double-clicked.
#### Event Arguments
-For event data, see [AnnotationDoubleClickEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotationDoubleClickEventArgs/).
+For event data, see [AnnotationDoubleClickEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotationDoubleClickEventArgs).
The following example illustrates how to handle the `annotationDoubleClick` event.
@@ -187,11 +187,11 @@ export default App;
### annotationMouseLeave
-The [annotationMouseLeave](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#annotationmouseleaveevent) event is triggered when the user's mouse pointer moves away from an annotation object.
+The [annotationMouseLeave](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#annotationmouseleaveevent) event is triggered when the user's mouse pointer moves away from an annotation object.
#### Event Arguments
-For event data, see [AnnotationMouseLeaveEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotationMouseLeaveEventArgs/).
+For event data, see [AnnotationMouseLeaveEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotationMouseLeaveEventArgs).
The following example illustrates how to handle the `annotationMouseLeave` event.
@@ -262,11 +262,11 @@ export default App;
### annotationMouseover
-The [annotationMouseover](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#annotationmouseoverevent) event is triggered when the mouse is moved over an annotation object.
+The [annotationMouseover](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#annotationmouseoverevent) event is triggered when the mouse is moved over an annotation object.
#### Event Arguments
-For event data, see [AnnotationMouseOverEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotationMouseOverEventArgs/).
+For event data, see [AnnotationMouseOverEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotationMouseOverEventArgs).
The following example illustrates how to handle the `annotationMouseover` event.
@@ -337,11 +337,11 @@ export default App;
### annotationMove
-The [annotationMove](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#annotationmoveevent) event is triggered when an annotation is moved over the page of the PDF document.
+The [annotationMove](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#annotationmoveevent) event is triggered when an annotation is moved over the page of the PDF document.
#### Event Arguments
-For event data, see [AnnotationMoveEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotationMoveEventArgs/).
+For event data, see [AnnotationMoveEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotationMoveEventArgs).
The following example illustrates how to handle the `annotationMove` event.
@@ -412,11 +412,11 @@ export default App;
### annotationMoving
-The [annotationMoving](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#annotationmovingevent) event is triggered while an annotation is being moved.
+The [annotationMoving](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#annotationmovingevent) event is triggered while an annotation is being moved.
#### Event Arguments
-For event data, see [AnnotationMovingEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotationMovingEventArgs/).
+For event data, see [AnnotationMovingEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotationMovingEventArgs).
The following example illustrates how to handle the `annotationMoving` event.
@@ -487,11 +487,11 @@ export default App;
### annotationPropertiesChange
-The [annotationPropertiesChange](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#annotationpropertieschangeevent) event is triggered when an annotation's property is modified on a PDF document page.
+The [annotationPropertiesChange](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#annotationpropertieschangeevent) event is triggered when an annotation's property is modified on a PDF document page.
#### Event Arguments
-For event data, see [AnnotationPropertiesChangeEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotationPropertiesChangeEventArgs/). It provides properties such as `annotationId`, `pageNumber`, and `action`.
+For event data, see [AnnotationPropertiesChangeEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotationPropertiesChangeEventArgs). It provides properties such as `annotationId`, `pageNumber`, and `action`.
The following example illustrates how to handle the `annotationPropertiesChange` event.
@@ -563,11 +563,11 @@ export default App;
### annotationRemove
-The [annotationRemove](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#annotationremoveevent) event is triggered when an annotation is removed from a PDF document's page.
+The [annotationRemove](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#annotationremoveevent) event is triggered when an annotation is removed from a PDF document's page.
#### Event Arguments
-For event data, see [AnnotationRemoveEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotationRemoveEventArgs/). It provides properties such as `annotationId` and `pageNumber`.
+For event data, see [AnnotationRemoveEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotationRemoveEventArgs). It provides properties such as `annotationId` and `pageNumber`.
The following example illustrates how to handle the `annotationRemove` event.
@@ -638,11 +638,11 @@ export default App;
### annotationResize
-The [annotationResize](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#annotationresizeevent) event is triggered when an annotation is resized on a PDF document page.
+The [annotationResize](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#annotationresizeevent) event is triggered when an annotation is resized on a PDF document page.
#### Event Arguments
-For event data, see [AnnotationResizeEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotationResizeEventArgs/).
+For event data, see [AnnotationResizeEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotationResizeEventArgs).
The following example illustrates how to handle the `annotationResize` event.
@@ -713,11 +713,11 @@ export default App;
### annotationSelect
-The [annotationSelect](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#annotationselectevent) event is triggered when an annotation is selected on a PDF document's page.
+The [annotationSelect](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#annotationselectevent) event is triggered when an annotation is selected on a PDF document's page.
#### Event Arguments
-For event data, see [AnnotationSelectEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotationSelectEventArgs/).
+For event data, see [AnnotationSelectEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotationSelectEventArgs).
The following example illustrates how to handle the `annotationSelect` event.
@@ -788,11 +788,11 @@ export default App;
### annotationUnselect
-The [annotationUnselect](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#annotationunselectevent) event is triggered when an annotation is unselected from the PDF document's page.
+The [annotationUnselect](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#annotationunselectevent) event is triggered when an annotation is unselected from the PDF document's page.
#### Event Arguments
-For event data, see [AnnotationUnSelectEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotationUnSelectEventArgs/).
+For event data, see [AnnotationUnSelectEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotationUnSelectEventArgs).
The following example illustrates how to handle the `annotationUnselect` event.
@@ -863,11 +863,11 @@ export default App;
### beforeAddFreeText
-The [beforeAddFreeText](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#beforeaddfreetextevent) event is triggered before adding a text in the freeText annotation.
+The [beforeAddFreeText](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#beforeaddfreetextevent) event is triggered before adding a text in the freeText annotation.
#### Event Arguments
-For event data, see [BeforeAddFreeTextEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/beforeAddFreeTextEventArgs/).
+For event data, see [BeforeAddFreeTextEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/beforeAddFreeTextEventArgs).
The following example illustrates how to handle the `beforeAddFreeText` event.
@@ -942,11 +942,11 @@ export default App;
### addSignature
-The [addSignature](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#addsignatureevent) event is triggered when a signature is added to a page of a PDF document.
+The [addSignature](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#addsignatureevent) event is triggered when a signature is added to a page of a PDF document.
#### Event Arguments
-For event data, see [AddSignatureEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/addSignatureEventArgs/). It provides properties such as `pageNumber`.
+For event data, see [AddSignatureEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/addSignatureEventArgs). It provides properties such as `pageNumber`.
The following example illustrates how to handle the `addSignature` event.
@@ -1017,11 +1017,11 @@ export default App;
### removeSignature
-The [removeSignature](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#removesignatureevent) event is triggered when the signature is removed from the page of a PDF document.
+The [removeSignature](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#removesignatureevent) event is triggered when the signature is removed from the page of a PDF document.
#### Event Arguments
-For event data, see [RemoveSignatureEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/removeSignatureEventArgs/). It provides properties such as `pageNumber`.
+For event data, see [RemoveSignatureEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/removeSignatureEventArgs). It provides properties such as `pageNumber`.
The following example illustrates how to handle the `removeSignature` event.
@@ -1092,11 +1092,11 @@ export default App;
### resizeSignature
-The [resizeSignature](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#resizesignatureevent) event is triggered when the signature is resized and placed on a page of a PDF document.
+The [resizeSignature](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#resizesignatureevent) event is triggered when the signature is resized and placed on a page of a PDF document.
#### Event Arguments
-For event data, see [ResizeSignatureEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/resizeSignatureEventArgs/).
+For event data, see [ResizeSignatureEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/resizeSignatureEventArgs).
The following example illustrates how to handle the `resizeSignature` event.
@@ -1167,11 +1167,11 @@ export default App;
### signaturePropertiesChange
-The [signaturePropertiesChange](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#signaturepropertieschangeevent) event is triggered when the property of the signature is changed in the page of the PDF document.
+The [signaturePropertiesChange](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#signaturepropertieschangeevent) event is triggered when the property of the signature is changed in the page of the PDF document.
#### Event Arguments
-For event data, see [SignaturePropertiesChangeEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/signaturePropertiesChangeEventArgs/).
+For event data, see [SignaturePropertiesChangeEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/signaturePropertiesChangeEventArgs).
The following example illustrates how to handle the `signaturePropertiesChange` event.
@@ -1242,11 +1242,11 @@ export default App;
### signatureSelect
-The [signatureSelect](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#signatureselectevent) event is triggered when signature is selected over the page of the PDF document.
+The [signatureSelect](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#signatureselectevent) event is triggered when signature is selected over the page of the PDF document.
#### Event Arguments
-For event data, see [SignatureSelectEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/signatureSelectEventArgs/).
+For event data, see [SignatureSelectEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/signatureSelectEventArgs).
The following example illustrates how to handle the `signatureSelect` event.
@@ -1317,11 +1317,11 @@ export default App;
### signatureUnselect
-The [signatureUnselect](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#signatureunselectevent) event is triggered when signature is unselected over the page of the PDF document.
+The [signatureUnselect](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#signatureunselectevent) event is triggered when signature is unselected over the page of the PDF document.
#### Event Arguments
-For event data, see [SignatureUnSelectEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/signatureUnSelectEventArgs/).
+For event data, see [SignatureUnSelectEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/signatureUnSelectEventArgs).
The following example illustrates how to handle the `signatureUnselect` event.
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-permission.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-permission.md
new file mode 100644
index 0000000000..e4055ffbe7
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-permission.md
@@ -0,0 +1,144 @@
+---
+layout: post
+title: Annotations Permission in React PDF Viewer | Syncfusion
+description: Learn here all about how to use annotation permissions in Syncfusion React PDF Viewer using programmatic APIs.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Annotation permissions in React
+
+Use [annotationSettings](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#annotationsettings) to control creation-time permissions and default behavior for annotations in the PDF Viewer. These settings establish defaults for annotations created through the UI and programmatic flows.
+
+## Common permissions
+
+- `isLock`: Lock an annotation so it cannot be moved, resized, edited, or deleted.
+- `skipPrint`: Exclude annotations from the print output when printing from the viewer.
+- `skipDownload`: Exclude annotations from the exported/downloaded PDF.
+
+Example: set default `annotationSettings` as a JSX prop on `PdfViewerComponent`.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent, Inject,
+ Toolbar, Annotation, TextSelection,
+ AllowedInteraction
+} from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Individual permissions
+
+- `isPrint`: Controls whether a specific annotation participates in printing. Set to `false` to exclude only that annotation from print output.
+- `isLock`: Lock or unlock a specific annotation instance programmatically.
+
+Example: set per-annotation defaults for text markup, shapes, and measurements as JSX props.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent, Inject,
+ Toolbar, Annotation, TextSelection
+} from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+Behavior notes
+- isLock true: The annotation is locked; users cannot move, resize, or edit it through the UI until it is unlocked.
+- skipPrint true: All annotations are omitted from the print output initiated from the viewer.
+- skipDownload true: All annotations are omitted from the exported/downloaded PDF from the viewer.
+- isPrint on an individual annotation: Use this when you only want to exclude a particular annotation from printing while leaving others printable.
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/react-pdf-viewer-examples)
+
+## See also
+
+- [Annotation Overview](../overview)
+- [Annotation Types](../annotation/annotation-types/area-annotation)
+- [Annotation Toolbar](../toolbar-customization/annotation-toolbar)
+- [Create and Modify Annotation](../annotation/create-modify-annotation)
+- [Customize Annotation](../annotation/customize-annotation)
+- [Remove Annotation](../annotation/delete-annotation)
+- [Handwritten Signature](../annotation/signature-annotation)
+- [Export and Import Annotation](../annotation/export-import/export-annotation)
+- [Annotation in Mobile View](../annotation/annotations-in-mobile-view)
+- [Annotation Events](../annotation/annotation-event)
+- [Annotation API](../annotation/annotations-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/area-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/area-annotation.md
new file mode 100644
index 0000000000..1344839ead
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/area-annotation.md
@@ -0,0 +1,258 @@
+---
+layout: post
+title: Add Area Measurement Annotations in React PDF Viewer | Syncfusion
+description: Learn how to enable, draw, customize, and manage Area measurement annotations in the Syncfusion React PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Add Area Measurement Annotations in React PDF Viewer
+Area is a measurement annotation used to calculate the surface of a closed region on a PDF page—ideal for engineering, construction, or design reviews.
+
+
+
+## Enable Area Measurement
+
+To enable Area annotations, inject the following modules into the React PDF Viewer:
+
+- [**Annotation**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#annotation)
+- [**Toolbar**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#toolbar)
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Annotation } from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Add Area Annotation
+
+### Add Area Using the Toolbar
+
+1. Open the **Annotation Toolbar**.
+2. Select **Measurement** → **Area**.
+3. Click points to define the polygon; double‑click to close and finalize the area.
+
+
+
+> **Tip:** If Pan mode is active, choosing a measurement tool switches the viewer into the appropriate interaction mode for a smoother workflow.
+
+### Enable Area Mode
+Programmatically switch the viewer into Area mode.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function enableAreaMode() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('Area');
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+#### Exit Area Mode
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function exitAreaMode() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('None');
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+### Add Area Programmatically
+Use the [`addAnnotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#addannotation) API to draw an area by providing **vertexPoints** for a closed region.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function addArea() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.addAnnotation('Area', {
+ offset: { x: 200, y: 500 },
+ pageNumber: 1,
+ vertexPoints: [
+ { x: 200, y: 500 },
+ { x: 288, y: 499 },
+ { x: 289, y: 553 },
+ { x: 200, y: 500 }
+ ]
+ });
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Customize Area Appearance
+Configure default properties using the [`Area Settings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#areasettings) property (for example, default **fill color**, **stroke color**, **opacity**).
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Manage Area (Move, Reshape, Edit, Delete)
+- **Move**: Drag inside the polygon to reposition it.
+- **Reshape**: Drag any vertex handle to adjust points and shape.
+
+### Edit Perimeter
+
+#### Edit Perimeter (UI)
+
+- Edit the **fill color** using the Edit Color tool.
+ 
+- Edit the **stroke color** using the Edit Stroke Color tool.
+ 
+- Edit the **border thickness** using the Edit Thickness tool.
+ 
+- Edit the **opacity** using the Edit Opacity tool.
+ 
+- Open **Right Click → Properties** for additional line‑based options.
+ 
+
+#### Edit Area Programmatically
+
+Update properties and call `editAnnotation()`.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function editAreaProgrammatically() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ for (const ann of viewer.annotationCollection) {
+ if (ann.subject === 'Area calculation') {
+ ann.strokeColor = '#0000FF';
+ ann.thickness = 2;
+ ann.fillColor = '#FFFF00';
+ viewer.annotation.editAnnotation(ann);
+ break;
+ }
+ }
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+### Delete Distance Annotation
+
+Delete Distance Annotation via UI (toolbar/context menu) or programmatically. For supported workflows and APIs, see [**Delete Annotation**](../remove-annotations).
+
+## Set Default Properties During Initialization
+Apply defaults for Area using the [`areaSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#areasettings) property.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Set Properties While Adding Individual Annotation
+Pass per‑annotation values directly when calling [`addAnnotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#addannotation).
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function addStyledArea() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.addAnnotation('Area', {
+ offset: { x: 210, y: 510 },
+ pageNumber: 1,
+ vertexPoints: [
+ { x: 210, y: 510 },
+ { x: 300, y: 510 },
+ { x: 305, y: 560 },
+ { x: 210, y: 510 }
+ ],
+ strokeColor: '#EA580C',
+ fillColor: '#FEF3C7',
+ thickness: 2,
+ opacity: 0.85
+ });
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Scale Ratio and Units
+- Use **Scale Ratio** from the context menu to set the actual‑to‑page scale.
+ 
+- Supported units include **Inch, Millimeter, Centimeter, Point, Pica, Feet**.
+ 
+
+### Set Default Scale Ratio During Initialization
+Configure scale defaults using [`measurementSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#mesaurementsettings).
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Handle Area Events
+
+Listen to annotation life-cycle events (add/modify/select/remove). For the full list and parameters, see [**Annotation Events**](../annotation-event).
+
+## Export and Import
+Area measurements can be exported or imported with other annotations. For workflows and supported formats, see [**Export and Import annotations**](../export-import-annotations).
+
+## See Also
+- [Annotation Toolbar](../../toolbar-customization/annotation-toolbar)
+- [Customize Context Menu](../../context-menu/custom-context-menu)
+- [Comments Panel](../comments)
+- [Annotation Events](../annotation-event)
+- [Export and Import annotations](../export-import-annotations)
+- [Delete Annotations](../remove-annotations)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/arrow-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/arrow-annotation.md
new file mode 100644
index 0000000000..1584c81f09
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/arrow-annotation.md
@@ -0,0 +1,259 @@
+---
+layout: post
+title: Arrow Annotation (Shape) in React PDF Viewer | Syncfusion
+description: Learn how to enable, apply, customize, and manage Arrow annotations in the Syncfusion React PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Arrow Annotation (Shape) in React PDF Viewer
+Arrow annotations let users point, direct attention, or indicate flow on PDFs—useful for callouts, direction markers, and connectors during reviews. You can add arrows from the toolbar, switch to arrow mode programmatically, customize appearance, edit/delete them in the UI, and export them with the document.
+
+
+
+## Enable Arrow Annotation in the Viewer
+
+To enable Arrow annotations, inject the following modules into the React PDF Viewer:
+
+- [**Annotation**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#annotation)
+- [**Toolbar**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#toolbar)
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Annotation } from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Add Arrow Annotation
+
+### Add Arrow Annotation Using the Toolbar
+1. Open the **Annotation Toolbar**.
+2. Select **Shapes** → **Arrow**.
+3. Click and drag on the PDF page to draw the arrow.
+
+
+
+N> When in Pan mode, selecting a shape tool automatically switches the viewer to selection mode for smooth interaction.
+
+### Enable Arrow Mode
+Switch the viewer into highlight mode using `setAnnotationMode('Arrow')`.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function enableArrowMode() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('Arrow');
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+#### Exit Arrow Mode
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function exitArrowMode() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('None');
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+### Add Arrow Programmatically
+Use the [`addAnnotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#addannotation) API to draw an arrow at a specific location (defined by two **vertexPoints**).
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function addArrow() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.addAnnotation('Arrow', {
+ offset: { x: 200, y: 370 },
+ pageNumber: 1,
+ vertexPoints: [
+ { x: 200, y: 370 },
+ { x: 350, y: 370 }
+ ]
+ });
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Customize Arrow Appearance
+Configure default arrow appearance (fill color, stroke color, thickness, opacity) using the [`arrowSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#arrowsettings) property.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+N> For **Line** and **Arrow** annotations, **Fill Color** is available only when an arrowhead style is applied at the **Start** or **End**. If both are `None`, lines do not render fill and the Fill option remains disabled.
+
+## Manage Arrow (Edit, Move, Resize, Delete)
+### Edit Arrow
+
+#### Edit Arrow (UI)
+- Select a Arrow to view resize handles.
+- Drag endpoints to adjust length/angle.
+- Edit stroke color, opacity, and thickness using the annotation toolbar.
+
+
+
+Use the annotation toolbar:
+- **Edit Color** tool
+
+
+- **Edit Opacity** slider
+
+
+- **Line Properties**
+Open the Line Properties dialog via **Right Click → Properties**.
+
+
+
+#### Edit Arrow Programmatically
+
+Modify an existing Arrow programmatically using `editAnnotation()`.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function editArrowProgrammatically() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ for (const annot of viewer.annotationCollection) {
+ if (annot.subject === 'Arrow') {
+ annot.strokeColor = '#0000ff';
+ annot.thickness = 2;
+ annot.fillColor = '#ffff00';
+ viewer.annotation.editAnnotation(annot);
+ break;
+ }
+ }
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+### Delete Arrow
+
+The PDF Viewer supports deleting existing annotations through the UI and API.
+See [**Delete Annotation**](../remove-annotations) for full behavior and workflows.
+
+### Comments
+
+Use the [**Comments panel**](../comments) to add, view, and reply to threaded discussions linked to arrow annotations. It provides a dedicated interface for collaboration and review within the PDF Viewer.
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual arrow annotations by passing values directly during [`addAnnotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#addannotation).
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function addMultipleArrows() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+
+ // Arrow 1
+ viewer.annotation.addAnnotation('Arrow', {
+ offset: { x: 200, y: 230 },
+ pageNumber: 1,
+ vertexPoints: [
+ { x: 200, y: 230 },
+ { x: 350, y: 230 }
+ ],
+ fillColor: '#ffff00',
+ strokeColor: '#0066ff',
+ thickness: 2,
+ opacity: 0.9,
+ author: 'User 1'
+ });
+
+ // Arrow 2
+ viewer.annotation.addAnnotation('Arrow', {
+ offset: { x: 220, y: 300 },
+ pageNumber: 1,
+ vertexPoints: [
+ { x: 220, y: 300 },
+ { x: 400, y: 300 }
+ ],
+ fillColor: '#ffef00',
+ strokeColor: '#ff1010',
+ thickness: 3,
+ opacity: 0.9,
+ author: 'User 2'
+ });
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Disable Arrow Annotation
+
+Disable shape annotations (Line, Arrow, Rectangle, Circle, Polygon) using the [`enableShapeAnnotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#enableshapeannotation) property.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Handle Arrow Events
+
+The PDF viewer provides annotation life-cycle events that notify when Arrow annotations are added, modified, selected, or removed.
+For the full list of available events and their descriptions, see [**Annotation Events**](../annotation-event)
+
+## Export and Import
+The PDF Viewer supports exporting and importing annotations. For details on supported formats and workflows, see [**Export and Import annotations**](../export-import-annotations).
+
+## See Also
+- [Annotation Toolbar](../../toolbar-customization/annotation-toolbar)
+- [Customize Context Menu](../../context-menu/custom-context-menu)
+- [Comments Panel](../comments)
+- [Annotation Events](../annotation-event)
+- [Export and Import annotations](../export-import-annotations)
+- [Delete Annotations](../remove-annotations)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/circle-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/circle-annotation.md
new file mode 100644
index 0000000000..35e05b4ce1
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/circle-annotation.md
@@ -0,0 +1,253 @@
+---
+layout: post
+title: Circle Annotation (Shape) in React PDF Viewer | Syncfusion
+description: Learn how to enable, apply, customize, and manage Circle annotations in the Syncfusion React PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Circle Annotation (Shape) in React PDF Viewer
+Circle annotations let users highlight circular regions or draw emphasis bubbles on PDFs for reviews and markups. You can add circles from the toolbar, switch to circle mode programmatically, customize appearance, edit/delete them in the UI, and export them with the document.
+
+
+
+## Enable Circle Annotation in the Viewer
+
+To enable Line annotations, inject the following modules into the React PDF Viewer:
+
+- [**Annotation**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#annotation)
+- [**Toolbar**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#toolbar)
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Annotation } from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Add Circle Annotation
+
+### Apply Circle Annotation Using the Toolbar
+1. Open the **Annotation Toolbar**.
+2. Select **Shapes** → **Circle**.
+3. Click and drag on the PDF page to draw the circle (ellipse).
+
+
+
+N> When in Pan mode, selecting a shape tool automatically switches the viewer to selection mode for smooth interaction.
+
+### Enable Circle Mode
+
+Switch the viewer into highlight mode using `setAnnotationMode('Circle')`.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function enableCircleMode() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('Circle');
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+#### Exit Circle Mode
+
+Switch back to normal mode using:
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function exitCircleMode() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('None');
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+### Add Circle Programmatically
+Use the [`addAnnotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#addannotation) API to draw a circle (ellipse) at a specific location.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function addCircle() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.addAnnotation('Circle', {
+ offset: { x: 200, y: 620 },
+ pageNumber: 1,
+ width: 90,
+ height: 90
+ });
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Customize Circle Appearance
+Configure default circle appearance (fill color, stroke color, thickness, opacity) using the [`circleSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#circlesettings) property.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Manage Circle (Edit, Move, Resize, Delete)
+
+### Edit Circle
+
+#### Edit Circle (UI)
+
+- Select a Circle to view resize handles.
+- Drag any side/corner to resize; drag inside the shape to move it.
+- Edit **fill**, **stroke**, **thickness**, and **opacity** using the annotation toolbar.
+
+
+
+Use the annotation toolbar:
+- **Edit fill Color** tool
+
+
+- **Edit stroke Color** tool
+
+
+- **Edit Opacity** slider
+
+
+- **Edit Thickness** slider
+
+
+#### Edit Circle Programmatically
+
+Modify an existing Circle programmatically using `editAnnotation()`.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function editCircleProgrammatically() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ for (const annot of viewer.annotationCollection) {
+ if (annot.subject === 'Circle') {
+ annot.strokeColor = '#0000ff';
+ annot.thickness = 2;
+ annot.fillColor = '#ffff00';
+ viewer.annotation.editAnnotation(annot);
+ break;
+ }
+ }
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+### Delete Circle
+The PDF Viewer supports deleting existing annotations through the UI and API.
+See [**Delete Annotation**](../remove-annotations) for full behavior and workflows.
+
+### Comments
+Use the [**Comments panel**](../comments) to add, view, and reply to threaded discussions linked to circle annotations. It provides a dedicated interface for collaboration and review within the PDF Viewer.
+
+## Set properties while adding Individual Annotation
+Set properties for individual circle annotations by passing values directly during [`addAnnotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#addannotation).
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function addMultipleCircles() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+
+ // Circle 1
+ viewer.annotation.addAnnotation('Circle', {
+ offset: { x: 200, y: 620 },
+ pageNumber: 1,
+ width: 100,
+ height: 100,
+ opacity: 0.9,
+ strokeColor: '#ff6a00',
+ fillColor: '#ffa500',
+ author: 'User 1'
+ });
+
+ // Circle 2
+ viewer.annotation.addAnnotation('Circle', {
+ offset: { x: 340, y: 620 },
+ pageNumber: 1,
+ width: 80,
+ height: 80,
+ opacity: 0.85,
+ strokeColor: '#ff1010',
+ fillColor: '#ffe600',
+ author: 'User 2'
+ });
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Disable Circle Annotation
+Disable shape annotations (Line, Arrow, Rectangle, Circle, Polygon) using the [`enableShapeAnnotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#enableshapeannotation) property.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Handle Circle Events
+
+The PDF viewer provides annotation life-cycle events that notify when Circle annotations are added, modified, selected, or removed.
+For the full list of available events and their descriptions, see [**Annotation Events**](../annotation-event)
+
+## Export and Import
+
+The PDF Viewer supports exporting and importing annotations. For details on supported formats and workflows, see [**Export and Import annotations**](../export-import-annotations).
+
+## See Also
+- [Annotation Toolbar](../../toolbar-customization/annotation-toolbar)
+- [Customize Context Menu](../../context-menu/custom-context-menu)
+- [Comments Panel](../comments)
+- [Annotation Events](../annotation-event)
+- [Export and Import annotations](../export-import-annotations)
+- [Delete Annotations](../remove-annotations)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/distance-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/distance-annotation.md
new file mode 100644
index 0000000000..aac4f084ff
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/distance-annotation.md
@@ -0,0 +1,255 @@
+---
+layout: post
+title: Add Distance Annotations in React PDF Viewer \ Syncfusion
+description: Learn how to enable, measure, customize, and manage Distance annotations in the Syncfusion React PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Add Distance Annotations in React PDF Viewer
+Distance is a measurement annotation used to measure the length between two points on a PDF page. Use it for precise reviews, markups, or engineering measurements.
+
+
+
+## Enable Distance Annotation
+
+To enable Distance annotation, inject the following modules into the React PDF Viewer:
+
+- [**Annotation**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#annotation)
+- [**Toolbar**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#toolbar)
+
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Annotation } from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Add Distance Annotation
+
+### Add Distance Using the Toolbar
+1. Open the **Annotation Toolbar**.
+2. Select **Measurement** → **Distance**.
+3. Click to set the start point, then click again to set the end point.
+
+
+
+N> If Pan mode is active, choosing a measurement tool switches the viewer into the appropriate interaction mode for a smoother workflow.
+
+### Enable Distance Mode
+Programmatically switch the viewer into Distance mode.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function enableDistanceMode() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('Distance');
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+#### Exit Distance Mode
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function exitDistanceMode() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('None');
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+### Add Distance Programmatically
+Use the [`addAnnotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#addannotation) API to draw a Distance measurement by providing two **vertexPoints**.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function addDistance() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.addAnnotation('Distance', {
+ offset: { x: 200, y: 230 },
+ pageNumber: 1,
+ vertexPoints: [
+ { x: 200, y: 230 },
+ { x: 350, y: 230 }
+ ]
+ });
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Customize Distance Appearance
+Configure default properties using the [`Distance Settings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#distancesettings) property (for example, default **fill color**, **stroke color**, **opacity**).
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Manage Distance (Move, Resize, Edit, Delete)
+- **Move**: Drag the measurement to reposition it.
+- **Resize**: Drag the end handles to adjust the length.
+
+### Edit Distance
+
+#### Edit Distance (UI)
+Change **stroke color**, **thickness**, and **opacity** using the annotation toolbar tools.
+
+- Edit the **fill color** using the Edit Color tool.
+ 
+- Edit the **stroke color** using the Edit Stroke Color tool.
+ 
+- Edit the **border thickness** using the Edit Thickness tool.
+ 
+- Edit the **opacity** using the Edit Opacity tool.
+ 
+- Open **Right Click → Properties** for additional line-based options.
+
+
+#### Edit Distance Programmatically
+Update properties and call `editAnnotation()`.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function editDistanceProgrammatically() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ for (const ann of viewer.annotationCollection) {
+ if (ann.subject === 'Distance calculation') {
+ ann.strokeColor = '#0000FF';
+ ann.thickness = 2;
+ ann.opacity = 0.8;
+ viewer.annotation.editAnnotation(ann);
+ break;
+ }
+ }
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+### Delete Distance Annotation
+
+Delete Distance Annotation via UI (toolbar/context menu) or programmatically. For supported workflows and APIs, see [**Delete Annotation**](../remove-annotations).
+
+## Set Default Properties During Initialization
+Apply defaults for Distance using the [`distanceSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#distancesettings) property.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Set Properties While Adding Individual Annotation
+Pass per-annotation values directly when calling [`addAnnotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#addannotation).
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function addStyledDistance() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.addAnnotation('Distance', {
+ offset: { x: 220, y: 260 },
+ pageNumber: 1,
+ vertexPoints: [
+ { x: 220, y: 260 },
+ { x: 360, y: 260 }
+ ],
+ strokeColor: '#059669',
+ opacity: 0.9,
+ fillColor: '#D1FAE5',
+ thickness: 2
+ });
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Scale Ratio and Units
+
+- Use **Scale Ratio** from the context menu to set the actual-to-page scale.
+ 
+- Supported units include **Inch, Millimeter, Centimeter, Point, Pica, Feet**.
+ 
+
+### Set Default Scale Ratio During Initialization
+Configure scale defaults using `measurementSettings`.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Handle Distance Events
+
+Listen to annotation life-cycle events (add/modify/select/remove). For the full list and parameters, see [**Annotation Events**](../annotation-event).
+
+## Export and Import
+Distance measurements can be exported or imported with other annotations. For workflows and supported formats, see [**Export and Import annotations**](../export-import-annotations).
+
+## See Also
+- [Annotation Toolbar](../../toolbar-customization/annotation-toolbar)
+- [Customize Context Menu](../../context-menu/custom-context-menu)
+- [Comments Panel](../comments)
+- [Annotation Events](../annotation-event)
+- [Export and Import annotations](../export-import-annotations)
+- [Delete Annotations](../remove-annotations)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/free-text-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/free-text-annotation.md
new file mode 100644
index 0000000000..c4816bc1e2
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/free-text-annotation.md
@@ -0,0 +1,248 @@
+---
+layout: post
+title: Add Free Text Annotations in React PDF Viewer | Syncfusion
+description: Learn how to enable, add, customize, and manage Free Text (text box) annotations in the Syncfusion React PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Add Free Text Annotations in React PDF Viewer
+Free Text annotations let users place editable text boxes on a PDF page to add comments, labels, or notes without changing the original document content.
+
+## Enable Free Text in the Viewer
+
+To enable ink annotations, inject the following modules into the React PDF Viewer:
+
+- [**Annotation**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#annotation)
+- [**Toolbar**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#toolbar)
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Annotation } from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Add Free Text
+
+### Add Free Text Using the Toolbar
+1. Open the **Annotation Toolbar**.
+2. Click **Free Text** to enable Free Text mode.
+3. Click on the page to place the text box and start typing.
+
+
+
+N>* When Pan mode is active, choosing Free Text switches the viewer into the appropriate selection/edit workflow for a smoother experience.
+
+### Enable Free Text Mode
+
+Programmatically switch to Free Text mode.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function enableFreeTextMode() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('FreeText');
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+#### Exit Free Text Mode
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function exitFreeTextMode() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('None');
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+### Add Free Text Programmatically
+
+Use the [`addAnnotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#addannotation) API to create a text box at a given location with desired styles.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function addFreeTextProgrammatically() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.addAnnotation('FreeText', {
+ offset: { x: 100, y: 150 },
+ pageNumber: 1,
+ width: 220,
+ height: 48,
+ defaultText: 'Syncfusion',
+ fontFamily: 'Helvetica',
+ fontSize: 16,
+ fontColor: '#ffffff',
+ textAlignment: 'Center',
+ borderStyle: 'solid',
+ borderWidth: 2,
+ borderColor: '#ff0000',
+ fillColor: '#0000ff',
+ isLock: false
+ });
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Customize Free Text Appearance
+
+Configure default properties using the [`FreeTextSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#freeTextsettings) property (for example, default **fill color**, **border color**, **font color**, **opacity**, and **auto‑fit**).
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+N> To tailor right‑click options, see [**Customize Context Menu**](../../context-menu/custom-context-menu).
+
+## Modify, Edit, Delete Free Text
+
+- **Move/Resize**: Drag the box or use the resize handles.
+- **Edit Text**: Click inside the box and type.
+- **Delete**: Use the toolbar or context menu options. For deletion workflows and API details, see [**Delete Annotation**](../remove-annotations).
+
+### Edit Free Text
+
+#### Edit Free Text (UI)
+
+Use the annotation toolbar to configure font family, size, color, alignment, styles, fill color, stroke color, border thickness, and opacity.
+
+- Edit the **font family** using the Font Family tool.
+
+
+- Edit the **font size** using the Font Size tool.
+
+
+- Edit the **font color** using the Font Color tool.
+
+
+- Edit the **text alignment** using the Text Alignment tool.
+
+
+- Edit the **font styles** (bold, italic, underline) using the Font Style tool.
+
+
+- Edit the **fill color** using the Edit Color tool.
+
+
+- Edit the **stroke color** using the color palette in the Edit Stroke Color tool.
+
+
+- Edit the **border thickness** using the Edit Thickness tool.
+
+
+- Edit the **opacity** using the Edit Opacity tool.
+
+
+#### Edit Free Text Programmatically
+
+Update bounds or text and call `editAnnotation()`.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function editFreeTextProgrammatically() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ for (const ann of viewer.annotationCollection) {
+ if (ann.subject === 'Text Box') {
+ const { width, height } = ann.bounds;
+ ann.bounds = { x: 120, y: 120, width, height };
+ ann.dynamicText = 'Syncfusion (updated)';
+ viewer.annotation.editAnnotation(ann);
+ break;
+ }
+ }
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+N> Free Text annotations do **not** modify the original PDF text; they overlay editable text boxes on top of the page content.
+
+### Delete Free Text
+
+Delete Free Text via UI (toolbar/context menu) or programmatically. For supported workflows and APIs, see [**Delete Annotation**](../remove-annotations).
+
+## Set Default Properties During Initialization
+Apply defaults for new text boxes using the [`freeTextSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#inkannotationsettings) property. You can also enable **Auto‑fit** so the box expands with content.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Free Text Annotation Events
+
+Listen to add/modify/select/remove events for Free Text and handle them as needed. For the full list and parameters, see [**Annotation Events**](../annotation-event).
+
+## Export and Import
+
+Free Text annotations can be exported or imported just like other annotations. For supported formats and steps, see [**Export and Import annotations**](../export-import-annotations).
+
+## See Also
+- [Annotation Toolbar](../../toolbar-customization/annotation-toolbar)
+- [Customize Context Menu](../../context-menu/custom-context-menu)
+- [Comments Panel](../comments)
+- [Annotation Events](../annotation-event)
+- [Export and Import annotations](../export-import-annotations)
+- [Delete Annotations](../remove-annotations)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/highlight-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/highlight-annotation.md
new file mode 100644
index 0000000000..9a8e241c19
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/highlight-annotation.md
@@ -0,0 +1,264 @@
+---
+layout: post
+title: Highlight Text in React PDF Viewer | Syncfusion
+description: Learn how to enable, apply, customize, and manage Highlight annotations in the Syncfusion React PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Highlight Annotation (Text Markup) in React PDF Viewer
+
+This guide explains how to **enable**, **apply**, **customize**, and **manage** *Highlight* text markup annotations in the Syncfusion **React PDF Viewer**.
+You can highlight text using the toolbar or context menu, programmatically invoke highlight mode, customize default settings, handle events, and export the PDF with annotations.
+
+## Enable Highlight in the Viewer
+
+To enable Highlight annotations, inject the following modules into the React PDF Viewer:
+
+- [**Annotation**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#annotation)
+- [**TextSelection**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#textselection)
+- [**Toolbar**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#toolbar)
+
+This minimal setup enables UI interactions like selection and highlighting.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent,
+ Inject,
+ Toolbar,
+ Annotation,
+ TextSelection
+} from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Add Highlight Annotation
+
+### Add Highlight Using the Toolbar
+
+1. Select the text you want to highlight.
+2. Click the **Highlight** icon in the annotation toolbar.
+ - If **Pan Mode** is active, the viewer automatically switches to **Text Selection** mode.
+
+
+
+### Apply highlight using Context Menu
+
+Right-click a selected text region → select **Highlight**.
+
+
+
+To customize menu items, refer to [**Customize Context Menu**](../../context-menu/custom-context-menu) documentation.
+
+### Enable Highlight Mode
+
+Switch the viewer into highlight mode using `setAnnotationMode('Highlight')`.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function enableHighlight() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('Highlight');
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+#### Exit Highlight Mode
+
+Switch back to normal mode using:
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function disableHighlightMode() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('None');
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+### Add Highlight Programmatically
+
+Use [`addAnnotation()`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#addannotation) to insert highlight at a specific location.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function addHighlight() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+
+ viewer.annotation.addAnnotation('Highlight', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1
+ });
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Customize Highlight Appearance
+
+Configure default highlight settings such as **color**, **opacity**, and **author** using [`highlightSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#highlightsettings).
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Manage Highlight (Edit, Delete, Comment)
+
+### Edit Highlight
+
+#### Edit Highlight Appearance (UI)
+
+Use the annotation toolbar:
+- **Edit Color** tool
+
+
+- **Edit Opacity** slider
+
+
+#### Edit Highlight Programmatically
+
+Modify an existing highlight programmatically using `editAnnotation()`.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function editHighlightProgrammatically() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+
+ for (let annot of viewer.annotationCollection) {
+ if (annot.textMarkupAnnotationType === 'Highlight') {
+ annot.color = '#0000ff';
+ annot.opacity = 0.8;
+ viewer.annotation.editAnnotation(annot);
+ break;
+ }
+ }
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+### Delete Highlight
+
+The PDF Viewer supports deleting existing annotations through both the UI and API.
+For detailed behavior, supported deletion workflows, and API reference, see [Delete Annotation](../remove-annotations)
+
+### Comments
+
+Use the [Comments panel](../comments) to add, view, and reply to threaded discussions linked to underline annotations.
+It provides a dedicated UI for reviewing feedback, tracking conversations, and collaborating on annotation‑related notes within the PDF Viewer.
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation before creating the control using [highlightSettings](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#highlightsettings)
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function addMultipleHighlights() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+
+ // Highlight 1
+ viewer.annotation.addAnnotation('Highlight', {
+ bounds: [{ x: 100, y: 150, width: 320, height: 14 }],
+ pageNumber: 1,
+ author: 'User 1',
+ color: '#ffff00',
+ opacity: 0.9
+ });
+
+ // Highlight 2
+ viewer.annotation.addAnnotation('Highlight', {
+ bounds: [{ x: 110, y: 220, width: 300, height: 14 }],
+ pageNumber: 1,
+ author: 'User 2',
+ color: '#ff1010',
+ opacity: 0.9
+ });
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Disable TextMarkup Annotation
+
+Disable text markup annotations (including highlight) using the [`enableTextMarkupAnnotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#enabletextmarkupannotation) property.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Handle Highlight Events
+
+The PDF viewer provides annotation life-cycle events that notify when highlight annotations are added, modified, selected, or removed.
+For the full list of available events and their descriptions, see [**Annotation Events**](../annotation-event)
+
+## Export and Import
+
+The PDF Viewer supports exporting and importing annotations, allowing you to save annotations as a separate file or load existing annotations back into the viewer.
+For full details on supported formats and steps to export or import annotations, see [Export and Import Annotation](../export-import-annotations)
+
+## See Also
+
+- [Annotation Toolbar](../../toolbar-customization/annotation-toolbar)
+- [Customize Context Menu](../../context-menu/custom-context-menu)
+- [Comments Panel](../comments)
+- [Annotation Events](../annotation-event)
+- [Export and Import annotations](../export-import-annotations)
+- [Delete Annotations](../remove-annotations)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/ink-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/ink-annotation.md
new file mode 100644
index 0000000000..1041f7e212
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/ink-annotation.md
@@ -0,0 +1,189 @@
+---
+layout: post
+title: Add Freehand Drawing (Ink) Annotation in React PDF Viewer | Syncfusion
+description: Learn how to enable, draw, customize, and manage Ink (freehand) annotations in the Syncfusion React PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Add Freehand Drawing (Ink) Annotations in React PDF Viewer
+Ink annotations allow users to draw freehand strokes using mouse, pen, or touch input to mark content naturally.
+
+
+
+## Enable Freehand Drawing (Ink)
+
+To enable ink annotations, inject the following modules into the React PDF Viewer:
+
+- [**Annotation**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#annotation)
+- [**Toolbar**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#toolbar)
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Annotation } from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Add Ink annotation
+
+### Draw Freehand Using the Toolbar
+1. Open the **Annotation Toolbar**.
+2. Click **Draw Ink**.
+3. Draw freehand on the page.
+
+
+
+### Enable Ink Mode
+Switch the viewer into a ink annotation mode programmatically.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function enableInkMode() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('Ink');
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+#### Exit Ink Mode
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function exitInkMode() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('None');
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+### Add Ink Programmatically
+Use the [`addAnnotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#addannotation) API to create an ink stroke by providing a path (an array of move/line commands), bounds, and target page.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function addInkProgrammatically() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.addAnnotation('Ink', {
+ offset: { x: 150, y: 100 },
+ pageNumber: 1,
+ width: 200,
+ height: 60,
+ path: '[{"command":"M","x":244.83,"y":982.00},{"command":"L","x":250.83,"y":953.33}]'
+ });
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Customize Ink Appearance
+You can customize **stroke color**, **thickness**, and **opacity** using the [`inkAnnotationSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#inkannotationsettings) property.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Erase, Modify, or Delete Ink Strokes
+- **Move**: Drag the annotation.
+- **Resize**: Use selector handles.
+- **Change appearance**: Use Edit Stroke Color, Thickness, and Opacity tools.
+- **Delete**: Via toolbar or context menu.
+- **Customize context menu**: See [Customize Context Menu](../../context-menu/custom-context-menu).
+
+### Edit ink annotation in UI
+
+Stroke color, thickness, and opacity can be edited using the Edit Stroke Color, Edit Thickness, and Edit Opacity tools in the annotation toolbar.
+
+- Edit the **stroke color** using the color palette in the Edit Stroke Color tool.
+
+
+
+- Edit **thickness** using the range slider in the Edit Thickness tool.
+
+
+
+- Edit **opacity** using the range slider in the Edit Opacity tool.
+
+
+
+### Edit Ink Programmatically
+
+Modify an existing ink programmatically using `editAnnotation()`.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function editInkProgrammatically() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ for (const ann of viewer.annotationCollection) {
+ if (ann.shapeAnnotationType === 'Ink') {
+ const { width, height } = ann.bounds;
+ ann.bounds = { x: 120, y: 120, width, height };
+ ann.strokeColor = '#ff0000';
+ ann.thickness = 4;
+ viewer.annotation.editAnnotation(ann);
+ break;
+ }
+ }
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+### Delete Stamp
+
+Delete Ink via UI (toolbar/context menu) or programmatically. For supported workflows and APIs, see [**Delete Annotation**](../remove-annotations).
+
+## Ink Annotation Events
+
+The PDF viewer provides annotation life‑cycle events that notify when Ink annotations are added, modified, selected, or removed.
+For the full list of available events and their descriptions, see [**Annotation Events**](../annotation-event)
+
+## Export and Import
+
+Ink annotations can be exported or imported along with other annotations.
+See [Export and Import annotations](../export-import-annotations).
+
+## See Also
+
+- [Annotation Toolbar](../../toolbar-customization/annotation-toolbar)
+- [Customize Context Menu](../../context-menu/custom-context-menu)
+- [Annotation Events](../annotation-event)
+- [Export and Import annotations](../export-import-annotations)
+- [Delete Annotation](../remove-annotations)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/line-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/line-annotation.md
new file mode 100644
index 0000000000..a982db450f
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/line-annotation.md
@@ -0,0 +1,266 @@
+---
+layout: post
+title: Line Annotation (Shape) in React PDF Viewer | Syncfusion
+description: Learn how to enable, apply, customize, and manage Line annotations in the Syncfusion React PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Line Annotation (Shape) in React PDF Viewer
+
+Line annotations allow users to draw straight connectors or callouts on PDFs for markup, review, diagrams, or measurement guides. They support customization of color, thickness, opacity, and arrowheads, and can be edited, resized, deleted, or exported along with the document.
+
+
+
+## Enable Line Annotation in the Viewer
+
+To enable Line annotations, inject the following modules into the React PDF Viewer:
+
+- [**Annotation**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#annotation)
+- [**Toolbar**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#toolbar)
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Annotation } from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Add Line Annotation
+
+### Add Line Annotation Using the Toolbar
+
+1. Open the **Annotation Toolbar**.
+2. Select **Shapes** → **Line**.
+3. Click and drag on the PDF page to draw the line.
+
+
+
+N> When in Pan mode, selecting a shape tool automatically switches the viewer to selection mode for smooth interaction.
+
+### Enable Line Mode
+
+Switch the viewer into highlight mode using `setAnnotationMode('Line')`.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function enableLineMode() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('Line');
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+#### Exit Line Mode
+
+Switch back to normal mode using:
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function exitLineMode() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('None');
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+### Add Line Programmatically
+
+You can add line annotations using the [`addAnnotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#addannotation) API.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function addLine() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.addAnnotation('Line', {
+ offset: { x: 200, y: 230 },
+ pageNumber: 1,
+ vertexPoints: [
+ { x: 200, y: 230 },
+ { x: 350, y: 230 }
+ ]
+ });
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Customize Line Appearance
+
+Configure default line appearance using the [`lineSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#linesettings) property.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+N> Fill color is available only when an arrowhead style is applied at the Start or End of the line. If both are set to `None`, the Fill option is disabled.
+
+## Manage Line (Edit, Move, Resize, Delete)
+
+### Edit Line
+
+#### Edit Line Appearance (UI)
+- Select a line to view resize handles.
+- Drag endpoints to adjust length/angle.
+- Edit stroke color, opacity, and thickness using the annotation toolbar.
+
+
+
+Use the annotation toolbar:
+- **Edit Color** tool
+
+
+- **Edit Opacity** slider
+
+
+- **Line Properties**
+Open the Line Properties dialog via **Right Click → Properties**.
+
+
+
+#### Edit Line Programmatically
+
+Modify an existing Line programmatically using `editAnnotation()`.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function editLineProgrammatically() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ for (const annot of viewer.annotationCollection) {
+ if (annot.subject === 'Line') {
+ annot.strokeColor = '#ff0000';
+ annot.thickness = 3;
+ viewer.annotation.editAnnotation(annot);
+ break;
+ }
+ }
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+### Delete Line
+
+The PDF Viewer supports deleting existing annotations through the UI and API.
+See [**Delete Annotation**](../remove-annotations) for full behavior and workflows.
+
+### Comments
+
+Use the [**Comments panel**](../comments) to add, view, and reply to threaded discussions linked to line annotations. It provides a dedicated interface for collaboration and review within the PDF Viewer.
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual line annotations using the [`lineSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#linesettings) API or by passing per‑annotation values during [`addAnnotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#addannotation).
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function addMultipleLines() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+
+ // Line 1
+ viewer.annotation.addAnnotation('Line', {
+ offset: { x: 200, y: 230 },
+ pageNumber: 1,
+ vertexPoints: [
+ { x: 200, y: 230 },
+ { x: 350, y: 230 }
+ ],
+ strokeColor: '#0066ff',
+ thickness: 2,
+ opacity: 0.9,
+ author: 'User 1'
+ });
+
+ // Line 2
+ viewer.annotation.addAnnotation('Line', {
+ offset: { x: 220, y: 300 },
+ pageNumber: 1,
+ vertexPoints: [
+ { x: 220, y: 300 },
+ { x: 400, y: 300 }
+ ],
+ strokeColor: '#ff1010',
+ thickness: 3,
+ opacity: 0.9,
+ author: 'User 2'
+ });
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Disable Line Annotation
+
+Disable shape annotations (Line, Arrow, Rectangle, Circle, Polygon) using the [`enableShapeAnnotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#enableshapeannotation) property.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Handle Line Events
+
+The PDF viewer provides annotation life-cycle events that notify when Line annotations are added, modified, selected, or removed.
+For the full list of available events and their descriptions, see [**Annotation Events**](../annotation-event)
+
+
+## Export and Import
+The PDF Viewer supports exporting and importing annotations. For details on supported formats and workflows, see [**Export and Import annotations**](../export-import-annotations).
+
+## See Also
+- [Annotation Toolbar](../../toolbar-customization/annotation-toolbar)
+- [Customize Context Menu](../../context-menu/custom-context-menu)
+- [Comments Panel](../comments)
+- [Annotation Events](../annotation-event)
+- [Export and Import annotations](../export-import-annotations)
+- [Delete Annotations](../remove-annotations)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/perimeter-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/perimeter-annotation.md
new file mode 100644
index 0000000000..8a7d785696
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/perimeter-annotation.md
@@ -0,0 +1,257 @@
+---
+layout: post
+title: Add Perimeter Measurement Annotations in React PDF Viewer \ Syncfusion
+description: Learn how to enable, draw, customize, and manage Perimeter measurement annotations in the Syncfusion React PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Add Perimeter Measurement Annotations in React PDF Viewer
+Perimeter is a measurement annotation used to calculate the length around a closed polyline on a PDF page—useful for technical markups and reviews.
+
+
+
+## Enable Perimeter Measurement
+
+To enable Perimeter annotations, inject the following modules into the React PDF Viewer:
+
+- [**Annotation**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#annotation)
+- [**Toolbar**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#toolbar)
+
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Annotation } from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Add Perimeter Annotation
+
+### Add Perimeter Annotation Using the Toolbar
+
+1. Open the **Annotation Toolbar**.
+2. Select **Measurement** → **Perimeter**.
+3. Click multiple points to define the polyline; double‑click to close and finalize the perimeter.
+
+
+
+N> If Pan mode is active, choosing a measurement tool switches the viewer into the appropriate interaction mode for a smoother workflow.
+
+### Enable Perimeter Mode
+Programmatically switch the viewer into Perimeter mode.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function enablePerimeterMode() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('Perimeter');
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+#### Exit Perimeter Mode
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function exitPerimeterMode() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('None');
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+### Add Perimeter Programmatically
+Use the [`addAnnotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#addannotation) API to draw a perimeter by providing multiple **vertexPoints**.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function addPerimeter() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.addAnnotation('Perimeter', {
+ offset: { x: 200, y: 350 },
+ pageNumber: 1,
+ vertexPoints: [
+ { x: 200, y: 350 },
+ { x: 285, y: 350 },
+ { x: 286, y: 412 }
+ ]
+ });
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Customize Perimeter Appearance
+Configure default properties using the [`Perimeter Settings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#perimetersettings) property (for example, default **fill color**, **stroke color**, **opacity**).
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Manage Perimeter (Move, Reshape, Edit, Delete)
+- **Move**: Drag inside the shape to reposition it.
+- **Reshape**: Drag any vertex handle to adjust points and shape.
+
+### Edit Perimeter
+
+#### Edit Perimeter (UI)
+
+- Edit the **fill color** using the Edit Color tool.
+ 
+- Edit the **stroke color** using the Edit Stroke Color tool.
+ 
+- Edit the **border thickness** using the Edit Thickness tool.
+ 
+- Edit the **opacity** using the Edit Opacity tool.
+ 
+- Open **Right Click → Properties** for additional line‑based options.
+ 
+
+#### Edit Perimeter Programmatically
+Update properties and call `editAnnotation()`.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function editPerimeterProgrammatically() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ for (const ann of viewer.annotationCollection) {
+ if (ann.subject === 'Perimeter calculation') {
+ ann.strokeColor = '#0000FF';
+ ann.thickness = 2;
+ ann.fillColor = '#FFFF00';
+ viewer.annotation.editAnnotation(ann);
+ break;
+ }
+ }
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+### Delete Distance Annotation
+
+Delete Distance Annotation via UI (toolbar/context menu) or programmatically. For supported workflows and APIs, see [**Delete Annotation**](../remove-annotations).
+
+## Set Default Properties During Initialization
+Apply defaults for Perimeter using the [`perimeterSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#perimetersettings) property.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Set Properties While Adding Individual Annotation
+Pass per‑annotation values directly when calling [`addAnnotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#addannotation).
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function addStyledPerimeter() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.addAnnotation('Perimeter', {
+ offset: { x: 240, y: 360 },
+ pageNumber: 1,
+ vertexPoints: [
+ { x: 240, y: 360 },
+ { x: 320, y: 360 },
+ { x: 330, y: 410 }
+ ],
+ strokeColor: '#1D4ED8',
+ fillColor: '#DBEAFE',
+ thickness: 2,
+ opacity: 0.85
+ });
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Scale Ratio and Units
+
+- Use **Scale Ratio** from the context menu to set the actual‑to‑page scale.
+ 
+- Supported units include **Inch, Millimeter, Centimeter, Point, Pica, Feet**.
+ 
+
+### Set Default Scale Ratio During Initialization
+Configure scale defaults using [`measurementSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#measurementsettings).
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Handle Perimeter Events
+
+Listen to annotation life-cycle events (add/modify/select/remove). For the full list and parameters, see [**Annotation Events**](../annotation-event).
+
+## Export and Import
+Perimeter measurements can be exported or imported with other annotations. For workflows and supported formats, see [**Export and Import annotations**](../export-import-annotations).
+
+## See Also
+- [Annotation Toolbar](../../toolbar-customization/annotation-toolbar)
+- [Customize Context Menu](../../context-menu/custom-context-menu)
+- [Comments Panel](../comments)
+- [Annotation Events](../annotation-event)
+- [Export and Import annotations](../export-import-annotations)
+- [Delete Annotations](../remove-annotations)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/polygon-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/polygon-annotation.md
new file mode 100644
index 0000000000..3ca472b3e5
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/polygon-annotation.md
@@ -0,0 +1,267 @@
+---
+layout: post
+title: Polygon Annotation (Shape) in React PDF Viewer \ Syncfusion
+description: Learn how to enable, apply, customize, and manage Polygon annotations in the Syncfusion React PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Polygon Annotation (Shape) in React PDF Viewer
+Polygon annotations allow users to outline irregular regions, draw custom shapes, highlight non-rectangular areas, or create specialized callouts on PDFs for review and markup.
+
+
+
+## Enable Polygon Annotation in the Viewer
+
+To enable Line annotations, inject the following modules into the React PDF Viewer:
+
+- [**Annotation**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#annotation)
+- [**Toolbar**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#toolbar)
+
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Annotation } from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Add Polygon Annotation
+
+### Add Polygon Annotation Using the Toolbar
+1. Open the **Annotation Toolbar**.
+2. Select **Shapes** → **Polygon**.
+3. Click multiple points on the page to draw the polygon.
+4. Double-click to finalize the shape.
+
+
+
+N> When in Pan mode, selecting a shape tool automatically switches the viewer to selection mode for smooth interaction.
+
+### Enable Polygon Mode
+
+Switch the viewer into highlight mode using `setAnnotationMode('Polygon')`.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function enablePolygonMode() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('Polygon');
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+#### Exit Polygon Mode
+
+Switch back to normal mode using:
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function exitPolygonMode() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('None');
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+### Add Polygon Programmatically
+Use the [`addAnnotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#addannotation) API to draw a polygon by specifying multiple `vertexPoints`.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function addPolygon() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.addAnnotation('Polygon', {
+ offset: { x: 200, y: 800 },
+ pageNumber: 1,
+ vertexPoints: [
+ { x: 200, y: 800 }, { x: 242, y: 771 },
+ { x: 289, y: 799 }, { x: 278, y: 842 },
+ { x: 211, y: 842 }, { x: 200, y: 800 }
+ ]
+ });
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Customize Polygon Appearance
+Configure default polygon appearance (fill color, stroke color, thickness, opacity) using the [`polygonSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#polygonsettings) property.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Manage Polygon (Edit, Move, Resize, Delete)
+
+### Edit Circle
+
+#### Edit Circle (UI)
+
+- Select a Circle to view resize handles.
+- Drag any side/corner to resize; drag inside the shape to move it.
+- Edit **fill**, **stroke**, **thickness**, and **opacity** using the annotation toolbar.
+
+
+
+Use the annotation toolbar:
+- **Edit fill Color** tool
+
+
+- **Edit stroke Color** tool
+
+
+- **Edit Opacity** slider
+
+
+- **Edit Thickness** slider
+
+
+#### Edit Polygon Programmatically
+
+Modify an existing Circle programmatically using `editAnnotation()`.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function editPolygonProgrammatically() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+
+ for (const annot of viewer.annotationCollection) {
+ if (annot.subject === 'Polygon') {
+ annot.strokeColor = '#0000ff';
+ annot.thickness = 2;
+ annot.fillColor = '#ffff00';
+ viewer.annotation.editAnnotation(annot);
+ break;
+ }
+ }
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+### Delete Polygon
+The PDF Viewer supports deleting existing annotations through the UI and API.
+See [**Delete Annotation**](../remove-annotations) for full behavior and workflows.
+
+### Comments
+Use the [**Comments panel**](../comments) to add, view, and reply to threaded discussions linked to polygon annotations. It provides a dedicated interface for collaboration and review within the PDF Viewer.
+
+## Set properties while adding Individual Annotation
+Configure per-annotation appearance while adding a polygon using [`addAnnotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#addannotation).
+
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function addMultiplePolygons() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+
+ // Polygon 1
+ viewer.annotation.addAnnotation('Polygon', {
+ offset: { x: 200, y: 800 },
+ pageNumber: 1,
+ vertexPoints: [
+ { x: 200, y: 800 }, { x: 242, y: 771 },
+ { x: 289, y: 799 }, { x: 278, y: 842 },
+ { x: 211, y: 842 }, { x: 200, y: 800 }
+ ],
+ fillColor: '#ffa5d8',
+ strokeColor: '#ff6a00',
+ thickness: 2,
+ opacity: 0.9,
+ author: 'User 1'
+ });
+
+ // Polygon 2
+ viewer.annotation.addAnnotation('Polygon', {
+ offset: { x: 360, y: 800 },
+ pageNumber: 1,
+ vertexPoints: [
+ { x: 360, y: 800 }, { x: 410, y: 770 },
+ { x: 450, y: 810 }, { x: 430, y: 850 },
+ { x: 380, y: 850 }, { x: 360, y: 800 }
+ ],
+ fillColor: '#ffe600',
+ strokeColor: '#ff1010',
+ thickness: 3,
+ opacity: 0.85,
+ author: 'User 2'
+ });
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Disable Shape Annotation
+Disable shape annotations (Polygon, Line, Rectangle, Circle, Arrow) using the [`enableShapeAnnotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#enableshapeannotation) property.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Handle Polygon Events
+
+The PDF viewer provides annotation life-cycle events that notify when Polygon annotations are added, modified, selected, or removed.
+For the full list of available events and their descriptions, see [**Annotation Events**](../annotation-event)
+
+## Export and Import
+The PDF Viewer supports exporting and importing annotations. For details on supported formats and workflows, see [**Export and Import annotations**](../export-import-annotations).
+
+## See Also
+- [Annotation Toolbar](../../toolbar-customization/annotation-toolbar)
+- [Customize Context Menu](../../context-menu/custom-context-menu)
+- [Comments Panel](../comments)
+- [Annotation Events](../annotation-event)
+- [Export and Import annotations](../export-import-annotations)
+- [Delete Annotations](../remove-annotations)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/radius-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/radius-annotation.md
new file mode 100644
index 0000000000..b56fb0b310
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/radius-annotation.md
@@ -0,0 +1,248 @@
+---
+layout: post
+title: Add Radius Measurement Annotations in React PDF Viewer \ Syncfusion
+description: Learn how to enable, draw, customize, and manage Radius measurement annotations in the Syncfusion React PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Add Radius Measurement Annotations in React PDF Viewer
+Radius measurement annotations allow users to draw circular regions and calculate the radius visually.
+
+
+
+## Enable Radius Measurement
+
+To enable Radius annotations, inject the following modules into the React PDF Viewer:
+
+- [**Annotation**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#annotation)
+- [**Toolbar**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#toolbar)
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Toolbar, Annotation, Inject } from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Add Radius Annotation
+
+### Add Radius Using the Toolbar
+1. Open the **Annotation Toolbar**.
+2. Select **Measurement → Radius**.
+3. Click and drag on the page to draw the radius.
+
+
+
+N> If Pan mode is active, selecting the Radius tool automatically switches interaction mode.
+
+### Enable Radius Mode
+Programmatically switch the viewer into Radius mode.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function enableRadiusMode() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('Radius');
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+#### Exit Radius Mode
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function exitRadiusMode() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('None');
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+### Add Radius Programmatically
+Configure default properties using the [`Radius Settings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#radiussettings) property (for example, default **fill color**, **stroke color**, **opacity**).
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function addRadius() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.addAnnotation('Radius', {
+ offset: { x: 200, y: 630 },
+ pageNumber: 1,
+ width: 90,
+ height: 90
+ });
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Customize Radius Appearance
+Configure default properties using the [`Radius Settings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#radiussettings) property (for example, default **fill color**, **stroke color**, **opacity**).
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Manage Radius (Move, Reshape, Edit, Delete)
+- **Move**: Drag inside the polygon to reposition it.
+- **Reshape**: Drag any vertex handle to adjust points and shape.
+
+### Edit Radius Annotation
+
+#### Edit Radius (UI)
+
+- Edit the **fill color** using the Edit Color tool.
+ 
+- Edit the **stroke color** using the Edit Stroke Color tool.
+ 
+- Edit the **border thickness** using the Edit Thickness tool.
+ 
+- Edit the **opacity** using the Edit Opacity tool.
+ 
+- Open **Right Click → Properties** for additional line‑based options.
+ 
+
+#### Edit Radius Programmatically
+
+Update properties and call `editAnnotation()`.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function editRadiusProgrammatically() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ for (const ann of viewer.annotationCollection) {
+ if (ann.subject === 'Radius calculation') {
+ ann.strokeColor = '#0000FF';
+ ann.thickness = 2;
+ ann.opacity = 0.8;
+ viewer.annotation.editAnnotation(ann);
+ break;
+ }
+ }
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+### Delete Radius Annotation
+
+Delete Radius Annotation via UI (toolbar/context menu) or programmatically. For supported workflows and APIs, see [**Delete Annotation**](../remove-annotations).
+
+## Set Default Properties During Initialization
+Apply defaults for Radius using the [`radiusSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#radiussettings) property.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Set Properties While Adding Individual Annotation
+Apply defaults for Area using the [`radiusSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#radiussettings) property.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function addStyledRadius() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.addAnnotation('Radius', {
+ offset: { x: 200, y: 630 },
+ pageNumber: 1,
+ width: 90,
+ height: 90,
+ fillColor: 'orange',
+ opacity: 0.6,
+ strokeColor: 'pink'
+ });
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Scale Ratio & Units
+- Use **Scale Ratio** from the context menu.
+ 
+- Supported units: Inch, Millimeter, Centimeter, Point, Pica, Feet.
+ 
+
+### Set Default Scale Ratio During Initialization
+Configure scale defaults using [`measurementSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#mesaurementsettings).
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Handle Radius Events
+Listen to annotation life-cycle events (add/modify/select/remove). For the full list and parameters, see [**Annotation Events**](../annotation-event).
+
+## Export and Import
+Radius measurements can be exported or imported with other annotations. For workflows and supported formats, see [**Export and Import annotations**](../export-import-annotations).
+
+## See Also
+- [Annotation Toolbar](../../toolbar-customization/annotation-toolbar)
+- [Customize Context Menu](../../context-menu/custom-context-menu)
+- [Comments Panel](../comments)
+- [Annotation Events](../annotation-event)
+- [Export and Import annotations](../export-import-annotations)
+- [Delete Annotations](../remove-annotations)
+
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/rectangle-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/rectangle-annotation.md
new file mode 100644
index 0000000000..3ec549cda0
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/rectangle-annotation.md
@@ -0,0 +1,248 @@
+---
+layout: post
+title: Rectangle Annotation (Shape) in React PDF Viewer | Syncfusion
+description: Learn how to enable, apply, customize, and manage Rectangle annotations in the Syncfusion React PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Rectangle Annotation (Shape) in React PDF Viewer
+Rectangle annotations let users highlight regions, group content, or draw callout boxes on PDFs for reviews and markups. You can add rectangles from the toolbar, switch to rectangle mode programmatically, customize appearance, edit/delete them in the UI, and export them with the document.
+
+
+
+## Enable Rectangle Annotation in the Viewer
+
+To enable Line annotations, inject the following modules into the React PDF Viewer:
+
+- [**Annotation**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#annotation)
+- [**Toolbar**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#toolbar)
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Annotation } from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Add Rectangle Annotation
+
+### Add Rectangle Annotation Using the Toolbar
+
+1. Open the **Annotation Toolbar**.
+2. Select **Shapes** → **Rectangle**.
+3. Click and drag on the PDF page to draw the rectangle.
+
+
+
+N> When in Pan mode, selecting a shape tool automatically switches the viewer to selection mode for smooth interaction.
+
+### Enable Rectangle Mode
+Switch the viewer into highlight mode using `setAnnotationMode('Rectangle')`.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function enableRectangleMode() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('Rectangle');
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+#### Exit Rectangle Mode
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function exitRectangleMode() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('None');
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+### Add Rectangle Programmatically
+Use the [`addAnnotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#addannotation) API to draw a rectangle at a specific location.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function addRectangle() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.addAnnotation('Rectangle', {
+ offset: { x: 200, y: 480 },
+ pageNumber: 1,
+ width: 150,
+ height: 75
+ });
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Customize Rectangle Appearance
+Configure default rectangle appearance (fill color, stroke color, thickness, opacity) using the [`rectangleSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#rectanglesettings) property.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Manage Rectangle (Edit, Move, Resize, Delete)
+### Edit Rectangle
+
+#### Edit Rectangle (UI)
+- Select a rectangle to view resize handles.
+- Drag any side/corner to resize; drag inside the shape to move it.
+- Edit **fill**, **stroke**, **thickness**, and **opacity** using the annotation toolbar.
+
+
+
+Use the annotation toolbar:
+- **Edit fill Color** tool
+
+
+- **Edit stroke Color** tool
+
+
+- **Edit Opacity** slider
+
+
+- **Edit Thickness** slider
+
+
+
+#### Edit Rectangle Programmatically
+
+Modify an existing Rectangle programmatically using `editAnnotation()`.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function editRectangleProgrammatically() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ for (const annot of viewer.annotationCollection) {
+ if (annot.subject === 'Rectangle') {
+ annot.strokeColor = '#0000ff';
+ annot.thickness = 2;
+ annot.fillColor = '#ffff00';
+ viewer.annotation.editAnnotation(annot);
+ break;
+ }
+ }
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+### Delete Rectangle
+The PDF Viewer supports deleting existing annotations through the UI and API.
+See [**Delete Annotation**](../remove-annotations) for full behavior and workflows.
+
+### Comments
+Use the [**Comments panel**](../comments) to add, view, and reply to threaded discussions linked to rectangle annotations. It provides a dedicated interface for collaboration and review within the PDF Viewer.
+
+## Set properties while adding Individual Annotation
+Set properties for individual rectangle annotations by passing values directly during [`addAnnotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#addannotation).
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function addMultipleRectangles() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+
+ // Rectangle 1
+ viewer.annotation.addAnnotation('Rectangle', {
+ offset: { x: 200, y: 480 },
+ pageNumber: 1,
+ width: 150,
+ height: 75,
+ opacity: 0.9,
+ strokeColor: '#ff6a00',
+ fillColor: '#ffff00',
+ author: 'User 1'
+ });
+
+ // Rectangle 2
+ viewer.annotation.addAnnotation('Rectangle', {
+ offset: { x: 380, y: 480 },
+ pageNumber: 1,
+ width: 120,
+ height: 60,
+ opacity: 0.85,
+ strokeColor: '#ff1010',
+ fillColor: '#ffe600',
+ author: 'User 2'
+ });
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Disable Rectangle Annotation
+Disable shape annotations (Line, Arrow, Rectangle, Circle, Polygon) using the [`enableShapeAnnotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#enableshapeannotation) property.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Handle Rectangle Events
+
+The PDF viewer provides annotation life-cycle events that notify when Rectangle annotations are added, modified, selected, or removed.
+For the full list of available events and their descriptions, see [**Annotation Events**](../annotation-event)
+
+## Export and Import
+The PDF Viewer supports exporting and importing annotations. For details on supported formats and workflows, see [**Export and Import annotations**](../export-import-annotations).
+
+## See Also
+- [Annotation Toolbar](../../toolbar-customization/annotation-toolbar)
+- [Customize Context Menu](../../context-menu/custom-context-menu)
+- [Comments Panel](../comments)
+- [Annotation Events](../annotation-event)
+- [Export and Import annotations](../export-import-annotations)
+- [Delete Annotations](../remove-annotations)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/redaction-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/redaction-annotation.md
new file mode 100644
index 0000000000..b34fd2d3d0
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/redaction-annotation.md
@@ -0,0 +1,202 @@
+---
+layout: post
+title: PDF Redaction in React PDF Viewer | Syncfusion
+description: Learn to add, edit, delete, and apply redaction annotations in Syncfusion React PDF Viewer with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Redaction annotation in React PDF Viewer
+
+Redaction annotations permanently remove sensitive content from a PDF. You can draw redaction marks over text or graphics, redact entire pages, customize overlay text and styling, and apply redaction to finalize.
+
+
+
+## Add Redaction Annotation
+
+### Add redaction annotations in UI
+- Use the **Redaction** tool from the toolbar to draw over content to hide it.
+- Redaction marks can show overlay text (for example, “Confidential”) and can be styled.
+
+
+
+Redaction annotations are interactive:
+- **Movable**
+
+- **Resizable**
+
+
+You can also add redaction annotations from the **context menu** by selecting content and choosing **Redact Annotation**.
+
+
+N> Ensure the **Redaction** tool is included in the toolbar. See [RedactionToolbar](../../Redaction/toolbar.md) for configuration.
+
+### Add redaction annotations programmatically (React)
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Annotation } from '@syncfusion/ej2-react-pdfviewer';
+
+function getViewer(){ return document.getElementById('container').ej2_instances[0]; }
+
+function addRedactionProgrammatically(){
+ const viewer=getViewer();
+ viewer.annotation.addAnnotation('Redaction',{
+ bound:{x:200,y:480,width:150,height:75},
+ pageNumber:1,
+ markerFillColor:'#000',
+ markerBorderColor:'#fff',
+ fillColor:'#000',
+ overlayText:'Confidential',
+ fontColor:'#fff', fontFamily:'Times New Roman', fontSize:10,
+ beforeRedactionsApplied:false
+ });
+}
+
+function App(){
+ return(<>
+
+
+
+
+ >);
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+Track additions using the `annotationAdd` event (wired above as a component prop).
+
+## Edit Redaction Annotations
+
+### Edit redaction annotations in UI
+Use the viewer to select, move, and resize Redaction annotations. Use the context menu for additional actions.
+
+#### Edit the properties of redaction annotations in UI
+Use the property panel or **context menu → Properties** to change overlay text, font, fill color, and more.
+
+
+
+### Edit redaction annotations programmatically (React)
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function editFirstRedaction(){
+ const v=getViewer();
+ const ann=v.annotationCollection||[];
+ for(const a of ann){
+ if(a.subject==='Redaction'){
+ a.overlayText='EditedAnnotation';
+ a.markerFillColor='#222';
+ a.fontColor='#ff0';
+ v.annotation.editAnnotation(a);
+ break;
+ }
+ }
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+This mirrors the TS logic using the React component ref to access the annotation APIs.
+
+## Delete redaction annotations
+
+### Delete in UI
+- **Right‑click → Delete**
+
+- Use the **Delete** button in the toolbar
+
+- Press **Delete** key
+
+### Delete programmatically (React)
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function deleteFirstRedaction(){
+ const v=getViewer();
+ const first=(v.annotationCollection||[]).find(a=>a.subject==='Redaction');
+ if(first) v.annotationModule.deleteAnnotationById(first.annotationId);
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+This uses `annotationModule.deleteAnnotationById` with a known annotation id.
+
+## Redact pages
+
+### Redact pages in UI
+Use the **Redact Pages** dialog to mark entire pages with options like **Current Page**, **Odd Pages Only**, **Even Pages Only**, and **Specific Pages**.
+
+
+### Add page redactions programmatically (React)
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function addPageRedactions(){
+ getViewer().annotation.addPageRedactions([1,3,5]);
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+Programmatically adds redaction marks to the given page numbers.
+
+## Apply redaction
+
+### Apply redaction in UI
+Click **Apply Redaction** to permanently remove marked content.
+
+
+
+N> **Redaction is permanent and cannot be undone.**
+
+### Apply redaction programmatically (React)
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function applyRedaction(){ getViewer().annotation.redact(); }
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+N> Applying redaction is **irreversible**.
+
+## Default redaction settings during initialization
+
+Configure defaults with the `redactionSettings` **component prop**:
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples/tree/master)
+
+## See also
+- [Annotation Overview](../overview)
+- [Redaction Overview](../../Redaction/overview)
+- [Annotation Toolbar](../../toolbar-customization/annotation-toolbar)
+- [Create and Modify Annotation](../../annotations/create-modify-annotation)
+- [Customize Annotation](../../annotations/customize-annotation)
+- [Remove Annotation](../../annotations/delete-annotation)
+- [Handwritten Signature](../../annotations/signature-annotation)
+- [Export and Import Annotation](../../annotations/export-import/export-annotation)
+- [Annotation in Mobile View](../../annotations/annotations-in-mobile-view)
+- [Annotation Events](../../annotations/annotation-event)
+- [Annotation API](../../annotations/annotations-api)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/squiggly-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/squiggly-annotation.md
new file mode 100644
index 0000000000..6df7d6b6bd
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/squiggly-annotation.md
@@ -0,0 +1,244 @@
+---
+layout: post
+title: Squiggly Annotation (Text Markup) in React PDF Viewer | Syncfusion
+description: Learn how to enable, apply, customize, and manage Squiggly annotations in the Syncfusion React PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Squiggly Annotation (Text Markup) in React PDF Viewer
+
+This guide explains how to **enable**, **apply**, **customize**, and **manage** *Squiggly* text markup annotations in the Syncfusion **React PDF Viewer**.
+You can add squiggly underlines from the toolbar or context menu, programmatically invoke squiggly mode, customize default settings, handle events, and export the PDF with annotations.
+
+## Enable Squiggly in the Viewer
+To enable Squiggly annotations, inject the following modules into the React PDF Viewer:
+
+- [**Annotation**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#annotation)
+- [**TextSelection**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#textselection)
+- [**Toolbar**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#toolbar)
+
+This minimal setup enables UI interactions like selection and squiggly markup.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent,
+ Inject,
+ Toolbar,
+ Annotation,
+ TextSelection
+} from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Add Squiggly Annotation
+
+### Add Squiggly Using the Toolbar
+
+1. Select the text you want to annotate.
+2. Click the **Squiggly** icon in the annotation toolbar.
+ - If **Pan Mode** is active, the viewer automatically switches to **Text Selection** mode.
+
+
+### Add Squiggly Using the Context Menu
+
+Right-click a selected text region → select **Squiggly**.
+
+To customize menu items, refer to [**Customize Context Menu**](../../context-menu/custom-context-menu) documentation.
+
+### Enable Squiggly Mode
+Switch the viewer into squiggly mode using `setAnnotationMode('Squiggly')`.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function enableSquiggly() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('Squiggly');
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+#### Exit Squiggly Mode
+Switch back to normal mode using:
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function disableSquigglyMode() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('None');
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+### Add Squiggly Programmatically
+Use [`addAnnotation()`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#addannotation) to insert a squiggly at a specific location.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function addSquiggly() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.addAnnotation('Squiggly', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1
+ });
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Customize Squiggly Appearance
+Configure default squiggly settings such as **color**, **opacity**, and **author** using [`squigglySettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#squigglysettings).
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Manage Squiggly (Edit, Delete, Comment)
+
+### Edit Squiggly
+
+#### Edit Squiggly Appearance (UI)
+
+Use the annotation toolbar:
+- **Edit Color** tool
+
+- **Edit Opacity** slider
+
+
+#### Edit Squiggly Programmatically
+Modify an existing squiggly programmatically using `editAnnotation()`.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function editSquigglyProgrammatically() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ for (let annot of viewer.annotationCollection) {
+ if (annot.textMarkupAnnotationType === 'Squiggly') {
+ annot.color = '#ff0000';
+ annot.opacity = 0.8;
+ viewer.annotation.editAnnotation(annot);
+ break;
+ }
+ }
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+### Delete Squiggly
+The PDF Viewer supports deleting existing annotations through both the UI and API.
+For detailed behavior, supported deletion workflows, and API reference, see [**Delete Annotation**](../remove-annotations)
+
+### Comments
+Use the [**Comments panel**](../comments) to add, view, and reply to threaded discussions linked to squiggly annotations.
+It provides a dedicated UI for reviewing feedback, tracking conversations, and collaborating on annotation‑related notes within the PDF Viewer.
+
+## Set properties while adding Individual Annotation
+Set properties for individual squiggly annotations at the time of creation using the [`addAnnotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#addannotation) API.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function addMultipleSquigglies() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ // Squiggly 1
+ viewer.annotation.addAnnotation('Squiggly', {
+ bounds: [{ x: 100, y: 150, width: 320, height: 14 }],
+ pageNumber: 1,
+ author: 'User 1',
+ color: '#ffff00',
+ opacity: 0.9
+ });
+ // Squiggly 2
+ viewer.annotation.addAnnotation('Squiggly', {
+ bounds: [{ x: 110, y: 220, width: 300, height: 14 }],
+ pageNumber: 1,
+ author: 'User 2',
+ color: '#ff1010',
+ opacity: 0.9
+ });
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Disable TextMarkup Annotation
+Disable text markup annotations (including squiggly) using the [`enableTextMarkupAnnotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#enabletextmarkupannotation) property.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Handle Squiggly Events
+The PDF viewer provides annotation life‑cycle events that notify when squiggly annotations are added, modified, selected, or removed.
+For the full list of available events and their descriptions, see [**Annotation Events**](../annotation-event)
+
+## Export and Import
+
+The PDF Viewer supports exporting and importing annotations, allowing you to save annotations as a separate file or load existing annotations back into the viewer.
+For full details on supported formats and steps to export or import annotations, see [**Export and Import annotations**](../export-import-annotations)
+
+## See Also
+- [Annotation Toolbar](../../toolbar-customization/annotation-toolbar)
+- [Customize Context Menu](../../context-menu/custom-context-menu)
+- [Comments Panel](../comments)
+- [Annotation Events](../annotation-event)
+- [Export and Import annotations](../export-import-annotations)
+- [Delete Annotations](../remove-annotations)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/stamp-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/stamp-annotation.md
new file mode 100644
index 0000000000..7cfc96be7b
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/stamp-annotation.md
@@ -0,0 +1,240 @@
+---
+layout: post
+title: Stamp Annotation in React PDF Viewer | Syncfusion
+description: Learn how to enable, apply, customize, and manage Stamp annotations (Dynamic, Sign Here, Standard Business, Custom) in the Syncfusion React PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Stamp Annotations in React PDF Viewer
+Stamp annotations allow you to place predefined or custom stamps (such as **Dynamic**, **Sign Here**, **Standard Business**, or **Custom**) on a PDF to communicate review states, approvals, or instructions. You can add stamps from the toolbar, switch to specific stamp modes programmatically, customize defaults (e.g., opacity/author), edit or lock them, and export them with the document.
+
+
+
+## Enable Stamp Annotation in the Viewer
+
+To enable Stamp annotations, inject the following modules into the React PDF Viewer:
+
+- [**Annotation**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#annotation)
+- [**Toolbar**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#toolbar)
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Annotation } from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Add Stamp Annotation
+
+### Add Stamp Using the Toolbar
+1. Open the **Annotation Toolbar**.
+2. Choose **Stamp** to open the stamp gallery.
+
+3. Select a stamp type (**Dynamic**, **Sign Here**, **Standard Business**, or **Custom**) and click on the page to place it.
+
+
+N> When Pan mode is active and a stamp tool is chosen, the viewer automatically switches to selection mode for a smoother interaction.
+
+### Enable a Specific Stamp Mode
+Switch the viewer into a specific stamp annotation mode programmatically.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import { SignStampItem, StandardBusinessStampItem, DynamicStampItem } from '@syncfusion/ej2-react-pdfviewer';
+
+function enableDynamicStamp() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('Stamp', DynamicStampItem.NotApproved);
+}
+
+function enableSignHereStamp() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('Stamp', null, SignStampItem.Witness);
+}
+
+function enableStandardBusinessStamp() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('Stamp', null, null, StandardBusinessStampItem.Approved);
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+#### Exit Stamp Mode
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function exitStampMode() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('None');
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+### Add Stamp Programmatically
+Use the [`addAnnotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#addannotation) API to place stamps at specific coordinates.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+// Dynamic stamp
+function addDynamicStamp() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.addAnnotation('Stamp', { offset: { x: 200, y: 140 }, pageNumber: 1 }, 'Approved');
+}
+
+// Sign Here stamp
+function addSignStamp() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.addAnnotation('Stamp', { offset: { x: 200, y: 240 }, pageNumber: 1 }, undefined, 'Witness');
+}
+
+// Standard Business stamp
+function addStandardBusinessStamp() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.addAnnotation('Stamp', { offset: { x: 200, y: 340 }, pageNumber: 1 }, undefined, undefined, 'Approved');
+}
+
+// Custom stamp (JPG/JPEG only)
+function addCustomStamp() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.addAnnotation('Stamp', {
+ offset: { x: 100, y: 440 },
+ width: 100,
+ height: 46,
+ author: 'Guest',
+ isLock: true,
+ pageNumber: 1,
+ customStamps: [
+ {
+ customStampName: 'Image',
+ customStampImageSource: 'data:image/jpeg;base64,REPLACE_WITH_YOUR_BASE64_IMAGE_DATA'
+ }
+ ]
+ });
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+N> For **Custom Stamp** via the UI, only **JPG/JPEG** image formats are supported.
+
+## Customize Stamp Appearance
+Configure default properties using the [`stampSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#stampsettings) property (for example, default **opacity** and **author**).
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+N> After changing opacity via the **Edit Opacity** tool in the toolbar, the updated value becomes the working default for subsequent placements in the current session.
+
+## Manage Stamp (Move, Resize, Rotate, Lock/Unlock, Delete)
+
+### Edit Stamp Annotation
+
+#### Edit & Arrange (UI)
+- **Move**: drag the stamp to reposition it.
+- **Resize**: use corner handles to change size.
+- **Rotate**: use the rotation handle (where available) to rotate the stamp.
+- **Opacity**: adjust using the **Edit Opacity** tool in the annotation toolbar.
+- **Lock/Unlock**: lock a selected stamp from the context menu to prevent edits.
+
+#### Edit Stamp Programmatically
+Modify bounds or lock state, then call `editAnnotation()`.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function editStampProgrammatically() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ for (const ann of viewer.annotationCollection) {
+ // shapeAnnotationType is 'stamp' for stamp annotations
+ if (ann.shapeAnnotationType === 'stamp') {
+ const { width, height } = ann.bounds;
+ ann.bounds = { x: 100, y: 100, width, height };
+ ann.annotationSettings = ann.annotationSettings || {};
+ ann.annotationSettings.isLock = true; // lock the stamp
+ viewer.annotation.editAnnotation(ann);
+ break;
+ }
+ }
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+### Delete Stamp
+Delete stamps via UI (toolbar/context menu) or programmatically. For supported workflows and APIs, see [**Delete Annotation**](../remove-annotations).
+
+## Set properties while adding Individual Annotation
+You can pass per‑annotation values (e.g., **type**, **position**, **size**, **author**, **isLock**, or **customStamps**) when calling [`addAnnotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#addannotation).
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function addMultipleStamps() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+
+ // Dynamic stamp – Approved
+ viewer.annotation.addAnnotation('Stamp', { offset: { x: 180, y: 140 }, pageNumber: 1 }, 'Approved');
+
+ // Sign Here – Witness
+ viewer.annotation.addAnnotation('Stamp', { offset: { x: 180, y: 240 }, pageNumber: 1 }, undefined, 'Witness');
+
+ // Standard Business – Approved
+ viewer.annotation.addAnnotation('Stamp', { offset: { x: 180, y: 340 }, pageNumber: 1 }, undefined, undefined, 'Approved');
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Handle Stamp Events
+
+The PDF viewer provides annotation life‑cycle events that notify when Stamp annotations are added, modified, selected, or removed.
+For the full list of available events and their descriptions, see [**Annotation Events**](../annotation-event)
+
+## Export and Import
+The PDF Viewer supports exporting and importing annotations, allowing you to save stamps and reload them later. For supported formats and steps, see [**Export and Import annotations**](../export-import-annotations).
+
+## See Also
+- [Annotation Toolbar](../../toolbar-customization/annotation-toolbar)
+- [Customize Context Menu](../../context-menu/custom-context-menu)
+- [Comments Panel](../comments)
+- [Annotation Events](../annotation-event)
+- [Export and Import annotations](../export-import-annotations)
+- [Delete Annotations](../remove-annotations)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/sticky-notes.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/sticky-notes.md
new file mode 100644
index 0000000000..34b6cf7365
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/sticky-notes.md
@@ -0,0 +1,170 @@
+---
+layout: post
+title: Add Sticky Notes Annotations in React PDF Viewer | Syncfusion
+description: Learn how to enable, add, customize, and manage Sticky Notes annotations in the Syncfusion React PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Add Sticky Notes Annotations in React PDF Viewer
+Sticky Notes allow users to place comment markers on the PDF. When clicked, the note opens a popup containing comments, replies, and discussions. Use them to capture review feedback without altering the original content.
+
+
+
+## Enable Sticky Notes Annotation
+Inject the minimal modules required to work with Sticky Notes in the React PDF Viewer. (Toolbar is optional but recommended for UI access.)
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Annotation, TextSelection } from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+N> The **Sticky Note** tool appears in the Annotation toolbar when annotation features are enabled.
+
+## Add Sticky Notes
+
+### Add Sticky Notes Using the Toolbar
+1. Open the **Annotation Toolbar**.
+2. Select the **Sticky Note** tool.
+3. Click anywhere on the page to place the note; click the note to open its popup and start commenting.
+
+
+
+N> Use the **Comments panel** to add replies or update status for the selected note.
+
+### Add Sticky Notes Programmatically
+
+Create a note at specific coordinates using `addAnnotation`.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function addStickyNote() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.addAnnotation('StickyNotes', {
+ offset: { x: 120, y: 220 },
+ pageNumber: 1,
+ isLock: false
+ });
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Customize Sticky Note Appearance
+Configure default properties using the [`stickyNotesSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#stickyNotesSettings).
+ property (for example, default **fill color**, **stroke color**, **opacity**).
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Move, Edit, or Delete Sticky Notes
+
+- **Move**: Drag the note icon to a new location.
+- **Edit**: Click the note icon to open the popup; edit text, add replies, or change status in the **Comments panel**.
+
+### Edit Sticky Notes Annotation
+
+#### Edit Sticky Notes (UI)
+
+- **Icon style**: Open **Right Click → Properties** on a note to choose a different note icon style (e.g., classic note icon).
+- **Color**: Change the note color using the **Edit Color** tool in the annotation toolbar.
+- **Opacity**: Adjust transparency using the **Edit Opacity** tool.
+ 
+
+N> To tailor right‑click actions (Delete, Properties, etc.), see [**Customize Context Menu**](../../context-menu/custom-context-menu).
+
+#### Edit Sticky Notes Programmatically
+Update properties and call `editAnnotation()`.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function editVolumeProgrammatically() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ for (const ann of viewer.annotationCollection) {
+ if (ann.subject === 'Volume calculation') {
+ ann.strokeColor = '#0000FF';
+ ann.thickness = 2;
+ ann.opacity = 0.8;
+ viewer.annotation.editAnnotation(ann);
+ break;
+ }
+ }
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+### Delete Volume Annotation
+
+Delete Volume Annotation via UI (toolbar/context menu) or programmatically. For supported workflows and APIs, see [**Delete Annotation**](../remove-annotations).
+
+## Set Default Properties During Initialization
+Configure scale defaults using [`stickyNotesSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#stickyNotesSettings).
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Sticky Note Events
+
+Listen to annotation life-cycle events and filter for sticky notes. See [**Annotation Events**](../annotation-event) for the full list and argument details.
+
+## Export and Import
+Sticky Notes are included when exporting or importing annotations. For supported formats and workflows, see [**Export and Import annotations**](../export-import-annotations).
+
+## See Also
+- [Annotation Toolbar](../../toolbar-customization/annotation-toolbar)
+- [Customize Context Menu](../../context-menu/custom-context-menu)
+- [Comments Panel](../comments)
+- [Annotation Events](../annotation-event)
+- [Export and Import annotations](../export-import-annotations)
+- [Delete Annotations](../remove-annotations)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/strikethrough-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/strikethrough-annotation.md
new file mode 100644
index 0000000000..d28e13fd5b
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/strikethrough-annotation.md
@@ -0,0 +1,236 @@
+---
+layout: post
+title: Strikethrough Text in React PDF Viewer | Syncfusion
+description: Learn how to enable, apply, customize, and manage Strikethrough annotations in the Syncfusion React PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Strikethrough Annotation (Text Markup) in React PDF Viewer
+This guide explains how to **enable**, **apply**, **customize**, and **manage** *Strikethrough* text markup annotations in the Syncfusion **React PDF Viewer**. You can apply strikethrough using the toolbar or context menu, programmatically invoke strikethrough mode, customize default settings, handle events, and export the PDF with annotations.
+
+## Enable Strikethrough in the Viewer
+To enable Strikethrough annotations, inject the following modules into the React PDF Viewer:
+- [**Annotation**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#annotation)
+- [**TextSelection**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#textselection)
+- [**Toolbar**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#toolbar)
+
+This minimal setup enables UI interactions like selection and strikethrough.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent,
+ Inject,
+ Toolbar,
+ Annotation,
+ TextSelection
+} from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Add Strikethrough Annotation
+
+### Add Strikethrough Using the Toolbar
+1. Select the text you want to strike through.
+2. Click the **Strikethrough** icon in the annotation toolbar.
+ - If **Pan Mode** is active, the viewer automatically switches to **Text Selection** mode.
+
+
+
+### Add strikethrough using Context Menu
+Right-click a selected text region → select **Strikethrough**.
+
+
+To customize menu items, refer to [**Customize Context Menu**](../../context-menu/custom-context-menu) documentation.
+
+### Enable Strikethrough Mode
+Switch the viewer into strikethrough mode using `setAnnotationMode('Strikethrough')`.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function enableStrikethrough() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('Strikethrough');
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+#### Exit Strikethrough Mode
+Switch back to normal mode using:
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function disableStrikethroughMode() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('None');
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+### Add Strikethrough Programmatically
+Use [`addAnnotation()`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#addannotation) to insert a strikethrough at a specific location.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function addStrikethrough() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.addAnnotation('Strikethrough', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1
+ });
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Customize Strikethrough Appearance
+Configure default strikethrough settings such as **color**, **opacity**, and **author** using [`strikethroughSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#strikethroughsettings).
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Manage Strikethrough (Edit, Delete, Comment)
+
+### Edit Strikethrough
+
+#### Edit Strikethrough Appearance (UI)
+Use the annotation toolbar:
+- **Edit Color** tool
+
+- **Edit Opacity** slider
+
+
+#### Edit Strikethrough Programmatically
+Modify an existing strikethrough programmatically using `editAnnotation()` and `annotationCollection`.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function editStrikethroughProgrammatically() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ for (let annot of viewer.annotationCollection) {
+ if (annot.textMarkupAnnotationType === 'Strikethrough') {
+ annot.color = '#ff0000';
+ annot.opacity = 0.8;
+ viewer.annotation.editAnnotation(annot);
+ break;
+ }
+ }
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+### Delete Strikethrough
+The PDF Viewer supports deleting existing annotations through both the UI and API. For detailed behavior, supported deletion workflows, and API reference, see [**Delete Annotation**](../remove-annotation).
+
+### Comments
+Use the [**Comments panel**](../comments) to add, view, and reply to threaded discussions linked to strikethrough annotations. It provides a dedicated UI for reviewing feedback, tracking conversations, and collaborating on annotation–related notes within the PDF Viewer.
+
+## Set properties while adding Individual Annotation
+Set properties for individual annotations when adding them programmatically by supplying fields on each `addAnnotation('Strikethrough', …)` call.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function addMultipleStrikethroughs() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ // Strikethrough 1
+ viewer.annotation.addAnnotation('Strikethrough', {
+ bounds: [{ x: 100, y: 150, width: 320, height: 14 }],
+ pageNumber: 1,
+ author: 'User 1',
+ color: '#ffff00',
+ opacity: 0.9
+ });
+ // Strikethrough 2
+ viewer.annotation.addAnnotation('Strikethrough', {
+ bounds: [{ x: 110, y: 220, width: 300, height: 14 }],
+ pageNumber: 1,
+ author: 'User 2',
+ color: '#ff1010',
+ opacity: 0.9
+ });
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Disable TextMarkup Annotation
+Disable text markup annotations (including strikethrough) using the [`enableTextMarkupAnnotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#enabletextmarkupannotation) property.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Handle Strikethrough Events
+The PDF viewer provides annotation life-cycle events that notify when strikethrough annotations are added, modified, selected, or removed. For the full list of available events and their descriptions, see [**Annotation Events**](../annotation-event).
+
+## Export and Import
+The PDF Viewer supports exporting and importing annotations, allowing you to save annotations as a separate file or load existing annotations back into the viewer. For full details on supported formats and steps to export or import annotations, see [**Export and Import Annotation**](../export-import-annotations).
+
+## See Also
+
+- [Annotation Toolbar](../../toolbar-customization/annotation-toolbar)
+- [Customize Context Menu](../../context-menu/custom-context-menu)
+- [Comments Panel](../comments)
+- [Annotation Events](../annotation-event)
+- [Export and Import annotations](../export-import-annotations)
+- [Delete Annotations](../remove-annotations)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/underline-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/underline-annotation.md
new file mode 100644
index 0000000000..bf0aa8fbe9
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/underline-annotation.md
@@ -0,0 +1,237 @@
+---
+layout: post
+title: Underline Text in React PDF Viewer | Syncfusion
+description: Learn how to enable, apply, customize, and manage Underline annotations in the Syncfusion React PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Underline Annotation (Text Markup) in React PDF Viewer
+
+This guide explains how to **enable**, **apply**, **customize**, and **manage** *Underline* text markup annotations in the Syncfusion **React PDF Viewer**. You can underline text using the toolbar or context menu, programmatically invoke underline mode, customize default settings, handle events, and export the PDF with annotations.
+
+## Enable Underline in the Viewer
+To enable Underline annotations, inject the following modules into the React PDF Viewer:
+- [**Annotation**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#annotation)
+- [**TextSelection**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#textselection)
+- [**Toolbar**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#toolbar)
+
+This minimal setup enables UI interactions like selection and underlining.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent,
+ Inject,
+ Toolbar,
+ Annotation,
+ TextSelection
+} from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Add Underline Annotation
+
+### Add Underline Using the Toolbar
+1. Select the text you want to underline.
+2. Click the **Underline** icon in the annotation toolbar.
+ - If **Pan Mode** is active, the viewer automatically switches to **Text Selection** mode.
+
+
+
+### Apply underline using Context Menu
+Right-click a selected text region → select **Underline**.
+
+
+
+To customize menu items, refer to [**Customize Context Menu**](../../context-menu/custom-context-menu) documentation.
+
+### Enable Underline Mode
+Switch the viewer into underline mode using `setAnnotationMode('Underline')`.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function enableUnderline() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('Underline');
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+#### Exit Underline Mode
+Switch back to normal mode using:
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function disableUnderlineMode() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('None');
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+### Add Underline Programmatically
+Use [`addAnnotation()`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#addannotation) to insert an underline at a specific location.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function addUnderline() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.addAnnotation('Underline', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1
+ });
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Customize Underline Appearance
+Configure default underline settings such as **color**, **opacity**, and **author** using [`underlineSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#underlinesettings).
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Manage Underline (Edit, Delete, Comment)
+
+### Edit Underline
+
+#### Edit Underline Appearance (UI)
+Use the annotation toolbar:
+- **Edit Color** tool
+
+- **Edit Opacity** slider
+
+
+#### Edit Underline Programmatically
+Modify an existing underline programmatically using `editAnnotation()`.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function editUnderlineProgrammatically() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ for (let annot of viewer.annotationCollection) {
+ if (annot.textMarkupAnnotationType === 'Underline') {
+ annot.color = '#0000ff';
+ annot.opacity = 0.8;
+ viewer.annotation.editAnnotation(annot);
+ break;
+ }
+ }
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+### Delete Underline
+The PDF Viewer supports deleting existing annotations through both the UI and API. For detailed behavior, supported deletion workflows, and API reference, see [**Delete Annotation**](../remove-annotations).
+
+### Comments
+Use the [**Comments panel**](../comments) to add, view, and reply to threaded discussions linked to underline annotations. It provides a dedicated UI for reviewing feedback, tracking conversations, and collaborating on annotation–related notes within the PDF Viewer.
+
+## Set properties while adding Individual Annotation
+Set properties for individual annotations when adding them programmatically by supplying fields on each `addAnnotation('Underline', …)` call.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function addMultipleUnderlines() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ // Underline 1
+ viewer.annotation.addAnnotation('Underline', {
+ bounds: [{ x: 100, y: 150, width: 320, height: 14 }],
+ pageNumber: 1,
+ author: 'User 1',
+ color: '#ffff00',
+ opacity: 0.9
+ });
+ // Underline 2
+ viewer.annotation.addAnnotation('Underline', {
+ bounds: [{ x: 110, y: 220, width: 300, height: 14 }],
+ pageNumber: 1,
+ author: 'User 2',
+ color: '#ff1010',
+ opacity: 0.9
+ });
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Disable TextMarkup Annotation
+Disable text markup annotations (including underline) using the [`enableTextMarkupAnnotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#enabletextmarkupannotation) property.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Handle Underline Events
+The PDF viewer provides annotation life-cycle events that notify when underline annotations are added, modified, selected, or removed. For the full list of available events and their descriptions, see [**Annotation Events**](../annotation-event).
+
+## Export and Import
+The PDF Viewer supports exporting and importing annotations, allowing you to save annotations as a separate file or load existing annotations back into the viewer. For full details on supported formats and steps to export or import annotations, see [**Export and Import Annotation**](../export-import-annotations)
+
+## See Also
+- [Annotation Toolbar](../../toolbar-customization/annotation-toolbar)
+- [Customize Context Menu](../../context-menu/custom-context-menu)
+- [Comments Panel](../comments)
+- [Annotation Events](../annotation-event)
+- [Export and Import annotations](../export-import-annotations)
+- [Delete Annotations](../remove-annotations)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/volume-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/volume-annotation.md
new file mode 100644
index 0000000000..fdfc14bc56
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotation-types/volume-annotation.md
@@ -0,0 +1,258 @@
+---
+layout: post
+title: Add Volume Measurement Annotations in React PDF Viewer | Syncfusion
+description: Learn how to enable, draw, customize, and manage Volume measurement annotations in the Syncfusion React PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Add Volume Measurement Annotations in React PDF Viewer
+Volume measurement annotations allow users to draw circular regions and calculate the volume visually.
+
+
+
+## Enable Volume Measurement
+Inject the **Annotation** and **Toolbar** modules to enable volume annotation tools.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Toolbar, Annotation, Inject } from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Add Volume Annotation
+
+### Draw Volume Using the Toolbar
+
+1. Open the **Annotation Toolbar**.
+2. Select **Measurement → Volume**.
+3. Click and drag on the page to draw the volume.
+
+
+
+> If Pan mode is active, selecting the Volume tool automatically switches interaction mode.
+
+### Enable Volume Mode
+Programmatically switch the viewer into Volume mode.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function enableVolumeMode() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('Volume');
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+#### Exit Volume Mode
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function exitVolumeMode() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.setAnnotationMode('None');
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+### Add Volume Programmatically
+Configure default properties using the [`Volume Settings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#volumesettings) property (for example, default **fill color**, **stroke color**, **opacity**).
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function addVolume() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.addAnnotation('Volume', {
+ offset: { x: 200, y: 810 },
+ pageNumber: 1,
+ width: 90,
+ height: 90
+ });
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Customize Volume Appearance
+Configure default properties using the [`Volume Settings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#volumesettings) property (for example, default **fill color**, **stroke color**, **opacity**).
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Manage Volume (Move, Resize, Delete)
+- **Move**: Drag inside the polygon to reposition it.
+- **Reshape**: Drag any vertex handle to adjust points and shape.
+
+### Edit Volume Annotation
+
+#### Edit Volume (UI)
+
+- Edit the **fill color** using the Edit Color tool.
+ 
+- Edit the **stroke color** using the Edit Stroke Color tool.
+ 
+- Edit the **border thickness** using the Edit Thickness tool.
+ 
+- Edit the **opacity** using the Edit Opacity tool.
+ 
+- Open **Right Click → Properties** for additional line‑based options.
+ 
+
+#### Edit Volume Programmatically
+Update properties and call `editAnnotation()`.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function editVolumeProgrammatically() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ for (const ann of viewer.annotationCollection) {
+ if (ann.subject === 'Volume calculation') {
+ ann.strokeColor = '#0000FF';
+ ann.thickness = 2;
+ ann.opacity = 0.8;
+ viewer.annotation.editAnnotation(ann);
+ break;
+ }
+ }
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+
+
+### Delete Volume Annotation
+
+Delete Volume Annotation via UI (toolbar/context menu) or programmatically. For supported workflows and APIs, see [**Delete Annotation**](../remove-annotations).
+
+
+
+
+## Set Default Properties During Initialization
+Apply defaults for Volume using the [`volumeSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#volumesettings) property.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+
+
+## Set Properties While Adding Individual Annotation
+Apply defaults for Area using the [`volumeSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#volumesettings) property.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+function addStyledVolume() {
+ const viewer = document.getElementById('container').ej2_instances[0];
+ viewer.annotation.addAnnotation('Volume', {
+ offset: { x: 200, y: 810 },
+ pageNumber: 1,
+ width: 90,
+ height: 90,
+ fillColor: 'yellow',
+ opacity: 0.6,
+ strokeColor: 'yellow'
+ });
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+
+
+## Scale Ratio & Units
+- Use **Scale Ratio** from the context menu.
+ 
+- Supported units: Inch, Millimeter, Centimeter, Point, Pica, Feet.
+ 
+
+### Set Default Scale Ratio During Initialization
+Configure scale defaults using [`measurementSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#mesaurementsettings).
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+
+
+## Handle Volume Events
+Listen to annotation life-cycle events (add/modify/select/remove). For the full list and parameters, see [**Annotation Events**](../annotation-event).
+
+
+
+## Export and Import
+Volume measurements can be exported or imported with other annotations. For workflows and supported formats, see [**Export and Import annotations**](../export-import-annotations).
+
+
+## See Also
+- [Annotation Toolbar](../../toolbar-customization/annotation-toolbar)
+- [Customize Context Menu](../../context-menu/custom-context-menu)
+- [Comments Panel](../comments)
+- [Annotation Events](../annotation-event)
+- [Export and Import annotations](../export-import-annotations)
+- [Delete Annotations](../remove-annotations)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/annotations-api.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotations-api.md
new file mode 100644
index 0000000000..91c4869f68
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotations-api.md
@@ -0,0 +1,1737 @@
+---
+layout: post
+title: Annotations API in React PDF Viewer | Syncfusion
+description: Learn here all about how to read and configure annotations using APIs in the Syncfusion React PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Annotations API in React
+
+The PDF Viewer provides APIs to read the loaded annotations and to configure global defaults for creating/editing annotations.
+
+| API | Description |
+|---|---|
+| [annotationCollection](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#annotationcollection) | Gets the loaded document annotation collection. |
+| [annotationDrawingOptions](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#annotationdrawingoptions) | Options to configure line-type annotation drawing behavior. |
+| [annotationSelectorSettings](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#annotationselectorsettings) | Configures the annotation selector (selection UI). |
+| [annotationSettings](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#annotationsettings) | Global defaults for all annotations. |
+| [areaSettings](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#areasettings) | Defaults for Area annotations. |
+| [arrowSettings](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#arrowsettings) | Defaults for Arrow annotations. |
+| [circleSettings](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#circlesettings) | Defaults for Circle annotations. |
+| [customStamp](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#customstamp) | Defines custom stamp items. |
+| [customStampSettings](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#customstampsettings) | Defaults for Custom Stamp annotations. |
+| [distanceSettings](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#distancesettings) | Defaults for Distance annotations. |
+
+## annotationCollection
+Read the loaded document annotation collection from the viewer instance.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation,
+ LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch,
+ FormFields, FormDesigner
+} from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ const logAnnotations = () => {
+ const viewer = (document.getElementById('container')?.ej2_instances || [])[0];
+ if (viewer) {
+ console.log(viewer.annotationCollection);
+ }
+ };
+
+ return (
+
+
+
+
+
+
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## annotationDrawingOptions
+Configure line-type annotation drawing behavior.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation,
+ LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch,
+ FormFields, FormDesigner
+} from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## annotationSelectorSettings
+Configure the annotation selector (selection UI).
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation,
+ LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch,
+ FormFields, FormDesigner
+} from '@syncfusion/ej2-react-pdfviewer';
+import { AnnotationResizerLocation, CursorType } from '@syncfusion/ej2-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## annotationSettings
+Global defaults for all annotations.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation,
+ LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch,
+ FormFields, FormDesigner
+} from '@syncfusion/ej2-react-pdfviewer';
+import { AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## areaSettings
+Defaults for Area annotations.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation,
+ LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch,
+ FormFields, FormDesigner
+} from '@syncfusion/ej2-react-pdfviewer';
+import { AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## arrowSettings
+Defaults for Arrow annotations.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation,
+ LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch,
+ FormFields, FormDesigner
+} from '@syncfusion/ej2-react-pdfviewer';
+import { AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## circleSettings
+Defaults for Circle annotations.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation,
+ LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch,
+ FormFields, FormDesigner
+} from '@syncfusion/ej2-react-pdfviewer';
+import { AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## customStamp
+Define custom stamp items.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## customStampSettings
+Defaults for Custom Stamp annotations.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-react-pdfviewer';
+import { AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## distanceSettings
+Defaults for Distance annotations.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-react-pdfviewer';
+import { AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## enableAnnotation
+Enable or disable the Add/Edit Annotations tool in the toolbar.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## enableAnnotationToolbar
+Show or hide the annotation toolbar when the document loads.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## enableFreeText
+Enable or disable Free Text annotations.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## enableHandwrittenSignature
+Enable or disable the handwritten signature feature.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## enableInkAnnotation
+Enable or disable Ink annotations (true by default).
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## enableMeasureAnnotation
+Enable or disable calibrate/measurement annotations.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## enableMultiPageAnnotation
+Enable or disable multi-page text markup selection in UI.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## enableShapeAnnotation
+Enable or disable shape annotations.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## enableShapeLabel
+Enable or disable labels for shape annotations.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## enableStampAnnotations
+Enable or disable stamp annotations at load time.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## enableStickyNotesAnnotation
+Enable or disable sticky notes annotations at load time.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## enableTextMarkupAnnotation
+Enable or disable text markup annotations.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## enableTextMarkupResizer
+Enable or disable the text markup resizer to modify bounds in the UI.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## exportAnnotationFileName
+Gets or sets the exported annotations JSON file name.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## freeTextSettings
+Defaults for Free Text annotations.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
+ ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner
+} from '@syncfusion/ej2-react-pdfviewer';
+import { FontStyle, AnnotationResizerLocation, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## handWrittenSignatureSettings
+Defaults for handwritten signatures.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
+ ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner
+} from '@syncfusion/ej2-react-pdfviewer';
+import { DisplayMode, AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## highlightSettings
+Defaults for Highlight annotations.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
+ ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner
+} from '@syncfusion/ej2-react-pdfviewer';
+import { AnnotationResizerLocation, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## inkAnnotationSettings
+Defaults for Ink annotations.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
+ ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner
+} from '@syncfusion/ej2-react-pdfviewer';
+import { AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## isAnnotationToolbarVisible
+Open the annotation toolbar initially and read its visibility state.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## lineSettings
+Defaults for Line annotations.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
+ ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner
+} from '@syncfusion/ej2-react-pdfviewer';
+import { AnnotationResizerLocation, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## measurementSettings
+Defaults for Measurement annotations.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## perimeterSettings
+Defaults for Perimeter annotations.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
+ ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner
+} from '@syncfusion/ej2-react-pdfviewer';
+import { AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## polygonSettings
+Defaults for Polygon annotations.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
+ ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner
+} from '@syncfusion/ej2-react-pdfviewer';
+import { AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## radiusSettings
+Defaults for Radius annotations.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
+ ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner
+} from '@syncfusion/ej2-react-pdfviewer';
+import { AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## rectangleSettings
+Defaults for Rectangle annotations.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
+ ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner
+} from '@syncfusion/ej2-react-pdfviewer';
+import { AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## shapeLabelSettings
+Defaults for shape labels (requires `enableShapeLabel`).
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## stampSettings
+Defaults for Stamp annotations (dynamic/sign/business).
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
+ ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner
+} from '@syncfusion/ej2-react-pdfviewer';
+import { AnnotationResizerLocation, DynamicStampItem, SignStampItem, StandardBusinessStampItem, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## stickyNotesSettings
+Defaults for Sticky Notes annotations.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
+ ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner
+} from '@syncfusion/ej2-react-pdfviewer';
+import { AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## strikethroughSettings
+Defaults for Strikethrough annotations.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
+ ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner
+} from '@syncfusion/ej2-react-pdfviewer';
+import { AnnotationResizerLocation, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## underlineSettings
+Defaults for Underline annotations.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
+ ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner
+} from '@syncfusion/ej2-react-pdfviewer';
+import { AnnotationResizerLocation, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
+
+## volumeSettings
+Defaults for Volume annotations.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent, Inject, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
+ ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner
+} from '@syncfusion/ej2-react-pdfviewer';
+import { AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## See also
+
+- [Annotation Overview](../overview)
+- [Annotation Types](../annotation/annotation-types/area-annotation)
+- [Annotation Toolbar](../../toolbar-customization/annotation-toolbar)
+- [Create and Modify Annotation](../../annotation/create-modify-annotation)
+- [Customize Annotation](../../annotation/customize-annotation)
+- [Remove Annotation](../../annotation/delete-annotation)
+- [Handwritten Signature](../../annotation/signature-annotation)
+- [Export and Import Annotation](../../annotation/export-import/export-annotation)
+- [Annotation in Mobile View](../../annotation/annotations-in-mobile-view)
+- [Annotation Events](../../annotation/annotation-event)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/annotations-in-mobile-view.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotations-in-mobile-view.md
index deb9a7eb27..181983e464 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/annotation/annotations-in-mobile-view.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotations-in-mobile-view.md
@@ -1,122 +1,138 @@
---
layout: post
-title: Annotations mobileView in React PDF Viewer control | Syncfusion
-description: Learn to add rectangle annotations via text search in Syncfusion React PDF Viewer for enhanced mobile usability.
+title: Annotations mobileView in React PDF Viewer | Syncfusion
+description: Learn here all about how to use annotations in mobile view with the Syncfusion React PDF Viewer Component.
platform: document-processing
control: PDF Viewer
documentation: ug
domainurl: ##DomainURL##
---
-# Annotations in mobile view in React PDF Viewer control
+# Annotations in mobile view in React PDF Viewer
+
+This article describes how to use annotation tools in the Syncfusion React PDF Viewer on touch-enabled devices. It covers enabling the annotation toolbar; adding sticky notes, text markups, shapes, measurements, stamps, signatures, and ink; adjusting annotation properties before and after placement; using comments; and removing annotations.
## Open the annotation toolbar
-**Step 1:** Click Edit Annotation on the toolbar to enable the annotation toolbar.
+**Step 1:** Select the Edit Annotation icon on the main toolbar to enable the annotation toolbar.

-**Step 2:** The annotation toolbar appears below the main toolbar.
+**Step 2:** The annotation toolbar appears below the main toolbar and displays tools optimized for touch interaction.

## Add sticky note annotations
-**Step 1:** Click the Sticky Notes icon, then tap the page where the note should be placed.
+**Step 1:** Select the Sticky Notes icon to activate the sticky note tool, then tap the desired location on the page to place a note.

-**Step 2:** Tap the page to add the sticky note annotation.
+**Step 2:** A sticky note annotation is added at the selected location; opening the note allows viewing or editing its content.

## Add text markup annotations
-**Step 1:** Tap a text markup icon, select the text to mark, then tap the selection to apply the markup.
+**Step 1:** Select a text markup icon, highlight the desired text, then confirm the selection to apply the markup.

-**Step 2:** The text markup annotation is applied to the selected text.
+**Step 2:** The text markup annotation is applied to the highlighted text.

## Add shape and measurement annotations
-**Step 1:** Tap the Shape or Measure icon to open the corresponding toolbar.
+**Step 1:** Select the Shape or Measure icon to open the corresponding toolbar.

-**Step 2:** Choose a shape or measurement type, then draw it on the page.
+**Step 2:** Choose a shape or measurement type and draw it on the page.

-**Step 3:** The annotation appears on the PDF page.
+**Step 3:** The annotation is rendered on the PDF page.

## Add stamp annotations
-**Step 1:** Tap the Stamp icon and select a stamp type from the menu.
+**Step 1:** Select the Stamp icon and choose a stamp type from the menu.

-**Step 2:** Tap the page to place the stamp annotation.
+**Step 2:** Tap the page to place the chosen stamp annotation.

## Add signature annotations
-**Step 1:** Tap the Signature icon to open the canvas. Draw the signature, tap Create, then tap the viewer to place it.
+**Step 1:** Select the Signature icon to open the signature canvas. Draw the signature, choose Create, then tap the viewer to place it.

-**Step 2:** The signature is added to the page.
+**Step 2:** The signature annotation is added to the page.

## Add ink annotations
-**Step 1:** Tap the Ink tool and draw on the page.
+**Step 1:** Select the Ink tool and draw directly on the page.

-**Step 2:** The ink annotation appears on the page.
+**Step 2:** The ink annotation is rendered on the page.
-
+
## Change annotation properties (before adding)
-**Step 1:** Change properties before placing the annotation.
+**Step 1:** Adjust annotation properties before placement as required.
-**Step 2:** Tap the annotation icon to open the property toolbar, adjust properties, then place the annotation on the page.
+**Step 2:** Open the property toolbar for the annotation icon, set the desired properties, and then place the annotation on the page.

## Change annotation properties (after adding)
-**Step 1:** Change annotation properties after adding the annotation.
+**Step 1:** Modify annotation properties after placement when necessary.
-**Step 2:** Select the annotation to show the property toolbar, then adjust the properties.
+**Step 2:** Select the annotation to display the property toolbar, then update the properties as needed.

## Delete annotations
-**Step 1:** Select the annotation to show the property toolbar, then tap the Delete icon to remove it.
+**Step 1:** Select the annotation to display the property toolbar, then choose the Delete icon to remove the annotation.

## Open the comment panel
-**Step 1:** Open the comment panel using the icon in the property toolbar or the annotation toolbar.
+**Step 1:** Open the comment panel from the property toolbar or the annotation toolbar.

-**Step 2:** The comment panel appears.
+**Step 2:** The comment panel is displayed.

## Close the comment panel
-**Step 1:** Tap the Close button to close the comment panel.
+**Step 1:** Use the Close button to dismiss the comment panel.
+
+
+
+## See also
-
\ No newline at end of file
+- [Annotation Overview](../overview)
+- [Annotation Types](../annotations/annotation-types/area-annotation)
+- [Annotation Toolbar](../toolbar-customization/annotation-toolbar)
+- [Create and Modify Annotation](../annotations/create-modify-annotation)
+- [Customize Annotation](../annotations/customize-annotation)
+- [Remove Annotation](../annotations/delete-annotation)
+- [Handwritten Signature](../annotations/signature-annotation)
+- [Export and Import Annotation](../annotations/export-import/export-annotation)
+- [Annotation Permission](../annotations/annotation-permission)
+- [Annotation Events](../annotations/annotation-event)
+- [Annotation API](../annotations/annotations-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/annotations-undo-redo.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotations-undo-redo.md
new file mode 100644
index 0000000000..ad1789d406
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/annotations-undo-redo.md
@@ -0,0 +1,81 @@
+---
+layout: post
+title: Undo and Redo annotation in React PDF Viewer | Syncfusion
+description: Learn to undo and redo annotations changes in Syncfusion React PDF Viewer, with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Undo and redo annotations in React PDF Viewer
+
+The PDF Viewer supports undo and redo for annotations.
+
+
+
+Undo and redo actions can be performed by using either of the following methods:
+
+1. Using keyboard shortcuts (desktop):
+ After performing an annotation action, press `Ctrl+Z` to undo and `Ctrl+Y` to redo on Windows and Linux. On macOS, use `Command+Z` to undo and `Command+Shift+Z` to redo.
+2. Using the toolbar:
+ Use the **Undo** and **Redo** tools in the toolbar.
+
+Refer to the following code snippet to call undo and redo actions from the client side.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Annotation, TextSelection } from '@syncfusion/ej2-react-pdfviewer';
+
+function getViewer() { return document.getElementById('container').ej2_instances[0]; }
+
+function undoAnnotation() {
+ getViewer().undo();
+}
+
+function redoAnnotation() {
+ getViewer().redo();
+}
+
+function App() {
+ return (
+ <>
+
+
+
+
+
+
+
+ >
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es6/text-markup-annotation/undo-redo-cs1" %}
+
+## See also
+
+- [Annotation Overview](../overview)
+- [Annotation Types](../annotation/annotation-types/area-annotation)
+- [Annotation Toolbar](../../toolbar-customization/annotation-toolbar)
+- [Create and Modify Annotation](../../annotation/create-modify-annotation)
+- [Customize Annotation](../../annotation/customize-annotation)
+- [Remove Annotation](../../annotation/delete-annotation)
+- [Handwritten Signature](../../annotation/signature-annotation)
+- [Export and Import Annotation](../../annotations/export-import/export-annotation)
+- [Annotation in Mobile View](../../annotation/annotations-in-mobile-view)
+- [Annotation Events](../../annotation/annotation-event)
+- [Annotations API](../annotation/annotations-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/comments.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/comments.md
index 034ebeadc2..89de793e9c 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/annotation/comments.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/comments.md
@@ -1,170 +1,513 @@
---
layout: post
-title: Comments in React Pdfviewer component | Syncfusion
-description: Learn about comments, replies, and status in the Syncfusion React PDF Viewer control (Essential JS 2).
-control: PDF Viewer
+title: Comments in React PDF Viewer | Syncfusion
+description: Learn how to add, reply to, edit, set status for, delete, and read comments for annotations in the Syncfusion React PDF Viewer.
platform: document-processing
+control: PDF Viewer
documentation: ug
domainurl: ##DomainURL##
---
# Comments in React PDF Viewer
-The PDF Viewer control provides options to add, edit, and delete comments for the following annotations in PDF documents:
+The PDF Viewer lets you add, edit, reply to, set status for, and delete comments on the following annotation types:
-* Shape annotation
-* Stamp annotation
-* Sticky note annotation
-* Measurement annotation
-* Text markup annotation
-* Free text annotation
-* Ink annotation
+* Shape annotation
+* Stamp annotation
+* Sticky note annotation
+* Measurement annotation
+* Text markup annotation
+* Free text annotation
+* Ink annotation

-## Adding a comment to the annotation
-
-
-Annotation comments, replies, and status can be managed to the PDF document using the comment panel.
-
-### Comment panel
-
-Annotation comments can be added to the PDF using the comment panel. The comment panel can be opened in the following ways:
-
-1. Using the annotation menu
-
- * Click the Edit Annotation button in the PDF Viewer toolbar. A toolbar appears below it.
- * Click the Comment Panel button. The comment panel opens.
-
-2. Using Context menu
-
- * Select the annotation in the PDF document and right-click it.
- * Select Comment from the context menu.
-
-3. Using the Mouse click
-
- * Select the annotation in the PDF document and double-click it. The comment panel opens.
-
-If the comment panel is already open, select the annotation and add comments using the panel.
+## Add a comment to an annotation (UI)
-### Adding comments
+Use the **Comments panel** to manage annotation comments, replies, and status.
-* Select the annotation in the PDF document.
-* The corresponding comment thread is highlighted in the comment panel.
-* Add comments and replies using the comment panel.
+### Open the Comments panel
+Open the panel in any of these ways:
-
+1. **Annotation toolbar**
+ * Click **Edit Annotation** in the toolbar to show the secondary toolbar.
+ * Click **Comment Panel** to open the panel.
+2. **Context menu**
+ * Select an annotation and **right‑click** it.
+ * Choose **Comment** from the context menu.
+3. **Double‑click**
+ * Select the annotation and **double‑click** it to open the panel.
-### Adding Comment Replies
+If the panel is already open, selecting an annotation highlights its thread so you can view or add comments.
-* Multiple replies can be added to a comment.
-* After adding a comment, add replies as needed.
+### Add comments and replies
+- Select the annotation in the PDF.
+- The corresponding thread is highlighted in the Comments panel.
+- Add comments and any number of replies in the panel.
-### Adding Comment or Reply Status
+
-* Select the annotation comment in the comment panel.
-* Click More options in the comment or reply container.
-* Select Set Status from the context menu.
-* Choose a status for the comment.
+### Set comment or reply status
+- Select a comment in the panel.
+- Click **More options** on the comment or reply container.
+- Choose **Set Status**, then pick a status.

-### Editing the comments and comments replies of the annotations
+### Edit comments and replies
+You can edit comments in two ways:
-Comments, replies, and status can be edited using the comment panel.
-
-### Editing the Comment or Comment Replies
-
-Edit comments and replies in the following ways:
-
-1. Using the Context menu
-
- * Select the annotation comment in the comment panel.
- * Click More options in the comment or reply container.
- * Select Edit from the context menu.
- * An editable text box appears. Change the content of the comment or reply.
-
-2. Using the Mouse Click
-
- * Select the annotation comment in the comment panel.
- * Double-click the comment or reply content.
- * An editable text box appears. Change the content of the comment or reply.
-
-### Editing Comment or Reply Status
-
-* Select the annotation comment in the comment panel.
-* Click More options in the comment or reply container.
-* Select Set Status from the context menu.
-* Choose a status for the comment.
-* None is the default state. Selecting None clears the status indicator; the comment or reply remains visible.
+1. **Context menu**
+ * Select the comment in the panel and click **More options**.
+ * Choose **Edit** to switch to an editable text box.
+2. **Mouse double‑click**
+ * Double‑click the comment or reply to edit its content.

-### Delete Comment or Comment Replies
-
-* Select the annotation comment in the comment panel.
-* Click More options in the comment or reply container.
-* Select Delete from the context menu.
+### Delete comments or replies
+- Select the comment in the panel.
+- Click **More options** → **Delete**.

->Deleting the root comment from the comment panel also deletes the associated annotation.
-```html
-
-## How to check the comments added by the user
+> Deleting the **root** comment from the Comments panel also deletes the associated annotation.
-Comments added to the PDF document can be read using the annotation's `comments` property.
+---
-The following example logs comments in response to a button click.
+## Add Comments to the annotation Programmatically
-```html
-
-```
+### Add comments and replies programmatically
-{% tabs %}
-{% highlight html tabtitle="Standalone" %}
+Comments can be added to the PDF document programmatically using the `editAnnotation` property.
-import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer} from '@syncfusion/ej2-pdfviewer';
+The following example Shows how to add comments and reply in response to a button click.
-PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent,
+ Inject,
+ Toolbar,
+ Magnification,
+ Navigation,
+ Annotation,
+ LinkAnnotation,
+ ThumbnailView,
+ BookmarkView,
+ TextSelection,
+ TextSearch,
+ FormFields,
+ FormDesigner,
+ PageOrganizer
+} from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ const addComment = () => {
+ const viewer = (document.getElementById('container')?.ej2_instances || [])[0];
+ if (!viewer) return;
+ const annot = viewer.annotationCollection?.[0];
+ if (annot) {
+ annot.commentType = 'add';
+ annot.note = 'New Comment';
+ viewer.annotation.editAnnotation(annot);
+ console.log(viewer.annotationCollection?.[0]);
+ }
+ };
+
+ const addReply = () => {
+ const viewer = (document.getElementById('container')?.ej2_instances || [])[0];
+ if (!viewer) return;
+ const annot = viewer.annotationCollection?.[0];
+ if (annot) {
+ annot.commentType = 'add';
+ annot.replyComment = ['Reply Comment'];
+ viewer.annotation.editAnnotation(annot);
+ console.log(viewer.annotationCollection?.[0]);
+ }
+ };
+
+ return (
+
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
-import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer} from '@syncfusion/ej2-pdfviewer';
+### Read comments added by users
-PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+Comments added to the PDF document can be read using the annotation's `comments` property.
-let pdfviewer: PdfViewer = new PdfViewer();
-pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
-pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
-pdfviewer.appendTo('#PdfViewer');
+The following example logs comments in response to a button click.
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent,
+ Inject,
+ Toolbar,
+ Magnification,
+ Navigation,
+ Annotation,
+ LinkAnnotation,
+ ThumbnailView,
+ BookmarkView,
+ TextSelection,
+ TextSearch,
+ FormFields,
+ FormDesigner,
+ PageOrganizer
+} from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ const checkComments = () => {
+ const viewer = (document.getElementById('container')?.ej2_instances || [])[0];
+ if (!viewer) return;
+
+ const annotationCollections = viewer.annotationCollection || [];
+ for (let x = 0; x < annotationCollections.length; x++) {
+ console.log('annotation Id : ' + annotationCollections[x].annotationId);
+ const comments = annotationCollections[x].comments || [];
+ for (let y = 0; y < comments.length; y++) {
+ const comment = comments[y];
+ console.log('comment[' + y + '] : ' + comment.note);
+ }
+ const note = annotationCollections[x].note;
+ console.log('note : ' + note);
+ }
+ };
+
+ return (
+
+
+
+
+
+
+
+
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
{% endhighlight %}
{% endtabs %}
-```typescript
-//Method to check the comments added in the PDF document.
-document.getElementById('checkComments').addEventListener('click', function () {
- var annotationCollections = pdfviewer.annotationCollection;
- for (var x = 0; x < annotationCollections.length; x++) {
- //Prints the annotation id in the console window.
- console.log("annotation Id : " +annotationCollections[x].annotationId);
- var comments = annotationCollections[x].comments;
- for (var y = 0; y < comments.length; y++) {
- var comment = comments[y];
- //Prints the PDF document's comments in the console window.
- console.log("comment" + "[" + y + "] :" + comment.note);
- }
- var note = annotationCollections[x].note;
- console.log("note : " + note);
- }
-});
+---
-```
\ No newline at end of file
+## See also
+- [Annotation Overview](../overview)
+- [Annotation Types](../annotation/annotation-types/area-annotation)
+- [Annotation Toolbar](../toolbar-customization/annotation-toolbar)
+- [Create and Modify Annotation](../annotation/create-modify-annotation)
+- [Customize Annotation](../annotation/customize-annotation)
+- [Remove Annotation](../annotation/delete-annotation)
+- [Handwritten Signature](../annotation/signature-annotation)
+- [Export and Import Annotation](../annotation/export-import/export-annotation)
+- [Annotation Permission](../annotationsannotation-permission)
+- [Annotation in Mobile View](../annotation/annotations-in-mobile-view)
+- [Annotation Events](../annotation/annotation-event)
+- [Annotation API](../annotation/annotations-api)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/create-modify-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/create-modify-annotation.md
new file mode 100644
index 0000000000..455c86a68c
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/create-modify-annotation.md
@@ -0,0 +1,198 @@
+---
+layout: post
+title: Create and modify annotations in React PDF Viewer | Syncfusion
+description: Learn how to create and modify annotations in Syncfusion React PDF Viewer with UI and programmatic examples, plus quick links to all annotation types.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Create and modify annotations in React
+
+The PDF Viewer annotation tools add, edit, and manage markups across documents. This page provides an overview with quick navigation to each annotation type and common creation and modification workflows.
+
+## Quick navigation to annotation types
+
+Jump directly to a specific annotation type for detailed usage and examples:
+
+TextMarkup annotations:
+
+- Highlight: [Highlight annotation](./annotation-types/highlight-annotation)
+- Strikethrough: [Strikethrough annotation](./annotation-types/strikethrough-annotation)
+- Underline: [Underline annotation](./annotation-types/underline-annotation)
+- Squiggly: [Squiggly annotation](./annotation-types/Squiggly-annotation)
+
+Shape annotations:
+
+- Line: [Line annotation](./annotation-types/line-annotation)
+- Arrow: [Arrow annotation](./annotation-types/arrow-annotation)
+- Rectangle: [Rectangle annotation](./annotation-types/rectangle-annotation)
+- Circle : [Circle annotation](./annotation-types/circle-annotation)
+- Polygon: [Polygon annotation](./annotation-types/polygon-annotation)
+
+Measurement annotations:
+
+- Distance: [Distance annotation](./annotation-types/distance-annotation)
+- Perimeter: [Perimeter annotation](./annotation-types/perimeter-annotation)
+- Area: [Area annotation](./annotation-types/area-annotation)
+- Radius: [Radius annotation](./annotation-types/ra)
+- Volume: [Volume annotation](./annotation-types/vo)
+
+Other annotations:
+
+- Redaction: [Redaction annotation](./annotation-types/redaction-annotation)
+- Free Text: [Free text annotation](./annotation-types/free-text-annotation)
+- Ink (Freehand): [Ink annotation](./annotation-types/ink-annotation)
+- Stamp: [Stamp annotation](./annotation-types/stamp-annotation)
+- Sticky Notes: [Sticky notes annotation](./annotation-types/sticky-notes-annotation)
+
+N> Each annotation type page includes both UI steps and programmatic examples specific to that type.
+
+## Create annotations
+
+### Create via UI
+
+- Open the annotation toolbar in the PDF Viewer.
+- Choose the required tool (for example, Shape, Free text, Ink, Stamp, Redaction).
+- Click or drag on the page to place the annotation.
+
+
+
+Note:
+- When pan mode is active and a shape or stamp tool is selected, the viewer switches to text select mode automatically.
+- Property pickers in the annotation toolbar let users choose color, stroke color, thickness, and opacity while drawing
+
+### Create programmatically
+
+Creation patterns vary by type. Refer to the individual annotation pages for tailored code. Example: creating a Redaction annotation using [`addAnnotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#annotationsettings).
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Annotation } from '@syncfusion/ej2-react-pdfviewer';
+
+function getViewer() { return document.getElementById('container').ej2_instances[0]; }
+
+function addRedactionAnnotation() {
+ const viewer = getViewer();
+ viewer.annotation.addAnnotation('Redaction', {
+ bound: { x: 200, y: 480, width: 150, height: 75 },
+ pageNumber: 1,
+ markerFillColor: '#0000FF',
+ markerBorderColor: 'white',
+ fillColor: 'red',
+ overlayText: 'Confidential',
+ fontColor: 'yellow',
+ fontFamily: 'Times New Roman',
+ fontSize: 8,
+ beforeRedactionsApplied: false
+ });
+}
+
+function App() {
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+Refer to the individual annotation pages for enabling draw modes from UI buttons and other type-specific creation samples.
+
+## Modify annotations
+
+### Modify via UI
+
+Use the annotation toolbar after selecting an annotation:
+- Edit color: change the fill or text color (when applicable)
+
+- Edit stroke color: change the border or line color (shape and line types)
+
+- Edit thickness: adjust the border or line thickness
+
+- Edit opacity: change transparency
+
+
+
+Additional options such as Line Properties (for line/arrow) are available from the context menu (right-click > Properties) where supported.
+
+### Modify programmatically
+
+Use `editAnnotation` to apply changes to an existing annotation. Common flow:
+- Locate the target annotation from `annotationCollection`.
+- Update the desired properties.
+- Call `editAnnotation` with the modified object.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Annotation } from '@syncfusion/ej2-react-pdfviewer';
+
+function getViewer() { return document.getElementById('container').ej2_instances[0]; }
+
+function bulkEditAnnotations() {
+ const viewer = getViewer();
+ for (const ann of viewer.annotationCollection) {
+ // Example match: author/subject; customize the condition as needed
+ if (ann.author === 'Guest User' || ann.subject === 'Corrections') {
+ ann.color = '#ff0000';
+ ann.opacity = 0.8;
+ viewer.annotation.editAnnotation(ann);
+ }
+ }
+}
+
+function App() {
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+N> For type-specific edit examples (for example, editing line endings, moving stamps, or updating sticky note bounds), see the corresponding annotation type page linked above.
+
+## See also
+
+- [Annotation Overview](../overview)
+- [Annotation Types](../annotation/annotation-types/area-annotation)
+- [Annotation Toolbar](../toolbar-customization/annotation-toolbar)
+- [Customize Annotation](../annotation/customize-annotation)
+- [Remove Annotation](../annotation/delete-annotation)
+- [Handwritten Signature](../annotation/signature-annotation)
+- [Export and Import Annotation](../annotation/export-import/export-annotation)
+- [Annotation Permission](../annotation/annotation-permission)
+- [Annotation in Mobile View](../annotation/annotations-in-mobile-view)
+- [Annotation Events](../annotation/annotation-event)
+- [Annotation API](../annotation/annotations-api)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/custom-data.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/custom-data.md
new file mode 100644
index 0000000000..41161dc67f
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/custom-data.md
@@ -0,0 +1,183 @@
+---
+layout: post
+title: Custom Data in annotations in React PDF Viewer | Syncfusion
+description: Learn here all about how to use add custom Data in annotation in Syncfusion React PDF Viewer Component.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Custom data in annotations in React
+
+Annotations can include custom key–value data via the `customData` property. This is supported at two levels:
+
+- Default level via `annotationSettings`: applies to all annotations created through the UI.
+- Per-annotation-type level: provide `customData` inside specific annotation-type settings (for example, `highlightSettings`, `rectangleSettings`).
+
+The `customData` value can be any JSON-serializable object. It is preserved during annotation export/import and is available at runtime on the annotation object.
+
+## Default custom data (annotationSettings)
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent, Inject,
+ Toolbar, Annotation, TextSelection,
+ AllowedInteraction
+} from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Custom data for Individual Annotation
+
+Provide customData inside individual annotation-type settings when you want specific payloads for different tools.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent, Inject,
+ Toolbar, Annotation, TextSelection
+} from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Retrieve custom data at runtime
+
+You can access the customData for any annotation through the viewer's annotationCollection. For example, wire a button click to iterate all annotations and read their custom payloads.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Annotation, TextSelection } from '@syncfusion/ej2-react-pdfviewer';
+
+function getViewer() { return document.getElementById('container').ej2_instances[0]; }
+
+function showCustomData() {
+ const viewer = getViewer();
+ viewer.annotationCollection.forEach((a) => {
+ console.log('Annotation', a.id, 'customData:', a.customData);
+ });
+}
+
+function App() {
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+### Note
+- `customData` can be any JSON-serializable object and is stored with the annotation.
+- Use `annotationSettings.customData` for global defaults and override with per-tool settings as needed.
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/react-pdf-viewer-examples)
+
+## See also
+
+- [Annotation Overview](../overview)
+- [Annotation Types](../annotations/annotation-types/area-annotation)
+- [Annotation Toolbar](../toolbar-customization/annotation-toolbar)
+- [Create and Modify Annotation](../annotations/create-modify-annotation)
+- [Customize Annotation](../annotations/customize-annotation)
+- [Remove Annotation](../annotations/delete-annotation)
+- [Handwritten Signature](../annotations/signature-annotation)
+- [Export and Import Annotation](../annotations/export-import/export-annotation)
+- [Annotation Permission](../annotations/annotation-permission)
+- [Annotation in Mobile View](../annotations/annotations-in-mobile-view)
+- [Annotation Events](../annotations/annotation-event)
+- [Annotation API](../annotations/annotations-api)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/custom-tools.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/custom-tools.md
new file mode 100644
index 0000000000..90fa678963
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/custom-tools.md
@@ -0,0 +1,179 @@
+---
+layout: post
+title: Custom annotation tools in React PDF Viewer | Syncfusion
+description: Learn how to build a custom toolbar for Syncfusion React PDF Viewer and switch annotation tools programmatically using setAnnotationMode.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Custom annotation tools in React PDF Viewer
+
+The PDF Viewer supports adding a custom toolbar and toggling annotation tools programmatically using the `setAnnotationMode` method. The viewer can enable tools such as Highlight, Underline, Rectangle, Circle, Arrow, Free Text, Ink, and measurement annotations (Distance, Perimeter, Area, Radius)
+
+Follow these steps to build a minimal custom annotation toolbar.
+
+Step 1: Start from a basic PDF Viewer sample
+
+Refer to the [Getting started guide](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started) to create a basic sample.
+
+Step 2: Add a lightweight custom toolbar with React buttons
+
+Add buttons for the tools to expose. The sample below uses plain React buttons for simplicity; replace with a Syncfusion ToolbarComponent for a richer UI if desired.
+
+Step 3: Import and inject modules
+
+Ensure the `Annotation` module is injected. Include text selection and search modules if those capabilities are required.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Annotation, TextSelection } from '@syncfusion/ej2-react-pdfviewer';
+
+function getViewer() { return document.getElementById('container').ej2_instances[0]; }
+
+function setMode(mode) { getViewer().annotation.setAnnotationMode(mode); }
+
+function App() {
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Custom tools using Syncfusion Toolbar for a richer UI
+
+Replace the plain buttons with a Syncfusion `ToolbarComponent` and icons for a richer UI. Add the `@syncfusion/ej2-react-navigations` package and wire each item's `clicked` handler to `setAnnotationMode`.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Annotation, TextSelection } from '@syncfusion/ej2-react-pdfviewer';
+import { ToolbarComponent, ItemsDirective, ItemDirective } from '@syncfusion/ej2-react-navigations';
+
+function getViewer() { return document.getElementById('container').ej2_instances[0]; }
+
+function onToolbarClick(args) {
+ const modeMap = {
+ annHighlight: 'Highlight',
+ annUnderline: 'Underline',
+ annStrike: 'Strikethrough',
+ annRect: 'Rectangle',
+ annCircle: 'Circle',
+ annLine: 'Line',
+ annArrow: 'Arrow',
+ annPolygon: 'Polygon',
+ annFreeText: 'FreeText',
+ annInk: 'Ink',
+ annSticky: 'StickyNotes',
+ annDistance: 'Distance',
+ annPerimeter: 'Perimeter',
+ annArea: 'Area',
+ annRadius: 'Radius',
+ annNone: 'None'
+ };
+ const mode = modeMap[args.item.id];
+ if (mode) { getViewer().annotation.setAnnotationMode(mode); }
+}
+
+function App() {
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+Note
+
+- `setAnnotationMode` accepts the annotation type name. Common values include: `Highlight`, `Underline`, `Strikethrough`, `StickyNotes`, `FreeText`, `Ink`, `Rectangle`, `Circle`, `Line`, `Arrow`, `Polygon`, `Polyline`, `Distance`, `Perimeter`, `Area`, `Radius`, and `None` to exit.
+- Default annotation styles can be predefined using the corresponding settings properties (for example, `areaSettings`).
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../overview)
+- [Annotation Types](../annotation/annotation-types/area-annotation)
+- [Annotation Toolbar](../toolbar-customization/annotation-toolbar)
+- [Create and Modify Annotation](../annotation/create-modify-annotation)
+- [Customize Annotation](../annotation/customize-annotation)
+- [Remove Annotation](../annotation/delete-annotation)
+- [Handwritten Signature](../annotation/signature-annotation)
+- [Export and Import Annotation](../annotation/export-import/export-annotation)
+- [Annotation Permission](../annotation/annotation-permission)
+- [Annotation in Mobile View](../annotation/annotations-in-mobile-view)
+- [Annotation Events](../annotation/annotation-event)
+- [Annotation API](../annotation/annotations-api)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/customize-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/customize-annotation.md
new file mode 100644
index 0000000000..f44d4b1941
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/customize-annotation.md
@@ -0,0 +1,274 @@
+---
+layout: post
+title: Customize annotations in React PDF Viewer | Syncfusion
+description: Learn how to customize PDF annotations in Syncfusion React PDF Viewer using UI tools and programmatic settings (defaults and runtime edits).
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Customize annotations in React
+
+Annotation appearance and behavior (for example color, stroke color, thickness, and opacity) can be customized using the built‑in UI or programmatically. This page summarizes common customization patterns and shows how to set defaults per annotation type.
+
+## Customize via UI
+
+Use the annotation toolbar after selecting an annotation:
+- Edit color: changes the annotation fill/text color
+
+- Edit stroke color: changes border or line color for shapes and lines types.
+
+- Edit thickness: adjusts border or line thickness
+
+- Edit opacity: adjusts transparency
+
+
+Type‑specific options (for example, Line properties) are available from the context menu (right‑click > Properties) where supported.
+
+## Set default properties during initialization
+
+Set defaults for specific annotation types when creating the `PdfViewer` instance. Configure properties such as author, subject, color, and opacity using annotation settings. The examples below reference settings used on the annotation type pages.
+
+Text markup annotations:
+
+- Highlight: Set default properties before creating the control using [`highlightSettings`](./annotation-types/highlight-annotation#set-properties-while-adding-individual-annotation)
+- Strikethrough: Use [`strikethroughSettings`](./annotation-types/strikethrough-annotation#set-properties-while-adding-individual-annotation)
+- Underline: Use [`underlineSettings`](./annotation-types/underline-annotation#set-properties-while-adding-individual-annotation)
+- Squiggly: Use [`squigglySettings`](./annotation-types/Squiggly-annotation#set-properties-while-adding-individual-annotation)
+
+Shape annotations:
+
+- Line: Use [`lineSettings`](./annotation-types/line-annotation#set-properties-while-adding-individual-annotation)
+- Arrow: Use [`arrowSettings`](./annotation-types/arrow-annotation#set-properties-while-adding-individual-annotation)
+- Rectangle: Use [`rectangleSettings`](./annotation-types/rectangle-annotation#set-properties-while-adding-individual-annotation)
+- Circle: Use [`circleSettings`](./annotation-types/circle-annotation#set-properties-while-adding-individual-annotation)
+- Polygon: Use [`polygonSettings`](./annotation-types/polygon-annotation#set-properties-while-adding-individual-annotation)
+
+Measurement annotations:
+
+- Distance: Use [`distanceSettings`](./annotation-types/distance-annotation#set-default-properties-during-initialization)
+- Perimeter: Use [`perimeterSettings`](./annotation-types/perimeter-annotation#set-default-properties-during-initialization)
+- Area: Use [`areaSettings`](./annotation-types/area-annotation#set-default-properties-during-initialization)
+- Radius: Use [`radiusSettings`](./annotation-types/radius-annotation#set-default-properties-during-initialization)
+- Volume: Use [`volumeSettings`](./annotation-types/volume-annotation#set-default-properties-during-initialization)
+
+Other Annotations:
+
+- Redaction: Use [`redactionSettings`](./annotation-types/redaction-annotation#default-redaction-settings-during-initialization)
+- Free text: Use [`freeTextSettings`](./annotation-types/free-text-annotation#set-default-properties-during-initialization)
+- Ink (freehand): Use [`inkAnnotationSettings`](./annotation-types/ink-annotation#customize-ink-appearance)
+- Stamp: Use [`stampSettings`](./annotation-types/stamp-annotation#set-properties-while-adding-individual-annotation)
+- Sticky notes: Use [`stickyNotesSettings`](./annotation-types/sticky-notes#set-default-properties-during-initialization)
+
+Set defaults for specific annotation types when creating the `PdfViewerComponent`. Below are examples using settings already used in the annotation type pages.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent, Inject,
+ Toolbar, Annotation, TextSelection
+} from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+N> After changing defaults using UI tools (for example, Edit color or Edit opacity), the updated values apply to subsequent annotations within the same session.
+
+## Customize programmatically at runtime
+
+To update an existing annotation from code, modify its properties and call editAnnotation.
+
+Example: bulk‑update matching annotations.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Annotation, TextSelection } from '@syncfusion/ej2-react-pdfviewer';
+
+function getViewer() { return document.getElementById('container').ej2_instances[0]; }
+
+function bulkUpdateAnnotations() {
+ const viewer = getViewer();
+ for (const ann of viewer.annotationCollection) {
+ // Example criteria; customize as needed
+ if (ann.author === 'Guest' || ann.subject === 'Rectangle') {
+ ann.color = '#ff0000';
+ ann.opacity = 0.8;
+ // For shapes/lines you can also change strokeColor/thickness when applicable
+ // ann.strokeColor = '#222222';
+ // ann.thickness = 2;
+ viewer.annotation.editAnnotation(ann);
+ }
+ }
+}
+
+function App() {
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Customize Annotation Settings
+
+Defines the settings of the annotations. You can change annotation settings like author name, height, width etc., using the [`annotationSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#annotationsettings) prop.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent, Inject,
+ Toolbar, Annotation, TextSelection,
+ AllowedInteraction
+} from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+## Customize Annotation SelectorSettings
+
+Defines the settings of annotation selector. You can customize the annotation selector using the [`annotationSelectorSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#annotationselectorsettings) prop.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent, Inject,
+ Toolbar, Annotation, TextSelection,
+ AnnotationResizerLocation, CursorType
+} from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/react-pdf-viewer-examples)
+
+## See also
+
+- [Annotation Overview](../overview)
+- [Annotation Types](../annotation/annotation-types/area-annotation)
+- [Annotation Toolbar](../toolbar-customization/annotation-toolbar)
+- [Create and Modify Annotation](../annotation/create-modify-annotation)
+- [Remove Annotation](../annotation/delete-annotation)
+- [Handwritten Signature](../annotation/signature-annotation)
+- [Export and Import Annotation](../annotation/export-import/export-annotation)
+- [Annotation Permission](../annotation/annotation-permission)
+- [Annotation in Mobile View](../annotation/annotations-in-mobile-view)
+- [Annotation Events](../annotation/annotation-event)
+- [Annotation API](../annotation/annotations-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/delete-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/delete-annotation.md
new file mode 100644
index 0000000000..69bbee0557
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/delete-annotation.md
@@ -0,0 +1,89 @@
+---
+layout: post
+title: Remove annotations in React PDF Viewer | Syncfusion
+description: Learn how to remove/delete PDF annotations in Syncfusion React PDF Viewer using UI options (context menu, toolbar, Delete key) and programmatic APIs.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Remove annotations in React
+
+Annotations can be removed using the built-in UI or programmatically. This page shows common methods to delete annotations in the viewer.
+
+## Delete via UI
+
+A selected annotation can be deleted in three ways:
+
+- Context menu: right-click the annotation and choose Delete.
+
+- Annotation toolbar: select the annotation and click the Delete button on the annotation toolbar.
+
+- Keyboard: select the annotation and press the `Delete` key.
+
+## Delete programmatically
+
+Annotations can be deleted programmatically either by removing the currently selected annotation or by specifying an annotation id.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Annotation, TextSelection } from '@syncfusion/ej2-react-pdfviewer';
+
+function getViewer() { return document.getElementById('container').ej2_instances[0]; }
+
+function deleteAnnotation() {
+ // Delete the selected annotation
+ getViewer().annotation.deleteAnnotation();
+}
+
+function deleteAnnotationById() {
+ const viewer = getViewer();
+ // Delete the first annotation using its id from the annotation collection
+ if (viewer.annotationCollection.length > 0) {
+ viewer.annotation.deleteAnnotationById(viewer.annotationCollection[0].id);
+ }
+}
+
+function App() {
+ return (
+ <>
+
+
+
+
+
+ >
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+N> Deleting via the API requires the annotation to exist in the current document. Ensure an annotation is selected when using `deleteAnnotation()`, or pass a valid id to `deleteAnnotationById()`.
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/react-pdf-viewer-examples)
+
+## See also
+
+- [Annotation Overview](../overview)
+- [Annotation Types](../annotation/annotation-types/area-annotation)
+- [Annotation Toolbar](../toolbar-customization/annotation-toolbar)
+- [Create and Modify Annotation](../annotation/create-modify-annotation)
+- [Customize Annotation](../annotation/customize-annotation)
+- [Handwritten Signature](../annotation/signature-annotation)
+- [Export and Import Annotation](../annotation/export-import/export-annotation)
+- [Annotation Permission](../annotation/annotation-permission)
+- [Annotation in Mobile View](../annotation/annotations-in-mobile-view)
+- [Annotation Events](../annotation/annotation-event)
+- [Annotation API](../annotation/annotations-api)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/export-import/export-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/export-import/export-annotation.md
new file mode 100644
index 0000000000..5ac6936aef
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/export-import/export-annotation.md
@@ -0,0 +1,128 @@
+---
+layout: post
+title: Export annotations in React PDF Viewer | Syncfusion
+description: Learn how to Export annotations in Syncfusion React PDF Viewer using UI options and programmatic APIs.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Export annotations in React PDF Viewer
+
+PDF Viewer provides support to export annotations. You can export annotations from the PDF Viewer in two ways:
+
+- Using the built-in UI in the Comments panel (JSON or XFDF file)
+- Programmatically (JSON, XFDF, or as an object for custom handling)
+
+## Export using the UI (Comments panel)
+
+The Comments panel provides export actions in its overflow menu:
+
+- Export annotation to JSON file
+- Export annotation to XFDF file
+
+Follow the steps to export annotations:
+
+1. Open the Comments panel in the PDF Viewer.
+2. Click the overflow menu (three dots) at the top of the panel.
+3. Choose Export annotation to JSON file or Export annotation to XFDF file.
+
+This generates and downloads the selected format containing all annotations in the current document.
+
+
+
+## Export programmatically
+
+You can export annotations from code using [exportAnnotation](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#exportannotation), [exportAnnotationsAsObject](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#exportannotationsasobject) and [exportAnnotationsAsBase64String](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#exportannotationsasbase64string) APIs.
+
+Use the following example to initialize the viewer and export annotations as JSON, XFDF, or as an object.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent, Inject,
+ Toolbar, Annotation, TextSelection,
+ AnnotationDataFormat
+} from '@syncfusion/ej2-react-pdfviewer';
+
+function getViewer() { return document.getElementById('container').ej2_instances[0]; }
+
+// Export annotations as JSON file
+function exportAsJSON() {
+ getViewer().exportAnnotation(AnnotationDataFormat.Json);
+}
+
+// Export annotations as XFDF file
+function exportAsXFDF() {
+ getViewer().exportAnnotation(AnnotationDataFormat.Xfdf);
+}
+
+// Export annotations as an object (for custom serialization / re-import)
+function exportAsObject() {
+ getViewer().exportAnnotationsAsObject().then((value) => {
+ // Persist or transmit the object as needed (DB/API). Keep for future import.
+ console.log('Exported annotation object:', value);
+ });
+}
+
+// Export annotations as a Base64 string
+function exportAsBase64() {
+ getViewer().exportAnnotationsAsBase64String(AnnotationDataFormat.Json).then((value) => {
+ console.log('Exported Base64:', value);
+ });
+}
+
+function App() {
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+ >
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Common use cases
+
+- Archive or share annotations as portable JSON/XFDF files
+- Save annotations alongside a document in your storage layer
+- Send annotations to a backend for collaboration or review workflows
+- Export as object for custom serialization and re-import later
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../../overview)
+- [Annotation Types](../../annotation/annotation-types/area-annotation)
+- [Annotation Toolbar](../../toolbar-customization/annotation-toolbar)
+- [Create and Modify Annotation](../../annotation/create-modify-annotation)
+- [Customize Annotation](../../annotation/customize-annotation)
+- [Remove Annotation](../../annotation/delete-annotation)
+- [Handwritten Signature](../../annotation/signature-annotation)
+- [Import Annotation](../export-import/import-annotation)
+- [Import Export Events](../export-import/export-import-events)
+- [Annotation Permission](../../annotation/annotation-permission)
+- [Annotation in Mobile View](../../annotation/annotations-in-mobile-view)
+- [Annotation Events](../../annotation/annotation-event)
+- [Annotation API](../../annotation/annotations-api)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/export-import/export-import-events.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/export-import/export-import-events.md
new file mode 100644
index 0000000000..4e8857849c
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/export-import/export-import-events.md
@@ -0,0 +1,109 @@
+---
+layout: post
+title: Import/Export events in React PDF Viewer | Syncfusion
+description: Learn how to handle Import/Export events for PDF Annotations in the Syncfusion React PDF Viewer component.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Import/Export events in React PDF Viewer
+
+Import/export events let developers monitor and control annotation data as it flows into and out of the PDF Viewer. These events enable validation, progress reporting, audit logging, and conditional blocking of import/export operations.
+
+Common use cases:
+- Progress UI and user feedback
+- Validation and sanitization of imported annotation data
+- Audit logging and telemetry
+- Blocking or altering operations based on business rules
+
+Each event exposes typed event-args: `ImportStartEventArgs`, `ImportSuccessEventArgs`, `ImportFailureEventArgs`, `ExportStartEventArgs`, `ExportSuccessEventArgs`, and `ExportFailureEventArgs` that describe the operation context.
+
+## Import events
+- [`importStart`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#importstart): Triggers when an import operation starts.
+- [`importSuccess`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#importsuccess): Triggers when annotations are successfully imported.
+- [`importFailed`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#importfailed): Triggers when importing annotations fails.
+
+## Handle import events
+Example: handle import events by wiring event props on `PdfViewerComponent`.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Annotation, TextSelection } from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+ { console.log('Import started', args); }}
+ importSuccess={(args) => { console.log('Import success', args); }}
+ importFailed={(args) => { console.error('Import failed', args); }}
+ >
+
+
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Export events
+- [`exportStart`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#exportstart): Triggers when an export operation starts.
+- [`exportSuccess`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#exportsuccess): Triggers when annotations are successfully exported.
+- [`exportFailed`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#exportfailed): Triggers when exporting annotations fails.
+
+## Handle export events
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Annotation, TextSelection } from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+ { console.log('Export started', args); }}
+ exportSuccess={(args) => { console.log('Export success', args); }}
+ exportFailed={(args) => { console.error('Export failed', args); }}
+ >
+
+
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+N> `importStart`, `importSuccess`, and `importFailed` cover the lifecycle of annotation imports; `exportStart`, `exportSuccess`, and `exportFailed` cover the lifecycle of annotation exports.
+
+## See also
+
+- [Annotation Overview](../../overview)
+- [Annotation Types](../../annotations/annotation-types/area-annotation)
+- [Annotation Toolbar](../../toolbar-customization/annotation-toolbar)
+- [Create and Modify Annotation](../../annotations/create-modify-annotation)
+- [Customize Annotation](../../annotations/customize-annotation)
+- [Remove Annotation](../../annotations/delete-annotation)
+- [Handwritten Signature](../../annotations/signature-annotation)
+- [Export Annotation](../export-import/export-annotation)
+- [Import Annotation](../export-import/import-annotation)
+- [Annotation Permission](../../annotations/annotation-permission)
+- [Annotation in Mobile View](../../annotations/annotations-in-mobile-view)
+- [Annotation Events](../../annotations/annotation-event)
+- [Annotation API](../../annotations/annotations-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/export-import/import-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/export-import/import-annotation.md
new file mode 100644
index 0000000000..eb33f32f51
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/export-import/import-annotation.md
@@ -0,0 +1,111 @@
+---
+layout: post
+title: Import annotations in React PDF Viewer | Syncfusion
+description: Learn how to import annotations in Syncfusion React PDF Viewer using UI options and programmatic APIs.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Import annotations in React PDF Viewer
+
+Annotations can be imported into the PDF Viewer using the built-in UI or programmatically. The UI accepts JSON and XFDF files from the Comments panel; programmatic import accepts an annotation object previously exported by the viewer.
+
+## Import using the UI (Comments panel)
+
+The Comments panel provides import options in its overflow menu:
+
+- Import annotations from JSON file
+- Import annotations from XFDF file
+
+Steps:
+1. Open the Comments panel in the PDF Viewer.
+2. Click the overflow menu (three dots) at the top of the panel.
+3. Choose the appropriate import option and select the file.
+
+All annotations in the selected file are applied to the current document.
+
+
+
+## Import programmatically (from object)
+
+Import annotations from an object previously exported using `exportAnnotationsAsObject()`. Only objects produced by the viewer can be re-imported with the [`importAnnotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#importannotation) API.
+
+Example: export annotations as an object and import them back into the viewer.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Annotation, TextSelection } from '@syncfusion/ej2-react-pdfviewer';
+
+function getViewer() { return document.getElementById('container').ej2_instances[0]; }
+
+// Hold the exported annotation object between calls
+let exportedObject = null;
+
+function exportAsObject() {
+ getViewer().exportAnnotationsAsObject().then((value) => {
+ // Persist or transmit the object as needed (DB/API). Keep for future import.
+ console.log('Exported annotation object:', value);
+ exportedObject = value;
+ });
+}
+
+function importFromObject() {
+ if (exportedObject) {
+ getViewer().importAnnotation(JSON.parse(exportedObject));
+ }
+}
+
+function App() {
+ return (
+ <>
+
+
+
+
+
+
+
+ >
+ );
+}
+
+ReactDOM.createRoot(document.getElementById('sample')).render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+N> Only objects produced by the viewer (for example, by `exportAnnotationsAsObject()`) are compatible with `importAnnotation`. Persist exported objects in a safe storage location (database or API) and validate them before import.
+
+## Common use cases
+
+- Restore annotations saved earlier (for example, from a database or API)
+- Apply reviewer annotations shared as JSON/XFDF files via the Comments panel
+- Migrate or merge annotations between documents or sessions
+- Support collaborative workflows by reloading team annotations
+
+[View sample on GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../../overview)
+- [Annotation Types](../../annotations/annotation-types/area-annotation)
+- [Annotation Toolbar](../../toolbar-customization/annotation-toolbar)
+- [Create and Modify Annotation](../../annotations/create-modify-annotation)
+- [Customize Annotation](../../annotations/customize-annotation)
+- [Remove Annotation](../../annotations/delete-annotation)
+- [Handwritten Signature](../../annotations/signature-annotation)
+- [Export Annotation](../export-import/export-annotation)
+- [Import Export Events](../export-import/export-import-events)
+- [Annotation Permission](../../annotations/annotation-permission)
+- [Annotation in Mobile View](../../annotations/annotations-in-mobile-view)
+- [Annotation Events](../../annotations/annotation-event)
+- [Annotation API](../../annotations/annotations-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/flatten-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/flatten-annotation.md
new file mode 100644
index 0000000000..2ece454bae
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/flatten-annotation.md
@@ -0,0 +1,141 @@
+---
+layout: post
+title: Flatten Annotations in the Syncfusion React PDF Viewer
+description: Learn how all about how to flatten annotations and formfields before saving a PDF in the Syncfusion React PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Flatten Annotations in React PDF Viewer
+
+Flattening takes the visual appearance of annotations and embeds them into each page's content stream. The visual result remains visible, but the annotation objects and interactive form field structures are removed or converted so they can no longer be selected, edited, or filled.
+
+Flattening annotations permanently merges them into the PDF content. Once flattened:
+- Annotations are **no longer editable** in any PDF viewer.
+- Useful for **secure sharing**, preventing modifications.
+- Ideal when **finalizing markup** before distribution.
+
+## How to Flatten Annotations
+
+You can flatten annotations either when a document is loaded (preprocessing) or when exporting/saving the file. Flattening on load makes the viewer display a flattened version immediately; flattening on export preserves the original viewer session while producing a flattened output file.
+
+Typical export-time steps:
+- Save the viewer contents to a Blob.
+- Create a `PdfDocument` from the saved bytes.
+- Enable `document.flatten = true` to merge annotations and form field appearances.
+- Save the resulting PDF.
+
+Use the example below to flatten at export time (on download).
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import { createRoot } from 'react-dom/client';
+import './index.css';
+import * as React from 'react';
+import {
+ PdfViewerComponent,
+ Toolbar,
+ Magnification,
+ Navigation,
+ LinkAnnotation,
+ BookmarkView,
+ ThumbnailView,
+ Print,
+ TextSelection,
+ TextSearch,
+ Annotation,
+ FormFields,
+ FormDesigner,
+ PageOrganizer,
+ Inject,
+} from '@syncfusion/ej2-react-pdfviewer';
+import {
+ PdfDocument
+} from '@syncfusion/ej2-pdf';
+
+function Default() {
+ let viewer;
+
+ const flattenPdf = () => {
+ viewer.saveAsBlob().then((value) => {
+ const reader = new FileReader();
+ reader.onloadend = function () {
+ const arrayBuffer = reader.result;
+ const byteArray = new Uint8Array(arrayBuffer);
+ const document = new PdfDocument(byteArray);
+ // Flatten all annotations and form fields: this embeds appearances
+ // into the page content so annotations are no longer interactive.
+ document.flatten = true;
+ document.save('flattened.pdf');
+ };
+ reader.readAsArrayBuffer(value);
+ });
+ };
+
+ return (
+
+ );
+}
+export default Default;
+
+const root = createRoot(document.getElementById('sample'));
+root.render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+N> To flatten documents when they are uploaded/loaded into the viewer, see [Flatten on Load](../document-handling/preprocess-pdf#flatten-on-load).
+
+
+## Notes
+
+- Flattening applies to **all annotation types**: text markup, shapes, stamps, notes, ink, and form fields.
+- Once flattened, annotations **cannot be edited or removed**.
+- Use flattening **only at export time**, not during regular document interactions.
+
+## See also
+
+- [Annotation Overview](../overview)
+- [Annotation Types](../annotation/annotation-types/area-annotation)
+- [Annotation Toolbar](../toolbar-customization/annotation-toolbar)
+- [Create and Modify Annotation](../annotation/create-modify-annotation)
+- [Customize Annotation](../annotation/customize-annotation)
+- [Handwritten Signature](../annotation/signature-annotation)
+- [Export and Import Annotation](../annotation/export-import/export-annotation)
+- [Annotation Permission](../annotation/annotation-permission)
+- [Annotation in Mobile View](../annotation/annotations-in-mobile-view)
+- [Annotation Events](../annotation/annotation-event)
+- [Annotation API](../annotation/annotations-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/free-text-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/free-text-annotation.md
index cf8d844f2e..47648690d2 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/annotation/free-text-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/free-text-annotation.md
@@ -8,23 +8,23 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Free text annotation in React PDF Viewer
+# Free text annotation in React PDF Viewer component
-The PDF Viewer control provides options to add, edit, and delete free text annotations.
+The PDF Viewer provides tools to add, edit, and remove free-text annotations.
-## Add a free text annotation to the PDF document
+## Add a free-text annotation
-The PDF Viewer control provides options to add, edit, and delete free text annotations.
+To add a free-text annotation:
-* Click the **Edit Annotation** button in the PDF Viewer toolbar. The annotation toolbar appears below it.
-* Select the **Free Text Annotation** button to enable free text annotation mode.
-* Add text anywhere on the pages of the PDF document.
+* Click the **Edit Annotation** button in the PDF Viewer toolbar to reveal the annotation toolbar.
+* Select the **Free Text Annotation** button to enter free*text annotation mode.
+* Tap or click anywhere on the page to add text.
-When in pan mode, selecting free text annotation switches the PDF Viewer to text select mode.
+When the viewer is in pan mode, selecting the Free Text annotation switches the viewer to text-selection mode.
-
+
-The following example switches to free text annotation mode using a button click.
+The example below shows switching to free-text annotation mode via a button click.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
@@ -101,11 +101,11 @@ root.render();
{% endhighlight %}
{% endtabs %}
-## Add a Free Text annotation to the PDF document Programmatically
+## Add a free-text annotation programmatically
-The PDF Viewer library allows adding a free text annotation programmatically using the [addAnnotation()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotation/#annotation) method.
+You can add a free-text annotation programmatically using the [addAnnotation()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotation#annotation) method.
-Here is an example of adding a free text annotation programmatically using addAnnotation():
+Example: add a free-text annotation using `addAnnotation()`.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
@@ -212,11 +212,9 @@ root.render();
{% endhighlight %}
{% endtabs %}
-## Change the content of an existing free text annotation programmatically
+## Change the content of an existing free-text annotation programmatically
-To change the content of an existing free text annotation programmatically, use the editAnnotation() method.
-
-Here is an example of changing the content of a free text annotation using editAnnotation():
+To update the content of an existing free-text annotation, use the `editAnnotation()` method. Example below demonstrates editing an annotation's bounds and text.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
@@ -311,71 +309,69 @@ root.render();
{% endhighlight %}
{% endtabs %}
-N> The current version of the PDF Viewer does not edit existing document text. New free text annotations can be added and modified within the document.
+N> The PDF Viewer does not edit original document text. You can add and modify free-text annotations only.
-## Edit the properties of free text annotations
+## Edit free-text annotation properties
-Font family, font size, styles, font color, text alignment, fill color, stroke color, border thickness, and opacity can be edited using the Font Family, Font Size, Font Color, Text Align, Font Style, Edit Color, Edit Stroke Color, Edit Thickness, and Edit Opacity tools in the annotation toolbar.
+Use the annotation toolbar to configure font family, size, style, font color, text alignment, fill color, stroke color, border thickness, and opacity.
-### Edit font family
+### Font family
-Edit the font family by selecting a font in the Font Family tool.
+Choose a font from the Font Family tool.
-
+
-### Edit font size
+### Font size
-Edit the font size by selecting a size in the Font Size tool.
+Select a size in the Font Size tool.
-
+
-### Edit font color
+### Font color
-Edit the font color using the color palette in the Font Color tool.
+Pick a color from the Font Color palette.
-
+
-### Edit the text alignment
+### Text alignment
-Align text by selecting an option from the Text Align tool.
+Set alignment using the Text Align tool.
-
+
-### Edit text styles
+### Text styles
-Edit text styles by selecting options in the Font Style tool.
+Toggle styles in the Font Style tool.
-
+
-### Edit fill color
+### Fill color
-Edit the fill color using the color palette in the Edit Color tool.
+Set the annotation's fill color with the Edit Color tool.
-
+
-### Edit stroke color
+### Stroke color
-Edit the stroke color using the color palette in the Edit Stroke Color tool.
+Set the stroke color with the Edit Stroke Color tool.
-
+
-### Edit thickness
+### Thickness
-Edit border thickness using the range slider in the Edit Thickness tool.
+Adjust border thickness with the Edit Thickness slider.
-
+
-### Edit opacity
+### Opacity
-Edit opacity using the range slider in the Edit Opacity tool.
+Adjust opacity with the Edit Opacity slider.
-
+
## Set default properties during control initialization
-Default properties for free text annotations can be set before creating the control using FreeTextSettings.
-
-After changing default values, the selected values are applied. The following example sets default free text annotation settings.
+Set default properties for free-text annotations using `freeTextSettings` when initializing the control. The selected defaults are applied when annotations are created. The example below sets default values.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/ink-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/ink-annotation.md
index 1fc9cf86d1..a29c7840a7 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/annotation/ink-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/ink-annotation.md
@@ -18,13 +18,13 @@ The PDF Viewer control provides options to add, edit, and delete ink annotations
Ink annotations can be added to the PDF document using the annotation toolbar.
-* Click the **Edit Annotation** button in the PDF Viewer toolbar. The annotation toolbar appears below it.
+* Use the **Edit Annotation** button in the PDF Viewer toolbar. The annotation toolbar appears below it.
* Select the **Draw Ink** button to enable ink annotation mode.
-* Draw on any page of the PDF document.
+* Draw on any page of the PDF document to create an ink annotation.

-The following example switches to ink annotation mode.
+The following example switches the viewer to ink annotation mode.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
@@ -105,9 +105,9 @@ root.render();
## Add an ink annotation programmatically to the PDF document
-The PDF Viewer library allows adding an ink annotation programmatically using the [addAnnotation()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotation/#annotation) method.
+The PDF Viewer library allows adding an ink annotation programmatically using the [addAnnotation()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotation#annotation) method.
-Here is an example of adding an ink annotation programmatically using addAnnotation():
+The following examples demonstrate how to add an ink annotation programmatically using `addAnnotation()`.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
@@ -200,9 +200,9 @@ root.render();
## Edit an existing ink annotation programmatically
-To modify an existing ink annotation programmatically, use the editAnnotation() method.
+Use the `editAnnotation()` method to modify an existing ink annotation programmatically.
-Here is an example of using editAnnotation():
+The following example demonstrates `editAnnotation()`.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
@@ -309,27 +309,27 @@ Stroke color, thickness, and opacity can be edited using the Edit Stroke Color,
### Edit stroke color
-Edit the stroke color using the color palette in the Edit Stroke Color tool.
+Change the stroke color using the color palette in the Edit Stroke Color tool.

### Edit thickness
-Edit thickness using the range slider in the Edit Thickness tool.
+Change the stroke thickness using the range slider in the Edit Thickness tool.

### Edit opacity
-Edit opacity using the range slider in the Edit Opacity tool.
+Change the opacity using the range slider in the Edit Opacity tool.

## Set default properties during the control initialization
-Default properties for ink annotations can be set before creating the control using InkAnnotationSettings.
+Default properties for ink annotations can be set before creating the control by using the `inkAnnotationSettings` property on `PdfViewerComponent` (example below).
-After changing default values, the selected values are applied.
+Supported settings include `author`, `strokeColor`, `thickness`, and `opacity`. Set these values on initialization so the viewer uses them when creating new ink annotations.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/line-angle-constraints.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/line-angle-constraints.md
index fb2e1df41b..7710146639 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/annotation/line-angle-constraints.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/line-angle-constraints.md
@@ -1,57 +1,81 @@
---
layout: post
title: Line angle constraints in React PDF Viewer | Syncfusion
-description: Explore how to add, edit, delete, and configure text markup annotations like highlight, underline, and squiggly in JavaScript (ES6) using the PDF Viewer.
+description: Learn how to enable and configure line angle constraints for line-type annotations in the Syncfusion React PDF Viewer.
platform: document-processing
control: PDF Viewer
documentation: ug
+domainurl: ##DomainURL##
---
# Line angle constraints in React PDF Viewer
-The PDF Viewer control provides robust **line angle constraints** functionality. This allows users to draw line type annotations with controlled angle snapping, improving accuracy and consistency across technical drawings and measurements across your PDF documents.
+The PDF Viewer provides line angle constraints functionality that allows drawing line-type annotations with controlled angle snapping. This improves precision for technical drawings and measurements in PDF documents.
+
+
## Enable line angle constraints
-Configure the `enableLineAngleConstraints` property within `annotationDrawingOptions`. When enabled, supported line-type annotations snap to fixed angles.
-The following code demonstrates how to enable line angle constraints:
+Set the `enableLineAngleConstraints` property within `annotationDrawingOptions` to enable angle snapping for supported line-type annotations.
+
+The following code demonstrates enabling line angle constraints:
{% tabs %}
{% highlight js tabtitle="Standalone" %}
{% 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, Inject } from '@syncfusion/ej2-react-pdfviewer';
-export function App() {
- return (
-
-
-
-
-
-
);
+import * as ReactDOM from 'react-dom/client';
+import { PdfViewerComponent, Inject, Toolbar, Annotation, TextSelection } from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ return (
+
+
+
+ );
}
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
+ReactDOM.createRoot(document.getElementById('sample')).render();
{% endraw %}
{% endhighlight %}
{% endtabs %}
-## Configuration Properties
+## Work with constrained annotations
+
+### Drawing behavior
+
+When line angle constraints are enabled:
+
+- Start drawing a supported annotation (Line, Arrow, Polyline, Distance, or Perimeter).
+- The segment snaps to the nearest allowed angle.
+- A visual indicator reflects snapping in real time.
+- Release to complete the annotation.
+
+### Keyboard shortcuts
+
+- `Shift` + drag: toggles snapping. If constraints are disabled, `Shift` temporarily enables them; if enabled, `Shift` enforces snapping.
+
+### Selector-based modifications
+
+When modifying existing line annotations using selectors:
+
+- Constraints apply based on the original line direction.
+- The reference angle (0°) is determined by the line’s current orientation.
+- Constraint snapping during modification is supported for Line and Arrow.
+- Adjustments snap to the configured angle increment.
+
+[View a sample in GitHub](https://github.com/SyncfusionExamples/react-pdf-viewer-examples/tree/master/How%20to)
+
+## Configuration properties
### enableLineAngleConstraints
@@ -65,11 +89,11 @@ The `enableLineAngleConstraints` property activates angle snapping for line-base
- Area measurements
- Volume measurements
-**Key Benefits:**
+Key Benefits:
-- Automatic angle snapping during the drawing
+- Automatic angle snapping during drawing
- Enhanced precision for technical drawings and measurements
-- Desktop behavior: hold Shift while drawing to toggle constraints (when disabled, Shift temporarily enables; when enabled, Shift enforces snapping)
+- Desktop behavior: hold `Shift` while drawing to toggle constraints (when disabled, `Shift` temporarily enables; when enabled, `Shift` enforces snapping)
- Real-time visual feedback showing angle snapping behavior
### restrictLineAngleTo
@@ -78,40 +102,28 @@ Defines the angle increment (in degrees) used to constrain supported annotations
Angle snapping rules:
-- The initial drawing direction is treated as the 0° reference point
-- Snapped angles are calculated based on the increment
-- If the increment doesn’t divide 360 evenly, angles reset after 360°
-
-Examples
-
-- restrictLineAngleTo: 45 → Snapped angles: 0°, 45°, 90°, 135°, 180°, 225°, 270°, 315°, 360°
-- restrictLineAngleTo: 100 → Snapped angles: 0°, 100°, 200°, 300°, 360°
-
-## Work with constrained annotations
-
-### Drawing Behavior
-
-When line angle constraints are enabled:
-
-- Start drawing a supported annotation (Line, Arrow, Polyline, Distance, or Perimeter).
-- The segment snaps to the nearest allowed angle.
-- A visual indicator reflects snapping in real time.
-- Release to complete the annotation.
-
-### Keyboard Shortcuts
+- The initial drawing direction is treated as the 0° reference point.
+- Snapped angles are calculated based on the increment.
+- If the increment does not divide 360 evenly, angles reset after 360°.
-Desktop platforms:
-- Shift + drag: toggles snapping. If constraints are disabled, Shift temporarily enables them; if enabled, Shift enforces snapping.
+Examples:
-### Selector-Based Modifications
+- `restrictLineAngleTo: 45` → Snapped angles: 0°, 45°, 90°, 135°, 180°, 225°, 270°, 315°, 360°
+- `restrictLineAngleTo: 100` → Snapped angles: 0°, 100°, 200°, 300°, 360°
-When modifying existing line annotations using selectors:
+N> Refer to the React PDF Viewer [feature tour](https://www.syncfusion.com/pdf-viewer-sdk/react-pdf-viewer) for feature highlights, and to the [React PDF Viewer examples](https://github.com/SyncfusionExamples/react-pdf-viewer-examples) for rendering and configuration examples.
-- Constraints apply based on the original line direction.
-- The reference angle (0°) is determined by the line’s current orientation.
-- Constraint snapping during modification is supported for Line and Arrow.
-- Adjustments snap to the configured angle increment.
-
-[View a sample in GitHub](https://github.com/SyncfusionExamples/react-pdf-viewer-examples/tree/master/How%20to)
+## See also
-N> Refer to the React PDF Viewer [feature tour](https://www.syncfusion.com/pdf-viewer-sdk/react-pdf-viewer) for feature highlights. Explore the [React PDF Viewer examples](https://github.com/SyncfusionExamples/react-pdf-viewer-examples) to learn how to render and configure the PDF Viewer.
+- [Annotation Overview](../overview)
+- [Annotation Types](../annotations/annotation-types/area-annotation)
+- [Annotation Toolbar](../toolbar-customization/annotation-toolbar)
+- [Create and Modify Annotation](../annotations/create-modify-annotation)
+- [Customize Annotation](../annotations/customize-annotation)
+- [Remove Annotation](../annotations/delete-annotation)
+- [Handwritten Signature](../annotations/signature-annotation)
+- [Export and Import Annotation](../annotations/export-import/export-annotation)
+- [Annotation Permission](../annotations/annotation-permission)
+- [Annotation in Mobile View](../annotations/annotations-in-mobile-view)
+- [Annotation Events](../annotations/annotation-event)
+- [Annotation API](../annotations/annotations-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/measurement-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/measurement-annotation.md
index d691411a0b..38876bd4de 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/annotation/measurement-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/measurement-annotation.md
@@ -10,7 +10,9 @@ domainurl: ##DomainURL##
# Measurement annotation in React PDF Viewer
-The PDF Viewer provides options to add measurement annotations. The supported measurement annotations are:
+The PDF Viewer supports measurement annotations for capturing distances, perimeters, areas, radius, and volumes.
+
+Supported measurement annotations:
* Distance
* Perimeter
@@ -20,20 +22,19 @@ The PDF Viewer provides options to add measurement annotations. The supported me

-## Adding measurement annotations to the PDF document
+## Add measurement annotations
-The measurement annotations can be added to the PDF document using the annotation toolbar.
+Measurement annotations are available from the annotation toolbar.
-* Click the **Edit Annotation** button in the PDF Viewer toolbar. A toolbar appears below it.
-* Click the **Measurement Annotation** drop-down button. The pop-up lists available measurement annotation types.
-* Select a measurement type to enable its annotation mode.
-* Measure and add annotations on the pages of the PDF document.
+* Open the annotation toolbar using the **Edit Annotation** button in the PDF Viewer toolbar.
+* Use the **Measurement Annotation** drop-down to choose a measurement type.
+* Select a measurement type to enable its annotation mode, then place the measurement on the page.
-When in pan mode, selecting a measurement annotation switches the PDF Viewer to text select mode.
+If the viewer is in pan mode, selecting a measurement annotation activates text selection mode where applicable.
- 
+
-The following example switches to distance annotation mode.
+The following example switches the viewer to distance annotation mode.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
@@ -110,9 +111,9 @@ root.render();
## Add a measurement annotation to the PDF document programmatically
-The PDF Viewer library allows adding measurement annotations programmatically using the [addAnnotation()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotation/#annotation) method.
+The PDF Viewer library allows adding measurement annotations programmatically using the [addAnnotation()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotation#annotation) method.
-Here is an example showing how to add measurement annotations programmatically using addAnnotation():
+The following examples demonstrate how to add measurement annotations programmatically using `addAnnotation()`.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
@@ -274,9 +275,9 @@ root.render();
## Edit an existing measurement annotation programmatically
-To modify an existing measurement annotation programmatically, use the editAnnotation() method.
+Use the `editAnnotation()` method to modify existing measurement annotations programmatically.
-Here is an example of using editAnnotation():
+The following example demonstrates `editAnnotation()`.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
@@ -474,45 +475,45 @@ root.render();
{% endhighlight %}
{% endtabs %}
-## Edit the properties of measurement annotations
+## Edit properties of measurement annotations
-The fill color, stroke color, thickness, and opacity can be edited using the Edit Color, Edit Stroke Color, Edit Thickness, and Edit Opacity tools in the annotation toolbar.
+Change fill color, stroke color, thickness, and opacity using the annotation toolbar tools: Edit Color, Edit Stroke Color, Edit Thickness, and Edit Opacity.
### Edit fill color
-The fill color of the annotation can be edited using the color palette provided in the Edit Color tool.
+Change the fill color with the color palette in the Edit Color tool.

### Edit stroke color
-The stroke color of the annotation can be edited using the color palette provided in the Edit Stroke Color tool.
+Change the stroke color with the Edit Stroke Color tool.

### Edit thickness
-Edit border thickness using the range slider provided in the Edit Thickness tool.
+Adjust border thickness with the range slider in the Edit Thickness tool.

### Edit opacity
-The opacity of the annotation can be edited using the range slider provided in the Edit Opacity tool.
+Adjust annotation opacity with the range slider in the Edit Opacity tool.

-### Edit the line properties
+### Edit line properties
-Line-based measurement annotations (distance and perimeter) have additional options in the Line Properties window. Open it by right-clicking the annotation and selecting Properties from the context menu.
+Line-based measurement annotations (distance and perimeter) include additional options in the Line Properties window. Open it by right-clicking the annotation and choosing Properties.

-## Set default properties during control initialization
+## Set default properties during initialization
-Default properties for measurement annotations can be set before creating the control using distanceSettings, perimeterSettings, areaSettings, radiusSettings, and volumeSettings.
+Default properties for measurement annotations can be configured on the viewer before creation using the `distanceSettings`, `perimeterSettings`, `areaSettings`, `radiusSettings`, and `volumeSettings` properties.
-Refer to the following code snippet to set the default annotation settings.
+The following code snippet shows how to set default measurement annotation settings on initialization.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
@@ -587,13 +588,13 @@ root.render();
{% endhighlight %}
{% endtabs %}
-## Editing scale ratio and unit of the measurement annotation
+## Scale ratio and measurement units
-The scale ratio and unit of measurement can be modified using the scale ratio option provided in the context menu of the PDF Viewer control.
+Modify the scale ratio and measurement unit via the Scale Ratio option in the viewer's context menu.
- 
+
-The Units of measurements support for the measurement annotations in the PDF Viewer are
+Supported units for measurement annotations:
* Inch
* Millimeter
@@ -604,10 +605,9 @@ The Units of measurements support for the measurement annotations in the PDF Vie

-## Setting default scale ratio settings during control initialization
-
-The properties of scale ratio for measurement annotation can be set before creating the control using ScaleRatioSettings as shown in the following code snippet,
+## Set default scale ratio during initialization
+Configure scale ratio defaults using `measurementSettings` (for example, `scaleRatio`, `conversionUnit`, and `displayUnit`) before creating the viewer. The following snippet demonstrates these settings.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
{% raw %}
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/overview.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/overview.md
new file mode 100644
index 0000000000..bd48beca1c
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/overview.md
@@ -0,0 +1,51 @@
+---
+layout: post
+title: Overview of Annotation in React PDF Viewer | Syncfusion
+description: Learn about Annotations and how to add, edit, delete, and configure Annotations in the Syncfusion React PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Annotations overview in React
+
+Annotations in the PDF Viewer are interactive elements that allow users to add notes, highlights, or text boxes directly to a PDF document. These annotations add context and feedback to PDF files, simplifying collaboration during document reviews.
+
+The PDF Viewer provides a complete set of annotation tools for reviewing, measuring, and marking up PDFs in React.
+
+## Supported annotations
+
+- Text markup: [Highlight](../annotation/annotation-types/highlight-annotation), [Underline](../annotation/annotation-types/underline-annotation), [Squiggly](../annotation/annotation-types/Squiggly-annotation), [Strikethrough](../annotation/annotation-types/strikethrough-annotation)
+- Shapes: [Line](../annotation/annotation-types/line-annotation), [Arrow](../annotation/annotation-types/arrow-annotation), [Rectangle](../annotation/annotation-types/rectangle-annotation), [Circle](../annotation/annotation-types/circle-annotation), [Polygon](../annotation/annotation-types/polygon-annotation)
+- Text boxes: [Free Text](../annotation/annotation-types/free-text-annotation)
+- Drawing: [Ink](../annotation/annotation-types/ink-annotation) (freehand)
+- Stamps: [Standard and custom stamps](../annotation/annotation-types/stamp-annotation)
+- Notes: [Sticky Notes](../annotation/annotation-types/sticky-notes-annotation) (comments)
+- Redaction: Mark and apply [redactions](../annotation/annotation-types/redaction-annotation)
+- Measurement: [Distance](../annotation/annotation-types/distance-annotation), [Perimeter](../annotation/annotation-types/perimeter-annotation), [Area](../annotation/annotation-types/area-annotation), [Radius](../annotation/annotation-types/radius-annotation), [Volume](../annotation/annotation-types/volume-annotation)
+
+## Annotation manipulation capabilities
+
+- [Create annotations](../annotation/create-modify-annotation): Use the toolbar, context menu, or APIs to add highlights, notes, shapes, and more directly onto the PDF document.
+- [Edit annotations](../annotation/create-modify-annotation.md): Modify existing annotations by moving, resizing, or updating text and style properties like color, opacity, and thickness.
+- [Customize annotations](../annotation/customize-annotation): Adjust appearance and behavior—such as fonts, fill colors, and opacity—through the UI or configuration options.
+- [Undo and redo annotations](../annotation/annotations-undo-redo): Revert or reapply annotation actions (add, edit, delete) using toolbar buttons or corresponding APIs.
+- [Import and export annotations](../annotation/export-import/export-annotation): Save and load annotations in JSON or XFDF formats to persist markups across sessions or share them with others.
+- Set [Permissions](../annotation/annotation-permission): Enable or disable annotation permission, ensuring compliance with document permissions.
+- Add and manage [comments](../annotation/comments): Insert, edit, and delete comments or sticky notes attached to annotations for clearer feedback and collaboration.
+
+## See also
+
+- [Annotation Types](../annotation/annotation-types)
+- [Annotation Toolbar](../toolbar-customization/annotation-toolbar)
+- [Create and Modify Annotation](../annotation/create-modify-annotation)
+- [Customize Annotation](../annotation/customize-annotation)
+- [Remove Annotation](../annotation/delete-annotation)
+- [Handwritten Signature](../annotation/signature-annotation)
+- [Export and Import Annotation](../annotation/export-import/export-annotation)
+- [Annotation Permission](../annotation/annotation-permission)
+- [Annotation in Mobile View](../annotation/annotations-in-mobile-view)
+- [Annotation Events](../annotation/annotation-event)
+- [Annotation Undo Redo](../annotation/annotations-undo-redo)
+- [Annotation API](../annotation/annotations-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/shape-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/shape-annotation.md
index 120f01c6ed..eee775acdc 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/annotation/shape-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/shape-annotation.md
@@ -10,7 +10,7 @@ domainurl: ##DomainURL##
# Shape annotation in React PDF Viewer
-The PDF Viewer control provides options to add, edit, and delete shape annotations. The supported shape annotation types are:
+The PDF Viewer provides tools to add, edit, and delete shape annotations. Supported shape types:
* Line
* Arrow
@@ -20,20 +20,19 @@ The PDF Viewer control provides options to add, edit, and delete shape annotatio

-## Adding a shape annotation to the PDF document
+## Add a shape annotation
-Shape annotations can be added to the PDF document using the annotation toolbar.
+Shape annotations are available from the annotation toolbar.
-* Click the **Edit Annotation** button in the PDF Viewer toolbar. A toolbar appears below it.
-* Click the **Shape Annotation** drop-down button. The pop-up lists available shape annotation types.
-* Select a shape type to enable its annotation mode.
-* Draw the shape on the pages of the PDF document.
+- Open the annotation toolbar with the **Edit Annotation** button in the PDF Viewer toolbar.
+- Use the **Shape Annotation** drop-down to choose the desired shape type.
+- Select a shape type to enable its annotation mode, then draw the shape on the page.
-N> When in pan mode and a shape annotation tool is selected, the PDF Viewer switches to text select mode automatically to ensure a smooth interaction experience.
+N> When the viewer is in pan mode and a shape tool is selected, the viewer switches to text selection mode where applicable to ensure a smooth interaction.

-Refer to the following code sample to switch to the circle annotation mode.
+The following sample shows how to switch the viewer to circle annotation mode.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
@@ -110,9 +109,9 @@ root.render();
## Add a shape annotation to the PDF document programmatically
-The PDF Viewer library allows adding a shape annotation programmatically using the [addAnnotation()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotation#annotation) method.
+The PDF Viewer library allows adding shape annotations programmatically using the [addAnnotation()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotation#annotation) method.
-Here is an example showing how to add shape annotations programmatically using addAnnotation():
+The following examples show how to add shape annotations programmatically using `addAnnotation()`.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
@@ -274,9 +273,9 @@ root.render();
## Edit an existing shape annotation programmatically
-To modify an existing shape annotation programmatically, use the editAnnotation() method.
+Use the `editAnnotation()` method to modify existing shape annotations programmatically.
-Here is an example of using editAnnotation():
+The following example demonstrates `editAnnotation()`.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
@@ -475,45 +474,43 @@ root.render();
## Editing the properties of the shape annotation
-The fill color, stroke color, thickness, and opacity of shape annotations can be edited using the Edit Color, Edit Stroke Color, Edit Thickness, and Edit Opacity tools in the annotation toolbar.
+## Edit properties of shape annotations
-### Editing fill color
+Change fill color, stroke color, thickness, and opacity using the Edit Color, Edit Stroke Color, Edit Thickness, and Edit Opacity tools in the annotation toolbar.
-The fill color of the annotation can be edited using the color palette provided in the Edit Color tool.
+### Edit fill color
+
+Change the fill color using the color palette in the Edit Color tool.

-### Editing stroke color
+### Edit stroke color
-The stroke color of the annotation can be edited using the color palette provided in the Edit Stroke Color tool.
+Change the stroke color using the Edit Stroke Color tool.

-### Editing thickness
+### Edit thickness
-The thickness of the border of the annotation can be edited using the range slider provided in the Edit Thickness tool.
+Adjust border thickness using the Edit Thickness range slider.

-### Editing opacity
+### Edit opacity
-The opacity of the annotation can be edited using the range slider provided in the Edit Opacity tool.
+Adjust opacity using the Edit Opacity range slider.

-### Editing the line properties
-
-Line and arrow annotations have additional options in the Line Properties window. Open it by right-clicking a line or arrow annotation and selecting Properties from the context menu.
+### Line properties
-Refer to the following code sample to set the default annotation settings.
+Line and arrow annotations include additional options in the Line Properties dialog. Open it by right-clicking a line or arrow annotation and choosing Properties.

### Edit annotation programmatically
-We can edit the annotations programmatically using the **editAnnotation()** method.
-
-Here is an example of how you can use this method to modify an annotation:
+Modify annotations programmatically using the `editAnnotation()` method. The example below demonstrates selecting and editing an annotation.
```
@@ -530,9 +527,7 @@ var pdfviewer = document.getElementById('container').ej2_instances[0];
```
### Delete annotation programmatically
-We can delete a specific annotation using the **deleteAnnotationById()** method. This method is used to delete a specific annotation using its id.
-
-Here is an example of how you can use this method to delete an annotation:
+Delete a specific annotation with `deleteAnnotationById()` by providing the annotation's id. The example below demonstrates usage.
```
@@ -546,9 +541,9 @@ Here is an example of how you can use this method to delete an annotation:
```
-## Set default properties during the control initialization
+## Set default properties during initialization
-Default properties for shape annotations can be set before creating the control using LineSettings, ArrowSettings, RectangleSettings, CircleSettings, and PolygonSettings.
+Default properties for shape annotations can be configured before creating the viewer using `lineSettings`, `arrowSettings`, `rectangleSettings`, `circleSettings`, and `polygonSettings`.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
@@ -623,4 +618,4 @@ root.render();
{% endhighlight %}
{% endtabs %}
-N> In both [Arrow](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#arrowsettings) and [Line](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#linesettings) annotations Settings, the Fill Color option is available only when an arrowhead style is applied at the Start or End. If both Start and End arrowhead styles are set to None, lines do not support fill rendering and the Fill Color option remains disabled.
+N> In both the Arrow and Line settings, the Fill Color option is available only when an arrowhead style is applied at the Start or End. If both Start and End arrowhead styles are set to `None`, lines do not support fill rendering and the Fill Color option is disabled. See Arrow settings and Line settings for API details.
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/signature-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/signature-annotation.md
index 2a3550eb41..c1b202c548 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/annotation/signature-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/signature-annotation.md
@@ -8,24 +8,26 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Handwritten signature in React PDF Viewer
+# Handwritten signature in React PDF Viewer component
The PDF Viewer control supports adding handwritten signatures to a PDF document. Handwritten signatures reduce paperwork and enable digital verification.
-## Adding a handwritten signature to the PDF document
+## Add signature annotation
+
+### Adding a handwritten signature in UI
The handwritten signature can be added to the PDF document using the annotation toolbar.
-* Click the **Edit Annotation** button in the PDF Viewer toolbar. A toolbar appears below it.
-* Select the **HandWritten Signature** button in the annotation toolbar. The signature panel appears.
+- Click the **Edit Annotation** button in the PDF Viewer toolbar. A toolbar appears below it.
+- Select the **Handwritten signature** button in the annotation toolbar. The signature panel appears.

-* Draw the signature in the panel.
+- Draw the signature in the panel.

-* Click **Create**, move the signature, and place it at the desired location.
+- Click **Create**, move the signature, and place it at the desired location.

@@ -103,84 +105,11 @@ root.render();
{% endhighlight %}
{% endtabs %}
-## Enable the handwritten signature
-
-The following example enables or disables the handwritten signature in the PDF Viewer. Setting the value to `false` disables the feature.
-
-{% tabs %}
-{% highlight js tabtitle="Standalone" %}
-{% 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, TextSearch, Annotation,
- FormFields, FormDesigner, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
-
-function App() {
- return (
);
-}
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
-
-{% endraw %}
-{% endhighlight %}
-{% endtabs %}
-
-## Add a handwritten signature programmatically to the PDF document
+### Add a handwritten signature programmatically
-With the PDF Viewer library, you can programmatically add handwritten signature to the PDF Viewer control using the [**addAnnotation()**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotation/#addannotation) method.
+With the PDF Viewer library, you can programmatically add a handwritten signature to the PDF Viewer control using the [**addAnnotation()**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotation#addannotation) method.
-Here is an example of adding a handwritten signature programmatically using addAnnotation():
+Here is an example of adding a handwritten signature programmatically using the `addAnnotation()` method:
{% tabs %}
{% highlight js tabtitle="Standalone" %}
@@ -326,26 +255,316 @@ root.render();
{% endhighlight %}
{% endtabs %}
-[View sample in GitHub](https://github.com/SyncfusionExamples/react-pdf-viewer-examples/blob/master/How%20to/Add%20Handwritten%20Signature%20Programmatically)
+[View sample on GitHub](https://github.com/SyncfusionExamples/react-pdf-viewer-examples/blob/master/How%20to/Add%20Handwritten%20Signature%20Programmatically)
+
+## Edit signature annotation
-## Edit the properties of handwritten signatures
+### Edit signature annotation in UI
Stroke color, border thickness, and opacity can be edited using the Edit Stroke Color, Edit Thickness, and Edit Opacity tools in the annotation toolbar.
-### Edit stroke color
+#### Edit stroke color
Edit the stroke color using the color palette in the Edit Stroke Color tool.

-### Edit thickness
+#### Edit thickness
Edit border thickness using the range slider in the Edit Thickness tool.

-### Edit opacity
+#### Edit opacity
Edit opacity using the range slider in the Edit Opacity tool.
-
\ No newline at end of file
+
+
+### Edit Signature Annotation Programmatically
+
+With the PDF Viewer library, you can programmatically edit a handwritten signature in the PDF Viewer control using the `editSignature()` method.
+
+Here is an example of editing a handwritten signature programmatically using the `editSignature()` method:
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent,
+ Inject,
+ Toolbar,
+ Magnification,
+ Navigation,
+ Annotation,
+ LinkAnnotation,
+ ThumbnailView,
+ BookmarkView,
+ TextSelection,
+ TextSearch,
+ FormFields,
+ FormDesigner
+} from '@syncfusion/ej2-react-pdfviewer';
+import { DisplayMode } from '@syncfusion/ej2-pdfviewer';
+
+function App() {
+ const addSignature = () => {
+ const viewer = (document.getElementById('container')?.ej2_instances || [])[0];
+ if (!viewer) return;
+
+ // Add Signature annotation (Text mode)
+ viewer.annotation.addAnnotation('HandWrittenSignature', {
+ offset: { x: 200, y: 310 },
+ pageNumber: 1,
+ width: 200,
+ height: 65,
+ signatureItem: ['Signature'],
+ signatureDialogSettings: {
+ displayMode: DisplayMode.Text,
+ hideSaveSignature: false
+ },
+ canSave: false,
+ path: 'Syncfusion',
+ fontFamily: 'Helvetica'
+ });
+ };
+
+ const editSignature = () => {
+ const viewer = (document.getElementById('container')?.ej2_instances || [])[0];
+ if (!viewer) return;
+
+ for (let i = 0; i < viewer.signatureCollection.length; i++) {
+ if (viewer.signatureCollection[i].shapeAnnotationType === 'SignatureText') {
+ viewer.signatureCollection[i].fontSize = 12;
+ viewer.signatureCollection[i].thickness = 2;
+ viewer.signatureCollection[i].strokeColor = '#0000FF';
+ viewer.signatureCollection[i].opacity = 0.8;
+ viewer.annotationModule.editSignature(viewer.signatureCollection[i]);
+ }
+ }
+ };
+
+ return (
+
);
+}
+const root = ReactDOM.createRoot(document.getElementById('sample'));
+root.render();
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+N> When `enableHandwrittenSignature` is set to `false`, the handwritten signature toolbar and related UI are disabled; existing handwritten signature annotations remain in the document unless removed. The `canSave` option in annotation examples controls whether a signature can be saved for reuse; when `canSave` is `false`, signatures are not persisted in the signature collection for later reuse.
+
+## See also
+
+- [Annotation Overview](../overview)
+- [Annotation Types](../annotation/annotation-types/area-annotation)
+- [Annotation Toolbar](../toolbar-customization/annotation-toolbar)
+- [Create and Modify Annotation](../annotation/create-modify-annotation)
+- [Customize Annotation](../annotation/customize-annotation)
+- [Remove Annotation](../annotation/delete-annotation)
+- [Export and Import Annotation](../annotation/export-import/export-annotation)
+- [Annotation Permission](../annotation/annotation-permission)
+- [Annotation in Mobile View](../annotation/annotations-in-mobile-view)
+- [Annotation Events](../annotation/annotation-event)
+- [Annotation API](../annotation/annotations-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/stamp-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/stamp-annotation.md
index 5726449e41..e2640c0201 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/annotation/stamp-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/stamp-annotation.md
@@ -10,7 +10,7 @@ domainurl: ##DomainURL##
# Stamp annotation in React PDF Viewer
-The PDF Viewer control provides options to add, edit, delete, and rotate the following stamp annotations in PDF documents:
+The PDF Viewer provides options to add, edit, delete, and rotate the following stamp annotations:
* Dynamic
* Sign Here
@@ -21,22 +21,22 @@ The PDF Viewer control provides options to add, edit, delete, and rotate the fol
## Add stamp annotations to the PDF document
-The stamp annotations can be added to the PDF document using the annotation toolbar.
+Stamp annotations are added using the annotation toolbar.
-* Click the **Edit Annotation** button in the PDF Viewer toolbar. A toolbar appears below it.
-* Click the **Stamp Annotation** drop-down button. The pop-up lists available stamp annotation types.
+* Use the **Edit Annotation** button in the PDF Viewer toolbar to open the annotation toolbar.
+* Use the **Stamp Annotation** drop-down to view available stamp annotation types.
- 
+ 
-* Select a stamp type to enable its annotation mode.
+* Selecting a stamp type enables its annotation mode.
- 
+ 
-* Place the stamp on the pages of the PDF document.
+* Place the stamp on a page in the PDF document.
-N> When in pan mode and a stamp annotation tool is selected, the PDF Viewer switches to text select mode automatically for a smooth interaction experience.
+N> When the viewer is in pan mode and a stamp annotation tool is selected, the PDF Viewer automatically switches to text select mode to provide a smoother interaction.
-The following examples switch to stamp annotation modes.
+The following examples show how to switch to stamp annotation modes.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
@@ -130,23 +130,21 @@ root.render();
{% endhighlight %}
{% endtabs %}
-## Add a custom stamp to the PDF document
+## Add a custom stamp
-* Click the **Edit Annotation** button in the PDF Viewer toolbar. A toolbar appears below it.
-* Click the **Stamp Annotation** drop-down button. The pop-up lists available stamp annotation types.
-* Click the Custom Stamp button.
+Use the **Edit Annotation** button and the **Stamp Annotation** drop-down to access the Custom Stamp option.
- 
+
-* In the file explorer dialog, choose an image and add it to the PDF page.
+Select the Custom Stamp option, then choose an image file to add as a custom stamp on the PDF page.
->Only JPG and JPEG image formats are supported for custom stamp annotations.
+Only JPG and JPEG image formats are supported for custom stamp annotations.
-## Add a stamp annotation to the PDF document programmatically
+## Add a stamp annotation programmatically
-The PDF Viewer library allows adding a stamp annotation programmatically using the [addAnnotation()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotation/#annotation) method.
+Use the [addAnnotation()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotation#annotation) method to add stamp annotations programmatically.
-Here are examples showing how to add stamp annotations programmatically using addAnnotation():
+The examples below demonstrate using `addAnnotation()` to create stamp annotations.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
@@ -305,9 +303,9 @@ root.render();
## Edit an existing stamp annotation programmatically
-To modify an existing stamp annotation programmatically, use the editAnnotation() method.
+Use the `editAnnotation()` method to modify existing stamp annotations programmatically.
-Here is an example of using editAnnotation():
+The following example demonstrates `editAnnotation()`.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
@@ -404,9 +402,9 @@ root.render();
## Set default properties during control initialization
-Default properties for stamp annotations can be set before creating the control using StampSettings.
+Set default properties for stamp annotations before creating the control by specifying `stampSettings`.
-After changing default opacity using the Edit Opacity tool, the selected value is applied. The following example sets default stamp annotation settings.
+After changing the default opacity using the Edit Opacity tool, the selected value is applied. The example below shows how to set default stamp annotation settings.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/sticky-notes-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/sticky-notes-annotation.md
index a91ffa2948..bdb8eb8c28 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/annotation/sticky-notes-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/sticky-notes-annotation.md
@@ -10,34 +10,26 @@ domainurl: ##DomainURL##
# Sticky notes annotation in React PDF Viewer
-The PDF Viewer control provides options to add, edit, and delete sticky note annotations in the PDF document.
+The PDF Viewer provides options to add, edit, and delete sticky note annotations.

-## Add a sticky note annotation to the PDF document
+## Add a sticky note annotation
-Annotation comments can be added using the comment panel.
+Annotation comments are added using the comment panel.
-* Select a sticky note annotation in the PDF document and right-click it.
-* Select Comment from the context menu.
-* Add comments, replies, and status using the comment panel.
+* Right-click a sticky note annotation and choose **Comment** from the context menu.
+* Use the comment panel to add comments, reply, and change status.
- 
-
- Annotation comments can be added to the PDF document using the comment panel.
-
-* Select a Sticky note annotation in the PDF document and right-click it.
-* Select the Comment option in the context menu that appears.
-* Now, you can add Comments, Reply, and Status using the Comment Panel.
-* Now, you can add Comments, Reply, and Status using the Comment Panel.
+

## Add a sticky note annotation to the PDF document programmatically
-With the PDF Viewer library, you can add a sticky note annotation to the PDF Viewer control programmatically using the [**addAnnotation()**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotation/#annotation) method.
+Use the [addAnnotation()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotation#annotation) method to add a sticky note annotation programmatically.
-Here is an example showing how to add a sticky note annotation programmatically using addAnnotation():
+The following example demonstrates using `addAnnotation()` to create a sticky note annotation.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
@@ -126,9 +118,9 @@ root.render();
## Edit an existing sticky note annotation programmatically
-To modify an existing sticky note annotation programmatically, use the editAnnotation() method.
+Use the `editAnnotation()` method to modify existing sticky note annotations programmatically.
-Here is an example of using editAnnotation():
+The following example demonstrates `editAnnotation()`.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
@@ -245,9 +237,9 @@ Modify or delete comments or replies, and change status using the menu options i
## Set default properties during control initialization
-Default properties for sticky note annotations can be set before creating the control using StickyNotesSettings.
+Set default properties for sticky note annotations before creating the control by specifying `stickyNotesSettings`.
-After changing default opacity using the Edit Opacity tool, the selected value is applied. The following example sets default sticky note annotation settings.
+After changing the default opacity using the Edit Opacity tool, the selected value is applied. The example below shows how to set default sticky note annotation settings.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
diff --git a/Document-Processing/PDF/PDF-Viewer/react/annotation/text-markup-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/annotation/text-markup-annotation.md
index 77b9737e54..7e9b0438e0 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/annotation/text-markup-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/annotation/text-markup-annotation.md
@@ -12,27 +12,27 @@ domainurl: ##DomainURL##
The PDF Viewer provides options to add, edit, and delete text markup annotations, including Highlight, Underline, Strikethrough, and Squiggly.
-
+
## Highlight text
-There are two ways to highlight text:
+Two ways to add highlights:
-1.Using the context menu
+1. Using the context menu
* Select text in the PDF document and right-click it.
* Select **Highlight** in the context menu.
- 
+ 
-2.Using the annotation toolbar
+2. Using the annotation toolbar
* Click the **Edit Annotation** button in the PDF Viewer toolbar to open the annotation toolbar.
* Select **Highlight** to enable highlight mode.
* Select text to add the highlight annotation.
* Alternatively, select text first and then click **Highlight**.
- 
+ 
-When pan mode is active and a text markup mode is entered, the PDF Viewer switches to text selection mode to enable selection.
+When pan mode is active, entering any text markup mode switches the PDF Viewer to text selection mode.
Refer to the following code snippet to switch to highlight mode.
@@ -203,7 +203,7 @@ root.render();
## Highlight text programmatically
-Programmatically add highlights using the [addAnnotation](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotation/#addannotation) method.
+Programmatically add highlights using the [addAnnotation](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotation#addannotation) method.
Example:
@@ -292,23 +292,23 @@ root.render();
## Underline text
-There are two ways to underline text:
+Two ways to add underlines:
-1.Using the context menu
+1. Using the context menu
* Select text in the PDF document and right-click it.
* Select **Underline** in the context menu.
- 
+ 
-2.Using the annotation toolbar
+2. Using the annotation toolbar
* Click the **Edit Annotation** button in the PDF Viewer toolbar to open the annotation toolbar.
* Select **Underline** to enable underline mode.
* Select text to add the underline annotation.
* Alternatively, select text first and then click **Underline**.
- 
+ 
-In the pan mode, if the underline mode is entered, the PDF Viewer control will switch to text select mode to enable the text selection for underlining the text.
+When pan mode is active, entering underline mode switches the PDF Viewer to text selection mode to enable text selection for underlining.
Refer to the following code snippet to switch to underline mode.
@@ -476,7 +476,7 @@ root.render();
## Underline text programmatically
-Programmatically add underlines using the [addAnnotation](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotation/#addannotation) method.
+Programmatically add underlines using the [addAnnotation](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotation#addannotation) method.
Example:
@@ -565,23 +565,23 @@ root.render();
## Strikethrough text
-There are two ways to strikethrough text:
+Two ways to add strikethroughs:
-1.Using the context menu
+1. Using the context menu
* Select text in the PDF document and right-click it.
* Select **Strikethrough** in the context menu.
- 
+ 
-2.Using the annotation toolbar
+2. Using the annotation toolbar
* Click the **Edit Annotation** button in the PDF Viewer toolbar to open the annotation toolbar.
* Select **Strikethrough** to enable strikethrough mode.
* Select text to add the strikethrough annotation.
* Alternatively, select text first and then click **Strikethrough**.
- 
+ 
-In the pan mode, if the strikethrough mode is entered, the PDF Viewer control will switch to text select mode to enable the text selection for striking through the text.
+When pan mode is active, entering strikethrough mode switches the PDF Viewer to text selection mode to enable text selection for striking through.
Refer to the following code snippet to switch to strikethrough mode.
@@ -754,7 +754,7 @@ root.render();
## Strikethrough text programmatically
-Programmatically add strikethrough using the [addAnnotation](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotation/#addannotation) method.
+Programmatically add strikethrough using the [addAnnotation](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotation#addannotation) method.
Example:
@@ -843,23 +843,23 @@ root.render();
## Add squiggly to text
-There are two ways to add squiggly to text:
+Two ways to add squiggly annotations:
-1.Using the context menu
+1. Using the context menu
* Select text in the PDF document and right-click it.
* Select **Squiggly** in the context menu.
- 
+ 
-2.Using the annotation toolbar
+2. Using the annotation toolbar
* Click the **Edit Annotation** button in the PDF Viewer toolbar to open the annotation toolbar.
* Select **Squiggly** to enable squiggly mode.
* Select text to add the squiggly annotation.
* Alternatively, select text first and then click **Squiggly**.
- 
+ 
-In the pan mode, if the squiggly mode is entered, the PDF Viewer control will switch to text select mode to enable the text selection for adding squiggly to the text.
+When pan mode is active, entering squiggly mode switches the PDF Viewer to text selection mode to enable text selection for adding squiggly annotations.
Refer to the following code snippet to switch to squiggly mode.
@@ -1032,7 +1032,7 @@ root.render();
## Add squiggly to text programmatically
-Programmatically add squiggly using the [addAnnotation](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotation/#addannotation) method.
+Programmatically add squiggly using the [addAnnotation](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotation#addannotation) method.
Example:
@@ -1123,15 +1123,15 @@ root.render();
The selected annotation can be deleted in the following ways:
-1.Using the Delete/Backspace key
- * Select the annotation.
- * Press Delete (or Backspace). The selected annotation is removed.
+1. Using the Delete/Backspace key
+ * Select the annotation.
+ * Press Delete (or Backspace). The selected annotation is removed.
-2.Using the annotation toolbar
- * Select the annotation.
- * Click **Delete Annotation** in the annotation toolbar. The selected annotation is removed.
+2. Using the annotation toolbar
+ * Select the annotation.
+ * Click **Delete Annotation** in the annotation toolbar. The selected annotation is removed.
- 
+ 
## Edit text markup annotation properties
@@ -1141,13 +1141,13 @@ The color and the opacity of the text markup annotation can be edited using the
Use the color palette in the Edit Color tool to change the annotation color.
-
+
### Edit opacity
Use the range slider in the Edit Opacity tool to change annotation opacity.
-
+
## Set default properties during control initialization
diff --git a/Document-Processing/PDF/PDF-Viewer/react/context-menu/builtin-context-menu.md b/Document-Processing/PDF/PDF-Viewer/react/context-menu/builtin-context-menu.md
new file mode 100644
index 0000000000..556307ee6a
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/context-menu/builtin-context-menu.md
@@ -0,0 +1,74 @@
+---
+layout: post
+title: Built-in Context Menu in React PDF Viewer | Syncfusion
+description: Explore the default context menu items in the React PDF Viewer, including options for text selection, annotations, and form fields.
+control: PDF Viewer
+platform: document-processing
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Built-in Context Menu Items in React PDF Viewer
+
+The React PDF Viewer includes a context-sensitive menu that updates dynamically based on the right-clicked element within the document. This page lists the default menu items available for different document elements.
+
+## Context Menu Scenarios
+
+Menu items vary depending on the target element:
+
+* **Text**: Displays options to annotate and copy selected text.
+
+ 
+
+* **Annotations**: Provides options to copy, cut, paste, or remove annotations, and add comments.
+
+ 
+
+* **Form Fields**: Shows standard form field interactions, such as modifying properties. The context menu for form fields appears only when the viewer is in **designer mode**.
+
+ 
+
+* **Empty Space**: Displays the option to paste a previously copied annotation or form field.
+
+ 
+
+## Default Item Reference
+
+### Text Menu Items
+
+The following table describes the default items available when right-clicking selected text:
+
+| Item | Description |
+| :--- | :--- |
+| **Copy** | Copies selected text to the clipboard. |
+| **Highlight** | Highlights selected text using the default highlight color. |
+| **Underline** | Applies an underline to the selected text. |
+| **Strikethrough** | Applies a strikethrough to the selected text. |
+| **Squiggly** | Applies a squiggly underline to the selected text. |
+| **Redact Text** | Redacts the selected text. |
+
+### Annotation Menu Items
+
+The following items are available when interacting with annotations:
+
+| Item | Description |
+| :--- | :--- |
+| **Copy** | Copies the selected annotation for pasting within the same page. |
+| **Cut** | Removes the selected annotation and copies it to the clipboard. |
+| **Paste** | Pastes a previously copied or cut annotation. |
+| **Delete** | Permanently removes the selected annotation. |
+| **Comments** | Opens the comment panel to manage discussions on the annotation. |
+
+### Form Field Menu Items
+
+These items appear when the viewer is in designer mode and a form field is selected:
+
+| Item | Description |
+| :--- | :--- |
+| **Copy** | Copies the selected form field for duplication. |
+| **Cut** | Removes the selected form field for relocation. |
+| **Paste** | Pastes a copied or cut form field. |
+| **Delete** | Removes the selected form field from the document. |
+| **Properties** | Launches the properties dialog for the specific form field. |
+
+N> The availability of the context menu is a client-side feature and is independent of server configurations.
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/context-menu/context-menu.md b/Document-Processing/PDF/PDF-Viewer/react/context-menu/context-menu.md
new file mode 100644
index 0000000000..567434090a
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/context-menu/context-menu.md
@@ -0,0 +1,34 @@
+---
+layout: post
+title: Context Menu in React PDF Viewer | Syncfusion
+description: Learn about the contextual menu options in the Syncfusion React PDF Viewer, including default behavior and customization possibilities.
+control: PDF Viewer
+platform: document-processing
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Context Menu in React PDF Viewer
+
+The React PDF Viewer provides a built-in context menu for interacting with text, annotations, form fields, and document elements. This feature enhances the user experience by offering quick access to relevant actions based on the current selection or the specific area of the document being interacted with.
+
+## Understanding the Context Menu
+
+The context menu is designed to be context-aware, meaning it dynamically updates its items based on the target element. For instance, right-clicking on selected text will show annotation options, while right-clicking on an annotation will display management options like copy, cut, and delete.
+
+### Core Capabilities
+
+The context menu supports several configurations:
+
+* **Default Behavior**: Provides standard actions such as cut, copy, and annotation management.
+* **Customization**: Allows adding new menu items, removing default ones, or reordering them to meet specific application requirements.
+* **Granular Control**: Developers can fully disable the menu or replace it with custom logic using events.
+
+### Client-side Interaction
+
+The availability and behavior of the context menu are governed primarily by client-side logic. It is not affected by server-side configurations or cloud environments, ensuring consistent performance across different deployment scenarios.
+
+## Further Reading
+
+* [Built-in Context Menu](builtin-context-menu) – A technical reference for default menu behavior and items.
+* [Customize Context Menu](custom-context-menu) – A guide on how to implement custom menu items and dynamic updates.
diff --git a/Document-Processing/PDF/PDF-Viewer/react/context-menu/custom-context-menu.md b/Document-Processing/PDF/PDF-Viewer/react/context-menu/custom-context-menu.md
new file mode 100644
index 0000000000..5db1ef5749
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/context-menu/custom-context-menu.md
@@ -0,0 +1,233 @@
+---
+layout: post
+title: Customize the context menu in React PDF Viewer | Syncfusion
+description: Learn how to add and customize custom context menu options in the React PDF Viewer using addCustomMenu, customContextMenuSelect, and related events.
+control: PDF Viewer
+platform: document-processing
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# How to Customize the context menu in PDF Viewer in React
+
+The PDF Viewer supports extensive customization of the context menu, including reaching specific goals like adding new items, hiding default options, and handling custom click events.
+
+## Add Custom Context Menu Items
+
+You can add custom options to the context menu using the [addCustomMenu()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#addcustommenu) method. This is typically implemented during the [`documentLoad`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#documentload) event.
+
+### Implementation Guide
+
+1. Define the menu items as an array of objects.
+2. Call the [`addCustomMenu`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#addcustommenu) method within the [`documentLoad`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#documentload) event handler.
+
+```js
+export function App() {
+ let menuItems = [
+ {
+ text: 'Search In Google',
+ id: 'search_in_google',
+ iconCss: 'e-icons e-search'
+ },
+ {
+ text: 'Lock Annotation',
+ iconCss: 'e-icons e-lock',
+ id: 'lock_annotation'
+ },
+ {
+ text: 'Unlock Annotation',
+ iconCss: 'e-icons e-unlock',
+ id: 'unlock_annotation'
+ },
+ {
+ text: 'Lock Form Field',
+ iconCss: 'e-icons e-lock',
+ id: 'read_only_true'
+ },
+ {
+ text: 'Unlock Form Field',
+ iconCss: 'e-icons e-unlock',
+ id: 'read_only_false'
+ },
+ ];
+ function documentLoad(args) {
+ var viewer = document.getElementById('container').ej2_instances[0];
+ viewer.addCustomMenu(menuItems, false);
+ }
+ return (
+
+
+ {/* Render the PDF Viewer */}
+
+
+
+
+
+ );
+}
+const root = ReactDOM.createRoot(document.getElementById('sample'));
+root.render();
+```
+
+## Handle Click Events for Custom Menu Items
+
+The [customContextMenuSelect()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#customcontextMenuselect) method defines actions for custom menu items.
+
+```js
+function customContextMenuSelect(args) {
+ var viewer = document.getElementById('container').ej2_instances[0];
+ switch (args.id) {
+ case 'search_in_google':
+ for (var i = 0; i < viewer.textSelectionModule.selectionRangeArray.length; i++) {
+ var content = viewer.textSelectionModule.selectionRangeArray[i].textContent;
+ if ((viewer.textSelectionModule.isTextSelection) && (\/\S\/.test(content))) {
+ window.open('http://google.com/search?q=' + content);
+ }
+ }
+ break;
+ case 'lock_annotation':
+ lockAnnotations(args);
+ break;
+ case 'unlock_annotation':
+ unlockAnnotations(args);
+ break;
+ case 'read_only_true':
+ setReadOnlyTrue(args);
+ break;
+ case 'read_only_false':
+ setReadOnlyFalse(args);
+ break;
+ default:
+ break;
+ }
+}
+
+function lockAnnotations(args) {
+ for (var i = 0; i < viewer.annotationCollection.length; i++) {
+ if (viewer.annotationCollection[i].uniqueKey === viewer.selectedItems.annotations[0].id) {
+ viewer.annotationCollection[i].annotationSettings.isLock = true;
+ viewer.annotationCollection[i].isCommentLock = true;
+ viewer.annotation.editAnnotation(viewer.annotationCollection[i]);
+ }
+ args.cancel = false;
+ }
+}
+
+function unlockAnnotations(args) {
+ for (var i = 0; i < viewer.annotationCollection.length; i++) {
+ if (viewer.annotationCollection[i].uniqueKey === viewer.selectedItems.annotations[0].id) {
+ viewer.annotationCollection[i].annotationSettings.isLock = false;
+ viewer.annotationCollection[i].isCommentLock = false;
+ viewer.annotation.editAnnotation(viewer.annotationCollection[i]);
+ }
+ args.cancel = false;
+ }
+}
+
+function setReadOnlyTrue(args) {
+ var viewer = document.getElementById('container').ej2_instances[0];
+ var selectedFormFields = viewer.selectedItems.formFields;
+ for (var i = 0; i < selectedFormFields.length; i++) {
+ var selectedFormField = selectedFormFields[i];
+ if (selectedFormField) {
+ viewer.formDesignerModule.updateFormField(selectedFormField, {
+ isReadOnly: true,
+ });
+ }
+ args.cancel = false;
+ }
+}
+
+function setReadOnlyFalse(args) {
+ var viewer = document.getElementById('container').ej2_instances[0];
+ var selectedFormFields = viewer.selectedItems.formFields;
+ for (var i = 0; i < selectedFormFields.length; i++) {
+ var selectedFormField = selectedFormFields[i];
+ if (selectedFormField) {
+ viewer.formDesignerModule.updateFormField(selectedFormField, {
+ isReadOnly: false,
+ });
+ }
+ args.cancel = false;
+ }
+}
+```
+
+## Dynamic Context Menu Customization
+
+The [customContextMenuBeforeOpen()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#customcontextMenubeforeopen) event allows for dynamic showing or hiding of items based on selection or document state.
+
+```js
+function customContextMenuBeforeOpen(args) {
+ for (var i = 0; i < args.ids.length; i++) {
+ var search = document.getElementById(args.ids[i]);
+ var viewer = document.getElementById('container').ej2_instances[0];
+ if (search) {
+ search.style.display = 'none';
+ if (args.ids[i] === 'search_in_google' && (viewer.textSelectionModule) && viewer.textSelectionModule.isTextSelection) {
+ search.style.display = 'block';
+ } else if (args.ids[i] === "lock_annotation" || args.ids[i] === "unlock_annotation") {
+ var isLockOption = args.ids[i] === "lock_annotation";
+ for (var j = 0; j < viewer.selectedItems.annotations.length; j++) {
+ var selectedAnnotation = viewer.selectedItems.annotations[j];
+ if (selectedAnnotation && selectedAnnotation.annotationSettings) {
+ var shouldDisplay = (isLockOption && !selectedAnnotation.annotationSettings.isLock) ||
+ (!isLockOption && selectedAnnotation.annotationSettings.isLock);
+ search.style.display = shouldDisplay ? 'block' : 'none';
+ }
+ }
+ } else if (args.ids[i] === "read_only_true" && viewer.selectedItems.formFields.length !== 0) {
+ var selectedFormField = viewer.selectedItems.formFields[0].isReadonly;
+ search.style.display = selectedFormField ? 'none' : 'block';
+ } else if (args.ids[i] === "read_only_false" && viewer.selectedItems.formFields.length !== 0) {
+ var selectedFormField = viewer.selectedItems.formFields[0].isReadonly;
+ search.style.display = selectedFormField ? 'block' : 'none';
+ } else if (args.ids[i] === 'formfield properties' && viewer.selectedItems.formFields.length !== 0) {
+ search.style.display = 'block';
+ }
+ }
+ }
+}
+```
+
+## Disable the Context Menu Entirely
+
+The context menu in the PDF Viewer can be fully disabled by setting the [`contextMenuOption`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#contextmenuoption) property to `None`.
+
+```js
+
+
+
+```
+
+The following is the output of the custom context menu with customization.
+
+{% tabs %}
+{% highlight js tabtitle="index.jsx" %}
+{% include code-snippet/pdfviewer/react/custom-context-menu/app/index.jsx %}
+{% endhighlight %}
+{% highlight ts tabtitle="index.tsx" %}
+{% include code-snippet/pdfviewer/react/custom-context-menu/app/index.tsx %}
+{% endhighlight %}
+{% endtabs %}
+
+N> To set up the **server-backed PDF Viewer**, add the following `serviceUrl` within the
element in either the `index.TSX` or `index.JSX` file: **serviceUrl="https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer"**.
+
+[View the sample in Stack blitz](https://stackblitz.com/edit/react-zmbkebwq?file=index.js)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/depoyment-integration/gatsby.md b/Document-Processing/PDF/PDF-Viewer/react/depoyment-integration/gatsby.md
new file mode 100644
index 0000000000..728a549a34
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/depoyment-integration/gatsby.md
@@ -0,0 +1,140 @@
+---
+layout: post
+title: Getting started with React PDF Viewer in Gatsby | Syncfusion
+description: How to integrate the Syncfusion React PDF Viewer into a Gatsby site (quickstart, how-to, reference, explanation).
+control: PDF Viewer
+platform: document-processing
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Getting started with the React PDF Viewer in Gatsby
+
+How to integrate the Syncfusion React PDF Viewer into a Gatsby site. Use the Quickstart below to get a working viewer, then consult the How-to and Reference sections for configuration details (WASM, static assets, and SSR notes).
+
+## Quickstart for Gatsby
+
+#### Create or open your Gatsby site:
+
+```bash
+# create a new Gatsby site (or use an existing one)
+gatsby new my-gatsby-site
+cd my-gatsby-site
+npm install
+```
+
+#### Install the PDF Viewer package:
+
+```bash
+npm install @syncfusion/ej2-react-pdfviewer --save
+```
+
+#### Optional — host runtime resources locally or use the CDN
+
+If you want to host the viewer runtime and WASM locally, copy the runtime files into Gatsby's `static` directory so they are served at the root URL (`/`). The example component below uses the CDN `resourceUrl` for a quick demo; hosting locally is recommended for production.
+
+Optional local copy (Unix/macOS / Git Bash / WSL):
+
+```bash
+cp -R ./node_modules/@syncfusion/ej2-pdfviewer/dist/ej2-pdfviewer-lib static/ej2-pdfviewer-lib
+# copy a sample PDF to static/assets (create folder if needed)
+mkdir -p static/assets && cp ./path/to/sample.pdf static/assets/sample.pdf
+```
+
+- Add viewer CSS imports to `src/components/layout.css` (recommended for Gatsby component-scoped styling):
+
+Create `src/components/layout.css` and add the imports below (relative path to `node_modules` used from `src/components`):
+
+```css
+@import '../../node_modules/@syncfusion/ej2-base/styles/material.css';
+@import '../../node_modules/@syncfusion/ej2-buttons/styles/material.css';
+@import '../../node_modules/@syncfusion/ej2-dropdowns/styles/material.css';
+@import '../../node_modules/@syncfusion/ej2-inputs/styles/material.css';
+@import '../../node_modules/@syncfusion/ej2-navigations/styles/material.css';
+@import '../../node_modules/@syncfusion/ej2-popups/styles/material.css';
+@import '../../node_modules/@syncfusion/ej2-splitbuttons/styles/material.css';
+@import "../../node_modules/@syncfusion/ej2-pdfviewer/styles/material.css";
+```
+
+Then import the stylesheet in `gatsby-browser.js` at your project root so it is included in the client bundle:
+
+```js
+// gatsby-browser.js
+import './src/components/layout.css';
+```
+
+- Use a client-only approach (Gatsby is server-side rendered). A simple and reliable pattern is to render the viewer after mount with a mounted flag. Create `src/components/pdfviewer.js` with the component below (the example also shows where to register a Syncfusion license if you have one):
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+// src/components/pdfviewer.js
+import React, { useEffect, useState } from 'react';
+import {
+ PdfViewerComponent,
+ Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
+ BookmarkView, ThumbnailView, Print, TextSelection, TextSearch
+ , FormFields, FormDesigner, Inject
+} from '@syncfusion/ej2-react-pdfviewer';
+
+export default function PdfViewer() {
+ const [isClient, setIsClient] = useState(false);
+
+ useEffect(() => setIsClient(true), []);
+
+ if (!isClient) return null; // prevent SSR crash (window not defined)
+
+ return (
+
+
+
+
+
+ );
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+Add a page that uses the component at `src/pages/index.js`:
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+// src/pages/index.js
+import React from "react";
+import PdfViewer from "../components/pdfviewer";
+export default function PdfViewerPage() {
+ return (
+
+
+ Syncfusion PDF Viewer in Gatsby
+
+
+
+ );
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+#### Run the Gatsby dev server:
+
+```bash
+npm run develop
+```
+
+## See also
+
+- [Getting started overview](../getting-started-overview)
+- [Creating a Next.js application using Syncfusion React PDF Viewer](./nextjs-getting-started)
+- [Getting started with Syncfusion React PDF Viewer in Remix](./remix)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/nextjs-getting-started.md b/Document-Processing/PDF/PDF-Viewer/react/depoyment-integration/nextjs-getting-started.md
similarity index 57%
rename from Document-Processing/PDF/PDF-Viewer/react/nextjs-getting-started.md
rename to Document-Processing/PDF/PDF-Viewer/react/depoyment-integration/nextjs-getting-started.md
index 4dbafe7720..ce069bee8f 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/nextjs-getting-started.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/depoyment-integration/nextjs-getting-started.md
@@ -1,16 +1,16 @@
---
layout: post
title: React getting started with Next.js | Syncfusion
-description: Check out and learn here all about how to use the Syncfusion React UI components in the Next.js project.
+description: Check out and learn here all about how to use the Syncfusion React PDF Viewer in the Next.js project.
control: PDF Viewer
platform: document-processing
documentation: ug
domainurl: ##DomainURL##
---
-# Creating a Next.js Application Using Syncfusion® React Components
+# Creating a Next.js application using Syncfusion React PDF Viewer
-This section provides a step-by-step guide for setting up a Next.js application and integrating the Syncfusion® React PDF Viewer component.
+This guide shows how to set up a Next.js application and integrate the Syncfusion® React PDF Viewer component.
## What is Next.js?
@@ -22,7 +22,9 @@ Before getting started with the Next.js application, ensure the following prereq
* [Node.js 18.17](https://nodejs.org/en) or later.
-* The application is compatible with macOS, Windows, and Linux operating systems.
+ * The application is compatible with macOS, Windows, and Linux operating systems.
+
+* See the [System requirements](../../../../System-Requirements) for detailed platform requirements.
## Create a Next.js application
@@ -41,52 +43,49 @@ yarn create next-app
{% endhighlight %}
{% endtabs %}
-Using one of the above commands will lead you to set up additional configurations for the project as below:
-
-1.Define the project name: Users can specify the name of the project directly. Let's specify the name of the project as `ej2-nextjs-pdfviewer`.
+Using one of the above commands will prompt for project configuration options.
+- Define the project name. For example: `ej2-next-js-pdfviewer`.
{% tabs %}
{% highlight bash tabtitle="CMD" %}
-√ What is your project named? » ej2-nextjs-pdfviewer
+√ What is your project named? » ej2-next-js-pdfviewer
{% endhighlight %}
{% endtabs %}
-2.Select the required packages.
-
+- Select the required packages.
{% tabs %}
{% highlight bash tabtitle="CMD" %}
-√ What is your project named? ... ej2-nextjs-pdfviewer
+√ What is your project named? ... ej2-next-js-pdfviewer
√ Would you like to use TypeScript? ... No / `Yes`
√ Would you like to use ESLint? ... No / `Yes`
√ Would you like to use Tailwind CSS? ... `No` / Yes
√ Would you like to use `src/` directory? ... No / `Yes`
√ Would you like to use App Router? (recommended) ... No / `Yes`
√ Would you like to customize the default import alias? ... `No`/ Yes
-Creating a new Next.js app in D:\ej2-nextjs-pdfviewer.
+Creating a new Next.js app in D:\ej2-next-js-pdfviewer.
{% endhighlight %}
{% endtabs %}
-3.Once complete the above mentioned steps to create `ej2-nextjs-pdfviewer`, navigate to the directory using the below command:
-
+- After the project is created, navigate to the project directory:
{% tabs %}
{% highlight bash tabtitle="CMD" %}
-cd ej2-nextjs-pdfviewer
+cd ej2-next-js-pdfviewer
{% endhighlight %}
{% endtabs %}
-The application is ready to run with default settings. Now, let's add Syncfusion® components to the project.
+The application is ready to run with default settings. Next, add Syncfusion® components to the project.
## Install Syncfusion® React packages
-Syncfusion® React component packages are available at [npmjs.com](https://www.npmjs.com/search?q=ej2-react). To use Syncfusion® React components in the project, install the corresponding npm package.
+Syncfusion® React packages are available on npm. Install the package for the component required by the project.
-Here, the [React PDF Viewer component](https://www.syncfusion.com/pdf-viewer-sdk) is used as an example. To install the React PDF Viewer component in the project, use the following command:
+This guide uses the [React PDF Viewer component](https://www.syncfusion.com/pdf-viewer-sdk) component as an example. Install it with:
{% tabs %}
{% highlight bash tabtitle="NPM" %}
@@ -103,13 +102,17 @@ yarn add @syncfusion/ej2-react-pdfviewer
## Import Syncfusion® CSS styles
-Syncfusion® React components come with [built-in themes](https://ej2.syncfusion.com/react/documentation/appearance/theme/), which are available in the installed packages. It’s easy to adapt the Syncfusion® React components to match the style of your application by referring to one of the built-in themes.
+Syncfusion® React components include built-in themes. Import the PDF Viewer theme and base styles to match the look and feel of the application.
-Import the `Material` theme into the **src/app/globals.css** file and removed the existing styles in that file, as shown below:
+Where to add the imports:
+
+- App Router: put these in `src/app/globals.css`
+- Pages Router: put them in `pages/_app.js` or its imported global CSS
{% tabs %}
{% highlight css tabtitle="globals.css" %}
+/* PDF Viewer theme and base styles */
@import '../node_modules/@syncfusion/ej2-base/styles/material.css';
@import '../node_modules/@syncfusion/ej2-buttons/styles/material.css';
@import '../node_modules/@syncfusion/ej2-dropdowns/styles/material.css';
@@ -122,13 +125,13 @@ Import the `Material` theme into the **src/app/globals.css** file and removed th
{% endhighlight %}
{% endtabs %}
-> To know more about built-in themes and CSS reference for individual components, refer to the [themes](https://ej2.syncfusion.com/react/documentation/appearance/theme/) section.
+N> To learn more about built-in themes and CSS references for individual components, see the [themes](https://ej2.syncfusion.com/react/documentation/appearance/theme) documentation.
-## Add Syncfusion® React component
+## Add the Syncfusion® React component
-Follow the below steps to add the React PDF Viewer componente to the Next.js project:
+Follow these steps to add the React PDF Viewer component to the Next.js project:
-1.Define the PDF Viewer component in the **src/app/page.tsx** file, as shown below:
+- Define the PDF Viewer component in `src/app/page.tsx`, as shown below:
{% tabs %}
{% highlight ts tabtitle="page.tsx" %}
@@ -143,7 +146,7 @@ return (
{/* Inject the required services */}
[View the Next.js PDF Viewer sample in the GitHub repository](https://github.com/SyncfusionExamples/syncfusion-react-pdfviewer-component-in-nextjs)
+
+**See also**
-> [View the NEXT.js PDF Viewer sample in the GitHub repository](https://github.com/SyncfusionExamples/syncfusion-react-pdfviewer-component-in-nextjs).
+- [Adding Next.js Configuration for deployment](../getting-started#adding-nextjs-configuration)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/depoyment-integration/preact.md b/Document-Processing/PDF/PDF-Viewer/react/depoyment-integration/preact.md
new file mode 100644
index 0000000000..f396fc6ba9
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/depoyment-integration/preact.md
@@ -0,0 +1,80 @@
+---
+layout: post
+title: Getting started with Syncfusion React PDF Viewer in Preact Application
+description: Provides a short overview and essential task links for integrating and using the Syncfusion React PDF Viewer within Preact.
+control: PDF Viewer
+platform: document-processing
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+
+# Getting started with Syncfusion React PDF Viewer in Preact
+
+This page is a short, task-focused overview for integrating the Syncfusion React PDF Viewer into a [Preact](https://preactjs.com/) app. Use the short sections below for quick tasks; a minimal full example is provided as an optional reference.
+
+[Preact](https://preactjs.com/) is a lightweight React alternative that preserves the React-compatible API. Use Preact when you want smaller bundle size while reusing the React viewer components.
+## Setup
+
+How‑to: Create a Preact project and install the Syncfusion package.
+
+```bash
+npm init preact # choose JavaScript or TypeScript as needed
+cd my-project
+npm install @syncfusion/ej2-react-pdfviewer --save
+# or
+yarn init preact
+yarn add @syncfusion/ej2-react-pdfviewer
+```
+
+## Import CSS
+
+How‑to: Add the required Syncfusion theme and component CSS to `src/style.css`.
+
+```css
+@import '../node_modules/@syncfusion/ej2-base/styles/material3.css';
+@import '../node_modules/@syncfusion/ej2-buttons/styles/material3.css';
+@import '../node_modules/@syncfusion/ej2-dropdowns/styles/material3.css';
+@import '../node_modules/@syncfusion/ej2-inputs/styles/material3.css';
+@import '../node_modules/@syncfusion/ej2-navigations/styles/material3.css';
+@import '../node_modules/@syncfusion/ej2-popups/styles/material3.css';
+@import '../node_modules/@syncfusion/ej2-splitbuttons/styles/material3.css';
+@import '../node_modules/@syncfusion/ej2-react-pdfviewer/styles/material3.css';
+```
+
+Note: keep import order consistent with component dependencies.
+
+## Add component
+
+How‑to: Render a minimal `PdfViewerComponent` in `src/index.js`.
+
+Prefer a single `Add component` example using the CDN `resourceUrl` (no server required). Replace the CDN version as needed.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import { render } from 'preact';
+import { PdfViewerComponent, Toolbar, Magnification, Navigation, Annotation, Inject } from '@syncfusion/ej2-react-pdfviewer';
+import './style.css';
+
+function App() {
+ return (
+
+
+
+ );
+}
+
+render(, document.getElementById('app'));
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+**See also**
+
+- [Getting started with the Syncfusion React PDF Viewer](../getting-started-overview)
+- [System requirements for Syncfusion React PDF Viewer](../../../../System-Requirements)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/depoyment-integration/remix.md b/Document-Processing/PDF/PDF-Viewer/react/depoyment-integration/remix.md
new file mode 100644
index 0000000000..5230ef293c
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/depoyment-integration/remix.md
@@ -0,0 +1,221 @@
+---
+layout: post
+title: Getting started with Syncfusion React PDF Viewer with React Router
+description: Short quickstart for integrating the Syncfusion React PDF Viewer into a React application using React Router v7 (standalone/client-only rendering).
+control: PDF Viewer
+platform: document-processing
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# React Router v7 (Remix) Quickstart
+
+## Overview
+
+N> Remix's framework features were merged into React Router v7 and later. This guide targets React Router v7's framework-mode and shows a client-only (standalone) integration of the Syncfusion React PDF Viewer. Keep the viewer client-only to avoid SSR/runtime errors.
+
+## Quickstart
+
+## Prerequisites
+
+- Node.js (recommended >= 18)
+- A React Router app (see steps below) or an existing React Router project
+- React 18+
+- See the [System requirements](../../../../System-Requirements) for platform details.
+
+## Project layout (which starter you used)
+
+Different starters create different folder layouts. Pick the mapping that matches your project and follow the file locations shown below.
+
+- create-react-router (framework-mode — `app/` tree)
+ - Global CSS: `app/app.css` (imported by `root.ts`)
+ - Component: `app/components/PdfViewerClient.ts`
+ - Route: `app/routes/home.ts` or `app/routes/index.ts`
+
+- Vite / plain React (traditional — `src/` tree)
+ - Global CSS: `src/index.css` (imported from `src/main.ts`)
+ - Component: `src/components/PdfViewerClient.ts`
+ - Route wrapper: `src/App.ts` + `BrowserRouter` in `src/main.ts`
+
+Use the file paths that match your project layout when following the steps below.
+
+## Create a Remix or React Router v7 app
+
+If you want the React Router framework-mode project (creates an `app/` tree), use the official scaffolding tool:
+
+```bash
+npx create-react-router@latest remix-pdf-viewer
+# follow prompts (pick your preferred package manager and options)
+cd remix-pdf-viewer
+npm install
+npm run dev
+```
+
+If you prefer a Vite-based React project (creates a `src/` tree), create it with Vite and add React Router v7:
+
+```bash
+npm create vite@latest my-app -- --template react
+cd my-app
+npm install
+npm install react-router@7 react-router-dom@7
+npm run dev
+```
+
+## Install the PDF Viewer package
+
+```bash
+npm install @syncfusion/ej2-react-pdfviewer --save
+```
+
+## Copy viewer runtime assets to public folder
+
+The PDF Viewer requires runtime assets (pdfium.js, pdfium.wasm, supporting files). Copy them from the `ej2-pdfviewer` package to your `public` folder so `resourceUrl` can point to `/ej2-pdfviewer-lib`.
+
+Unix/macOS (or Git Bash / WSL):
+
+```bash
+cp -R ./node_modules/@syncfusion/ej2-pdfviewer/dist/ej2-pdfviewer-lib public/ej2-pdfviewer-lib
+```
+
+Windows PowerShell:
+
+```powershell
+Copy-Item -Path .\node_modules\@syncfusion\ej2-pdfviewer\dist\ej2-pdfviewer-lib -Destination .\public\ej2-pdfviewer-lib -Recurse
+```
+
+Confirm `public/ej2-pdfviewer-lib` contains `pdfium.js` and `pdfium.wasm`.
+
+## Add global CSS for the viewer
+
+Place the Syncfusion CSS imports in your project's global stylesheet. Choose the path that matches your project layout.
+
+create-react-router (`app/` tree)
+
+ - File: `app/app.css` (or similar global CSS imported by `root.ts`)
+
+Vite / plain React (`src/` tree)
+
+ - File: `src/index.css` (imported from `src/main.ts`)
+
+Example CSS (same for both):
+
+```css
+@import '../node_modules/@syncfusion/ej2-base/styles/material.css';
+@import '../node_modules/@syncfusion/ej2-buttons/styles/material.css';
+@import '../node_modules/@syncfusion/ej2-dropdowns/styles/material.css';
+@import '../node_modules/@syncfusion/ej2-inputs/styles/material.css';
+@import '../node_modules/@syncfusion/ej2-navigations/styles/material.css';
+@import '../node_modules/@syncfusion/ej2-popups/styles/material.css';
+@import '../node_modules/@syncfusion/ej2-splitbuttons/styles/material.css';
+@import '../node_modules/@syncfusion/ej2-pdfviewer/styles/material.css';
+```
+
+Then import the stylesheet according to your starter:
+
+create-react-router (`app/root.ts` or `app/root.ts`): ensure the global CSS is imported or linked from `root` following the starter conventions.
+
+Vite / plain React (`src/main.ts`):
+
+```js
+import React from 'react';
+import ReactDOM from 'react-dom/client';
+import { BrowserRouter } from 'react-router-dom';
+import App from './App';
+import './index.css';
+
+ReactDOM.createRoot(document.getElementById('root')).render(
+
+
+
+);
+```
+
+## Client-only rendering
+
+The PDF Viewer depends on browser APIs and WebAssembly; avoid server-side rendering it. Render it only after the component mounts. Create a client-only component in the folder that matches your project layout.
+
+create-react-router (`app/` tree)
+
+ - `app/components/PdfViewerClient.ts`
+
+Vite / plain React (`src/` tree)
+
+ - `src/components/PdfViewerClient.ts`
+
+Example component (works in either location):
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+// components/PdfViewerClient.ts
+import React, { useEffect, useState } from 'react';
+import {
+ PdfViewerComponent,
+ Toolbar,
+ Magnification,
+ Navigation,
+ Annotation,
+ Inject,
+} from '@syncfusion/ej2-react-pdfviewer';
+
+export default function PdfViewerClient() {
+ const [mounted, setMounted] = useState(false);
+ useEffect(() => setMounted(true), []);
+
+ if (!mounted) return null;
+
+ return (
+
+
+
+
+
+ );
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+Routing / usage examples:
+
+create-react-router (`app/routes/home.ts` or `app/routes/index.ts`):
+
+```ts
+import PdfViewerClient from '../components/PdfViewerClient';
+
+export default function Home() {
+ return ;
+}
+```
+
+Vite / plain React (`src/App.ts`):
+
+```ts
+import { Routes, Route } from 'react-router-dom';
+import PdfViewerClient from './components/PdfViewerClient';
+
+export default function App() {
+ return (
+
+ } />
+
+ );
+}
+```
+
+## Run the app
+
+```bash
+npm run dev
+# open the URL printed by the dev server (usually http://localhost:3000)
+```
+
+## See also
+
+- [Getting started overview](../getting-started-overview)
+- [Creating a Next.js application using Syncfusion React PDF Viewer](./nextjs-getting-started)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/depoyment-integration/share-point.md b/Document-Processing/PDF/PDF-Viewer/react/depoyment-integration/share-point.md
new file mode 100644
index 0000000000..702efb8582
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/depoyment-integration/share-point.md
@@ -0,0 +1,172 @@
+---
+layout: post
+title: Syncfusion React PDF Viewer in SharePoint
+description: Quickstart to integrate the Syncfusion React PDF Viewer into an SPFx React web part (standalone/client-side rendering).
+control: PDF Viewer
+platform: document-processing
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# React PDF Viewer in SharePoint Framework
+
+## Overview
+
+This quickstart shows how to integrate the Syncfusion React PDF Viewer into a SharePoint Framework (SPFx) React web part. It covers creating the web part, installing the `@syncfusion/ej2-react-pdfviewer` package, adding the required CSS, supplying runtime assets either from the Syncfusion CDN or from Site Assets, and a minimal TypeScript component that renders a PDF in the browser (client‑only).
+
+## Prerequisites
+
+- A SharePoint development environment and an Office 365 tenant (for testing/deployment).
+- Node.js compatible with your SPFx version (check SPFx docs).
+- Yeoman and the SPFx generator: `npm install -g yo @microsoft/generator-sharepoint`.
+- Gulp: `npm install -g gulp-cli`.
+
+## Create an SPFx React web part
+
+Run the SharePoint generator and choose the React framework (TypeScript recommended). Example answers shown in parentheses.
+
+```bash
+yo @microsoft/sharepoint
+# Solution name: pdfviewer-spfx
+# Target: SharePoint Online only (latest)
+# Component type: WebPart
+# Web part name: PdfViewer
+# Framework: React
+```
+
+This creates the usual SPFx project tree (no `src/`/`app/` ambiguity): React components live under `src/webparts/pdfViewer/components` and global web part assets are under `src/webparts/pdfViewer/assets`.
+
+## Install Syncfusion package
+
+In the project root run:
+
+```bash
+npm install @syncfusion/ej2-react-pdfviewer --save
+```
+
+Keep the package version aligned with the runtime assets you host.
+
+## Add Syncfusion CSS
+
+Import the Syncfusion theme CSS so the viewer styles are bundled with the web part. In your React component file (TypeScript example below) import the CSS from node_modules:
+
+```ts
+import '@syncfusion/ej2-base/styles/material.css';
+import '@syncfusion/ej2-buttons/styles/material.css';
+import '@syncfusion/ej2-dropdowns/styles/material.css';
+import '@syncfusion/ej2-inputs/styles/material.css';
+import '@syncfusion/ej2-navigations/styles/material.css';
+import '@syncfusion/ej2-popups/styles/material.css';
+import '@syncfusion/ej2-splitbuttons/styles/material.css';
+import '@syncfusion/ej2-pdfviewer/styles/material.css';
+```
+
+If your SPFx build configuration forbids direct CSS imports from node_modules, add these `@import` lines to your component CSS (for example `PdfViewer.module.css`) using the appropriate path or deploy the CSS from a CDN.
+
+## Provide runtime assets and choose rendering mode
+
+SPFx web parts run in the browser (client-side). That makes standalone (client-only) rendering the natural default: the PDF Viewer runs in the user's browser and uses `resourceUrl` to load runtime assets (pdfium.js, pdfium.wasm and supporting files).
+
+Two deployment options for those runtime assets:
+
+- Recommended — Use Syncfusion CDN (fast, simplest): set `resourceUrl` to the CDN folder that matches your package version, e.g.:
+
+```ts
+resourceUrl = "https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib";
+```
+
+- Self‑hosted — Upload `ej2-pdfviewer-lib` to a public CDN or to a SharePoint library (for example, Site Assets). If you upload to Site Assets, use the full site URL for `resourceUrl`, for example:
+
+```ts
+resourceUrl = "https://contoso.sharepoint.com/sites/YourSite/SiteAssets/ej2-pdfviewer-lib";
+```
+
+Notes on rendering modes and SPFx:
+
+- Standalone (client-only): fully supported in SPFx — set `resourceUrl` as above and the viewer will render entirely in the browser. This is the recommended, simplest approach for SPFx web parts.
+- Server‑backed (optional): to use server-side rendering, set `serviceUrl` (pointing to your PDF rendering web service) instead of `resourceUrl`.
+
+Important: ensure any host you use serves `.wasm` files with Content-Type `application/wasm` and that tenant/content security policies permit fetching assets from the chosen host.
+
+## Add the React component (TypeScript)
+
+Create `PdfViewerClient.tsx` under `src/webparts/pdfViewer/components` and paste the minimal example below. This component is client-only and safe for SPFx (which runs in the browser):
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+// src/webparts/pdfViewer/components/PdfViewerClient.tsx
+import * as React from 'react';
+import {
+ PdfViewerComponent,
+ Toolbar,
+ Magnification,
+ Navigation,
+ Annotation,
+ Inject,
+} from '@syncfusion/ej2-react-pdfviewer';
+import '@syncfusion/ej2-pdfviewer/styles/material.css';
+
+export const PdfViewerClient: React.FC = () => {
+ const [mounted, setMounted] = React.useState(false);
+ React.useEffect(() => setMounted(true), []);
+ if (!mounted) return null;
+
+ return (
+
+
+
+
+
+ );
+};
+
+export default PdfViewerClient;
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Use the component in the web part
+
+Open the web part main React file (for example `src/webparts/pdfViewer/components/PdfViewer.tsx` created by the generator) and render `PdfViewerClient`:
+
+```ts
+import * as React from 'react';
+import PdfViewerClient from './PdfViewerClient';
+
+export default function PdfViewer(): JSX.Element {
+ return (
+
+
+
+ );
+}
+```
+
+## Test and package
+
+Run the local workbench for development:
+
+```bash
+gulp serve
+# open the local workbench or use SharePoint Online workbench for hosted assets
+```
+
+To package for deployment (when using self‑hosted assets make sure they are uploaded to your CDN or Site Assets before installing the package):
+
+```bash
+gulp bundle --ship
+gulp package-solution --ship
+```
+
+## See also
+
+- [Getting started overview](../getting-started-overview)
+- [Creating a Next.js application using Syncfusion React PDF Viewer](./nextjs-getting-started)
+- [Getting started with Syncfusion React PDF Viewer in Preact](./nextjs-getting-started)
+- [Getting started with Syncfusion React PDF Viewer in Remix](./nextjs-getting-started)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/document-handling/load-large-pdf.md b/Document-Processing/PDF/PDF-Viewer/react/document-handling/load-large-pdf.md
new file mode 100644
index 0000000000..d4671fcfdb
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/document-handling/load-large-pdf.md
@@ -0,0 +1,179 @@
+---
+layout: post
+title: Document Handling in React Pdfviewer component | Syncfusion
+description: This page helps you to learn about how to Open PDF from URL, Base64, Blob, Stream, Cloud storage in Syncfusion React Pdfviewer component.
+control: PDF Viewer
+platform: document-processing
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Load Large PDF Files in React PDF Viewer
+
+This article explains how to efficiently load and view large PDF files using the Syncfusion React PDF Viewer. It includes recommended best practices and performance tips for documents ranging from **50 MB to 2 GB**.
+
+## Why Large PDFs Need Special Handling
+
+Large PDF files often contain thousands of embedded objects such as images, compressed streams, digital signatures, form fields, annotations, vector graphics, and complex page structures. Rendering such heavy documents requires more processing time and memory.
+
+The **Syncfusion PDF Viewer is fully optimized for these heavy workloads**, and it delivers excellent performance even when working with very large files.
+
+### Viewer Capability Highlights
+- **Smooth performance for PDFs up to 1 GB**
+- **Supports viewing files up to ~2 GB**
+- **1 GB PDFs typically load within 5–6 seconds**
+- **Optimized incremental page loading** for faster interaction
+
+Performance may vary if the user’s system is heavily loaded or low on available RAM. In such cases, enabling the recommended optimizations below ensures maximum performance.
+
+## Best Practices for Loading Large PDFs
+
+### 1. Load PDFs Using Blob (Recommended)
+
+Blob loading provides the fastest and most efficient performance for large PDFs.
+
+#### Why Blob Loading Is Better
+
+When a large PDF (for example, 1 GB) is loaded directly via `documentPath` (URL):
+
+- The browser must **download the full document first**
+- Only after the full download completes, the viewer starts parsing and rendering
+- This causes delay for large files
+
+But when the PDF is fetched as a **Blob**:
+
+- The file is downloaded first in an optimized stream
+- A Blob URL is created and passed to the viewer
+- The viewer can begin rendering faster
+- Improves load time, memory usage, and overall responsiveness
+
+#### Example: Load a PDF as Blob
+```js
+fetch('https://your-api/large-file.pdf')
+ .then(response => response.blob())
+ .then(blob => {
+ const blobUrl = URL.createObjectURL(blob);
+ viewer.load(blobUrl, null);
+ })
+ .catch(error => console.error('Error loading PDF:', error));
+```
+
+Blob loading is highly recommended for all PDFs above **200 MB**, especially when working with 500 MB – 1 GB files.
+
+### 2. Viewer Performance Range
+
+The Syncfusion PDF Viewer is optimized to handle:
+
+- **Up to 1 GB** → very smooth
+- **Up to ~2 GB**
+
+This suits enterprise workflows involving large engineering drawings, client records, scanned books, and multi‑page financial reports.
+
+### 3. Minimize Injected Modules
+
+The PDF Viewer internally uses background workers for text processing, thumbnail generation, image rendering, and metadata extraction. Disabling modules that are not needed helps reduce background activity and improves performance.
+
+#### 3.1 Text Search & Text Selection
+
+Modules:
+- [`Text Search`](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/text-search)
+- [`Text Selection`](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/text-selection)
+
+These features require **continuous background text extraction and indexing**.
+
+For large PDFs:
+
+- Text extraction runs longer
+- Consumes additional CPU and memory
+- Increases initial load time
+
+If these features are not required in your application:
+
+- Disable them to reduce background tasks
+- Improve page rendering speed
+- Provide a smoother experience for large documents
+
+#### 3.2 Thumbnail View & Organize Pages
+
+Modules:
+- [`Organize Pages`](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/organize-pages/overview)
+- [`Thumbnail View`](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/interactive-pdf-navigation/page-thumbnail)
+
+These rely on **background thumbnail rendering**, where the viewer renders small preview images of every page.
+For PDFs with hundreds or thousands of pages, this becomes heavy.
+
+If thumbnails or page reordering are not essential:
+
+- Disable these modules
+- Prevent background thumbnail rendering
+- Reduce memory usage
+- Improve navigation responsiveness
+
+#### Example (remove unnecessary modules)
+```js
+
+```
+
+### 4. Enable Local Storage for Large PDFs With Many Form Fields or Annotations
+
+PDFs with a high number of:
+
+- Form fields (textbox, dropdown, signatures, etc.)
+- Annotations (highlight, shapes, comments)
+
+require more storage for:
+
+- Field values
+- Annotation metadata
+- Interaction states
+- Undo/redo data
+
+Enabling local storage in the PDF Viewer can improve performance and smoothness when working with large files. This allows the viewer to cache document data locally, reducing repeated network requests and memory spikes.
+
+Use the [`enableLocalStorage`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#enablelocalstorage) property to control this behavior. When set to `true`, session data is stored in memory for the current session; when `false` (default), browser session storage is used.
+
+**How the viewer stores this data by default**
+
+By default, the viewer uses **sessionStorage** to store interactive session data. For heavy PDFs with many form fields/annotations, sessionStorage can get filled more quickly and may cause slower interactions or instability when navigating across many pages.
+
+**Why enabling localStorage helps**
+
+- Provides more storage capacity than session storage
+- Avoids storage overflow for annotation‑heavy PDFs
+- Improves saving/loading of form values
+- Enhances stability when navigating large documents
+- Reduces repeated processing for form/annotation‑heavy pages
+
+#### Enable Local Storage
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+This is highly recommended when working with legal documents, tax forms, interactive applications, or PDFs containing thousands of annotations.
+
+### 5. Reduce Unnecessary Background System Processes
+
+For the best large‑PDF experience:
+
+- Close unused applications
+- Avoid multiple heavy tasks running in parallel
+- Minimize other browser tabs
+- Avoid opening multiple large PDFs simultaneously
+
+This ensures the viewer receives enough system resources.
+
+## See Also
+
+- [Load PDF (GitHub Sample)](https://github.com/SyncfusionExamples/react-pdf-viewer-examples/tree/master/Save%20and%20Load)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/document-handling/load-password-pdf.md b/Document-Processing/PDF/PDF-Viewer/react/document-handling/load-password-pdf.md
new file mode 100644
index 0000000000..67586ad109
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/document-handling/load-password-pdf.md
@@ -0,0 +1,83 @@
+---
+layout: post
+title: Load Password Protected PDFs in React PDF Viewer | Syncfusion
+description: Learn how to open password-protected PDF files in the Syncfusion React PDF Viewer by providing the password in the documentPath object.
+control: PDF Viewer
+platform: document-processing
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Load a Password-Protected PDF
+
+This article explains how to open password-protected PDF files in the Syncfusion React PDF Viewer. The viewer supports both user‑interactive loading (Open File dialog) and programmatic loading using APIs.
+
+## 1. Opening a Password-Protected PDF Using the **Open File** Dialog
+
+When the user selects a password-protected PDF using the built‑in **Open File** option:
+
+- The viewer detects that the document is encrypted
+
+
+
+- A **password input popup** is automatically displayed
+
+
+
+- The user enters the password
+
+- The document is decrypted and loaded
+
+No additional configuration or code is required.
+
+This approach works for all password-protected PDFs opened locally by the user.
+
+## 2. Opening a Password-Protected PDF Programmatically
+
+If you load a password-protected PDF from a URL or through custom logic, the viewer provides two behaviors depending on how the file is loaded.
+
+### 2.1 Load the Document Using `viewer.load(url, password)`
+
+You can directly pass the password in the [`load`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#load) method:
+
+```js
+viewer.load(
+ 'https://your-api/password-protected.pdf',
+ 'Password'
+);
+```
+
+- If the password is correct → the PDF loads immediately
+- If the password is incorrect → the viewer displays the incorrect password popup
+- If no password is provided → the password popup is shown automatically
+
+This is useful when the password is known beforehand.
+
+### 2.2 Loading a Password-Protected Document's URL Using `documentPath`
+
+If the [`documentPath`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#documentpath) points to a password-protected PDF:
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+The viewer will:
+
+- Detect encryption
+- Show the **password popup automatically**
+- Allow the user to enter the correct password
+- Then load the PDF
+
+
+
+N> No password should be passed inside `documentPath`.
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/document-handling/preprocess-pdf.md b/Document-Processing/PDF/PDF-Viewer/react/document-handling/preprocess-pdf.md
new file mode 100644
index 0000000000..913babcf99
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/document-handling/preprocess-pdf.md
@@ -0,0 +1,254 @@
+---
+layout: post
+title: Preprocess PDF Document in React PDF Viewer | Syncfusion
+description: Learn how to preprocess PDF documents using Syncfusion PDF Library before displaying them in the React PDF Viewer.
+control: PDF Viewer
+platform: document-processing
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Pre-process PDF Document Before Displaying in React PDF Viewer
+
+This section explains why preprocessing is useful, what operations you can perform using the Syncfusion PDF Library, and how to load the processed document in the React PDF Viewer.
+
+## Why Preprocessing Is Needed
+Preprocessing a PDF before sending it to the viewer helps you:
+- Reduce file size and improve load time
+- Merge multiple documents into one
+- Extract only required pages for faster loading
+- Flatten form fields and annotations for performance & security
+- Apply branding elements such as watermarks or stamps
+
+These enhancements ensure a better, faster, and more controlled viewing experience.
+
+## Merge PDF Documents
+### UI-Level Merging
+You can visually merge pages in the **Organize Pages** UI inside the PDF Viewer. Users can import another PDF, insert its pages into the current file, reorder pages, or delete unwanted pages.
+
+
+
+### Programmatically Merge PDFs
+Using the Syncfusion PDF Library, you can merge documents before loading them into the viewer.
+```js
+import { PdfDocument } from '@syncfusion/ej2-pdf';
+
+const document1 = await PdfDocument.load('file1.pdf');
+const document2 = await PdfDocument.load('file2.pdf');
+
+document1.merge(document2);
+const mergedBytes = await document1.save();
+```
+You can then load the merged PDF into the viewer using Blob or Base64.
+
+## Extract Pages
+### UI-Level Extraction
+Using the Viewer’s [**Organize Pages**](../organize-pages/overview) window, users can select and extract required pages and download them separately.
+
+
+
+### Programmatically Extract Pages
+```js
+import { PdfDocument } from '@syncfusion/ej2-pdf';
+
+const original = await PdfDocument.load('sample.pdf');
+const extracted = original.extractPages([2,3,4]);
+const resultBytes = await extracted.save();
+```
+This reduces file size and improves performance when loading large documents.
+
+## Flatten Form Fields & Annotations
+### Why Flattening Helps
+- Prevents users from editing form fields
+- Improves rendering speed
+- Ensures consistent appearance across all devices
+
+### Programmatic Flattening
+```js
+import { PdfDocument } from '@syncfusion/ej2-pdf';
+
+const doc = await PdfDocument.load('form.pdf');
+doc.formFields.flattenAllFields();
+doc.annotations.flattenAllAnnotations();
+const bytes = await doc.save();
+```
+
+### Flatten on Load
+
+Use the following code-snippet, when you want uploaded PDFs to be flattened before they are loaded into the viewer.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import { createRoot } from 'react-dom/client';
+import './index.css';
+import * as React from 'react';
+import {
+ PdfViewerComponent,
+ Toolbar,
+ Annotation,
+ FormFields,
+ Inject,
+ Magnification,
+} from '@syncfusion/ej2-react-pdfviewer';
+import { PdfDocument, _encode } from '@syncfusion/ej2-pdf';
+import { UploaderComponent } from '@syncfusion/ej2-react-inputs';
+function Default() {
+ let viewer;
+ const openFile = {
+ prefixIcon: 'e-icons e-folder',
+ id: 'openPdf',
+ tooltipText: 'Open File',
+ align: 'left',
+ };
+ const extensions = '.pdf';
+ const toolbarSettings = {
+ showTooltip: true,
+ toolbarItems: [
+ openFile,
+ 'PageNavigationTool',
+ 'MagnificationTool',
+ 'PanTool',
+ 'SelectionTool',
+ 'SearchOption',
+ 'PrintOption',
+ 'UndoRedoTool',
+ 'AnnotationEditTool',
+ 'FormDesignerEditTool',
+ 'CommentTool',
+ 'SubmitForm',
+ 'DownloadOption',
+ ],
+ };
+
+ function toolbarClick(args) {
+ if (args.item && args.item.id === 'openPdf') {
+ document
+ .getElementsByClassName('e-file-select-wrap')[0]
+ .querySelector('button')
+ .click();
+ }
+ }
+ function onSelect(args) {
+ let validFiles = args.filesData;
+ if (validFiles.length === 0) {
+ args.cancel = true;
+ return;
+ }
+ if (!extensions.includes(validFiles[0].type)) {
+ args.cancel = true;
+ return;
+ }
+
+ let file = validFiles[0].rawFile;
+ let reader = new FileReader();
+
+ reader.addEventListener('load', () => {
+ let base64Data = reader.result;
+ let pdf = base64Data.split(',')[1];
+ const document = new PdfDocument(pdf);
+
+ //flatten the annotation and form fields
+ document.flatten = true;
+
+ var flattened = document.save();
+ //laod the flattened PDF in PDF Viewer
+ viewer.load(flattened, null);
+ });
+
+ reader.readAsDataURL(file);
+ }
+ return (
+
+ );
+}
+export default Default;
+
+const root = createRoot(document.getElementById('sample'));
+root.render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+N> Refer to the [Flatten on Download](../annotation/flatten-annotation#how-to-flatten-annotations) section for more information about flattening documents on download.
+
+## Add Watermark or Stamp
+### UI-Level Stamps
+The PDF Viewer toolbar allows users to:
+- Add [standard stamps](../annotation/stamp-annotation#add-stamp-annotations-to-the-pdf-document) (Approved, Draft, etc.)
+- Insert [custom image stamps](../annotation/stamp-annotation#add-a-custom-stamp)
+
+
+
+### Programmatically Add a Watermark
+```js
+import { PdfDocument, PdfGraphics, PdfBrushes } from '@syncfusion/ej2-pdf';
+
+const doc = await PdfDocument.load('input.pdf');
+const page = doc.getPage(0);
+const g = page.graphics;
+
+g.drawString('CONFIDENTIAL', {
+ x: 150,
+ y: 300,
+ fontSize: 48,
+ brush: PdfBrushes.gray,
+ opacity: 0.3,
+ rotateAngle: 45
+});
+
+const outputBytes = await doc.save();
+```
+
+## How-To Guide: Load the Preprocessed PDF in the Viewer
+You can load the processed PDF using **Blob**, **Base64**, or a **URL**.
+
+### Load Using Blob (Recommended)
+```js
+fetch('/api/processed-pdf')
+ .then(res => res.blob())
+ .then(blob => {
+ const url = URL.createObjectURL(blob);
+ viewer.load(url);
+ });
+```
+Best for large or dynamically processed PDFs.
+
+### Load Using Base64
+```js
+viewer.load('data:application/pdf;base64,BASE64_STRING');
+```
+Use for small files.
+
+### Load Using URL
+```js
+viewer.load('https://yourdomain.com/files/doc.pdf');
+```
+Ideal for stored/static files.
diff --git a/Document-Processing/PDF/PDF-Viewer/react/document-handling/retrieve-loadedDoc.md b/Document-Processing/PDF/PDF-Viewer/react/document-handling/retrieve-loadedDoc.md
new file mode 100644
index 0000000000..e6f8bf89e5
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/document-handling/retrieve-loadedDoc.md
@@ -0,0 +1,265 @@
+---
+layout: post
+title: Retrieve the Loaded Document in React PDF Viewer | syncfusion
+description: Learn how to access the loaded PDF document instance in the React PDF Viewer using refs and the documentLoad event.
+platform: document-processing
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Retrieve the Loaded Document Instance in React PDF Viewer
+
+This page explains how to access the React PDF Viewer instance using a React ref, listen for the [`documentLoad`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#documentload) life-cycle event, and retrieve document information, page details, and metadata—so you can safely invoke viewer APIs after the PDF is loaded.
+
+## Explanation: Why access the loaded document instance?
+
+- The viewer instance (via **React ref**) gives you a stable handle to call APIs such as [`zoom`](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/magnification), [`print`](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/print), [`download`](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/download), and [`navigation`](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/navigation).
+- The **document load event** (fires after the PDF is parsed and pages are ready) is the correct moment to read **document information** (title, author, page count, etc.) and **page metrics**, and to trigger post‑load UI logic.
+- Accessing the instance too early (before load completes) may cause null/undefined errors or incomplete information.
+
+## Reference: What you can access/call after load
+
+After the PDF is loaded you can:
+
+- **Read document information**: title, author, subject, keywords (metadata), page count.
+- **Read page details**: total pages, current page, page size(s).
+- **Call Viewer APIs** (typical examples):
+ - **Zoom / Fit**: `zoomTo(125)`; fit to page/width
+ - **Navigation**: go to a specific page
+ - **Interactions**: enable/disable features (based on injected services)
+ - **Export**: `download()`, `print()`
+
+> Always invoke these after the `documentLoad` event fires, or from user actions that occur after load. Guard calls with optional chaining or readiness flags.
+
+## How‑to: Get the instance with a ref and read details on load
+
+Below is a focused snippet showing:
+1) Creating a **ref** for the viewer,
+2) Wiring the **`documentLoad`** event, and
+3) Reading basic **document info** and **page count**, then calling **viewer APIs** safely.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as ReactDOM from 'react-dom/client';
+import * as React from 'react';
+import {
+ PdfViewerComponent,
+ Toolbar,
+ Magnification,
+ Navigation,
+ Print,
+ Inject,
+} from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ const viewerRef = React.useRef(null);
+
+ // Fires after the PDF is fully loaded and ready
+ const onDocumentLoad = (args) => {
+ // 1) Access the component instance
+ const viewer = viewerRef.current;
+ if (!viewer) return;
+
+ // 2) Read loaded document details (shape depends on event payload/version)
+ console.log('documentLoad args:', args);
+
+ // 4) Call viewer APIs (after load)
+ const pageCount =
+ (viewer && viewer.pageCount) ||
+ (args && args.pageCount) ||
+ '(unknown)';
+ const documentName = (args && args.documentName) || '(unnamed)';
+ console.log(`Loaded: ${documentName}, pages: ${pageCount}`);
+
+ // Safe API calls after load
+ viewer.magnification.zoomTo(200);
+ viewer.navigation.goToPage(5);
+ };
+
+ return (
+
+
+
+
+
+ );
+}
+
+const root = ReactDOM.createRoot(document.getElementById('sample'));
+root.render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+**Notes**
+- The event name is `documentLoad` (the callback receives load args).
+- The exact event args and public methods available on the component may vary with the package version and injected services. Use `console.log(args)` once to see what’s present in your build.
+- Always guard calls with optional chaining (e.g., `viewer?.magnification?.zoomTo(125)`).
+
+## Tutorial: End‑to‑End — Read metadata & call APIs after load
+
+This example demonstrates a complete flow:
+- Setting up a **viewer ref**
+- Subscribing to `documentLoad`
+- Extracting **metadata** and **pages**
+- Exposing **buttons** to call viewer APIs only after load
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import * as React from 'react';
+import * as ReactDOM from 'react-dom/client';
+import {
+ PdfViewerComponent,
+ Inject,
+ Toolbar,
+ Magnification,
+ Navigation,
+ Print,
+ TextSelection,
+ TextSearch,
+} from '@syncfusion/ej2-react-pdfviewer';
+
+function App() {
+ const viewerRef = React.useRef(null);
+ const [ready, setReady] = React.useState(false);
+ const [docInfo, setDocInfo] = React.useState({ name: '', pageCount: undefined, author: '', title: '' });
+
+ const handleDocumentLoad = (args) => {
+ const viewer = viewerRef.current;
+ if (!viewer) return;
+
+ console.log('documentLoad args:', args);
+
+ const info = {
+ name: args && args.documentName,
+ pageCount: (viewer && viewer.pageCount) || (args && args.pageCount),
+ author: args && args.documentInformation && args.documentInformation.author,
+ title: args && args.documentInformation && args.documentInformation.title,
+ };
+ setDocInfo(info);
+
+ // Defer just a tick to ensure layout/modules ready before calling APIs
+ requestAnimationFrame(() => {
+ try {
+ if (viewer && viewer.magnification && viewer.magnification.zoomTo) {
+ viewer.magnification.zoomTo(150); // default zoom after load
+ }
+ if (viewer && viewer.navigation && viewer.navigation.goToPage) {
+ const targetPage = 1; // keep within bounds if you want to guard
+ if (!info.pageCount || targetPage <= info.pageCount) {
+ viewer.navigation.goToPage(targetPage);
+ }
+ }
+ } catch (e) {
+ console.warn('Post-load actions failed:', e);
+ } finally {
+ setReady(true);
+ }
+ });
+ };
+
+ // ---- UI action handlers (module APIs) ----
+ const zoomTo = (percent) => {
+ const viewer = viewerRef.current;
+ try {
+ viewer && viewer.magnification && viewer.magnification.zoomTo && viewer.magnification.zoomTo(percent);
+ } catch (e) {
+ console.warn('zoomTo failed:', e);
+ }
+ };
+
+ const goTo = (page) => {
+ const viewer = viewerRef.current;
+ try {
+ viewer && viewer.navigation && viewer.navigation.goToPage && viewer.navigation.goToPage(page);
+ } catch (e) {
+ console.warn('goToPage failed:', e);
+ }
+ };
+
+ const printDoc = () => {
+ const viewer = viewerRef.current;
+ try {
+ viewer && viewer.print && viewer.print.print();
+ } catch (e) {
+ console.warn('print failed:', e);
+ }
+ };
+
+ const downloadDoc = () => {
+ const viewer = viewerRef.current;
+ try {
+ viewer && viewer.download && viewer.download();
+ } catch (e) {
+ console.warn('download failed:', e);
+ }
+ };
+
+ return (
+
+ );
+}
+
+// Render like your previous example (ensure an element with id="sample" exists in index.html)
+const root = ReactDOM.createRoot(document.getElementById('sample'));
+root.render();
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## See also
+- React PDF Viewer – [API Reference](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default) ([methods](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#methods), [events](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#events), [properties](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#properties))
+- Events: [`documentLoad`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#documentload) and related argument shape (check your package version)
+- [Modules and Services](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/feature-module) (e.g., Magnification, Navigation, Print) — ensure the features you call are injected
diff --git a/Document-Processing/PDF/PDF-Viewer/react/download.md b/Document-Processing/PDF/PDF-Viewer/react/download.md
index aee7e65e2c..40012f9f2d 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/download.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/download.md
@@ -1,19 +1,31 @@
---
layout: post
-title: Download in React Pdfviewer component | Syncfusion
+title: Download edited PDF in React PDF Viewer | Syncfusion
description: Learn here all about Download in Syncfusion React Pdfviewer component of Syncfusion Essential JS 2 and more.
control: PDF Viewer
platform: document-processing
documentation: ug
domainurl: ##DomainURL##
---
-# Download in React PDF Viewer control
-The PDF Viewer supports downloading the loaded PDF file. You can enable/disable the download using the following code snippet.
+# Download edited PDF in React PDF Viewer
-
+The React PDF Viewer allows users to download the currently loaded PDF, including any annotations, form‑field edits, ink drawings, comments, or page reorganizations. Downloading produces a local PDF file containing all applied changes. This guide shows ways to download a PDF displayed in the PDF Viewer: using the built-in toolbar, and programmatically after editing.
-You can invoke download action using following code snippet.,
+## Download the PDF Using the Toolbar
+
+The viewer's toolbar can include a download button when the [`Toolbar`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbar) service is injected. When enabled, users can click the toolbar download icon to save the currently loaded PDF.
+
+**Notes:**
+
+- Ensure [`Toolbar`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbar) is included in the `Inject` services for [`PdfViewerComponent`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer) and `DownloadOption` is included in [`toolbarItems`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbarsettingsmodel#toolbaritems).
+- See the [toolbar items documentation](./toolbar-customization/primary-toolbar#3-show-or-hide-primary-toolbar-items) for customizing or hiding the default download icon.
+
+
+
+## Download an Edited PDF Programmatically
+
+You can invoke the viewer's [`download()`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#download) method to trigger a download programmatically. The examples below show a standalone setup and a server-backed setup to trigger download action.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
@@ -92,7 +104,75 @@ root.render();
{% endhighlight %}
{% endtabs %}
+## Download a PDF with Flattened Annotations
+
+You can intercept the viewer's [`downloadStart`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#downloadstart) event, cancel the default download, obtain the document as a `Blob` via [`saveAsBlob()`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#saveasblob), and flatten annotations before saving the resulting PDF.
+
+{% tabs %}
+{% highlight ts tabtitle="App.tsx" %}
+{% raw %}
+import {
+ PdfViewerComponent, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
+ ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner,
+ PageOrganizer, Inject, Print, DownloadStartEventArgs
+} from '@syncfusion/ej2-react-pdfviewer';
+import { PdfDocument } from '@syncfusion/ej2-pdf';
+import { RefObject, useRef } from 'react';
+
+export default function App() {
+ const viewerRef: RefObject = useRef(null);
+
+ const blobToBase64 = async (blob: Blob): Promise => {
+ return new Promise((resolve, reject) => {
+ const reader = new FileReader();
+ reader.onerror = () => reject(reader.error);
+ reader.onload = () => {
+ const dataUrl: string = reader.result as string;
+ const data: string = dataUrl.split(',')[1];
+ resolve(data);
+ };
+ reader.readAsDataURL(blob);
+ });
+ }
+
+ const flattenPDF = (data: string) => {
+ let document: PdfDocument = new PdfDocument(data);
+ document.flatten = true
+ document.save(`${viewerRef.current.fileName}.pdf`);
+ document.destroy();
+ }
+
+ const handleFlattening = async () => {
+ const blob: Blob = await viewerRef.current.saveAsBlob();
+ const data: string = await blobToBase64(blob);
+ flattenPDF(data);
+ }
+
+ const onDownloadStart = async (args: DownloadStartEventArgs) => {
+ args.cancel = true;
+ handleFlattening();
+ };
+
+ return (
+
+
+
+
+
+ );
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
## See also
-* [Toolbar items](./toolbar)
-* [Feature Modules](./feature-module)
\ No newline at end of file
+- [Toolbar items](./toolbar)
+- [Feature Modules](./feature-module)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/events.md b/Document-Processing/PDF/PDF-Viewer/react/events.md
index a50101a043..9c29ec9233 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/events.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/events.md
@@ -10,7 +10,7 @@ domainurl: ##DomainURL##
# Events in React PDF Viewer
-The PDF Viewer component triggers events for creation, page navigation, document life cycle, context menu interactions, comments, bookmarks, download and export, hyperlinks, annotation import/export, custom keyboard commands, printing, signatures, text search, and text selection. Use these events to integrate custom logic into application workflows.
+The PDF Viewer component triggers events for component creation, page navigation, document lifecycle, context menu interactions, comments, bookmarks, download/export, hyperlinks, annotation import/export, custom keyboard commands, printing, signatures, text search, and text selection. These events enable integration of custom logic into application workflows.
The following table lists commonly used events supported by the PDF Viewer component:
@@ -70,14 +70,14 @@ Note: For annotation and signature events, see the dedicated Annotations Events
## bookmarkClick
-The [bookmarkClick](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#bookmarkclickevent) event triggers when a bookmark item is clicked in the bookmark panel.
+The [bookmarkClick](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#bookmarkclickevent) event triggers when a bookmark item is clicked in the bookmark panel.
-- Event arguments: [BookmarkClickEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/bookmarkClickEventArgs/).
+- Event arguments: [BookmarkClickEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/bookmarkClickEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -108,14 +108,14 @@ root.render();
## toolbarClick
-The [toolbarClick](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#toolbarclickevent) event triggers when a toolbar item is clicked. Use it to handle actions based on the clicked item's id or name.
+The [toolbarClick](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#toolbarclickevent) event triggers when a toolbar item is clicked. Use it to handle actions based on the clicked item's id or name.
- Event arguments: `ClickEventArgs`.
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -146,9 +146,9 @@ root.render();
## validateFormFields
-The [validateFormFields](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#validateformfieldsevent) event triggers when form field validation fails, typically before a download or submit action proceeds. Use this event to inspect which required fields are empty and show custom messages or block application logic if needed.
+The [validateFormFields](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#validateformfieldsevent) event triggers when form field validation fails, typically before a download or submit action proceeds. Use this event to inspect which required fields are empty and show custom messages or block application logic if needed.
-- Event arguments: [ValidateFormFieldsArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/validateFormFieldsArgs/)
+- Event arguments: [ValidateFormFieldsArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/validateFormFieldsArgs)
- name: Event name
- documentName: Current document name
- formField: The last interacted field’s data (if applicable)
@@ -161,7 +161,7 @@ When it triggers
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
@@ -200,14 +200,14 @@ Tip
## zoomChange
-The [zoomChange](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#zoomchangeevent) event triggers when the magnification value changes.
+The [zoomChange](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#zoomchangeevent) event triggers when the magnification value changes.
-- Event arguments: [ZoomChangeEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/zoomChangeEventArgs/).
+- Event arguments: [ZoomChangeEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/zoomChangeEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
@@ -239,14 +239,14 @@ root.render();
## buttonFieldClick
-The [buttonFieldClick](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#buttonfieldclickevent) event triggers when a button form field is clicked.
+The [buttonFieldClick](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#buttonfieldclickevent) event triggers when a button form field is clicked.
-- Event arguments: [ButtonFieldClickEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/buttonFieldClickEventArgs/).
+- Event arguments: [ButtonFieldClickEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/buttonFieldClickEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
@@ -277,14 +277,14 @@ root.render();
## commentAdd
-The [commentAdd](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#commentaddevent) event triggers when a comment is added in the comment panel.
+The [commentAdd](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#commentaddevent) event triggers when a comment is added in the comment panel.
-- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/commentEventArgs/).
+- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/commentEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
@@ -315,14 +315,14 @@ root.render();
## commentDelete
-The [commentDelete](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#commentdeleteevent) event triggers when a comment is deleted in the comment panel.
+The [commentDelete](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#commentdeleteevent) event triggers when a comment is deleted in the comment panel.
-- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/commentEventArgs/).
+- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/commentEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -352,14 +352,14 @@ root.render();
## commentEdit
-The [commentEdit](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#commenteditevent) event triggers when a comment is edited in the comment panel.
+The [commentEdit](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#commenteditevent) event triggers when a comment is edited in the comment panel.
-- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/commentEventArgs/).
+- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/commentEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
@@ -390,14 +390,14 @@ root.render();
## commentSelect
-The [commentSelect](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#commentselectevent) event triggers when a comment is selected in the comment panel.
+The [commentSelect](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#commentselectevent) event triggers when a comment is selected in the comment panel.
-- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/commentEventArgs/).
+- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/commentEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
@@ -428,14 +428,14 @@ root.render();
## commentStatusChanged
-The [commentStatusChanged](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#commentstatuschangedevent) event triggers when a comment status is changed in the comment panel.
+The [commentStatusChanged](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#commentstatuschangedevent) event triggers when a comment status is changed in the comment panel.
-- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/commentEventArgs/).
+- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/commentEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -466,14 +466,14 @@ root.render();
## created
-The [created](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#createdevent) event is triggered during the creation of the PDF Viewer component.
+The [created](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#createdevent) event is triggered during the creation of the PDF Viewer component.
- Event arguments: `void`.
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -504,16 +504,16 @@ root.render();
## customContextMenuBeforeOpen
-The [customContextMenuBeforeOpen](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#customcontextmenubeforeopenevent) event fires just before the context menu is shown. Use it to show or hide items based on the current state (for example, only show search items when text is selected).
+The [customContextMenuBeforeOpen](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#customcontextmenubeforeopenevent) event fires just before the context menu is shown. Use it to show or hide items based on the current state (for example, only show search items when text is selected).
-- Event arguments: [CustomContextMenuBeforeOpenEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/customContextMenuBeforeOpenEventArgs/)
+- Event arguments: [CustomContextMenuBeforeOpenEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/customContextMenuBeforeOpenEventArgs)
- name: Event name
- ids: Array of menu item ids that will be shown; remove ids to hide items for this open
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -562,9 +562,9 @@ root.render();
## customContextMenuSelect
-The [customContextMenuSelect](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#customcontextmenuselectevent) event fires when a custom menu item is clicked. Use it to branch logic by the clicked item's id.
+The [customContextMenuSelect](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#customcontextmenuselectevent) event fires when a custom menu item is clicked. Use it to branch logic by the clicked item's id.
-- Event arguments: [CustomContextMenuSelectEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/customContextMenuSelectEventArgs/).
+- Event arguments: [CustomContextMenuSelectEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/customContextMenuSelectEventArgs).
- name: Event name
- id: The id of the clicked menu item
@@ -572,7 +572,7 @@ The [customContextMenuSelect](https://ej2.syncfusion.com/react/documentation/api
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -621,14 +621,14 @@ root.render();
## documentLoad
-The [documentLoad](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#documentloadevent) event occurs after a document is successfully loaded and parsed.
+The [documentLoad](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#documentloadevent) event occurs after a document is successfully loaded and parsed.
-- Event arguments: [LoadEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/loadEventArgs/).
+- Event arguments: [LoadEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/loadEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -659,14 +659,14 @@ root.render();
## documentLoadFailed
-The [documentLoadFailed](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#documentloadfailedevent) event triggers when loading a document fails.
+The [documentLoadFailed](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#documentloadfailedevent) event triggers when loading a document fails.
-- Event arguments: [LoadFailedEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/loadFailedEventArgs/).
+- Event arguments: [LoadFailedEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/loadFailedEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -696,14 +696,14 @@ root.render();
## documentUnload
-The [documentUnload](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#documentunloadevent) event triggers when closing the current document.
+The [documentUnload](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#documentunloadevent) event triggers when closing the current document.
-- Event arguments: [UnloadEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/unloadEventArgs/).
+- Event arguments: [UnloadEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/unloadEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -734,14 +734,14 @@ root.render();
## downloadEnd
-The [downloadEnd](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#downloadendevent) event triggers after a document download completes.
+The [downloadEnd](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#downloadendevent) event triggers after a document download completes.
-- Event arguments: [DownloadEndEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/downloadEndEventArgs/).
+- Event arguments: [DownloadEndEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/downloadEndEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -772,14 +772,14 @@ root.render();
## downloadStart
-The [downloadStart](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#downloadstartevent) event triggers when the download operation is initiated.
+The [downloadStart](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#downloadstartevent) event triggers when the download operation is initiated.
-- Event arguments: [DownloadStartEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/downloadStartEventArgs/).
+- Event arguments: [DownloadStartEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/downloadStartEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -810,14 +810,14 @@ root.render();
## exportFailed
-The [exportFailed](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#exportfailedevent) event triggers when exporting annotations fails.
+The [exportFailed](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#exportfailedevent) event triggers when exporting annotations fails.
-- Event arguments: [ExportFailureEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/exportFailureEventArgs/).
+- Event arguments: [ExportFailureEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/exportFailureEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
@@ -849,14 +849,14 @@ root.render();
## exportStart
-The [exportStart](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#exportstartevent) event triggers when exporting annotations starts.
+The [exportStart](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#exportstartevent) event triggers when exporting annotations starts.
-- Event arguments: [ExportStartEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/exportStartEventArgs/).
+- Event arguments: [ExportStartEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/exportStartEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -887,14 +887,14 @@ root.render();
## exportSuccess
-The [exportSuccess](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#exportsuccessevent) event triggers when annotations are exported successfully.
+The [exportSuccess](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#exportsuccessevent) event triggers when annotations are exported successfully.
-- Event arguments: [ExportSuccessEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/exportSuccessEventArgs/).
+- Event arguments: [ExportSuccessEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/exportSuccessEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -925,14 +925,14 @@ root.render();
## extractTextCompleted
-The [extractTextCompleted](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#extracttextcompletedevent) event triggers when text extraction completes.
+The [extractTextCompleted](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#extracttextcompletedevent) event triggers when text extraction completes.
-- Event arguments: [ExtractTextCompletedEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/extractTextCompletedEventArgs/).
+- Event arguments: [ExtractTextCompletedEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/extractTextCompletedEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -963,14 +963,14 @@ root.render();
## hyperlinkClick
-The [hyperlinkClick](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#hyperlinkclickevent) event triggers when a hyperlink is clicked.
+The [hyperlinkClick](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#hyperlinkclickevent) event triggers when a hyperlink is clicked.
-- Event arguments: [HyperlinkClickEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/hyperlinkClickEventArgs/).
+- Event arguments: [HyperlinkClickEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/hyperlinkClickEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -1001,14 +1001,14 @@ root.render();
## hyperlinkMouseOver
-The [hyperlinkMouseOver](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#hyperlinkmouseoverevent) event triggers when hovering over a hyperlink.
+The [hyperlinkMouseOver](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#hyperlinkmouseoverevent) event triggers when hovering over a hyperlink.
- Event arguments: HyperlinkMouseOverArgs.
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
@@ -1040,14 +1040,14 @@ root.render();
## importFailed
-The [importFailed](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#importfailedevent) event triggers when importing annotations fails.
+The [importFailed](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#importfailedevent) event triggers when importing annotations fails.
-- Event arguments: [ImportFailureEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/importFailureEventArgs/).
+- Event arguments: [ImportFailureEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/importFailureEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
@@ -1079,14 +1079,14 @@ root.render();
## importStart
-The [importStart](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#importstartevent) event triggers when importing annotations starts.
+The [importStart](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#importstartevent) event triggers when importing annotations starts.
-- Event arguments: [ImportStartEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/importStartEventArgs/).
+- Event arguments: [ImportStartEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/importStartEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -1117,14 +1117,14 @@ root.render();
## importSuccess
-The [importSuccess](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#importsuccessevent) event triggers when annotations are imported successfully.
+The [importSuccess](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#importsuccessevent) event triggers when annotations are imported successfully.
-- Event arguments: [ImportSuccessEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/importSuccessEventArgs/).
+- Event arguments: [ImportSuccessEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/importSuccessEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -1155,21 +1155,21 @@ root.render();
## keyboardCustomCommands
-The [keyboardCustomCommands](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#keyboardcustomcommandsevent) event triggers when customized keyboard command keys are pressed.
+The [keyboardCustomCommands](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#keyboardcustomcommandsevent) event triggers when customized keyboard command keys are pressed.
-- Event arguments: [KeyboardCustomCommandsEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/keyboardCustomCommandsEventArgs/).
+- Event arguments: [KeyboardCustomCommandsEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/keyboardCustomCommandsEventArgs).
- name: Event name
- keyboardCommand: The command metadata raised by Command Manager
When it triggers
-- After registering gestures in commandManager.keyboardCommand. For example, pressing Shift + Alt + G or Shift + Alt + H triggers the event. Use this to handle custom keyboard shortcuts.
+- After registering gestures in the `commandManager` (for example, via `commandManager.keyboardCommand`). For example, pressing Shift + Alt + G or Shift + Alt + H triggers the event. Use this event to handle custom keyboard shortcuts.
Refer to [Keyboard interaction](./accessibility#keyboard-interaction) for details about adding and handling custom shortcut keys.
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -1215,14 +1215,14 @@ root.render();
## moveSignature
-The [moveSignature](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#movesignatureevent) event triggers when a signature is moved across the page.
+The [moveSignature](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#movesignatureevent) event triggers when a signature is moved across the page.
- Event arguments: `MoveSignatureEventArgs`.
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -1253,14 +1253,14 @@ root.render();
## pageChange
-The [pageChange](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#pagechangeevent) event triggers when the current page number changes (for example, via scrolling or navigation controls).
+The [pageChange](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#pagechangeevent) event triggers when the current page number changes (for example, via scrolling or navigation controls).
-- Event arguments: [PageChangeEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/pageChangeEventArgs/).
+- Event arguments: [PageChangeEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/pageChangeEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -1291,14 +1291,14 @@ root.render();
## pageClick
-The [pageClick](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#pageclickevent) event triggers when a mouse click occurs on a page.
+The [pageClick](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#pageclickevent) event triggers when a mouse click occurs on a page.
-- Event arguments: [PageClickEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/pageClickEventArgs/).
+- Event arguments: [PageClickEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/pageClickEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -1329,14 +1329,14 @@ root.render();
## pageMouseover
-The [pageMouseover](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#pagemouseoverevent) event triggers when the mouse moves over a page.
+The [pageMouseover](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#pagemouseoverevent) event triggers when the mouse moves over a page.
- Event arguments: `PageMouseoverEventArgs`.
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -1367,14 +1367,14 @@ root.render();
## pageOrganizerSaveAs
-The [pageOrganizerSaveAs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#pageorganizersaveasevent) event triggers when a Save As action is performed in the page organizer.
+The [pageOrganizerSaveAs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#pageorganizersaveasevent) event triggers when a Save As action is performed in the page organizer.
- Event arguments: `PageOrganizerSaveAsEventArgs`.
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -1405,14 +1405,14 @@ root.render();
## pageRenderComplete
-The [pageRenderComplete](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#pagerendercompleteevent) event triggers after a page finishes rendering.
+The [pageRenderComplete](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#pagerendercompleteevent) event triggers after a page finishes rendering.
-- Event arguments: [PageRenderCompleteEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/pageRenderCompleteEventArgs/).
+- Event arguments: [PageRenderCompleteEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/pageRenderCompleteEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -1443,14 +1443,14 @@ root.render();
## pageRenderInitiate
-The [pageRenderInitiate](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#pagerenderinitiateevent) event triggers when page rendering begins.
+The [pageRenderInitiate](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#pagerenderinitiateevent) event triggers when page rendering begins.
-- Event arguments: [PageRenderInitiateEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/pageRenderInitiateEventArgs/).
+- Event arguments: [PageRenderInitiateEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/pageRenderInitiateEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -1481,14 +1481,14 @@ root.render();
## printEnd
-The [printEnd](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#printendevent) event triggers when a print action completes.
+The [printEnd](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#printendevent) event triggers when a print action completes.
-- Event arguments: [PrintEndEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/printEndEventArgs/).
+- Event arguments: [PrintEndEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/printEndEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -1519,14 +1519,14 @@ root.render();
## printStart
-The [printStart](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#printstartevent) event triggers when a print action is initiated.
+The [printStart](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#printstartevent) event triggers when a print action is initiated.
-- Event arguments: [PrintStartEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/printStartEventArgs/).
+- Event arguments: [PrintStartEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/printStartEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -1557,14 +1557,14 @@ root.render();
## removeSignature
-The [removeSignature](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#removesignatureevent) event triggers when a signature is removed.
+The [removeSignature](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#removesignatureevent) event triggers when a signature is removed.
-- Event arguments: [RemoveSignatureEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/removeSignatureEventArgs/).
+- Event arguments: [RemoveSignatureEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/removeSignatureEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -1595,14 +1595,14 @@ root.render();
## resizeSignature
-The [resizeSignature](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#resizesignatureevent) event triggers when a signature is resized.
+The [resizeSignature](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#resizesignatureevent) event triggers when a signature is resized.
-- Event arguments: [ResizeSignatureEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/resizeSignatureEventArgs/).
+- Event arguments: [ResizeSignatureEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/resizeSignatureEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -1633,14 +1633,14 @@ root.render();
## resourcesLoaded
-The [resourcesLoaded](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#resourcesloadedevent) event triggers after the viewer's required resources are loaded.
+The [resourcesLoaded](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#resourcesloadedevent) event triggers after the viewer's required resources are loaded.
- Event arguments: `void`.
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -1671,14 +1671,14 @@ root.render();
## signaturePropertiesChange
-The [signaturePropertiesChange](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#signaturepropertieschangeevent) event triggers when signature properties change.
+The [signaturePropertiesChange](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#signaturepropertieschangeevent) event triggers when signature properties change.
-- Event arguments: [SignaturePropertiesChangeEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/signaturePropertiesChangeEventArgs/).
+- Event arguments: [SignaturePropertiesChangeEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/signaturePropertiesChangeEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -1709,14 +1709,14 @@ root.render();
## signatureSelect
-The [signatureSelect](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#signatureselectevent) event triggers when a signature is selected.
+The [signatureSelect](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#signatureselectevent) event triggers when a signature is selected.
-- Event arguments: [SignatureSelectEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/signatureSelectEventArgs/).
+- Event arguments: [SignatureSelectEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/signatureSelectEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -1747,14 +1747,14 @@ root.render();
## signatureUnselect
-The [signatureUnselect](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#signatureunselectevent) event triggers when a signature is unselected.
+The [signatureUnselect](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#signatureunselectevent) event triggers when a signature is unselected.
-- Event arguments: [SignatureUnselectEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/signatureUnselectEventArgs/).
+- Event arguments: [SignatureUnselectEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/signatureUnselectEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -1785,14 +1785,14 @@ root.render();
## textSearchComplete
-The [textSearchComplete](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#textsearchcompleteevent) event triggers when a text search completes.
+The [textSearchComplete](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#textsearchcompleteevent) event triggers when a text search completes.
-- Event arguments: [TextSearchCompleteEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/textSearchCompleteEventArgs/).
+- Event arguments: [TextSearchCompleteEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/textSearchCompleteEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -1823,14 +1823,14 @@ root.render();
## textSearchHighlight
-The [textSearchHighlight](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#textsearchhighlightevent) event triggers when searched text is highlighted.
+The [textSearchHighlight](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#textsearchhighlightevent) event triggers when searched text is highlighted.
-- Event arguments: [TextSearchHighlightEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/textSearchHighlightEventArgs/).
+- Event arguments: [TextSearchHighlightEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/textSearchHighlightEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -1861,14 +1861,14 @@ root.render();
## textSearchStart
-The [textSearchStart](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#textsearchstartevent) event triggers when a text search is initiated.
+The [textSearchStart](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#textsearchstartevent) event triggers when a text search is initiated.
-- Event arguments: [TextSearchStartEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/textSearchStartEventArgs/).
+- Event arguments: [TextSearchStartEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/textSearchStartEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -1899,14 +1899,14 @@ root.render();
## textSelectionEnd
-The [textSelectionEnd](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#textselectionendevent) event triggers when text selection is complete.
+The [textSelectionEnd](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#textselectionendevent) event triggers when text selection is complete.
-- Event arguments: [TextSelectionEndEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/textSelectionEndEventArgs/).
+- Event arguments: [TextSelectionEndEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/textSelectionEndEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -1937,14 +1937,14 @@ root.render();
## textSelectionStart
-The [textSelectionStart](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#textselectionstartevent) event triggers when text selection is initiated.
+The [textSelectionStart](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#textselectionstartevent) event triggers when text selection is initiated.
- Event arguments: `TextSelectionStartEventArgs`.
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
@@ -1975,14 +1975,14 @@ root.render();
## thumbnailClick
-The [thumbnailClick](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#thumbnailclickevent) event triggers when a thumbnail is clicked.
+The [thumbnailClick](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#thumbnailclickevent) event triggers when a thumbnail is clicked.
-- Event arguments: [ThumbnailClickEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/thumbnailClickEventArgs/).
+- Event arguments: [ThumbnailClickEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/thumbnailClickEventArgs).
Example:
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
+{% highlight ts tabtitle="app.tsx" %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
diff --git a/Document-Processing/PDF/PDF-Viewer/react/feature-module.md b/Document-Processing/PDF/PDF-Viewer/react/feature-module.md
index e6f2a24069..db443f94ad 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/feature-module.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/feature-module.md
@@ -8,11 +8,9 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Feature module in React PDF Viewer Control
+# Feature modules in React PDF Viewer component
-The PDF Viewer features are segregated into individual feature-wise modules to enable selectively referencing in the application. The required modules should be injected to extend its functionality. The following are the selective modules of PDF Viewer that can be included as required:
-
-The available PDF Viewer modules are:
+The PDF Viewer features are organized into discrete modules so applications can include only the functionality they require. Inject the required modules to extend the viewer. The following modules are available:
* [**Toolbar**](./toolbar-customization/annotation-toolbar-customization): Built-in toolbar for user interaction.
* [**Magnification**](./magnification): Perform zoom operations for a better viewing experience.
@@ -27,7 +25,8 @@ The available PDF Viewer modules are:
* [**FormFields**](./form-designer/create-programmatically): Work with form fields in the document.
* [**FormDesigner**](./form-designer/create-programmatically): Add or edit form fields in the document.
->In addition to injecting the required modules in your application, enable corresponding properties to extend the functionality for a PDF Viewer instance.
+N> In addition to injecting required modules in an application, enable the corresponding properties to extend functionality for a PDF Viewer instance.
+
Refer to the following table.
| Module | Property to enable the functionality for a PDF Viewer instance |
diff --git a/Document-Processing/PDF/PDF-Viewer/react/form-filling.md b/Document-Processing/PDF/PDF-Viewer/react/form-filling.md
deleted file mode 100644
index 428c5e4b4b..0000000000
--- a/Document-Processing/PDF/PDF-Viewer/react/form-filling.md
+++ /dev/null
@@ -1,102 +0,0 @@
----
-layout: post
-title: Form filling in React PDF Viewer | Syncfusion
-description: Learn how to view, fill, export, and import PDF form fields using the Syncfusion React PDF Viewer, including disabling interaction and working with signatures.
-platform: document-processing
-control: PDF Viewer
-documentation: ug
-domainurl: ##DomainURL##
----
-
-# Form filling in React PDF Viewer
-
-The PDF Viewer displays existing form fields in a PDF and enables users to fill, validate, and download the filled data.
-
-Check the following video to learn how to work with form fields in React PDF Viewer.
-{% youtube "https://www.youtube.com/watch?v=MUWTCg1MoAE" %}
-
-The PDF Viewer supports the following form field types:
-
-* Text box
-* Password
-* Check box
-* Radio button
-* List box
-* Dropdown
-* Signature field
-* Initial field
-
-
-
-## Disabling form fields
-
-The PDF Viewer provides an option to disable interaction with form fields. Use the following configuration to disable form fields in the viewer.
-
-{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
-
-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, Inject } from '@syncfusion/ej2-react-pdfviewer';
-
-let pdfviewer;
-
-function App() {
- return (
- );
-}
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
-
-{% endhighlight %}
-{% endtabs %}
-
-## Add a handwritten signature to a signature field
-
-Add a handwritten signature to a signature field by following these steps:
-
-* Click the signature field in the PDF document to open the signature panel.
-
-
-
-* Draw the signature in the signature panel.
-
-
-
-* Select **CREATE**. The drawn signature is added to the signature field.
-
-
-
-## Delete a signature from a signature field
-
-Delete a signature placed in a signature field by using the Delete option in the annotation toolbar.
-
-
-
-## Export and import form fields
-
-The PDF Viewer supports exporting and importing form field data using the `importFormFields`, `exportFormFields`, and `exportFormFieldsAsObject` methods. The following formats are supported:
-
-* FDF
-* XFDF
-* JSON
-
-For more information, see the [Form fields documentation](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/form-designer/create-programmatically#export-and-import-form-fields).
-
-## See also
-
-* [Handwritten signature in React PDF Viewer](./annotation/signature-annotation)
-* [Form Designer events](./form-designer/form-field-events)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/forms/custom-data.md b/Document-Processing/PDF/PDF-Viewer/react/forms/custom-data.md
index 12f4bd9f20..443fbbe5a0 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/forms/custom-data.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/forms/custom-data.md
@@ -11,9 +11,9 @@ documentation: ug
The **Syncfusion React PDF Viewer** allows you to attach **custom application-specific data** to form fields by using the customData property. This enables you to associate business identifiers, tags, validation hints, or workflow metadata with form fields.
-The custom data remains linked to the form field throughout the viewer session and can be accessed or updated whenever the field is queried or modified.
+Custom data remains associated with the form field for the duration of the viewer session and can be accessed or updated whenever the field is queried or modified.
-This page explains how to:
+This article explains how to:
- [Add custom data when creating form fields](#add-custom-data-while-creating-pdf-form-fields)
- [Define default custom data for fields created using the UI](#set-default-custom-data-for-pdf-form-fields-added-using-ui)
- [Update or replace custom data for existing fields](#update-or-replace-pdf-form-field-custom-data)
@@ -27,7 +27,7 @@ This page explains how to:
## Add Custom Data While Creating PDF Form Fields
-You can attach custom data at the time of field creation by passing a **customData** object in the settings parameter of **addFormField()**.
+Attach custom data at field creation by passing a `customData` object in the settings parameter of `addFormField()`.
{% tabs %}
{% highlight js tabtitle="index.js" %}
@@ -76,7 +76,7 @@ root.render();
## Set Default Custom Data for PDF Form Fields Added Using UI
-When users add form fields using the [Form Designer toolbar](../toolbar-customization/form-designer-toolbar), you can define default customData so that newly created fields automatically inherit it. Default custom data can be configured using per-field settings objects such as:
+When form fields are added via the [Form Designer toolbar](../toolbar-customization/form-designer-toolbar), define default `customData` so newly created fields inherit it. Default custom data is configured using per-field settings objects such as:
- [textFieldSettings](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#textfieldsettings)
- [passwordFieldSettings](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#passwordfieldsettings)
@@ -95,6 +95,14 @@ import './index.css';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView, ThumbnailView, Print, TextSelection, Annotation, TextSearch, FormFields, FormDesigner, Inject } from '@syncfusion/ej2-react-pdfviewer';
export function App() {
+ const defaultTextFieldSettings = {
+ name: 'Textbox',
+ customData: { group: 'contact', createdBy: 'designer', requiredRole: 'user' }
+ };
+ const defaultCheckBoxFieldSettings = {
+ name: 'Checkbox',
+ customData: { consentType: 'marketing', defaultChecked: false }
+ };
return (
@@ -104,14 +112,8 @@ export function App() {
resourceUrl="https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib"
style={{ height: '680px' }}
// Example: default custom data for all new Textbox fields added from the toolbar
- textFieldSettings={{
- name: 'Textbox',
- customData: { group: 'contact', createdBy: 'designer', requiredRole: 'user' }
- }}
- checkBoxFieldSettings ={{
- name: 'Checkbox',
- customData: { consentType: 'marketing', defaultChecked: false }
- }}
+ textFieldSettings={defaultTextFieldSettings}
+ checkBoxFieldSettings={defaultCheckBoxFieldSettings}
>
@@ -128,7 +130,7 @@ root.render();
## Update or Replace PDF Form Field Custom Data
-You can modify the customData of an existing form field by using the [updateFormField()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#updateformfields) method. The field can be identified using either its object reference or field ID.
+Modify an existing field's `customData` by using the [updateFormField()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#updateformfields) method. The field may be identified by its object reference or field ID.
{% tabs %}
{% highlight js tabtitle="index.js" %}
@@ -174,14 +176,14 @@ root.render();
{% endtabs %}
**Tip:**
-Merge new values with the existing customData object before calling [updateFormField()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#updateformfields) to avoid overwriting previously stored data.
+Merge new values into the existing `customData` object before calling [updateFormField()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#updateformfields) to avoid unintentionally overwriting existing metadata.
## Read Custom Data from PDF Form Fields
-You can access the customData property from any form field at any point in your application flow, such as:
-- After the document is loaded
-- During save or submit operations
-- While performing validation or conditional routing
+Access the `customData` property from any form field at any point in the application flow, for example:
+- after the document is loaded
+- during save or submit operations
+- while performing validation or conditional routing
{% tabs %}
{% highlight js tabtitle="index.js" %}
diff --git a/Document-Processing/PDF/PDF-Viewer/react/forms/flatten-form-fields.md b/Document-Processing/PDF/PDF-Viewer/react/forms/flatten-form-fields.md
new file mode 100644
index 0000000000..1eec8f4ee2
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/forms/flatten-form-fields.md
@@ -0,0 +1,121 @@
+---
+layout: post
+title: Flatten PDF form fields in React PDF Viewer | Syncfusion
+description: Learn hoow to flatten interactive PDF form fields before download or save-as in EJ2 React PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Flatten PDF form fields in React
+
+## Overview
+
+Flattening PDF forms converts interactive fields such as textboxes, dropdowns, checkboxes, signatures, etc., into non‑editable page content. Use this when you want to protect filled data, finalize a document, or prepare it for secure sharing.
+
+## Prerequisites
+
+- EJ2 React PDF Viewer installed and configured
+- Basic viewer setup completed with toolbar and page organizer services injected. For more information, see [getting started guide](../getting-started)
+
+## Flatten forms before downloading PDF
+
+1. Add a ref to the [`PdfViewerComponent`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer) so you can access viewer APIs from event handlers.
+2. Intercept the download flow using [`downloadStart`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#downloadstart) and cancel the default flow.
+3. Retrieve the viewer's blob via [`saveAsBlob()`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#saveasblob) and convert the blob to base64.
+4. Use `PdfDocument` from Syncfusion PDF Library to open the document, set `field.flatten = true` for each form field, then save.
+5. For the flattening the form fields when downloading through *Save As* option in Page Organizer, repeat steps 2–4 by using [`pageOrganizerSaveAs`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#pageorganizersaveas) event.
+
+## Complete example
+
+{% tabs %}
+{% highlight ts tabtitle="App.tsx" %}
+{% raw %}
+import {
+ PdfViewerComponent, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
+ ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner,
+ PageOrganizer, Inject, Print, PageOrganizerSaveAsEventArgs, DownloadStartEventArgs
+} from '@syncfusion/ej2-react-pdfviewer';
+import { PdfDocument, PdfField } from '@syncfusion/ej2-pdf';
+import { RefObject, useRef } from 'react';
+
+export default function App() {
+ const viewerRef: RefObject = useRef(null);
+
+ const blobToBase64 = async (blob: Blob): Promise => {
+ return new Promise((resolve, reject) => {
+ const reader = new FileReader();
+ reader.onerror = () => reject(reader.error);
+ reader.onload = () => {
+ const dataUrl: string = reader.result as string;
+ const data: string = dataUrl.split(',')[1];
+ resolve(data);
+ };
+ reader.readAsDataURL(blob);
+ });
+ }
+
+ const flattenFormFields = (data: string) => {
+ let document: PdfDocument = new PdfDocument(data);
+ for (let index = 0; index < document.form.count; index++) {
+ let field: PdfField = document.form.fieldAt(index);
+ field.flatten = true;
+ }
+ // If both annotations and form fields needs to be flattened, use
+ // document.flatten = true
+ document.save(`${viewerRef.current.fileName}.pdf`);
+ document.destroy();
+ }
+
+ const handleFlattening = async () => {
+ const blob: Blob = await viewerRef.current.saveAsBlob();
+ const data: string = await blobToBase64(blob);
+ flattenFormFields(data);
+ }
+
+ const onDownloadStart = async (args: DownloadStartEventArgs) => {
+ args.cancel = true;
+ handleFlattening();
+ };
+
+ const onPageOrganizerSaveAs = async (args: PageOrganizerSaveAsEventArgs) => {
+ args.cancel = true;
+ handleFlattening()
+ };
+
+ return (
+
+
+
+
+
+ );
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Expected result
+
+- The downloaded or "Save As" PDF will contain the visible appearance of filled form fields as static, non-editable content.
+- Form fields will no longer be interactive or editable in common PDF readers.
+
+## Troubleshooting
+
+- If viewerRef is null, ensure `ref={viewerRef}` is present and the component has mounted before invoking [`saveAsBlob()`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#saveasblob).
+- Missing [`resourceUrl`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#resourceurl): If viewer resources are not reachable, set [`resourceUrl`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#resourceurl) to the correct CDN or local path for the ej2-pdfviewer-lib.
+
+## Related topics
+
+- [`downloadStart` event reference](../events#downloadstart)
+- [`pageOrganizerSaveAs` event reference](../events#pageorganizersaveas)
+- [Form Designer in React PDF Viewer](./form-designer)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/forms/form-constrain.md b/Document-Processing/PDF/PDF-Viewer/react/forms/form-constrain.md
index 17b41c83c0..dcccab715d 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/forms/form-constrain.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/forms/form-constrain.md
@@ -34,7 +34,7 @@ The following flags are supported in the PDF Viewer:
## Key Actions
### Make Fields Read Only
-Use the **isReadOnly** property to prevent users from modifying a form field through the UI. This is useful for displaying pre filled or calculated values that should not be changed by the user.
+Use the **isReadOnly** property to prevent users from modifying a form field through the UI. This is useful for displaying pre-filled or calculated values that should not be changed by the user.
{% tabs %}
{% highlight js tabtitle="index.js" %}
@@ -334,26 +334,26 @@ root.render();
{% endtabs %}
-N> Printing can be triggered programmatically using **pdfviewer.print()**. Form fields with **isPrint: false** are excluded from the printed output.
+N> Printing can be triggered programmatically using `pdfviewer.print()`. Form fields with `isPrint: false` are excluded from printed output.
## Apply PDF Form Field Flags Using the UI
**Steps**
1. Enable **Form Designer** mode in the PDF Viewer.
2. Select an existing form field on the PDF page.
-3. The **Right click To open context menu - > Properties** popover is displayed.
+3. Right-click the field, open the context menu, and select Properties.
4. Configure the required constraint options.
-5. Click “Ok” and Close the properties popover to apply the changes.
+5. Click OK to apply changes and close the properties popover.
Changes are reflected immediately in the viewer.
-[Applying form field flags using the UI](../../javascript-es6/images/formfields-flag.gif)
+
## Apply PDF Form Field Flags Programmatically
You can apply or modify form field flags in the following ways.
-### Apply flags When Creating Fields
+### Apply flags when creating fields
Pass the flags properties in the settings object when creating form fields using **addFormField()**.
{% tabs %}
@@ -439,7 +439,7 @@ root.render();
{% endhighlight %}
{% endtabs %}
-### Update flags on Existing Fields programmatically
+### Update flags on existing fields programmatically
Use the [updateFormField()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#updateformfields) method to modify constraint values on existing form fields.
{% tabs %}
@@ -530,7 +530,7 @@ root.render();
{% endhighlight %}
{% endtabs %}
-### Set Default Flags for New PDF Form Fields
+### Set default flags for new PDF form fields
You can configure default flag values so that form fields added using the [Form Designer toolbar](../toolbar-customization/form-designer-toolbar) automatically inherit them. This helps ensure consistent behavior for all newly created fields.
{% tabs %}
diff --git a/Document-Processing/PDF/PDF-Viewer/react/forms/form-designer.md b/Document-Processing/PDF/PDF-Viewer/react/forms/form-designer.md
index aac8d316ed..72139f7f8c 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/forms/form-designer.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/forms/form-designer.md
@@ -16,8 +16,8 @@ Using the Form Designer UI, users can place form fields on the PDF, move and res
## Key Features
-**Add Form Fields**
-You can add the following form fields to the PDF:
+**Add Form Fields:**
+The following form fields can be added to the PDF:
- [Text box](../forms/manage-form-fields/create-form-fields#add-textbox)
- [Password Field](../forms/manage-form-fields/create-form-fields#add-password)
@@ -28,24 +28,32 @@ You can add the following form fields to the PDF:
- [Signature field](../forms/manage-form-fields/create-form-fields#add-signature-field)
- [Initial field](../forms/manage-form-fields/create-form-fields#add-initial-field)
-**Edit Form Fields**
-You can move, resize, align, distribute, copy, paste, and undo or redo changes to form fields.
+**Edit Form Fields:**
+Form fields can be moved, resized, aligned, distributed, copied, pasted, and have changes undone or redone.
-**Set Field Properties**
-You can configure field properties such as name, value, font, color, border, alignment, visibility, tab order, and required or read only state.
+**Set Field Properties:**
+Field properties such as name, value, font, color, border, alignment, visibility, tab order, and required or read-only state can be configured.
-**Control Field Behavior**
-You can enable or disable read only mode, show or hide fields, and control whether fields appear when printing the document.
+**Control Field Behavior:**
+Field behavior can be controlled, including enabling or disabling read-only mode, showing or hiding fields, and determining whether fields appear when printing the document.
-**Manage Form Fields**
-You can select, group or ungroup, reorder, and delete form fields as needed.
+**Manage Form Fields:**
+Form fields can be selected, grouped or ungrouped, reordered, and deleted as needed.
-**Save and Print Forms**
+**Save and Print Forms:**
Designed form fields can be saved into the PDF document and printed with their appearances.
-## Enable Form Designer
+## Design Forms with UI interaction
-To enable form design features, inject the [FormDesigner](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formdesigner) module into the PDF Viewer. After injecting the module, use the [enableFormDesigner](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#enableformdesigner) API to show or hide the Form Designer option in the main toolbar.
+When [Form Designer mode](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formdesigner) is enabled in the Syncfusion [React PDF Viewer](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/overview), a default [Form Designer user interface (UI)](https://document.syncfusion.com/demos/pdf-viewer/react/#/tailwind3/pdfviewer/form-designer) is displayed. This UI provides a built in toolbar for adding common form fields such as text boxes, check boxes, radio buttons, drop down lists, and signature fields. Users can place fields on the PDF, select them, resize or move them, and configure their properties using the available editing options, enabling interactive form creation directly within the viewer.
+
+
+
+For more information about creating and editing form fields in the PDF Viewer, refer to the [Form Creation](./manage-form-fields/create-form-fields) in React PDF Viewer documentation.
+
+### Enable Form Designer
+
+Form design features are enabled by injecting the [FormDesigner](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formdesigner) module into the PDF Viewer. The [enableFormDesigner](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#enableformdesigner) API controls whether the Form Designer option appears in the main toolbar.
{% tabs %}
{% highlight js tabtitle="index.js" %}
@@ -64,7 +72,7 @@ export function App() {
style={{ 'height': '680px' }}
>
+ Print, TextSelection, TextSearch, FormFields, FormDesigner]} />
);
@@ -74,17 +82,7 @@ root.render();
{% endhighlight %}
{% endtabs %}
-## Form Designer UI
-
-When [Form Designer mode](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formdesigner) is enabled in the Syncfusion [React PDF Viewer](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/overview), a default [Form Designer user interface (UI)](https://document.syncfusion.com/demos/pdf-viewer/react/#/tailwind3/pdfviewer/form-designer) is displayed. This UI provides a built in toolbar for adding common form fields such as text boxes, check boxes, radio buttons, drop down lists, and signature fields. Users can place fields on the PDF, select them, resize or move them, and configure their properties using the available editing options, enabling interactive form creation directly within the viewer.
-
-
-
-{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es6/prefilledforms-cs1" %}
-
-For more information about creating and editing form fields in the PDF Viewer, refer to the [Form Creation](./manage-form-fields/create-form-fields) in React PDF Viewer documentation.
-
-## Form Designer Toolbar
+### Form Designer Toolbar
The **Form Designer toolbar** appears at the top of the PDF Viewer and provides quick access to form field creation tools. It includes frequently used field types such as:
@@ -97,205 +95,54 @@ The **Form Designer toolbar** appears at the top of the PDF Viewer and provides
- [Signature field](../forms/manage-form-fields/create-form-fields#add-signature-field)
- [Initial field](../forms/manage-form-fields/create-form-fields#add-initial-field)
-Each toolbar item allows users to place the corresponding form field by selecting the tool and clicking on the desired location in the PDF document.
-
-
-
-Use the following Code-snippet to enable Form Designer by injecting **Form Designer mode** Module.
-
-{% tabs %}
-{% highlight js tabtitle="index.js" %}
-import * as ReactDOM from 'react-dom/client';
-import * as React from 'react';
-import './index.css';
-import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView, ThumbnailView, Print, TextSelection, Annotation, TextSearch, FormFields, FormDesigner, Inject } from '@syncfusion/ej2-react-pdfviewer';
-export function App() {
- return (
-
-
-
-
-
-
);
-}
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
-{% endhighlight %}
-{% endtabs %}
-
-For more information about creating and editing form fields in the PDF Viewer, refer to the [Form Creation in React PDF Viewer documentation](./manage-form-fields/create-form-fields).
+#### Show or Hide the Built-in Form Designer Toolbar
-## Show or Hide the Built-in Form Designer Toolbar
+The visibility of the Form Designer toolbar is controlled by the [isFormDesignerToolbarVisible()](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#isformdesignertoolbarvisible) method. This method enables the application to display or hide the Form Designer tools based on requirements. Refer to the code example [here](../toolbar-customization/form-designer-toolbar#2-show-or-hide-form-designer-toolbar-at-runtime).
-You can control the visibility of the Form Designer toolbar using the [isFormDesignerToolbarVisible()](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#isformdesignertoolbarvisible) method. This allows you to display or hide the Form Designer tools in the PDF Viewer based on your application requirements.
-
-**Use this method to:**
-- Show the Form Designer toolbar when form design is required
-- Hide the toolbar to provide cleaner viewing experience
-
-{% tabs %}
-{% highlight js tabtitle="index.js" %}
-import * as ReactDOM from 'react-dom/client';
-import * as React from 'react';
-import './index.css';
-
-import {
- PdfViewerComponent,
- Toolbar,
- Magnification,
- Navigation,
- Annotation,
- LinkAnnotation,
- ThumbnailView,
- BookmarkView,
- TextSelection,
- TextSearch,
- FormFields,
- FormDesigner,
- Inject
-} from '@syncfusion/ej2-react-pdfviewer';
-
-function App() {
- const viewerRef = React.useRef(null);
-
- // Show Form Designer Toolbar
- const handleShowDesigner = () => {
- const viewer = viewerRef.current;
- if (viewer) viewer.isFormDesignerToolbarVisible = true;
- };
-
- // Hide Form Designer Toolbar
- const handleHideDesigner = () => {
- const viewer = viewerRef.current;
- if (viewer) viewer.isFormDesignerToolbarVisible = false;
- };
-
- return (
-
-
-
-
-
-
-
-
-
-
- );
-}
-
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
-{% endhighlight %}
-{% endtabs %}
+- The Form Designer toolbar is shown when form design is required.
+- The toolbar can be hidden to provide a cleaner viewing experience.
-## Customize the Built-in Form Designer Toolbar
+#### Customize the Built-in Form Designer Toolbar
-You can customize the Form Designer toolbar by specifying the tools to display and arranging them in the required order using the [FormDesignerToolbarItems](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formdesignertoolbaritem) property.
+The Form Designer toolbar can be customized by specifying the tools to display and arranging them in the required order using the [FormDesignerToolbarItems](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formdesignertoolbaritem) property.
-This customization helps you limit the available tools and simplify the user interface.
+This customization helps limit the available tools and simplify the user interface. A code example is available [here](../toolbar-customization/form-designer-toolbar#3-show-or-hide-form-designer-toolbar-items).
**Key Points**
-- Include only the toolbar items you need, in the exact order you specify.
+- Only the toolbar items listed are included, in the exact order specified.
- Any toolbar items not listed remain hidden, resulting in a cleaner and more focused UI.
-{% tabs %}
-{% highlight js tabtitle="index.js" %}
-import * as ReactDOM from 'react-dom/client';
-import * as React from 'react';
-import './index.css';
-import {
- PdfViewerComponent,
- Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView, ThumbnailView,
- Print, TextSelection, Annotation, TextSearch, FormFields, FormDesigner, Inject
-} from '@syncfusion/ej2-react-pdfviewer';
+### Adding Form Fields
-export function App() {
- return (
-
-
-
-
-
-
-
- );
-}
+Each toolbar item in form designer toolbar allows users to place the corresponding form field by selecting the tool and clicking on the desired location in the PDF document.
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
-{% endhighlight %}
-{% endtabs %}
+
-## Move, Resize, and Edit Form Fields
+For more information about creating form fields in the PDF Viewer, refer to the [Form Creation in React PDF Viewer documentation](./manage-form-fields/create-form-fields#create-form-fields-using-the-form-designer-ui).
-You can move, resize, and edit an existing form field directly in the PDF Viewer using the Form Designer.
+### Move, Resize, and Edit Form Fields
-- Move a field by selecting it and dragging it to the required position.
+Fields can be moved, resized, and edited directly in the PDF Viewer using the Form Designer.
-- Resize a field using the handles displayed on the field boundary.
+- A field is moved by selecting it and dragging it to the required position.
+
+- Fields are resized using the handles displayed on the field boundary.

-- Edit a field by selecting it to open the Form Field Properties popover. The popover allows you to modify the form field and widget annotation properties. Changes are reflected immediately in the viewer and are saved when the properties popover is closed.
+- Selecting a field opens the Form Field Properties popover, which allows modification of the form field and widget annotation properties. Changes are reflected immediately in the viewer and are saved when the properties popover is closed.
For more information, see Editing Form Fields
-## Deleting Form Fields
+### Edit Form Field properties
+
+The **Properties** panel lets you customize the styles of form fields. Open the panel by selecting the **Properties** option in a field's context menu.
+
+
+
+### Deleting Form Fields
-You can remove a form field from the PDF document by selecting the field and using one of the following methods:
-- Click the `Delete option` in the Form Designer UI.
-- Press the `Delete key` on the keyboard after selecting the form field.
+A form field is removed by selecting it and either clicking the `Delete` option in the Form Designer UI or pressing the `Delete` key on the keyboard. The selected form field and its associated widget annotation are permanently removed from the page.
-The selected form field and its associated widget annotation are permanently removed from the page.
For more information, see [Deleting Form Fields](./manage-form-fields/remove-form-fields)
## See Also
diff --git a/Document-Processing/PDF/PDF-Viewer/react/forms/form-field-events.md b/Document-Processing/PDF/PDF-Viewer/react/forms/form-field-events.md
index dbc34c18b8..71a7ed264b 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/forms/form-field-events.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/forms/form-field-events.md
@@ -10,41 +10,31 @@ domainurl: ##DomainURL##
# PDF Viewer Form Field Events in React
-The Syncfusion **React PDF Viewer** provides a comprehensive set of **form field events** that allow developers to track user interactions, respond to form changes, and implement custom business logic. These events can be used for scenarios such as [validation](./form-validation), **UI updates**, **logging**, and **workflow automation**.
+The Syncfusion React PDF Viewer provides a set of form field events that report changes associated with creating, selecting, modifying, moving, resizing, or removing form fields. These events supply metadata related to the affected field and are raised during user interaction or programmatic updates.
-Form field events are triggered during actions such as adding, selecting, modifying, moving, resizing, and removing form fields.
+Validation‑related events are emitted when the viewer performs operations that require confirmation of field completion, such as print or download actions.
## Supported PDF Form Field Events
The following table lists all supported form field events and their descriptions:
-| Form Field events | Description |
-|---|---|
-| [formFieldAdd](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formFieldAddArgs) | Triggered when a new form field is added, either through the Form Designer UI or programmatically. |
-| [formFieldClick](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formFieldClickArgs) | Fired when a form field is clicked in the viewer. |
-| [formFieldDoubleClick](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formFieldDoubleClickArgs) | Fired when a form field is double clicked. |
-| [formFieldFocusOut](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formFieldFocusOutEventArgs) | Triggered when a form field loses focus after editing. |
-| [formFieldMouseLeave](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formFieldMouseLeaveArgs) | Fired when the mouse pointer leaves a form field. |
-| [formFieldMouseOver](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formFieldMouseoverArgs) | Fired when the mouse pointer moves over a form field. |
-| [formFieldMove](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formFieldMoveArgs) | Triggered when a form field is moved to a new position. |
-| [formFieldPropertiesChange](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formFieldPropertiesChangeArgs) | Fired when any form field property changes, such as font, color, or constraint values. |
-| [formFieldRemove](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formFieldRemoveArgs) | Triggered when a form field is deleted from the document. |
-| [formFieldResize](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formFieldResizeArgs) | Fired when a form field is resized. |
-| [formFieldSelect](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formFieldSelectArgs) | Fired when a form field is selected in the Form Designer. |
-| [formFieldUnselect](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formFieldUnselectArgs) | Fired when a previously selected form field is unselected. |
-| [validateFormFields](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/validateFormFieldsArgs) | Fired when form field validation fails during print or download actions. |
-
-**Common Use Cases**
-
-Form field events can be used to:
-- Validate form data before printing or downloading
-- Track user interaction with form fields
-- Update UI elements dynamically
-- Log form changes for auditing
-- Trigger workflow actions based on field changes
-- Enforce business rules during form editing
-
-## Handle PDF Form Field Events
+| Form Field events | Description | Arguments |
+|---|---|---|
+| [`formFieldAdd`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#formfieldadd) | Triggered when a new form field is added, either through the Form Designer UI or programmatically. | [`formFieldAddArgs`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formFieldAddArgs) |
+| [`formFieldClick`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#formfieldclick) | Fired when a form field is clicked in the viewer. | [`formFieldClickArgs`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formFieldClickArgs) |
+| [`formFieldDoubleClick`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#formfielddoubleclick) | Fired when a form field is double clicked. | [`formFieldDoubleClickArgs`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formFieldDoubleClickArgs) |
+| [`formFieldFocusOut`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#formfieldfocusout) | Triggered when a form field loses focus after editing. | [`formFieldFocusOutEventArgs`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formFieldFocusOutEventArgs) |
+| [`formFieldMouseLeave`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#formfieldmouseleave) | Fired when the mouse pointer leaves a form field. | [`formFieldMouseLeaveArgs`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formFieldMouseLeaveArgs) |
+| [`formFieldMouseOver`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#formfieldmouseover) | Fired when the mouse pointer moves over a form field. | [`formFieldMouseOverArgs`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formFieldMouseoverArgs) |
+| [`formFieldMove`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#formfieldmove) | Triggered when a form field is moved to a new position. | [`formFieldMoveArgs`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#formfieldmove) |
+| [`formFieldPropertiesChange`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#formfieldpropertieschange) | Fired when any form field property changes, such as font, color, or constraint values. | [`formFieldPropertiesChangeArgs`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formFieldPropertiesChangeArgs) |
+| [`formFieldRemove`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#formfieldremove) | Triggered when a form field is deleted from the document. | [`formFieldRemoveArgs`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formFieldRemoveArgs) |
+| [`formFieldResize`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#formfieldresize) | Fired when a form field is resized. | [`formFieldResizeArgs`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formFieldResizeArgs) |
+| [`formFieldSelect`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#formfieldselect) | Fired when a form field is selected in the Form Designer. | [`formFieldSelectArgs`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formFieldSelectArgs) |
+| [`formFieldUnselect`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#formfieldunselect) | Fired when a previously selected form field is unselected. | [`formFieldUnselectArgs`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formFieldUnselectArgs) |
+| [`validateFormFields`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#validateformfields) | Fired when form field validation fails during print or download actions. | [`validateFormFieldsArgs`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/validateFormFieldsArgs) |
+
+## Example
You can wire up form field events on the PDF Viewer instance to execute custom logic when specific actions occur.
diff --git a/Document-Processing/PDF/PDF-Viewer/react/forms/form-fields-api.md b/Document-Processing/PDF/PDF-Viewer/react/forms/form-fields-api.md
index a5c0c166b4..26fc2c47f2 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/forms/form-fields-api.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/forms/form-fields-api.md
@@ -10,7 +10,9 @@ domainurl: ##DomainURL##
# Form Fields API in React PDF Viewer
-The PDF Viewer provides comprehensive APIs to create, edit, validate, navigate, and manage form fields programmatically. The following APIs are available:
+The PDF Viewer exposes a set of programmatic APIs to create, edit, validate, navigate, and manage form fields. These APIs enable automation of common tasks such as updating values, exporting/importing form data, resetting fields, and toggling designer or validation features. The examples below demonstrate usage patterns; code samples remain unchanged and are runnable when the viewer is initialized.
+
+Each sample demonstrates a single API call or small workflow (for example, updating a field value or exporting form data). Use the provided APIs in application logic or UI handlers to automate form workflows.
| API | Description |
|---|---|
diff --git a/Document-Processing/PDF/PDF-Viewer/react/forms/form-filling.md b/Document-Processing/PDF/PDF-Viewer/react/forms/form-filling.md
index b8dbb6a363..e33900cb35 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/forms/form-filling.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/forms/form-filling.md
@@ -8,331 +8,242 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Filling PDF Forms in React PDF Viewer
+# Fill PDF form fields in React PDF Viewer
-The Syncfusion PDF Viewer supports three types of form-filling:
+This guide shows how to update, import, and validate PDF form fields in the React PDF Viewer so you can pre-fill forms or accept user input.
-1. [Filling Form Fields Programmatically](#fill-pdf-forms-programmatically)
+**Outcome** Programmatically set field values, allow UI-driven filling, import form data, and validate fields on submit.
- You can fill or update PDF form fields programmatically using the [updateFormFieldsValue](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#updateformfieldsvalue) APIs. This approach is useful when form data needs to be set dynamically based on application logic.
+## Steps to fill forms
-2. [Form Filling Through User Interface](#fill-pdf-forms-through-the-user-interface)
+### 1. Fill form fields programmatically
- Users can fill in PDF form fields directly through the PDF Viewer user interface by typing text, selecting options, or interacting with supported form elements.
+Update form field values programmatically with [`updateFormFieldsValue`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#updateformfieldsvalue).
-3. [Importing Form Field Data](#fill-pdf-forms-through-import-data)
-
- The PDF Viewer allows you to import form field data into an existing PDF document. This enables pre filled forms using external data sources.
-
-## Fill PDF forms programmatically
-
-You can update the values of PDF form fields programmatically using the [updateFormFieldsValue](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#updateformfieldsvalue) API. This method allows you to set or modify form field values dynamically based on application logic, without user interaction.
-
-The following example demonstrates how to update PDF form field values programmatically:
+Use the example below as a complete, runnable example for a small React app. It retrieves form fields and updates a named field or the first available field.
{% tabs %}
-{% highlight js tabtitle="index.js" %}
-import * as ReactDOM from 'react-dom/client';
-import * as React from 'react';
-import './index.css';
-
+{% highlight ts tabtitle="App.tsx" %}
+{% raw %}
+import { RefObject, useRef } from 'react';
import {
- PdfViewerComponent,
- Toolbar,
- Magnification,
- Navigation,
- LinkAnnotation,
- BookmarkView,
- ThumbnailView,
- Print,
- TextSelection,
- TextSearch,
- Annotation,
- FormFields,
- Inject,
+ PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView,
+ ThumbnailView, Print, TextSelection, TextSearch, Annotation, FormFields, Inject,
+ FormDesigner, PageOrganizer
} from '@syncfusion/ej2-react-pdfviewer';
-function App() {
- const viewerRef = React.useRef(null);
-
- const handleFillForm = () => {
- const viewer = viewerRef.current;
- if (!viewer) return;
-
- // Retrieve form fields from the viewer
- const fields =
- (viewer.retrieveFormFields && viewer.retrieveFormFields()) ||
- viewer.formFieldCollection ||
- [];
-
- // Find by name or fallback to the first field
- const field = fields.find((f) => f && f.name === 'name') || fields[0];
-
- if (field) {
- field.value = 'John Doe';
- field.tooltip = 'First';
- // Push changes to viewer
- viewer.updateFormFieldsValue(field);
- } else {
- console.warn('No form fields available to update.');
- }
- };
-
- return (
-
-
-
-
-
-
-
-
-
-
-
- );
+export default function App() {
+ const viewerRef: RefObject = useRef(null);
+
+ const handleFillForm = () => {
+ const viewer = viewerRef.current;
+ if (!viewer) return;
+
+ // Retrieve form fields from the viewer
+ const fields =
+ (viewer.retrieveFormFields && viewer.retrieveFormFields()) ||
+ viewer.formFieldCollections ||
+ [];
+ // Find by name or fallback to the first field
+ const field = fields.find((f) => f && f.name === 'name') || fields[0];
+
+ if (field) {
+ field.value = 'John Doe';
+ field.tooltip = 'First';
+ // Push changes to viewer
+ viewer.updateFormFieldsValue(field);
+ } else {
+ console.warn('No form fields available to update.');
+ }
+ };
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+ );
}
-
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
+{% endraw %}
{% endhighlight %}
{% endtabs %}
-## Fill PDF forms through the User Interface
+**Expected result:** Clicking the *Fill Form Fields* button sets the first or named field's value to *John Doe* in the viewer.
-The Syncfusion PDF Viewer allows users to fill PDF form fields directly through the user interface without using code. Users can click on form fields and enter or select values based on the field type.
+### 2. Fill form fields via UI
-
+Users can click form controls and enter/select values. Supported field types include textboxes, checkboxes, radio buttons, dropdowns, list boxes, and signature fields. Edits are retained during the viewing session.
-The PDF Viewer supports common form fields such as text boxes, check boxes, radio buttons, drop-down lists, list boxes, and signature fields. Filled values can be edited at any time, and the entered data is retained during the viewing session.
+
{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es6/prefilledforms-cs1" %}
-## Fill PDF forms through Import Data
+### 3. Fill form fields through imported data
-The Syncfusion PDF Viewer allows you to import form field data into an existing PDF document using the [importFormFields](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#importformfields) API. This feature enables you to pre-fill form fields using data from an external source without requiring manual user input.
-
-Imported form field data is automatically mapped to the corresponding form fields in the PDF document based on the field names. Once the data is imported, the populated values are displayed in the PDF Viewer and can be edited through the user interface if required.
+Use [`importFormFields`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#importformfields) to map external data into PDF fields by name. The example below shows how to trigger import from a button handler.
{% tabs %}
-{% highlight js tabtitle="index.js" %}
-import * as ReactDOM from 'react-dom/client';
-import * as React from 'react';
-import './index.css';
-
+{% highlight ts tabtitle="App.tsx" %}
+{% raw %}
+import { RefObject, useRef } from 'react';
import {
- PdfViewerComponent,
- Toolbar,
- Magnification,
- Navigation,
- Annotation,
- LinkAnnotation,
- ThumbnailView,
- BookmarkView,
- TextSelection,
- FormFields,
- FormDesigner,
- Inject
+ PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView,
+ ThumbnailView, Print, TextSelection, TextSearch, Annotation, FormFields, Inject,
+ FormDesigner, PageOrganizer, FormFieldDataFormat
} from '@syncfusion/ej2-react-pdfviewer';
-// We import the enum from the core package (not the React wrapper)
-import { FormFieldDataFormat } from '@syncfusion/ej2-pdfviewer';
-
-function App() {
- const viewerRef = React.useRef(null);
-
- const handleImportJson = () => {
- const viewer = viewerRef.current;
- if (!viewer) return;
-
- // NOTE:
- // The first parameter can be:
- // - a file path/url (if accessible from the client),
- // - or a File/Blob stream from an in real apps.
- // Replace 'File' with your actual file or path as per your integration.
- viewer.importFormFields('File', FormFieldDataFormat.Json);
- };
-
- return (
-
-
-
-
-
-
-
-
-
-
-
- );
+export default function App() {
+ const viewerRef: RefObject = useRef(null);
+
+ const handleImportJson = () => {
+ const viewer = viewerRef.current;
+ if (!viewer) return;
+ // NOTE:
+ // The first parameter can be:
+ // - a file path/url (in server mode),
+ // - or a base64 encoded File/Blob stream from an in real apps.
+ // Replace 'File' with your actual file or path as per your integration.
+ viewer.importFormFields('File', FormFieldDataFormat.Json);
+ };
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+ );
}
-
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
+{% endraw %}
{% endhighlight %}
{% endtabs %}
For more details, see [Import Form Data](./import-export-form-fields/import-form-fields).
-## How to get the filled data and store it to a backing system
-
-You can export the filled form field data from the PDF Viewer and store it in a backing system such as a database or file storage. The exported data can later be imported to restore the form state.
-
-For more details, see [Export Form Data](./import-export-form-fields/export-form-fields).
-
-## How to Validate Form Fields using `validateFormFields` Event
+### 4. Validate form fields on submit
-The [validateFormFields](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#validateformfields) event in the Syncfusion PDF Viewer is triggered when a user tries to download or submit a form while validation is enabled. You can use the [retrieveFormFields()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#validateformfields) API to get all the form fields and check them one by one to see if any form fields values are empty.
-
-This validation applies to all form field types in the PDF Viewer. A textbox is empty if no text is entered, a list box or dropdown is empty if no item is selected, a signature or initial field is empty if the user has not signed, and radio buttons or checkboxes are empty if none are chosen.
-By enabling [enableFormFieldsValidation](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#enableformfieldsvalidation) and wiring the event, you can go through each field and stop the action if required fields are not filled.
+Enable [`enableFormFieldsValidation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#enableformfieldsvalidation) and handle [`validateFormFields`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#validateformfields) to check required fields and cancel submission when necessary. Example below shows adding required fields via [`formDesignerModule`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formdesigner) and validating them.
{% tabs %}
{% highlight js tabtitle="index.js" %}
-import * as ReactDOM from 'react-dom/client';
-import * as React from 'react';
-import './index.css';
-
+{% raw %}
+import { RefObject, useRef } from 'react';
import {
- PdfViewerComponent,
- Toolbar,
- Magnification,
- Navigation,
- LinkAnnotation,
- ThumbnailView,
- BookmarkView,
- TextSelection,
- Annotation,
- FormDesigner,
- FormFields,
- Inject,
+ PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation,
+ ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields,
+ Inject, TextFieldSettings
} from '@syncfusion/ej2-react-pdfviewer';
-function App() {
- const viewerRef = React.useRef(null);
-
- // Runs after the document is loaded into the viewer
- const handleDocumentLoad = () => {
- const viewer = viewerRef.current;
- if (!viewer) return;
-
- // Add a required Email field
- viewer.formDesignerModule.addFormField('Textbox', {
- name: 'Email',
- bounds: { X: 146, Y: 260, Width: 220, Height: 24 },
- isRequired: true,
- tooltip: 'Email is required',
- });
-
- // Add a required Phone field
- viewer.formDesignerModule.addFormField('Textbox', {
- name: 'Phone',
- bounds: { X: 146, Y: 300, Width: 220, Height: 24 },
- isRequired: true,
- tooltip: 'Phone number is required',
- });
- };
-
- // Validates only the added fields on form submit/validate trigger
- const handleValidateFormFields = (args) => {
- const viewer = viewerRef.current;
- if (!viewer) return;
-
- const fields = viewer.retrieveFormFields ? viewer.retrieveFormFields() : [];
-
- fields.forEach((field) => {
- if ((field.name === 'Email' || field.name === 'Phone') && !field.value) {
- alert(field.name + ' field cannot be empty.');
- args.isFormSubmitCancelled = true;
- }
- });
- };
-
- return (
-
-
-
-
-
- );
+export default function App() {
+ const viewerRef: RefObject = useRef(null);
+
+ // Runs after the document is loaded into the viewer
+ const handleDocumentLoad = () => {
+ const viewer = viewerRef.current;
+ if (!viewer) return;
+
+ // Add a required Email field
+ viewer.formDesignerModule.addFormField('Textbox', {
+ name: 'Email',
+ bounds: { X: 146, Y: 260, Width: 220, Height: 24 },
+ isRequired: true,
+ tooltip: 'Email is required',
+ } as TextFieldSettings);
+
+ // Add a required Phone field
+ viewer.formDesignerModule.addFormField('Textbox', {
+ name: 'Phone',
+ bounds: { X: 146, Y: 300, Width: 220, Height: 24 },
+ isRequired: true,
+ tooltip: 'Phone number is required',
+ } as TextFieldSettings);
+ };
+
+ // Validates only the added fields on form submit/validate trigger
+ const handleValidateFormFields = () => {
+ const viewer = viewerRef.current;
+ if (!viewer) return;
+
+ const fields = viewer.retrieveFormFields ? viewer.retrieveFormFields() : [];
+
+ fields.forEach((field) => {
+ if ((field.name === 'Email' || field.name === 'Phone') && !field.value) {
+ alert(field.name + ' field cannot be empty.');
+ }
+ });
+ };
+
+ return (
+
+
+
+
+
+ );
}
-
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
+{% endraw %}
{% endhighlight %}
{% endtabs %}
+## Troubleshooting
+
+- If fields are not editable, confirm `FormFields` module is injected into PDF Viewer.
+- If examples fail to load, verify your [`resourceUrl`](https://helpej2.syncfusion.com/react/documentation/api/pdfviewer#resourceurl) matches the installed PDF Viewer version.
+- For import issues, ensure JSON keys match the PDF field `name` values.
+
## See also
- [Form Designer overview](./overview)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/forms/form-validation.md b/Document-Processing/PDF/PDF-Viewer/react/forms/form-validation.md
index c353e7af71..bad17183fb 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/forms/form-validation.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/forms/form-validation.md
@@ -2,15 +2,14 @@
layout: post
title: Form validation in the React PDF Viewer component | Syncfusion
description: Learn how to enable built-in form field validation and validate missing required fields in the Syncfusion React PDF Viewer.
-platform: document-processing
+platform: react
control: PDF Viewer
documentation: ug
---
# Validate PDF Form Fields in React PDF Viewer
-The Syncfusion **React PDF Viewer** provides built in support for **validating form fields** before users perform actions such as **printing**, **downloading**, or **submitting** a PDF document. Validation ensures that all required form fields are filled before allowing these actions to complete.
-This feature helps enforce data completeness and improves the reliability of collected form data.
+The Syncfusion React PDF Viewer provides built-in support for validating form fields before users perform actions such as printing, downloading, or submitting a PDF document. Validation ensures that required form fields are completed before allowing these actions. This improves data completeness and reliability.
## How PDF Form Validation Works
@@ -19,7 +18,7 @@ Form field validation follows this flow:
- Handle the [validateFormFields](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#validateformfields) event to determine which required fields are not filled.
- When validation is enabled and a user attempts to print, download, or submit the document:
- The [validateFormFields](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#validateformfields) event is triggered.
- - Unfilled required fields are listed in args.nonFillableFields.
+ - Unfilled required fields are provided in the event arguments (typically as `args.formField`; older versions may use `args.nonFillableFields`).
- You can cancel the action, show an error message, or move focus to an invalid field.
## Enable PDF Form Field Validation
diff --git a/Document-Processing/PDF/PDF-Viewer/react/forms/group-form-fields.md b/Document-Processing/PDF/PDF-Viewer/react/forms/group-form-fields.md
index 8c02230b9e..43982c1880 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/forms/group-form-fields.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/forms/group-form-fields.md
@@ -9,9 +9,7 @@ documentation: ug
# Group form fields in React PDF Viewer
-The **Syncfusion React PDF Viewer** allows you to **group multiple form fields into a single logical field** by assigning the **same Name** to them. Grouped form fields share their values and states automatically based on the field type. You can group form fields using the **Form Designer UI** or **programmatically using APIs**, making it easy to keep related fields synchronized across the PDF document.
-
-This page covers:
+The **Syncfusion React PDF Viewer** allows grouping multiple form fields into a single logical field by assigning the same `Name` to them. Grouped form fields share their values and states automatically based on the field type. Use the Form Designer UI for manual grouping or the Form Designer APIs for programmatic grouping to keep related fields synchronized across the document.
- [How form field grouping works](#how-grouping-works)
- [Field behavior based on type](#field-behavior-by-type)
- [How to group form fields using the UI](#group-using-the-form-designer-ui)
@@ -20,17 +18,17 @@ This page covers:
## How grouping works
-In a PDF form, multiple PDF Form Fields can represent the same logical form field. When PDF Form Fields share the same **Name**, they are treated as a group and stay synchronized.
+In a PDF form, multiple widgets can represent the same logical form field. When widgets share the same `Name`, they are treated as a group and remain synchronized.
## Field behavior by type
-- **Textbox and Password** — Text entered in one widget appears in all widgets with the same Name.
-- **CheckBox** — Checking one widget sets the checked state for all checkboxes with the same Name.
-- **RadioButton** — Widgets with the same Name form a radio group; only one option can be selected.
-- **ListBox and DropDown** — The selected value is shared across widgets with the same Name.
+- **Textbox and Password** — Text entered in one widget appears in all widgets with the same name.
+- **CheckBox** — Checking one widget sets the checked state for all checkboxes with the same name.
+- **RadioButton** — Widgets with the same name form a radio group; only one option can be selected.
+- **ListBox and DropDown** — The selected value is shared across widgets with the same name.
- **Signature and Initial fields** — Applied signature/initial is mirrored across grouped widgets.
-N>Form field grouping is controlled by the **Name** property. The position of each widget is determined only by its bounds; grouping is not affected by location.
+N> form field grouping is controlled by the `Name` property. The position of each widget is determined by its bounds; grouping is independent of location.
## Group using the Form Designer UI
diff --git a/Document-Processing/PDF/PDF-Viewer/react/forms/import-export-form-fields/export-form-fields.md b/Document-Processing/PDF/PDF-Viewer/react/forms/import-export-form-fields/export-form-fields.md
index eabb468834..3371cc992e 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/forms/import-export-form-fields/export-form-fields.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/forms/import-export-form-fields/export-form-fields.md
@@ -9,194 +9,132 @@ documentation: ug
# Export PDF Form Data from React PDF Viewer
-The PDF Viewer allows you to export form field data in multiple formats for easy storage or integration. Supported formats:
+This guide shows concise, actionable steps to export PDF form field data for storage or integration. It covers:
-- [FDF](#export-as-fdf)
-- [XFDF](#export-as-xfdf)
-- [JSON](#export-as-json)
-- [JavaScript Object](#export-as-object) (for custom persistence)
+- Exporting as [FDF](#3-export-as-fdf), [XFDF](#4-export-as-xfdf), and [JSON](#5-export-as-json) using [`exportFormFields()`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#exportformfields).
+- Exporting as a [JavaScript object](#6-export-as-a-javascript-object) using [`exportFormFieldsAsObject()`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#exportformfieldsasobject).
-## Available methods
+## Steps
-- [exportFormFields](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#exportformfields)(destination?, format) — Exports data to a file in the specified format.
-- [exportFormFieldsAsObject](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#exportformfieldsasobject)(format) — Exports data as a JavaScript object for custom handling.
-- [importFormFields](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#importformfields)(sourceOrObject, format) — Import data back into the PDF.
+### 1. Configure the PDF Viewer
-## How to export
+Install and import the viewer with required services.
-Use [exportFormFields()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#exportformfields) with an optional destination path and the format type.
+{% highlight ts %}
+import {
+ PdfViewerComponent, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
+ ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner,
+ PageOrganizer, Inject, Print, FormFieldDataFormat
+} from '@syncfusion/ej2-react-pdfviewer';
+import { RefObject, useRef } from 'react';
+{% endhighlight %}
-### Export as FDF
-The following example exports form field data as FDF.
+### 2. Initialize ref
-{% tabs %}
-{% highlight js tabtitle="index.js" %}
-import * as ReactDOM from 'react-dom/client';
-import React, { useRef } from 'react';
-import './index.css';
-import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView, ThumbnailView, TextSelection, Annotation, FormFields, FormDesigner, Inject, FormFieldDataFormat } from '@syncfusion/ej2-react-pdfviewer';
-
-function App() {
- const viewerRef = useRef(null);
-
- const onExportFdf = () => {
- // Data must be the desired path or file name for the exported document.
- viewerRef.current?.exportFormFields('ExportedData', FormFieldDataFormat.Fdf);
- };
-
- return (
-
-
-
-
-
-
- );
-}
+Initialize the viewer with a `ref` so you can call export methods.
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
+{% highlight ts %}
+const viewerRef: RefObject = useRef(null);
{% endhighlight %}
-{% endtabs %}
-### Export as XFDF
-The following example exports form field data as XFDF.
+### 3. Export as FDF
-{% tabs %}
-{% highlight js tabtitle="index.js" %}
-import * as ReactDOM from 'react-dom/client';
-import React, { useRef } from 'react';
-import './index.css';
-import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView, ThumbnailView, TextSelection, Annotation, FormFields, FormDesigner, Inject, FormFieldDataFormat } from '@syncfusion/ej2-react-pdfviewer';
-
-function App() {
- const viewerRef = useRef(null);
-
- const onExportXfdf = () => {
- // Data must be the desired path or file name for the exported document.
- viewerRef.current?.exportFormFields('FormData', FormFieldDataFormat.Xfdf);
- };
-
- return (
-
-
-
-
-
-
- );
-}
+Use [`exportFormFields(destination?, FormFieldDataFormat.Fdf)`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#exportformfields) to download an FDF file.
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
+{% highlight ts %}
+viewerRef.current?.exportFormFields('FormData', FormFieldDataFormat.Fdf);
{% endhighlight %}
-{% endtabs %}
-### Export as JSON
-The following example exports form field data as JSON.
+### 4. Export as XFDF
-{% tabs %}
-{% highlight js tabtitle="index.js" %}
-import * as ReactDOM from 'react-dom/client';
-import React, { useRef } from 'react';
-import './index.css';
-import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView, ThumbnailView, TextSelection, Annotation, FormFields, FormDesigner, Inject, FormFieldDataFormat } from '@syncfusion/ej2-react-pdfviewer';
-
-function App() {
- const viewerRef = useRef(null);
-
- const onExportJson = () => {
- // Data must be the desired path or file name for the exported document.
- viewerRef.current?.exportFormFields('FormData', FormFieldDataFormat.Json);
- };
-
- return (
-
-
-
-
-
-
- );
-}
+Use [`FormFieldDataFormat.Xfdf`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formfielddataformat) to export XFDF.
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
+{% highlight ts %}
+viewerRef.current?.exportFormFields('FormData', FormFieldDataFormat.Xfdf);
{% endhighlight %}
-{% endtabs %}
-### Export as Object
+### 5. Export as JSON
-Use [exportFormFieldsAsObject()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#exportformfieldsasobject) to obtain form data as a JavaScript object for database or API integration.
+Use [`FormFieldDataFormat.Json`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formfielddataformat) to export form data as a JSON file.
+
+{% highlight ts %}
+viewerRef.current?.exportFormFields('FormData', FormFieldDataFormat.Json);
+{% endhighlight %}
+
+### 6. Export as a JavaScript object
+
+Use [`exportFormFieldsAsObject(format)`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#exportformfieldsasobject) to get data for API calls or storing in a database.
+
+{% highlight ts %}
+const data = await viewerRef.current?.exportFormFieldsAsObject();
+{% endhighlight %}
+
+## Complete example
+
+The example below provides a single page with buttons to export in all supported formats. It uses the same imports shown above and is ready to run in a typical React app.
{% tabs %}
-{% highlight js tabtitle="index.js" %}
-import * as ReactDOM from 'react-dom/client';
-import React, { useRef } from 'react';
-import './index.css';
-import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView, ThumbnailView, TextSelection, Annotation, FormFields, FormDesigner, Inject, FormFieldDataFormat } from '@syncfusion/ej2-react-pdfviewer';
-
-function App() {
- const viewerRef = useRef(null);
-
- const onExportObject = async () => {
- const data = await viewerRef.current?.exportFormFieldsAsObject(FormFieldDataFormat.Fdf);
- // Save or send to server
- console.log('Exported object:', data);
-
- // Alternative formats:
- // await viewerRef.current?.exportFormFieldsAsObject(FormFieldDataFormat.Xfdf);
- // await viewerRef.current?.exportFormFieldsAsObject(FormFieldDataFormat.Json);
- };
-
- return (
-
+ );
}
-
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
+{% endraw %}
{% endhighlight %}
{% endtabs %}
-## Common Use Cases
+[View Sample on GitHub](https://github.com/SyncfusionExamples/react-pdf-viewer-examples)
-- Save user-entered data to your server without altering the original PDF.
-- Export as JSON for REST API integration.
-- Export as FDF/XFDF for compatibility with other PDF tools.
-- Export as Object to merge with app state or store securely.
-- Automate exports after [validation](../form-validation) using [validateFormFields()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#validateformfields)
+## Troubleshooting
-[View Sample on GitHub](https://github.com/SyncfusionExamples/react-pdf-viewer-examples)
+- Ensure `FormFields` and [`FormDesigner`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formdesigner) services are injected when using form APIs.
+- Confirm [`resourceUrl`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#resourceurl) points to the matching `ej2-pdfviewer-lib` version.
+- If exports fail in restrictive browsers, check popup/download settings and CORS for hosted endpoints.
+- For server-side persistence, use [`exportFormFieldsAsObject()`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#exportformfieldsasobject) and send the result to your API.
## See also
diff --git a/Document-Processing/PDF/PDF-Viewer/react/forms/import-export-form-fields/import-export-events.md b/Document-Processing/PDF/PDF-Viewer/react/forms/import-export-form-fields/import-export-events.md
index ed5a42884c..d94c3fd9a8 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/forms/import-export-form-fields/import-export-events.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/forms/import-export-form-fields/import-export-events.md
@@ -9,8 +9,9 @@ documentation: ug
# PDF Form Import and Export Events in React
-Import/Export events let you **track and customize the entire life cycle** of form data being imported into or exported from the PDF Viewer.
-Use these events to:
+Import and export events enable tracking and customization of the full life cycle of form data imported into or exported from the PDF Viewer.
+
+Use events to:
- Validate inputs before processing.
- Show progress indicators.
- Log audit trails.
diff --git a/Document-Processing/PDF/PDF-Viewer/react/forms/import-export-form-fields/import-form-fields.md b/Document-Processing/PDF/PDF-Viewer/react/forms/import-export-form-fields/import-form-fields.md
index 83521c69c3..0fa5e1ff68 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/forms/import-export-form-fields/import-form-fields.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/forms/import-export-form-fields/import-form-fields.md
@@ -7,186 +7,87 @@ control: PDF Viewer
documentation: ug
---
-# Import PDF Form Data into React PDF Viewer
+# Import PDF Form Data into the React PDF Viewer
-The **PDF Viewer** lets you import values into interactive form fields in the currently loaded PDF. You can import data from these formats:
+This guide shows how to import form field values into an already loaded PDF in the EJ2 React PDF Viewer. **Supported import formats**: FDF, XFDF, JSON, and importing from a JavaScript object.
-- [FDF](#import-as-fdf)
-- [XFDF](#import-xfdf)
-- [JSON](#import-json)
+## Steps to import data
-## API to use
-- [importFormFields](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#importformfields)(sourceOrObject, format)
+1. Import the viewer, inject `FormFields` / `FormDesigner` services, and create a `ref` to call `importFormFields`.
-N>If you’re using a **server-backed viewer**, set serviceUrl before importing.
+2. Call [`importFormFields(data, format)`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#importformfields) where `format` is one of `FormFieldDataFormat.Fdf`, `FormFieldDataFormat.Xfdf`, or `FormFieldDataFormat.Json`. `data` may be a file path (for server/file-based imports) / base64 string or a JavaScript object mapping field names to values.
-### Import FDF
+3. Verify the form fields are populated after the import completes. For server-backed imports, ensure [`serviceUrl`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#serviceurl) is configured and the import file is accessible by the server.
-{% tabs %}
-{% highlight js tabtitle="index.js" %}
-import * as ReactDOM from 'react-dom/client';
-import React, { useRef } from 'react';
-import './index.css';
-import {
- PdfViewerComponent,
- Toolbar,
- Magnification,
- Navigation,
- Annotation,
- LinkAnnotation,
- ThumbnailView,
- BookmarkView,
- TextSelection,
- FormFields,
- FormDesigner,
- Inject,
- FormFieldDataFormat
-} from '@syncfusion/ej2-react-pdfviewer';
+## Example
-function App() {
- const viewerRef = useRef(null);
-
- const importFdf = () => {
- // The file for importing should be accessible at the given path or as a file stream depending on your integration
- viewerRef.current?.importFormFields('File', FormFieldDataFormat.Fdf);
- };
-
- return (
-
-
-
-
-
-
- );
-}
-
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
-{% endhighlight %}
-{% endtabs %}
-
-### Import XFDF
+The example below provides a minimal React app with four buttons to import FDF, XFDF, JSON, or an object. Replace the import file identifiers (`'File'`) with your file path or implement a file upload to pass a Blob/stream.
{% tabs %}
{% highlight js tabtitle="index.js" %}
-import * as ReactDOM from 'react-dom/client';
-import React, { useRef } from 'react';
-import './index.css';
+{% raw %}
+import { RefObject, useRef } from 'react';
import {
- PdfViewerComponent,
- Toolbar,
- Magnification,
- Navigation,
- Annotation,
- LinkAnnotation,
- ThumbnailView,
- BookmarkView,
- TextSelection,
- FormFields,
- FormDesigner,
- Inject,
- FormFieldDataFormat
+ PdfViewerComponent, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
+ ThumbnailView, BookmarkView, TextSelection, FormFields, FormDesigner, Inject,
+ PageOrganizer, Print, FormFieldDataFormat
} from '@syncfusion/ej2-react-pdfviewer';
-function App() {
- const viewerRef = useRef(null);
-
- const importXfdf = () => {
- // The file for importing should be accessible at the given path or as a file stream depending on your integration
- viewerRef.current?.importFormFields('File', FormFieldDataFormat.Xfdf);
- };
-
- return (
-
-
-
-
-
-
- );
+export default function App() {
+ const viewerRef: RefObject = useRef(null);
+
+ // The file for importing should be accessible at the given path or as a base 64 string depending on your integration
+ const importFdf = () => viewerRef.current?.importFormFields('File', FormFieldDataFormat.Fdf);
+ const importXfdf = () => viewerRef.current?.importFormFields('File', FormFieldDataFormat.Xfdf);
+ const importJson = () => viewerRef.current?.importFormFields('File', FormFieldDataFormat.Json);
+ // Import from a JavaScript object (fieldName: value)
+ const importFromObject = () => {
+ const formDataObject = {
+ 'fullname': 'Jane Doe',
+ 'email': 'jane.doe@example.com',
+ 'agreeTerms': 'yes'
+ };
+ viewerRef.current?.importFormFields(JSON.stringify(formDataObject), FormFieldDataFormat.Json);
+ };
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+ );
}
-
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
-{% endhighlight %}
-{% endtabs %}
-
-### Import JSON
-
-{% tabs %}
-{% highlight js tabtitle="index.js" %}
-import * as ReactDOM from 'react-dom/client';
-import React, { useRef } from 'react';
-import './index.css';
-import {
- PdfViewerComponent,
- Toolbar,
- Magnification,
- Navigation,
- Annotation,
- LinkAnnotation,
- ThumbnailView,
- BookmarkView,
- TextSelection,
- FormFields,
- FormDesigner,
- Inject,
- FormFieldDataFormat
-} from '@syncfusion/ej2-react-pdfviewer';
-
-function App() {
- const viewerRef = useRef(null);
-
- const importJson = () => {
- // The file for importing should be accessible at the given path or as a file stream depending on your integration
- viewerRef.current?.importFormFields('File', FormFieldDataFormat.Json);
- };
-
- return (
-
-
-
-
-
-
- );
-}
-
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
+{% endraw %}
{% endhighlight %}
{% endtabs %}
-## Common Use Cases
+**Expected result**: The loaded PDF's interactive form fields are populated with the values from the imported file/object. For object imports, fields matching the object keys receive the provided values.
-- Pre-fill application forms from a database using JSON.
-- Migrate data from other PDF tools using FDF/XFDF.
-- Restore user progress saved locally or on the server.
-- Combine with validation to block print/download until required fields are completed.
+## Troubleshooting
-[View Sample on GitHub](https://github.com/SyncfusionExamples/react-pdf-viewer-examples)
+- If imports do not populate fields, confirm the field names in the source match the PDF form field names.
+- For file-based imports, ensure you use server mode and that the import file is accessible to the viewer.
+- If using a Blob, pass the encoded base64 string of Blob/stream instead of the string `'File'`.
+- Check browser console for network errors when the viewer attempts to fetch import files.
## See also
diff --git a/Document-Processing/PDF/PDF-Viewer/react/forms/manage-form-fields/create-form-fields.md b/Document-Processing/PDF/PDF-Viewer/react/forms/manage-form-fields/create-form-fields.md
index 2b5b6401e8..c97494df3d 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/forms/manage-form-fields/create-form-fields.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/forms/manage-form-fields/create-form-fields.md
@@ -9,24 +9,30 @@ documentation: ug
# Create PDF Form Fields in React
-You can create or add new form fields either visually using the [Form Designer UI](https://document.syncfusion.com/demos/pdf-viewer/react/#/tailwind3/pdfviewer/form-designer) or dynamically using APIs.
+Create or add new form fields visually with the Form Designer UI or programmatically using the React PDF Viewer API. This guide explains both methods and shows field‑specific examples and a complete runnable example.
-## Create Form Fields Using the Form Designer UI
-Use this approach when you want to design forms manually without writing code.
+**Outcome:**
-**Steps:**
+The guide explains the following:
+- How to add fields with the Form Designer UI.
+- How to add and edit fields programmatically (API).
+- How to add common field types: Textbox, Password, CheckBox, RadioButton, ListBox, DropDown, Signature, Initial.
-1. Enable [Form Designer](../form-designer) mode in the PDF Viewer.
-2. Click a form field type (Textbox, Checkbox, Dropdown, etc.) from the toolbar.
-3. Click on the PDF page to place the form field.
-4. Move or resize the field as required.
-5. Configure field properties using the **Properties** panel.
+## Steps
+
+### 1. Create form fields using Form Designer UI.
+
+- Enable the Form Designer mode in the PDF Viewer. See [Form Designer overview](../overview).
+- Select a field type from the toolbar and click the PDF page to place it.
+- Move/resize the field and configure properties in the **Properties** panel.

-## Add Form Fields Programmatically (API)
+### 2. Create Form fields programmatically
+
+Use [`addFormField`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formdesigner#addformfield) method of the [formDesigner](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formdesigner) module inside the viewer's [`documentLoad`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#documentload) handler or in response to user actions.
-Use this approach when you want to generate form fields dynamically based on data or application logic.
+Use this approach to generate form fields dynamically based on data or application logic.
{% tabs %}
{% highlight js tabtitle="index.js" %}
@@ -72,16 +78,17 @@ root.render();
- Pre-filling forms from databases
- Automating form creation workflows
-## PDF Form Field Types and How to Add Them
-Each field can be added via the **Form Designer** or **programmatically**.
+## Field‑specific instructions
+
+Below are concise UI steps and the programmatic examples for each common field type. The code samples below are complete per‑field examples you can reuse unchanged.
### Textbox
-**Add via Toolbar (UI)**
-- Open **Form Designer** → select **Textbox** → click on the page → configure in **Properties**.
+**Add via UI**: Open Form Designer toolbar → select Textbox → click page → configure properties
+

-**Add Programmatically (API)**
+**Add Programmatically (API)**:
{% tabs %}
{% highlight js tabtitle="index.js" %}
@@ -127,11 +134,11 @@ root.render();
### Password
-**Add via Toolbar (UI)**
-- Select **Password** → place it → configure tooltip, required, max length.
+**Add via UI**: Open form designer toolbar → Select Password → place → configure properties
+

-**Add Programmatically (API)**
+**Add Programmatically (API)**:
{% tabs %}
{% highlight js tabtitle="index.js" %}
@@ -176,11 +183,12 @@ root.render();
{% endtabs %}
### CheckBox
-**Add via Toolbar (UI)**
-- Select **CheckBox** → click to place → duplicate for options → set isChecked, tooltip, appearance.
+
+**Add via UI**: Open form designer toolbar → Select CheckBox → click to place → duplicate for options.
+

-**Add Programmatically (API)**
+**Add Programmatically (API)**:
{% tabs %}
{% highlight js tabtitle="index.js" %}
@@ -224,11 +232,12 @@ root.render();
{% endtabs %}
### RadioButton
-**Add via Toolbar (UI)**
-- Select **RadioButton** → place buttons with the **same Name** to group → configure selection/colors.
+
+**Add via UI**: Open form designer toolbar → Select RadioButton → place buttons using the same `name` to group them.
+

-**Add Programmatically (API)**
+**Add Programmatically (API)**:
{% tabs %}
{% highlight js tabtitle="index.js" %}
@@ -279,11 +288,12 @@ root.render();
{% endtabs %}
### ListBox
-**Add via Toolbar (UI)**
-- Select **ListBox** → place → add items in **Properties**.
+
+**Add via UI**: Open form designer toolbar → Select ListBox → place → add items in Properties.
+

-**Add Programmatically (API)**
+**Add Programmatically (API)**:
{% tabs %}
{% highlight js tabtitle="index.js" %}
@@ -332,11 +342,12 @@ root.render();
{% endtabs %}
### DropDown
-**Add via Toolbar (UI)**
-- Select **DropDown** → place → add items → set default value.
+
+**Add via UI**: Open form designer toolbar → Select DropDown → place → add items → set default value.
+

-**Add Programmatically (API)**
+**Add Programmatically (API)**:
{% tabs %}
{% highlight js tabtitle="index.js" %}
@@ -384,11 +395,12 @@ root.render();
{% endtabs %}
### Signature Field
-**Add via Toolbar (UI)**
-- Select **Signature Field** → place where signing is required → configure indicator text, thickness, tooltip, required.
+
+**Add via UI**: Open form designer toolbar → select Signature Field → place where signing is required → configure indicator text/thickness/tooltip/isRequired.
+

-**Add Programmatically (API)**
+**Add Programmatically (API)**:
{% tabs %}
{% highlight js tabtitle="index.js" %}
@@ -431,11 +443,12 @@ root.render();
{% endtabs %}
### Initial Field
-**Add via Toolbar (UI)**
-- Select **Initial Field** → place where initials are needed → configure text and required state.
+
+**Add via UI**: Open form designer toolbar → select Initial Field → place where initials are needed → configure text/isRequired.
+

-**Add Programmatically (API)**
+**Add Programmatically (API)**:
{% tabs %}
{% highlight js tabtitle="index.js" %}
@@ -477,11 +490,11 @@ root.render();
{% endhighlight %}
{% endtabs %}
-## Add Fields Dynamically with setFormFieldMode
+## Add fields dynamically with setFormFieldMode
-Use **setFormFieldMode()** to add fields on the fly based on user actions.
+Use [`setFormFieldMode()`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formdesigner#setformfieldmode) to switch the designer into a specific field mode and let users add fields on the fly.
-### Edit Form Fields in TypeScript PDF Viewer
+### Edit Form Fields in React PDF Viewer
You can edit form fields using the UI or API.
#### Edit Using the UI
@@ -490,6 +503,7 @@ You can edit form fields using the UI or API.
- Use the toolbar to toggle field mode or add new fields.
#### Edit Programmatically
+
{% tabs %}
{% highlight js tabtitle="index.js" %}
import * as ReactDOM from 'react-dom/client';
@@ -556,7 +570,12 @@ root.render();
[View Sample on GitHub](https://github.com/SyncfusionExamples/react-pdf-viewer-examples)
-## See Also
+## Troubleshooting
+
+- If fields do not appear, verify [`resourceUrl`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#resourceurl) matches the EJ2 PDF Viewer library version and that the document loads correctly.
+- If using WASM or additional services, confirm those resources are reachable from the environment.
+
+## Related topics
- [Form Designer overview](../overview)
- [Form Designer Toolbar](../../toolbar-customization/form-designer-toolbar)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/forms/manage-form-fields/customize-form-fields.md b/Document-Processing/PDF/PDF-Viewer/react/forms/manage-form-fields/customize-form-fields.md
index fffdb95d94..dacb315180 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/forms/manage-form-fields/customize-form-fields.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/forms/manage-form-fields/customize-form-fields.md
@@ -11,14 +11,14 @@ documentation: ug
**Styling** customizes appearance only (font, color, alignment, border, background, indicator text).
-## Customize Appearance of Form Fields Using the UI
+## Customize appearance of form fields using the UI
Use the **Properties** panel to adjust:
-- Font family/size, text color, alignment
-- Border color/thickness
+- Font family and size, text color, and alignment
+- Border color and thickness
- Background color
-
+
-## Customize appearance Form Fields Programmatically
+## Customize appearance of form fields programmatically
Use [updateFormField()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#updateformfields) to apply styles:
{% tabs %}
diff --git a/Document-Processing/PDF/PDF-Viewer/react/forms/manage-form-fields/modify-form-fields.md b/Document-Processing/PDF/PDF-Viewer/react/forms/manage-form-fields/modify-form-fields.md
index 6e9d67cfed..f4cfb8974e 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/forms/manage-form-fields/modify-form-fields.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/forms/manage-form-fields/modify-form-fields.md
@@ -9,16 +9,16 @@ documentation: ug
# Modify PDF Form Field Properties in React
-You can modify form fields using the **UI** or **API**.
+Modify form fields using the UI or programmatically via the API.
-## Modify PDF Form Field Properties using the UI
+## Modify PDF form field properties using the UI
- Right click a field → **Properties** to update settings.
-
+
- Drag to move; use handles to resize.
- Use the toolbar to toggle field mode or add new fields.
-## Modify PDF Form Field Properties programmatically
-Use [updateFormField()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#updateformfields) to change behavior/data (including position and size):
+## Modify PDF form field properties programmatically
+Use [updateFormField()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#updateformfields) to change behavior or data (including position and size):
{% tabs %}
{% highlight js tabtitle="index.js" %}
@@ -75,7 +75,7 @@ root.render();
### Textbox
- UI: Update value, font, size, colors, border thickness, alignment, max length, multiline.
-
+
- API: [updateFormField()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#updateformfields) for value, typography, alignment, colors, borders.
{% tabs %}
@@ -132,7 +132,7 @@ root.render();
### Password
- UI: Tooltip, required, max length, font, appearance.
-
+
- API: [updateFormField()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#updateformfields) for tooltip, validation flags, typography, colors, alignment, borders.
{% tabs %}
@@ -191,7 +191,7 @@ root.render();
### CheckBox
- UI: Toggle checked state.
-
+
- API: [updateFormField()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#updateformfields) for isChecked, tooltip, colors, borders.
{% tabs %}
{% highlight js tabtitle="index.js" %}
@@ -241,9 +241,9 @@ root.render();
{% endtabs %}
### RadioButton
-• UI: Set selected item in a group (same Name).
-
-• API: [updateFormField()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#updateformfields) to set selected value and border appearance.
+- UI: Set selected item in a group (same Name).
+
+- API: [updateFormField()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#updateformfields) to set selected value and border appearance.
{% tabs %}
{% highlight js tabtitle="index.js" %}
@@ -288,9 +288,9 @@ root.render();
{% endtabs %}
### ListBox
-• UI: Add/remove items, set selection, adjust fonts/colors.
-
-• API: [updateFormField()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#updateformfields) for items, selection, borders.
+- UI: Add/remove items, set selection, adjust fonts/colors.
+
+- API: [updateFormField()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#updateformfields) for items, selection, borders.
{% tabs %}
{% highlight js tabtitle="index.js" %}
@@ -346,9 +346,9 @@ root.render();
{% endtabs %}
### DropDown
-• UI: Add/remove items, default value, appearance.
-
-• API: [updateFormField()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#updateformfields) for items, value, borders.
+- UI: Add/remove items, default value, appearance.
+
+- API: [updateFormField()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#updateformfields) for items, value, borders.
{% tabs %}
{% highlight js tabtitle="index.js" %}
import * as ReactDOM from 'react-dom/client';
@@ -403,9 +403,9 @@ root.render();
{% endtabs %}
### Signature Field
-• UI: Tooltip, thickness, indicator text, required/visibility.
-
-• API: [updateFormField()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#updateformfields) for tooltip, required, colors, borders.
+- UI: Tooltip, thickness, indicator text, required/visibility.
+
+- API: [updateFormField()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#updateformfields) for tooltip, required, colors, borders.
{% tabs %}
{% highlight js tabtitle="index.js" %}
import * as ReactDOM from 'react-dom/client';
@@ -455,9 +455,9 @@ root.render();
{% endtabs %}
### Initial Field
-• UI: Tooltip, indicator text, thickness, required/visibility.
-
-• API: [updateFormField()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#updateformfields) for tooltip, required, colors, borders.
+- UI: Tooltip, indicator text, thickness, required/visibility.
+
+- API: [updateFormField()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#updateformfields) for tooltip, required, colors, borders.
{% tabs %}
{% highlight js tabtitle="index.js" %}
import * as ReactDOM from 'react-dom/client';
diff --git a/Document-Processing/PDF/PDF-Viewer/react/forms/manage-form-fields/move-resize-form-fields.md b/Document-Processing/PDF/PDF-Viewer/react/forms/manage-form-fields/move-resize-form-fields.md
index 1f0d601638..4cc6618915 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/forms/manage-form-fields/move-resize-form-fields.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/forms/manage-form-fields/move-resize-form-fields.md
@@ -8,15 +8,18 @@ documentation: ug
---
# Move and Resize PDF Form Fields in React
-- **Move**: Drag the form field to reposition it.
-- **Resize**: Use the resize handles to change width and height.
+The PDF Viewer supports moving and resizing form fields.
-
+- **Move**: drag the form field to reposition it.
+- **Resize**: use the resize handles to change width and height.
-## Move and Resize Fields Programmatically (API)
-You can set absolute bounds or move fields by a delta.
+
-**Set absolute bounds**
+## Move and resize fields programmatically
+
+The API supports setting absolute bounds or moving fields by a delta.
+
+### Set absolute bounds
{% tabs %}
{% highlight js tabtitle="index.js" %}
diff --git a/Document-Processing/PDF/PDF-Viewer/react/forms/manage-form-fields/remove-form-fields.md b/Document-Processing/PDF/PDF-Viewer/react/forms/manage-form-fields/remove-form-fields.md
index a32b9a0901..97b49cb3a9 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/forms/manage-form-fields/remove-form-fields.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/forms/manage-form-fields/remove-form-fields.md
@@ -10,15 +10,18 @@ documentation: ug
# Remove PDF Form Fields from a PDF in React
-## Remove Form Fields Using the UI
+The PDF Viewer supports removing form fields using the Form Designer UI or programmatically via the API.
+
+## Remove form fields using the UI
**Steps:**
-1. Enable **Form Designer mode**.
-2. Select the form field.
-3. Click **Delete** in the toolbar or press the **Delete** key.
-
+1. Enable **Form Designer** mode.
+2. Select the form field.
+3. Click **Delete** in the toolbar or press the **Delete** key.
+
+
-## Remove Form Fields Programmatically
-Use **deleteFormField()** with a field reference or ID.
+## Remove form fields programmatically
+Use `deleteFormField()` with a field reference or the field `id`. The method accepts either a field object returned by `retrieveFormFields()` or a numeric/string id. Example usage is shown in the code sample below.
{% tabs %}
{% highlight js tabtitle="index.js" %}
diff --git a/Document-Processing/PDF/PDF-Viewer/react/forms/overview-create-forms.md b/Document-Processing/PDF/PDF-Viewer/react/forms/overview-create-forms.md
index f370aaac85..4c8463c6cd 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/forms/overview-create-forms.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/forms/overview-create-forms.md
@@ -7,10 +7,9 @@ control: PDF Viewer
documentation: ug
---
-# Create, Edit, Style, and Remove Form Fields in React PDF Viewer
+# Create, edit, style, and remove form fields in React PDF Viewer
-The [React PDF Viewer](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/overview) allows you to create interactive PDF form fields, update their behavior and appearance, and remove them when they are no longer needed.
-All form field operations can be performed using either the [Form Designer user interface (UI)](https://document.syncfusion.com/demos/pdf-viewer/react/#/tailwind3/pdfviewer/form-designer) or [React APIs.](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/overview)
+The [React PDF Viewer](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/overview) enables creation of interactive PDF form fields, modification of their behavior and appearance, and removal when no longer required. All form-field operations can be performed using either the [Form Designer user interface (UI)](https://document.syncfusion.com/demos/pdf-viewer/react/#/tailwind3/pdfviewer/form-designer) or the React APIs.
This section explains how to:
diff --git a/Document-Processing/PDF/PDF-Viewer/react/forms/overview.md b/Document-Processing/PDF/PDF-Viewer/react/forms/overview.md
index dec60d2350..6c268df4b9 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/forms/overview.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/forms/overview.md
@@ -9,9 +9,12 @@ documentation: ug
# Overview of Forms in React PDF Viewer
-The Syncfusion PDF Viewer delivers a complete, easy-to-use PDF forms experience. You can read, fill, add, edit, and delete form fields directly within your PDF documents. These actions are supported through both the intuitive user interface and powerful programmatic APIs.
+The Syncfusion React PDF Viewer delivers a complete, easy-to-use PDF forms experience. Users can read, fill, add, edit, and delete form fields directly within PDF documents through the viewer UI or programmatically via the React APIs.
-The viewer also includes smooth import and export support for form data, making integration effortless. Developers benefit from extensive API control, while end users enjoy a clean and simple interface designed for a seamless and stress-free form-filling experience.
+The viewer includes import and export support for form data, simplifying integration with backend systems. Developers have fine-grained API control while end users interact with a streamlined form-filling interface.
+
+Check out the following video to learn how to use the Form Fields in the React PDF Viewer.
+{% youtube "https://www.youtube.com/watch?v=MUWTCg1MoAE" %}
## Filling PDF Forms
diff --git a/Document-Processing/PDF/PDF-Viewer/react/forms/read-form-field-values.md b/Document-Processing/PDF/PDF-Viewer/react/forms/read-form-field-values.md
new file mode 100644
index 0000000000..d94eed5563
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/forms/read-form-field-values.md
@@ -0,0 +1,106 @@
+---
+layout: post
+title: Read and Extract PDF Form Field Values in React | Syncfusion
+description: Learn how to read and extract values from PDF form fields in the EJ2 React PDF Viewer, including text, checkboxes, radio buttons, dropdowns, and signatures.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Read and Extract PDF Form Field Values in React PDF Viewer
+
+The React PDF Viewer allows you to read the values of interactive PDF form fields including textboxes, checkboxes, radio buttons, dropdowns, signatures, and more. Use the APIs below to retrieve form data programmatically for validation, submission, or syncing with your app state.
+
+This guide shows common patterns with concise code snippets you can copy into your React components.
+
+## Access the Form Field Collection
+
+Get all available form field data by reading viewer's `formFieldCollections`. For more information, see [`formFieldCollections`](./form-fields-api#formfieldcollections).
+
+```ts
+const formFields = viewer.formFieldCollections;
+```
+
+## Read Text Field Values
+
+Find the text field by name and read its value property. For more information, see [`formFieldCollections`](./form-fields-api#formfieldcollections).
+
+```ts
+const formFields = viewer.formFieldCollections;
+const name = (formFields.find(field => field.type === 'Textbox' && field.name === 'name')).value;
+```
+
+## Read Checkbox / Radio Button Values
+
+Check whether a checkbox or radio button is selected by reading its `isChecked` value. For more information, see [`formFieldCollections`](./form-fields-api#formfieldcollections).
+
+```ts
+const formFields = viewer.formFieldCollections;
+const radioButtons = formFields.filter(field => a.type === 'RadioButton' && a.name === 'gender');
+const checkedField = (radioButtons.find(field => field.isChecked)).name;
+```
+
+## Read Dropdown values
+
+Read the dropdown’s selected option by accessing `value` property. For more information, see [`formFieldCollections`](./form-fields-api#formfieldcollections).
+
+```ts
+const formFields = viewer.formFieldCollections;
+const state = (formFields.find(field => field.type === 'DropdownList' && field.name === 'state')).value;
+```
+
+## Read Signature Field Data
+
+This reads the signature path data stored in a signature field so it can be later converted to an image. For more information, see [`formFieldCollections`](./form-fields-api#formfieldcollections).
+
+```ts
+const formFields = viewer.formFieldCollections;
+const signData = (formFields.find(field => field.type === 'SignatureField' && field.name === 'signature')).value;
+```
+
+## Extract All Form Field Values
+
+This iterates every field in the collection and logs each field's name and value, useful for exporting or validating all form data. For more information, see [`formFieldCollections`](./form-fields-api#formfieldcollections).
+
+```ts
+const formFields = viewer.formFieldCollections;
+formFields.forEach(field => {
+ if (field.type === 'RadioButton' || field.type === 'Checkbox') {
+ console.log(`${field.name}: ${field.isChecked}`);
+ }
+ else {
+ console.log(`${field.name}: ${field.value}`);
+ }
+});
+```
+
+## Extract Form Data After Document Loaded
+
+Place your form-reading logic inside `documentLoad` event handler, so values are read after the PDF is loaded in the viewer. For more information, see [`formFieldCollections`](./form-fields-api#formfieldcollections) and [`documentLoad`](../events#documentload).
+
+```ts
+// If you need to access form data right after the PDF loads
+viewer.documentLoaded = () => {
+ const formFields = viewer.formFieldCollections;
+ const email = formFields.find(field => field.name === 'email').value;
+ console.log("Email: ", email);
+};
+```
+
+## Use Cases
+
+- Validate and pre-fill form fields in your application before user submission.
+- Submit filled form data from the viewer to a back end service for processing or storage.
+- Synchronize form field values with external UI components to keep application state in sync.
+- Export form data for reporting, archival, or integration with other systems.
+
+## Troubleshooting
+
+- Use the exact field names defined in the PDF when searching through the `formFieldCollections`.
+- If a field might be missing in some documents, add null checks.
+
+## See also
+
+- [`formFieldCollections`](./form-fields-api#formfieldcollections)
+- [`documentLoad`](../events#documentload)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/forms/submit-form-data.md b/Document-Processing/PDF/PDF-Viewer/react/forms/submit-form-data.md
new file mode 100644
index 0000000000..baa396cc70
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/forms/submit-form-data.md
@@ -0,0 +1,121 @@
+---
+layout: post
+title: Submit PDF Form Data to a Server using React PDF Viewer | Syncfusion
+description: Submit filled PDF form data from the EJ2 React PDF Viewer to a backend server, with a complete frontend example and a minimal Node receiver.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Submit PDF Form Data to a Server in React
+
+## Overview
+
+The React PDF Viewer allows submitting filled form data like text fields, checkboxes, radio buttons and dropdown values to a back end server for processing. This guide shows how to extract form data from the viewer and **post** it as `JSON` to a server endpoint.
+
+## Prerequisites
+
+- EJ2 React PDF Viewer installed and configured in your React app
+- PDF contains interactive form fields
+- The viewer must be loaded before reading values
+- If posting cross-origin, ensure CORS is enabled on the server
+
+## Steps to send data
+
+1. Enable form designer in the viewer
+
+ - Inject `FormFields` and [`FormDesigner`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formdesigner) services into the viewer so form APIs are available.
+
+2. Export form data from the viewer
+
+ - Use [`viewer.exportFormFieldsAsObject()`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#exportformfieldsasobject) to obtain the filled values as JSON.
+
+3. POST the exported JSON to your back end
+
+ - Use `fetch` to send the JSON. The server must accept `application/json` and handle CORS if cross-domain.
+
+4. Trigger submission from a UI action
+
+ - Call the export + POST flow from a button click or form submit handler.
+
+## Example
+
+This full example shows a React component with the PDF viewer and a Submit button that sends form data to `/api/submit-form`.
+
+{% tabs %}
+{% highlight ts tabtitle="App.tsx" %}
+{% raw %}
+import {
+ PdfViewerComponent, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
+ ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner,
+ PageOrganizer, Inject, Print
+} from '@syncfusion/ej2-react-pdfviewer';
+import { RefObject, useRef } from 'react';
+
+export default function SubmitFormExample() {
+ const viewerRef: RefObject = useRef(null);
+
+ const sendToServer = async (formData: any) => {
+ // Adjust URL to your server endpoint
+ const res = await fetch('/api/submit-form', {
+ method: 'POST',
+ headers: { 'Content-Type': 'application/json' },
+ body: JSON.stringify(formData)
+ });
+ if (!res.ok) {
+ throw new Error(`Server error ${res.status}`);
+ }
+ };
+
+ const handleSubmit = async () => {
+ try {
+ // exportFormFields returns a Promise resolving to form data object
+ const formData = await viewerRef.current.exportFormFieldsAsObject();
+ await sendToServer(formData);
+ console.log('Form data submitted successfully.');
+ } catch (err) {
+ console.error(err);
+ console.log('Submission failed: ' + (err as Error).message);
+ }
+ };
+
+ return (
+
+
+
+
+
+
+
+
+ );
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Troubleshooting
+
+- **No form values returned**: Ensure the PDF has interactive fields and the viewer has finished loading before calling [`exportFormFieldsAsObject()`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#exportformfieldsasobject).
+- **CORS errors**: Enable CORS on the server or serve both frontend and back end from the same origin during testing.
+- **Server rejects payload**: Confirm the server expects `application/json` and validates shape of the object.
+- **WASM or resource errors**: Ensure [`resourceUrl`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#resourceurl) points to the correct Syncfusion PDF Viewer library files.
+
+## Use cases
+
+- Enable remote verification and approval workflows by sending submitted form data to a back end service for review and sign-off.
+- Store submitted form responses in a database to persist user inputs for auditing, reporting, or later retrieval.
+- Trigger workflow automation and downstream processing by sending form data to business systems or server less functions.
+- Merge submitted values into a final flattened PDF on the server to produce a non-editable document that combines the form data with the original PDF.
+
+## Related topics
+
+- [`exportFormFieldsAsObject` API reference](./form-fields-api#exportformfieldsasobject)
+- [Export form data as object](./import-export-form-fields/export-form-fields#export-as-object)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/getting-started-overview.md b/Document-Processing/PDF/PDF-Viewer/react/getting-started-overview.md
new file mode 100644
index 0000000000..b7977b80fd
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/getting-started-overview.md
@@ -0,0 +1,33 @@
+---
+layout: post
+title: Getting started with Syncfusion React PDF Viewer component| Syncfusion
+description: Learn here all about Getting started with Syncfusion React PDF Viewer component of Syncfusion Essential JS 2 and more details.
+control: PDF Viewer
+platform: document-processing
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+
+# Getting started with Syncfusion React PDF Viewer
+
+
+If you're starting to integrate the Syncfusion® React PDF Viewer into your application, choose the path below that matches how you'll run the viewer in your app (client-only or via a web service) and follow that tutorial.
+
+- **Standalone** — Run the viewer entirely in the browser (no server rendering). This mode delivers excellent runtime performance and responsiveness because rendering and interaction happen on the client; it is ideal for quick prototyping and simple integrations.
+- **Server‑backed** — Use a web service to perform PDF Viewer operations (rendering, document processing, or streaming). Choose this path when you need server-side processing for PDF Viewer operations.
+
+This page is intentionally a short introduction — choose a path and follow its tutorial:
+
+- [Standalone tutorial](./getting-started)
+- [Server‑backed tutorial](./getting-started-with-server-backed)
+
+**Related**
+
+- [Annotations](./annotation/text-markup-annotation)
+- [Form designer](./forms/form-designer)
+- [Organize pages](./organize-pages/overview)
+
+**See also**
+
+- [PDF Viewer overview](../overview)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/getting-started-with-server-backed.md b/Document-Processing/PDF/PDF-Viewer/react/getting-started-with-server-backed.md
index d9fd3e5f42..394e12cde3 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/getting-started-with-server-backed.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/getting-started-with-server-backed.md
@@ -8,9 +8,9 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Getting Started with server-backed PDF Viewer component
+# Getting started with server-backed React PDF Viewer component
-This section explains the steps required to create a simple React PDF Viewer and demonstrates the basic usage of the PDF Viewer control in a React application.
+This section explains the steps to create a server-backed React PDF Viewer and demonstrates basic usage of the PDF Viewer component in a React application.
## Prerequisites
@@ -20,30 +20,29 @@ To get started with Syncfusion® React UI co
## Setup for Local Development
-1. Create a new React app [`create-react-app`](https://github.com/facebook/create-react-app) and install it using the following command.
+To set up a React application, use Vite (for example, `npm create vite@latest`), which provides a fast development environment, smaller bundle sizes, and optimized production builds compared to traditional tools such as `create-react-app`. For detailed steps, refer to the Vite [installation instructions](https://vitejs.dev/guide/).
-```bash
-npm install -g create-react-app
-```
-
-2. To setup basic `React` sample use following commands.
-
-{% tabs %}
-{% highlight js tabtitle="JSX" %}
+N> To create a React application using `create-react-app`, refer to this [documentation](https://ej2.syncfusion.com/react/documentation/getting-started/create-app) for more details.
-create-react-app quickstart
-cd quickstart
-npm install
+To create a new React application, run the following command.
-{% endhighlight %}
-{% highlight js tabtitle="TSX" %}
+```bash
+npm create vite@latest my-app
+```
+To set-up a React application in TypeScript environment, run the following command.
-npx create-react-app quickstart --template cra-template-typescript
-cd quickstart
-npm install
+```bash
+npm create vite@latest my-app -- --template react-ts
+cd my-app
+npm run dev
+```
+To set-up a React application in JavaScript environment, run the following command.
-{% endhighlight %}
-{% endtabs %}
+```bash
+npm create vite@latest my-app -- --template react
+cd my-app
+npm run dev
+```
## Adding Syncfusion® packages
@@ -54,11 +53,11 @@ To install PDF Viewer component, use the following command
npm install @syncfusion/ej2-react-pdfviewer --save
```
-N> The following changes applies to React version 18 and above.
+N> The following changes apply to React version 18 and above.
## Adding PDF Viewer component and the CSS reference
-* Add an HTML div element to act as the PDF Viewer element `public/index.html` using the following code.
+* Add an HTML div element to act as the PDF Viewer element `index.html` using the following code.
```
@@ -73,6 +72,7 @@ N> The following changes applies to React version 18 and above.
Loading....
+
@@ -173,11 +173,11 @@ $env:NODE_OPTIONS = "--openssl-legacy-provider"
Output will be appears as follows.
{% tabs %}
-{% highlight js tabtitle="index.jsx" %}
-{% include code-snippet/pdfviewer/react/base-cs1/app/index.jsx %}
+{% highlight js tabtitle="app.jsx" %}
+{% include code-snippet/pdfviewer/react/base-cs1/app/app.jsx %}
{% endhighlight %}
-{% highlight ts tabtitle="index.tsx" %}
-{% include code-snippet/pdfviewer/react/base-cs1/app/index.tsx %}
+{% highlight ts tabtitle="app.tsx" %}
+{% include code-snippet/pdfviewer/react/base-cs1/app/app.tsx %}
{% endhighlight %}
{% highlight html tabtitle="index.html" %}
{% include code-snippet/pdfviewer/react/base-cs1/index.html %}
diff --git a/Document-Processing/PDF/PDF-Viewer/react/getting-started.md b/Document-Processing/PDF/PDF-Viewer/react/getting-started.md
index 2bda29aead..6a570dc4e0 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/getting-started.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/getting-started.md
@@ -8,9 +8,9 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Getting started in Standalone PDF Viewer control in React
+# Getting started with standalone React PDF Viewer component
-This section explains the steps required to create a simple Standalone React PDF Viewer and demonstrates the basic usage of the PDF Viewer control in a React application.
+This section explains the steps to create a standalone React PDF Viewer and demonstrates basic usage of the PDF Viewer component in a React application.
## Prerequisites
@@ -20,9 +20,9 @@ To get started with Syncfusion® React UI co
## Setup for Local Development
-To easily set up a React application, use `create-vite-app`, which provides a faster development environment, smaller bundle sizes, and optimized builds compared to traditional tools like `create-react-app`. For detailed steps, refer to the Vite [installation instructions](https://vitejs.dev/guide/). Vite sets up your environment using JavaScript and optimizes your application for production.
+To set up a React application, use Vite (for example, `npm create vite@latest`), which provides a fast development environment, smaller bundle sizes, and optimized production builds compared to tools such as `create-react-app`. For detailed steps, refer to the Vite [installation instructions](https://vitejs.dev/guide/).
-> **Note:** To create a React application using `create-react-app`, refer to this [documentation](https://ej2.syncfusion.com/react/documentation/getting-started/create-app) for more details.
+N> To create a React application using `create-react-app`, refer to this [documentation](https://ej2.syncfusion.com/react/documentation/getting-started/create-app) for more details.
To create a new React application, run the following command.
@@ -69,7 +69,7 @@ N> The following changes apply to React version 18 and above.
## Adding PDF Viewer component and the CSS reference
-* Add an HTML div element to act as the PDF Viewer element `public/index.html` using the following code.
+* Add an HTML div element to act as the PDF Viewer element `index.html` using the following code.
```
@@ -84,6 +84,7 @@ N> The following changes apply to React version 18 and above.
Loading....
+
@@ -102,7 +103,7 @@ N> The following changes apply to React version 18 and above.
@import "../node_modules/@syncfusion/ej2-pdfviewer/styles/material.css";
```
-* Add the React PDF Viewer as shown below in `src/index.js` when using JavaScript (JSX). If you're using TypeScript (TSX), add it in `src/index.tsx` to render the PDF Viewer component.
+* Add the React PDF Viewer as shown below in `src/index.js` when using JavaScript (JSX). If you're using TypeScript (TSX), add it in `src/app.tsx` to render the PDF Viewer component.
{% tabs %}
@@ -224,8 +225,7 @@ N> When running the sample, if you encounter the **ERR_OSSL_EVP_UNSUPPORTED erro
$env:NODE_OPTIONS = "--openssl-legacy-provider"
```
-
-Output will be appears as follows.
+Output appears as follows.
{% tabs %}
{% highlight js tabtitle="app.jsx" %}
@@ -276,8 +276,10 @@ return (
diff --git a/Document-Processing/PDF/PDF-Viewer/react/globalization.md b/Document-Processing/PDF/PDF-Viewer/react/globalization.md
index 8b27da28fe..48f0535e54 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/globalization.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/globalization.md
@@ -8,9 +8,9 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Globalization in React Pdfviewer component
+# Globalization in React PDF Viewer component
-The text contents provided in the PDF Viewer can be localized using the collection of localized strings for different cultures. By default, the PDF Viewer is localized in “__en-US__”.
+The text content in the PDF Viewer can be localized using collections of localized strings for different cultures. By default, the PDF Viewer uses the “__en-US__”. locale.
The following table shows the default text values used in PDF Viewer in 'en-US' culture:
@@ -39,7 +39,7 @@ The following table shows the default text values used in PDF Viewer in 'en-US'
|Zoom Out|Zoom out|
|Page Thumbnails|Page thumbnails|
|Bookmarks|Bookmarks|
-|Print|Print file
+|Print|Print file|
|Password Protected|Password required|
|Copy|Copy|
|Text Selection|Text selection tool|
@@ -65,7 +65,7 @@ The following table shows the default text values used in PDF Viewer in 'en-US'
|Highlight context|Highlight|
|Underline context|Underline|
|Strikethrough context|Strike through|
-|Server error|Web-service is not listening. PDF Viewer depends on web-service for all it|s features. Please start the web service to continue.|
+|Server error|Web-service is not listening. PDF Viewer depends on web-service for all its features. Please start the web service to continue.|
|Client error|Client-side error is found. Please check the custom headers provided in the AjaxRequestSettings property and web action methods in the ServerActionSettings property.|
|Open text|Open|
|First text|First Page|
@@ -78,7 +78,7 @@ The following table shows the default text values used in PDF Viewer in 'en-US'
|Pan text|Pan|
|Print text|Print|
|Search text|Search|
-|Annotation Edit text|Edit Annotation| Please start the web service to continue.|
+|Annotation Edit text|Edit Annotation|
|FormDesigner Edit text|Add and Edit Form Fields|
|Line Thickness|Line Thickness|
|Line Properties|Line Properties|
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to-overview.md b/Document-Processing/PDF/PDF-Viewer/react/how-to-overview.md
index 68ba162836..059d7ffb48 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to-overview.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to-overview.md
@@ -8,9 +8,9 @@ documentation: ug
domainurl: ##DomainURL##
---
-# How to Use the Frequently Asked Questions Section in the PDF Viewer
+# How-to overview for PDF Viewer
-The frequently asked questions in Essential® PDF Viewer are listed below.
+The following how-to articles and frequently asked questions for the Syncfusion PDF Viewer are listed below.
* [How to add annotation in text search in react?](./how-to/add-annotation-in-text-search-ts)
* [How to add custom header to the PDF Viewer ajax request?](./how-to/add-header-value)
@@ -63,3 +63,4 @@ The frequently asked questions in Essential® PDF Viewer are liste
* [How to get the signature selected and unselected event?](./how-to/signatureselect-signatureunselect-ts)
* [How to unload the PDF document from the viewer?](./how-to/unload-document)
* [Load Document after resources Loaded](./how-to/load-document-after-resources-loaded)
+* [Integrate PDF Viewer into existing react layouts](./how-to/existing-react-layout)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/add-annotation-in-text-search.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/add-annotation-in-text-search.md
index 27933637d9..68f6b7f685 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/add-annotation-in-text-search.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/add-annotation-in-text-search.md
@@ -1,132 +1,179 @@
---
layout: post
-title: Add Rectangle Annotation via Text Search in Syncfusion React PDF Viewer
-description: Discover how to add rectangle annotations via text search in the Syncfusion React PDF Viewer for a seamless mobile experience.
+title: Add Annotations via Text Search in Syncfusion React PDF Viewer
+description: Learn how to add annotations via text search events in the Syncfusion React PDF Viewer for a seamless mobile experience.
control: PDF Viewer
platform: document-processing
documentation: ug
---
-# Add Rectangle Annotations via Text Search in PDF Viewer
+# Add Annotations via Text Search in PDF Viewer
-A concise guide to adding rectangle annotations at highlighted text search results in the React PDF Viewer to visually emphasize matches and improve readability.
+A concise guide that demonstrates how to add rectangle and highlight annotations at highlighted text search results in the React PDF Viewer. The guide explains where to wire the callback, required services, and quick troubleshooting steps.
-## Steps to add rectangle annotations on search result highlight
+## Prerequisites
+
+A React PDF Viewer setup with [`Annotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotation) module injected.
+
+## Steps to add rectangle or highlight annotations on search result highlight
**Step 1:** Follow the steps provided in the [Syncfusion® Getting Started Guide](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started) to set up a basic PDF Viewer sample.
-**Step 2:** Initialize the PDF Viewer with the required modules
+**Step 2a:** Set up the PDF Viewer component to add rectangle annotations based on the bounds of highlighted search text in the PDF Viewer.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
{% raw %}
-
-import React from 'react';
-import ReactDOM from 'react-dom/client';
-import './index.css';
+import { RefObject, useRef } from 'react';
import {
- PdfViewerComponent,
- Toolbar,
- Magnification,
- Navigation,
- Annotation,
- TextSelection,
- TextSearch,
- FormFields,
- FormDesigner,
- PageOrganizer,
- Inject
+ PdfViewerComponent, Toolbar, Magnification, Navigation, Annotation, TextSelection,
+ TextSearch, FormFields, FormDesigner, PageOrganizer, Print, Inject, RectangleSettings,
+ TextSearchHighlightEventArgs, RectangleBoundsModel
} from '@syncfusion/ej2-react-pdfviewer';
-class App extends React.Component {
- constructor(props) {
- super(props);
- // Create a ref for the PdfViewerComponent to access its methods and properties
- this.viewerRef = React.createRef();
- }
-
- componentDidMount() {
- // Obtain the current instance of the PdfViewerComponent
- const viewer = this.viewerRef.current;
-
- if (viewer) {
- // Attach an event handler for text search highlight
- viewer.textSearchHighlight = this.handleTextSearchHighlight;
- }
- }
-
- // Method to handle the text search highlight event
- handleTextSearchHighlight = (args) => {
- console.log(args); // Logs Highlighted text search details
-
- const pageNumber = args.pageNumber;
- const bounds = args.bounds;
-
- // Add a rectangle annotation on the highlighted text
- this.viewerRef.current.annotationModule.addAnnotation('Rectangle', {
- pageNumber: pageNumber,
- offset: { x: bounds.left, y: bounds.top },
- width: bounds.width,
- height: bounds.height,
- });
- };
-
- // Method to initiate a text search for the term 'PDF'
- handleSearch = () => {
- this.viewerRef.current.textSearchModule.searchText('PDF', false);
- };
-
- // Method to go to the next instance of the search term
- handleSearchNext = () => {
- this.viewerRef.current.textSearchModule.searchNext();
- };
-
- // Method to cancel the current text search operation
- handleCancelSearch = () => {
- this.viewerRef.current.textSearchModule.cancelTextSearch();
- };
-
- render() {
+export default function App() {
+ const viewerRef: RefObject = useRef(null);
+
+ // Method to handle the text search highlight event
+ const handleTextSearchHighlight = (args: TextSearchHighlightEventArgs) => {
+ console.log(args); // Logs Highlighted text search details
+
+ const pageNumber: number = args.pageNumber;
+ const bounds: RectangleBoundsModel = args.bounds;
+
+ // Add a rectangle annotation on the highlighted text
+ viewerRef.current.annotationModule.addAnnotation('Rectangle', {
+ pageNumber: pageNumber,
+ offset: { x: bounds.left, y: bounds.top },
+ width: bounds.width,
+ height: bounds.height,
+ } as RectangleSettings);
+ };
+
+ // Method to initiate a text search for the term 'PDF'
+ const handleSearch = () => {
+ viewerRef.current.textSearchModule.searchText('PDF', false);
+ };
+
+ // Method to go to the next instance of the search term
+ const handleSearchNext = () => {
+ viewerRef.current.textSearchModule.searchNext();
+ };
+
+ // Method to cancel the current text search operation
+ const handleCancelSearch = () => {
+ viewerRef.current.textSearchModule.cancelTextSearch();
+ };
+
return (
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
+
+
+
+
+
+
+
+
+
+
+
+
+ );
}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+**Expected result:** Rectangle annotations are added at text search result locations, improving visibility for users navigating search matches.
+
+**Step 2b:** Set up the PDF Viewer component to add highlight annotations based on the bounds of highlighted search text in the PDF Viewer.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+{% raw %}
+import { RefObject, useRef } from 'react';
+import {
+ PdfViewerComponent, Toolbar, Magnification, Navigation, Annotation, TextSelection,
+ TextSearch, FormFields, FormDesigner, PageOrganizer, Print, Inject, TextSearchHighlightEventArgs,
+ HighlightSettings, IAnnotationPoint
+} from '@syncfusion/ej2-react-pdfviewer';
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
+export default function App() {
+ const viewerRef: RefObject = useRef(null);
+
+ // Method to handle the text search highlight event
+ const handleTextSearchHighlight = (args: TextSearchHighlightEventArgs) => {
+ console.log(args); // Logs Highlighted text search details
+
+ const pageNumber: number = args.pageNumber;
+ const bounds: IAnnotationPoint[] = [{
+ x: args.bounds.x ?? args.bounds.left,
+ y: args.bounds.y ?? args.bounds.top,
+ height: args.bounds.height,
+ width: args.bounds.width
+ }];
+
+ // Add a highlight annotation on the highlighted text
+ viewerRef.current.annotation.addAnnotation('Highlight', {
+ pageNumber: pageNumber,
+ bounds: bounds
+ } as HighlightSettings);
+ };
+
+ // Method to initiate a text search for the term 'PDF'
+ const handleSearch = () => {
+ viewerRef.current.textSearchModule.searchText('PDF', false);
+ };
+
+ // Method to go to the next instance of the search term
+ const handleSearchNext = () => {
+ viewerRef.current.textSearchModule.searchNext();
+ };
+
+ // Method to cancel the current text search operation
+ const handleCancelSearch = () => {
+ viewerRef.current.textSearchModule.cancelTextSearch();
+ };
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
{% endraw %}
{% endhighlight %}
{% endtabs %}
-Following these steps enables the PDF Viewer to add rectangle annotations at search result locations, improving the visibility of matches.
+**Expected result:** Highlight annotation is added at text search result locations, improving visibility for users navigating search matches.
-[View sample on GitHub](https://github.com/SyncfusionExamples/react-pdf-viewer-examples/tree/master/How%20to)
+[View sample the complete working sample on GitHub](https://github.com/SyncfusionExamples/react-pdf-viewer-examples/tree/master/How%20to)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/add-header-value.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/add-header-value.md
index a271af197d..c78eab1dec 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/add-header-value.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/add-header-value.md
@@ -9,9 +9,9 @@ documentation: ug
# Add header values in the React PDF Viewer
-Use the ajaxHeaders property in the PDF Viewer’s [ajaxRequestSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/#ajaxrequestsettings) to include custom headers with each AJAX request.
+Use the `ajaxHeaders` property inside the PDF Viewer’s [ajaxRequestSettings](https://ej2.syncfusion.com/React/documentation/api/pdfviewer/#ajaxrequestsettings) to send custom HTTP headers with each request made by the viewer.
-Example: Add a custom Authorization header using ajaxRequestSettings
+Example: Add a custom Authorization header using `ajaxRequestSettings` in an React component
```ts
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/add-save-button.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/add-save-button.md
index 922cccb23c..7b0013af61 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/add-save-button.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/add-save-button.md
@@ -12,11 +12,11 @@ domainurl: ##DomainURL##
PDF Viewer supports customizing toolbar items, including adding, showing, hiding, enabling, and disabling items.
-- Save button: The Save button can be defined using [CustomToolbarItemModel](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/customToolbarItemModel/) and included alongside existing items via [ToolbarSettings](https://ej2.syncfusion.com//react/documentation/api/file-manager/toolbarSettings/). Handle the click action using [`toolbarclick`](https://ej2.syncfusion.com/react/documentation/api/file-manager/toolbarClickEventArgs/).
+* Save button: The Save button can be defined using [CustomToolbarItemModel](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/customToolbarItemModel/) and included alongside existing items via [ToolbarSettings](https://ej2.syncfusion.com//react/documentation/api/file-manager/toolbarSettings/). Handle the click action using [`toolbarclick`](https://ej2.syncfusion.com/react/documentation/api/file-manager/toolbarClickEventArgs/).
-- Show or hide: The Save button can be shown or hidden using [ToolbarSettings](https://ej2.syncfusion.com/react/documentation/api/file-manager/toolbarSettings/). Predefined items are listed under [`ToolbarItem`](https://ej2.syncfusion.com/react/documentation/api/chart/toolbarItems/).
+* Show or hide: The Save button can be shown or hidden using [ToolbarSettings](https://ej2.syncfusion.com/react/documentation/api/file-manager/toolbarSettings/). Predefined items are listed under [`ToolbarItem`](https://ej2.syncfusion.com/react/documentation/api/chart/toolbarItems/).
-- Enable or disable: The Save button can be enabled or disabled using [`enabletoolbaritem`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbar/).
+* Enable or disable: The Save button can be enabled or disabled using [`enabletoolbaritem`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbar/).
{% tabs %}
{% highlight js tabtitle="Standalone" %}
@@ -32,7 +32,8 @@ import { TextBox } from "@syncfusion/ej2-inputs";
export function App() {
-// Add OnCreateSearch outside the App function
+// Helper: Add OnCreateSearch outside the App function
+// The sample below uses an OnCreateSearch helper to add an icon; place it in module scope.
function OnCreateSearch() {
this.addIcon('prepend', 'e-icons e-search');
}
@@ -126,18 +127,18 @@ root.render();
{% endhighlight %}
{% endtabs %}
-N> Default toolbar items: ['OpenOption', 'PageNavigationTool','MagnificationTool', 'PanTool', 'SelectionTool', 'SearchOption', 'PrintOption', 'DownloadOption','UndoRedoTool', 'AnnotationEditTool', 'FormDesignerEditTool', 'CommentTool', 'SubmitForm']
+N> Default toolbar items include: ['OpenOption', 'PageNavigationTool', 'MagnificationTool', 'PanTool', 'SelectionTool', 'SearchOption', 'PrintOption', 'DownloadOption', 'UndoRedoTool', 'AnnotationEditTool', 'FormDesignerEditTool', 'CommentTool', 'SubmitForm']
### Align property
-Specifies the alignment of the Save button within the toolbar.
+Specifies the alignment of the Save button within the toolbar:
-- Left: Aligns the item to the left side of the toolbar.
-- Right: Aligns the item to the right side of the toolbar.
+* Left: aligns the item to the left side of the toolbar.
+* Right: aligns the item to the right side of the toolbar.
### Tooltip property
-Sets the tooltip text for the Save button. The tooltip provides additional information on hover.
+Sets the tooltip text for the Save button; the tooltip appears on hover.
### CssClass property
@@ -145,7 +146,7 @@ Applies custom CSS classes to the Save button for styling.
### Prefix property
-Sets the CSS class or icon to add as a prefix to the Save button content.
+Sets the CSS class or icon to display before the Save button text.
### ID property
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/add-signature.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/add-signature.md
index 7eb63ddbdf..7743e3b6b9 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/add-signature.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/add-signature.md
@@ -8,13 +8,14 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Add signature in React Pdfviewer component
+## Add signature in React PDF Viewer component
-The PDF Viewer library allows you to add signature in the signature field of the loaded PDF document programmatically using the **formFieldClick** event.
+The PDF Viewer library allows adding a signature to a signature field in a loaded PDF document programmatically by handling the `formFieldClick` event.
-**Step 1:** Follow the steps provided in the [link](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started/) to create simple PDF Viewer sample in React.
+Follow these steps
-**Step 2:** Add the following code snippet to add signature in signature field.
+1. Follow the Syncfusion [getting-started](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started/) guide for React PDF Viewer.
+2. Add the following code snippet to handle signature field clicks and set or clear the signature value.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/annotation-selectors.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/annotation-selectors.md
index 0f0a3abe96..5438f24f70 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/annotation-selectors.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/annotation-selectors.md
@@ -9,9 +9,9 @@ documentation: ug
# Customize annotation selectors in TypeScript PDF Viewer
-Customize the annotation selector using the [annotationSelectorSettings](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#annotationselectorsettings) property of the PDF Viewer.
+Use the [annotationSelectorSettings](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#annotationselectorsettings) property to configure the appearance and behavior of annotation selectors. This includes selection handles and resizers (for example, handle shape and size), which determine how users interact with annotations during editing.
-Example: Customize the selector of a shape annotation
+The example below changes the selector's resizer handle shape to circular and opens an existing annotation for editing. Setting `resizerShape = 'Circle'` updates the selector appearance to circular resizer handles; ensure an annotation exists before calling `editAnnotation` to avoid runtime errors.
```
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/authorization-token.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/authorization-token.md
index 77a3ee3f03..19884dea9a 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/authorization-token.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/authorization-token.md
@@ -8,11 +8,11 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Authorization token in React Pdfviewer component
+## Authorization token in React PDF Viewer component
-The PDF Viewer library allows you to include the authorization token in the PDF viewer AJAX request using the properties of the ajaxRequest header available in `AjaxRequestSettings`, and it will be included in every AJAX request send from PDF Viewer.
+This article shows how to include an authorization token in AJAX requests issued by the React PDF Viewer by using the `ajaxRequestSettings` property. The token is included in every AJAX request sent by the viewer when configured via `ajaxHeaders`.
-Here is an example of how you can use the **AjaxRequestSettings** property to include the authorization token to the PDF viewer control:
+Here is an example that adds an Authorization header using `AjaxRequestSettings`:
{% raw %}
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/change-author-name-using-annotation-settings.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/change-author-name-using-annotation-settings.md
index e0bd095e95..e7711d4014 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/change-author-name-using-annotation-settings.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/change-author-name-using-annotation-settings.md
@@ -1,6 +1,6 @@
---
layout: post
-title: Change author name using annotation settings in React PDF Viewer | Syncfusion
+title: Change author name using annotation settings in React | Syncfusion
description: Learn how to change the author name and related annotation settings using the annotationSettings API in the React PDF Viewer.
platform: document-processing
control: PDF Viewer
@@ -10,7 +10,7 @@ domainurl: ##DomainURL##
# Change author name using annotation settings in React PDF Viewer
-The PDF Viewer allows customizing individual annotation settings using the annotationSettings API, which exposes properties common to all annotations.
+The `annotationSettings` API provides a central way to configure properties that apply to all annotations in the viewer.
API name: annotationSettings
@@ -31,7 +31,7 @@ Change the author name and other properties using the annotationSettings API as
{% tabs %}
{% highlight ts tabtitle="Standalone" %}
-```ts
+
import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, Print, Annotation, FormFields } from "../src/index";
PdfViewer.Inject(Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, Print, Annotation, FormFields);
@@ -40,10 +40,10 @@ viewer.load('https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf', null);
viewer.annotationSettings = { author: 'syncfusion', minHeight: 30, maxHeight: 500, minWidth: 30, maxWidth: 500, isLock: false, isPrint: true, isDownload: true };
viewer.freeTextSettings = { allowTextOnly : true };
viewer.appendTo("#pdfViewer");
-```
+
{% endhighlight %}
{% highlight ts tabtitle="Server-Backed" %}
-```ts
+
import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, Print, Annotation, FormFields } from "../src/index";
PdfViewer.Inject(Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, Print, Annotation, FormFields);
@@ -53,6 +53,6 @@ viewer.load('https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf', null);
viewer.annotationSettings = { author: 'syncfusion', minHeight: 30, maxHeight: 500, minWidth: 30, maxWidth: 500, isLock: false, isPrint: true, isDownload: true };
viewer.freeTextSettings = { allowTextOnly : true };
viewer.appendTo("#pdfViewer");
-```
+
{% endhighlight %}
{% endtabs %}
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/clear-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/clear-annotation.md
index b0efe333bf..151e617b0b 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/clear-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/clear-annotation.md
@@ -10,7 +10,7 @@ domainurl: ##DomainURL##
# Clear annotations in React PDF Viewer
-Use the [deleteAnnotations](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#deleteannotations) method to clear all annotations in the currently loaded document.
+Use the [deleteAnnotations](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#deleteannotations) method to clear all annotations in the currently loaded document.
Example: Clear all annotations in the loaded document
@@ -37,10 +37,11 @@ Example: Delete a specific annotation by id
// Delete an annotation by id
function deleteAnnotationbyId() {
var viewer = document.getElementById("container").ej2_instances[0];
- viewer.annotationModule.deleteAnnotationById(viewer.annotationCollection[0].annotationId);
+ if (viewer.annotationCollection && viewer.annotationCollection.length > 0) {
+ viewer.annotationModule.deleteAnnotationById(viewer.annotationCollection[0].annotationId);
+ }
}
```
-Sample: How to clear annotations using deleteAnnotations
-(https://stackblitz.com/edit/react-xlvqkm?file=public%2Findex.html)
\ No newline at end of file
+[How to clear annotations using deleteAnnotations](https://stackblitz.com/edit/react-xlvqkm?file=public%2Findex.html)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/configure-annotation-selector-setting.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/configure-annotation-selector-setting.md
index 14714071c3..566d1adc16 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/configure-annotation-selector-setting.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/configure-annotation-selector-setting.md
@@ -10,11 +10,11 @@ domainurl: ##DomainURL##
# Configure annotation selector settings
-Use the [annotationSelectorSettings](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotationSelectorSettings/) property to customize the appearance and behavior of the annotation selector in the UI.
+Use the [annotationSelectorSettings](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotationSelectorSettings/) property to customize the appearance and interaction behavior of the annotation selector in the react PDF Viewer UI.
AnnotationSelectorSettingsModel
-The [AnnotationSelectorSettingsModel](https://ej2.syncfusion.com/react/documentation/api/accumulation-chart/accumulationAnnotationSettingsModel/) defines settings such as border colors, sizes, and shapes, enabling fine-grained control over how annotations are displayed and interacted with.
+The [AnnotationSelectorSettingsModel](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotationSelectorSettingsModel/) defines selector appearance and behavior settings—such as border colors, resizer appearance, and selector line style—providing fine-grained control over how annotations are displayed and manipulated.
Steps to configure annotation selector settings
- Step 1: Create a PDF Viewer instance and initialize it.
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/conformance.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/conformance.md
index 751f83daef..384a910bfd 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/conformance.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/conformance.md
@@ -9,7 +9,7 @@ documentation: ug
# Supported PDF conformance in React PDF Viewer
-The PDF Viewer supports the following conformance levels:
+The Angular PDF Viewer supports the following PDF/A and PDF/X conformance levels:
* PDF/A-1a
* PDF/A-1b
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/control-annotation-visibility.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/control-annotation-visibility.md
index d03a26d258..1f6c3c5a49 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/control-annotation-visibility.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/control-annotation-visibility.md
@@ -10,16 +10,15 @@ domainurl: ##DomainURL##
# Control annotation visibility in PDF Viewer
-Overview
+## Overview
-This guide explains how to control the visibility of PDF annotations in documents loaded and saved using the Syncfusion PDF Viewer in React, so annotations are visible only in the viewer when required.
+This guide shows how to display annotations in the React PDF Viewer while preventing them from appearing in the saved/downloaded PDF.
-Steps to control annotation visibility
+## Steps to control annotation visibility
-**Step 1:** Follow the steps provided in the [link](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started/) to create a simple PDF Viewer sample.
+**Step 1:** Follow the steps in the getting-started guide (https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started) to create a basic PDF Viewer sample.
-
-**Step 2:** Set Up Your React Component
+**Step 2:** Add controls for annotation modification and downloading
Create an React component and update the template to include a button that triggers the download operation. Additionally, create a function to save the document with the PDF annotation flag set to `noView`.
@@ -114,6 +113,6 @@ root.render();
{% endhighlight %}
{% endtabs %}
-Following these steps ensures annotations are visible in the Syncfusion PDF Viewer while controlling their visibility in the downloaded PDF.
+After performing these steps, annotations remain visible in the viewer but are hidden in the downloaded PDF.
[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/how-to/convert-pdf-library-bounds-to-pdf-viewer-bounds.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/convert-pdf-library-bounds-to-pdf-viewer-bounds.md
index 8f1f75b37d..e3bbaf1f88 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/convert-pdf-library-bounds-to-pdf-viewer-bounds.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/convert-pdf-library-bounds-to-pdf-viewer-bounds.md
@@ -10,7 +10,7 @@ domainurl: ##DomainURL##
# Convert PDF Library bounds to PDF Viewer bounds
-When exporting annotations from the PDF Library, convert the bounds values into the PDF Viewer format to ensure accurate placement.
+When exporting annotations from the PDF Library, convert the annotation bounds into the PDF Viewer coordinate system so exported annotations appear at the correct position and scale in the viewer.
Steps to convert bounds values
@@ -153,8 +153,8 @@ root.render();
{% endhighlight %}
{% endtabs %}
-Conclusion
+**Conclusion**
-These steps convert PDF Library bounds values into PDF Viewer bounds values when exporting annotations as JSON, maintaining accurate annotation placement.
+These steps convert PDF Library bounds values into PDF Viewer bounds values when exporting annotations as JSON, helping maintain accurate annotation placement.
[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/how-to/custom-context-menu.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/custom-context-menu.md
deleted file mode 100644
index 9b9277925a..0000000000
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/custom-context-menu.md
+++ /dev/null
@@ -1,329 +0,0 @@
----
-layout: post
-title: Customize the context menu in React PDF Viewer | Syncfusion
-description: Learn how to add and customize custom context menu options in the React PDF Viewer using addCustomMenu, customContextMenuSelect, and related events.
-control: PDF Viewer
-platform: document-processing
-documentation: ug
-domainurl: ##DomainURL##
----
-
-# Customize the context menu in PDF Viewer in React
-
-PDF Viewer supports adding custom options to the context menu using the [addCustomMenu()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#addcustommenu) method. Define actions for custom items with the [customContextMenuSelect()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#customcontextMenuselect) method.
-
-### Add a custom option
-
-The following example adds custom options to the context menu.
-
-```js
- export function App() {
-
- let menuItems = [
- {
- text: 'Search In Google',
- id: 'search_in_google',
- iconCss: 'e-icons e-search'
- },
- {
- text: 'Lock Annotation',
- iconCss: 'e-icons e-lock',
- id: 'lock_annotation'
- },
- {
- text: 'Unlock Annotation',
- iconCss: 'e-icons e-unlock',
- id: 'unlock_annotation'
- },
- {
- text: 'Lock Form Field',
- iconCss: 'e-icons e-lock',
- id: 'read_only_true'
- },
- {
- text: 'Unlock Form Field',
- iconCss: 'e-icons e-unlock',
- id: 'read_only_false'
- },
- ];
- function documentLoad(args) {
- var viewer = document.getElementById('container').ej2_instances[0];
- viewer.addCustomMenu(menuItems, false);
- }
-
- return (
-
);
-
-}
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
-```
-
-#### Customize added context menu items
-
-The following code shows how to hide/show added custom option in context menu using the `customContextMenuBeforeOpen()` method.
-
-```js
-export function App() {
-
- let menuItems = [
- {
- text: 'Search In Google',
- id: 'search_in_google',
- iconCss: 'e-icons e-search'
- },
- {
- text: 'Lock Annotation',
- iconCss: 'e-icons e-lock',
- id: 'lock_annotation'
- },
- {
- text: 'Unlock Annotation',
- iconCss: 'e-icons e-unlock',
- id: 'unlock_annotation'
- },
- {
- text: 'Lock Form Field',
- iconCss: 'e-icons e-lock',
- id: 'read_only_true'
- },
- {
- text: 'Unlock Form Field',
- iconCss: 'e-icons e-unlock',
- id: 'read_only_false'
- },
- ];
- function documentLoad(args) {
- var viewer = document.getElementById('container').ej2_instances[0];
- viewer.addCustomMenu(menuItems, false, false);
- }
-
- function customContextMenuSelect(args) {
- var viewer = document.getElementById('container').ej2_instances[0];
- switch (args.id) {
- case 'search_in_google':
- for (var i = 0; i < viewer.textSelectionModule.selectionRangeArray.length; i++) {
- var content = viewer.textSelectionModule.selectionRangeArray[i].textContent;
- if ((viewer.textSelectionModule.isTextSelection) && (\/\S\/.test(content))) {
- window.open('http://google.com/search?q=' + content);
- }
- }
- break;
- case 'lock_annotation':
- lockAnnotations(args);
- break;
- case 'unlock_annotation':
- unlockAnnotations(args);
- break;
- case 'read_only_true':
- setReadOnlyTrue(args);
- break;
- case 'read_only_false':
- setReadOnlyFalse(args);
- break;
- default:
- break;
- }
- }
-
- function customContextMenuBeforeOpen(args) {
- for (var i = 0; i < args.ids.length; i++) {
- var search = document.getElementById(args.ids[i]);
- var viewer = document.getElementById('container').ej2_instances[0];
- if (search) {
- search.style.display = 'none';
- if (args.ids[i] === 'search_in_google' && (viewer.textSelectionModule) && viewer.textSelectionModule.isTextSelection) {
- search.style.display = 'block';
- } else if (args.ids[i] === "lock_annotation" || args.ids[i] === "unlock_annotation") {
- var isLockOption = args.ids[i] === "lock_annotation";
- for (var j = 0; j < viewer.selectedItems.annotations.length; j++) {
- var selectedAnnotation = viewer.selectedItems.annotations[j];
- if (selectedAnnotation && selectedAnnotation.annotationSettings) {
- var shouldDisplay = (isLockOption && !selectedAnnotation.annotationSettings.isLock) ||
- (!isLockOption && selectedAnnotation.annotationSettings.isLock);
- search.style.display = shouldDisplay ? 'block' : 'none';
- }
- }
- } else if (args.ids[i] === "read_only_true" && viewer.selectedItems.formFields.length !== 0) {
- var selectedFormField = viewer.selectedItems.formFields[0].isReadonly;
- search.style.display = selectedFormField ? 'none' : 'block';
- } else if (args.ids[i] === "read_only_false" && viewer.selectedItems.formFields.length !== 0) {
- var selectedFormField = viewer.selectedItems.formFields[0].isReadonly;
- search.style.display = selectedFormField ? 'block' : 'none';
- } else if (args.ids[i] === 'formfield properties' && viewer.selectedItems.formFields.length !== 0) {
- search.style.display = 'block';
- }
- }
- }
- }
-
- function lockAnnotations(args) {
- for (var i = 0; i < viewer.annotationCollection.length; i++) {
- if (viewer.annotationCollection[i].uniqueKey === viewer.selectedItems.annotations[0].id) {
- viewer.annotationCollection[i].annotationSettings.isLock = true;
- viewer.annotationCollection[i].isCommentLock = true;
- viewer.annotation.editAnnotation(viewer.annotationCollection[i]);
- }
- args.cancel = false;
- }
- }
-
- function unlockAnnotations(args) {
- for (var i = 0; i < viewer.annotationCollection.length; i++) {
- if (viewer.annotationCollection[i].uniqueKey === viewer.selectedItems.annotations[0].id) {
- viewer.annotationCollection[i].annotationSettings.isLock = false;
- viewer.annotationCollection[i].isCommentLock = false;
- viewer.annotation.editAnnotation(viewer.annotationCollection[i]);
- }
- args.cancel = false;
- }
- }
-
- function setReadOnlyTrue(args) {
- var viewer = document.getElementById('container').ej2_instances[0];
- var selectedFormFields = viewer.selectedItems.formFields;
- for (var i = 0; i < selectedFormFields.length; i++) {
- var selectedFormField = selectedFormFields[i];
- if (selectedFormField) {
- viewer.formDesignerModule.updateFormField(selectedFormField, {
- isReadOnly: true,
- });
- }
- args.cancel = false;
- }
- }
-
- function setReadOnlyFalse(args) {
- var viewer = document.getElementById('container').ej2_instances[0];
- var selectedFormFields = viewer.selectedItems.formFields;
- for (var i = 0; i < selectedFormFields.length; i++) {
- var selectedFormField = selectedFormFields[i];
- if (selectedFormField) {
- viewer.formDesignerModule.updateFormField(selectedFormField, {
- isReadOnly: false,
- });
- }
- args.cancel = false;
- }
- }
-
- return (
-
-
- {/* Render the PDF Viewer */}
-
-
-
-
-
);
-
-}
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
-```
-The following is the output of the custom context menu with customization.
-
-{% tabs %}
-{% highlight js tabtitle="index.jsx" %}
-{% raw %}
-{% include code-snippet/pdfviewer/react/custom-context-menu/app/index.jsx %}
-{% endraw %}
-{% endhighlight %}
-{% highlight ts tabtitle="index.tsx" %}
-{% raw %}
-{% include code-snippet/pdfviewer/react/custom-context-menu/app/index.tsx %}
-{% endraw %}
-{% endhighlight %}
-{% endtabs %}
-
-N> To set up the **server-backed PDF Viewer**, add the following `serviceUrl` within the
element in either the `index.TSX` or `index.JSX` file:
-**serviceUrl="https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer"**.
-
-{% previewsample "/document-processing/code-snippet/pdfviewer/react/custom-context-menu" %}
-
-[View sample in GitHub](https://github.com/SyncfusionExamples/react-pdf-viewer-examples/tree/master/How%20to/Custom%20Context%20Menu)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/custom-font-signature-field.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/custom-font-signature-field.md
index 655842f4b7..ca74d80c10 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/custom-font-signature-field.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/custom-font-signature-field.md
@@ -10,13 +10,13 @@ domainurl: ##DomainURL##
# Change the font family for type signatures in React
-Change the font family for Type Signature and Initial fields by adding a stylesheet to load fonts and assigning them via the PDF Viewer settings. Include Google Font links in the HTML head to use those fonts.
+Change the font family in the type signature of the Syncfusion® PDF Viewer by adding a custom CSS stylesheet to the document and applying the desired font family to the type signature element. Include the Google Fonts link in the HTML head section to apply the font.
### Signature field property
The PDF Viewer supports changing fonts for Signature and Initial fields using the `typeSignatureFonts` and `typeInitialFonts` properties.
-**Step 1:** Follow the steps provided in the [link](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started) to create a simple PDF Viewer sample.
+**Step 1:** Follow the steps in the [Getting Started](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started) guide to create a simple PDF Viewer sample.
**Step 2:** Use the following code to apply custom fonts to the Signature field.
@@ -104,4 +104,4 @@ root.render();
{% endhighlight %}
{% endtabs %}
-By implementing this configuration, custom fonts can be used for both Signature and Initial form fields.
\ No newline at end of file
+Implementing this enables use of custom fonts in form-field signature and initial fields.
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/custom-fonts.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/custom-fonts.md
index cc344cf3e5..9283b24439 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/custom-fonts.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/custom-fonts.md
@@ -10,13 +10,13 @@ domainurl: ##DomainURL##
# Add Custom Fonts to PDF Forms in React PDF Viewer
-The **Syncfusion React PDF Viewer** supports loading, editing, and saving **custom fonts** in form fields such as [TextBox](../forms/manage-form-fields/create-form-fields#textbox), [ListBox](../forms/manage-form-fields/create-form-fields#listbox), and [DropDown](../forms/manage-form-fields/create-form-fields#dropdown) fields using the customFonts property. This ensures consistent text rendering even when the required fonts are not installed on the user’s system.
+The Syncfusion **React PDF Viewer** supports loading, editing, and saving **custom fonts** in form fields such as [TextBox](../forms/manage-form-fields/create-form-fields#textbox), [ListBox](../forms/manage-form-fields/create-form-fields#listbox), and [DropDown](../forms/manage-form-fields/create-form-fields#dropdown) fields using the `customFonts` property. This ensures consistent text rendering even when the required fonts are not installed on the user's system.
Custom fonts are embedded and preserved when form fields are modified or saved, making the PDF display correctly across environments.
## When dynamic fonts are used
Dynamic fonts are currently used in the following scenarios:
-- **Text annotations** — When users enter text annotations that use non standard fonts, the viewer dynamically loads the required fonts to ensure correct character rendering.
-- **PDF forms** — When users fill form fields that rely on fonts not included by default, dynamic font loading ensures the entered text is rendered correctly.
+- **Text annotations** — When text annotations use non-standard fonts, the viewer dynamically loads the required fonts to ensure correct character rendering.
+- **PDF forms** — When form fields rely on fonts not included by default, dynamic font loading ensures the entered text is rendered correctly.
## How Custom Fonts Work
The custom font workflow in the PDF Viewer is as follows:
@@ -116,7 +116,7 @@ root.render();
{% endhighlight %}
{% endtabs %}
-N>Ensure that the font file names match the specified font names.
+N> Ensure that the font file names match the specified font names.
## Supported Form Fields
Custom fonts can be applied to the following form field types:
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/delete-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/delete-annotation.md
index 9b829fe8f2..03626e3b1a 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/delete-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/delete-annotation.md
@@ -10,13 +10,13 @@ domainurl: ##DomainURL##
# Delete an annotation in PDF Viewer
-Use the `deleteAnnotationById()` method to remove a specific annotation from a PDF document by its id.
+This article shows how to remove a specific annotation from a PDF document using the `deleteAnnotationById()` method. The example below demonstrates a simple delete flow; for production code prefer accessing the viewer instance with React `@ViewChild` rather than `document.getElementById`.
-Steps to delete a specific annotation
+The following steps are used to delete a specific annotation from PDF Document:
-**Step 1:** Follow the steps provided in the [link](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started/) to create a simple PDF Viewer sample.
+**Step 1:** Create a basic PDF Viewer sample by following the [getting-started](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started) guide.
-**Step 2:** Use the following code to delete a specific annotation using `deleteAnnotationById()`.
+**Step 2:** Use the following snippet to trigger deletion using `deleteAnnotationById()`.
```
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/download-start-event.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/download-start-event.md
index 193765a4c3..b8a3e8208a 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/download-start-event.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/download-start-event.md
@@ -10,7 +10,7 @@ domainurl: ##DomainURL##
# Control file downloads in PDF Viewer
-Use the downloadStart event to intercept the start of a download and optionally cancel it. In the event handler, set `args.cancel = true` to prevent the download.
+The PDF Viewer exposes a `downloadStart` event that enables interception of a document download before it begins. Use this event to apply custom logic and, if needed, cancel the download by setting the event's `cancel` flag.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
@@ -91,8 +91,8 @@ root.render();
{% endhighlight %}
{% endtabs %}
-By default, `args.cancel` is `false`, so the download proceeds unless explicitly canceled.
+By default, the `cancel` argument is `false`, so the download proceeds unless the handler explicitly sets `args.cancel = true`.
### Flexibility
-Leverage the [downloadStart](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#downloadstart) event to apply custom rules for allowing or preventing downloads based on application needs.
+Using the [downloadStart](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/downloadStartEventArgs/) event enables conditional control over downloads—for example, to enforce authentication, restrict downloads for certain documents, or prompt users for confirmation. When using server-backed viewers, confirm whether server-side behavior requires additional handling; canceling the client-side event prevents the local download but may not affect server workflows.
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/enable-local-storage.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/enable-local-storage.md
index b21781a88f..65d446d9f5 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/enable-local-storage.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/enable-local-storage.md
@@ -10,11 +10,11 @@ domainurl: ##DomainURL##
# Manage local storage in PDF Viewer
-Use the `enableLocalStorage` property to control whether session-specific data is stored in session storage (default) or an internal in-memory collection.
+The Syncfusion® PDF Viewer exposes the `enableLocalStorage` property to control how session-specific viewer data is stored. Configure this property to choose between the viewer's internal storage mechanism (in-memory collection) and the browser's session storage.
-### Use enableLocalStorage
+### Using the `enableLocalStorage` property
-Set `enableLocalStorage` to manage storage behavior. When `true`, data is kept in memory; otherwise, session storage is used.
+Set `enableLocalStorage` to control whether the viewer preserves session data in an internal (in-memory) collection or uses browser session storage. When `enableLocalStorage` is `true`, the viewer keeps session data in memory for the current application session; when `false` (the default), session storage is used. Review memory implications before enabling in-memory storage for large documents or heavy interactive content.
{% tabs %}
{% highlight js tabtitle="Server-Backed" %}
@@ -50,8 +50,8 @@ root.render();
### Considerations
-- Memory usage can increase when using in-memory storage with large documents or many interactive elements.
-- Dispose of the PDF Viewer instance when no longer needed to avoid memory leaks.
-- Default: `enableLocalStorage` is `false`, so session storage is used unless changed.
+- **Increased memory usage**: Enabling in-memory storage can increase memory consumption, especially for large documents or when many interactive elements (form fields, annotations) are present.
+- **Dispose when unused**: Dispose or destroy the PDF Viewer instance when it is no longer required to avoid memory leaks, particularly when `enableLocalStorage` is `true`.
+- **Default behavior**: The default value is `false`, which uses the browser session storage unless explicitly changed.
[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/how-to/enable-text-selection.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/enable-text-selection.md
index 88618f1847..946bcfe06c 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
@@ -10,11 +10,11 @@ domainurl: ##DomainURL##
# Enable or disable text selection in PDF Viewer
-Use the `enableTextSelection` property to control whether users can select text in the displayed PDF. This setting can be configured at initialization and toggled at runtime.
+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.
-## Configure on initialization
+## Configure text selection on initialization
-Set initial behavior when instantiating 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.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/existing-react-layout.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/existing-react-layout.md
new file mode 100644
index 0000000000..67e46cfc16
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/existing-react-layout.md
@@ -0,0 +1,463 @@
+---
+layout: post
+title: Integrating PDF Viewer into existing React layouts | Syncfusion
+description: Guidance and examples to embed the Syncfusion React PDF Viewer into tabs, dialogs, sidebars and responsive layouts.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Integrating PDF Viewer into Existing React Layouts
+
+## Overview
+
+The React PDF Viewer can be embedded into dashboards, admin panels, split‑screen views, tabs, dialogs, collapsible/accordion sections, sidebars, and multi‑column layouts. This guide provides concise patterns and minimal code examples so the viewer renders, sizes, and refreshes correctly inside common layout hosts.
+
+## How‑To
+
+### Place the viewer inside basic divs
+
+Insert the PDF Viewer inside a div with a defined height. The viewer will automatically expand to fill the available space in that div.
+
+{% tabs %}
+{% highlight ts tabtitle="App.tsx" %}
+import React from 'react';
+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 ({% raw %}
+
{% endraw %}
+
+
+
+
+ );
+}
+{% endhighlight %}
+{% endtabs %}
+
+
+
+### Place the viewer inside flex box
+
+Use `min-height: 0` on the flex item containing the Viewer so it can shrink and grow properly. The flex container must have a defined height for the Viewer to fill it.
+
+{% tabs %}
+{% highlight ts tabtitle="App.tsx" %}
+import React from 'react';
+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 ({% raw %}
+
+ Header Content
+
+
{% endraw %}
+
+
+
+
+
+
+ );
+}
+{% endhighlight %}
+{% endtabs %}
+
+
+
+### Place the viewer inside CSS grid
+
+Define row or column sizes in `grid-template-rows` or `grid-template-columns` so the grid track has a real height. The Viewer will then expand to fill its grid cell.
+
+{% tabs %}
+{% highlight ts tabtitle="App.tsx" %}
+import React from 'react';
+import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView, ThumbnailView, Print, TextSelection, TextSearch, Annotation, FormDesigner, FormFields, Inject } from '@syncfusion/ej2-react-pdfviewer';
+
+export const App: React.FC = () => {
+ return (
+
+ );
+};
+{% endraw %}
+{% endhighlight %}
+{% highlight css tabtitle="App.css" %}
+{% raw %}
+.page {
+ height: 100vh;
+ display: grid;
+ grid-template-rows: 56px 1fr;
+ background: #fafafa;
+}
+.header {
+ display: flex;
+ align-items: center;
+ padding: 0 16px;
+ background: #fff;
+ border-bottom: 1px solid #e5e5e5;
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+
+
+## Why visibility and height matter
+
+- The PDF viewer measures its container to lay out pages. If the host element has no height (collapsed, display:none, or not yet mounted) measurements will be zero and rendering will fail or be clipped.
+
+- Initialize or refresh the viewer when the host becomes visible (tab active, modal opened, accordion expanded) so internal layout code can compute sizes.
+
+## Resize & visibility tips
+
+- Dispatch a global resize right after the container becomes visible:
+
+```js
+setTimeout(() => window.dispatchEvent(new Event('resize')), 0);
+```
+- Use a `ResizeObserver` when the host size may change frequently:
+
+```js
+const observer = new ResizeObserver(() => {
+ window.dispatchEvent(new Event('resize'));
+});
+observer.observe(document.querySelector('#pdfViewer')!);
+```
+
+- Lazy-render inside tabs/dialogs/accordions: only mount the PDF Viewer when the pane is visible.
+
+## When to use these patterns
+
+- Use Dialogs for temporary previews or when you want an isolated view.
+- Use Tabs/Accordion patterns when documents are part of multi-pane UIs — ensure refresh on show.
+- Avoid placing the viewer in invisible containers without a resize/refresh strategy.
+
+## See also
+
+- [Overview of Syncfusion React Tab component](https://ej2.syncfusion.com/react/documentation/tab/getting-started)
+- [Overview of Syncfusion React Dialog component](https://ej2.syncfusion.com/react/documentation/dialog/getting-started)
+- [Overview of Syncfusion React Accordion component](https://ej2.syncfusion.com/react/documentation/accordion/getting-started)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/export-as-image.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/export-as-image.md
index d379740774..45ac0ee90f 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/export-as-image.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/export-as-image.md
@@ -10,7 +10,7 @@ domainurl: ##DomainURL##
# Export pages as images in PDF Viewer
-Export a single page as a Base64-encoded image using `exportAsImage()` or export a range of pages using `exportAsImages()`.
+The PDF Viewer component can export pages as Base64-encoded image strings using the `exportAsImage()` method (single page) and `exportAsImages()` method (page range). The examples below demonstrate single-page export, range export, and how to specify a custom image size.
Steps to export pages as images
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/extract-text-completed.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/extract-text-completed.md
index 1d281650fb..cc6f1da82f 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/extract-text-completed.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/extract-text-completed.md
@@ -7,9 +7,9 @@ platform: document-processing
documentation: ug
---
-# Use extractTextCompleted to extract text in React PDF Viewer
+## Extract text using the extractTextCompleted event in the PDF Viewer
-Use the [isExtractText](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#isextracttext) property and the [extractTextCompleted](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#extracttextcompleted) event to extract page text along with bounds.
+The PDF Viewer can extract page text along with bounding information. Enable text extraction using the `isExtractText` property and handle the `extractTextCompleted` event to receive extracted text and bounds for the document.
The following example shows how to enable text extraction and handle the completion event:
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/extract-text-option.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/extract-text-option.md
index 3a86da98a4..e5f01393f0 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/extract-text-option.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/extract-text-option.md
@@ -7,19 +7,14 @@ platform: document-processing
documentation: ug
---
-# Configure extractTextOption in React PDF Viewer
+## Extract text option in the React PDF Viewer
-The `extractTextOption` property controls how text is extracted and optimizes memory usage. It also affects the data returned in the `extractTextCompleted` event. Choose one of the following options to determine the text and layout data to retrieve.
+The `extractTextOption` property controls the amount of text and layout information returned by the viewer. Adjusting this value helps balance memory usage and the level of detail required for downstream processing. The viewer exposes four options:
-### Available Options:
-
-**None:** No text information is extracted or returned. This is useful when you want to optimize memory usage and don't need any text data.
-
-**TextOnly:** Extracts only the plain text from the document. This option excludes any layout or positional information.
-
-**BoundsOnly:** Extracts layout information, such as bounds or coordinates, without including the plain text data.
-
-**TextAndBounds:** Extracts both the plain text and the layout (bounds) information, which is the default behavior.
+- **None** — Do not extract or return any text or layout data. Use this option to minimize memory usage when textual information is not required.
+- **TextOnly** — Return plain text only; layout and bounds are omitted. Note: using `TextOnly` may disable some viewer text features such as synchronous `findText`; use `findTextAsync` when asynchronous search is required.
+- **BoundsOnly** — Return layout and positional data (bounds) without the plain text content.
+- **TextAndBounds** — Return both plain text and its positional information (bounds). This is the default and is useful when both content and layout are required.
The following example demonstrates how to configure the `extractTextOption` property to control the level of text extraction:
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 3e69148093..6d176290a5 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,33 +7,23 @@ platform: document-processing
documentation: ug
---
-# Extract text using extractText in React PDF Viewer
+## Extract text method in the PDF Viewer
-The `extractText` method extracts text from one or more pages and can return plain text or text with bounds for each element.
+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).
-### extractText method
-Retrieves text data from one page or a range of pages based on the specified options.
+**Parameters overview:**
-#### Parameters:
-**startIndex:** The starting page index for text extraction (0-based index).
+- `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.
+- `options` (optional) — Extraction options such as `TextOnly` or `TextAndBounds` to control whether bounds are included.
-**endIndex or isOptions:** Either the ending page index (for multiple pages) or an option specifying extraction criteria for a single page.
+**Returned object shape (example):**
-**options (optional):** Specifies additional options, such as extracting plain text `TextOnly` or more detailed text data `TextAndBounds`. You can specify various options for text extraction. These options determine whether you want to extract plain text, text with bounds, or detailed text data.
-
-- TextOnly: Extracts only plain text without bounds.
-- TextAndBounds: Extracts text with bounds (coordinates).
-
-#### Returns:
-Returns a Promise with:
-- textData: An array of TextDataSettingsModel with details including bounds and page text.
-- pageText: A concatenated string of plain text from the specified page(s).
-
-**textData:** An array of TextDataSettingsModel objects, each representing the details of the extracted text (including bounds, page text, etc.).
-
-**pageText:** A concatenated string of plain text extracted from the specified page(s).
+- `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
+
Here is an example that demonstrates how to use the extractText method along with event handling:
```html
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/find-text-async.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/find-text-async.md
index 55c7a85188..319cdf5cf0 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/find-text-async.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/find-text-async.md
@@ -9,7 +9,7 @@ documentation: ug
# Find text with findTextAsync in React PDF Viewer
-The `findTextAsync` method searches for a string or array of strings asynchronously and returns bounding rectangles for each match. Use it to locate text positions across the document or on a specific page.
+The `findTextAsync` method performs an asynchronous text search within a PDF document. It returns a Promise that resolves with an array of result objects describing each match. Each match object contains information such as the page index and the bounding rectangles for the matched text, which can be used to highlight or navigate to occurrences. By default, the search runs across all pages; supply the optional `pageIndex` parameter to limit the search to a specific page.
Here is an example of how to use `findTextAsync`:
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/get-base64.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/get-base64.md
index d3b39e1a29..135b9a507b 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/get-base64.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/get-base64.md
@@ -7,20 +7,21 @@ platform: document-processing
documentation: ug
---
-# Get Base64 value from a loaded PDF
+# Retrieve Base64 from a PDF in PDF Viewer
### Overview
-This guide shows how to get the base64-encoded value of a PDF loaded in the Syncfusion PDF Viewer using React. This is useful for sending the PDF as a base64 string or processing it on the client.
+This guide shows how to obtain the Base64-encoded value of a PDF document loaded in the Syncfusion® PDF Viewer using React. Producing a Base64 string is useful for sending the PDF to a server, embedding it in JSON payloads, or client-side processing.
-### How to Retrieve Base64 Value
+### How to retrieve the Base64 value
-**Step 1:** Follow the steps in the [Get started with React PDF Viewer](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started) guide to create a sample.
+**Step 1: Create the PDF Viewer sample**
+Follow the [Getting Started](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started) guide for the React PDF Viewer.
-**Step 2:** Set Up Your React Component
+**Step 2: Set up the React component**
-Create a React component and set up the Syncfusion® PDF Viewer. Add a button to trigger the conversion to a base64 string.
+Create an React component and update the template to include a button that triggers conversion to a Base64 string. The samples below show both standalone and server-backed viewer configurations.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
@@ -177,6 +178,6 @@ root.render();
### Conclusion
-By following these steps, a loaded PDF can be converted to a Base64 string on button click for transfer or processing.
+By implementing these steps in the React component, a PDF document loaded in the Syncfusion® PDF Viewer can be converted into a Base64-encoded data URL when a button is clicked. This facilitates the manipulation or transfer of PDF data as needed.
[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/how-to/getPageInfo.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/getPageInfo.md
index 18734eaa7a..b832f8b73d 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/getPageInfo.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/getPageInfo.md
@@ -10,13 +10,13 @@ domainurl: ##DomainURL##
# Get page info in React PDF Viewer
-Use the **getPageInfo()** method to retrieve information for a specified page, including height, width, and rotation.
+The `getPageInfo()` method returns metadata for a specified page in the viewer, such as `height`, `width`, and `rotation`. `pageIndex` is zero-based. Call `getPageInfo()` after the viewer is ready to ensure page data is available (for example, in `ngAfterViewInit` or after the document has been loaded).
-The following steps show how to use `getPageInfo`.
+The following example retrieves and logs the page dimensions and rotation for a specified page.
-**Step 1:** Follow the steps in the [Get started with React PDF Viewer](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started/) guide to create a sample.
+**Step 1:** Follow the steps provided in the [getting started guide](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started) to create a simple PDF Viewer sample.
-**Step 2:** Use the following code to get the height, width, and rotation for a specified page.
+**Step 2:** The following code snippet implements retrieval of height, width, and rotation for a specified page in the viewer.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/import-export-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/import-export-annotation.md
index ecdb215d14..4bda41925e 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/import-export-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/import-export-annotation.md
@@ -9,11 +9,11 @@ documentation: ug
# Import and export annotations in React PDF Viewer
-Import annotations from objects or streams instead of files. To import such objects, first export annotations as objects using the [exportAnnotationsAsObject()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#exportannotationsasobject) method. Only objects exported from the PDF Viewer can be imported.
+The PDF Viewer control supports exporting and importing annotations in multiple formats: JSON, XFDF, or as native annotation objects. Use `exportAnnotation('Json')` or `exportAnnotation('Xfdf')` for serialized formats, and `exportAnnotationsAsObject()` to obtain the in-memory annotation objects that can be re-imported with `importAnnotation()`.
-Use the following steps to import and export annotations as objects, JSON, or XFDF.
+The following steps show how to export annotations in different formats and import annotation objects back into the viewer.
-**Step 1:** Follow the steps provided in the [link](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started/) to create a simple PDF Viewer sample.
+**Step 1:** Follow the steps provided in the [getting started guide](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started) to create a simple PDF Viewer sample.
**Step 2:** Use the following code to perform import and export operations.
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/load-document-after-resources-loaded.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/load-document-after-resources-loaded.md
index 780cf90953..a4c6a8f627 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/load-document-after-resources-loaded.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/load-document-after-resources-loaded.md
@@ -10,15 +10,15 @@ domainurl: ##DomainURL##
# Load a PDF only after PDFium resources are ready
-In Standalone mode, the React PDF Viewer downloads its PDFium runtime assets (scripts/wasm) from the location specified in resourceUrl. Attempting to load a document before those assets are available can cause errors. Use the resourcesLoaded event to defer document loading until all required assets are ready.
+When using the Standalone PDF Viewer, the component downloads the PDFium runtime assets (scripts/wasm) from the path specified in `resourceUrl`. Attempting to load a document before those assets are available can cause errors. Use the `resourcesLoaded` event to defer document loading until all required assets are ready.
## When does resourcesLoaded trigger?
The resourcesLoaded event fires once the viewer finishes loading all required PDFium assets. At this point, it is safe to call the load method to open a document (by URL or Base64).
-## How to Load Document after resourcesLoaded
+## How to load a document after resourcesLoaded
-- Set the resourceUrl to a valid PDF Viewer assets path (CDN or your hosted path).
+- Set the `resourceUrl` to a valid PDF Viewer assets path (CDN or a hosted path).
- Listen to resourcesLoaded and call load inside the handler.
```js
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/load-document.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/load-document.md
index e02256a275..2fb413e95c 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/load-document.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/load-document.md
@@ -9,13 +9,13 @@ documentation: ug
# Load documents dynamically in React PDF Viewer
-Load or switch PDF documents dynamically after the initial load. Use the [load](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#load) method to load a PDF by Base64 string or file name.
+The PDF Viewer supports loading or switching PDF documents at runtime after the initial viewer initialization. Use the [load](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#load) method to open a document from a URL or a Base64 string.
-The following steps are used to load the PDF document dynamically.
+The following steps show common approaches for loading documents dynamically.
-**Step 1:** Follow the steps in the [Get started with React PDF Viewer](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started/) guide to create a sample.
+**Step 1:** Follow the getting started guide to create a basic React PDF Viewer sample: https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started
-**Step 2:** Use the following code to load a PDF using a Base64 string.
+**Step 2:** Use the following code snippet to load the document from a Base64 string.
```
@@ -29,7 +29,7 @@ The following steps are used to load the PDF document dynamically.
```
-**Step 3:** Use the following code to load a PDF by document name.
+**Step 3:** Use the following code snippet to load a PDF document from a URL (document name).
```
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/load-n-number-page.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/load-n-number-page.md
index b4354a534d..4c7e839fa2 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/load-n-number-page.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/load-n-number-page.md
@@ -8,13 +8,11 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Load N number of pages on initial loading in react
+# Load N pages initially
-The initial rendering in a PDF viewer allows users to control the number of pages displayed when opening a PDF document. This improves the user experience by providing flexibility in loading a specific number of pages initially, while additional pages are dynamically rendered as the user scrolls through the document. This approach enhances the responsiveness of the PDF viewer and minimizes delays as users can access specific pages without waiting for the entire document to load.
+Control the number of pages the PDF Viewer renders on the initial load to improve perceived performance and reduce initial memory usage. Additional pages are rendered dynamically as the user scrolls through the document, allowing quick access to early pages without loading the entire file.
-To utilize this capability in Syncfusion® PDF Viewer, use the [initialRenderPages](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#initialrenderpages) property. You can achieve the desired outcome by setting this property to the desired number of pages you want to load initially. However, it's important to exercise caution when setting a high value for the initialRenderPages in large documents with numerous pages. Rendering a large number of pages simultaneously can increase memory usage and slow down loading times, impacting the performance of the PDF viewer.
-
-Using the `initialRenderPages` property judiciously is advisable, especially when dealing with larger documents. It is more suitable for scenarios where a smaller range of pages, such as 10-20, can be loaded to provide a quick initial view of the document.
+Set the [initialRenderPages](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#initialrenderpages) property to specify how many pages to render initially. For large documents, avoid high values for `initialRenderPages` because rendering many pages at once increases memory use and may slow loading. Typical ranges of 10–20 pages work well for most documents; adjust based on document size and client capabilities.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/lock-annotation.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/lock-annotation.md
index e2838e4af4..56d4df8895 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/lock-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/lock-annotation.md
@@ -10,7 +10,7 @@ domainurl: ##DomainURL##
# Lock annotation in React Pdfviewer component
-The PDF Viewer library allows you to lock the rectangle or square annotations using the **isLock** property in the **rectangleSettings**.
+The PDF Viewer supports locking annotations to prevent users from moving, resizing, or removing them. Locking can be applied via annotation settings or by handling viewer events and updating annotation metadata.
**Step 1:** Follow the steps provided in the [link](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started/) to create simple PDF Viewer sample in React.
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/min-max-zoom.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/min-max-zoom.md
index 26d19e20a3..708b52f3e7 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/min-max-zoom.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/min-max-zoom.md
@@ -9,15 +9,15 @@ documentation: ug
# Configure minZoom and maxZoom in the PDF Viewer
-Control zoom levels in the PDF Viewer using the [minZoom](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#minzoom) and [maxZoom](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#maxzoom) properties to ensure a consistent viewing experience.
+The PDF Viewer exposes [minZoom](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#minzoom) and [maxZoom](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#maxzoom) to control the allowable zoom range for document viewing. Setting these properties helps maintain readability, performance, and a consistent experience across devices.
### minZoom
-Specifies the minimum zoom percentage allowed. Prevents zooming out beyond a set limit to maintain readability and performance.
+`minZoom` sets the minimum zoom percentage the viewer supports. Use this to prevent users from zooming out to levels that make content unreadable or negatively affect layout.
### maxZoom
-Defines the maximum zoom percentage allowed. Prevents excessive zooming that could affect performance and usability.
+`maxZoom` sets the maximum zoom percentage the viewer supports. Restricting the maximum helps avoid excessive memory use and degraded rendering performance when users zoom in very far.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/open-bookmark.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/open-bookmark.md
index 8f5db13d74..0d4e26b854 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/open-bookmark.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/open-bookmark.md
@@ -7,15 +7,15 @@ platform: document-processing
documentation: ug
---
-# Open or close the Bookmark pane programmatically
+# Open and close the bookmark pane programmatically
-Open the Bookmark pane programmatically using the `openBookmarkPane()` method.
+The PDF Viewer exposes APIs to open and close the bookmark pane programmatically. Use `openBookmarkPane()` and `closeBookmarkPane()` to control the bookmark pane from application code.
-The following steps are used to open the Bookmark.
+Follow these steps to call the bookmark APIs from the application.
-**Step 1:** Follow the steps in the [Get started with React PDF Viewer](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/React/getting-started) guide to create a sample.
+**Step 1:** Create a basic PDF Viewer sample using the [getting started](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started) guide.
-**Step 2:** Insert the following code snippet to implement the functionality for opening the Bookmark pane:
+**Step 2:** Insert the following code snippet to implement opening the bookmark pane:
```
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/open-thumbnail.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/open-thumbnail.md
index f0afe2d2be..a76a2b42f2 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/open-thumbnail.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/open-thumbnail.md
@@ -9,13 +9,13 @@ documentation: ug
# Open the thumbnail pane programmatically
-Open the thumbnail pane programmatically using the [openThumbnailPane()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/thumbnailView/#openthumbnailpane) method.
+The PDF Viewer exposes a `openThumbnailPane()` API to open the thumbnail pane from application code. Use this API when the UI needs to show the thumbnail pane in response to user actions or programmatic workflows.
-The following steps are used to open the thumbnail.
+Follow these steps to open the thumbnail pane from application code.
-**Step 1:** Follow the steps in the [Get started with React PDF Viewer](https://help.syncfusion.com/react/document-processing/pdf/pdf-viewer/react/getting-started/) guide to create a sample.
+**Step 1:** Create a basic PDF Viewer sample using the [getting started](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started) guide.
-**Step 2:** Use the following code snippet to open thumbnail.
+**Step 2:** Use the code snippet below to open the thumbnail pane.
```
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/pagerenderstarted-pagerendercompleted-event.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/pagerenderstarted-pagerendercompleted-event.md
index 70f4b08171..ea4e226402 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/pagerenderstarted-pagerendercompleted-event.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/pagerenderstarted-pagerendercompleted-event.md
@@ -9,15 +9,10 @@ documentation: ug
# Handle pageRenderInitiate and pageRenderComplete events
-In the Syncfusion PDF Viewer, the [pageRenderInitiate](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#pagerenderinitiate) and [pageRenderComplete](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#pagerendercomplete) events occur during page rendering.
+In the PDF Viewer, the `pageRenderInitiate` and `pageRenderComplete` events fire during the page rendering lifecycle:
-**pageRenderInitiate**
-
-Triggered when page rendering begins. Use this event to initialize or set up resources before rendering starts.
-
-**PageRenderComplete**
-
-Triggered when page rendering completes. Use this event to perform cleanup or finalize rendering-related tasks.
+- `pageRenderInitiate`: fired when the rendering of a page begins. Use this event to initialize resources, show loading indicators, or set up rendering parameters before the page content is drawn.
+- `pageRenderComplete`: fired when the rendering of a page finishes. Use this event to hide loading indicators, record render timing, or run post-render processing.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/perform-form-field-double-click-event.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/perform-form-field-double-click-event.md
index 713efcafbe..d261d8f4bb 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/perform-form-field-double-click-event.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/perform-form-field-double-click-event.md
@@ -8,9 +8,9 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Perform form field double click event in React Pdfviewer component
+## Perform form field double-click event in React PDF Viewer
-The PDF Viewer library allows you to trigger an event when you double click on the form field using the `formFieldDoubleClick` event.
+This article demonstrates how to handle a double-click on a PDF form field by using the `formFieldDoubleClick` event. The event provides information about the clicked field and can be used to open custom editors, show dialogs, or trigger other application behaviors.
**Step 1:** Follow the steps provided in the [link](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started/) to create simple PDF Viewer sample in React.
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/resolve-unable-to-find-an-entry-point-error.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/resolve-unable-to-find-an-entry-point-error.md
index 50cbd0fa34..64e827a4b4 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/resolve-unable-to-find-an-entry-point-error.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/resolve-unable-to-find-an-entry-point-error.md
@@ -11,9 +11,9 @@ documentation: ug
Starting with **21.1.0.35 (2023 Volume 1)**, the Pdfium package was upgraded to improve text search, selection, rendering, and performance. After upgrading, the PDF Viewer may display a **“Web-Service is not listening”** error. In most cases, the Network tab reveals that an outdated Pdfium assembly is referenced in the local web service project. Ensure the correct native assembly is deployed for the target OS:
-- Windows: pdfium.dll
-- Linux: libpdfium.so
-- macOS: libpdfium.dylib
+- Windows: `pdfium.dll`
+- Linux: `libpdfium.so`
+- macOS: `libpdfium.dylib`

diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/restricting-zoom-in-mobile-mode.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/restricting-zoom-in-mobile-mode.md
index 5b4dadc43e..e8d543cd5a 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/restricting-zoom-in-mobile-mode.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/restricting-zoom-in-mobile-mode.md
@@ -9,7 +9,7 @@ documentation: ug
# Restrict zoom percentage on mobile devices
-Restrict zoom on mobile devices using the `maxZoom` and `minZoom` properties. This improves scrolling performance and document loading on mobile.
+Use `minZoom` and `maxZoom` to restrict zoom levels on mobile devices and improve scrolling performance and perceived load time. Restricting zoom prevents extreme zoom levels that can degrade rendering performance on constrained devices.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
diff --git a/Document-Processing/PDF/PDF-Viewer/react/how-to/retrieve-id-of-the-document.md b/Document-Processing/PDF/PDF-Viewer/react/how-to/retrieve-id-of-the-document.md
index bf8af73de1..56ee4354b5 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/how-to/retrieve-id-of-the-document.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/how-to/retrieve-id-of-the-document.md
@@ -8,17 +8,17 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Retrieve id of the document in React Pdfviewer component
+## Retrieve document ID in React PDF Viewer
-View the PDF document's id by passing the `hashId` value to the `getItem()` method of session storage API.
+This article shows how to retrieve the PDF document ID that the viewer stores in `sessionStorage` under the key `hashId`.
-Refer to the following code to get the id of a PDF document in a button click.
+Refer to the following minimal example that logs the stored document ID when a button is clicked:
```
-```
+### Open PDF from a Blob
-[View sample in GitHub](https://github.com/SyncfusionExamples/react-pdf-viewer-examples/tree/master/Save%20and%20Load/Load%20PDF%20file%20from%20base64%20string)
+- Fetch a Blob and create an object URL, then load it into the viewer:
-## Opening a PDF from database
+```js
+const viewerRef = useRef(null);
+fetch(url)
+ .then(r => r.blob())
+ .then(blob => {
+ const objectUrl = URL.createObjectURL(blob);
+ viewerRef.current?.load(objectUrl, null);
+ });
+```
-To load a PDF file from SQL Server database in a PDF Viewer, you can follow the steps below
-**Step 1:** Create a Simple PDF Viewer Sample in React
+### Open PDF from database
-Start by following the steps provided in this [link](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started) to create a simple PDF viewer sample in React. This will give you a basic setup of the PDF viewer component.
+ To load a PDF file from SQL Server database in a PDF Viewer, you can follow the steps below
-**Step 2:** Modify the `PdfViewerController.cs` File in the Web Service Project
+ **Step 1:** Create a Simple PDF Viewer Sample in React
-1. Create a web service project in .NET Core 3.0 or above. You can refer to this [link](https://www.syncfusion.com/kb/11063/how-to-create-pdf-viewer-web-service-in-net-core-3-0-and-above) for instructions on how to create a web service project.
+ Start by following the steps provided in this [link](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started) to create a simple PDF viewer sample in React. This will give you a basic setup of the PDF viewer component.
-2. Open the `PdfViewerController.cs` file in your web service project.
+ **Step 2:** Modify the `PdfViewerController.cs` File in the Web Service Project
-3. Import the required namespaces at the top of the file:
+ 1. Create a web service project in .NET Core 3.0 or above. You can refer to this [link](https://www.syncfusion.com/kb/11063/how-to-create-pdf-viewer-web-service-in-net-core-3-0-and-above) for instructions on how to create a web service project.
-```csharp
-using System.IO;
-using System.Data.SqlClient;
-```
+ 2. Open the `PdfViewerController.cs` file in your web service project.
-4. Add the following private fields and constructor parameters to the `PdfViewerController` class, In the constructor, assign the values from the configuration to the corresponding fields
+ 3. Import the required namespaces at the top of the file:
-```csharp
-private IConfiguration _configuration;
-public readonly string _connectionString;
+ ```csharp
+ using System.IO;
+ using System.Data.SqlClient;
+ ```
-public PdfViewerController(IWebHostEnvironment hostingEnvironment, IMemoryCache cache, IConfiguration configuration)
-{
- _hostingEnvironment = hostingEnvironment;
- _cache = cache;
- _configuration = configuration;
- _connectionString = _configuration.GetValue("ConnectionString");
-}
-```
+ 4. Add the following private fields and constructor parameters to the `PdfViewerController` class, In the constructor, assign the values from the configuration to the corresponding fields
-5. Modify the `Load()` method to open it in the viewer using URL
+ ```csharp
+ private IConfiguration _configuration;
+ public readonly string _connectionString;
-```csharp
+ public PdfViewerController(IWebHostEnvironment hostingEnvironment, IMemoryCache cache, IConfiguration configuration)
+ {
+ _hostingEnvironment = hostingEnvironment;
+ _cache = cache;
+ _configuration = configuration;
+ _connectionString = _configuration.GetValue("ConnectionString");
+ }
+ ```
-public IActionResult Load([FromBody] Dictionary jsonData)
-{
- // Initialize the PDF viewer object with memory cache object
- PdfRenderer pdfviewer = new PdfRenderer(_cache);
- MemoryStream stream = new MemoryStream();
- object jsonResult = new object();
+ 5. Modify the `Load()` method to open it in the viewer using URL
- if (jsonObject != null && jsonObject.ContainsKey("document"))
+ ```csharp
+
+ public IActionResult Load([FromBody] Dictionary jsonData)
{
- if (bool.Parse(jsonObject["isFileName"]))
+ // Initialize the PDF viewer object with memory cache object
+ PdfRenderer pdfviewer = new PdfRenderer(_cache);
+ MemoryStream stream = new MemoryStream();
+ object jsonResult = new object();
+
+ if (jsonObject != null && jsonObject.ContainsKey("document"))
{
- string documentPath = GetDocumentPath(jsonData["document"]);
- if (!string.IsNullOrEmpty(documentPath))
+ if (bool.Parse(jsonObject["isFileName"]))
{
- byte[] bytes = System.IO.File.ReadAllBytes(documentPath);
- stream = new MemoryStream(bytes);
- }
- string documentName = jsonObject["document"];
+ string documentPath = GetDocumentPath(jsonData["document"]);
+ if (!string.IsNullOrEmpty(documentPath))
+ {
+ byte[] bytes = System.IO.File.ReadAllBytes(documentPath);
+ stream = new MemoryStream(bytes);
+ }
+ string documentName = jsonObject["document"];
- string connectionString = _connectionString;
- System.Data.SqlClient.SqlConnection connection = new System.Data.SqlClient.SqlConnection(connectionString);
+ string connectionString = _connectionString;
+ System.Data.SqlClient.SqlConnection connection = new System.Data.SqlClient.SqlConnection(connectionString);
- //Searches for the PDF document from the database
- string query = "SELECT FileData FROM Table WHERE FileName = '" + documentName + "'";
- System.Data.SqlClient.SqlCommand command = new System.Data.SqlClient.SqlCommand(query, connection);
- connection.Open();
+ //Searches for the PDF document from the database
+ string query = "SELECT FileData FROM Table WHERE FileName = '" + documentName + "'";
+ System.Data.SqlClient.SqlCommand command = new System.Data.SqlClient.SqlCommand(query, connection);
+ connection.Open();
- using (SqlDataReader reader = command.ExecuteReader())
- {
- if (reader.Read())
+ using (SqlDataReader reader = command.ExecuteReader())
{
- byte[] byteArray = (byte[])reader["FileData"];
- stream = new MemoryStream(byteArray);
+ if (reader.Read())
+ {
+ byte[] byteArray = (byte[])reader["FileData"];
+ stream = new MemoryStream(byteArray);
+ }
}
}
+ else
+ {
+ byte[] bytes = Convert.FromBase64String(jsonObject["document"]);
+ stream = new MemoryStream(bytes);
+ }
}
- else
- {
- byte[] bytes = Convert.FromBase64String(jsonObject["document"]);
- stream = new MemoryStream(bytes);
- }
+ jsonResult = pdfviewer.Load(stream, jsonObject);
+ return Content(JsonConvert.SerializeObject(jsonResult));
}
- jsonResult = pdfviewer.Load(stream, jsonObject);
- return Content(JsonConvert.SerializeObject(jsonResult));
-}
-```
+ ```
-6. Open the `appsettings.json` file in your web service project, Add the following lines below the existing `"AllowedHosts"` configuration
+ 6. Open the `appsettings.json` file in your web service project, Add the following lines below the existing `"AllowedHosts"` configuration
-```json
-{
- "Logging": {
- "LogLevel": {
- "Default": "Information",
- "Microsoft.AspNetCore": "Warning"
- }
- },
- "AllowedHosts": "*",
- "ConnectionString": "Your connection string for SQL server"
-}
-```
+ ```json
+ {
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.AspNetCore": "Warning"
+ }
+ },
+ "AllowedHosts": "*",
+ "ConnectionString": "Your connection string for SQL server"
+ }
+ ```
+
+ N> Replace **Your Connection string from SQL server** with the actual connection string for your SQL Server database
+
+ N> The **System.Data.SqlClient** package must be installed in your application to use the previous code example. You need to modify the connectionString variable in the previous code example as per the connection string of your database.
+
+[View sample in GitHub](https://github.com/SyncfusionExamples/open-save-pdf-documents-in-database)
+
+### Open from Cloud Storage Services
+
+Each link goes to a provider page with simple step-by-step instructions, sample code, and any authentication notes.
+
+- [AWS S3](./open-pdf-file/from-amazon-s3)
+- [Azure Blob Storage](./open-pdf-file/from-azure-blob-storage)
+- [Google Cloud Storage](./open-pdf-file/from-google-cloud-storage)
+- [Google Drive](./open-pdf-file/from-google-drive)
+- [OneDrive](./open-pdf-file/from-one-drive)
+- [Dropbox](./open-pdf-file/from-dropbox-cloud-file-storage)
+- [Box](./open-pdf-file/from-box-cloud-file-storage)
+
+---
-N> Replace **Your Connection string from SQL server** with the actual connection string for your SQL Server database
+**See also**
-N> The **System.Data.SqlClient** package must be installed in your application to use the previous code example. You need to modify the connectionString variable in the previous code example as per the connection string of your database.
-[View sample in GitHub](https://github.com/SyncfusionExamples/open-save-pdf-documents-in-database)
\ No newline at end of file
+- [Load documents dynamically in React PDF Viewer](./how-to/load-document)
+- [Load a PDF only after PDFium resources are ready](./how-to/load-document-after-resources-loaded)
+- [Saving PDF files](./save-pdf-files)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/organize-pages/copy-pages.md b/Document-Processing/PDF/PDF-Viewer/react/organize-pages/copy-pages.md
new file mode 100644
index 0000000000..4ef7a40711
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/organize-pages/copy-pages.md
@@ -0,0 +1,69 @@
+---
+layout: post
+title: Copy pages in Organize Pages in React PDF Viewer | Syncfusion
+description: Learn how to duplicate pages using the Organize Pages UI in the React PDF Viewer of Syncfusion Essential JS 2 and more.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Copy Pages in React PDF Viewer
+
+## Overview
+
+This guide explains how to duplicate pages within the current PDF using the Organize Pages UI.
+
+**Outcome**: Copied pages are inserted adjacent to the selection and included in exported PDFs.
+
+## Prerequisites
+
+- EJ2 React PDF Viewer installed
+- PDF Viewer injected with `PageOrganizer` module
+
+## Steps
+
+1. Open the Organize Pages view
+
+ - Click the **Organize Pages** button in the viewer toolbar to open the Organize Pages dialog.
+
+2. Select pages to duplicate
+
+ - Click a single thumbnail or use Shift+click/Ctrl+click to select multiple pages.
+
+3. Duplicate selected pages
+
+ - Click the **Copy Pages** button in the Organize Pages toolbar; duplicated pages are inserted to the right of the selected thumbnails.
+
+4. Duplicate multiple pages at once
+
+ - When multiple thumbnails are selected, the Copy action duplicates every selected page in order.
+
+ 
+
+5. Undo or redo changes
+
+ - Use **Undo** (Ctrl+Z) or **Redo** to revert or reapply recent changes.
+
+ 
+
+6. Persist duplicated pages
+
+ - Click **Save** or **Save As** to include duplicated pages in the saved/downloaded PDF.
+
+## Expected result
+
+- Selected pages are duplicated and included in the saved PDF.
+
+## Enable or disable Copy Pages button
+
+To enable or disable the **Copy Pages** button in the Organize Pages toolbar, update the [`pageOrganizerSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/pageorganizersettings). See [Organize pages toolbar customization](./toolbar#enable-or-disable-the-copy-option) for the guidelines.
+
+## Troubleshooting
+
+- If duplicates are not created: verify that the changes are persisted using **Save**.
+
+## Related topics
+
+- [Organize pages toolbar customization](./toolbar)
+- [Organize pages event reference](./events)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/organize-pages/events.md b/Document-Processing/PDF/PDF-Viewer/react/organize-pages/events.md
index 66f1b55b60..7156544b53 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/organize-pages/events.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/organize-pages/events.md
@@ -10,19 +10,19 @@ domainurl: ##DomainURL##
# Organize Pages Events in PDF Viewer
-The PDF Viewer provides events to track and respond to actions within the page organizer, allowing for the customization of page manipulation features.
+The PDF Viewer exposes events for the page organizer to track and respond to page manipulation actions (for example: rotate, rearrange, insert, delete, and copy).
## pageOrganizerSaveAs
The `pageOrganizerSaveAs` event is triggered when a save action is performed in the page organizer.
-- Occurs when the **Save as** button in the page organizer toolbar is clicked after modifying the document structure.
+ - Fires when the **Save as** button in the page organizer toolbar is clicked after modifying the document structure.
The event arguments provide the necessary information about the save event:
-- `fileName`: The name of the currently loaded PDF document.
-- `downloadDocument`: A base64 string of the modified PDF document data.
-- `cancel`: A boolean that, when set to `true`, prevents the default save action from proceeding.
+ - `fileName`: The name of the currently loaded PDF document.
+ - `downloadDocument`: A base64-encoded string containing the modified PDF document.
+ - `cancel`: Boolean; set to `true` to prevent the default save action.
```typescript
import * as React from 'react';
@@ -82,15 +82,14 @@ root.render();
## pageOrganizerZoomChanged
-The `pageOrganizerZoomChanged` event is triggered when the zoom level of the page organizer is changed.
-
-- This event is fired when the user interacts with the zoom slider in the page organizer. The `showImageZoomingSlider` property in `pageOrganizerSettings` must be set to `true` for the slider to be visible.
+The `pageOrganizerZoomChanged` event fires when the page organizer zoom level changes.
+- This event occurs when the user interacts with the zoom slider in the page organizer. The `showImageZoomingSlider` property in `pageOrganizerSettings` must be set to `true` for the slider to appear.
Event arguments:
-- `previousZoomValue`: The previous zoom value.
-- `currentZoomValue`: The current zoom value.
+- `previousZoom`: The previous zoom value.
+- `currentZoom`: The current zoom value.
```typescript
import * as React from 'react';
diff --git a/Document-Processing/PDF/PDF-Viewer/react/organize-pages/extract-pages.md b/Document-Processing/PDF/PDF-Viewer/react/organize-pages/extract-pages.md
index 4fab3cd578..897bed455b 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/organize-pages/extract-pages.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/organize-pages/extract-pages.md
@@ -10,8 +10,7 @@ domainurl: ##DomainURL##
# Extract pages in React PDF Viewer
-The PDF Viewer component lets you extract pages from a document using the Extract Pages option in the Organize Pages UI.
-The Extract Pages tool is available by default in Organize Pages.
+The PDF Viewer component provides an Extract Pages tool in the Organize Pages UI to export selected pages as a new PDF file. The Extract Pages tool is enabled by default.
## Extract Pages in Organize Pages
@@ -26,31 +25,27 @@ When selected, a secondary toolbar dedicated to extraction is displayed.
## Extract pages using the UI
-You can extract by typing page numbers/ranges or by selecting thumbnails.
+Extract pages by typing page numbers/ranges or by selecting thumbnails.
1. Click Extract Pages in the Organize Pages panel.
-2. In the input box, enter the pages to extract. Supported formats include:
- - Single pages: 1,3,5
- - Ranges: 2-6
- - Combinations: 1,4,7-9
-3. Alternatively, select the page thumbnails you want instead of typing values.
-4. Click Extract to download the extracted pages as a new PDF. Click Cancel to close the tool.
+2. In the input box, enter pages to extract. Supported formats:
+ - Single pages: 1,3,5
+ - Ranges: 2-6
+ - Combinations: 1,4,7-9
+3. Alternatively, select the page thumbnails to extract instead of typing values.
+4. Click Extract to download the selected pages as a new PDF; click Cancel to close the tool.

- N> Page numbers are 1-based (first page is 1). You can start anywhere—enter single pages or ranges like 2-3, 5, or 7-9. Invalid or out-of-range entries are ignored.
+Note: Page numbers are 1-based (the first page is 1). Invalid or out-of-range entries are ignored; only valid pages are processed. Consider validating input before extraction to ensure expected results.
## Extraction options (checkboxes)
-Two options appear in the secondary toolbar:
+The secondary toolbar provides two options:
-- **Delete Pages After Extracting:**
- - When enabled, the selected/entered pages are removed from the document opened in the viewer after the extraction completes. The extracted pages are still downloaded as a new file.
- - Example: If you enter 1,2 and extract, a PDF containing pages 1 and 2 is downloaded, and pages 1 and 2 are removed from the currently loaded document in the viewer.
+- **Delete Pages After Extracting** — When enabled, the selected pages are removed from the currently loaded document after extraction; the extracted pages are still downloaded as a separate PDF.
-- **Extract Pages As Separate Files:**
- - When enabled, every selected page is exported as an individual PDF file.
- - Example: If you select pages 3, 5, and 6, three separate PDFs are downloaded (3.pdf, 5.pdf, and 6.pdf). If you enter a range (e.g., 2-4), pages 2, 3, and 4 are each downloaded as separate PDFs.
+- **Extract Pages As Separate Files** — When enabled, each selected page is exported as an individual PDF (for example, selecting pages 3, 5, and 6 downloads 3.pdf, 5.pdf, and 6.pdf).

@@ -157,7 +152,7 @@ export function App() {
);
}
function extractPage(){
-// Get the PDF viewer instance
+ // Get the PDF viewer instance
var viewer = document.getElementById('container').ej2_instances[0];
//Extract Pages 1,2
const array = viewer.extractPages('1,2');
diff --git a/Document-Processing/PDF/PDF-Viewer/react/organize-pages/import-pages.md b/Document-Processing/PDF/PDF-Viewer/react/organize-pages/import-pages.md
new file mode 100644
index 0000000000..2834aaff43
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/organize-pages/import-pages.md
@@ -0,0 +1,62 @@
+---
+layout: post
+title: Import pages in Organize Pages in React PDF Viewer | Syncfusion
+description: How to import pages from another PDF into the current document using the Organize Pages UI in the Syncfusion React PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Import pages using the Organize Pages tool
+
+## Overview
+
+This guide explains how to import pages from another PDF into the current document using the **Organize Pages** UI in the EJ2 React PDF Viewer.
+
+**Outcome**: Imported pages appear as thumbnails and are merged into the original document when saved or exported.
+
+## Prerequisites
+
+- EJ2 React PDF Viewer installed
+- PDF Viewer is injected with `PageOrganizer` service
+- [`resourceUrl`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#resourceurl) (standalone) or [`serviceUrl`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#serviceurl) (server-backed) configured when required
+
+## Steps
+
+1. Open the Organize Pages view
+
+ - Click the **Organize Pages** button in the viewer navigation toolbar to open the Organize Pages dialog.
+
+2. Start import
+
+ - Click **Import Document** and choose a valid PDF file from your local file system.
+
+3. Place imported pages
+
+ - Imported pages appear as thumbnails. If a thumbnail is selected, the imported pages are inserted to the right of the selection; otherwise they are appended at the start of the document.
+
+ 
+
+4. Persist changes
+
+ - Click **Save** or **Save As** (or download) to persist the merged document.
+
+## Expected result
+
+- Imported pages display as a single thumbnail in Organize Pages and are merged into the original PDF when saved or exported.
+
+## Enable or disable Import Pages button
+
+To enable or disable the **Import Pages** button in the Organize Pages toolbar, update the [`pageOrganizerSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/pageorganizersettings). See [Organize pages toolbar customization](./toolbar#enable-or-disable-the-import-option) for the guidelines.
+
+## Troubleshooting
+
+- **Import fails**: Ensure the selected file is a valid PDF and the browser file picker is permitted.
+- **Imported pages not visible**: Confirm that the import is persisted using **Save** or **Save As**.
+- **Import option disabled**: Ensure [`pageOrganizerSettings.canImport`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/pageorganizersettingsmodel#canimport) is set to `true` to enable import option.
+
+## Related topics
+
+- [Organize pages toolbar customization](./toolbar)
+- [Organize pages event reference](./events)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/organize-pages/insert-blank-pages.md b/Document-Processing/PDF/PDF-Viewer/react/organize-pages/insert-blank-pages.md
new file mode 100644
index 0000000000..3b5ab21e79
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/organize-pages/insert-blank-pages.md
@@ -0,0 +1,68 @@
+---
+layout: post
+title: Insert blank pages in Organize Pages in React PDF Viewer | Syncfusion
+description: How to insert blank pages into a PDF using the Organize Pages UI in the Syncfusion React PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Insert blank pages using the Organize Pages tool
+
+## Overview
+
+This guide describes inserting new blank pages into a PDF using the **Organize Pages** UI in the EJ2 React PDF Viewer.
+
+**Outcome**: A blank page is added at the chosen position and will appear in thumbnails and exports.
+
+## Prerequisites
+
+- EJ2 React PDF Viewer installed
+- `PageOrganizer` services injected into `PdfViewerComponent`
+- [`resourceUrl`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#resourceurl) for standalone mode or [`serviceUrl`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#serviceurl) for server-backed mode configured as required
+
+## Steps
+
+1. Open the Organize Pages view
+
+ - Click the **Organize Pages** button in the viewer navigation toolbar to open the panel.
+
+2. Select insertion point
+
+ - Hover over the thumbnail before or after which you want the blank page added.
+
+3. Insert a blank page
+
+ - Click the **Insert Left** / **Insert Right** option and choose the position (Before / After). A new blank thumbnail appears in the sequence.
+
+ 
+
+4. Adjust and confirm
+
+ - Reposition or remove the inserted blank page if needed using drag-and-drop or delete options.
+
+5. Persist the change
+
+ - Click **Save** or **Save As** to include the blank page in the exported PDF.
+
+## Expected result
+
+- A blank page thumbnail appears at the chosen position and is present in any saved or downloaded PDF.
+
+## Enable or disable Insert Pages button
+
+To enable or disable the **Insert Pages** button in the page thumbnails, update the [`pageOrganizerSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/pageorganizersettings). See [Organize pages toolbar customization](./toolbar#enable-or-disable-the-insert-option) for the guidelines
+
+## Troubleshooting
+
+- **Organize Pages button missing**: Verify `PageOrganizer` is included in `Inject` and `Toolbar` is enabled.
+- **Inserted page not saved**: Confirm [`resourceUrl`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#resourceurl) or [`serviceUrl`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#serviceurl) is configured for your selected processing mode.
+- **Insert options disabled**: Ensure [`pageOrganizerSettings.canInsert`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/pageorganizersettingsmodel#caninsert) is set to `true` to enable insert option.
+
+## Related topics
+
+- [Organize pages toolbar customization](./toolbar)
+- [Organize pages event reference](./events)
+- [Remove pages in Organize Pages](./remove-pages)
+- [Reorder pages in Organize Pages](./remove-pages)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/organize-pages/mobile-view.md b/Document-Processing/PDF/PDF-Viewer/react/organize-pages/mobile-view.md
index 5e7c4cfb68..675e92688d 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/organize-pages/mobile-view.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/organize-pages/mobile-view.md
@@ -10,15 +10,15 @@ domainurl: ##DomainURL##
# Organize Pages in Mobile PDF Viewer React
-The PDF Viewer offers a mobile-responsive layout for the `Organize Pages` feature, ensuring a seamless experience on smaller devices. When viewed on a mobile device, the toolbar and navigation elements adapt to the screen size, providing easy access to all page management tools.
+The PDF Viewer provides a mobile-responsive layout for the `Organize Pages` feature, optimized for touch interactions on small screens. The toolbar and navigation adapt to the device viewport so page-management controls remain accessible on phones and tablets.
-## Mobile-Friendly Toolbar
+## Mobile-friendly toolbar
-In the mobile view, the `Organize Pages` toolbar is displayed at the bottom of the screen for easy one-handed access. The toolbar includes the same set of tools as the desktop version, such as insert, delete, and rotate, but with a mobile-optimized layout.
+In mobile view the `Organize Pages` toolbar appears at the bottom of the screen for easier one-handed access. The toolbar exposes the same tools as the desktop layout (insert, delete, rotate, etc.) in a touch-optimized arrangement.
## Context Menu for Page Operations
-To perform actions on a page thumbnail, tap and hold on the thumbnail to open a context menu. This menu contains all the available page operations:
+To perform actions on a page thumbnail, tap and hold (long-press) the thumbnail to open a context menu. This menu contains the available page operations:
* **Rotate Clockwise**: Rotate the selected page 90 degrees clockwise.
* **Rotate Counter-Clockwise**: Rotate the selected page 90 degrees counter-clockwise.
@@ -28,10 +28,10 @@ To perform actions on a page thumbnail, tap and hold on the thumbnail to open a
* **Select All**: Select all pages in the document.
-
+
## Rearranging Pages on Mobile
-To rearrange pages, tap and hold a page thumbnail to select it, then drag it to the desired position. A blue line will indicate the drop location.
+To rearrange pages, tap and hold a thumbnail to select it, then drag it to the desired position; a blue line indicates the drop location. Supported gestures include `tap`, `long-press` (open context menu), and `drag` (reorder). The layout adapts to portrait and landscape orientations to preserve usability on different devices.
-By providing a mobile-friendly interface, the PDF Viewer ensures that users can efficiently manage their PDF documents from any device, anywhere.
\ No newline at end of file
+The mobile interface enables efficient page management on phones and tablets without sacrificing the functionality available in the desktop viewer.
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/organize-pages/overview.md b/Document-Processing/PDF/PDF-Viewer/react/organize-pages/overview.md
index d6cbef4831..9df143b705 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/organize-pages/overview.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/organize-pages/overview.md
@@ -10,9 +10,9 @@ domainurl: ##DomainURL##
# Organize pages in React PDF Viewer
-The React PDF Viewer component provides an Organize Pages panel that helps you prepare documents before sharing them. Use it to tidy scanned files, move pages into the right order, and duplicate important content without leaving the viewer.
+The React PDF Viewer includes an Organize Pages panel for preparing documents before sharing. Use this panel to reorder pages, correct orientation, insert or remove pages, and duplicate content without leaving the viewer.
-To open the Organize Pages panel, load a document, ensure that the Organize Pages toolbar item is enabled, and choose **Organize Pages** from the left vertical toolbar. The document must allow page-level edits; otherwise, the toolbar item is hidden.
+To open the Organize Pages panel, load a document and choose **Organize Pages** from the left vertical toolbar (when enabled).
The Organize Pages panel supports the following actions:
@@ -27,13 +27,10 @@ The Organize Pages panel supports the following actions:
After completing the changes, apply them by selecting **Save** to overwrite the current document or **Save As** to download a new copy that retains the updated page order.
-For a full guide to Organize Pages in React, see the feature landing page: [Organize pages in React PDF Viewer](./organize-pdf).
-
See also:
-- [UI interactions for Organize Pages](./organize-pdf/ui-interactions-organize-page)
-- [Toolbar items for Organize Pages](./organize-pdf/toolbar-organize-page)
-- [Programmatic support for Organize Pages](./organize-pdf/programmatic-support-for-organize-page)
-- [Organize Pages events](./organize-pdf/organize-pdf-events)
-- [Organize Pages in mobile view](./organize-pdf/organize-page-mobile-view)
+- [Toolbar customization for Organize Pages](./toolbar)
+- [Programmatic support for Organize Pages](./programmatic-support)
+- [Organize Pages events](./events)
+- [Organize Pages in mobile view](./mobile-view)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/organize-pages/programmatic-support.md b/Document-Processing/PDF/PDF-Viewer/react/organize-pages/programmatic-support.md
index 919eba16c0..5e981f2dda 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/organize-pages/programmatic-support.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/organize-pages/programmatic-support.md
@@ -10,11 +10,11 @@ domainurl: ##DomainURL##
# Programmatic Support for Organize Pages in React PDF Viewer control
-The PDF Viewer provides comprehensive programmatic support for organizing pages, allowing you to integrate and manage PDF functionalities directly within your application. This section details the available APIs to enable, control, and interact with the page organization features.
+The PDF Viewer exposes programmatic APIs for organizing pages so applications can integrate page-management workflows (for example: enable/disable organizer, open/close the organizer, and customize behavior). This section documents the available properties, methods, and settings used to control the Organize Pages experience.
## Enable or disable the page organizer
-The page organizer feature can be enabled or disabled using the `enablePageOrganizer` property. By default, this feature is enabled.
+The page organizer feature can be enabled or disabled using the `enablePageOrganizer` property. By default, the page organizer is enabled.
{% tabs %}
{% highlight ts tabtitle="Standalone" %}
@@ -59,7 +59,7 @@ export default function App() {
## Open the page organizer on document load
-You can control whether the page organizer dialog opens automatically when a document is loaded using the `isPageOrganizerOpen` property. The default value is `false`.
+Use the `isPageOrganizerOpen` property to control whether the page organizer opens automatically when a document loads. The default value is `false`.
{% tabs %}
{% highlight ts tabtitle="Standalone" %}
@@ -104,7 +104,7 @@ export default function App() {
## Customize page organizer settings
-The `pageOrganizerSettings` API allows you to customize the page management functionalities. You can enable or disable actions such as deleting, inserting, rotating, copying, importing, and rearranging pages, as well as configure thumbnail zoom settings. By default, all actions are enabled, and standard zoom settings are applied.
+The `pageOrganizerSettings` API customizes page-management capabilities. Use it to enable or disable actions (delete, insert, rotate, copy, import, rearrange) and to configure thumbnail zoom settings. By default, actions are enabled and standard zoom settings apply.
{% tabs %}
{% highlight ts tabtitle="Standalone" %}
diff --git a/Document-Processing/PDF/PDF-Viewer/react/organize-pages/remove-pages.md b/Document-Processing/PDF/PDF-Viewer/react/organize-pages/remove-pages.md
new file mode 100644
index 0000000000..3567584d8a
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/organize-pages/remove-pages.md
@@ -0,0 +1,74 @@
+---
+layout: post
+title: Remove pages using Organize Pages in React PDF Viewer | Syncfusion
+description: How to remove one or more pages from a PDF using the Organize Pages view in the Syncfusion React PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Remove pages using the Organize Pages tool
+
+## Overview
+
+This guide shows how to delete single or multiple pages from a PDF using the **Organize Pages** UI in the EJ2 React PDF Viewer.
+
+**Outcome**: You will remove unwanted pages and save or download the updated PDF.
+
+## Prerequisites
+
+- EJ2 React PDF Viewer installed in your project
+- Basic PDF Viewer setup ([`resourceUrl`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#resourceurl) for standalone mode or [`serviceUrl`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#serviceurl) for server-backed mode)
+
+## Steps
+
+1. Open the Organize Pages view
+
+ - Click the **Organize Pages** button in the viewer navigation toolbar to open the Organize Pages dialog.
+
+2. Select pages to remove
+
+ - Click a thumbnail to select a page. Use Shift+click or Ctrl+click to select multiple pages. Use the **Select all** button to select every page.
+
+3. Delete selected pages
+
+ - Click the **Delete Pages** icon in the Organize Pages toolbar to remove the selected pages. The thumbnails update immediately to reflect the deletion.
+
+ - Delete a single page directly from its thumbnail: hover over the page thumbnail to reveal the per-page delete icon, then click that icon to remove only that page.
+
+ 
+
+4. Multi-page deletion
+
+ - When multiple thumbnails are selected, the Delete action removes all selected pages at once.
+
+5. Undo or redo deletion
+
+ - Use **Undo** (Ctrl+Z) to revert the last deletion.
+ - Use **Redo** (Ctrl+Y) to revert the last undone deletion.
+
+ 
+
+6. Save the PDF after deletion
+
+ - Click **Save** to apply changes to the currently loaded document, or **Save As** / **Download** to download a copy with the removed pages permanently applied.
+
+## Expected result
+
+- Selected pages are removed from the document immediately in the Organize Pages dialog.
+- After clicking **Save** or **Save As**, the resulting PDF reflects the deletions.
+
+## Enable or disable Remove Pages button
+
+To enable or disable the **Remove Pages** button in the Organize Pages toolbar, update the [`pageOrganizerSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/pageorganizersettings). See [Organize pages toolbar customization](./toolbar#enable-or-disable-the-delete-option) for the guidelines.
+
+## Troubleshooting
+
+- **Delete button disabled**: Ensure `PageOrganizer` is injected and [`pageOrganizerSettings.canDelete`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/pageorganizersettingsmodel#candelete) is not set to `false`.
+- **Selection not working**: Verify that the Organize Pages dialog has focus; use Shift+click for range selection.
+
+## Related topics
+
+- [Organize pages toolbar customization](./toolbar)
+- [Organize pages event reference](./events)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/organize-pages/reorder-pages.md b/Document-Processing/PDF/PDF-Viewer/react/organize-pages/reorder-pages.md
new file mode 100644
index 0000000000..b8826fc7c5
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/organize-pages/reorder-pages.md
@@ -0,0 +1,66 @@
+---
+layout: post
+title: Reorder pages in Organize Pages in React PDF Viewer | Syncfusion
+description: How to rearrange pages using drag-and-drop and grouping in the Organize Pages UI of the Syncfusion React PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Reorder pages using the Organize Pages view
+
+## Overview
+
+This guide describes how to rearrange pages in a PDF using the **Organize Pages** UI.
+
+**Outcome**: Single or multiple pages can be reordered and the new sequence is preserved when the document is saved or exported.
+
+## Prerequisites
+
+- EJ2 React PDF Viewer installed
+- `Toolbar` and `PageOrganizer` services injected into the viewer
+
+## Steps
+
+1. Open the Organize Pages view
+
+ - Click the **Organize Pages** button in the navigation toolbar to open the page thumbnails panel.
+
+2. Reorder a single page
+
+ - Drag a thumbnail to the desired position. The thumbnails update instantly to show the new order.
+
+3. Reorder multiple pages
+
+ - Select multiple thumbnails using Ctrl or Shift, then drag the selected group to the new location.
+
+ 
+
+4. Verify and undo
+
+ - Use **Undo** / **Redo** options to revert accidental changes.
+
+ 
+
+5. Persist the updated order
+
+ - Click **Save** or download the document using **Save As** to persist the new page sequence.
+
+## Expected result
+
+- Thumbnails reflect the new page order immediately and saved / downloaded PDFs preserve the reordered sequence.
+
+## Enable or disable reorder option
+
+To enable or disable the **Reorder pages** option in the Organize Pages, update the [`pageOrganizerSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/pageorganizersettings). See [Organize pages toolbar customization](./toolbar#enable-or-disable-the-rearrange-option) for the guidelines
+
+## Troubleshooting
+
+- **Thumbnails won't move**: Confirm [`pageOrganizerSettings.canRearrange`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/pageorganizersettingsmodel#canrearrange) is is not set to `false`.
+- **Changes not saved**: Verify [`serviceUrl`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#serviceurl) (server) or [`resourceUrl`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#resourceurl) (standalone) is configured correctly.
+
+## Related topics
+
+- [Organize pages toolbar customization](./toolbar)
+- [Organize pages event reference](./events)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/organize-pages/rotate-pages.md b/Document-Processing/PDF/PDF-Viewer/react/organize-pages/rotate-pages.md
new file mode 100644
index 0000000000..0c9b2eeaa4
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/organize-pages/rotate-pages.md
@@ -0,0 +1,74 @@
+---
+layout: post
+title: Rotate pages in Organize Pages (React PDF Viewer) | Syncfusion
+description: Learn how to rotate one or more pages using the Organize Pages UI in the Syncfusion React PDF Viewer and more.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Rotate pages using the Organize Pages view
+
+## Overview
+
+This guide explains how to rotate individual or multiple pages using the **Organize Pages** UI in the EJ2 React PDF Viewer. Supported rotations: 90°, 180°, 270° clockwise and counter-clockwise.
+
+**Outcome**: Pages are rotated in the viewer and persisted when saved or exported.
+
+## Prerequisites
+
+- EJ2 React PDF Viewer installed
+- PDF Viewer configured with [`resourceUrl`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#resourceurl) (standalone) or [`serviceUrl`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#serviceurl) (server-backed)
+
+## Steps
+
+1. Open the Organize Pages view
+
+ - Click the **Organize Pages** button in the viewer toolbar to open the Organize Pages dialog.
+
+2. Select pages to rotate
+
+ - Click a single thumbnail or use Shift+click/Ctrl+click to select multiple pages.
+
+3. Rotate pages using toolbar buttons
+
+ - Use **Rotate Right** to rotate 90° clockwise.
+ - Use **Rotate Left** to rotate 90° counter-clockwise.
+ - Repeat the action to achieve 180° or 270° rotations.
+
+ 
+
+4. Rotate multiple pages at once
+
+ - When multiple thumbnails are selected, the Rotate action applies to every selected page.
+
+5. Undo or reset rotation
+
+ - Use **Undo** (Ctrl+Z) to revert the last rotation.
+ - Use the reverse rotation button (Rotate Left/Rotate Right) until the page returns to 0°.
+
+ 
+
+6. Persist rotations
+
+ - Click **Save** or **Save As** to persist rotations in the saved/downloaded PDF. Exporting pages also preserves the new orientation.
+
+## Expected result
+
+- Pages rotate in-place in the Organize Pages dialog when using the rotate controls.
+- Saving or exporting the document preserves the new orientation.
+
+## Enable or disable Rotate Pages button
+
+To enable or disable the **Rotate Pages** button in the Organize Pages toolbar, update the [`pageOrganizerSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/pageorganizersettings). See [Organize pages toolbar customization](./toolbar#enable-or-disable-the-rotate-option) for the guidelines
+
+## Troubleshooting
+
+- **Rotate controls disabled**: Ensure [`pageOrganizerSettings.canRotate`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/pageorganizersettingsmodel#canrotate) is not set to `false`.
+- **Rotation not persisted**: Click **Save** after rotating. For server-backed setups ensure [`serviceUrl`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#serviceurl) is set so server-side save can persist changes.
+
+## Related topics
+
+- [Organize page toolbar customization](./toolbar.md)
+- [Organize pages event reference](./events)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/organize-pages/toolbar.md b/Document-Processing/PDF/PDF-Viewer/react/organize-pages/toolbar.md
index 6067750305..0d172c9269 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/organize-pages/toolbar.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/organize-pages/toolbar.md
@@ -1,6 +1,6 @@
---
layout: post
-title: Organize Page Toolbar Customization in React PDF Viewer control | Syncfusion
+title: Organize Page Toolbar Customization in React | Syncfusion
description: Learn here all about Organize Page Toolbar Customization in Syncfusion React PDF Viewer control of Syncfusion Essential JS 2 and more.
platform: document-processing
control: PDF Viewer
@@ -8,16 +8,17 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Organize Page Toolbar Customization in React PDF Viewer control
+# Organize page toolbar customization in React PDF Viewer control
-The PDF Viewer allows you to customize the toolbar for the organize pages feature, enabling you to show or hide specific tools based on your application's requirements. The `pageOrganizerSettings` API provides properties to control the visibility of each tool in the organize pages dialog.
+The PDF Viewer lets applications customize the Organize Pages toolbar to enable or disable tools according to project requirements. Use the `pageOrganizerSettings` API to control each tool's interactivity and behavior.
-## Show or hide the insert option
+## Enable or disable the insert option
-The `canInsert` property controls the visibility of the insert tool. When set to `false`, the insert tool will be hidden from the toolbar.
+The `canInsert` property controls the insert tool visibility. Set it to `false` to disable the insert tool.
{% tabs %}
{% highlight ts tabtitle="Standalone" %}
+{% raw %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
@@ -42,21 +43,23 @@ function App() {
const root = ReactDOM.createRoot(document.getElementById('PdfViewer'));
root.render();
+{% endraw %}
{% endhighlight %}
{% highlight ts tabtitle="Server-Backed" %}
+{% raw %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
function App() {
- lwt pdfviewer;
+ let pdfviewer;
return (
{ pdfviewer = scope; }}
- serviceUrl='https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/'
documentPath="https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf"
+ serviceUrl='https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/'
pageOrganizerSettings={{ canInsert: false }}
style={{ height: '640px' }}
>
@@ -68,15 +71,17 @@ function App() {
const root = ReactDOM.createRoot(document.getElementById('PdfViewer'));
root.render();
+{% endraw %}
{% endhighlight %}
{% endtabs %}
-## Show or hide the delete option
+## Enable or disable the delete option
-The `canDelete` property controls the visibility of the delete tool. When set to `false`, the delete tool will be hidden.
+The `canDelete` property controls the delete tool visibility. Set it to `false` to disable the delete tool.
{% tabs %}
{% highlight ts tabtitle="Standalone" %}
+{% raw %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
@@ -101,8 +106,10 @@ function App() {
const root = ReactDOM.createRoot(document.getElementById('PdfViewer'));
root.render();
+{% endraw %}
{% endhighlight %}
{% highlight ts tabtitle="Server-Backed" %}
+{% raw %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
@@ -127,15 +134,17 @@ function App() {
const root = ReactDOM.createRoot(document.getElementById('PdfViewer'));
root.render();
+{% endraw %}
{% endhighlight %}
{% endtabs %}
-## Show or hide the rotate option
+## Enable or disable the rotate option
-The `canRotate` property controls the visibility of the rotate tool. When set to `false`, the rotate tool will be hidden.
+The `canRotate` property controls the rotate tool visibility. Set it to `false` to disable the rotate tool.
{% tabs %}
{% highlight ts tabtitle="Standalone" %}
+{% raw %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
@@ -160,8 +169,10 @@ function App() {
const root = ReactDOM.createRoot(document.getElementById('PdfViewer'));
root.render();
+{% endraw %}
{% endhighlight %}
{% highlight ts tabtitle="Server-Backed" %}
+{% raw %}
import * as React from 'react';
import * as ReactDOM from 'react-dom/client';
@@ -186,17 +197,22 @@ function App() {
const root = ReactDOM.createRoot(document.getElementById('PdfViewer'));
root.render();
+{% endraw %}
{% endhighlight %}
{% endtabs %}
-## Show or hide the copy option
+## Enable or disable the copy option
+
+The `canCopy` property controls the copy tool interaction. Set it to `false` to disable the copy tool.
+
+## Enable or disable the import option
-The `canCopy` property controls the visibility of the copy tool. When set to `false`, the copy tool will be hidden.
+The `canImport` property controls the import tool interaction. Set it to `false` to disable the import tool.
-## Show or hide the import option
+## Enable or disable the rearrange option
-The `canImport` property controls the visibility of the import tool. When set to `false`, the import tool will be hidden.
+The `canRearrange` property controls whether pages can be rearranged. Set it to `false` to disable page reordering.
-## Show or hide the rearrange option
+## Show or hide the zoom pages option
-The `canRearrange` property controls the ability to rearrange pages. When set to `false`, pages cannot be rearranged.
\ No newline at end of file
+The `showImageZoomingSlider` property controls the zooming tool visibility. Set it to `false` to hide the zoom page tool.
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/organize-pages/ui-interactions.md b/Document-Processing/PDF/PDF-Viewer/react/organize-pages/ui-interactions.md
deleted file mode 100644
index 011863771b..0000000000
--- a/Document-Processing/PDF/PDF-Viewer/react/organize-pages/ui-interactions.md
+++ /dev/null
@@ -1,97 +0,0 @@
----
-layout: post
-title: UI Interactions for Organizing Pages in React PDF Viewer | Syncfusion
-description: Learn about the UI interactions for organizing pages in the Syncfusion React PDF Viewer control, including rotating, rearranging, inserting, deleting, and copying pages.
-platform: document-processing
-control: PDF Viewer
-documentation: ug
-domainurl: ##DomainURL##
----
-
-# UI Interactions for Organizing Pages in React PDF Viewer
-
-The PDF Viewer provides an intuitive user interface for managing and organizing pages within a PDF document. This section covers the various UI interactions available in the `Organize Pages` dialog.
-
-
-
-## Rotating PDF pages
-
-You can adjust the orientation of pages to ensure proper alignment. The rotate icon in the Organize Pages dialog provides the following options:
-
-* **Rotate clockwise**: Rotate the selected pages 90 degrees clockwise.
-* **Rotate counter-clockwise**: Rotate the selected pages 90 degrees counter-clockwise.
-
-
-
-## Rearranging PDF pages
-
-Easily change the sequence of pages using the drag-and-drop method:
-
-* **Drag and drop**: Click and drag a page thumbnail to the desired position within the document, then release it to reorder the pages.
-
-
-
-## Inserting new pages
-
-Effortlessly add blank pages to your document with the following options:
-
-* **Insert blank page left**: Insert a blank page to the left of the selected page.
-* **Insert blank page right**: Insert a blank page to the right of the selected page.
-
-
-
-## Deleting PDF pages
-
-Remove unwanted pages from your document with these steps:
-
-1. **Select pages to delete**: Click on the thumbnails of the pages you wish to remove. You can select multiple pages at once.
-2. **Delete selected pages**: Use the delete option in the Organize Pages pane to remove the selected pages from the document.
-
-
-
-## Copying PDF pages
-
-Duplicate pages within your PDF document effortlessly:
-
-* **Select pages to copy**: Click on the page thumbnails you wish to duplicate.
-* **Copy selected pages**: Use the copy option to create duplicates. The copied pages will be added to the right of the selected pages.
-
-
-
-## Importing a PDF document
-
-Seamlessly import another PDF document into your current document:
-
-* **Import PDF document**: Click the **Import Document** button to select and import a PDF. The imported document will be inserted as a thumbnail. If a page is selected, the thumbnail will be added to its right. If no pages are selected, it will be added as the first page. The imported PDF will be merged with the current document upon saving.
-
-
-
-## Selecting all pages
-
-Select all pages simultaneously to perform bulk operations, such as rotating or deleting all pages at once.
-
-
-
-## Zooming page thumbnails
-
-Adjust the size of page thumbnails for better visibility and precision:
-
-* Use the zoom slider to increase or decrease the thumbnail size.
-* Zoom in to see more detail on each page.
-* Zoom out to view more pages at once.
-
-
-
-## Real-time updates and saving
-
-All changes are reflected instantly in the Organize Pages dialog. Click the **Save** button to apply the modifications to the document. Use the **Save As** feature to download a new version of the PDF with your changes.
-
-## Keyboard shortcuts
-
-The following keyboard shortcuts are available in the Organize Pages dialog:
-
-* **Ctrl+Z**: Undo the last action.
-* **Ctrl+Y**: Redo the last undone action.
-* **Ctrl+Scroll**: Zoom in and out on page thumbnails for better visibility.
-
-
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/organize-pages/zoom-pages.md b/Document-Processing/PDF/PDF-Viewer/react/organize-pages/zoom-pages.md
new file mode 100644
index 0000000000..829dae0a25
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/organize-pages/zoom-pages.md
@@ -0,0 +1,60 @@
+---
+layout: post
+title: Zoom pages in Organize Pages in React PDF Viewer | Syncfusion
+description: How to adjust thumbnail zoom levels inside the Organize Pages UI of the Syncfusion React PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Zoom pages using the Organize Pages tool
+
+## Overview
+
+This guide explains how to change the thumbnail zoom level in the **Organize Pages** UI so you can view more detail or an overview of more pages.
+
+**Outcome**: Page thumbnails resize interactively to suit your task.
+
+## Prerequisites
+
+- EJ2 React PDF Viewer installed
+- `Toolbar` and `PageOrganizer` services injected in PDF Viewer
+- [`pageOrganizerSettings.showImageZoomingSlider`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/pageorganizersettingsmodel#showimagezoomingslider) is set to `true`
+
+## Steps
+
+1. Open the Organize Pages view
+
+ - Click the **Organize Pages** button in the viewer toolbar to open the thumbnails panel.
+
+2. Locate the zoom control
+
+ - Find the thumbnail zoom slider in the Organize Pages toolbar.
+
+3. Adjust zoom
+
+ - Drag the slider to increase or decrease thumbnail size.
+
+ 
+
+4. Choose an optimal zoom level
+
+ - Select a zoom level that balances page detail and the number of visible thumbnails for your task.
+
+## Expected result
+
+- Thumbnails resize interactively; larger thumbnails show more detail while smaller thumbnails allow viewing more pages at once.
+
+## Show or hide Zoom Pages button
+
+To enable or disable the **Zoom Pages** button in the Organize Pages toolbar, update the [`pageOrganizerSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/pageorganizersettings). See [Organize pages toolbar customization](./toolbar#show-or-hide-the-zoom-pages-option) for the guidelines
+
+## Troubleshooting
+
+- **Zoom control not visible**: Confirm [`pageOrganizerSettings.showImageZoomingSlider`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/pageorganizersettingsmodel#showimagezoomingslider) is set to `true`.
+
+## Related topics
+
+- [Organize pages toolbar customization](./toolbar)
+- [Organize pages event reference](./events)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/organize-pdf.md b/Document-Processing/PDF/PDF-Viewer/react/organize-pdf.md
deleted file mode 100644
index f7f43882dc..0000000000
--- a/Document-Processing/PDF/PDF-Viewer/react/organize-pdf.md
+++ /dev/null
@@ -1,346 +0,0 @@
----
-layout: post
-title: Organize Pages in React PDF Viewer component | Syncfusion
-description: Learn here all about Organize Pages in Syncfusion React PDF Viewer component of Syncfusion Essential JS 2 and more.
-control: PDF Viewer
-platform: document-processing
-documentation: ug
-domainurl: ##DomainURL##
----
-
-# Organize Pages in React PDF Viewer component
-
-The PDF Viewer allows you to manage your PDF documents efficiently by organizing pages seamlessly. Whether you need to add new pages, remove unnecessary ones, rotate pages, move pages within the document, and copy or duplicate pages, the PDF Viewer facilitates these tasks effortlessly.
-
-## Getting started
-
-To access the organize pages feature, simply open the PDF document in the PDF Viewer and navigate to the left vertical toolbar. Look for the `Organize Pages` option to begin utilizing these capabilities.
-
-
-
-The page organization support enables you to perform various actions such as rotating, rearranging, inserting, copying, and deleting pages within a PDF document using organize pages dialog.
-
-### Rotating PDF pages
-
-You can adjust the orientation of PDF pages to ensure proper alignment. The rotate icon offers the following options:
-
-* `Rotate clockwise`: Rotate the selected pages 90 degrees clockwise.
-* `Rotate counter-clockwise`: Rotate the selected pages 90 degrees counter-clockwise.
-
-### Rearranging PDF pages
-
-You can easily change the sequence of pages within your document using the drag and drop method:
-
-* `Drag and drop`: Click and drag a page thumbnail to the desired position within the document, then release it to rearrange the page order.
-
-
-
-### Inserting new pages
-
-Effortlessly add new pages to your document with the following options:
-
-* `Insert blank page left`: Insert a blank page to the left of the selected page using the respective icon.
-* `Insert blank page right`: Insert a blank page to the right of the selected page using the corresponding icon.
-
-### Deleting PDF pages
-
-Removing unwanted pages from your document is straight forward:
-
-* `Select pages to delete`: Click on the page thumbnails you wish to remove. You can select multiple pages at once.
-* `Delete selected pages`: Use the delete option in the organize pages pane to remove the selected pages from the document.
-
-### Copying PDF pages
-
-Duplicate the pages within your PDF document effortlessly:
-
-* `Select pages to copy`: Click on the page thumbnails you wish to duplicate. Use the copy option to create duplicates. When a page is copied, the duplicate is automatically added to the right of the selected page. Multiple copies can be made using the toolbar action.
-
-
-
-### Importing a PDF Document
-
-Seamlessly import a PDF document into your existing document:
-
-* `Import PDF document`: Click the **Import Document** button to import a PDF. If a page is selected, the imported document’s thumbnail will be inserted to the right of the selected page. If multiple or no pages are selected, the thumbnail will be added as the first page. When **Save** or **Save As** is clicked, the imported PDF will be merged with the current document. You can insert a blank page to the left or right of the imported thumbnail, delete it, or drag and drop it to reposition as needed.
-
-
-
-### Selecting all pages
-
-Make comprehensive adjustments by selecting all pages simultaneously. This facilitates efficient editing and formatting across the entire document.
-
-
-
-### Zooming Page Thumbnails
-
-Adjust the size of page thumbnails within the organizer panel for better visibility and precision when editing. The zoom functionality allows you to:
-
-* Increase or decrease the size of page thumbnails using the zoom slider
-* See more details on pages when zoomed in
-* View more pages simultaneously when zoomed out
-
-This feature is especially useful when working with documents containing complex layouts or small details that need careful examination during organization.
-
-
-
-### Real-time updates
-
-Witness instant changes in page organization reflected within the PDF Viewer. Simply click the **Save** button to preserve your modifications.
-
-### SaveAs functionality
-
-Safeguard your edits by utilizing the **Save As** feature. This enables you to download the modified version of the PDF document for future reference, ensuring that your changes are securely stored.
-
-## API's supported
-
-**enablePageOrganizer:** This API enables or disables the page organizer feature in the PDF Viewer. By default, it is set to `true`, indicating that the page organizer is enabled.
-
-{% tabs %}
-{% highlight js tabtitle="Standalone" %}
-{% raw %}
-
-import * as ReactDOM from 'react-dom';
-import * as React from 'react';
-import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation,
- BookmarkView, ThumbnailView, Print, TextSelection, TextSearch, Annotation,
- FormFields, FormDesigner, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
-let pdfviewer;
-
-function App() {
- return (
);
-}
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
-
-{% endraw %}
-{% endhighlight %}
-{% endtabs %}
-
-**isPageOrganizerOpen:** This API determines whether the page organizer dialog will be displayed automatically when a document is loaded into the PDF Viewer. By default, it is set to `false`, meaning the dialog is not displayed initially.
-
-{% tabs %}
-{% highlight js tabtitle="Standalone" %}
-{% raw %}
-
-import * as ReactDOM from 'react-dom';
-import * as React from 'react';
-import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation,
- BookmarkView, ThumbnailView, Print, TextSelection, TextSearch, Annotation,
- FormFields, FormDesigner, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
-let pdfviewer;
-
-function App() {
- return (
);
-}
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
-
-{% endraw %}
-{% endhighlight %}
-{% endtabs %}
-
-**pageOrganizerSettings:** This API allows control over various page management functionalities within the PDF Viewer. It includes options to enable or disable actions such as deleting, inserting, rotating, copying, importing and rearranging pages, as well as configuring thumbnail zoom settings. By default, all these actions are enabled and standard zoom settings are applied.
-
-{% tabs %}
-{% highlight js tabtitle="Standalone" %}
-{% raw %}
-
-import * as ReactDOM from 'react-dom';
-import * as React from 'react';
-import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation,
- BookmarkView, ThumbnailView, Print, TextSelection, TextSearch, Annotation,
- FormFields, FormDesigner, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
-let pdfviewer;
-
-function App() {
- return (
);
-}
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
-
-{% endraw %}
-{% endhighlight %}
-{% endtabs %}
-
-**openPageOrganizer:** This API opens the page organizer dialog within the PDF Viewer, providing access to manage PDF pages.
-
-```
-
-```
-
-```ts
-
-```
-
-**closePageOrganizer:** This API closes the currently open page organizer dialog within the PDF Viewer, if it is present. It allows users to dismiss the dialog when done with page organization tasks.
-
-```
-
-```
-
-```ts
-
-```
-
-## Keyboard shortcuts
-
-The following keyboard shortcuts are available at the organize pages dialog.
-
-* **Ctrl+Z** : Undo the last action performed.
-* **Ctrl+Y** : Redo the action that was undone
-* **Ctrl+Scroll** : Zoom in and zoom out page thumbnails for better visibility.
-
-
-
-#### Conclusion
-
-With the Organize Pages feature in the PDF Viewer, managing your PDF documents has never been easier. Whether you are adding new content, adjusting page orientation, moving the pages, duplicating the pages, or removing unnecessary pages, this feature provides the tools you need to streamline your document management workflow. Explore these capabilities today and take control of your PDF documents with ease!
-
-[View sample in GitHub](https://github.com/SyncfusionExamples/react-pdf-viewer-examples/tree/master/How%20to/Organize%20pdf)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/overview.md b/Document-Processing/PDF/PDF-Viewer/react/overview.md
index c016c0401f..2417a54bd5 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/overview.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/overview.md
@@ -6,9 +6,9 @@ control: PDF Viewer
documentation: UG
---
-# Overview of React PDF Viewer Component
+# Overview of React PDF Viewer component
-The [`React PDF Viewer`](https://www.syncfusion.com/pdf-viewer-sdk) component is a lightweight and modular component for viewing and printing PDF files. It provides the best viewing experience available with core interactions such as zooming, scrolling, text searching, text selection, and text copying. The thumbnail, bookmark, hyperlink and table of contents support provides easy navigation within and outside the PDF files.
+The [`React PDF Viewer`](https://www.syncfusion.com/pdf-viewer-sdk) component is a lightweight, modular control for viewing and printing PDF files. It supports core interactions such as zooming, scrolling, text searching, text selection, and text copying. Thumbnails, bookmarks, hyperlinks, and table-of-contents support enable easy navigation inside and outside PDF files.
## Setup
@@ -78,24 +78,24 @@ root.render();
## Key Features
-*[`View PDF Document`](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started) - Open and display both the normal and the protected PDF files with AES and RC4 encryption.
-*[`Annotations`](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/annotation/text-markup-annotation) - Annotate with text markup, shapes, stamps, ink, and sticky notes.Form filling and form designing can be done.
-*[`Form Fields`](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/form-designer/create-fillable-pdf-forms/create-programmatically) - Form filling and form designing can be done.
-*[`Signature`](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/annotation/signature-annotation) - Hand-written and digital signatures are allowed.
-*[`Toolbar`](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/toolbar) - Built-in-toolbar and custom toolbars to perform user interaction of PDF Viewer functionalities.
-*[`Navigation`](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/interactive-pdf-navigation/page-navigation) - Easy navigation with the help of bookmarks, thumbnails, hyperlinks, and table of contents.
-*[`Magnification`](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/magnification) - Fit to page, fit to width, and automatic (fits to the visible area).
-*[`Search`](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/text-search) - Search a text easily across the PDF document.
-*[`Core Interactions`](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/interaction-mode) - Allows scrolling, zooming, panning, selection, and page navigation.
-*[`Print`](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/print) - Print the entire document or a specific page directly from the browser.
-*[`Globalization`](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/globalization) - Provides inherent support to localize the UI.
-
-## Supported Web platforms
-
-* [Javascript(ES5)](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/javascript-es5/getting-started)
-* [Javascript](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/javascript-es6/getting-started)
-* [Angular](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/angular/getting-started)
-* [Vue](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/vue/getting-started)
-* [ASP.NET Core](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/asp-net-core/getting-started)
-* [ASP.NET MVC](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/asp-net-mvc/getting-started)
-* [Blazor](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/blazor/overview)
\ No newline at end of file
+[View PDF Document](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started) - Open and display both the normal and the protected PDF files with AES and RC4 encryption.
+[Annotations](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/annotation/text-markup-annotation) - Annotate with text markup, shapes, stamps, ink, and sticky notes.Form filling and form designing can be done.
+[Form Fields](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/forms/manage-form-fields/create-form-fields) - Form filling and form designing can be done.
+[Signature](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/annotation/signature-annotation) - Hand-written and digital signatures are allowed.
+[Toolbar](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/toolbar) - Built-in-toolbar and custom toolbars to perform user interaction of PDF Viewer functionalities.
+[Navigation](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/interactive-pdf-navigation/page) - Easy navigation with the help of bookmarks, thumbnails, hyperlinks, and table of contents.
+[Magnification](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/magnification) - Fit to page, fit to width, and automatic (fits to the visible area).
+[Search](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/text-search) - Search a text easily across the PDF document.
+[Core Interactions](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/interaction-mode) - Allows scrolling, zooming, panning, selection, and page navigation.
+[Print](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/print) - Print the entire document or a specific page directly from the browser.
+[Globalization](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/globalization) - Provides inherent support to localize the UI.
+
+## Supported web platforms
+
+- [JavaScript (ES5)](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/javascript-es5/getting-started)
+- [JavaScript (ES6)](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/javascript-es6/getting-started)
+- [Angular](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/angular/getting-started)
+- [Vue](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/vue/getting-started)
+- [ASP.NET Core](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/asp-net-core/getting-started)
+- [ASP.NET MVC](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/asp-net-mvc/getting-started)
+- [Blazor](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/blazor/overview)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/preact.md b/Document-Processing/PDF/PDF-Viewer/react/preact.md
deleted file mode 100644
index 133a20f79e..0000000000
--- a/Document-Processing/PDF/PDF-Viewer/react/preact.md
+++ /dev/null
@@ -1,195 +0,0 @@
----
-layout: post
-title: Getting Started with Preact Framework | Syncfusion
-description: Check out and learn about getting started with the Preact Framework and React PDF Viewer Component of Syncfusion Essential JS 2 and more details.
-control: PDF Viewer
-platform: document-processing
-documentation: ug
-domainurl: ##DomainURL##
----
-
-# Getting Started with the React PDF Viewer Component in the Preact Framework
-
-This article provides a step-by-step guide for setting up a [Preact](https://preactjs.com/) project and integrating the Syncfusion® React PDF Viewer component.
-
-`Preact` is a fast and lightweight JavaScript library for building user interfaces. It's often used as an alternative to larger frameworks like React. The key difference is that Preact is designed to be smaller in size and faster in performance, making it a good choice for projects where file size and load times are critical factors.
-
-## Prerequisites
-
-[System requirements for Syncfusion® React UI components](../system-requirement)
-
-## Set up the Preact project
-
-To create a new `Preact` project, use one of the commands that are specific to either NPM or Yarn.
-
-```bash
-npm init preact
-```
-
-or
-
-```bash
-yarn init preact
-```
-
-Using one of the above commands will lead you to set up additional configurations for the project, as below:
-
-1\. Define the project name: We can specify the name of the project directly. Let's specify the name of the project as `my-project` for this article.
-
-```bash
-T Preact - Fast 3kB alternative to React with the same modern API
-|
-* Project directory:
-| my-project
-—
-```
-
-2\. Choose `JavaScript` as the framework variant to build this Preact project using JavaScript and React.
-
-```bash
-T Preact - Fast 3kB alternative to React with the same modern API
-|
-* Project language:
-| > JavaScript
-| TypeScript
-—
-```
-
-3\. Then configure the project as below for this article.
-
-```bash
-T Preact - Fast 3kB alternative to React with the same modern API
-|
-* Use router?
-| Yes / > No
-—
-|
-* Prerender app (SSG)?
-| Yes / > No
-—
-|
-* Use ESLint?
-| Yes / > No
-—
-```
-
-5\. Upon completing the aforementioned steps to create `my-project`, run the following command to jump into the project directory:
-
-```bash
-cd my-project
-```
-
-Now that `my-project` is ready to run with default settings, let's add Syncfusion® components to the project.
-
-## Add the Syncfusion® React packages
-
-Syncfusion® React component packages are available at [npmjs.com](https://www.npmjs.com/search?q=ej2-react). To use Syncfusion® React components in the project, install the corresponding npm package.
-
-This article uses the [React PDF Viewer component](https://www.syncfusion.com/pdf-viewer-sdk) as an example. To use the React PDF Viewer component in the project, the `@syncfusion/ej2-react-pdfviewer` package needs to be installed using the following command:
-
-```bash
-npm install @syncfusion/ej2-react-pdfviewer --save
-```
-
-or
-
-```bash
-yarn add @syncfusion/ej2-react-pdfviewer
-```
-
-## Import Syncfusion® CSS styles
-
-You can import themes for the Syncfusion® React component in various ways, such as using CSS or SASS styles from npm packages, CDN, CRG and [Theme Studio](https://ej2.syncfusion.com/react/documentation/appearance/theme-studio). Refer to [themes topic](https://ej2.syncfusion.com/react/documentation/appearance/theme) to know more about built-in themes and different ways to refer to theme's in a React project.
-
-In this article, the `Material 3` theme is applied using CSS styles, which are available in installed packages. The necessary `Material 3` CSS styles for the PDF Viewer component and its dependents were imported into the **src/style.css** file.
-
-{% tabs %}
-{% highlight css tabtitle="~/src/style.css" %}
-
-@import '../node_modules/@syncfusion/ej2-base/styles/material3.css';
-@import '../node_modules/@syncfusion/ej2-buttons/styles/material3.css';
-@import '../node_modules/@syncfusion/ej2-dropdowns/styles/material3.css';
-@import '../node_modules/@syncfusion/ej2-inputs/styles/material3.css';
-@import '../node_modules/@syncfusion/ej2-navigations/styles/material3.css';
-@import '../node_modules/@syncfusion/ej2-popups/styles/material3.css';
-@import '../node_modules/@syncfusion/ej2-splitbuttons/styles/material3.css';
-@import "../node_modules/@syncfusion/ej2-react-pdfviewer/styles/material3.css";
-
-{% endhighlight %}
-{% endtabs %}
-
-> The order of importing CSS styles should be in line with its dependency graph.
-
-## Add the Syncfusion® React component
-
-Follow the below steps to add the React PDF Viewer component to the Vite project:
-
-1\. Before adding the PDF Viewer component to your markup, import the PDF Viewer component in the **src/index.jsx** file.
-
-{% tabs %}
-{% highlight js tabtitle="~/src/index.jsx" %}
-
-import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView,
- ThumbnailView, Print, TextSelection, Annotation, TextSearch, FormFields, FormDesigner, Inject} from '@syncfusion/ej2-react-pdfviewer';
-
-{% endhighlight %}
-{% endtabs %}
-
-2\. Then, define the PDF Viewer component in the **src/index.jsx** file, as shown below:
-
-{% tabs %}
-{% highlight js tabtitle="~/src/index.jsx" %}
-{% raw %}
-
-import { render } from 'preact';
-import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView,
- ThumbnailView, Print, TextSelection, Annotation, TextSearch, FormFields, FormDesigner, Inject} from '@syncfusion/ej2-react-pdfviewer';
-import './style.css';
-
-export function App() {
-
- return (
-
-
- {/* Render the PDF Viewer */}
-
-
-
-
-
-
- );
-}
-
-render(, document.getElementById('app'));
-
-{% endraw %}
-{% endhighlight %}
-{% endtabs %}
-
-## Run the project
-
-To run the project, use the following command:
-
-```bash
-npm run dev
-```
-
-or
-
-```bash
-yarn run dev
-```
-
-The output will appear as follows:
-
-
-
-## See also
-
-[Getting Started with the Syncfusion® React UI Component](../getting-started/quick-start)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/print.md b/Document-Processing/PDF/PDF-Viewer/react/print.md
deleted file mode 100644
index e01e7c4487..0000000000
--- a/Document-Processing/PDF/PDF-Viewer/react/print.md
+++ /dev/null
@@ -1,517 +0,0 @@
----
-layout: post
-title: Print in React Pdfviewer component | Syncfusion
-description: Learn here all about Print in Syncfusion React Pdfviewer component of Syncfusion Essential JS 2 and more.
-control: PDF Viewer
-platform: document-processing
-documentation: ug
-domainurl: ##DomainURL##
----
-# Print in React Pdfviewer component
-
-The PDF Viewer supports printing the loaded PDF file. You can enable/disable the print using the following code snippet.
-
-{% tabs %}
-{% highlight js tabtitle="Standalone" %}
-{% 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, TextSearch, Annotation, Inject } from '@syncfusion/ej2-react-pdfviewer';
-
-function App() {
- return (
);
-}
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
-
-{% endraw %}
-{% endhighlight %}
-{% endtabs %}
-
-
-
-You can invoke print action using the following code snippet.,
-
-{% tabs %}
-{% highlight js tabtitle="Standalone" %}
-{% 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, TextSearch, Inject } from '@syncfusion/ej2-react-pdfviewer';
-
-function App() {
- function printClicked() {
- var viewer = document.getElementById('container').ej2_instances[0];
- viewer.print.print()
- }
- return (
-
- {/* Render the PDF Viewer */}
-
-
-
-
-
-
-
);
-}
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
-
-{% endraw %}
-{% endhighlight %}
-{% highlight js tabtitle="Server-Backed" %}
-{% 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, TextSearch, Inject } from '@syncfusion/ej2-react-pdfviewer';
-
-function App() {
- function printClicked() {
- var viewer = document.getElementById('container').ej2_instances[0];
- viewer.print.print()
- }
- return (
-
- {/* Render the PDF Viewer */}
-
-
-
-
-
-
-
);
-}
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
-
-{% endraw %}
-{% endhighlight %}
-{% endtabs %}
-
-## Customizing Print Quality using printScaleFactor API
-
-The PDF Viewer allows you to adjust the print quality using the [PrintScaleFactor](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#printScaleFactor) API. The quality of the print improves as the printScaleFactor value increases from 0.5 to 5.
-
-When the value is less than 0.5, the PDF is printed at a standard quality. When the value exceeds 5, the PDF is still printed at the standard quality. In standard quality, printScaleFactor value is set to 1 as default value.
-The effective range for printScaleFactor is between 0.5 and 5. Higher values within this range will result in better print quality, but also increase the print time.
-
-By default, the printScaleFactor is set to 1.
-
-* **The following code snippet demonstrates how to customize print quality using the printScaleFactor API in the PDF Viewer.**
-{% tabs %}
-{% highlight js tabtitle="Standalone" %}
-{% 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, TextSearch, Annotation, Inject } from '@syncfusion/ej2-react-pdfviewer';
-
-function App() {
- return (
);
-}
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
-
-{% endraw %}
-{% endhighlight %}
-{% endtabs %}
-
-## EnablePrintRotation in the PDF Viewer
-
-The `EnablePrintRotation` property controls whether landscape pages are auto-rotated to best fit when printing. The default value is `true`. Set to `false` to preserve the original page orientation and suppress automatic rotation during print.
-
-{% tabs %}
-{% highlight js tabtitle="Standalone" %}
-
-import * as ReactDOM from 'react-dom';
-import * as React from 'react';
-import './index.css';
-import { PdfViewerComponent, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Inject } from '@syncfusion/ej2-react-pdfviewer';
-
-function App() {
- return (
);
-}
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
-
-{% endhighlight %}
-{% endtabs %}
-
-## Print modes in the PDF Viewer
-
-The `printMode` property allows you to specify how the document is printed.
-
-The supported values are:
-* `Default`: Prints the document from the same window.
-* `NewWindow`: Prints the document from a new window/tab, which can be useful depending on browser popup policies.
-
-{% tabs %}
-{% highlight js tabtitle="Standalone" %}
-
-import * as ReactDOM from 'react-dom';
-import * as React from 'react';
-import './index.css';
-import { PdfViewerComponent, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, PrintMode, Inject } from '@syncfusion/ej2-react-pdfviewer';
-
-function App() {
- return (
);
-}
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
-
-{% endhighlight %}
-{% endtabs %}
-
-[View sample in GitHub](https://github.com/SyncfusionExamples/react-pdf-viewer-examples/tree/master/How%20to/Customization%20of%20print%20Quality)
-
-## Print Events
-
-The following events are available in the PDF Viewer component.
-
-| Name | Description |
-|--------------|----------------------------------------|
-| `printStart` | Triggers when a print action starts. |
-| `printEnd` | Triggers when a print action is completed. |
-
-### printStart Event
-The [`printStart`](https://ej2.syncfusion.com/documentation/api/pdfviewer/#printstart) event triggers when the print action is started.
-
-#### Event Arguments
-See [`PrintStartEventArgs`](https://ej2.syncfusion.com/documentation/api/pdfviewer/printStartEventArgs/) for details such as `fileName` and the `cancel` option.
-
-The following example illustrates how to handle the `printStart` event.
-
-{% tabs %}
-{% highlight js tabtitle="Standalone" %}
-
-import * as ReactDOM from 'react-dom';
-import * as React from 'react';
-import './index.css';
-import { PdfViewerComponent, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Inject } from '@syncfusion/ej2-react-pdfviewer';
-
-function App() {
- return (
-
- {/* Render the PDF Viewer */}
- {
- console.log('Print action has started for file: ' + args.fileName);
- // To cancel the print action
- // args.cancel = true;
- }}
- style={{ height: '640px' }}>
-
-
-
-
);
-}
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
-
-{% endhighlight %}
-{% endtabs %}
-
-## See also
-
-* [Toolbar items](./toolbar)
-* [Feature Modules](./feature-module)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/print/enable-print-rotation.md b/Document-Processing/PDF/PDF-Viewer/react/print/enable-print-rotation.md
new file mode 100644
index 0000000000..d004f2e21d
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/print/enable-print-rotation.md
@@ -0,0 +1,72 @@
+---
+layout: post
+title: Enable Print Rotation in React PDF Viewer | Syncfusion
+description: Learn how to enable print rotation for landscape documents in the Syncfusion React PDF Viewer component.
+platform: document-processing
+control: Print
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Enable print rotation in React PDF Viewer
+
+This guide shows how to enable automatic rotation of landscape pages during printing so they match the paper orientation and reduce clipping. Use [`enablePrintRotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#enableprintrotation) when printing documents that include landscape pages and you want them rotated to match the printer paper orientation.
+
+## Prerequisites
+
+- The [`Print`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/print) module must be injected into [`PdfViewerComponent`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer).
+
+## Steps to enable print rotation
+
+1. Inject the required modules (including [`Print`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/print)) into [`PdfViewerComponent`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer).
+2. Set [`enablePrintRotation={true}`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#enableprintrotation) in the PDF Viewer during initialization.
+
+## Example
+
+{% tabs %}
+{% highlight ts tabtitle="App.tsx" %}
+{% raw %}
+import {
+ PdfViewerComponent, Toolbar, Magnification, Navigation, Annotation, FormDesigner,
+ FormFields, TextSelection, TextSearch, Print, Inject
+} from '@syncfusion/ej2-react-pdfviewer';
+
+export default function App() {
+ return (
+
+
+
+
+
+ );
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+
+
+[View sample on GitHub](https://github.com/SyncfusionExamples/react-pdf-viewer-examples)
+
+## Troubleshooting
+
+- If you need to preserve original page orientation for archival printing, set [`enablePrintRotation: false`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#enableprintrotation).
+- Confirm that injected modules include [`Print`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/print) or the property will have no effect.
+
+## See also
+
+- [Overview](./overview)
+- [Print quality](./print-quality)
+- [Print modes](./print-modes)
+- [Print events](./events)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/print/events.md b/Document-Processing/PDF/PDF-Viewer/react/print/events.md
new file mode 100644
index 0000000000..e687e6d709
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/print/events.md
@@ -0,0 +1,92 @@
+---
+layout: post
+title: Print Events in React PDF Viewer | Syncfusion
+description: Learn how to configure print events and track usage and implements workflows in the Syncfusion React PDF Viewer component.
+platform: document-processing
+control: Print
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Print events in React PDF Viewer
+
+This page lists each event emitted by the React PDF Viewer's [`Print`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/print) feature, the argument schema, and the minimal behavior notes needed for implementation.
+
+## Events
+
+| Name | Description |
+|--------------|-------------|
+| [`printStart`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#printstart) | Raised when a print action begins. Use the event to log activity or cancel printing. |
+| [`printEnd`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#printend) | Raised after a print action completes. Use the event to notify users or clean up resources. |
+
+### `printStart`
+
+This event is emitted when printing is initiated by toolbar or through programmatic API. Use to validate prerequisites, record analytics, or cancel printing.
+
+**Arguments** - ([`PrintStartEventArgs`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/printstarteventargs)):
+
+- `fileName` - The document file name being printed.
+- `cancel` - Default: `false`. Set to `true` to cancel the print operation.
+
+Setting `args.cancel = true` prevents the client-side print flow; for server-backed printing it prevents the service request that produces print output. Find the code example [here](../security/restricting-download-and-print#3-block-print-with-the-printstart-event)
+
+**Minimal usage example:**
+
+{% highlight ts %}
+{% raw %}
+ {
+ console.log('Print action has started for file: ' + args.fileName);
+ }}
+ style={{ height: '100%' }}
+>
+
+
+{% endraw %}
+{% endhighlight %}
+
+### `printEnd`
+
+This event is emitted after the printing completes. Use to finalize analytics, clear temporary state, or notify users.
+
+Arguments - ([`PrintEndEventArgs`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/printendeventargs)):
+
+- `fileName` - The printed document name.
+
+**Minimal usage example:**
+
+{% highlight ts %}
+{% raw %}
+ {
+ console.log('Printed file name: ' + args.fileName);
+ }}
+ style={{ height: '100%' }}
+>
+
+
+{% endraw %}
+{% endhighlight %}
+
+## See also
+
+- [Overview](./overview)
+- [Print quality](./print-quality)
+- [Enable print rotation](./enable-print-rotation)
+- [Print modes](./print-modes)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/print/overview.md b/Document-Processing/PDF/PDF-Viewer/react/print/overview.md
new file mode 100644
index 0000000000..d46fdba0f4
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/print/overview.md
@@ -0,0 +1,120 @@
+---
+layout: post
+title: Print PDF in React PDF Viewer | Syncfusion
+description: Enable and customize printing, configure print events, cancel print, and monitor printing in the Syncfusion React PDF Viewer component.
+platform: document-processing
+control: Print
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Print PDF in React PDF Viewer
+
+The React PDF Viewer includes built-in printing via the toolbar and APIs so users can control how documents are printed and monitor the process.
+
+Select **Print** in the built-in toolbar to open the browser print dialog.
+
+
+
+## Enable or Disable Print in React PDF Viewer
+
+The Syncfusion React PDF Viewer component lets users print a loaded PDF document through the built-in toolbar or programmatic calls. Control whether printing is available by setting the [`enablePrint`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#enableprint) property (`true` enables printing; `false` disables it).
+
+The following React examples render the PDF Viewer with printing disabled.
+
+{% tabs %}
+{% highlight ts tabtitle="App.tsx" %}
+{% raw %}
+import {
+ PdfViewerComponent, Toolbar, Magnification, Navigation, Annotation, FormDesigner,
+ FormFields, TextSelection, TextSearch, Print, Inject
+} from '@syncfusion/ej2-react-pdfviewer';
+
+export default function App() {
+ return (
+
+
+
+
+
+ );
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Print programmatically in React PDF Viewer
+
+To start printing from code, call the [`pdfviewer.print.print()`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/print#print-1) method after the document is fully loaded. This approach is useful when wiring up custom UI or initiating printing automatically; calling print before the document finishes loading can result in no output or an empty print dialog.
+
+{% tabs %}
+{% highlight ts tabtitle="App.tsx" %}
+{% raw %}
+import { RefObject, useRef } from 'react';
+import {
+ PdfViewerComponent, Toolbar, Magnification, Navigation, Annotation, FormDesigner,
+ FormFields, TextSelection, TextSearch, Print, Inject
+} from '@syncfusion/ej2-react-pdfviewer';
+
+export default function App() {
+ const viewerRef: RefObject = useRef(null);
+ const printPdf = () => {
+ viewerRef.current.print.print();
+ }
+ return (
+
+
+
+
+
+
+ );
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Key capabilities
+
+- Enable or disable printing with the [`enablePrint`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#enableprint) property
+- Start printing from UI (toolbar Print) or programmatically using `print.print()`(https://ej2.syncfusion.com/react/documentation/api/pdfviewer/print#print-1).
+- Control output quality with the [`printScaleFactor`](./print-quality) property (0.5–5)
+- Auto‑rotate pages during print using [`enablePrintRotation`](./enable-print-rotation)
+- Choose where printing happens with [`printMode`](./print-modes) (Default or NewWindow)
+- Track the life cycle with [`printStart` and `printEnd` events](./events)
+
+## Troubleshooting
+
+- Ensure the [`resourceUrl`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#resourceurl) value matches the deployed `ej2-pdfviewer-lib` version.
+- Calling [`print()`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/print#print-1) launches the browser print dialog; behavior varies by browser and may be affected by popup blockers or browser settings.
+
+[View Sample in GitHub](https://github.com/SyncfusionExamples/react-pdf-viewer-examples)
+
+## See Also
+
+- [Print quality](./print-quality)
+- [Enable print rotation](./enable-print-rotation)
+- [Print modes](./print-modes)
+- [Print events](./events)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/print/print-modes.md b/Document-Processing/PDF/PDF-Viewer/react/print/print-modes.md
new file mode 100644
index 0000000000..35865f5c81
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/print/print-modes.md
@@ -0,0 +1,82 @@
+---
+layout: post
+title: Print Modes in React PDF Viewer | Syncfusion
+description: Learn how to configure print modes for PDF Documents in the Syncfusion React PDF Viewer component and more.
+platform: document-processing
+control: Print
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Print Modes in the React PDF Viewer
+
+This guide shows how to set the PDF Viewer [`printMode`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#printmode) so PDFs print from the current window or from a new window/tab.
+
+## Prerequisites
+
+- A React app with the Syncfusion PDF Viewer and [`Print`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/print) module injected.
+
+## Steps to set print mode
+
+**Step 1:** Decide which [`printMode`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#printmode) you need:
+ - `Default` — print from the same browser window.
+ - `NewWindow` — print from a new window or tab (may be blocked by pop-up blockers).
+
+**Step 2:** Set [`printMode`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#printmode) during viewer initialization (recommended):
+
+{% tabs %}
+{% highlight ts tabtitle="App.tsx" %}
+{% raw %}
+import {
+ PdfViewerComponent, Toolbar, Magnification, Navigation, Annotation, FormDesigner, FormFields,
+ PageOrganizer, TextSelection, TextSearch, Print, Inject
+} from '@syncfusion/ej2-react-pdfviewer';
+
+export default function App() {
+ return (
+
+
+
+
+
+ );
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+
+
+**Step 3:** Print mode can also be changed at runtime after the viewer is created:
+
+```ts
+// switch to NewWindow at runtime
+pdfviewer.printMode = 'NewWindow';
+```
+
+## Quick reference
+
+- `Default`: Print from the same window (default).
+- `NewWindow`: Print from a new window or tab.
+
+N> Browser pop-up blockers must allow new windows or tabs when using `pdfviewer.printMode = "NewWindow"`.
+
+[View live examples and samples on GitHub](https://github.com/SyncfusionExamples/react-pdf-viewer-examples)
+
+## See also
+
+- [Overview](./overview)
+- [Print quality](./print-quality)
+- [Enable print rotation](./enable-print-rotation)
+- [Print events](./events)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/print/print-quality.md b/Document-Processing/PDF/PDF-Viewer/react/print/print-quality.md
new file mode 100644
index 0000000000..8746d2ab0e
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/print/print-quality.md
@@ -0,0 +1,85 @@
+---
+layout: post
+title: Customize Print Quality in React PDF Viewer | Syncfusion
+description: Learn how to customize print quality for PDF Documents in the Syncfusion React PDF Viewer component.
+platform: document-processing
+control: Print
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Customize Print Quality in React PDF Viewer
+
+This article shows a concise, task-oriented workflow to set and verify print quality for documents rendered by the React PDF Viewer by using the [`printScaleFactor`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#printscalefactor) property.
+
+**Goal:** Set a suitable [`printScaleFactor`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#printscalefactor) to improve printed output sharpness while balancing performance and memory use.
+
+## Steps
+
+### 1. Choose a target print quality.
+
+- Valid [`printScaleFactor`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#printscalefactor) values: **0.5 – 5**. Higher values increase image sharpness and resource use.
+- Default value: **1**.
+
+### 2. Set `printScaleFactor` during initialization
+
+It is recommended that you set the [`printScaleFactor`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#printscalefactor) in the viewer options during initialization.
+
+{% tabs %}
+{% highlight ts tabtitle="App.tsx" %}
+{% raw %}
+import {
+ PdfViewerComponent, Toolbar, Magnification, Navigation, Annotation, FormDesigner,
+ FormFields, TextSelection, TextSearch, Print, Inject
+} from '@syncfusion/ej2-react-pdfviewer';
+
+export default function App() {
+ return (
+
+
+
+
+
+ );
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+### 3. Set `printScaleFactor` after instantiation
+
+As an alternative option, the [`printScaleFactor`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#printscalefactor) can be dynamically changed during runtime
+
+{% highlight ts %}
+// Update printScaleFactor at runtime
+pdfviewer.printScaleFactor = 2; // increase print resolution for upcoming prints
+{% endhighlight %}
+
+### 4. Verify output
+
+Use browser Print Preview or produce a printed/PDF copy to confirm sharpness and acceptable render time.
+
+## Notes
+
+- Values outside the supported range **0.5 – 5** will be ignored and fall back to the default (`1`).
+- Increasing [`printScaleFactor`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#printscalefactor) raises CPU, memory, and rendering time requirements. Test on target machines and documents before setting a higher factor.
+
+[View sample in GitHub](https://github.com/SyncfusionExamples/react-pdf-viewer-examples/tree/master/How%20to/Customization%20of%20print%20Quality)
+
+## See Also
+
+- [Overview](./overview)
+- [Enable print rotation](./enable-print-rotation)
+- [Print modes](./print-modes)
+- [Print events](./events)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/save-pdf-file/to-amazon-s3.md b/Document-Processing/PDF/PDF-Viewer/react/save-pdf-file/to-amazon-s3.md
index f25c71fdfb..266365b51d 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/save-pdf-file/to-amazon-s3.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/save-pdf-file/to-amazon-s3.md
@@ -8,17 +8,17 @@ documentation: ug
# Save PDF files to AWS S3 in React
-The React PDF Viewer component supports saving PDF files to AWS S3 using either the standalone or server-backed configuration. The following steps demonstrate both approaches.
+The React PDF Viewer component supports saving PDF files to AWS S3 using either a standalone (browser) configuration or a server-backed configuration. The following steps demonstrate both approaches and include notes on prerequisites and security considerations for production use.
## Using Standalone PDF Viewer
-To save a PDF file to AWS S3, you can follow the steps below
+Follow the steps below to save a PDF file to AWS S3 from a browser-based React PDF Viewer.
**Step 1:** Create a PDF Viewer sample in React
Follow the instructions provided in this [link](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started) to create a simple PDF Viewer sample in React. This will set up the basic structure of your PDF Viewer application.
-**Step 2:** Modify the `src/app/app.ts` file in the Angular project
+**Step 2:** Modify the `src/app/app.ts` file in the React project
1. Import the required namespaces at the top of the file:
@@ -84,7 +84,7 @@ return (
4. Retrieve the PDF Viewer instance, save the current PDF as a Blob, read it using FileReader to get an ArrayBuffer, and upload the ArrayBuffer to AWS S3 using the `putObject` method.
-N> Replace **Your Bucket Name** with the actual Bucket name of your AWS S3 account and **Your Key** with the actual File Key of your AWS S3 account.
+N> Replace **Your Bucket Name** and **Your Key** with the target S3 bucket and object key. Ensure the S3 bucket is configured with appropriate permissions and CORS rules to allow browser uploads.
```typescript
private s3 = new AWS.S3();
@@ -113,7 +113,7 @@ function saveDocument() {
};
```
-N> Install the aws-sdk package in the application to use the previous code example: npm install aws-sdk
+N> Install the AWS SDK package to use the browser example. Run `npm install aws-sdk` for the v2 bundle, or prefer the AWS SDK v3 modular packages for smaller client bundles and better tree-shaking.
[View sample in GitHub](https://github.com/SyncfusionExamples/open-save-pdf-documents-in-aws-s3/tree/master/Open%20and%20Save%20PDF%20in%20AWS%20S3%20using%20Standalone).
@@ -213,7 +213,7 @@ public IActionResult Download([FromBody] Dictionary jsonObject)
}
```
-N> Replace the placeholders with the actual AWS access key, secret key, and bucket name.
+N> Replace the placeholders with the appropriate AWS credentials and bucket name. For enhanced security, avoid storing long-lived credentials in configuration files; use environment variables or a secrets manager instead.
**Step 3:** Set the PDF Viewer properties in the React PDF Viewer component
@@ -252,6 +252,6 @@ root.render();
{% endhighlight %}
{% endtabs %}
-N> Install the AWSSDK.S3 NuGet package in the web service application to use the previous code example.
+N> The `AWSSDK.S3` NuGet package must be installed in the web service project to use the server example.
[View sample in GitHub](https://github.com/SyncfusionExamples/open-save-pdf-documents-in-aws-s3/tree/master/Open%20and%20Save%20PDF%20in%20AWS%20S3%20using%20Server-Backend)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/save-pdf-file/to-azure-active-directory.md b/Document-Processing/PDF/PDF-Viewer/react/save-pdf-file/to-azure-active-directory.md
index d6b3d6ee9f..1c6f468ce5 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/save-pdf-file/to-azure-active-directory.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/save-pdf-file/to-azure-active-directory.md
@@ -11,7 +11,7 @@ documentation: ug
### Overview
-The React PDF Viewer component supports loading and saving PDF files with Azure Active Directory (AAD). The following steps describe how to securely load and store PDF documents using a server-backed web service.
+The React PDF Viewer component supports loading and saving PDF files using Azure Active Directory (AAD). This article describes a server-backed pattern to securely load and store PDF documents. It is intended for developers implementing a server-client integration that avoids exposing secrets or long-lived credentials in the browser.
### Steps to open the PDF file from Azure Active Directory
@@ -26,7 +26,7 @@ The React PDF Viewer component supports loading and saving PDF files with Azure
- In the Azure portal, go to **Azure Active Directory** > **App registrations** > **New registration**.
- Register your application and note down the **Application (client) ID** and **Directory (tenant) ID**.
- 
+ 
3. Create a client secret:
- In the registered application, go to **Certificates & secrets**.
@@ -35,7 +35,7 @@ The React PDF Viewer component supports loading and saving PDF files with Azure
- Click **Add**.
- Copy the client secret value immediately, as it will be hidden later. Store it securely.
- 
+ 
---
@@ -45,7 +45,7 @@ The React PDF Viewer component supports loading and saving PDF files with Azure
- In the Azure portal, use the search bar to search for **Storage accounts**.
- Create a new storage account by filling in the required details (e.g., name, location, resource group, etc.).
- 
+ 
---
@@ -61,7 +61,7 @@ The React PDF Viewer component supports loading and saving PDF files with Azure
- Select your application and click **Select**.
- Click **Review + assign** to finalize the role assignment.
- 
+ 
---
### Step 4: Upload the PDF document to Azure Storage
@@ -72,7 +72,7 @@ The React PDF Viewer component supports loading and saving PDF files with Azure
2. Upload the PDF file:
- Create a new container and upload the PDF document you want to access in the PDF Viewer.
- 
+ 
---
### Step 5: Server-side configuration
diff --git a/Document-Processing/PDF/PDF-Viewer/react/save-pdf-file/to-azure-blob-storage.md b/Document-Processing/PDF/PDF-Viewer/react/save-pdf-file/to-azure-blob-storage.md
index 168663e384..2cf896d8b7 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/save-pdf-file/to-azure-blob-storage.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/save-pdf-file/to-azure-blob-storage.md
@@ -9,17 +9,17 @@ documentation: ug
# Save PDF files to Azure Blob Storage in React
-The React PDF Viewer component supports saving PDF files to Azure Blob Storage using either the standalone or server-backed configuration. The following steps demonstrate both approaches.
+The React PDF Viewer component supports saving PDF files to Azure Blob Storage using either a standalone (browser) configuration or a server-backed configuration. The following steps demonstrate both approaches and include prerequisites and security guidance for production deployments.
## Using Standalone PDF Viewer
-To save a PDF file to Azure Blob Storage, follow these steps:
+Follow the steps below to save a PDF file to Azure Blob Storage from an React PDF Viewer.
**Step 1:** Create a PDF Viewer sample in React
Follow the instructions provided in this [link](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started) to create a simple PDF Viewer sample in React. This will set up the basic structure of your PDF Viewer application.
-**Step 2:** Modify the `src/app/app.ts` file in the Angular project
+**Step 2:** Modify the `src/app/app.ts` file in the React project
1. Import the required namespaces at the top of the file:
@@ -29,7 +29,7 @@ import { BlockBlobClient } from "@azure/storage-blob";
2. Add the following private property to `app.ts`, and assign the value from the configuration to the corresponding property.
-N> Replace **Your SAS Url in Azure** with the actual SAS URL for the Azure Blob Storage account.
+N> Replace **Your SAS Url in Azure** with the SAS URL generated for the target blob. For production, generate short-lived SAS tokens on the server rather than embedding SAS URLs in client code.
```typescript
var SASUrl = "*Your SAS Url in Azure*";
@@ -99,7 +99,7 @@ function saveDocument() {
}
```
-N> Install the @azure/storage-blob package in the application to use the previous code example: npm install @azure/storage-blob
+N> Install the Azure Storage Blob client package for browser use: `npm install @azure/storage-blob`. For server-side operations use `dotnet add package Azure.Storage.Blobs`.
[View sample in GitHub](https://github.com/SyncfusionExamples/open-save-pdf-documents-in-azure-blob-storage/tree/master/Open%20and%20Save%20PDF%20in%20Azure%20Blob%20Storage%20using%20Standalone).
diff --git a/Document-Processing/PDF/PDF-Viewer/react/save-pdf-file/to-box-cloud-file-storage.md b/Document-Processing/PDF/PDF-Viewer/react/save-pdf-file/to-box-cloud-file-storage.md
index 0c98c78f0b..a53f80cc2a 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/save-pdf-file/to-box-cloud-file-storage.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/save-pdf-file/to-box-cloud-file-storage.md
@@ -9,7 +9,7 @@ documentation: ug
# Save PDF files to Box cloud file storage
-To save a PDF file to Box cloud file storage, you can follow the steps below
+The React PDF Viewer component supports saving PDF files to Box cloud file storage using a server-backed web service. This article describes a recommended server-client pattern that keeps credentials secure and shows how to upload viewer documents to a Box folder.
**Step 1:** Set up a Box developer account and create a Box application
@@ -94,7 +94,7 @@ public async Task Download([FromBody] Dictionary
}
```
-6. Open the `appsettings.json` file in the web service project and add the following lines below the existing `"AllowedHosts"` configuration.
+6. Open the `appsettings.json` file in your web service project, add the required settings below the existing `AllowedHosts` configuration
```json
{
@@ -112,7 +112,7 @@ public async Task Download([FromBody] Dictionary
}
```
-N> Replace the placeholders with the actual Box access token, folder ID, client ID, and client secret.
+N> Replace the placeholders with the appropriate Box access token, folder ID, client ID, and client secret.
**Step 4:** Set the PDF Viewer properties in the React PDF Viewer component
@@ -150,8 +150,8 @@ root.render();
```
{% endraw %}
-N> Install the Box.V2.Core NuGet package in the web service application to use the previous code example.
+N> Install the Box .NET SDK in the web service project: `dotnet add package Box.V2`.
-N> Replace `PDF_Succinctly.pdf` with the actual document name to load from Box cloud storage. Pass the document name from the Box folder to the `documentPath` property of the PDF Viewer component.
+N> Replace `PDF_Succinctly.pdf` with the actual document name to load from Box cloud storage. Pass the document name from the Box folder to the `documentPath` property of the `React PDF Viewer` component.
[View sample in GitHub](https://github.com/SyncfusionExamples/open-save-pdf-documents-in-box-cloud-file-storage)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/save-pdf-file/to-dropbox-cloud-file-storage.md b/Document-Processing/PDF/PDF-Viewer/react/save-pdf-file/to-dropbox-cloud-file-storage.md
index 0a08f26111..e673e1ac9a 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/save-pdf-file/to-dropbox-cloud-file-storage.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/save-pdf-file/to-dropbox-cloud-file-storage.md
@@ -23,7 +23,7 @@ To create a Dropbox API App, you should follow the official documentation provid
Follow the instructions provided in this [link](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started) to create a simple PDF Viewer sample in React. This sets up the basic structure of the PDF Viewer application.
-**Step 3:** Modify the `src/app/app.ts` file in the Angular project
+**Step 3:** Modify the `src/app/app.ts` file in the React project
1. Import the required namespaces at the top of the file:
@@ -75,9 +75,9 @@ return (
{% endhighlight %}
{% endtabs %}
-3. Retrieve the PDF Viewer instance and save the current PDF as a Blob. Then, read the Blob using a FileReader to convert it into an ArrayBuffer, and upload the ArrayBuffer to Dropbox using the `filesUpload` method.
+3. Retrieve the PDF viewer instance and save the current PDF as a Blob. Then read the Blob using a FileReader to convert it into an ArrayBuffer, and upload the ArrayBuffer to Dropbox using the `filesUpload` method of the Dropbox instance.
-N> Replace **Your Access Token** with the actual Access Token of your Drop Box account.
+N> Replace **Your Access Token** with the actual access token for the Dropbox app.
```typescript
function saveDocument() {
@@ -101,7 +101,7 @@ N> Replace **Your Access Token** with the actual Access Token of your Drop Box a
};
```
-N> Install the dropbox package in the application to use the previous code example: npm install dropbox
+N> Install the `dropbox` package in the React project before running the sample: `npm install dropbox`.
[View sample in GitHub](https://github.com/SyncfusionExamples/open-save-pdf-documents-in-dropbox-cloud-file-storage/tree/master/Open%20and%20Save%20PDF%20in%20Drop%20Box%20using%20Standalone)
@@ -111,15 +111,15 @@ To save a PDF file to Dropbox cloud file storage, you can follow the steps below
**Step 1:** Create a Dropbox API app
-To create a Dropbox API App, you should follow the official documentation provided by Dropbox [link](https://www.dropbox.com/developers/documentation/dotnet#tutorial). The process involves visiting the Dropbox Developer website and using their App Console to set up your API app. This app will allow you to interact with Dropbox programmatically, enabling secure access to files and data.
+To create a Dropbox API app, follow the Dropbox .NET tutorial: [Dropbox .NET tutorial](https://www.dropbox.com/developers/documentation/dotnet#tutorial). Use the Dropbox App Console to register an app and obtain the necessary access token and permissions.
**Step 2:** Create a PDF Viewer sample in React
-Follow the instructions provided in this [link](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started) to create a simple PDF Viewer sample in React. This sets up the basic structure of the PDF Viewer application.
+Follow the Syncfusion getting-started instructions for the React PDF Viewer: [React PDF Viewer getting started](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started). This sets up the basic PDF Viewer application structure.
**Step 3:** Modify the `PdfViewerController.cs` file in the web service project
-1. Create a web service project in .NET Core 3.0 or above. You can refer to this [link](https://www.syncfusion.com/kb/11063/how-to-create-pdf-viewer-web-service-in-net-core-3-0-and-above) for instructions on how to create a web service project.
+1. Create a web service project in .NET Core 3.0 or above. Refer to the Syncfusion knowledge base article on creating a PDF Viewer web service: [Create a PDF Viewer web service in .NET Core 3.0 and above](https://www.syncfusion.com/kb/11063/how-to-create-pdf-viewer-web-service-in-net-core-3-0-and-above).
2. Open the `PdfViewerController.cs` file in your web service project.
@@ -149,7 +149,7 @@ public PdfViewerController(IWebHostEnvironment hostingEnvironment, IMemoryCache
}
```
-5. Modify the [Download()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#download) method to save the downloaded PDF file to the Dropbox folder.
+5. Modify the `Download()` method to save the downloaded PDF files to Dropbox cloud storage
```csharp
@@ -187,7 +187,7 @@ public async Task Download([FromBody] Dictionary
```
-6. Open the `appsettings.json` file in the web service project and add the following lines below the existing `"AllowedHosts"` configuration.
+6. Open the `appsettings.json` file in the web service project and add the following entries below the existing `"AllowedHosts"` configuration
```json
{
@@ -203,7 +203,7 @@ public async Task Download([FromBody] Dictionary
}
```
-N> Replace the placeholders with the actual Dropbox access token and target folder name.
+N> Replace the placeholders with the actual Dropbox access token and folder name.
**Step 4:** Set the PDF Viewer properties in the React PDF Viewer component
@@ -225,7 +225,7 @@ function App() {
@@ -242,6 +242,8 @@ root.render();
{% endhighlight %}
{% endtabs %}
-N> Install the Dropbox.Api NuGet package in the web service application to use the previous code example.
+N> Install the `Dropbox.Api` NuGet package in the web service application to use the previous code example.
+
+N> Replace `PDF_Succinctly.pdf` with the actual document name stored in Dropbox and pass that name to the `documentPath` property of the PDF Viewer component.
[View sample in GitHub](https://github.com/SyncfusionExamples/open-save-pdf-documents-in-dropbox-cloud-file-storage/tree/master/Open%20and%20Save%20PDF%20in%20Drop%20Box%20using%20Server-Backed)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/save-pdf-file/to-google-cloud-storage.md b/Document-Processing/PDF/PDF-Viewer/react/save-pdf-file/to-google-cloud-storage.md
index 9be9583e40..c044b0b88c 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/save-pdf-file/to-google-cloud-storage.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/save-pdf-file/to-google-cloud-storage.md
@@ -9,15 +9,15 @@ documentation: ug
# Save PDF files to Google Cloud Storage
-To save a PDF file to Google Cloud Storage, you can follow the steps below
+To save a PDF file to Google Cloud Storage, follow the steps below.
**Step 1:** Create a PDF Viewer sample in React
-Follow the instructions provided in this [link](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started) to create a simple PDF Viewer sample in React. This sets up the basic structure of the PDF Viewer application.
+Follow the Syncfusion getting-started instructions for the React PDF Viewer: [React PDF Viewer getting started](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started). This sets up the basic PDF Viewer application structure.
**Step 2:** Modify the `PdfViewerController.cs` File in the Web Service Project
-1. Create a web service project in .NET Core 3.0 or above. You can refer to this [link](https://www.syncfusion.com/kb/11063/how-to-create-pdf-viewer-web-service-in-net-core-3-0-and-above) for instructions on how to create a web service project.
+1. Create a web service project in .NET Core 3.0 or above. Refer to the Syncfusion knowledge base article on creating a PDF Viewer web service: [Create a PDF Viewer web service in .NET Core 3.0 and above](https://www.syncfusion.com/kb/11063/how-to-create-pdf-viewer-web-service-in-net-core-3-0-and-above).
2. Open the `PdfViewerController.cs` file in your web service project.
@@ -29,7 +29,7 @@ using Google.Cloud.Storage.V1;
using Google.Apis.Auth.OAuth2;
```
-4. Add the following private fields and constructor parameters to the `PdfViewerController` class. In the constructor, assign configuration values to the corresponding fields.
+4. Add the following private fields and constructor parameters to the `PdfViewerController` class. In the constructor, assign the configuration values to the corresponding fields.
```csharp
// Private readonly object _storageClient
@@ -50,7 +50,7 @@ public PdfViewerController(IWebHostEnvironment hostingEnvironment, IMemoryCache
// Load the service account credentials from the key file.
var credentials = GoogleCredential.FromFile(keyFilePath);
- // Create a storage client with Application Default Credentials
+ // Create a storage client using the service account credentials.
_storageClient = StorageClient.Create(credentials);
_configuration = configuration;
@@ -59,7 +59,7 @@ public PdfViewerController(IWebHostEnvironment hostingEnvironment, IMemoryCache
}
```
-5. Modify the [Download()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#download) method to save the downloaded PDF file to the Google Cloud Storage bucket.
+5. Modify the `Download()` method to save the downloaded PDF file to the Google Cloud Storage bucket.
```csharp
[HttpPost("Download")]
@@ -87,7 +87,7 @@ public IActionResult Download([FromBody] Dictionary jsonObject)
}
```
-6. Open the `appsettings.json` file in the web service project and add the following lines below the existing `"AllowedHosts"` configuration.
+6. Open the `appsettings.json` file in the web service project and add the following entries below the existing `"AllowedHosts"` configuration.
```json
{
@@ -102,9 +102,9 @@ public IActionResult Download([FromBody] Dictionary jsonObject)
}
```
-N> Replace the placeholder with the actual Google Cloud Storage bucket name.
+N> Replace **Your Bucket name from Google Cloud Storage** with the actual name of the Google Cloud Storage bucket.
-N> Replace `path/to/service-account-key.json` with the actual file path to the service account key JSON file.
+N> Replace **path/to/service-account-key.json** with the actual file path to the service account key JSON file. Provide the correct path and filename.
**Step 3:** Set the PDF Viewer properties in the React PDF Viewer component
@@ -126,7 +126,7 @@ function App() {
@@ -142,6 +142,6 @@ root.render();
```
{% endraw %}
-N> Install the Google.Cloud.Storage.V1 NuGet package in the web service application to use the previous code example.
+N> Install the `Google.Cloud.Storage.V1` NuGet package in the web service application to use the previous code example.
[View sample in GitHub](https://github.com/SyncfusionExamples/open-save-pdf-documents-in-google-cloud-storage)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/save-pdf-file/to-google-drive.md b/Document-Processing/PDF/PDF-Viewer/react/save-pdf-file/to-google-drive.md
index 4e35c24420..956c0d8452 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/save-pdf-file/to-google-drive.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/save-pdf-file/to-google-drive.md
@@ -9,21 +9,21 @@ documentation: ug
# Save PDF files to Google Drive
-To save a PDF file to Google Drive, you can follow the steps below
+This article describes how to save a PDF file to Google Drive from the Syncfusion React PDF Viewer using a server-side web service. Follow the steps below.
**Step 1:** Set up the Google Drive API
-You must set up a project in the Google Developers Console and enable the Google Drive API. Obtain the necessary credentials to access the API. For more information, view the official [link](https://developers.google.com/drive/api/guides/enable-sdk).
+Create a Google Cloud project, enable the Google Drive API, and obtain OAuth 2.0 credentials. For details, see the [Google Drive](https://developers.google.com/drive/api/guides/enable-sdk) API enable guide.
**Step 2:** Create a PDF Viewer sample in React
-Follow the instructions provided in this [link](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started) to create a simple PDF Viewer sample in React. This sets up the basic structure of the PDF Viewer application.
+Create a simple PDF Viewer sample in React by following the Syncfusion PDF Viewer for React [getting started](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started) guide. This establishes the basic application structure required for the integration.
**Step 3:** Modify the `PdfViewerController.cs` file in the web service project
-1. Create a web service project in .NET Core 3.0 or above. You can refer to this [link](https://www.syncfusion.com/kb/11063/how-to-create-pdf-viewer-web-service-in-net-core-3-0-and-above) for instructions on how to create a web service project.
+1. Create a [web service](https://www.syncfusion.com/kb/11063/how-to-create-pdf-viewer-web-service-in-net-core-3-0-and-above) project targeting .NET Core 3.0 or later. For guidance, see the Syncfusion knowledge base article on creating a PDF Viewer web service in .NET Core.
-2. Open the `PdfViewerController.cs` file in your web service project.
+2. Open the `PdfViewerController.cs` file in the web service project.
3. Import the required namespaces at the top of the file:
@@ -53,7 +53,7 @@ public PdfViewerController(IWebHostEnvironment hostingEnvironment, IMemoryCache
}
```
-5. Modify the [Download()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#download) method to save the downloaded PDF file to the Google Drive folder.
+5. Modify the `Download()` method to save the downloaded PDF file to the configured Google Drive folder.
```csharp
[HttpPost("Download")]
@@ -111,7 +111,7 @@ public async Task Download([FromBody] Dictionary
}
```
-6. Open the `appsettings.json` file in the web service project and add the following lines below the existing `"AllowedHosts"` configuration.
+6. Open the `appsettings.json` file in the web service project and add the following settings below the existing `AllowedHosts` configuration.
```json
{
@@ -136,7 +136,7 @@ N> Use a valid `client_id` from the JSON file to authenticate with the Google Dr
**Step 4:** Set the PDF Viewer properties in the React PDF Viewer component
-Modify the `serviceUrl` property of the PDF Viewer component with the accurate URL of the web service, replacing `https://localhost:44396/pdfviewer` with the actual server URL. Set the `documentPath` property to the desired PDF file name to load from Google Drive, and ensure that the document exists in the target folder.
+Update the `serviceUrl` property of the PDF Viewer component to the web service URL, replacing `https://localhost:44396/pdfviewer` with the actual server endpoint. Set the `documentPath` property to the PDF file name that exists in the configured Google Drive folder.
{% raw %}
@@ -170,6 +170,6 @@ root.render();
```
{% endraw %}
-N> Install the Google.Apis.Drive.v3 NuGet package in the web service application to use the previous code example.
+N> Install the `Google.Apis.Drive.v3` NuGet package in the web service application to use the previous code example.
[View sample in GitHub](https://github.com/SyncfusionExamples/open-save-pdf-documents-in-google-drive).
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/save-pdf-file/to-one-drive.md b/Document-Processing/PDF/PDF-Viewer/react/save-pdf-file/to-one-drive.md
index 0366e11f49..2dcba89065 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/save-pdf-file/to-one-drive.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/save-pdf-file/to-one-drive.md
@@ -9,21 +9,21 @@ documentation: ug
# Save PDF files to OneDrive
-To save a PDF file to One Drive, you can follow the steps below
+This article describes how to save a PDF file to OneDrive from the Syncfusion React PDF Viewer using a server-side web service. Follow the steps below.
**Step 1:** Create a Microsoft Graph API application
-Need to create a Microsoft Graph API application and obtain the necessary credentials, namely the application ID and tenant ID. Follow the steps provided in the [link](https://learn.microsoft.com/en-us/training/modules/msgraph-access-file-data/3-exercise-access-files-onedrive) to create the application and obtain the required IDs.
+Create a Microsoft Graph API application, and obtain the application (client) ID and tenant ID. For details, see the [Microsoft Graph guide](https://learn.microsoft.com/en-us/training/modules/msgraph-access-file-data/3-exercise-access-files-onedrive) for accessing files in OneDrive.
**Step 2:** Create a PDF Viewer sample in React
-Follow the instructions provided in this [link](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started) to create a simple PDF Viewer sample in React. This sets up the basic structure of the PDF Viewer application.
+Create a simple PDF Viewer sample in React by following the Syncfusion PDF Viewer for React [getting started](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started) guide. This establishes the application structure required for the integration
**Step 3:** Modify the `PdfViewerController.cs` file in the web service project
-1. Create a web service project in .NET Core 3.0 or above. You can refer to this [link](https://www.syncfusion.com/kb/11063/how-to-create-pdf-viewer-web-service-in-net-core-3-0-and-above) for instructions on how to create a web service project.
+1. Create a web service project targeting .NET Core 3.0 or later. For guidance, see the Syncfusion knowledge base article on creating a PDF Viewer web service in .NET Core.
-2. Open the `PdfViewerController.cs` file in your web service project.
+2. Open the `PdfViewerController.cs` file in the web service project.
3. Import the required namespaces at the top of the file:
@@ -53,7 +53,7 @@ public PdfViewerController(IWebHostEnvironment hostingEnvironment, IMemoryCache
}
```
-5. Modify the [Download()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#download) method to save the downloaded PDF file to the OneDrive folder.
+5. Modify the `Download()` method to save the downloaded PDF file to the configured OneDrive folder.
```csharp
[HttpPost("Download")]
@@ -100,7 +100,7 @@ public async Task Download([FromBody] Dictionary
}
```
-6. Open the `appsettings.json` file in the web service project and add the following lines below the existing `"AllowedHosts"` configuration.
+6. Open `appsettings.json` in the web service project and add the following keys below the existing `AllowedHosts` configuration
```json
{
@@ -118,11 +118,11 @@ public async Task Download([FromBody] Dictionary
```
-N> Replace the placeholders with the actual tenant ID, application ID, and OneDrive folder name.
+N> Replace the placeholders with actual values for the Tenant ID, Application ID, and OneDrive folder name.
**Step 4:** Set the PDF Viewer properties in the React PDF Viewer component
-Modify the `serviceUrl` property of the PDF Viewer component with the accurate URL of the web service, replacing `https://localhost:44396/pdfviewer` with the actual server URL. Set the `documentPath` property to the desired PDF file name to load from OneDrive, and ensure that the document exists in the target folder.
+Update the `serviceUrl` property with the web service endpoint and set `documentPath` to the PDF file name stored in OneDrive. Ensure the document exists in the target OneDrive folder.
{% raw %}
@@ -156,11 +156,11 @@ root.render();
```
{% endraw %}
-N> Install the following NuGet packages in the web service application:
-- Microsoft.Identity.Client
-- Microsoft.Graph
-- Microsoft.Extensions.Configuration
-- Microsoft.Extensions.Configuration.FileExtensions
-- Microsoft.Extensions.Configuration.Json
+N> Install the following NuGet packages in the web service application when required:
+- `Microsoft.Identity.Client`
+- `Microsoft.Graph`
+- `Microsoft.Extensions.Configuration`
+- `Microsoft.Extensions.Configuration.FileExtensions`
+- `Microsoft.Extensions.Configuration.Json`
[View sample in GitHub](https://github.com/SyncfusionExamples/open-save-pdf-documents-in-one-drive)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/save-pdf-files.md b/Document-Processing/PDF/PDF-Viewer/react/save-pdf-files.md
index 04152db832..83c198ecd6 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/save-pdf-files.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/save-pdf-files.md
@@ -8,28 +8,38 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Saving PDF file
+# Saving PDF Files in the React PDF Viewer
-After editing the PDF file with various annotation tools, you will need to save the updated PDF to the server, database, or local file system.
+After editing a PDF with annotation tools, you can save the updated file to a server, a database, or download it locally. The following sections show common approaches.
-## Save PDF file to Server
+**Save and Download the Edited PDF**
-Need to save the modified PDF back to a server. To achieve this, proceed with the following steps
+After editing the PDF document, follow this short, linear flow to persist and retrieve the updated file:
-**Step 1:** Create a Simple PDF Viewer Sample in React
+1. Persist the edited document to your back end (server or database). See "Save modified PDF to server" and "Save modified PDF to a database" below for server-side examples.
+2. Provide the updated file to the user. For a simple download use the built-in toolbar or call the viewer API [`download()`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#download).
+3. If you need the edited PDF for custom uploads or processing, use the viewer [`saveAsBlob()`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#saveasblob) API to obtain a Blob (or convert it to Base64).
-Start by following the steps provided in this [link](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started) to create a simple PDF viewer sample in React. This will give you a basic setup of the PDF viewer component.
+This is a summary; use the detailed subsections below for full code samples and server-side instructions.
-**Step 2:** Modify the `PdfViewerController.cs` File in the Web Service Project
-1. Create a web service project in .NET Core 3.0 or above. You can refer to this [link](https://www.syncfusion.com/kb/11063/how-to-create-pdf-viewer-web-service-in-net-core-3-0-and-above) for instructions on how to create a web service project.
+## Save modified PDF to server
+
+To save the modified PDF back to a server, follow these steps.
+
+**Step 1:** Create a simple PDF Viewer sample in React
+
+Follow the [getting-started](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started) guide to create a basic PDF Viewer implementation.
+
+**Step 2:** Modify the `PdfViewerController.cs` in the web service project
+
+1. Create a web service project targeting .NET Core 3.0 or later. See this [KB Link](https://www.syncfusion.com/kb/11063/how-to-create-pdf-viewer-web-service-in-net-core-3-0-and-above) for details.
2. Open the `PdfViewerController.cs` file in your web service project.
-3. Modify the `Download()` method to open it in the viewer using URL
+3. Modify the `Download()` method so it returns the modified document for the viewer to download or store.
```csharp
-
public IActionResult Download([FromBody] Dictionary jsonObject)
{
//Initialize the PDF Viewer object with memory cache object
@@ -54,15 +64,15 @@ public IActionResult Download([FromBody] Dictionary jsonObject)
}
return Content(documentBase);
}
-
```
-**Step 3:** Set the PDF Viewer Properties in React PDF viewer component
+**Step 3:** Set the PDF Viewer properties in your React app
-Modify the `serviceUrl` property of the PDF viewer component with the accurate URL of your web service project, replacing `https://localhost:44396/pdfviewer` with the actual URL of your server.Modify the documentPath with the correct PDF Document URL want to load.
+Set the `serviceUrl` to point to your web service (for example, replace `https://localhost:44396/pdfviewer` with your server URL). Also set `documentPath` to the document URL you want to load.
+{% tabs %}
+{% highlight js tabtitle="JSX" %}
{% raw %}
-
import * as ReactDOM from 'react-dom';
import * as React from 'react';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView, ThumbnailView,
@@ -88,17 +98,19 @@ function App() {
}
const root = ReactDOM.createRoot(document.getElementById('sample'));
root.render();
-
{% endraw %}
+{% endhighlight %}
+{% endtabs %}
[View sample in GitHub](https://github.com/SyncfusionExamples/react-pdf-viewer-examples/tree/master/Save%20and%20Load/Save%20PDF%20file%20to%20server)
## Download PDF file as a copy
-In the built-in toolbar, you have an option to download the updated PDF to the local file system, you can use it to download the PDF file.
+The built-in toolbar includes a download option that saves the updated PDF to the user's local file system. You can also trigger the same behavior programmatically by calling the viewer's [`download()`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#download) API.
+{% tabs %}
+{% highlight js tabtitle="JSX" %}
{% raw %}
-
import * as ReactDOM from 'react-dom/client';
import * as React from 'react';
import './index.css';
@@ -132,31 +144,30 @@ return (
}
const root = ReactDOM.createRoot(document.getElementById('sample'));
root.render();
-
{% endraw %}
+{% endhighlight %}
+{% endtabs %}
-## Save PDF file to Database
+## Save modified PDF to a database
-If you have plenty of PDF files stored in database and you want to save the updated PDF file back to the database, use the following code example.
+If your application stores PDF files in a database, you can save the updated PDF bytes back to the database from your web service. The following steps outline a typical server-side flow.
-**Step 1:** Create a Simple PDF Viewer Sample in React
+**Step 1:** Create the React sample viewer
-Start by following the steps provided in this [link](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started) to create a simple PDF viewer sample in React. This will give you a basic setup of the PDF viewer component.
+Follow the [getting-started](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started) guide to set up a basic Viewer instance.
-**Step 2:** Modify the `PdfViewerController.cs` File in the Web Service Project
+**Step 2:** Update `PdfViewerController.cs` in the web service
-1. Create a web service project in .NET Core 3.0 or above. You can refer to this [link](https://www.syncfusion.com/kb/11063/how-to-create-pdf-viewer-web-service-in-net-core-3-0-and-above) for instructions on how to create a web service project.
+1. Create a web service project targeting .NET Core 3.0 or later (see the KB link above). Open the `PdfViewerController.cs` file in your web service project.
-2. Open the `PdfViewerController.cs` file in your web service project.
-
-3. Import the required namespaces at the top of the file:
+2. Import required namespaces:
```csharp
using System.IO;
using System.Data.SqlClient;
```
-4. Add the following private fields and constructor parameters to the `PdfViewerController` class, In the constructor, assign the values from the configuration to the corresponding fields
+3. Add configuration fields to your controller and read the connection string from configuration:
```csharp
private IConfiguration _configuration;
@@ -171,15 +182,12 @@ public PdfViewerController(IWebHostEnvironment hostingEnvironment, IMemoryCache
}
```
-5. Modify the `Download()` method to open it in the viewer using URL
+4. In the `Download()` method, convert the returned base64 document to bytes and insert it into your database (the example below uses parameterized commands to avoid SQL injection):
```csharp
-
[HttpPost("Download")]
[Microsoft.AspNetCore.Cors.EnableCors("MyPolicy")]
[Route("[controller]/Download")]
-//Post action for downloading the PDF documents
-
public async Task Download([FromBody] Dictionary jsonObject)
{
//Initialize the PDF Viewer object with memory cache object
@@ -211,7 +219,7 @@ public async Task Download([FromBody] Dictionary
}
```
-6. Open the `appsettings.json` file in your web service project, Add the following lines below the existing `"AllowedHosts"` configuration
+5. Add the connection string to `appsettings.json`:
```json
{
@@ -222,12 +230,141 @@ public async Task Download([FromBody] Dictionary
}
},
"AllowedHosts": "*",
- "ConnectionString": "Your connection string for SQL server"
+ "ConnectionString": "Your connection string for SQL Server"
}
```
-N> Replace **Your Connection string from SQL server** with the actual connection string for your SQL Server database
+N> Replace `Your connection string for SQL Server` with your actual connection string.
+
+N> Ensure the `System.Data.SqlClient` package (or `Microsoft.Data.SqlClient`) is installed in your project. Use parameterized queries (as shown) and validate inputs to avoid SQL injection risks.
+
+[View sample in GitHub](https://github.com/SyncfusionExamples/open-save-pdf-documents-in-database)
+
+### Save to Cloud Storage Services
+
+Each link below goes to a provider page with simple, step-by-step instructions and example code for saving the edited PDF to that cloud storage service.
+
+- [AWS S3](./save-pdf-file/to-amazon-s3)
+- [Azure Blob Storage](./save-pdf-file/to-azure-blob-storage)
+- [Google Cloud Storage](./save-pdf-file/to-google-cloud-storage)
+- [Google Drive](./save-pdf-file/to-google-drive)
+- [OneDrive](./save-pdf-file/to-one-drive)
+- [Dropbox](./save-pdf-file/to-dropbox-cloud-file-storage)
+- [Box](./save-pdf-file/to-box-cloud-file-storage)
+- [Azure AD (auth notes)](./save-pdf-file/to-azure-active-directory)
+
+## Save PDF with or without annotations
+
+The React PDF Viewer allows exporting the current PDF along with annotations, or exporting a clean version without annotations. This gives flexibility depending on workflow review mode, sharing, or securing final documents.
+
+### Save PDF with annotations
+
+The PDF is exported with annotations and form fields by default. You can download a PDF using the download button in the built‑in toolbar or through the [`download`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#download) API. See the [download guide](./download) for further explanation.
+
+### Save PDF without annotations
+
+The PDF can be exported without annotations by setting the [`skipDownload`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotationsettingsmodel#skipdownload) API to true in [`annotationSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#annotationsettings).
+
+{% highlight ts %}
+{% raw %}
+
+
+
+{% endraw %}
+{% endhighlight %}
+
+### Save after restoring annotations
+
+PDFs can also be exported after importing annotations. The following code example uses the [`downloadStart`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#downloadstart) event to cancel the download action and import the annotations from a JSON file before downloading the PDF document.
+
+{% tabs %}
+{% highlight ts tabtitle="App.tsx" %}
+{% raw %}
+import {
+ PdfViewerComponent, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
+ ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner,
+ PageOrganizer, Inject, Print, DownloadStartEventArgs
+} from '@syncfusion/ej2-react-pdfviewer';
+import { DataFormat, PdfDocument } from '@syncfusion/ej2-pdf';
+import { RefObject, useRef } from 'react';
+
+export default function App() {
+ const viewerRef: RefObject = useRef(null);
+
+ const blobToBase64 = async (blob: Blob): Promise => {
+ return new Promise((resolve, reject) => {
+ const reader = new FileReader();
+ reader.onerror = () => reject(reader.error);
+ reader.onload = () => {
+ const dataUrl: string = reader.result as string;
+ const data: string = dataUrl.split(',')[1];
+ resolve(data);
+ };
+ reader.readAsDataURL(blob);
+ });
+ }
+
+ const restoreAnnotations = async (data: string) => {
+ try {
+ const fetchResponse: Response = await fetch("/pdf-succinctly.json", { headers: { Accept: "application/json" } });
+ if (fetchResponse.ok) {
+ let document: PdfDocument = new PdfDocument(data);
+ let jsonData = await fetchResponse.json();
+ document.importAnnotations(btoa(JSON.stringify(jsonData)), DataFormat.json);
+ document.save(`${viewerRef.current.fileName}.pdf`);
+ document.destroy();
+ }
+ else {
+ throw new Error(`HTTP ${fetchResponse.status}`);
+ }
+ }
+ catch (error) {
+ console.error(error);
+ }
+ }
+
+ const handleImports = async () => {
+ const blob: Blob = await viewerRef.current.saveAsBlob();
+ const data: string = await blobToBase64(blob);
+ await restoreAnnotations(data);
+ }
+
+ const onDownloadStart = async (args: DownloadStartEventArgs) => {
+ args.cancel = true;
+ await handleImports();
+ };
+
+ return (
+
+
+
+
+
+ );
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+---
-N> The **System.Data.SqlClient** package must be installed in your application to use the previous code example. You need to modify the connectionString variable in the previous code example as per the connection string of your database.
+**See also**
-[View sample in GitHub](https://github.com/SyncfusionExamples/open-save-pdf-documents-in-database)
\ No newline at end of file
+- [Get Base64 value from a loaded PDF using saveAsBlob API](./how-to/get-base64)
+- [Open PDF files overview](./open-pdf-files)
+- [Download a PDF](./download)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/security/overview.md b/Document-Processing/PDF/PDF-Viewer/react/security/overview.md
new file mode 100644
index 0000000000..0983b7229c
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/security/overview.md
@@ -0,0 +1,35 @@
+---
+layout: post
+title: Permissions and security in React PDF Viewer | Syncfusion
+description: High-level security and permissions overview and recommended controls for protecting PDF content in EJ2 React PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Permissions and Security in React PDF Viewer
+
+## Purpose
+
+This page provides a concise security overview and recommended controls when using the EJ2 React PDF Viewer. It summarizes server-side and client-side measures to protect sensitive PDF content while using the viewer in web applications.
+
+## Key recommendations
+
+- **Enforce protections on the server**: Perform encryption, permission flags, redaction, metadata stripping, and form flattening before serving files.
+- **Treat viewer UI settings as UX controls**: Disabling print, download, or text-selection in the viewer improves user experience but is not a security boundary unless the underlying PDF enforces permissions.
+- **Use short-lived, authenticated access**: Serve PDFs via tokenized endpoints or signed URLs rather than public buckets.
+- **Log and monitor access**: Track downloads, apply rate limits, and enforce CORS and auth checks on PDF endpoints.
+
+## Quick actions
+
+- Set [PDF permissions (copy/print)](./prevent-copy-and-print) using server-side PDF libraries before delivery.
+- Remove embedded files, scripts, and metadata during preprocessing.
+- Flatten form fields and sanitize form data when publishing public documents.
+- [Hide or disable viewer UI](./prevent-copy-and-print#3-hidedisable-ui-elements-in-the-viewer) elements for additional UX control.
+
+## Related documents
+
+- [Secure PDf Viewing in React apps](./secure-pdf-viewing)
+- [Prevent copy/print](./prevent-copy-and-print)
+- [Restricting download](./restricting-download)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/security/prevent-copy-and-print.md b/Document-Processing/PDF/PDF-Viewer/react/security/prevent-copy-and-print.md
new file mode 100644
index 0000000000..a195f7e56a
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/security/prevent-copy-and-print.md
@@ -0,0 +1,85 @@
+---
+layout: post
+title: Prevent Copy or Print in React PDF Viewer | Syncfusion
+description: Learn how to prevent printing and copying in the React PDF Viewer using viewer settings or server-side permission flags.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Prevent Copy or Print in React PDF Viewer
+
+## Overview
+This guide shows how to prevent users from copying text or printing documents in EJ2 React PDF Viewer.
+
+**Outcome:** You will learn server-side and client-side options to restrict copy/print with a complete React example.
+
+## Steps
+
+### 1. Use a PDF with permissions already set
+
+- Load a PDF that already disallows copy or print functionality itself. The Viewer enforces these permission automatically.
+
+### 2. Pre process restrictions in server-side
+
+- Use Syncfusion PDF Library to set permission flags before sending the file to the client. See the server-side example below. See this [guide](https://help.syncfusion.com/document-processing/pdf/pdf-library/net/working-with-security#change-the-permission-of-the-pdf-document) for detailed explanations
+- Disabling print and copy in server-side automatically enforces them in the PDF Viewer.
+
+### 3. Hide/disable UI elements in the viewer
+
+- Print, download and copy options can be disabled or hidden in the viewer regardless of the PDF's permissions.
+- Print and download options can be hidden in the viewer's primary toolbar. See [primary toolbar customization](../toolbar-customization/primary-toolbar#3-show-or-hide-primary-toolbar-items).
+- Copy option in the context menu can be disabled in the PDF Viewer. See [customize context menu](../context-menu/custom-context-menu).
+
+### 4. Disable print programmatically in the viewer
+
+- Set [`enablePrint`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#enableprint) to `false` to disable the print UI even if the PDF allows printing.
+
+### 5. Disable copy via text-selection UI
+
+- Set [`enableTextSelection`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#enabletextselection) to `false` to stop text selection and copying through the viewer UI.
+
+**Example:**
+
+The following is a complete React example that demonstrates disabling printing and text selection in the viewer.
+
+{% tabs %}
+{% highlight ts tabtitle="App.tsx" %}
+{% raw %}
+import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView, ThumbnailView, Print, TextSelection, TextSearch, Annotation, FormFields, FormDesigner, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
+export default function App() {
+ return (
+
+
+
+
+
+ );
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+**Expected result**:
+- The viewer renders the PDF.
+- Print button and print-related UI are hidden/disabled.
+- Text selection and copy operations from the viewer are disabled.
+
+## Troubleshooting
+
+- If the Print button still appears:
+ - Confirm [`enablePrint`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#enableprint) is set to `false` on `PdfViewerComponent`.
+ - If the PDF explicitly allows printing, prefer server-side removal of print permission.
+- If text can still be copied:
+ - Confirm [`enableTextSelection`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#enabletextselection) is set to `false` and your app isn't adding secondary copy handlers.
+
+## Related topics
+
+- [Secure PDF Viewing in React Apps](./secure-pdf-viewing)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/security/restricting-download-and-print.md b/Document-Processing/PDF/PDF-Viewer/react/security/restricting-download-and-print.md
new file mode 100644
index 0000000000..1ef4bdb8c7
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/security/restricting-download-and-print.md
@@ -0,0 +1,96 @@
+---
+layout: post
+title: Restrict download or print in React PDF Viewer | Syncfusion
+description: Learn how to prevent end users from downloading or printing PDFs displayed by the EJ2 React PDF Viewer using toolbar and events.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Restrict download or print in React PDF Viewer
+
+## Overview
+
+This guide shows how to prevent end users from downloading and printing PDFs displayed by the EJ2 React PDF Viewer.
+
+**Outcome:** The Download and print button are removed from the primary toolbar and any download or print attempt is blocked by the [`downloadStart`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#downloadstart) and [`printStart`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#printstart) event handlers.
+
+## Prerequisites
+- EJ2 React PDF Viewer installed and basic viewer setup completed. See [getting started guide](../getting-started)
+
+## Steps
+
+### 1. Hide the Download and print button in the primary toolbar
+
+The viewer toolbar items are controlled by [`toolbarSettings.toolbarItems`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbarsettings#toolbaritems). Omit `DownloadOption` and `PrintOption` from that array to remove the Download and print button from the primary toolbar. See [primary toolbar customization](../toolbar-customization/primary-toolbar) for code examples.
+
+### 2. Block download with the `downloadStart` event
+
+The viewer raises the [`downloadStart`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#downloadstart) event whenever a download is initiated. Add an event handler and set `args.cancel = true` to block the operation regardless of how it was triggered (toolbar, API, or custom UI).
+
+### 3. Block print with the `printStart` event
+
+The viewer triggers the [`printStart`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#printstart) event whenever a print action is initiated. Attach an event handler to the event and set `args.cancel = true` to block the operation regardless of how it was triggered.
+
+**Complete Example**:
+
+The following is a complete, runnable React example that cancels every download or print attempt.
+
+{% tabs %}
+{% highlight ts tabtitle="App.tsx" %}
+{% raw %}
+import {
+ PdfViewerComponent, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
+ ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner,
+ PageOrganizer, Inject, Print
+} from '@syncfusion/ej2-react-pdfviewer';
+
+export default function App() {
+ const onDownloadStart = (args: any) => {
+ // Cancels every download attempt
+ args.cancel = true;
+ console.log('Download restricted.');
+ };
+ const onPrintStart = (args: any) => {
+ // Cancels every print attempt
+ args.cancel = true;
+ console.log('Print restricted.');
+ };
+
+ return (
+
+
+
+
+
+ );
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+**Expected result**:
+
+- Any programmatic or UI-triggered download attempts are canceled by the `downloadStart` handler; no file is downloaded.
+
+## Troubleshooting
+
+- If the Download or print button is still visible, remove `DownloadOption` and `PrintOption` from [`toolbarSettings.toolbarItems`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbarsettings#toolbaritems), and ensure no custom toolbar rendering inserts the Download control.
+
+- If downloads still occur despite the handler, confirm `downloadStart={onDownloadStart}` is present on `PdfViewerComponent` and that the handler sets `args.cancel = true`.
+
+- If print still occurs despite the handler, confirm `printStart={onPrintStart}` is present on `PdfViewerComponent` and that the handler sets `args.cancel = true`.
+
+## Related topics
+
+- [Customize primary toolbar](../toolbar-customization/primary-toolbar)
+- [`downloadStart` event reference](../events#downloadstart)
+- [`printStart` event reference](../events#printstart)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/security/secure-pdf-viewing.md b/Document-Processing/PDF/PDF-Viewer/react/security/secure-pdf-viewing.md
new file mode 100644
index 0000000000..ec78e82e2e
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/security/secure-pdf-viewing.md
@@ -0,0 +1,56 @@
+---
+layout: post
+title: Secure PDF Viewing in React Apps using PDF Viewer | Syncfusion
+description: Best practices for securing PDF content in React apps using the EJ2 React PDF Viewer and server-side processing.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Secure PDF Viewing in React Apps
+
+## Overview
+
+This page explains best practices for securing PDF content displayed in React applications using the EJ2 React PDF Viewer and server-side processing. It covers encryption, permission restrictions, redaction, preprocessing, and secure API usage.
+
+## Why Secure Viewing matters
+
+- Protects user privacy and compliance-sensitive data.
+- Reduces risk from hidden/metadata content and unauthorized copying or printing.
+- Limits liability when distributing PDFs to untrusted clients.
+
+## Common security guidelines
+
+This section outlines common security controls and how they interact with the viewer.
+
+- **Password protection**: Use user/owner passwords on PDFs. The viewer can open password-protected files when the password is provided at load time. Password-based encryption prevents opening without credentials. See [loading password protected PDFs](../document-handling/load-password-pdf) and [encrypting PDF documents](https://help.syncfusion.com/document-processing/pdf/pdf-library/net/working-with-security).
+
+- **Permission restrictions**: Set PDF permissions (copy, print) using Syncfusion PDF library. The viewer respects these permissions at display time but cannot enforce protections if the client receives an unprotected full file. See [prevent copy and print permissions](./prevent-copy-and-print)
+
+- **Redaction**: Permanently remove text, images, or regions at the document level on the server before delivering the file. Redaction produces a new PDF with the sensitive content removed. See [redacting sensitive content](../Redaction/overview)
+
+- **Preprocessing**: On the server, remove metadata, embedded files, hidden layers, form field values, JavaScript actions, and flatten form fields. Compress and linearize PDFs if needed. See [preprocessing PDFs](../document-handling/preprocess-pdf)
+
+## Design decisions and trade-offs
+
+- Client vs server enforcement: Client-side settings which disable disabling print in the viewer improve user experience but are not a security boundary. True protection requires server-side changes which actually enforces the restrictions (encryption, permissions, redaction).
+
+- Usability vs security: Strong encryption and sanitizing heavily can break some workflows (search, form interactivity). Choose operations appropriate to the document life cycle.
+
+- Redaction permanence: Redaction is irreversible; keep originals securely archived if needed for audit.
+
+## Best practices
+
+- Encrypt PDFs with strong passwords when they must remain unreadable without credentials.
+- Apply permission flags for copying/printing via server-side PDF library; treat viewer-side options as UX controls only.
+- Perform redaction on the server to permanently remove sensitive content.
+- Strip metadata, embedded files, comments, and JavaScript before serving.
+- Flatten form fields and sanitize form data when exporting public PDFs.
+- Use short-lived, authenticated URLs or a tokenized download endpoint rather than serving files from a public bucket.
+- Log access and apply rate limits and CORS policies on APIs that serve PDFs.
+
+## See also
+
+- [Prevent copy/print](./prevent-copy-and-print)
+- [Restrict download/print](./restricting-download-and-print)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/text-search.md b/Document-Processing/PDF/PDF-Viewer/react/text-search.md
index fbe49e3085..35e20c7a9b 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/text-search.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/text-search.md
@@ -7,9 +7,9 @@ platform: document-processing
documentation: ug
domainurl: ##DomainURL##
---
-# Text search in React Pdfviewer component
+# Text search in React PDF Viewer component
-The Text Search option in PDF Viewer is used to find and highlight the text content from the document. You can enable/disable the text search using the following code snippet.
+The Text Search feature finds and highlights text in the PDF document. You can enable or disable text search using the examples below.
{% tabs %}
{% highlight js tabtitle="Standalone" %}
@@ -77,30 +77,30 @@ root.render();
## Text search Features
-### Real time search suggestion while typing
-Entering text into the search input dynamically displays search suggestions based on the provided input. The suggestions are updated in real-time as text is typed, offering relevant matches from the available content. This feature enhances the search experience by allowing quick access to potential results while typing.
+### Real-time search suggestions while typing
+Entering text into the search input dynamically displays search suggestions based on the provided input. Suggestions update in real time as the user types, offering quick access to relevant matches.
-
+
-### Selecting Search Suggestions from the Popup
-Entering text into the search input triggers a popup displaying relevant suggestions based on the input. Selecting a suggestion from the popup enables direct navigation to its occurrences in the document.
+### Selecting search suggestions from the popup
+Selecting a suggestion from the popup navigates directly to its occurrences in the document.
-
+
-### Search Text with enabling 'Match Case' checkbox
-By enabling the 'Match Case' option and entering text into the search input, only the exact case-sensitive matches in the document are highlighted. This feature allows navigation through each occurrence of the exact text match within the document.
+### Case-sensitive search ('Match Case')
+When 'Match Case' is enabled, only exact case-sensitive matches are highlighted and navigable.
-
+
-### Search Text without enabling 'Match Case' checkbox
-When text is entered into the search input without enabling the 'Match Case' option, all instances of the text, regardless of case, are highlighted in the document. This allows easy navigation through every occurrence of the search term.
+### Case-insensitive search (no 'Match Case')
+When 'Match Case' is disabled, searches match text regardless of case and highlight all occurrences.
-
+
-### Search list of text by enabling 'Match Any Word' checkbox
-When the 'Match Any Word' option is enabled, the entered text in the search input is split into individual words based on spaces. As the text is typed, the popup dynamically displays search suggestions for each word in real time, highlighting potential matches within the document.
+### Match Any Word
+When 'Match Any Word' is enabled, the input is split into words and the viewer searches for any of the words, updating suggestions and matches in real time.
-
+
### Programmatic Search with Settings
@@ -110,6 +110,7 @@ While the PDF Viewer's toolbar provides a user-friendly way to search, you can a
The `searchText` method allows you to initiate a search with specific criteria.
+{% highlight ts %}
{% raw %}
import React, { useRef } from 'react';
import { PdfViewerComponent } from '@syncfusion/ej2-react-pdfviewer';
@@ -134,11 +135,13 @@ export default function SearchExample() {
);
}
{% endraw %}
+{% endhighlight %}
#### Match Case
To perform a case-sensitive search, set the `isMatchCase` parameter to `true`. This corresponds to the 'Match Case' checkbox in the search panel.
+{% highlight ts %}
{% raw %}
import React, { useEffect, useRef } from 'react';
import { PdfViewerComponent } from '@syncfusion/ej2-react-pdfviewer';
@@ -161,11 +164,13 @@ export default function MatchCaseExample() {
);
}
{% endraw %}
+{% endhighlight %}
#### Match Whole Word
You can search for whole words by setting the `isMatchWholeWord` parameter to `true`. When this is enabled, the search will only match occurrences where the search term is not part of a larger word. For example, a search for "view" will not match "viewer".
+{% highlight ts %}
{% raw %}
import React, { useEffect, useRef } from 'react';
import { PdfViewerComponent } from '@syncfusion/ej2-react-pdfviewer';
@@ -188,18 +193,19 @@ export default function WholeWordExample() {
);
}
{% endraw %}
+{% endhighlight %}
-**Note on 'Match Any Word':** The 'Match Any Word' checkbox in the UI is a feature that splits the input string into multiple words and performs a search for each of them. This is different from the `isMatchWholeWord` parameter of the `searchText` method, which enforces a whole-word match for the entire search string provided.
+**Note on 'Match Any Word':** The UI 'Match Any Word' option splits the input into multiple words and searches for any of them. This differs from the `isMatchWholeWord` parameter of `searchText`, which enforces a whole-word match for the entire search string.
-The following text search methods are available in the PDF Viewer,
+The following text search methods are available in the PDF Viewer:
-* [**Search text**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/textSearch/#searchtext):- Searches the target text in the PDF document and highlights the occurrences in the pages.
-* [**Search next**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/textSearch/#searchnext):- Searches the next occurrence of the searched text from the current occurrence of the PDF Viewer.
-* [**Search previous**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/textSearch/#searchprevious):- Searches the previous occurrence of the searched text from the current occurrence of the PDF Viewer.
-* [**Cancel text search**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/textSearch/#canceltextsearch):- The text search can be canceled and the highlighted occurrences from the PDF Viewer can be removed .
+- [**Search text**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/textSearch#searchtext): Searches the target text and highlights occurrences.
+- [**Search next**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/textSearch#searchnext): Navigates to the next occurrence.
+- [**Search previous**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/textSearch#searchprevious): Navigates to the previous occurrence.
+- [**Cancel text search**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/textSearch#canceltextsearch): Cancels the search and clears highlights.
-
+
## Find text method
Searches for the specified text or an array of strings within the document and returns the bounding rectangles for each occurrence. The search can be case-sensitive based on the provided parameters. If a specific page index is provided, it returns the bounding rectangles for these search strings on that page; otherwise, it returns the bounding rectangles for all pages in the document where the strings were found.
@@ -560,17 +566,19 @@ The PDF Viewer triggers events during text search operations, allowing you to cu
### textSearchStart
-The [textSearchStart](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#textsearchstartevent) event is raised the moment a search is initiated from the toolbar UI or by calling `textSearch.searchText(...)` programmatically.
+The [textSearchStart](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#textsearchstartevent) event is raised the moment a search is initiated from the toolbar UI or by calling `textSearch.searchText(...)` programmatically.
- Triggers when: the user submits a term in the search box or when code calls the search API.
-- Event arguments include ([TextSearchStartEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/textSearchStartEventArgs/)):
+- Event arguments include ([TextSearchStartEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/textSearchStartEventArgs)):
- searchText: string — the term to search.
- matchCase: boolean — whether case-sensitive search is enabled.
- isMatchWholeWord: boolean — whether whole-word matching is enabled.
- name: string — event name.
- cancel: boolean — set to true to cancel the default search.
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
{% raw %}
import React from 'react';
@@ -591,19 +599,23 @@ export default function App() {
);
}
{% endraw %}
+{% endhighlight %}
+{% endtabs %}
### textSearchHighlight
-The [textSearchHighlight](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#textsearchhighlightevent) event fires whenever an occurrence is highlighted during search or when navigating to next/previous results.
+The [textSearchHighlight](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#textsearchhighlightevent) event fires whenever an occurrence is highlighted during search or when navigating to next/previous results.
- Triggers when: a match is brought into view and highlighted (including navigation between matches).
-- Event arguments include ([TextSearchHighlightEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/textSearchHighlightEventArgs/)):
+- Event arguments include ([TextSearchHighlightEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/textSearchHighlightEventArgs)):
- bounds: RectangleBoundsModel | RectangleBoundsModel[] — rectangles of the highlighted match.
- pageNumber: number — page index where the match is highlighted.
- searchText: string — the searched term.
- matchCase: boolean — whether case-sensitive search was used.
- name: string — event name.
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
{% raw %}
import React from 'react';
@@ -623,23 +635,27 @@ export default function App() {
);
}
{% endraw %}
+{% endhighlight %}
+{% endtabs %}
### textSearchComplete
-The [textSearchComplete](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/#textsearchcompleteevent) event is raised after the search engine finishes scanning and resolving all matches for the current query.
+The [textSearchComplete](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer#textsearchcompleteevent) event is raised after the search engine finishes scanning and resolving all matches for the current query.
- Triggers when: the search for the submitted term has completed across the document.
- Typical uses:
- Update UI with the total number of matches and enable navigation controls.
- Hide loading indicators or show a "no results" message if none were found.
- Record analytics for search effectiveness.
-- Event arguments include ([TextSearchCompleteEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/textSearchCompleteEventArgs/)):
+- Event arguments include ([TextSearchCompleteEventArgs](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/textSearchCompleteEventArgs)):
- totalMatches: number — total number of occurrences found.
- isMatchFound: boolean — indicates whether at least one match was found.
- searchText: string — the searched term.
- matchCase: boolean — whether case-sensitive search was used.
- name: string — event name.
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
{% raw %}
import React from 'react';
@@ -659,6 +675,9 @@ export default function App() {
);
}
{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
## See also
* [Toolbar items](./toolbar)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/text-selection.md b/Document-Processing/PDF/PDF-Viewer/react/text-selection.md
index 0dc0f18349..de89365e9b 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/text-selection.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/text-selection.md
@@ -7,13 +7,13 @@ control: Text selection
documentation: ug
domainurl: ##DomainURL##
---
-# Text selection in React PDF Viewer control
+# Text selection in React PDF Viewer component
-The TextSelection module lets users highlight and copy text from the loaded PDF. Selection is enabled by default and can be configured or monitored programmatically to match application workflows.
+The Text Selection module lets users highlight and copy text from the loaded PDF. Text selection is enabled by default and can be configured or monitored programmatically to match application workflows.
## Enable or disable text selection
-Use the `enableTextSelection` property to enable or disable choosing text in the PDF Viewer.
+Use the `enableTextSelection` property to enable or disable text selection in the PDF Viewer.
```html
@@ -154,7 +154,7 @@ root.render();
## Text selection events
-Monitor user interaction with selection events to coordinate downstream actions such as showing tooltips, enabling context menus, or storing analytics.
+Monitor selection events to coordinate downstream actions such as showing tooltips, enabling context menus, or capturing analytics.
### textSelectionStart
diff --git a/Document-Processing/PDF/PDF-Viewer/react/theming-and-styling.md b/Document-Processing/PDF/PDF-Viewer/react/theming-and-styling.md
new file mode 100644
index 0000000000..796a3d86e8
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/theming-and-styling.md
@@ -0,0 +1,221 @@
+---
+layout: post
+title: Theming and styling in React PDF Viewer component | Syncfusion
+description: Learn how to apply built-in themes, configure dark mode, and customize the UI styles of the Syncfusion React PDF Viewer component.
+control: PDF Viewer
+platform: document-processing
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Theming and Styling in React PDF Viewer
+
+The React PDF Viewer supports a wide range of built-in themes and flexible UI customization to match your application's design.
+
+## Supported Themes
+
+The PDF Viewer applies styles to the toolbar, buttons, panels, annotations, and dialogs based on the selected theme. The available built-in Syncfusion themes are:
+
+* Material 3
+* Fluent 2
+* Bootstrap 5
+* Tailwind
+
+### How-to: Quick start
+
+**Step-1:** Create a PDF Viewer sample by following the [React PDF Viewer getting started guide](./getting-started).
+
+**Step-2:** To change the theme to tailwind, add the imports to tailwind theme in `app.css`.
+
+```css
+@import '../node_modules/@syncfusion/ej2-base/styles/tailwind3.css';
+@import '../node_modules/@syncfusion/ej2-buttons/styles/tailwind3.css';
+@import '../node_modules/@syncfusion/ej2-dropdowns/styles/tailwind3.css';
+@import '../node_modules/@syncfusion/ej2-inputs/styles/tailwind3.css';
+@import '../node_modules/@syncfusion/ej2-navigations/styles/tailwind3.css';
+@import '../node_modules/@syncfusion/ej2-popups/styles/tailwind3.css';
+@import '../node_modules/@syncfusion/ej2-splitbuttons/styles/tailwind3.css';
+@import "../node_modules/@syncfusion/ej2-pdfviewer/styles/tailwind3.css";
+```
+
+### Tutorial
+
+This short, guided walkthrough shows a minimal end-to-end customization flow:
+
+1. Create a new React app and install the viewer
+
+2. Add the Tailwind theme imports to your global CSS (see Quick start).
+
+3. Render the PDF Viewer in `src/App` and verify the default look.
+
+4. Add a theme switcher using the dark-mode logic in later shown in this file
+
+5. Add additional CSS rules under `.e-custom-style` and load it after the theme CSS, and verify appearance and accessibility.
+
+## Theming for Dark Mode
+
+To provide a better viewing experience in low-light environments, you can apply dark themes or allow users to switch between light and dark modes.
+
+### Apply Dark Theme
+
+You can initialize the PDF Viewer with a dark theme by referencing the corresponding CSS:
+
+* Material 3 Dark
+* Bootstrap 5 Dark
+* Fluent 2 Dark
+* Tailwind Dark
+* Fluent 2 High Contrast
+
+### Switch between Light and Dark Mode
+
+You can dynamically change the theme in your application to toggle between light and dark modes.
+
+N> Ensure the background color of the PDF container is also updated to a dark shade when switching to a dark theme to maintain visual consistency.
+
+#### How-to: Toggle Dark Mode
+
+Below is an approach that can be copied into the app that switches themes by dynamically changing the link referenced in the style sheet in the head section of the document.
+
+**Link-swap approach:**
+
+{% tabs %}
+{% highlight ts tabtitle="App.tsx" %}
+{% raw %}
+type ThemeName = 'material3' | 'material3-dark';
+const THEME_LINK_ID = 'e-current-theme';
+function applyTheme(theme: ThemeName) {
+ const path = `https://cdn.syncfusion.com/ej2/32.2.5/${theme}.css`;
+ let primaryThemeLink = document.querySelector(`#${THEME_LINK_ID}`) as HTMLLinkElement;
+ if (!primaryThemeLink) {
+ primaryThemeLink = document.createElement('link');
+ primaryThemeLink.id = THEME_LINK_ID;
+ primaryThemeLink.rel = 'stylesheet';
+ document.head.prepend(primaryThemeLink);
+ }
+ primaryThemeLink.href = path;
+}
+export function App() {
+ const [theme, setTheme] = useState('material3');
+ useEffect(() => {
+ applyTheme(theme);
+ }, [theme]);
+ // Simple memoized list for selector
+ const options = useMemo(
+ () => [
+ { value: 'material3', label: 'Material 3 (Light)' },
+ { value: 'material3-dark', label: 'Material 3 Dark' },
+ ],
+ []
+ );
+ return (
+
+
+
+
+
+
+
+
);
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+## Custom Styles
+
+While built-in themes provide a comprehensive look and feel, you might need to apply specific style overrides for your application.
+
+### Implementation Guidelines
+
+* **Load Order:** Always load the Syncfusion default theme CSS before applying any custom overrides.
+* **Custom Classes:** Prefer using `.e-custom-style` classes for overrides to ensure your styles are applied correctly without conflicting with internal logic.
+* **Avoid Deep Overrides:** Do not override internal classes deeply, as this may break the component's layout or responsiveness in future updates.
+
+#### How-to: Apply Custom Styles
+
+Apply overrides using a wrapper class so the rules are scoped and safe to maintain. The following example adds custom styles to signature form fields:
+
+{% tabs %}
+{% highlight css tabtitle="App.css" %}
+{% raw %}
+/* This rule sets a scoped, custom black background for the PDF viewer page container */
+.e-custom-style .e-pv-page-container {
+ background: #0b1220;
+}
+
+/* The following rules style the signature form fields with blue background. See screenshot below for more clarity */
+.e-custom-style .e-pdfviewer-signatureformfields,
+.e-custom-style .e-pdfviewer-signatureformfields-signature {
+ border: 1px solid #b3d1ff !important;
+ border-radius: 5px;
+}
+.e-custom-style span[id^='signIcon'] {
+ background-color: #e6f2ff !important;
+ border: 1px solid #b3d1ff !important;
+ border-radius: 4px !important;
+ font-weight: bold !important;
+ color: #003366 !important;
+ display: inline-block !important;
+ height: 100% !important;
+ text-align: center !important;
+}
+.e-custom-style span[id^='initialIcon'] {
+ background-color: #e6f2ff !important;
+ border: 1px solid #b3d1ff !important;
+ border-radius: 4px !important;
+ font-weight: bold !important;
+ color: #003366 !important;
+ display: inline-block !important;
+ height: 100% !important;
+ text-align: center !important;
+}
+{% endraw %}
+{% endhighlight %}
+{% highlight ts tabtitle="App.tsx" %}
+{% raw %}
+import './App.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 (
+
+
+
+
+
+ );
+}
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
+
+
+
+### Explanation
+
+This section explains the rationale behind the recommendations and common pitfalls:
+
+- Use a scoped wrapper class (for example `.e-custom-style`) to avoid fragile, global overrides that can break when internal selectors change.
+- Load order is important: theme CSS provides base variables and components' base rules; custom overrides must load after theme CSS to take effect reliably.
+- Prefer toggling theme files or a small root class rather than deep selector overrides when implementing dark mode — this makes switching simpler and reduces maintenance.
+- Avoid overusing `!important`; reserve it for third-party widgets or unavoidable form-field styling where the library applies strong specificity.
+- Always verify color-contrast and keyboard focus styles after applying themes or overrides to preserve accessibility.
+
+### Reference
+
+* [Theme Studio for Syncfusion® React components](https://ej2.syncfusion.com/react/documentation/appearance/theme-studio)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/toolbar-customization/annotation-toolbar.md b/Document-Processing/PDF/PDF-Viewer/react/toolbar-customization/annotation-toolbar.md
index f8855fb755..60553f1188 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/toolbar-customization/annotation-toolbar.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/toolbar-customization/annotation-toolbar.md
@@ -1,199 +1,135 @@
---
layout: post
-title: Annotation Toolbar in React PDF viewer control | Syncfusion
-description: Learn here all about annotation toolbar customization in Syncfusion React PDF viewer control of Syncfusion Essential JS 2 and more.
+title: Customize the Annotation Toolbar in React PDF Viewer | Syncfusion
+description: Show or hide and customize the annotation toolbar in the EJ2 React PDF Viewer with runnable examples.
platform: document-processing
-control: PDF Viewer
+control: PDF Viewer
documentation: ug
domainurl: ##DomainURL##
---
-# Annotation Toolbar Customization in React
+# Customize the Annotation Toolbar in React PDF Viewer
-The annotation toolbar can be customized by showing or hiding default items and by controlling the order in which they appear.
+## Overview
-## Show or hide the annotation toolbar
+This guide shows how to show or hide the annotation toolbar and how to choose which tools appear and their order.
-Show or hide the annotation toolbar programmatically during initialization or at runtime.
+**Outcome:** A working React example that toggles the annotation toolbar and uses [`annotationToolbarItems`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbarsettings#annotationtoolbaritems) to customize the toolbar.
-Use the [EnableAnnotationToolbar](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/pdfViewerModel/#enableannotationtoolbar) property or the [showAnnotationToolbar](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbar/#showannotationtoolbar) method to toggle visibility.
+## Prerequisites
-The following code snippet explains how to show or hide the annotation toolbar using the `showAnnotationToolbar` method.
+- EJ2 React PDF Viewer installed and added in your project. See [getting started guide](../getting-started)
+- A valid [`resourceUrl`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#resourceurl) or [`serviceUrl`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#serviceurl) for viewer assets when running locally
-{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
-import * as React from 'react';
-import * as ReactDOM from 'react-dom';
-import { PdfViewerComponent, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
- ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-react-pdfviewer';
-
-PdfViewerComponent.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView,
- BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
-
-const App = () => {
- let pdfviewer;
-
- React.useEffect(() => {
- const buttonElement = document.getElementById('showAnnotationToolbar');
- const handleClick = () => {
- if (pdfviewer) {
- pdfviewer.toolbar.showAnnotationToolbar(false);
- }
- };
- buttonElement?.addEventListener('click', handleClick);
- return () => buttonElement?.removeEventListener('click', handleClick);
- }, []);
+## Steps
- return (
-
-
+### 1. Show or hide the annotation toolbar
+
+Use the [`showAnnotationToolbar`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbar#showannotationtoolbar) method on the viewer toolbar to control visibility.
+
+{% tabs %}
+{% highlight ts tabtitle="App.tsx" %}
+{% raw %}
+const viewer: RefObject = useRef(null);
+const [show, setShow] = useState(true);
+const hideToolbar = () => {
+ viewer.current.toolbar.showAnnotationToolbar(show);
+ setShow(!show);
+};
+return (
+
-
-
-
+);
+{% endraw %}
{% endhighlight %}
{% endtabs %}
-## How to customize the annotation toolbar
+### 2. Show or hide annotation toolbar items
-Choose which tools appear and control their order in the annotation toolbar.
+Use [`annotationToolbarItems`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbarsettings#annotationtoolbaritems) with a list of [`AnnotationToolbarItem`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotationtoolbaritem) values. The toolbar shows only items in this list.
-Use [`PdfViewerToolbarSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbarSettings/) with the [`AnnotationToolbarItems`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbarSettings/#annotationtoolbaritems) property to choose which tools are displayed in the annotation toolbar. The property accepts a list of [`AnnotationToolbarItem`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotationToolbarItem/) values. Only the items included in this list are shown; any item not listed is hidden. The rendered order follows the sequence of items in the list.
+{% tabs %}
+{% highlight ts tabtitle="App.tsx" %}
+{% raw %}
+const annotationToolbarItems: AnnotationToolbarItem[] = [
+ 'HighlightTool', 'UnderlineTool', 'StrikethroughTool', 'ColorEditTool', 'OpacityEditTool', 'AnnotationDeleteTool', 'CommentPanelTool'
+];
+
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
-The annotation toolbar is presented when entering annotation mode in PDF Viewer and adapts responsively based on the available width. Include the Close tool to allow users to exit the annotation toolbar when needed.
+**Complete example**
-The following example demonstrates how to customize the annotation toolbar by specifying a selected set of tools using `AnnotationToolbarItem`.
+The following is a complete, runnable example. It wires a toggle button and a viewer with a custom annotation toolbar list.
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
-import * as React from 'react';
-import * as ReactDOM from 'react-dom';
-import { PdfViewerComponent, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
- ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AnnotationToolbarItem } from '@syncfusion/ej2-react-pdfviewer';
-
-PdfViewerComponent.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView,
- BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
-
-const App = () => {
- let pdfviewer;
- const annotationToolbarItems = [
- "HighlightTool",
- "UnderlineTool",
- "StrikethroughTool",
- "ColorEditTool",
- "OpacityEditTool",
- "AnnotationDeleteTool",
- "StampAnnotationTool",
- "HandWrittenSignatureTool",
- "InkAnnotationTool",
- "ShapeTool",
- "CalibrateTool",
- "StrokeColorEditTool",
- "ThicknessEditTool",
- "FreeTextAnnotationTool",
- "FontFamilyAnnotationTool",
- "FontSizeAnnotationTool",
- "FontStylesAnnotationTool",
- "FontAlignAnnotationTool",
- "FontColorAnnotationTool",
- "CommentPanelTool"
- ];
-
+{% highlight ts tabtitle="App.tsx" %}
+{% raw %}
+import { useRef, RefObject, useState } from 'react';
+import {
+ PdfViewerComponent, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
+ ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner,
+ AnnotationToolbarItem, PageOrganizer, Inject
+} from '@syncfusion/ej2-react-pdfviewer';
+const annotationToolbarItems: AnnotationToolbarItem[] = [
+ 'HighlightTool', 'UnderlineTool', 'StrikethroughTool', 'ColorEditTool', 'OpacityEditTool', 'AnnotationDeleteTool', 'CommentPanelTool'
+];
+export default function App() {
+ const viewer: RefObject = useRef(null);
+ const [show, setShow] = useState(true);
+ const hideToolbar = () => {
+ viewer.current.toolbar.showAnnotationToolbar(show);
+ setShow(!show);
+ };
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"
- height="500px"
- width="100%"
- toolbarSettings={{ annotationToolbarItems }}
- />
+
-
-
-
+{% endraw %}
{% endhighlight %}
{% endtabs %}
+
+## Troubleshooting
+
+- Annotation toolbar tools do not appear.
+ - **Cause**: The items are not valid [`AnnotationToolbarItem`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotationtoolbaritem) strings or the viewer is not injected with [`Annotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotation) / [`Toolbar`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbar) modules.
+ - **Solution**: Confirm services in `Inject` includes [`Toolbar`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbar) and [`Annotation`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/annotation) and use valid item names.
+
+## Related topics
+
+- [Customize form designer toolbar](./form-designer-toolbar)
+- [customize primary toolbar](./primary-toolbar)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/toolbar-customization/custom-toolbar.md b/Document-Processing/PDF/PDF-Viewer/react/toolbar-customization/custom-toolbar.md
index cb6b70d285..2e8a38c9ce 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/toolbar-customization/custom-toolbar.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/toolbar-customization/custom-toolbar.md
@@ -1,6 +1,6 @@
---
layout: post
-title: Custom Toolbar in React PDF Viewer Component | Syncfusion
+title: Create a custom toolbar in React PDF Viewer Component | Syncfusion
description: Learn here all about custom toolbar in Syncfusion React PDF Viewer component of Syncfusion Essential JS 2 and more.
control: PDF Viewer
platform: document-processing
@@ -8,151 +8,139 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Custom Toolbar in React PDF Viewer
+# Create a custom toolbar in React PDF Viewer
-The PDF Viewer provides APIs for user interaction options available in its built-in toolbar. Using these, you can create your own custom user interface for toolbar actions at the application level by hiding the default toolbar.
+The PDF Viewer provides APIs for the user interaction options available in its built-in toolbar. Using these APIs, a custom application-level toolbar can be created by hiding the default toolbar and adding Syncfusion EJ2 toolbar components.
Follow these steps to create a custom toolbar for the PDF Viewer:
**Step 1: Create a simple PDF Viewer sample.**
-Follow the steps provided in the [getting started](https://ej2.syncfusion.com/javascript/documentation/pdfviewer/getting-started/) guide to create a basic PDF Viewer sample.
+Create a simple PDF Viewer sample by following the [getting started](https://ej2.syncfusion.com/react/documentation/pdfviewer/getting-started) guide.
**Step 2: Add HTML elements for the custom toolbar.**
{% tabs %}
{% highlight js tabtitle="Standalone" %}
{% raw %}
-
- render() {
- function template() {
- return (
-
+ );
+ }
}
+{% endraw %}
+{% endhighlight %}
-```
+Sample: [https://document.syncfusion.com/demos/pdf-viewer/react/#/tailwind3/pdfviewer/custom-toolbar](https://document.syncfusion.com/demos/pdf-viewer/react/#/tailwind3/pdfviewer/custom-toolbar)
-Sample :
-[https://document.syncfusion.com/demos/pdf-viewer/react/#/tailwind3/pdfviewer/custom-toolbar]
## See also
-* [Feature Modules](./feature-module)
+* [Feature Modules](./feature-module)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/toolbar-customization/form-designer-toolbar.md b/Document-Processing/PDF/PDF-Viewer/react/toolbar-customization/form-designer-toolbar.md
index 63e9af5b05..246d0a031f 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/toolbar-customization/form-designer-toolbar.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/toolbar-customization/form-designer-toolbar.md
@@ -1,170 +1,141 @@
---
layout: post
-title: Form Designer Toolbar in React PDF Viewer Component | Syncfusion
-description: Learn here all about form designer toolbar customization in Syncfusion React PDF Viewer component of Syncfusion Essential JS 2 and more.
+title: Customize the Form Designer Toolbar in React PDF Viewer | Syncfusion
+description: Learn how to show or hide and customize the Form Designer toolbar in the Syncfusion EJ2 React PDF Viewer.
platform: document-processing
control: PDF Viewer
documentation: ug
domainurl: ##DomainURL##
---
-# Form Designer Toolbar Customization in React
+# Customize the Form Designer Toolbar in React PDF Viewer
-The form designer toolbar can be customized by showing or hiding default items and by controlling the order in which the items appear.
+## Overview
-## Show or hide the form designer toolbar
+This guide shows how to show or hide the form designer toolbar, and how to configure which tools appear and their order.
-Show or hide the form designer toolbar programmatically during initialization or at runtime.
+**Outcome**: a working React example customizing the form designer toolbar.
-Use the [EnableFormDesigner](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/pdfViewerModel/#enableformdesigner) property or the [showFormDesignerToolbar](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbar/#showformdesignertoolbar) method to toggle visibility.
+## Prerequisites
-The following code snippet explains how to show or hide the toolbar using the `EnableFormDesigner` property.
+- EJ2 React PDF Viewer installed and added in project. See [getting started guide](../getting-started)
+- If using standalone WASM mode, provide [`resourceUrl`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#resourceurl) or a [`serviceUrl`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#serviceurl) for server mode.
-{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
-import React, { useRef } from 'react';
-import { PdfViewerComponent, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
- ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, Inject } from '@syncfusion/ej2-react-pdfviewer';
+## Steps
+
+### 1. Show or hide Form Designer toolbar at initialization
-const App = () => {
- let pdfviewer;
+Set the [`isFormDesignerToolbarVisible`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#isformdesignertoolbarvisible) property on PDF Viewer instance to `true` or `false` to control initial visibility.
+{% tabs %}
+{% highlight ts tabtitle="App.tsx" %}
+{% raw %}
+import React from 'react';
+import { PdfViewerComponent, Toolbar, FormDesigner, Inject } from '@syncfusion/ej2-react-pdfviewer';
+export default function App() {
return (
{ pdfviewer = scope; }}
id="PdfViewer"
- enableFormDesigner={false}
+ isFormDesignerToolbarVisible={true}
documentPath="https://cdn.syncfusion.com/content/pdf/form-designer.pdf"
resourceUrl="https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib"
- style={{ height: '500px', width: '100%' }}
- >
+ style={{ height: '500px', width: '100%' }}>
);
-};
-
-export default App;
-
-{% endhighlight %}
-{% highlight html tabtitle="index.html" %}
-
-
-
-
-
- EJ2 PDF Viewer
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Loading....
-
-
-
-
-
-
+}
+{% endraw %}
{% endhighlight %}
{% endtabs %}
-## How to customize the form designer toolbar
+### 2. Show or hide form designer toolbar at runtime
-Choose which tools appear and control their order in the form designer toolbar.
+Use the [`isFormDesignerToolbarVisible`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#isformdesignertoolbarvisible) API on the viewer's instance on a custom method to toggle form designer visibility at runtime.
-Use [`PdfViewerToolbarSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbarSettings/) with the [`FormDesignerToolbarItems`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbarSettings/#formdesignertoolbaritems) property to choose which form design tools are available. The property accepts a list of [`FormDesignerToolbarItem`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formDesignerToolbarItem/) values. The items you include are both displayed and rendered in the order listed; any items you omit are hidden. This provides a streamlined, user-friendly form design experience across devices.
+{% highlight ts %}
+{% raw %}
+pdfviewer.isFormDesignerToolbarVisible = true;
+{% endraw %}
+{% endhighlight %}
+
+### 3. Show or hide form designer toolbar items
-The following example demonstrates how to customize the form designer toolbar by configuring specific tools using `FormDesignerToolbarItem`.
+Use [`formDesignerToolbarItems`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbarsettings#formdesignertoolbaritems) and supply an ordered array of [`FormDesignerToolbarItem`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formdesignertoolbaritem) names.
{% tabs %}
-{% highlight ts tabtitle="index.ts" %}
-import React, { useRef } from 'react';
-import { PdfViewerComponent, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
- ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, Inject } from '@syncfusion/ej2-react-pdfviewer';
+{% highlight ts tabtitle="App.tsx" %}
+{% raw %}
+
+
+{% endraw %}
+{% endhighlight %}
+{% endtabs %}
-const App = () => {
- let pdfviewer;
+**Complete example:**
+{% tabs %}
+{% highlight ts tabtitle="App.tsx" %}
+{% raw %}
+import { RefObject, useRef, useState } from 'react';
+import {
+ PdfViewerComponent, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
+ ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, Inject
+} from '@syncfusion/ej2-react-pdfviewer';
+
+export default function App() {
+ const viewer: RefObject = useRef(null);
+ const [show, setShow] = useState(true);
+ const hideFormDesignerToolbar = () => {
+ viewer.current.isFormDesignerToolbarVisible = !show;
+ setShow(!show);
+ }
return (
- { pdfviewer = scope; }}
- id="PdfViewer"
- documentPath="https://cdn.syncfusion.com/content/pdf/form-designer.pdf"
- resourceUrl="https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib"
- toolbarSettings={{
- formDesignerToolbarItems: [
- 'TextboxTool',
- 'PasswordTool',
- 'CheckBoxTool',
- 'RadioButtonTool',
- 'DropdownTool',
- 'ListboxTool',
- 'DrawSignatureTool',
- 'DeleteTool'
- ]
- }}
- style={{ height: '500px', width: '100%' }}
- >
-
-
+
-
-
+- The form designer toolbar appears (or is hidden) according to [`isFormDesignerToolbarVisible`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#isformdesignertoolbarvisible).
+- Only the listed tools appear.
-{% endhighlight %}
-{% endtabs %}
+## Troubleshooting
+
+- Toolbar or form designer tools do not appear.
+ - **Cause**: [`FormDesigner`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formdesigner) or [`Toolbar`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbar) service not injected.
+ - **Solution**: ensure [`FormDesigner`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/formdesigner) and [`Toolbar`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbar) modules are injected to PDF Viewer.
+
+## Related topics
+
+- [Primary toolbar customization](./primary-toolbar)
+- [Annotation toolbar customization](./annotation-toolbar)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/toolbar-customization/mobile-toolbar.md b/Document-Processing/PDF/PDF-Viewer/react/toolbar-customization/mobile-toolbar.md
index 3c127a6aa9..bf6c2b05a9 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/toolbar-customization/mobile-toolbar.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/toolbar-customization/mobile-toolbar.md
@@ -1,185 +1,93 @@
---
layout: post
-title: Mobile Toolbar Interface in React Pdfviewer control | Syncfusion
-description: Learn All About the Mobile Toolbar Interface in Syncfusion React Pdfviewer control of Syncfusion Essential JS 2 and more.
+title: Customize mobile Toolbar in React PDF Viewer | Syncfusion
+description: Learn how to customize the toolbar for mobile devices in the Syncfusion React PdfViewer and ensure smooth touch interactions.
platform: document-processing
control: PDF Viewer
documentation: ug
domainurl: ##DomainURL##
---
-# Mobile Toolbar Interface in React Pdfviewer control
-The Mobile PDF Viewer offers a variety of features for viewing, searching, annotating, and managing PDF documents on mobile devices. It includes essential tools like search, download, bookmarking, annotation, and page organization. Users also have the option to enable desktop toolbar features in mobile mode, providing a more extensive set of actions.
+# Customize mobile toolbar in React PdfViewer
-## Mobile Mode Toolbar Configuration
-In mobile mode, the toolbar is optimized for ease of use on small screens, presenting users with the most common actions for interacting with a PDF document. Below are the key features available in mobile mode:
+## Overview
-
+This how-to explains how to enable the desktop toolbar on mobile devices running the Syncfusion React PDF Viewer, and how to preserve touch scrolling when the desktop toolbar is used.
-### Main Toolbar Options:
+## Prerequisites
-**OpenOption:** Tap to load a PDF document.
+- EJ2 React PDF Viewer installed and imported in your React app.
+- For standalone mode: a valid [`resourceUrl`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#resourceurl) hosting the PDF Viewer assets.
+- For server-backed mode: a working [`serviceUrl`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#serviceurl) endpoint.
-**SearchOption:** Access the search bar to find text within the document.
+## Steps
-
+**Step 1:** Enable desktop toolbar on mobile: set [`enableDesktopMode`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#enabledesktopmode) to `true` on PDF Viewer.
-**UndoRedoTool:** Quickly undo or redo any annotations made.
+**Step 2:** (Optional, recommended) Disable text-selection to preserve smooth touch scrolling: set [`enableTextSelection`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#enabletextselection) to `false`.
-**OrganizePagesTool:** Enable or disable page organization features to modify document pages.
+**Step 3:** Inject the [`Toolbar`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbar) and other services required by your toolbar features via `Inject`.
-
-
-**AnnotationEditTool:** Activate or deactivate annotation editing to add or modify annotations.
-
-
-
-
-N> In mobile mode, the annotation toolbar is conveniently displayed at the bottom of the viewer.
-
-### More Options Menu:
-When you open the "more options" menu, you will see additional actions such as:
-
-**DownloadOption:** Tap to download the currently opened PDF document.
-
-**BookmarkOption:** Allows you to view bookmarks within the document.
-
-
-
-## Enabling Desktop Mode in Mobile
-
-The desktop version of the toolbar can be enabled on mobile devices by using the `enableDesktopMode` API. This API allows you to bring desktop-like features to the mobile PDF viewer, providing access to additional toolbar actions that are typically available on desktop platforms.
-
-### Steps to Enable Desktop Mode:
-
-**Step 1:** Set `enableDesktopMode` to true in the API configuration.
-
-**Step 2:** This will replace the mobile toolbar with the desktop toolbar layout, allowing access to more actions and controls.
-
-{% tabs %}
-{% highlight ts tabtitle="Standalone" %}
-
-import React from 'react';
-import { PdfViewerComponent, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
-
-function App() {
- let pdfviewer;
- return (
-
- );
-}
-
-export default App;
-
-{% endhighlight %}
-{% endtabs %}
-
-## Enable Scrolling in Desktop Mode with Touch Gestures
-
-To ensure smooth scrolling of PDF documents on a mobile device in desktop mode, it is important to enable touch gesture scrolling. You can achieve this by setting the `enableTextSelection` option to **false**.
+**Example:**
{% tabs %}
{% highlight ts tabtitle="Standalone" %}
-
-import React from 'react';
-import { PdfViewerComponent, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, Inject } from '@syncfusion/ej2-react-pdfviewer';
-
-function App() {
- let pdfviewer;
- return (
-
+ );
}
-
-export default App;
-
+{% endraw %}
{% endhighlight %}
{% endtabs %}
-## Print Option Not Available
-
-The Print option is not available in mobile mode by default. However, if you need to use the print functionality on mobile devices, we recommend enabling the desktop toolbar on mobile using the `enableDesktopMode` API.
-
-### How to Use Print on Mobile:
+## Troubleshooting
-**Enable Desktop Mode:** Set `enableDesktopMode` to true to load the desktop version of the toolbar on your mobile device.
+- Print option not visible on mobile: set [`enableDesktopMode`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#enabledesktopmode) to `true`; otherwise the mobile toolbar omits Print.
+- Touch scrolling is jerky after enabling desktop toolbar: set [`enableTextSelection`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#enabletextselection) to `false` to avoid text-selection capturing touch events.
+- Missing assets or broken UI: confirm [`resourceUrl`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#resourceurl) points to the correct version of the `ej2-pdfviewer-lib` and is reachable from the device.
+- Server errors in server-backed mode: verify [`serviceUrl`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#serviceurl) CORS configuration and that the back end is running.
-**Print Option:** Once desktop mode is enabled, the print option will be available, allowing you to print the document directly from your mobile device.
+## Related topics
-N> In mobile mode, the print functionality will not be available unless desktop mode is enabled.
\ No newline at end of file
+- [Customize form designer toolbar](./form-designer-toolbar)
+- [Customize annotation toolbar](./annotation-toolbar)
+- [Create a custom toolbar](./custom-toolbar)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/toolbar-customization/overview.md b/Document-Processing/PDF/PDF-Viewer/react/toolbar-customization/overview.md
new file mode 100644
index 0000000000..83cc05ee2e
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/react/toolbar-customization/overview.md
@@ -0,0 +1,72 @@
+---
+layout: post
+title: Toolbar in React PDF Viewer component | Syncfusion
+description: Learn here about various toolbars in Syncfusion React PDF Viewer component of Syncfusion Essential JS 2 and more.
+control: PDF Viewer
+platform: document-processing
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Toolbar overview in React PDF Viewer
+
+## Overview
+
+This page provides a concise reference describing the toolbars available in the EJ2 React PDF Viewer component. It also explains what each toolbar is for and when it appears.
+
+**Scope**: covers available toolbars and their functions.
+
+## List of Available Toolbars
+
+- [Primary toolbar](#primary-toolbar)
+- [Annotation toolbar](#annotation-toolbar)
+- [Form Designer toolbar](#form-designer-toolbar)
+- [Mobile toolbar](#mobile-toolbar)
+- [Custom toolbar](./custom-toolbar)
+
+## Functional overview of each toolbar
+
+### Primary toolbar
+
+The primary toolbar presents core viewer actions such as open/load, page navigation, zoom controls, and print. It appears in standard desktop layouts and at the top of the viewer when `Toolbar` service is injected. Typical actions: page forward/back, zoom in/out, fit-to-page, print.
+
+
+
+### Annotation toolbar
+
+The annotation toolbar surfaces annotation-related tools for adding, editing, and deleting annotations (text markup, shapes, stamps). It appears when annotation services are enabled and when a user opens annotation mode. Typical actions: highlight, underline, draw shape, add sticky note, delete annotation.
+
+
+
+### Form Designer toolbar
+
+Form designer toolbar provides form-field authoring controls used when designing or editing form fields inside a PDF. It appears when `FormDesigner` is enabled (design mode) and contains actions for adding form field controls.
+
+
+
+### Mobile toolbar
+
+- A compact toolbar layout optimized for small screens and touch interactions. It appears automatically on mobile-sized view ports (or when a mobile layout is explicitly chosen) and contains the most frequently used actions in a space-efficient arrangement.
+
+ 
+
+- Annotation toolbar in mobile mode appears at the bottom of the PDF Viewer component.
+
+ 
+
+## Show or hide toolbar items
+
+The following quick links describe how to customize, show, or hide specific toolbar items. Each linked page defines custom toolbar configurations and examples.
+
+- [Show or hide annotation toolbar items](./annotation-toolbar#2-show-or-hide-annotation-toolbar-items)
+- [Show or hide form designer toolbar items](./form-designer-toolbar#3-show-or-hide-form-designer-toolbar-items)
+- [Show or hide primary toolbar items](./primary-toolbar#3-show-or-hide-primary-toolbar-items)
+- [Add a custom primary toolbar item](./primary-toolbar#4-add-a-custom-primary-toolbar-item)
+
+## Further Reading
+
+- [Customize annotation toolbar](./annotation-toolbar)
+- [Customize form designer toolbar](./form-designer-toolbar)
+- [Customize mobile toolbar](./mobile-toolbar)
+- [Customize primary toolbar](./primary-toolbar)
+- [Create a custom toolbar](./custom-toolbar)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/toolbar-customization/primary-toolbar.md b/Document-Processing/PDF/PDF-Viewer/react/toolbar-customization/primary-toolbar.md
index 635e2a9651..81b31c321c 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/toolbar-customization/primary-toolbar.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/toolbar-customization/primary-toolbar.md
@@ -1,154 +1,161 @@
---
layout: post
-title: Primary Toolbar Customization in React PDF Viewer Component | Syncfusion
-description: Learn here all about primary toolbar customization in Syncfusion React PDF Viewer component of Syncfusion Essential JS 2 and more.
+title: Customize the Primary Toolbar in React PDF Viewer | Syncfusion
+description: Learn how to show or hide, reorder, and add items to the primary toolbar in the Syncfusion EJ2 React PDF Viewer.
platform: document-processing
control: PDF Viewer
documentation: ug
domainurl: ##DomainURL##
---
-# Primary Toolbar Customization in PDF Viewer Component
+# Customize Primary Toolbar in React PDF Viewer
-The primary toolbar of the PDF Viewer can be customized by rearranging existing items, disabling default items, and adding custom items. New items can be placed at specific index positions among the existing items.
+## Overview
-## Show or hide the primary toolbar
+This guide explains how to show or hide the primary toolbar, remove default items, and add custom toolbar items.
-Toggle the built-in primary toolbar to create custom toolbar experiences or simplify the UI. In scenarios where a custom toolbar is required, the built-in toolbar can be hidden. Use the [enableToolbar](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/pdfViewerModel/#enabletoolbar) property or the [showToolbar](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbar/#showtoolbar) method to show or hide the primary toolbar.
+**Outcome**: Working React example customizing the primary toolbar.
-Show or hide the toolbar using the `enableToolbar` property:
+## Prerequisites
+
+- EJ2 React PDF Viewer installed and added in project. See [getting started guide](../getting-started)
+
+## Steps
+
+### 1. Show or hide primary toolbar at initialization
+
+Set [`enableToolbar`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#enabletoolbar) to `false` to hide the built-in toolbar.
{% tabs %}
-{% highlight ts tabtitle="index.tsx" %}
-import React, { useRef } from 'react';
+{% highlight ts tabtitle="App.tsx" %}
+{% raw %}
+import React from 'react';
import { PdfViewerComponent, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, Inject } from '@syncfusion/ej2-react-pdfviewer';
-function App() {
- let pdfviewer;
-
- return (
- { pdfviewer = scope; }}
- enableToolbar={false}
- 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%' }}
- >
-
-
- );
+export default function App() {
+ return (
+
+
+
+ );
}
-
-export default App;
-{% endhighlight %}
-{% highlight html tabtitle="index.html" %}
-
-
-
-
-
- EJ2 PDF Viewer
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Loading....
-
-
-
-
-
-
+{% endraw %}
{% endhighlight %}
{% endtabs %}
-The following code snippet explains how to show or hide the toolbar using the `showToolbar` method.
+### 2. Show or hide primary toolbar at runtime
-{% tabs %}
-{% highlight ts tabtitle="index.tsx" %}
-import React, { useEffect, useRef } from 'react';
-import { PdfViewerComponent, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, Inject } from '@syncfusion/ej2-react-pdfviewer';
+Use the viewer's [`showToolbar()`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbar#showtoolbar) method to show or hide dynamically.
-function App() {
- let pdfviewer;
+```ts
+// with a ref named pdfviewer
+pdfviewer.toolbar.showToolbar(false);
+```
- useEffect(() => {
- const btn = document.getElementById('set');
- const handler = () => {
- pdfviewer?.toolbar.showToolbar(false);
- };
- btn?.addEventListener('click', handler);
- return () => btn?.removeEventListener('click', handler);
- }, []);
-
- 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"
- style={{ height: '500px', width: '100%' }}
- >
-
-
- );
-}
+### 3. Show or hide primary toolbar items
+
+Provide the [`toolbarItems`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbarsettings#toolbaritems) array with the exact set and order of items you want to show. Any item omitted is hidden.
-export default App;
+{% highlight ts %}
+{% raw %}
+
+{% endraw %}
{% endhighlight %}
-{% highlight html tabtitle="index.html" %}
-
-
-
-
-
- EJ2 PDF Viewer
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Loading....
-
-
-
-
-
-
+### 4. Add a custom primary toolbar item
+
+Add a custom item by including an object in [`toolbarItems`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbarsettings#toolbaritems) and handling its action via [`toolbarClick`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#toolbarclick). The following example shows adding a simple custom button at initialization.
+
+{% highlight ts %}
+{% raw %}
+const customItems: (CustomToolbarItem | ToolbarItem)[] = [
+ 'OpenOption',
+ {
+ id: 'custom_btn',
+ text: 'Fit to Width',
+ align: 'Center'
+ } as CustomToolbarItem,
+ 'DownloadOption'
+];
+
+{% endraw %}
+{% endhighlight %}
+
+**Complete example:**
+
+{% tabs %}
+{% highlight ts tabtitle="App.tsx" %}
+{% raw %}
+import { useRef, RefObject, useState } from 'react';
+import { PdfViewerComponent, Toolbar, Inject, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSearch, TextSelection, FormFields, FormDesigner, PageOrganizer, CustomToolbarItem, ToolbarItem } from '@syncfusion/ej2-react-pdfviewer';
+import { ClickEventArgs } from '@syncfusion/ej2-react-navigations';
+
+export function App() {
+ const pdfviewerRef: RefObject = useRef(null);
+ const buttonRef: RefObject = useRef(null);
+ const [showTool, setShowTool] = useState(false);
+ const handler = () => {
+ const temp: boolean = showTool;
+ pdfviewerRef.current?.toolbar.showToolbar(temp);
+ setShowTool(!temp);
+ }
+ const handleToolbarClick = (event: ClickEventArgs) => {
+ if (event.item.id === 'custom_btn') {
+ handleFitToWidth();
+ }
+ }
+ const handleFitToWidth = () => pdfviewerRef.current?.magnification.fitToWidth();
+ const toolbarItems: (CustomToolbarItem | ToolbarItem)[] = [
+ 'OpenOption',
+ {
+ id: 'custom_btn',
+ text: 'Fit to Width',
+ align: 'Center'
+ } as CustomToolbarItem,
+ 'DownloadOption'
+ ];
+ return (
+
+
+
+
+
+
+ );
+}
+{% endraw %}
{% endhighlight %}
{% endtabs %}
+
+## Expected result
+
+- The primary toolbar shows only the items you list in [`toolbarItems`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbarsettings#toolbaritems).
+- Clicking `Hide toolbar` calls [`showToolbar(false)`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbar#showtoolbar) and hides or shows the toolbar at runtime.
+
+## Troubleshooting
+
+- Toolbar still shows all default items.
+ - **Solution**: [`toolbarItems`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbarsettings#toolbaritems) must be supplied exactly; verify names and that [`Toolbar`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbar) service is injected.
+
+## Related topics
+
+- [Annotation toolbar customization](./annotation-toolbar)
+- [Form designer toolbar customization](./form-designer-toolbar)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/toolbar.md b/Document-Processing/PDF/PDF-Viewer/react/toolbar.md
deleted file mode 100644
index 1a32f09770..0000000000
--- a/Document-Processing/PDF/PDF-Viewer/react/toolbar.md
+++ /dev/null
@@ -1,975 +0,0 @@
----
-layout: post
-title: Toolbar in React Pdfviewer component | Syncfusion
-description: Learn here all about Toolbar in Syncfusion React Pdfviewer component of Syncfusion Essential JS 2 and more.
-control: Toolbar
-platform: document-processing
-documentation: ug
-domainurl: ##DomainURL##
----
-
-# Built-In Toolbar in React Pdfviewer component
-
-The PDF Viewer comes with a powerful built-in toolbar to execute important actions such as page navigation, text search,view mode,download,print,bookmark, and thumbnails.
-
-The following table shows built-in toolbar items and its actions:-
-
-| Option | Description |
-|---|---|
-| OpenOption | This option provides an action to load the PDF documents to the PDF Viewer.|
-| PageNavigationTool | This option provides an action to navigate the pages in the PDF Viewer. It contains GoToFirstPage,GoToLastPage,GotoPage,GoToNext, and GoToLast tools.|
-| MagnificationTool |This option provides an action to magnify the pages either with predefined or user defined zoom factors in the PDF Viewer. Contains ZoomIn, ZoomOut, Zoom, FitPage and FitWidth tools|
-| PanTool | This option provides an action for panning the pages in the PDF Viewer.|
-| SelectionTool | This option provides an action to enable/disable the text selection in the PDF Viewer.|
-| SearchOption | This option provides an action to search a word in the PDF documents.|
-| PrintOption | This option provides an action to print the PDF document being loaded in the PDF Viewer.|
-| DownloadOption |This Download option provides an action to download the PDF document that has been loaded in the PDF Viewer.|
-| UndoRedoTool | This tool provides options to undo and redo the annotation actions performed in the PDF Viewer.|
-| AnnotationEditTool | This tool provides options to enable or disable the edit mode of annotation in the PDF Viewer.|
-| FormDesignerEditTool | This tool provides options to enable or disable the edit mode of form fields in the PDF Viewer.|
-
-## Show/Hide the built-in toolbar
-
-The PDF Viewer has an option to show or hide the complete built-in toolbar. You can achieve this by using following two ways.,
-
-* **Show/Hide toolbar using enableToolbar API as in the following code snippet**
-
-{% tabs %}
-{% highlight js tabtitle="index.jsx" %}
-{% raw %}
-import * as ReactDOM from 'react-dom';
-import * as React from 'react';
-import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView,
- ThumbnailView, Print, TextSelection, Annotation, TextSearch, FormFields, FormDesigner, Inject } from '@syncfusion/ej2-react-pdfviewer';
-
-export function App() {
- return (
-
-
- {/* Render the PDF Viewer */}
-
-
-
-
-
-
);
-}
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
-{% endraw %}
-{% endhighlight %}
-{% highlight ts tabtitle="index.tsx" %}
-{% raw %}
-import * as ReactDOM from 'react-dom';
-import * as React from 'react';
-import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView,
- ThumbnailView, Print, TextSelection, Annotation, TextSearch, FormFields, FormDesigner, Inject } from '@syncfusion/ej2-react-pdfviewer';
-
-export function App() {
- return (
-
-
- {/* Render the PDF Viewer */}
-
-
-
-
-
-
);
-}
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
-{% endraw %}
-{% endhighlight %}
-{% endtabs %}
-
-N> To set up the **server-backed PDF Viewer**, add the following `serviceUrl` within the
element in either the `index.tsx` or `index.jsx` file:
-**serviceUrl="https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer"**.
-
-{% previewsample "/document-processing/code-snippet/pdfviewer/react/base-cs2" %}
-
-[View sample in GitHub](https://github.com/SyncfusionExamples/react-pdf-viewer-examples/blob/master/Toolbar/How%20to%20hide%20toolbar/src/index.js)
-
-* **Show/Hide toolbar using showToolbar as in the following code snippet**
-
-{% tabs %}
-{% highlight js tabtitle="index.jsx" %}
-{% raw %}
-import * as ReactDOM from 'react-dom';
-import * as React from 'react';
-import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView,
- ThumbnailView, Print, TextSelection, Annotation, TextSearch, FormFields, FormDesigner, Inject } from '@syncfusion/ej2-react-pdfviewer';
-
-export function App() {
- function showToolbarClicked() {
- var viewer = document.getElementById('container').ej2_instances[0];
- viewer.toolbar.showToolbar(false);
- }
- return (
-
-
-
- {/* Render the PDF Viewer */}
-
-
-
-
-
-
);
-
-}
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
-{% endraw %}
-{% endhighlight %}
-{% highlight ts tabtitle="index.tsx" %}
-{% raw %}
-import * as ReactDOM from 'react-dom';
-import * as React from 'react';
-import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView,
- ThumbnailView, Print, TextSelection, Annotation, TextSearch, FormFields, FormDesigner, Inject } from '@syncfusion/ej2-react-pdfviewer';
-
-export function App() {
- function showToolbarClicked() {
- var viewer = document.getElementById('container').ej2_instances[0];
- viewer.toolbar.showToolbar(false);
- }
- return (
-
-
-
- {/* Render the PDF Viewer */}
-
-
-
-
-
-
);
-
-}
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
-{% endraw %}
-{% endhighlight %}
-{% endtabs %}
-
-N> To set up the **server-backed PDF Viewer**, add the following `serviceUrl` within the
element in either the `index.tsx` or `index.jsx` file:
-**serviceUrl="https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer"**.
-
-{% previewsample "/document-processing/code-snippet/pdfviewer/react/base-cs3" %}
-
-## Show/Hide the built-in toolbaritem
-
-The PDF Viewer has an option to show or hide these grouped items in the built-in toolbar.
-
-* **Show/Hide toolbaritem using toolbarSettings as in the following code snippet.**
-
-{% tabs %}
-{% highlight js tabtitle="index.jsx" %}
-{% raw %}
-import * as ReactDOM from 'react-dom';
-import * as React from 'react';
-import { PdfViewerComponent, Toolbar, Magnification, Annotation, Navigation, LinkAnnotation, BookmarkView,
- ThumbnailView, Print, TextSelection, TextSearch, FormFields, FormDesigner, Inject } from '@syncfusion/ej2-react-pdfviewer';
-
-export function App() {
- return (
-
-
- {/* Render the PDF Viewer */}
-
-
-
-
-
-
);
-}
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
-{% endraw %}
-{% endhighlight %}
-{% highlight ts tabtitle="index.tsx" %}
-{% raw %}
-import * as ReactDOM from 'react-dom';
-import * as React from 'react';
-import { PdfViewerComponent, Toolbar, Magnification, Annotation, Navigation, LinkAnnotation, BookmarkView,
- ThumbnailView, Print, TextSelection, TextSearch, FormFields, FormDesigner, Inject } from '@syncfusion/ej2-react-pdfviewer';
-
-export function App() {
- return (
-
-
- {/* Render the PDF Viewer */}
-
-
-
-
-
-
);
-}
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
-{% endraw %}
-{% endhighlight %}
-{% endtabs %}
-
-N> To set up the **server-backed PDF Viewer**, add the following `serviceUrl` within the
element in either the `index.tsx` or `index.jsx` file:
-**serviceUrl="https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer"**.
-
-{% previewsample "/document-processing/code-snippet/pdfviewer/react/base-cs4" %}
-
-* **Show/Hide toolbaritem using showToolbaritem as in the following code snippet**
-
-{% tabs %}
-{% highlight js tabtitle="index.jsx" %}
-{% raw %}
-import * as ReactDOM from 'react-dom';
-import * as React from 'react';
-import { PdfViewerComponent, Toolbar, Magnification, Annotation, Navigation, LinkAnnotation, BookmarkView,
- ThumbnailView, Print, TextSelection, TextSearch, FormFields, FormDesigner, Inject } from '@syncfusion/ej2-react-pdfviewer';
-
-export function App() {
- function showToolbarClicked() {
- var viewer = document.getElementById('container').ej2_instances[0];
- viewer.toolbar.showToolbarItem(["OpenOption"],false);
- }
- return (
-
-
-
- {/* Render the PDF Viewer */}
-
-
-
-
-
-
);
-}
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
-{% endraw %}
-{% endhighlight %}
-{% highlight ts tabtitle="index.tsx" %}
-{% raw %}
-import * as ReactDOM from 'react-dom';
-import * as React from 'react';
-import { PdfViewerComponent, Toolbar, Magnification, Annotation, Navigation, LinkAnnotation, BookmarkView,
- ThumbnailView, Print, TextSelection, TextSearch, FormFields, FormDesigner, Inject } from '@syncfusion/ej2-react-pdfviewer';
-
-export function App() {
- function showToolbarClicked() {
- var viewer = document.getElementById('container').ej2_instances[0];
- viewer.toolbar.showToolbarItem(["OpenOption"],false);
- }
- return (
-
-
-
- {/* Render the PDF Viewer */}
-
-
-
-
-
-
);
-}
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
-{% endraw %}
-{% endhighlight %}
-{% endtabs %}
-
-N> To set up the **server-backed PDF Viewer**, add the following `serviceUrl` within the
element in either the `index.tsx` or `index.jsx` file:
-**serviceUrl="https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer"**.
-
-{% previewsample "/document-processing/code-snippet/pdfviewer/react/base-cs5" %}
-
-## Customize Built-In Toolbar
-
-PDF Viewer allows you to customize(add, show, hide, enable, and disable) existing items in a toolbar.
-
-* Add - New items can defined by [**CustomToolbarItemModel**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/customToolbarItemModel) and with existing items in [**ToolbarSettings**](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbarSettings) property. Newly added item click action can be defined in [`toolbarclick`](https://ej2.syncfusion.com/react/documentation/api/toolbar/clickEventArgs).
-
-* Show, Hide - Existing items can be shown or hidden using the [`ToolbarSettings`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbarSettings) property. Pre-defined toolbar items are available with [`ToolbarItem`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbarItem).
-
-* Enable, Disable - Toolbar items can be enabled or disable using [`enabletoolbaritem`](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/toolbar#enabletoolbaritem)
-
-{% tabs %}
-{% highlight js tabtitle="Standalone" %}
-{% 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, Inject} from '@syncfusion/ej2-react-pdfviewer';
-import { ComboBox } from "@syncfusion/ej2-dropdowns";
-import { TextBox } from "@syncfusion/ej2-inputs";
-
-export function App() {
-
-// Add OnCreateSearch outside the App function
-function OnCreateSearch() {
- this.addIcon('prepend', 'e-icons e-search');
-}
-
- var toolItem1 = {
- prefixIcon: 'e-icons e-paste',
- id: 'print',
- tooltipText: 'Custom toolbar item',
-};
-var toolItem2 = {
- id: 'download',
- text: 'Save',
- tooltipText: 'Custom toolbar item',
- align: 'right'
-};
-var LanguageList = ['Typescript', 'Javascript', 'Angular', 'C#', 'C', 'Python'];
-var toolItem3 = {
- type: 'Input',
- tooltipText: 'Language List',
- cssClass: 'percentage',
- align: 'Left',
- id: 'dropdown',
- template: new ComboBox({ width: 100, value: 'TypeScript', dataSource: LanguageList, popupWidth: 85, showClearButton: false, readonly: false })
-};
-var toolItem4 = {
- type: 'Input',
- tooltipText: 'Text',
- align: 'Right',
- cssClass: 'find',
- id: 'textbox',
- template: new TextBox({ width: 125, placeholder: 'Type Here', created: OnCreateSearch})
-}
- function toolbarClick(args){
- var viewer = document.getElementById('container').ej2_instances[0];
- if (args.item && args.item.id === 'print') {
- viewer.printModule.print();
- }
- else if (args.item && args.item.id === 'download') {
- viewer.download();
- }
- };
-return (
);
-}
-const root = ReactDOM.createRoot(document.getElementById('sample'));
-root.render();
-
-{% endraw %}
-{% endhighlight %}
-{% endtabs %}
-
->Note : Default value of toolbar items is ['OpenOption', 'PageNavigationTool','MagnificationTool', 'PanTool', 'SelectionTool', 'SearchOption', 'PrintOption', 'DownloadOption','UndoRedoTool', 'AnnotationEditTool', 'FormDesignerEditTool', 'CommentTool', 'SubmitForm']
-
-### Align Property
-
-The align property is used to specify the alignment of a toolbar item within the toolbar.
-
-`Left`: Aligns the item to the left side of the toolbar.
-`Right`: Aligns the item to the right side of the toolbar.
-
-### Tooltip Property
-
-The tooltip property is used to set the tooltip text for a toolbar item. Tooltip provides additional information when a user hovers over the item.
-
-### CssClass Property
-
-The cssClass property is used to apply custom CSS classes to a toolbar item. It allows custom styling of the toolbar item.
-
-### Prefix Property
-
-The prefix property is used to set the CSS class or icon that should be added as a prefix to the existing content of the toolbar item.
-
-### ID Property
-
-The id property within a CustomToolbarItemModel is a compulsory attribute that plays a vital role in toolbar customization. It serves as a unique identifier for each toolbar item, facilitating distinct references and interactions.
-
-When defining or customizing toolbar items, it is mandatory to assign a specific and descriptive id to each item.
-These properties are commonly used when defining custom toolbar items with the `CustomToolbarItemModel` in the context of Syncfusion® PDF Viewer. When configuring the toolbar using the `ToolbarSettings` property, you can include these properties to customize the appearance and behavior of each toolbar item.
-
-N> When customizing toolbar items, you have the flexibility to include either icons or text based on your design preference.
-
-[View sample in GitHub](https://github.com/SyncfusionExamples/react-pdf-viewer-examples/tree/master/How%20to/customize%20existing%20toolbar)
-
-## Custom Toolbar
-
-The PDF Viewer provides API for user interactions options provided in it's built-in toolbar. Using this we can create our own User Interface for toolbar actions in application level by hiding the built-in toolbar. The following steps are used to create the custom toolbar for PDF Viewer,
-
-**Step 1:** Follow the steps provided in the [link](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/react/getting-started) to create simple PDF Viewer sample.
-
-**Step 2:** Now, add an HTML div element in template to act as the custom toolbar PDF Viewer using the following code.
-
-{% tabs %}
-{% highlight js tabtitle="Standalone" %}
-{% raw %}
-
- render() {
- function template() {
- return (
-
- );
- }
-
-{% endraw %}
-{% endhighlight %}
-{% endtabs %}
-
-**Step 3:** Import and inject the modules used for the custom toolbar,
-
-
- ```ts
-
- import * as ReactDOM from 'react-dom';
- import * as React from 'react';
- import {
- PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView,
- ThumbnailView, Print, TextSelection, TextSearch, Inject
- } from '@syncfusion/ej2-react-pdfviewer';
- import { ToolbarComponent, ItemsDirective, ItemDirective, ClickEventArgs } from '@syncfusion/ej2-react-navigations';
- import { RouteComponentProps } from 'react-router';
-
- ```
-
-**Step 4:** Hide the built-in toolbar of PDF Viewer using below code snippet,
-
-{% tabs %}
-{% highlight js tabtitle="Standalone" %}
-{% raw %}
-
- { this.viewer = scope; }}
-enableToolbar={false}
-documentLoad={this.documentLoaded}
-pageChange={this.onPageChange}
-documentPath="https://cdn.syncfusion.com/content/pdf/hive-succinctly.pdf"
-resourceUrl="https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib"
-style={{ 'display': 'block', 'height': '640px' }}>
-
-
-
-
-{% endraw %}
-{% endhighlight %}
-{% highlight js tabtitle="Server-Backed" %}
-{% raw %}
-
- { this.viewer = scope; }}
- enableToolbar={false}
- documentLoad={this.documentLoaded}
- pageChange={this.onPageChange}
- documentPath="https://cdn.syncfusion.com/content/pdf/hive-succinctly.pdf"
- serviceUrl="https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer"
- style={{ 'display': 'block', 'height': '640px' }}>
-
-
-
-
-{% endraw %}
-{% endhighlight %}
-{% endtabs %}
-
-**Step 5:** Add the following style to achieve the custom toolbar styling,
-
- ```
- #magnificationToolbarItems {
- position: absolute;
- bottom: 66px;
- display: block;
- width: auto;
- transform: rotate(90deg);
- right: 7.5px;
- z-index: 1001;
- }
-
- #magnificationToolbar {
- background: transparent;
- }
-
- .e-pv-zoom-out-sample {
- transform: rotate(-90deg);
- }
-
- div#magnificationToolbar.e-toolbar .e-toolbar-items {
- background: transparent;
- padding: 2px 3px 2px 2px;
- }
-
- #magnificationToolbar.e-toolbar .e-tbar-btn {
- border-radius: 50%;
- min-height: 30px;
- min-width: 30px;
- border: 0.5px solid #c8c8c8;
- }
-
- #topToolbar {
- top: 0px;
- z-index: 1001;
- }
-
- .e-pv-current-page-number {
- width: 46px;
- height: 28px;
- text-align: center;
- }
-
- .material .e-pv-current-page-number {
- border-width: 1px;
- }
-
- .e-pv-icons {
- font-family: "e-pv-icons";
- font-style: normal;
- font-variant: normal;
- font-weight: normal;
- line-height: 1;
- text-transform: none;
- }
-
- .e-pdf-toolbar .e-icons::before {
- font-family: 'e-pv-icons';
- }
-
- .e-pv-icon-search::before {
- font-family: 'e-pv-icons';
- font-size: 12px;
- }
-
- #topToolbar .e-pv-download-document-icon::before {
- padding-left: 4px;
- content: '\ed05';
- }
-
- #topToolbar .e-pv-print-document-icon::before {
- padding-left: 1px;
- content: '\ed08';
- }
-
- .e-pv-previous-page-navigation-icon::before {
- content: '\ed01';
- }
-
- .e-pv-next-page-navigation-icon::before {
- content: '\ed02';
- }
-
- .e-pv-zoom-out-sample::before {
- content: '\ed03';
- }
-
- .e-pv-zoom-in-icon::before {
- content: '\ed04';
- }
-
- .e-pv-fit-page::before {
- content: '\ed12';
- }
- .e-pv-open-document-icon::before {
- content: '\ed13';
- }
-
- @font-face {
- font-family: "e-pv-icons";
- font-style: normal;
- font-weight: normal;
- src: url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAAKAIAAAwAgT1MvMkMhTzoAAAEoAAAAVmNtYXDae9qvAAABuAAAAFZnbHlmok0NtwAAAjAAAAPkaGVhZBN5FAcAAADQAAAANmhoZWEHrwNhAAAArAAAACRobXR4NsgAAAAAAYAAAAA4bG9jYQdkBmQAAAIQAAAAHm1heHABHAAwAAABCAAAACBuYW1lsXg1swAABhQAAAJ5cG9zdFG4mE4AAAiQAAAAyAABAAADUv9qAFoEAAAA/+gEAAABAAAAAAAAAAAAAAAAAAAADgABAAAAAQAAaoJDiF8PPPUACwPoAAAAANgtZ5EAAAAA2C1nkQAAAAAEAAQAAAAACAACAAAAAAAAAAEAAAAOACQABAAAAAAAAgAAAAoACgAAAP8AAAAAAAAAAQPqAZAABQAAAnoCvAAAAIwCegK8AAAB4AAxAQIAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABA7QHtEwNS/2oAWgQAAJYAAAABAAAAAAAABAAAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAAAAACAAAAAwAAABQAAwABAAAAFAAEAEIAAAAGAAQAAQAC7QntE///AADtAe0Q//8AAAAAAAEABgAWAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAAAAAAAAAUACoAZACkAL4A7gEuAVwBcAGEAZ4ByAHyAAAAAQAAAAAD6gMuAAUAAAkBBwkBJwIAAet0/on+iXQDL/4VcwF3/olzAAEAAAAAA+oDLgAFAAATCQEXCQGJAXcBd3T+Ff4VAy/+iQF3c/4VAesAAAAAAwAAAAAEAAQAAAMADwAbAAABITUhBQ4BBy4BJz4BNx4BBRYAFzYANyYAJwYAAQACAP4AAoAE2aOj2QQE2aOj2fyEBgEh2dkBIQYG/t/Z2f7fAcCAQKPZBATZo6PZBATZo9n+3wYGASHZ2QEhBgb+3wAAAAADAAAAAAQABAAACwAXACMAAAEjFTMVMzUzNSM1IwEOAQcuASc+ATceAQUWABc2ADcmACcGAAHAwMCAwMCAAcAE2aOj2QQE2aOj2fyEBgEh2dkBIQYG/t/Z2f7fAkCAwMCAwP8Ao9kEBNmjo9kEBNmj2f7fBgYBIdnZASEGBv7fAAIAAAAAAwAEAAADAAoAADEhNSEBIQkBIREhAwD9AAEA/wABgAGA/wD/AIACAP6AAYABgAACAAAAAANABAAADgAaAAABMh4CFRElBRE0Nz4BMycGFRElBRE0JiMhIgKdCwwHBf7g/uAJBAwKdC8BoAGgX0T+BkQDgAYGCwr9YHZ2AqAOCQQGUS9D/KGrqwNfRlsAAAACAAAAAAP/BAAACwAjAAABDgEHLgEnPgE3HgEFHgEXMjY/ARcVATcBIyc3PgE1LgEnDgECgAOQbW2QAwOQbW2Q/YME2aNGfDIDJAEEYf78MyMCKi4E2aOj2QKAbZADA5BtbZADA5Bto9kELioDJDP+/GEBBCQDMnxGo9kEBNkAAAQAAAAABAAEAAADAAcAFQAZAAABFSE1JRUjNSERMxUhNTMRLgEnIQ4BNyE1IQLA/oACQID9AMACgMABSDf9ADdIvwKA/YABwMDAwICA/sDAwAFAN0gBAUmKwAAAAQAAAAACQAQAAAUAABEBNwkBJwHsU/6HAXpSAmD+YGIBPgE+YgAAAAEAAAAAAkAEAAAFAAARCQEXCQEBev6HUwHs/hMDnv7C/sJiAaABoAABAAAAAAKABAAACwAAERcHFzcXNyc3Jwcn9fVM9PVL9PRL9fQDtfX0TPX1TPT0TPT0AAAABAAAAAAD8APwAAUACwARABcAACEzNTM1IQUzFTMRISUhNSM1IwUjFSERIwJ2fvz+hv2K/H7+hgJ2AXr8fv6G/AF6fvx+fvwBevx+/Px+AXoAAAAAAgAAAAAEAAQAAAMAFgAAAREhEScGFREUFhchPgE1ETQmIyEnIQYDgP0AYh48LQMuLTw8Lf5pa/7ULQMA/gACAN8eLf1YLTwDAzwtAigvPYACAAAAAAASAN4AAQAAAAAAAAABAAAAAQAAAAAAAQAOAAEAAQAAAAAAAgAHAA8AAQAAAAAAAwAOABYAAQAAAAAABAAOACQAAQAAAAAABQALADIAAQAAAAAABgAOAD0AAQAAAAAACgAsAEsAAQAAAAAACwASAHcAAwABBAkAAAACAIkAAwABBAkAAQAcAIsAAwABBAkAAgAOAKcAAwABBAkAAwAcALUAAwABBAkABAAcANEAAwABBAkABQAWAO0AAwABBAkABgAcAQMAAwABBAkACgBYAR8AAwABBAkACwAkAXcgY3VzdG9tLXRvb2xiYXJSZWd1bGFyY3VzdG9tLXRvb2xiYXJjdXN0b20tdG9vbGJhclZlcnNpb24gMS4wY3VzdG9tLXRvb2xiYXJGb250IGdlbmVyYXRlZCB1c2luZyBTeW5jZnVzaW9uIE1ldHJvIFN0dWRpb3d3dy5zeW5jZnVzaW9uLmNvbQAgAGMAdQBzAHQAbwBtAC0AdABvAG8AbABiAGEAcgBSAGUAZwB1AGwAYQByAGMAdQBzAHQAbwBtAC0AdABvAG8AbABiAGEAcgBjAHUAcwB0AG8AbQAtAHQAbwBvAGwAYgBhAHIAVgBlAHIAcwBpAG8AbgAgADEALgAwAGMAdQBzAHQAbwBtAC0AdABvAG8AbABiAGEAcgBGAG8AbgB0ACAAZwBlAG4AZQByAGEAdABlAGQAIAB1AHMAaQBuAGcAIABTAHkAbgBjAGYAdQBzAGkAbwBuACAATQBlAHQAcgBvACAAUwB0AHUAZABpAG8AdwB3AHcALgBzAHkAbgBjAGYAdQBzAGkAbwBuAC4AYwBvAG0AAAAAAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwAIVG9wLWljb24LZG93bi1hcnJvdzIKUFZfWm9vbW91dAlQVl9ab29taW4LUFZfRG93bmxvYWQLUFZfQm9va21hcmsJUFZfU2VhcmNoCFBWX1ByaW50C1BWX1ByZXZpb3VzB1BWX05leHQIUFZfQ2xvc2UMUFZfRml0VG9QYWdlB1BWX09wZW4AAA==) format('truetype');
- }
- ```
-
- The icons are embedded in the font file used in above code snippet.
-
-**Step 6:** Add the following scripts for performing user interaction in PDF Viewer in code behind
-
- ```ts
-
- import * as ReactDOM from 'react-dom';
- import * as React from 'react';
- import {
- PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView,
- ThumbnailView, Print, TextSelection, TextSearch, Inject
- } from '@syncfusion/ej2-react-pdfviewer';
- import { ToolbarComponent, ItemsDirective, ItemDirective, ClickEventArgs } from '@syncfusion/ej2-react-navigations';
- import { RouteComponentProps } from 'react-router';
-
- export class CustomToolbar extends SampleBase<{}, {}> {
- public viewer: PdfViewerComponent;
- public toolbar: ToolbarComponent;
- public currentPageNumber: string = '1';
- public fileName: string = '';
- rendereComplete() {
- this.wireEvent();
- }
- render() {
- // template code from step 2
- }
- wireEvent() {
- let inputElement: HTMLInputElement = document.getElementById('currentPage') as HTMLInputElement;
- inputElement.addEventListener('click', this.currentPageClicked.bind(this));
- inputElement.addEventListener('keypress', this.onCurrentPageBoxKeypress.bind(this));
- inputElement.value = this.currentPageNumber;
- }
- onPageChange = () => {
- this.currentPageNumber = this.viewer.currentPageNumber.toString();
- let inputElement: HTMLInputElement = document.getElementById('currentPage') as HTMLInputElement;
- inputElement.value = this.currentPageNumber;
- this.updatePageNavigation();
- }
- clickHandler(args: ClickEventArgs) {
- switch (args.item.id) {
- case 'file_Open':
- document.getElementById('fileUpload').click();
- break;
- case 'previous_page':
- this.viewer.navigation.goToPreviousPage();
- break;
- case 'next_page':
- this.viewer.navigation.goToNextPage();
- break;
- case 'print':
- this.viewer.print.print();
- break;
- case 'download':
- this.viewer.download();
- break;
- case 'fit_to_page':
- this.viewer.magnification.fitToPage();
- break;
- case 'zoom_in':
- this.viewer.magnification.zoomIn();
- break;
- case 'zoom_out':
- this.viewer.magnification.zoomOut();
- break;
- }
- }
- documentLoaded = () => {
- var pageCount = document.getElementById('totalPage');
- pageCount.textContent = 'of ' + this.viewer.pageCount;
- this.updatePageNavigation();
- }
-
- updatePageNavigation() {
- if (this.viewer.currentPageNumber === 1) {
- this.toolbar.enableItems(document.getElementById('previous_page').parentElement, false);
- this.toolbar.enableItems(document.getElementById('next_page').parentElement, true);
- } else if (this.viewer.currentPageNumber === this.viewer.pageCount) {
- this.toolbar.enableItems(document.getElementById('previous_page').parentElement, true);
- this.toolbar.enableItems(document.getElementById('next_page').parentElement, false);
- } else {
- this.toolbar.enableItems(document.getElementById('previous_page').parentElement, true);
- this.toolbar.enableItems(document.getElementById('next_page').parentElement, true);
- }
- }
-
- onCurrentPageBoxKeypress(event) {
- let currentPageBox: HTMLInputElement = document.getElementById('currentPage') as HTMLInputElement;
- if ((event.which < 48 || event.which > 57) && event.which !== 8 && event.which !== 13) {
- event.preventDefault();
- return false;
- }
- else {
- var currentPageNumber = parseInt(currentPageBox.value);
- if (event.which === 13) {
- if (currentPageNumber > 0 && currentPageNumber <= this.viewer.pageCount) {
- this.viewer.navigation.goToPage(currentPageNumber);
- }
- else {
- currentPageBox.value = this.viewer.currentPageNumber.toString();
- }
- }
- return true;
- }
- }
- currentPageClicked() {
- let currentPage: HTMLInputElement = document.getElementById('currentPage') as HTMLInputElement;
- currentPage.select();
- }
-
- readFile(evt) {
- let uploadedFiles = evt.target.files;
- let uploadedFile = uploadedFiles[0];
- this.fileName = uploadedFile.name;
- let reader = new FileReader();
- reader.readAsDataURL(uploadedFile);
- let viewer: PdfViewerComponent = this.viewer;
- let uploadedFileName: string = this.fileName;
- reader.onload = function () {
- let uploadedFileUrl: string = this.result as string;
- viewer.load(uploadedFileUrl, null);
- viewer.fileName = uploadedFileName;
- var pageCount = document.getElementById('totalPage');
- pageCount.textContent = 'of ' + viewer.pageCount;
- }
- }
-
- }
-
- ```
-
-Sample :
-[https://document.syncfusion.com/demos/pdf-viewer/react/#/tailwind3/pdfviewer/custom-toolbar](https://document.syncfusion.com/demos/pdf-viewer/react/#/tailwind3/pdfviewer/custom-toolbar)
-
-## See also
-
-* [Toolbar customization](./how-to/toolbar-customization)
-* [Feature Modules](./feature-module)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/troubleshooting/cp-command-not-recognized.md b/Document-Processing/PDF/PDF-Viewer/react/troubleshooting/cp-command-not-recognized.md
index 913c51e260..0040fef23f 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/troubleshooting/cp-command-not-recognized.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/troubleshooting/cp-command-not-recognized.md
@@ -9,15 +9,15 @@ documentation: ug
# Troubleshoot error 'cp' is not recognized as a command
-The Unix `cp` command is not available in the Windows Command Prompt. Use one of the following Windows-native alternatives to copy the required assets.
+The Unix `cp` command is not available in the Windows Command Prompt. Use one of the following Windows-native alternatives to copy the required `ej2-pdfviewer-lib` assets into a public or source folder used by the application.
-- CMD (xcopy) — recursive directory copy:
+CMD (xcopy) — recursive directory copy
```batch
xcopy /s /e /i .\node_modules\@syncfusion\ej2-pdfviewer\dist\ej2-pdfviewer-lib public\ej2-pdfviewer-lib
```
-- PowerShell (Copy-Item) — recursive directory copy:
+PowerShell (Copy-Item) — recursive directory copy
```powershell
Copy-Item .\node_modules\@syncfusion\ej2-pdfviewer\dist\ej2-pdfviewer-lib -Destination .\src\ej2-pdfviewer-lib -Recurse -Force
@@ -28,4 +28,4 @@ Notes:
- Windows paths use backslashes (\). Adjust paths if your project structure differs.
- Ensure sufficient permissions to write to the destination folder.
-For cross-platform scripts in package.json, consider tools such as "shx" or "copyfiles" to avoid OS-specific commands.
+For cross-platform scripts in `package.json`, consider tools such as `shx` or `copyfiles` to avoid OS-specific commands.
diff --git a/Document-Processing/PDF/PDF-Viewer/react/troubleshooting/document-loading-issues.md b/Document-Processing/PDF/PDF-Viewer/react/troubleshooting/document-loading-issues.md
index b249afc6e8..d08b6e642a 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/troubleshooting/document-loading-issues.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/troubleshooting/document-loading-issues.md
@@ -7,11 +7,11 @@ control: PDF Viewer
documentation: ug
---
-# Document Loading Issues in Version 23.1 or Newer
+## Document loading issues in version 23.1 or newer
-If the document does not render in the viewer when using version 23.1 or newer, follow these steps:
+If a PDF does not render in the viewer after upgrading to v23.1 or newer, use the checklist below to identify and resolve common causes. The most frequent fix is calling `dataBind()` before `load()` so data binding is initialized correctly in the newer lifecycle.
-1. Call `pdfviewer.dataBind()` before `load()`. Starting with v23.1, an explicit dataBind call is required to initialize data binding and render correctly.
+Example:
{% raw %}
```ts
@@ -50,12 +50,20 @@ root.render();
```
{% endraw %}
-2. Verify the document source. Ensure the URL or path is valid and accessible.
-3. Check network connectivity. The viewer cannot fetch the document without a stable connection.
-4. Inspect console errors. Use browser developer tools to identify issues.
-5. Validate the initialization order. Initialize the viewer, call `dataBind()`, then call `load()`.
-6. Update to the latest viewer version. Issues may be resolved in newer releases.
-7. Configure CORS correctly for cross-domain documents.
-8. Review Content Security Policy (CSP) settings. Ensure external resources are permitted. See the Content Security Policy troubleshooting guide in the Syncfusion documentation for details.
+Troubleshooting checklist (in order)
-Following this checklist typically resolves document loading issues in v23.1 or newer.
\ No newline at end of file
+1. Initialization order: call `dataBind()` before `load()` (required in v23.1+). If using React refs, ensure the ref is available before calling these methods.
+2. Verify the document source: confirm the `documentPath`, `serviceUrl`, or `resourceUrl` is correct and returns the expected content.
+3. Network connectivity: confirm the browser can reach the document URL (check network tab for failed requests).
+4. Console errors: inspect the browser console for CORS errors, 4xx/5xx responses, or runtime exceptions.
+5. CORS configuration: for cross-origin `serviceUrl` or document URLs, ensure the server sets `Access-Control-Allow-Origin` and allows the `Authorization` header if used.
+6. Content Security Policy: confirm CSP allows loading resources from the target origins (scripts, fonts, and media).
+7. Version and cache: update to the latest PDF Viewer release and clear caches (browser/Service Worker) to rule out stale assets.
+8. Server behavior: if the viewer uses a backend service, verify the service is running and returns correct responses for PDF requests.
+
+React-specific notes
+
+- Prefer using a React ref to access the `PdfViewerComponent` instance instead of `document.getElementById(...)` where possible: `const viewerRef = useRef(null);` then `` and call `viewerRef.current.dataBind()` / `viewerRef.current.load(...)` after the ref is initialized.
+- If calling `dataBind()` and `load()` from lifecycle methods or hooks, ensure they run after the component mounts (for example in `useEffect` with the correct dependencies).
+
+Following this checklist typically resolves document loading issues encountered after upgrading to v23.1 or newer.
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/react/troubleshooting/troubleshooting.md b/Document-Processing/PDF/PDF-Viewer/react/troubleshooting/troubleshooting.md
index 7a7c7c1db7..2403b30a7c 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/troubleshooting/troubleshooting.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/troubleshooting/troubleshooting.md
@@ -7,7 +7,7 @@ platform: document-processing
documentation: ug
---
-# Why Do I Have to Manually Copy Files from node_modules into My App?
+## Why do I have to manually copy files from node_modules into my app?
The PDF Viewer supports multiple build systems and can work without a bundler by referencing assets directly using HTML tags. To keep load times efficient, the library is split into smaller modules and uses lazy loading for certain assets.
@@ -16,4 +16,4 @@ The PDF Viewer supports multiple build systems and can work without a bundler by
When not using a bundler (or when the bundler does not emit these assets), copy the required files from node_modules to a web-accessible path in your app (for example, "src/ej2-pdfviewer-lib") and reference them accordingly. This ensures the viewer can fetch the lazy-loaded assets when needed and prevents runtime 404 errors.
-If a bundler is configured to emit static assets from node_modules, verify that the output contains the necessary files from "@syncfusion/ej2-pdfviewer/dist/ej2-pdfviewer-lib" and that your app serves them from a public path. Otherwise, perform a manual copy step during your build process.
\ No newline at end of file
+If the bundler is configured to emit static assets from `node_modules`, verify that the build output contains the necessary files from `@syncfusion/ej2-pdfviewer/dist/ej2-pdfviewer-lib` and that your app serves them from a public path. Otherwise, perform a manual or scripted copy step during your build process.
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/Redaction/mobile-view.md b/Document-Processing/PDF/PDF-Viewer/vue/Redaction/mobile-view.md
index defa21701c..5f1da9097e 100644
--- a/Document-Processing/PDF/PDF-Viewer/vue/Redaction/mobile-view.md
+++ b/Document-Processing/PDF/PDF-Viewer/vue/Redaction/mobile-view.md
@@ -9,11 +9,11 @@ documentation: ug
# Redaction in Mobile View in Vue PdfViewer Component
-The Redaction Tool enables users to permanently mark and remove sensitive content from PDF documents in mobile view using the Vue PdfViewer component. This feature is optimized for touch interactions and provides a streamlined redaction workflow specifically designed for mobile devices.
+The Redaction Tool enables permanent marking and removal of sensitive content from PDF documents in mobile view using the Vue PdfViewer component. This feature is optimized for touch interactions and provides a streamlined redaction workflow specifically designed for mobile devices.

-N> In mobile view, the redaction toolbar appears at the bottom of the viewer for easy thumb access. Mobile layout activates automatically on small screens.
+N> In mobile view, the redaction toolbar appears at the bottom of the viewer for easy thumb access. The mobile layout activates automatically on small screens.
## Adding Redaction in Mobile View
@@ -110,11 +110,10 @@ When you enter redaction mode in mobile view, a specialized redaction toolbar ap
### Redaction Annotation Tool
-The Redaction Annotation tool is the primary redaction feature that allows you to draw redaction rectangles on specific content:
+The Redaction Annotation tool is the primary redaction feature that allows drawing redaction rectangles on specific content.
-Function: Creates visual redaction annotations that mark content for permanent removal
-Usage:
-Touch and drag to draw rectangular redaction overlays on any content area.
+Function: Creates visual redaction annotations that mark content for permanent removal.
+Usage: Touch and drag to draw rectangular redaction overlays on any content area.
Process:
- Selected content appears with a customizable overlay (default black)
@@ -129,8 +128,8 @@ The Page Redaction tool enables batch redaction of entire pages based on specifi

-Function: Redacts complete pages or page ranges with a single action
-Options Available:
+Function: Redacts complete pages or page ranges with a single action.
+Options available:
- Odd Pages: Redacts only odd-numbered pages (1, 3, 5, etc.)
- Even Pages: Redacts only even-numbered pages (2, 4, 6, etc.)
- Specific Page: Specify single pages, ranges (e.g., 1-5, 10-15), or comma-separated lists (e.g., 1,3,5-7)
@@ -148,7 +147,7 @@ The Redaction Properties tool allows customization of redaction appearance befor

Function: Customize the visual appearance of redaction overlays and text replacement
-Customizable Properties:
+Customizable properties:
- Fill Color: Change the redaction overlay color (default: black)
- Outline Color: Set outline color for redaction boxes (optional)
- Overlay Text: Add custom text to appear on redacted areas (e.g., "REDACTED", "CONFIDENTIAL")
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/Redaction/overview.md b/Document-Processing/PDF/PDF-Viewer/vue/Redaction/overview.md
index 288120519c..76ac89cd14 100644
--- a/Document-Processing/PDF/PDF-Viewer/vue/Redaction/overview.md
+++ b/Document-Processing/PDF/PDF-Viewer/vue/Redaction/overview.md
@@ -10,7 +10,7 @@ domainurl: ##DomainURL##
# Redaction in Vue PdfViewer
-Redaction annotations are used to hide confidential or sensitive information in a PDF. The Syncfusion Vue PDF Viewer (EJ2) lets you mark areas or entire pages for redaction, customize their appearance, and permanently apply them with a single action.
+Redaction annotations hide confidential or sensitive information in a PDF. The Syncfusion Vue PDF Viewer (EJ2) enables marking regions or entire pages for redaction, customizing appearance, and permanently applying redaction with a single action.
## Enable the redaction toolbar
@@ -100,49 +100,47 @@ export default {
{% endhighlight %}
{% endtabs %}
-N> Prerequisites: Add the PdfViewer control to your Vue application and ensure the redaction feature is available in the version you are using. Once applied, redaction permanently removes the selected content.
+N> Add the PdfViewer control to the Vue application and ensure the redaction feature is included in the installed package version. Once applied, redaction permanently removes the selected content.

## Add Redaction Annotations
-You can mark specific content for redaction using the toolbar or through code.
+Mark specific content for redaction using the toolbar or programmatically.
-Select the **Redaction tool** and draw over the text or graphics you want to hide. You can also add overlay text (such as “Confidential”) and adjust the style — fill color, border color, and opacity.
+Select the **Redaction tool** and draw over text or graphics to hide. Optionally add overlay text (for example, “Confidential”) and adjust style properties: fill color, border color, and opacity.

## Delete Redaction Annotations
-Redaction annotations can be removed easily:
+Remove redaction annotations using the toolbar or keyboard shortcuts:
-- Click the **Delete** button on the toolbar, or
+- Click the **Delete** button on the toolbar, or
- Select the annotation and press the **Delete** key.

## Redact Entire Pages
-The viewer allows you to redact whole pages that contain sensitive information. You can choose specific pages, page ranges, or redact all pages using the built‑in dialog, or perform the same action programmatically.
+The viewer supports redacting entire pages that contain sensitive information. Use the built-in dialog to select specific pages, page ranges, or all pages, or invoke the same behavior programmatically.

## Apply Redaction
-Once annotations are added, you can permanently apply them to the document. This action cannot be undone.
-
-Use the **Apply Redaction** button on the toolbar or call the API method:
+After adding redaction annotations, permanently apply them to the document using the **Apply Redaction** toolbar button or the corresponding API method.
- The button is disabled until at least one redaction annotation exists.
- It becomes active when redaction annotations are present.

-A confirmation dialog appears before applying redaction to ensure you acknowledge the irreversible nature of the process.
+A confirmation dialog appears before applying redaction to ensure acknowledgement of the irreversible action.

-N> After redaction is applied, the original content cannot be recovered.
+N> Applying redaction is irreversible. Once applied, the original content cannot be recovered.
## Comment Support
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/Redaction/programmatic-support.md b/Document-Processing/PDF/PDF-Viewer/vue/Redaction/programmatic-support.md
index ce7852ed7d..da2ab02742 100644
--- a/Document-Processing/PDF/PDF-Viewer/vue/Redaction/programmatic-support.md
+++ b/Document-Processing/PDF/PDF-Viewer/vue/Redaction/programmatic-support.md
@@ -9,7 +9,7 @@ documentation: ug
# Programmatic support for redaction in Vue PdfViewer
-The Syncfusion Vue PDF Viewer provides APIs to add, update, delete, and apply redaction annotations programmatically. You can also redact entire pages, configure default properties, and work with the redaction property panel.
+The Syncfusion Vue `PdfViewer` control provides APIs to add, update, delete, and apply redaction annotations programmatically. You can also redact entire pages, configure default properties, and work with the redaction property panel.
## Enable the redaction toolbar
@@ -216,7 +216,7 @@ export default {
## Delete redaction annotations programmatically
-Redaction annotations can be removed using the `deleteAnnotationById` event or by selecting and deleting them through code.
+Redaction annotations can be removed using the `deleteAnnotationById` method or by selecting and deleting them through code.
{% tabs %}
{% highlight html tabtitle="App.vue" %}
@@ -621,7 +621,7 @@ export default {
{% endhighlight %}
{% endtabs %}
-N> Applying redaction is irreversible. Once applied, the original content cannot be recovered.
+N> Applying redaction is irreversible. Before calling `redact()`, save or export a backup copy of the document; the original content cannot be recovered.
## Configure default redaction annotation properties
@@ -729,7 +729,7 @@ export default {
The redaction property panel allows users to update annotation properties through the UI. Programmatically, you can invoke the property panel by selecting an annotation and calling the relevant APIs. Properties such as overlay text, font style, and fill color can be updated directly in the panel.
-
+
## See also
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/Redaction/search-redact.md b/Document-Processing/PDF/PDF-Viewer/vue/Redaction/search-redact.md
index 1a8b6884ca..fd1dfe0539 100644
--- a/Document-Processing/PDF/PDF-Viewer/vue/Redaction/search-redact.md
+++ b/Document-Processing/PDF/PDF-Viewer/vue/Redaction/search-redact.md
@@ -8,18 +8,17 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Search text and redact in Vue PdfViewer
+# Search text and redact in Vue PDF Viewer
-You can search for a keyword in the loaded PDF and automatically add redaction annotations over each match. The example below wires the extractTextCompleted event, triggers text extraction, performs a search, and places redaction annotations for every result.
+You can search for a keyword in the loaded PDF and automatically add redaction annotations over each match. The example below wires the `extractTextCompleted` event, triggers text extraction, performs a search, and places redaction annotations for every result.
-N> Prerequisites: Add the PdfViewer control to your Vue application and ensure a document is loaded. Make sure the redaction feature is available in the version you are using. Once applied, redaction permanently removes the selected content.
+N> Prerequisites: Add the PDF Viewer control to your Vue application and ensure a document is loaded. Confirm the redaction feature is available in the viewer version in use and that text extraction is enabled (`isExtractText: true`). Redaction is permanent once applied.
-## Steps to add Redaction annotations on search Text Bounds
+## Steps to add redaction annotations on search text bounds
-**Step 1:** Follow the steps provided in the [link](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/Vue/getting-started) to create a simple PDF Viewer sample.
+**Step 1:** Follow the steps in [PDF Viewer - Getting started](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/vue/getting-started) to create a simple PDF Viewer sample.
-
-**Step 2:** Use the following code-snippets to Add Redaction annotation on Search Text Bounds.
+**Step 2:** Use the following code snippets to add redaction annotations to search text bounds.
{% tabs %}
{% highlight html tabtitle="App.vue" %}
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/Redaction/toolbar.md b/Document-Processing/PDF/PDF-Viewer/vue/Redaction/toolbar.md
index 008242e725..08b0bac5b3 100644
--- a/Document-Processing/PDF/PDF-Viewer/vue/Redaction/toolbar.md
+++ b/Document-Processing/PDF/PDF-Viewer/vue/Redaction/toolbar.md
@@ -9,11 +9,11 @@ documentation: ug
# Redaction toolbar customization in Vue
-The redaction toolbar in the Syncfusion Vue PDF Viewer can be customized by rearranging existing items, hiding default items, or adding new ones. You can also place custom items at specific index positions among the existing toolbar items.
+The redaction toolbar in the Syncfusion Vue PDF Viewer can be customized by rearranging items, hiding default items, or adding custom items. Custom items can be inserted at specific index positions within the existing toolbar.
## Enable the redaction toolbar
-To enable the redaction toolbar, configure the `toolbarSettings.toolbarItems` property of the PdfViewer instance to include the **RedactionEditTool**.
+To enable the redaction toolbar, configure the `toolbarSettings.toolbarItems` property of the PdfViewer instance to include the `RedactionEditTool`.
The following example shows how to enable the redaction toolbar:
@@ -105,17 +105,17 @@ Refer to the following image for the toolbar view:
## Show or hide the redaction toolbar
-You can toggle the redaction toolbar either using the built‑in toolbar icon or programmatically with the `showRedactionToolbar` method.
+The redaction toolbar can be toggled using the built‑in toolbar icon or programmatically with the `showRedactionToolbar` method.
### Display the redaction toolbar using the toolbar icon
-When **RedactionEditTool** is included in the toolbar settings, clicking the redaction icon in the primary toolbar will show or hide the redaction toolbar.
+When `RedactionEditTool` is included in the toolbar settings, clicking the redaction icon in the primary toolbar will show or hide the redaction toolbar.

### Display the redaction toolbar programmatically
-You can also control visibility through code by calling `viewer.toolbar.showRedactionToolbar(true/false)`.
+Programmatic control is available via the viewer instance. For example, call `this.pdfViewer.toolbar.showRedactionToolbar(true)` to display the redaction toolbar, or `this.pdfViewer.toolbar.showRedactionToolbar(false)` to hide it.
The following example demonstrates toggling the redaction toolbar programmatically:
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/Redaction/ui-interaction.md b/Document-Processing/PDF/PDF-Viewer/vue/Redaction/ui-interaction.md
index c50de00d7f..0eaa13aadf 100644
--- a/Document-Processing/PDF/PDF-Viewer/vue/Redaction/ui-interaction.md
+++ b/Document-Processing/PDF/PDF-Viewer/vue/Redaction/ui-interaction.md
@@ -1,13 +1,13 @@
---
layout: post
title: Redaction UI interactions in Vue PDF Viewer | Syncfusion
-description: Learn about UI interactions in Redaction annotations of the Syncfusion Vue PDF Viewer component.
+description: Learn about the various UI interactions in Redaction annotations of the Syncfusion Vue PDF Viewer component and more
platform: document-processing
control: PDF Viewer
documentation: ug
---
-# Redaction UI interactions in Vue PdfViewer
+# Redaction UI interactions in Vue PDF Viewer
## Add redaction annotations from the toolbar
@@ -27,21 +27,21 @@ N> The redaction tool is hidden by default. Customize the toolbar to include it.
## Add redaction annotations using the context menu
-In addition to the toolbar, you can add redaction annotations directly from the context menu. Select the text or region, right‑click (or long‑press on mobile), and choose the **Redact Annotation** option. This creates a redaction mark over the selected content.
+In addition to the toolbar, redaction annotations can be added directly from the context menu. To add from the context menu, select the text or region, right‑click (or long‑press on mobile), and choose the **Redact Annotation** option. This creates a redaction mark over the selected content.

## Update redaction properties
-After adding a redaction annotation, you can update its properties through the property panel or programmatically.
+After adding a redaction annotation, properties can be updated through the property panel or programmatically.
### Update using the property panel
-When a redaction annotation is selected, a two‑tab property panel (General and Appearance) lets you customize text and styling. Changes are reflected instantly on the redaction mark.
+When a redaction annotation is selected, a two‑tab property panel (General and Appearance) allows customization of text and styling. Changes are reflected instantly on the redaction mark.
The property panel can be opened in two ways:
-* By clicking the **redaction property panel** icon in the toolbar.
+* By clicking the **Redaction property panel** icon in the toolbar.

* By right‑clicking (or long‑pressing) the annotation and choosing **Properties** from the context menu.
@@ -62,7 +62,7 @@ Use the General tab to define how the content will look after redaction. These s

-Note: Hovering the mouse over a redaction annotation shows a preview of this final look. After you click Apply Redaction, these settings are flattened into the page and can’t be edited. Tip: Click Save in the dialog to keep your changes.
+N> Hovering over a redaction annotation shows a preview of the final look. After Apply Redaction is selected, these settings are flattened into the page and cannot be edited. Tip: Select Save in the dialog to persist changes.
#### Appearance tab
@@ -72,18 +72,18 @@ Use the Appearance tab to style the redaction annotation itself (before applying
* Outline Color – Optional border for the annotation.
* Fill Opacity – Controls how transparent the annotation appears during review.
-Note: The Appearance tab affects only the temporary annotation. The final look after applying redaction comes from the General tab settings.
+N> The Appearance tab affects only the temporary annotation. The final look after applying redaction comes from the General tab settings.

### What changes after applying redaction?
-When you click Apply Redaction:
+When Apply Redaction is selected:
* The selected content is permanently removed from the page.
* The redaction region is flattened into the page with a solid fill that uses the General tab Fill Color.
* If overlay text was enabled, the text is burned into the page. If Repeat Overlay Text was enabled, the text is tiled across the region.
-* All properties become read‑only. You cannot edit overlay text, fill color, outline, or opacity after applying. Set the final look in the General tab and use the Appearance tab only to style the annotation before you apply.
+* All properties become read‑only. Overlay text, fill color, outline, and opacity cannot be edited after applying. Set the final look in the General tab and use the Appearance tab only to style the annotation before applying.
## Delete redaction annotations
@@ -107,7 +107,7 @@ Entire pages can be marked for redaction using the **Redact Pages** option in th
* **Even Pages Only** – Redacts all even‑numbered pages.
* **Specific Pages** – Enter page numbers or ranges (e.g., 1, 3–5, 7) to redact.
-After choosing the range, click **Save** to apply redaction marks to the selected pages.
+After choosing the range, select **Save** to apply redaction marks to the selected pages.

@@ -120,7 +120,7 @@ The **Apply Redaction** button permanently removes all marked content from the d

-A confirmation dialog appears before applying redaction to ensure you acknowledge the irreversible nature of the process.
+A confirmation dialog appears before applying redaction to ensure acknowledgement of the irreversible nature of the process.

diff --git a/Document-Processing/PDF/PDF-Viewer/vue/accessibility.md b/Document-Processing/PDF/PDF-Viewer/vue/accessibility.md
index b16ada99e0..8b0e53e0f4 100644
--- a/Document-Processing/PDF/PDF-Viewer/vue/accessibility.md
+++ b/Document-Processing/PDF/PDF-Viewer/vue/accessibility.md
@@ -10,7 +10,7 @@ domainurl: ##DomainURL##
# Accessibility in Syncfusion Vue PDF Viewer
-The PDF Viewer component followed the accessibility guidelines and standards, including [ADA](https://www.ada.gov/), [Section 508](https://www.section508.gov/), [WCAG 2.2](https://www.w3.org/TR/WCAG22/) standards, and [WCAG roles](https://www.w3.org/TR/wai-aria/#roles) that are commonly used to evaluate accessibility.
+The PDF Viewer component follows accessibility guidelines and standards, including [ADA](https://www.ada.gov/), [Section 508](https://www.section508.gov/), [WCAG 2.2](https://www.w3.org/TR/WCAG22/), and [WCAG roles](https://www.w3.org/TR/wai-aria/#roles) commonly used to evaluate accessibility.
The accessibility compliance for the PDF Viewer component is summarized below.
@@ -38,7 +38,7 @@ The accessibility compliance for the PDF Viewer component is summarized below.
- The component does not meet the requirement.
-Note: Mobile device support is marked as partial due to platform-level constraints on hover interactions, complex keyboard navigation, and screen reader capabilities that vary by device and browser.
+N> Mobile device support is marked as partial due to platform-level constraints on hover interactions, complex keyboard navigation, and screen reader capabilities that vary by device and browser.
## WAI-ARIA attributes
@@ -62,7 +62,7 @@ Note: Mobile device support is marked as partial due to platform-level constrain
## Keyboard interaction
-The PDF Viewer component follows the [keyboard interaction](https://www.w3.org/WAI/ARIA/apg/patterns/alert/#keyboardinteraction) guideline, making it easy for people who use assistive technologies (AT) and those who rely on keyboard navigation. The following keyboard shortcuts are supported by the PDF Viewer component.
+The PDF Viewer follows the [keyboard interaction](https://www.w3.org/WAI/ARIA/apg/patterns/alert/#keyboardinteraction) guideline to support users who rely on assistive technologies (AT) or keyboard navigation. The following keyboard shortcuts are supported by the PDF Viewer.
| **Press (Windows)** |**Press (Macintosh)** | **To do this** |
| --- | --- | --- |
@@ -97,7 +97,15 @@ The PDF Viewer component follows the [keyboard interaction](https://www.w3.org/W
|Shift + H |Shift + H |Enable pan mode|
|Shift + V |Shift + V |Enable text selection mode|
-The PDF Viewer supports custom keyboard commands through a `commandManager`, which handles commands triggered by specific key gestures. Custom commands are defined by users and executed accordingly. The `commandManager` includes a `keyboardCommand` collection to hold custom keyboard commands. Each custom command is represented by a `KeyboardCommand` entry, containing the command name and associated keyboard combination. Additionally, the `keyboardCustomCommands` parameter utilizes an event callback to handle keyboard events and trigger methods when specific key combinations are pressed.
+The PDF Viewer includes keyboard shortcuts for scrolling, zooming, text search, printing, and annotation deletion.
+
+Additional keyboard shortcuts are available for common actions such as navigating between pages, accessing specific pages, toggling annotation tools, and displaying PDF elements (outlines, annotations, bookmarks, thumbnails).
+
+To support custom key bindings, the viewer provides a `commandManager` configuration object that handles custom commands triggered by specified key gestures. Custom commands are defined by name and executed when their associated key gesture is detected.
+
+The `commandManager` configuration includes a `keyboardCommand` collection that holds user-defined keyboard commands. Each command is represented by a `KeyboardCommand` object containing a `name` and an associated `gesture` describing the key combination.
+
+The `keyboardCustomCommands` parameter is an event callback invoked when a custom key combination is detected; handlers can perform application-specific actions in response.
{% tabs %}
{% highlight html tabtitle="Composition API (Standalone)" %}
@@ -370,7 +378,7 @@ Key modifiers used in gestures:
- Shift corresponds to the Shift key (value `4`).
- Meta corresponds to the Command key on macOS or the Windows key on Windows (value `8`).
-This setup enables users to perform custom actions within the PDF Viewer by pressing specific key combinations, improving navigation and interaction efficiency.
+This enables custom actions within the PDF Viewer when specific key combinations are pressed, improving navigation and interaction efficiency.
## Ensuring accessibility
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/annotation/annotation-event.md b/Document-Processing/PDF/PDF-Viewer/vue/annotation/annotation-event.md
index b20dc92e04..e1ddf0e701 100644
--- a/Document-Processing/PDF/PDF-Viewer/vue/annotation/annotation-event.md
+++ b/Document-Processing/PDF/PDF-Viewer/vue/annotation/annotation-event.md
@@ -8,38 +8,40 @@ documentation: ug
domainurl: ##DomainURL##
---
-# PDF Viewer Annotation events in Vue
+# PDF Viewer annotation events in Vue
-The PDF Viewer component triggers various events based on user interactions and changes in the component's state. These events can be used to perform actions when a specific event occurs. This section describes the events available in the PDF Viewer component.
+The PDF Viewer control supports several annotation events that enable applications to respond to user interactions—adding, moving, resizing, selecting, and removing annotations. Examples in this article reference the resource URL shown in the code samples.
+
+The annotation events supported by the PDF Viewer control are:
| Event | Description |
| ------------------------------------------------------------------ | ---------------------------------------------------------------------------------- |
-| [`annotationAdd`](#annotationadd) | Triggers when an annotation is added to a page in the PDF document. |
-| [`annotationDoubleClick`](#annotationdoubleclick) | Triggers when an annotation is double-clicked. |
-| [`annotationMouseLeave`](#annotationmouseleave) | Triggers when the mouse pointer moves away from an annotation object. |
-| [`annotationMouseover`](#annotationmouseover) | Triggers when the mouse pointer moves over an annotation object. |
-| [`annotationMove`](#annotationmove) | Triggers when an annotation is moved on a page in the PDF document. |
-| [`annotationMoving`](#annotationmoving) | Triggers while an annotation is being moved. |
-| [`annotationPropertiesChange`](#annotationpropertieschange) | Triggers when the properties of an annotation are modified on a PDF page. |
-| [`annotationRemove`](#annotationremove) | Triggers when an annotation is removed from a page in the PDF document. |
-| [`annotationResize`](#annotationresize) | Triggers when an annotation is resized on a page in the PDF document. |
-| [`annotationSelect`](#annotationselect) | Triggers when an annotation is selected on a page in the PDF document. |
-| [`annotationUnSelect`](#annotationunselect) | Triggers when an annotation is unselected on a page in the PDF document. |
-| [`beforeAddFreeText`](#beforeaddfreetext) | Triggers before adding a text in the freeText annotation. |
-| [`addSignature`](#addsignature) | Triggers when a signature is added to a page in the PDF document. |
-| [`removeSignature`](#removesignature) | Triggers when a signature is removed from a page in the PDF document. |
-| [`resizeSignature`](#resizesignature) | Triggers when a signature is resized on a page in the PDF document. |
-| [`signaturePropertiesChange`](#signaturepropertieschange) | Triggers when the properties of a signature are changed on a page in the PDF document. |
-| [`signatureSelect`](#signatureselect) | Triggers when a signature is selected on a page in the PDF document. |
-| [`signatureUnselect`](#signatureunselect) | Triggers when a signature is unselected on a page in the PDF document. |
+| [annotationAdd](#annotationadd) | Triggers when an annotation is added. |
+| [annotationDoubleClick](#annotationdoubleclick) | Triggers when an annotation is double-clicked. |
+| [annotationMouseLeave](#annotationmouseleave) | Triggers when the mouse cursor leaves an annotation. |
+| [annotationMouseover](#annotationmouseover) | Triggers when the mouse cursor moves over an annotation. |
+| [annotationMove](#annotationmove) | Triggers when an annotation is moved. |
+| [annotationMoving](#annotationmoving) | Triggers while an annotation is being moved. |
+| [annotationPropertiesChange](#annotationpropertieschange) | Triggers when an annotation's properties are changed. |
+| [annotationRemove](#annotationremove) | Triggers when an annotation is removed. |
+| [annotationResize](#annotationresize) | Triggers when an annotation is resized. |
+| [annotationSelect](#annotationselect) | Triggers when an annotation is selected. |
+| [annotationUnselect](#annotationunselect) | Triggers when an annotation is unselected. |
+| [beforeAddFreeText](#beforeaddfreetext) | Triggers before adding free text. |
+| [addSignature](#addsignature) | Triggers when a signature is added. |
+| [removeSignature](#removesignature) | Triggers when a signature is removed. |
+| [resizeSignature](#resizesignature) | Triggers when a signature is resized. |
+| [signaturePropertiesChange](#signaturepropertieschange) | Triggers when signature properties change. |
+| [signatureSelect](#signatureselect) | Triggers when a signature is selected. |
+| [signatureUnselect](#signatureunselect) | Triggers when a signature is unselected. | |
### annotationAdd
-The [annotationAdd](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotationAddEventArgs/) event is triggered when an annotation is added to a PDF document's page.
+The [annotationAdd](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#annotationadd) event triggers when an annotation is added to a PDF document's page.
#### Event Arguments
-For event data, see [AnnotationAddEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotationAddEventArgs/). It provides properties such as `annotationId`, `pageNumber`, `annotationType`, and `bounds`.
+For event data, see [AnnotationAddEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotationAddEventArgs). It provides properties such as `annotationId`, `pageNumber`, `annotationType`, and `bounds`.
The following example illustrates how to handle the `annotationAdd` event.
@@ -114,11 +116,11 @@ The following example illustrates how to handle the `annotationAdd` event.
### annotationDoubleClick
-The [annotationDoubleClick](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotationDoubleClickEventArgs/) event is triggered when an annotation is double-clicked.
+The [annotationDoubleClick](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#annotationdoubleclick) event triggers when an annotation is double-clicked.
#### Event Arguments
-For event data, see [AnnotationDoubleClickEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotationDoubleClickEventArgs/).
+For event data, see [AnnotationDoubleClickEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotationDoubleClickEventArgs).
The following example illustrates how to handle the `annotationDoubleClick` event.
@@ -191,11 +193,11 @@ The following example illustrates how to handle the `annotationDoubleClick` even
### annotationMouseLeave
-The [annotationMouseLeave](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotationMouseLeaveEventArgs/) event is triggered when the user's mouse pointer moves away from an annotation object.
+The [annotationMouseLeave](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#annotationmouseleave) event triggers when the mouse cursor leaves an annotation.
#### Event Arguments
-For event data, see [AnnotationMouseLeaveEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotationMouseLeaveEventArgs/).
+For event data, see [AnnotationMouseLeaveEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotationMouseLeaveEventArgs).
The following example illustrates how to handle the `annotationMouseLeave` event.
@@ -268,11 +270,11 @@ The following example illustrates how to handle the `annotationMouseLeave` event
### annotationMouseover
-The [annotationMouseover](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotationMouseOverEventArgs/) event is triggered when the mouse is moved over an annotation object.
+The [annotationMouseover](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#annotationmouseover) event triggers when the mouse cursor moves over an annotation.
#### Event Arguments
-For event data, see [AnnotationMouseOverEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotationMouseOverEventArgs/).
+For event data, see [AnnotationMouseOverEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotationMouseOverEventArgs).
The following example illustrates how to handle the `annotationMouseover` event.
@@ -345,11 +347,11 @@ The following example illustrates how to handle the `annotationMouseover` event.
### annotationMove
-The [annotationMove](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotationMoveEventArgs/) event is triggered when an annotation is moved over the page of the PDF document.
+The [annotationMove](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#annotationmove) event triggers when an annotation is moved.
#### Event Arguments
-For event data, see [AnnotationMoveEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotationMoveEventArgs/).
+For event data, see [AnnotationMoveEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotationMoveEventArgs).
The following example illustrates how to handle the `annotationMove` event.
@@ -422,11 +424,11 @@ The following example illustrates how to handle the `annotationMove` event.
### annotationMoving
-The [annotationMoving](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotationMovingEventArgs/) event is triggered while an annotation is being moved.
+The [annotationMoving](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#annotationmoving) event triggers while an annotation is being moved.
#### Event Arguments
-For event data, see [AnnotationMovingEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotationMovingEventArgs/).
+For event data, see [AnnotationMovingEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotationMovingEventArgs).
The following example illustrates how to handle the `annotationMoving` event.
@@ -499,11 +501,11 @@ The following example illustrates how to handle the `annotationMoving` event.
### annotationPropertiesChange
-The [annotationPropertiesChange](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotationPropertiesChangeEventArgs/) event is triggered when an annotation's property is modified on a PDF document page.
+The [annotationPropertiesChange](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#annotationpropertieschange) event triggers when an annotation’s properties are changed.
#### Event Arguments
-For event data, see [AnnotationPropertiesChangeEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotationPropertiesChangeEventArgs/). It provides properties such as `annotationId`, `pageNumber`, and `action`.
+For event data, see [AnnotationPropertiesChangeEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotationPropertiesChangeEventArgs). It provides properties such as `annotationId`, `pageNumber`, and `action`.
The following example illustrates how to handle the `annotationPropertiesChange` event.
@@ -578,11 +580,11 @@ The following example illustrates how to handle the `annotationPropertiesChange`
### annotationRemove
-The [annotationRemove](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotationRemoveEventArgs/) event is triggered when an annotation is removed from a PDF document's page.
+The [annotationRemove](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#annotationremove) event triggers when an annotation is removed.
#### Event Arguments
-For event data, see [AnnotationRemoveEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotationRemoveEventArgs/). It provides properties such as `annotationId` and `pageNumber`.
+For event data, see [AnnotationRemoveEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotationRemoveEventArgs). It provides properties such as `annotationId` and `pageNumber`.
The following example illustrates how to handle the `annotationRemove` event.
@@ -655,11 +657,11 @@ The following example illustrates how to handle the `annotationRemove` event.
### annotationResize
-The [annotationResize](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotationResizeEventArgs/) event is triggered when an annotation is resized on a PDF document page.
+The [annotationResize](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#annotationresize) event triggers when an annotation is resized.
#### Event Arguments
-For event data, see [AnnotationResizeEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotationResizeEventArgs/).
+For event data, see [AnnotationResizeEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotationResizeEventArgs).
The following example illustrates how to handle the `annotationResize` event.
@@ -732,11 +734,11 @@ The following example illustrates how to handle the `annotationResize` event.
### annotationSelect
-The [annotationSelect](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotationSelectEventArgs/) event is triggered when an annotation is selected on a PDF document's page.
+The [annotationSelect](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#annotationselect) event triggers when an annotation is selected.
#### Event Arguments
-For event data, see [AnnotationSelectEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotationSelectEventArgs/).
+For event data, see [AnnotationSelectEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotationSelectEventArgs).
The following example illustrates how to handle the `annotationSelect` event.
@@ -809,11 +811,11 @@ The following example illustrates how to handle the `annotationSelect` event.
### annotationUnselect
-The [annotationUnselect](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotationUnSelectEventArgs/) event is triggered when an annotation is unselected from the PDF document's page.
+The [annotationUnselect](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#annotationunselect) event triggers when an annotation is unselected.
#### Event Arguments
-For event data, see [AnnotationUnSelectEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotationUnSelectEventArgs/).
+For event data, see [AnnotationUnSelectEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotationUnSelectEventArgs).
The following example illustrates how to handle the `annotationUnselect` event.
@@ -886,11 +888,11 @@ The following example illustrates how to handle the `annotationUnselect` event.
### beforeAddFreeText
-The [beforeAddFreeText](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/beforeAddFreeTextEventArgs/) event is triggered before adding a text in the freeText annotation.
+The [beforeAddFreeText](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#beforeaddfreetext) event triggers before adding free text to the PDF Viewer.
#### Event Arguments
-For event data, see [BeforeAddFreeTextEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/beforeAddFreeTextEventArgs/).
+For event data, see [BeforeAddFreeTextEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/beforeAddFreeTextEventArgs).
The following example illustrates how to handle the `beforeAddFreeText` event.
@@ -969,11 +971,11 @@ The following example illustrates how to handle the `beforeAddFreeText` event.
### addSignature
-The [addSignature](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/addSignatureEventArgs/) event is triggered when a signature is added to a page of a PDF document.
+The [addSignature](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#addsignature) event triggers when a signature is added to the PDF Viewer.
#### Event Arguments
-For event data, see [AddSignatureEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/addSignatureEventArgs/). It provides properties such as `pageNumber`.
+For event data, see [AddSignatureEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/addSignatureEventArgs). It provides properties such as `pageNumber`.
The following example illustrates how to handle the `addSignature` event.
@@ -1046,11 +1048,11 @@ The following example illustrates how to handle the `addSignature` event.
### removeSignature
-The [removeSignature](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/removeSignatureEventArgs/) event is triggered when the signature is removed from the page of a PDF document.
+The [removeSignature](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#removesignature) event triggers when a signature is removed from the PDF Viewer.
#### Event Arguments
-For event data, see [RemoveSignatureEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/removeSignatureEventArgs/). It provides properties such as `pageNumber`.
+For event data, see [RemoveSignatureEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/removeSignatureEventArgs). It provides properties such as `pageNumber`.
The following example illustrates how to handle the `removeSignature` event.
@@ -1123,11 +1125,11 @@ The following example illustrates how to handle the `removeSignature` event.
### resizeSignature
-The [resizeSignature](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/resizeSignatureEventArgs/) event is triggered when the signature is resized and placed on a page of a PDF document.
+The [resizeSignature](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#resizesignature) event triggers when a signature is resized in the PDF Viewer.
#### Event Arguments
-For event data, see [ResizeSignatureEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/resizeSignatureEventArgs/).
+For event data, see [ResizeSignatureEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/resizeSignatureEventArgs).
The following example illustrates how to handle the `resizeSignature` event.
@@ -1200,11 +1202,11 @@ The following example illustrates how to handle the `resizeSignature` event.
### signaturePropertiesChange
-The [signaturePropertiesChange](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/signaturePropertiesChangeEventArgs/) event is triggered when the property of the signature is changed in the page of the PDF document.
+The [signaturePropertiesChange](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#signaturepropertieschange) event triggers when signature properties are changed in the PDF Viewer.
#### Event Arguments
-For event data, see [SignaturePropertiesChangeEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/signaturePropertiesChangeEventArgs/).
+For event data, see [SignaturePropertiesChangeEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/signaturePropertiesChangeEventArgs).
The following example illustrates how to handle the `signaturePropertiesChange` event.
@@ -1277,11 +1279,11 @@ The following example illustrates how to handle the `signaturePropertiesChange`
### signatureSelect
-The [signatureSelect](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/signatureSelectEventArgs/) event is triggered when signature is selected over the page of the PDF document.
+The [signatureSelect](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#signatureselect) event triggers when a signature is selected in the PDF Viewer.
#### Event Arguments
-For event data, see [SignatureSelectEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/signatureSelectEventArgs/).
+For event data, see [SignatureSelectEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/signatureSelectEventArgs).
The following example illustrates how to handle the `signatureSelect` event.
@@ -1354,11 +1356,11 @@ The following example illustrates how to handle the `signatureSelect` event.
### signatureUnselect
-The [signatureUnselect](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/signatureUnSelectEventArgs/) event is triggered when signature is unselected over the page of the PDF document.
+The [signatureUnselect](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#signatureunselect) event triggers when a signature is unselected in the PDF Viewer.
#### Event Arguments
-For event data, see [SignatureUnSelectEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/signatureUnSelectEventArgs/).
+For event data, see [SignatureUnSelectEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/signatureUnSelectEventArgs).
The following example illustrates how to handle the `signatureUnselect` event.
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/annotation/annotations-in-mobile-view.md b/Document-Processing/PDF/PDF-Viewer/vue/annotation/annotations-in-mobile-view.md
index 75875a4225..cac0c5d9f9 100644
--- a/Document-Processing/PDF/PDF-Viewer/vue/annotation/annotations-in-mobile-view.md
+++ b/Document-Processing/PDF/PDF-Viewer/vue/annotation/annotations-in-mobile-view.md
@@ -9,114 +9,116 @@ domainurl: ##DomainURL##
---
# Annotations in mobile view in Vue PDF Viewer control
+This article describes how to use annotation tools in the Syncfusion Vue PDF Viewer on touch-enabled (mobile) devices. It covers enabling the annotation toolbar, adding common annotation types, adjusting annotation properties, using comments, and removing annotations.
+
## Open the annotation toolbar
-**Step 1:** Tap Edit Annotation on the toolbar to enable the annotation toolbar.
+**Step 1:** Tap the Edit Annotation icon on the main toolbar to enable the annotation toolbar.

-**Step 2:** The annotation toolbar appears below the main toolbar.
+**Step 2:** The annotation toolbar opens below the main toolbar, showing available annotation tools for touch interaction.

## Add sticky note annotations
-**Step 1:** Tap the Sticky Notes icon, then tap the page where the note should be placed.
+**Step 1:** Tap the Sticky Notes icon to activate the sticky note tool, then tap the target location on the page to place a note.

-**Step 2:** Tap the page to add the sticky note annotation.
+**Step 2:** A sticky note annotation is added at the tapped location; tap the note to open or edit its content.

## Add text markup annotations
-**Step 1:** Tap a text markup icon, select the text to mark, then tap the selection to apply the markup.
+**Step 1:** Tap a text markup tool (for example, highlight or underline), then drag to select the text to be marked.

-**Step 2:** The text markup annotation is applied to the selected text.
+**Step 2:** Tap the selected area or use the toolbar action to apply the markup; the selected text is then annotated accordingly.

## Add shape and measurement annotations
-**Step 1:** Tap the Shape or Measure icon to open the corresponding toolbar.
+**Step 1:** Tap the Shape or Measure icon to open the shape/measurement toolbar.

-**Step 2:** Choose a shape or measurement type, then draw it on the page.
+**Step 2:** Choose a shape or measurement type, then draw the annotation on the page using touch gestures.

-**Step 3:** The annotation appears on the PDF page.
+**Step 3:** The shape or measurement annotation is added to the PDF and can be adjusted via its property toolbar.

## Add stamp annotations
-**Step 1:** Tap the Stamp icon and select a stamp type from the menu.
+**Step 1:** Tap the Stamp icon, then choose a stamp type from the presented menu.

-**Step 2:** Tap the page to place the stamp annotation.
+**Step 2:** Tap the desired location on the page to place the stamp annotation.

## Add signature annotations
-**Step 1:** Tap the Signature icon to open the canvas. Draw the signature, tap Create, then tap the viewer to place it.
+**Step 1:** Tap the Signature icon to open the signature canvas. Draw the signature, tap Create, then tap the viewer to place the signature on the page.

-**Step 2:** The signature is added to the page.
+**Step 2:** The signature annotation is added and can be positioned or resized using standard touch controls.

## Add ink annotations
-**Step 1:** Tap the Ink tool and draw on the page.
+**Step 1:** Tap the Ink tool and draw directly on the page using a finger or stylus.

-**Step 2:** The ink annotation appears on the page.
+**Step 2:** The ink strokes are saved as an ink annotation and remain editable until committed.

## Change annotation properties (before adding)
-**Step 1:** Change properties before placing the annotation.
+**Step 1:** Open the annotation property toolbar prior to placing an annotation to set attributes such as color, opacity, stroke thickness, font, or measurement units.
-**Step 2:** Tap the annotation icon to open the property toolbar, adjust properties, then place the annotation on the page.
+**Step 2:** With the desired properties selected in the property toolbar, place the annotation on the page; the chosen settings apply to the new annotation.

## Change annotation properties (after adding)
-**Step 1:** Change annotation properties after adding the annotation.
+**Step 1:** Select an existing annotation to reveal its property toolbar.
-**Step 2:** Select the annotation to show the property toolbar, then adjust the properties.
+**Step 2:** Adjust properties such as color, opacity, stroke, or edit text; changes are applied immediately to the selected annotation.

## Delete annotations
-**Step 1:** Select the annotation to show the property toolbar, then tap the Delete icon to remove it.
+**Step 1:** Select the annotation to display its property toolbar, then tap the Delete icon to remove the annotation from the page.

## Open the comment panel
-**Step 1:** Open the comment panel using the icon in the property toolbar or the annotation toolbar.
+**Step 1:** Tap the comment icon in the property toolbar or the annotation toolbar to open the comment panel for the selected annotation.

-**Step 2:** The comment panel appears.
+**Step 2:** The comment panel appears, showing existing comments and allowing new comments to be added.

## Close the comment panel
-**Step 1:** Tap the Close button to close the comment panel.
+**Step 1:** Tap the Close button in the comment panel to dismiss it and return to the document view.

diff --git a/Document-Processing/PDF/PDF-Viewer/vue/annotation/comments.md b/Document-Processing/PDF/PDF-Viewer/vue/annotation/comments.md
index c090a66a96..aad161cf08 100644
--- a/Document-Processing/PDF/PDF-Viewer/vue/annotation/comments.md
+++ b/Document-Processing/PDF/PDF-Viewer/vue/annotation/comments.md
@@ -107,6 +107,8 @@ Edit comments and replies in the following ways:

+N> Deleting the root comment from the comment panel also deletes the associated annotation.
+
## How to check the comments added by the user
Comments added to the PDF document can be read using the annotation's `comments` property.
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/annotation/free-text-annotation.md b/Document-Processing/PDF/PDF-Viewer/vue/annotation/free-text-annotation.md
index f59d255dd5..bb51d3ef14 100644
--- a/Document-Processing/PDF/PDF-Viewer/vue/annotation/free-text-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/vue/annotation/free-text-annotation.md
@@ -10,7 +10,7 @@ domainurl: ##DomainURL##
# Free text annotation in Vue PDF Viewer control
-The PDF Viewer control provides options to add, edit, and delete free text annotations.
+The PDF Viewer control supports adding, editing, and deleting free text annotations. This article explains how to add free text annotations using the toolbar and programmatically, modify their properties, and manage selection and focus.
## Add a free text annotation to the PDF document
@@ -20,7 +20,7 @@ Free text annotations can be added to the PDF document using the annotation tool
* Select the **Free Text Annotation** button to enable free text annotation mode.
* Add text anywhere on the pages of the PDF document.
-When in pan mode, selecting free text annotation switches the PDF Viewer to text select mode.
+When in pan mode, selecting free text annotation switches the PDF Viewer to text-selection mode.

@@ -45,8 +45,9 @@ import {
BookmarkView, Annotation, ThumbnailView, Print, TextSelection,
TextSearch, FormFields, FormDesigner, PageOrganizer
} from '@syncfusion/ej2-vue-pdfviewer';
-import { provide } from 'vue';
+import { provide, ref } from 'vue';
+const pdfviewer = ref(null);
const documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
const resourceUrl = 'https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib';
@@ -55,7 +56,7 @@ provide('PdfViewer', [Toolbar, Magnification, Navigation, LinkAnnotation, Bookma
const documentLoad = () => {
document.getElementById('set').addEventListener('click', () => {
- this.$refs.pdfviewer.ej2Instances.annotation.setAnnotationMode('FreeText');
+ pdfviewer.value.ej2Instances.annotation.setAnnotationMode('FreeText');
});
}
@@ -125,8 +126,9 @@ import {
BookmarkView, Annotation, ThumbnailView, Print, TextSelection,
TextSearch, FormFields, FormDesigner, PageOrganizer
} from '@syncfusion/ej2-vue-pdfviewer';
-import { provide } from 'vue';
+import { provide, ref } from 'vue';
+const pdfviewer = ref(null);
const serviceUrl = "https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer";
const documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
@@ -135,7 +137,7 @@ provide('PdfViewer', [Toolbar, Magnification, Navigation, LinkAnnotation, Bookma
const documentLoad = () => {
document.getElementById('set').addEventListener('click', () => {
- this.$refs.pdfviewer.ej2Instances.annotation.setAnnotationMode('FreeText');
+ pdfviewer.value.ej2Instances.annotation.setAnnotationMode('FreeText');
});
}
@@ -190,7 +192,7 @@ export default {
## Add a free text annotation programmatically to the PDF document
-The PDF Viewer library allows adding a free text annotation programmatically using the [addAnnotation()](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotation/#annotation) method.
+The PDF Viewer library allows adding a free text annotation programmatically using the [addAnnotation()](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotation#annotation) method.
Here is an example of adding a free text annotation programmatically using addAnnotation():
@@ -599,61 +601,61 @@ export default {
N> The current version of the PDF Viewer does not edit existing document text. New free text annotations can be added and modified within the document.
-## Edit the properties of free text annotations
+## Edit free text annotation properties
-Font family, font size, styles, font color, text alignment, fill color, stroke color, border thickness, and opacity can be edited using the Font Family, Font Size, Font Color, Text Align, Font Style, Edit Color, Edit Stroke Color, Edit Thickness, and Edit Opacity tools in the annotation toolbar.
+Free text annotation properties that can be modified using the annotation toolbar include font family, font size, font styles, font color, text alignment, fill color, stroke color, border thickness, and opacity. The toolbar provides dedicated controls for each of these settings.
-### Edit font family
+## Font family
-Edit the font family by selecting a font in the Font Family tool.
+Choose a font family from the Font Family tool to update the annotation text.

-### Edit font size
+### Font size
-Edit the font size by selecting a size in the Font Size tool.
+Choose a size from the Font Size tool to update the annotation text size.

-### Edit font color
+### Font color
-Edit the font color using the color palette in the Font Color tool.
+Select a color from the Font Color palette to change the font color.

-### Edit the text alignment
+### Text alignment
-Align text by selecting an option from the Text Align tool.
+Use the Text Align tool to set the annotation text alignment.

-### Edit text styles
+### Font styles
-Edit text styles by selecting options in the Font Style tool.
+Enable bold, italic, or underline using the Font Style tool.

-### Edit fill color
+### Fill color
-Edit the fill color using the color palette in the Edit Color tool.
+Set the annotation background using the Edit Color tool.

-### Edit stroke color
+### Stroke color
-Edit the stroke color using the color palette in the Edit Stroke Color tool.
+Set the annotation border color using the Edit Stroke Color tool.

-### Edit thickness
+### Thickness
-Edit border thickness using the range slider in the Edit Thickness tool.
+Adjust border thickness with the Edit Thickness slider.

-### Edit opacity
+### Opacity
-Edit opacity using the range slider in the Edit Opacity tool.
+Adjust annotation opacity with the Edit Opacity slider.

diff --git a/Document-Processing/PDF/PDF-Viewer/vue/annotation/ink-annotation.md b/Document-Processing/PDF/PDF-Viewer/vue/annotation/ink-annotation.md
index 69f40b7d3c..439912e273 100644
--- a/Document-Processing/PDF/PDF-Viewer/vue/annotation/ink-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/vue/annotation/ink-annotation.md
@@ -195,7 +195,7 @@ export default {
## Add an Ink annotation programmatically to the PDF document Programmatically
-The PDF Viewer library allows adding an ink annotation programmatically using the [addAnnotation()](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotation/#addannotation) method.
+The PDF Viewer library allows adding an ink annotation programmatically using the [addAnnotation()](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotation#addannotation) method.
Here is an example of adding an ink annotation programmatically using addAnnotation():
@@ -280,7 +280,7 @@ export default {
pageNumber: 1,
width: 200,
height: 60,
- path: '[{\"command\":\"M\",\"x\":244.83334350585938,\"y\":982.0000305175781},{\"command\":\"L\",\"x\":244.83334350585938,\"y\":982.0000305175781},{\"command\":\"L\",\"x\":250.83334350585938,\"y\":953.3333435058594},{\"command\":\"L\",\"x\":252.83334350585938,\"y\":946.0000305175781},{\"command\":\"L\",\"x\":254.16668701171875,\"y\":940.6667175292969},{\"command\":\"L\",\"x\":256.8333435058594,\"y\":931.3333435058594},{\"command\":\"L\",\"x\":257.5,\"y\":929.3333435058594},{\"command\":\"L\",\"x\":258.8333435058594,\"y\":926.6667175292969},{\"command\":\"L\",\"x\":259.5,\"y\":924.0000305175781},{\"command\":\"L\",\"x\":259.5,\"y\":922.6667175292969},{\"command\":\"L\",\"x\":258.8333435058594,\"y\":922.0000305175781},{\"command\":\"L\",\"x\":258.16668701171875,\"y\":922.0000305175781},{\"command\":\"L\",\"x\":256.8333435058594,\"y\":922.0000305175781},{\"command\":\"L\",\"x\":256.16668701171875,\"y\":922.6667175292969},{\"command\":\"L\",\"x\":254.83334350585938,\"y\":923.3333435058594},{\"command\":\"L\",\"x\":254.16668701171875,\"y\":923.3333435058594},{\"command\":\"L\",\"x\":253.5,\"y\":923.3333435058594},{\"command\":\"L\",\"x\":252.83334350585938,\"y\":925.3333435058594},{\"command\":\"L\",\"x\":252.83334350585938,\"y\":927.3333435058594},{\"command\":\"L\",\"x\":252.83334350585938,\"y\":936.0000305175781},{\"command\":\"L\",\"x\":253.5,\"y\":940.6667175292969},{\"command\":\"L\",\"x\":254.83334350585938,\"y\":944.6667175292969},{\"command\":\"L\",\"x\":260.16668701171875,\"y\":952.0000305175781},{\"command\":\"L\",\"x\":264.16668701171875,\"y\":954.0000305175781},{\"command\":\"L\",\"x\":274.16668701171875,\"y\":958.6667175292969},{\"command\":\"L\",\"x\":278.16668701171875,\"y\":960.0000305175781},{\"command\":\"L\",\"x\":281.5,\"y\":961.3333435058594},{\"command\":\"L\",\"x\":285.5,\"y\":964.6667175292969},{\"command\":\"L\",\"x\":286.8333740234375,\"y\":967.3333435058594},{\"command\":\"L\",\"x\":286.8333740234375,\"y\":970.0000305175781},{\"command\":\"L\",\"x\":282.8333740234375,\"y\":978.6667175292969},{\"command\":\"L\",\"x\":278.16668701171875,\"y\":983.3333435058594},{\"command\":\"L\",\"x\":266.16668701171875,\"y\":991.3333435058594},{\"command\":\"L\",\"x\":259.5,\"y\":993.3333435058594},{\"command\":\"L\",\"x\":252.16668701171875,\"y\":994.0000305175781},{\"command\":\"L\",\"x\":240.83334350585938,\"y\":991.3333435058594},{\"command\":\"L\",\"x\":236.16668701171875,\"y\":988.6667175292969},{\"command\":\"L\",\"x\":230.16668701171875,\"y\":982.6667175292969},{\"command\":\"L\",\"x\":228.83334350585938,\"y\":980.6667175292969},{\"command\":\"L\",\"x\":228.16668701171875,\"y\":978.6667175292969},{\"command\":\"L\",\"x\":228.83334350585938,\"y\":974.6667175292969},{\"command\":\"L\",\"x\":230.16668701171875,\"y\":973.3333435058594},{\"command\":\"L\",\"x\":236.16668701171875,\"y\":971.3333435058594},{\"command\":\"L\",\"x\":240.83334350585938,\"y\":971.3333435058594},{\"command\":\"L\",\"x\":246.16668701171875,\"y\":972.0000305175781},{\"command\":\"L\",\"x\":257.5,\"y\":974.6667175292969},{\"command\":\"L\",\"x\":262.8333435058594,\"y\":976.0000305175781},{\"command\":\"L\",\"x\":269.5,\"y\":977.3333435058594},{\"command\":\"L\",\"x\":276.16668701171875,\"y\":978.6667175292969},{\"command\":\"L\",\"x\":279.5,\"y\":978.0000305175781},{\"command\":\"L\",\"x\":285.5,\"y\":976.6667175292969},{\"command\":\"L\",\"x\":288.16668701171875,\"y\":974.6667175292969},{\"command\":\"L\",\"x\":292.8333740234375,\"y\":969.3333435058594},{\"command\":\"L\",\"x\":293.5,\"y\":966.6667175292969},{\"command\":\"L\",\"x\":294.16668701171875,\"y\":964.0000305175781},{\"command\":\"L\",\"x\":293.5,\"y\":960.0000305175781},{\"command\":\"L\",\"x\":293.5,\"y\":958.0000305175781},{\"command\":\"L\",\"x\":292.8333740234375,\"y\":956.6667175292969},{\"command\":\"L\",\"x\":291.5,\"y\":954.6667175292969},{\"command\":\"L\",\"x\":291.5,\"y\":954.0000305175781},{\"command\":\"L\",\"x\":291.5,\"y\":953.3333435058594},{\"command\":\"L\",\"x\":291.5,\"y\":954.0000305175781},{\"command\":\"L\",\"x\":292.16668701171875,\"y\":954.6667175292969},{\"command\":\"L\",\"x\":292.8333740234375,\"y\":956.0000305175781},{\"command\":\"L\",\"x\":294.16668701171875,\"y\":961.3333435058594},{\"command\":\"L\",\"x\":295.5,\"y\":964.6667175292969},{\"command\":\"L\",\"x\":297.5,\"y\":969.3333435058594},{\"command\":\"L\",\"x\":298.8333740234375,\"y\":970.6667175292969},{\"command\":\"L\",\"x\":301.5,\"y\":970.0000305175781},{\"command\":\"L\",\"x\":304.16668701171875,\"y\":968.6667175292969},{\"command\":\"L\",\"x\":305.5,\"y\":966.0000305175781},{\"command\":\"L\",\"x\":308.8333740234375,\"y\":960.0000305175781},{\"command\":\"L\",\"x\":310.16668701171875,\"y\":957.3333435058594},{\"command\":\"L\",\"x\":310.8333740234375,\"y\":956.0000305175781},{\"command\":\"L\",\"x\":310.8333740234375,\"y\":954.6667175292969},{\"command\":\"L\",\"x\":310.8333740234375,\"y\":954.0000305175781},{\"command\":\"L\",\"x\":311.5,\"y\":956.0000305175781},{\"command\":\"L\",\"x\":312.8333740234375,\"y\":959.3333435058594},{\"command\":\"L\",\"x\":316.16668701171875,\"y\":968.0000305175781},{\"command\":\"L\",\"x\":317.5,\"y\":972.6667175292969},{\"command\":\"L\",\"x\":318.16668701171875,\"y\":977.3333435058594},{\"command\":\"L\",\"x\":319.5,\"y\":983.3333435058594},{\"command\":\"L\",\"x\":319.5,\"y\":986.0000305175781},{\"command\":\"L\",\"x\":319.5,\"y\":988.0000305175781},{\"command\":\"L\",\"x\":318.8333740234375,\"y\":988.0000305175781},{\"command\":\"L\",\"x\":318.16668701171875,\"y\":988.6667175292969},{\"command\":\"L\",\"x\":316.16668701171875,\"y\":987.3333435058594},{\"command\":\"L\",\"x\":314.8333740234375,\"y\":985.3333435058594},{\"command\":\"L\",\"x\":314.16668701171875,\"y\":980.6667175292969},{\"command\":\"L\",\"x\":314.8333740234375,\"y\":974.6667175292969},{\"command\":\"L\",\"x\":316.16668701171875,\"y\":969.3333435058594},{\"command\":\"L\",\"x\":319.5,\"y\":960.6667175292969},{\"command\":\"L\",\"x\":320.16668701171875,\"y\":957.3333435058594},{\"command\":\"L\",\"x\":321.5,\"y\":955.3333435058594},{\"command\":\"L\",\"x\":322.16668701171875,\"y\":953.3333435058594},{\"command\":\"L\",\"x\":322.8333740234375,\"y\":952.6667175292969},{\"command\":\"L\",\"x\":324.16668701171875,\"y\":952.6667175292969},{\"command\":\"L\",\"x\":324.8333740234375,\"y\":953.3333435058594},{\"command\":\"L\",\"x\":326.8333740234375,\"y\":956.0000305175781},{\"command\":\"L\",\"x\":328.16668701171875,\"y\":958.0000305175781},{\"command\":\"L\",\"x\":328.8333740234375,\"y\":960.0000305175781},{\"command\":\"L\",\"x\":329.5,\"y\":962.0000305175781},{\"command\":\"L\",\"x\":330.16668701171875,\"y\":962.0000305175781},{\"command\":\"L\",\"x\":330.16668701171875,\"y\":962.6667175292969},{\"command\":\"L\",\"x\":330.16668701171875,\"y\":962.0000305175781},{\"command\":\"L\",\"x\":330.8333740234375,\"y\":960.0000305175781},{\"command\":\"L\",\"x\":331.5,\"y\":956.0000305175781},{\"command\":\"L\",\"x\":332.8333740234375,\"y\":952.0000305175781},{\"command\":\"L\",\"x\":333.5,\"y\":950.0000305175781},{\"command\":\"L\",\"x\":334.8333740234375,\"y\":948.6667175292969},{\"command\":\"L\",\"x\":335.5,\"y\":948.6667175292969},{\"command\":\"L\",\"x\":336.16668701171875,\"y\":948.6667175292969},{\"command\":\"L\",\"x\":337.5,\"y\":950.6667175292969},{\"command\":\"L\",\"x\":338.8333740234375,\"y\":952.0000305175781},{\"command\":\"L\",\"x\":340.8333740234375,\"y\":954.0000305175781},{\"command\":\"L\",\"x\":341.5,\"y\":954.0000305175781},{\"command\":\"L\",\"x\":342.8333740234375,\"y\":954.6667175292969},{\"command\":\"L\",\"x\":344.8333740234375,\"y\":954.0000305175781},{\"command\":\"L\",\"x\":346.8333740234375,\"y\":952.6667175292969},{\"command\":\"L\",\"x\":349.5,\"y\":949.3333435058594},{\"command\":\"L\",\"x\":350.8333740234375,\"y\":948.0000305175781},{\"command\":\"L\",\"x\":351.5,\"y\":946.6667175292969},{\"command\":\"L\",\"x\":352.8333740234375,\"y\":944.0000305175781},{\"command\":\"L\",\"x\":352.8333740234375,\"y\":943.3333435058594},{\"command\":\"L\",\"x\":354.16668701171875,\"y\":942.0000305175781},{\"command\":\"L\",\"x\":354.8333740234375,\"y\":942.0000305175781},{\"command\":\"L\",\"x\":354.8333740234375,\"y\":942.6667175292969},{\"command\":\"L\",\"x\":354.16668701171875,\"y\":943.3333435058594},{\"command\":\"L\",\"x\":354.16668701171875,\"y\":946.6667175292969},{\"command\":\"L\",\"x\":354.16668701171875,\"y\":950.0000305175781},{\"command\":\"L\",\"x\":355.5,\"y\":956.0000305175781},{\"command\":\"L\",\"x\":356.16668701171875,\"y\":957.3333435058594},{\"command\":\"L\",\"x\":358.16668701171875,\"y\":959.3333435058594},{\"command\":\"L\",\"x\":360.16668701171875,\"y\":958.0000305175781},{\"command\":\"L\",\"x\":364.16668701171875,\"y\":956.0000305175781},{\"command\":\"L\",\"x\":370.8333740234375,\"y\":948.6667175292969},{\"command\":\"L\",\"x\":373.5,\"y\":943.3333435058594},{\"command\":\"L\",\"x\":375.5,\"y\":937.3333435058594},{\"command\":\"L\",\"x\":376.16668701171875,\"y\":933.3333435058594},{\"command\":\"L\",\"x\":376.8333740234375,\"y\":931.3333435058594},{\"command\":\"L\",\"x\":376.8333740234375,\"y\":930.0000305175781},{\"command\":\"L\",\"x\":376.8333740234375,\"y\":929.3333435058594},{\"command\":\"L\",\"x\":376.16668701171875,\"y\":930.0000305175781},{\"command\":\"L\",\"x\":375.5,\"y\":932.0000305175781},{\"command\":\"L\",\"x\":375.5,\"y\":937.3333435058594},{\"command\":\"L\",\"x\":374.8333740234375,\"y\":953.3333435058594},{\"command\":\"L\",\"x\":374.8333740234375,\"y\":960.6667175292969},{\"command\":\"L\",\"x\":375.5,\"y\":966.0000305175781},{\"command\":\"L\",\"x\":377.5,\"y\":974.6667175292969},{\"command\":\"L\",\"x\":378.16668701171875,\"y\":977.3333435058594},{\"command\":\"L\",\"x\":380.8333740234375,\"y\":981.3333435058594},{\"command\":\"L\",\"x\":382.16668701171875,\"y\":982.6667175292969},{\"command\":\"L\",\"x\":383.5,\"y\":982.6667175292969},{\"command\":\"L\",\"x\":387.5,\"y\":982.6667175292969},{\"command\":\"L\",\"x\":389.5,\"y\":980.6667175292969},{\"command\":\"L\",\"x\":392.16668701171875,\"y\":976.6667175292969},{\"command\":\"L\",\"x\":392.8333740234375,\"y\":973.3333435058594},{\"command\":\"L\",\"x\":392.16668701171875,\"y\":970.0000305175781},{\"command\":\"L\",\"x\":388.8333740234375,\"y\":965.3333435058594},{\"command\":\"L\",\"x\":385.5,\"y\":964.0000305175781},{\"command\":\"L\",\"x\":382.8333740234375,\"y\":964.0000305175781},{\"command\":\"L\",\"x\":377.5,\"y\":964.0000305175781},{\"command\":\"L\",\"x\":375.5,\"y\":964.6667175292969},{\"command\":\"L\",\"x\":373.5,\"y\":965.3333435058594},{\"command\":\"L\",\"x\":374.8333740234375,\"y\":963.3333435058594},{\"command\":\"L\",\"x\":376.8333740234375,\"y\":961.3333435058594},{\"command\":\"L\",\"x\":382.16668701171875,\"y\":956.0000305175781},{\"command\":\"L\",\"x\":384.16668701171875,\"y\":953.3333435058594},{\"command\":\"L\",\"x\":387.5,\"y\":950.6667175292969},{\"command\":\"L\",\"x\":388.16668701171875,\"y\":952.0000305175781},{\"command\":\"L\",\"x\":388.16668701171875,\"y\":952.6667175292969},{\"command\":\"L\",\"x\":388.8333740234375,\"y\":954.0000305175781},{\"command\":\"L\",\"x\":388.8333740234375,\"y\":954.6667175292969},{\"command\":\"L\",\"x\":389.5,\"y\":959.3333435058594},{\"command\":\"L\",\"x\":389.5,\"y\":960.6667175292969},{\"command\":\"L\",\"x\":390.16668701171875,\"y\":961.3333435058594},{\"command\":\"L\",\"x\":390.8333740234375,\"y\":960.6667175292969},{\"command\":\"L\",\"x\":393.5,\"y\":958.0000305175781},{\"command\":\"L\",\"x\":396.8333740234375,\"y\":954.0000305175781},{\"command\":\"L\",\"x\":398.16668701171875,\"y\":952.0000305175781},{\"command\":\"L\",\"x\":400.16668701171875,\"y\":949.3333435058594},{\"command\":\"L\",\"x\":400.16668701171875,\"y\":948.6667175292969},{\"command\":\"L\",\"x\":400.8333740234375,\"y\":948.0000305175781},{\"command\":\"L\",\"x\":400.8333740234375,\"y\":947.3333435058594},{\"command\":\"L\",\"x\":401.5,\"y\":948.0000305175781},{\"command\":\"L\",\"x\":402.16668701171875,\"y\":949.3333435058594},{\"command\":\"L\",\"x\":403.5,\"y\":950.6667175292969},{\"command\":\"L\",\"x\":404.8333740234375,\"y\":953.3333435058594},{\"command\":\"L\",\"x\":406.16668701171875,\"y\":954.0000305175781},{\"command\":\"L\",\"x\":407.5,\"y\":954.0000305175781},{\"command\":\"L\",\"x\":410.16668701171875,\"y\":952.0000305175781},{\"command\":\"L\",\"x\":412.16668701171875,\"y\":949.3333435058594},{\"command\":\"L\",\"x\":414.16668701171875,\"y\":944.6667175292969},{\"command\":\"L\",\"x\":414.16668701171875,\"y\":942.0000305175781},{\"command\":\"L\",\"x\":414.16668701171875,\"y\":940.6667175292969},{\"command\":\"L\",\"x\":414.16668701171875,\"y\":938.6667175292969},{\"command\":\"L\",\"x\":414.16668701171875,\"y\":938.0000305175781},{\"command\":\"L\",\"x\":415.5,\"y\":939.3333435058594},{\"command\":\"L\",\"x\":418.8333740234375,\"y\":942.6667175292969},{\"command\":\"L\",\"x\":420.16668701171875,\"y\":945.3333435058594},{\"command\":\"L\",\"x\":421.5,\"y\":946.6667175292969},{\"command\":\"L\",\"x\":422.8333740234375,\"y\":950.0000305175781},{\"command\":\"L\",\"x\":423.5,\"y\":950.6667175292969},{\"command\":\"L\",\"x\":423.5,\"y\":953.3333435058594},{\"command\":\"L\",\"x\":422.8333740234375,\"y\":954.0000305175781},{\"command\":\"L\",\"x\":421.5,\"y\":955.3333435058594},{\"command\":\"L\",\"x\":421.5,\"y\":956.0000305175781},{\"command\":\"L\",\"x\":422.16668701171875,\"y\":954.6667175292969},{\"command\":\"L\",\"x\":422.8333740234375,\"y\":954.0000305175781},{\"command\":\"L\",\"x\":424.8333740234375,\"y\":950.6667175292969},{\"command\":\"L\",\"x\":425.5,\"y\":948.6667175292969},{\"command\":\"L\",\"x\":428.16668701171875,\"y\":945.3333435058594},{\"command\":\"L\",\"x\":428.8333740234375,\"y\":943.3333435058594},{\"command\":\"L\",\"x\":428.8333740234375,\"y\":942.6667175292969},{\"command\":\"L\",\"x\":428.8333740234375,\"y\":943.3333435058594},{\"command\":\"L\",\"x\":428.8333740234375,\"y\":945.3333435058594},{\"command\":\"L\",\"x\":428.8333740234375,\"y\":948.0000305175781},{\"command\":\"L\",\"x\":428.8333740234375,\"y\":950.0000305175781},{\"command\":\"L\",\"x\":429.5,\"y\":953.3333435058594},{\"command\":\"L\",\"x\":430.16668701171875,\"y\":953.3333435058594},{\"command\":\"L\",\"x\":432.8333740234375,\"y\":952.6667175292969},{\"command\":\"L\",\"x\":434.8333740234375,\"y\":950.6667175292969},{\"command\":\"L\",\"x\":437.5,\"y\":948.6667175292969},{\"command\":\"L\",\"x\":440.16668701171875,\"y\":944.6667175292969},{\"command\":\"L\",\"x\":441.5,\"y\":942.6667175292969},{\"command\":\"L\",\"x\":442.16668701171875,\"y\":942.0000305175781},{\"command\":\"L\",\"x\":442.8333740234375,\"y\":941.3333435058594},{\"command\":\"L\",\"x\":442.8333740234375,\"y\":942.0000305175781},{\"command\":\"L\",\"x\":442.8333740234375,\"y\":943.3333435058594},{\"command\":\"L\",\"x\":442.8333740234375,\"y\":944.6667175292969},{\"command\":\"L\",\"x\":442.8333740234375,\"y\":946.0000305175781},{\"command\":\"L\",\"x\":443.5,\"y\":949.3333435058594},{\"command\":\"L\",\"x\":444.16668701171875,\"y\":950.6667175292969},{\"command\":\"L\",\"x\":445.5,\"y\":950.6667175292969},{\"command\":\"L\",\"x\":447.5,\"y\":950.6667175292969},{\"command\":\"L\",\"x\":450.16668701171875,\"y\":948.6667175292969},{\"command\":\"L\",\"x\":452.16668701171875,\"y\":945.3333435058594},{\"command\":\"L\",\"x\":453.5,\"y\":942.6667175292969},{\"command\":\"L\",\"x\":452.8333740234375,\"y\":938.6667175292969},{\"command\":\"L\",\"x\":452.16668701171875,\"y\":937.3333435058594},{\"command\":\"L\",\"x\":450.8333740234375,\"y\":936.6667175292969},{\"command\":\"L\",\"x\":448.8333740234375,\"y\":936.0000305175781},{\"command\":\"L\",\"x\":447.5,\"y\":936.6667175292969},{\"command\":\"L\",\"x\":446.16668701171875,\"y\":937.3333435058594},{\"command\":\"L\",\"x\":445.5,\"y\":938.6667175292969},{\"command\":\"L\",\"x\":445.5,\"y\":939.3333435058594},{\"command\":\"L\",\"x\":446.16668701171875,\"y\":939.3333435058594},{\"command\":\"L\",\"x\":446.8333740234375,\"y\":939.3333435058594},{\"command\":\"L\",\"x\":452.16668701171875,\"y\":937.3333435058594},{\"command\":\"L\",\"x\":454.8333740234375,\"y\":936.6667175292969},{\"command\":\"L\",\"x\":456.8333740234375,\"y\":936.0000305175781},{\"command\":\"L\",\"x\":459.5,\"y\":936.6667175292969},{\"command\":\"L\",\"x\":460.8333740234375,\"y\":937.3333435058594},{\"command\":\"L\",\"x\":461.5,\"y\":938.6667175292969},{\"command\":\"L\",\"x\":462.16668701171875,\"y\":942.0000305175781},{\"command\":\"L\",\"x\":462.16668701171875,\"y\":942.6667175292969},{\"command\":\"L\",\"x\":462.16668701171875,\"y\":944.0000305175781},{\"command\":\"L\",\"x\":462.16668701171875,\"y\":943.3333435058594},{\"command\":\"L\",\"x\":462.16668701171875,\"y\":942.6667175292969},{\"command\":\"L\",\"x\":462.16668701171875,\"y\":941.3333435058594},{\"command\":\"L\",\"x\":462.8333740234375,\"y\":938.6667175292969},{\"command\":\"L\",\"x\":464.16668701171875,\"y\":935.3333435058594},{\"command\":\"L\",\"x\":465.5,\"y\":933.3333435058594},{\"command\":\"L\",\"x\":466.16668701171875,\"y\":932.6667175292969},{\"command\":\"L\",\"x\":467.5,\"y\":933.3333435058594},{\"command\":\"L\",\"x\":469.5,\"y\":935.3333435058594},{\"command\":\"L\",\"x\":470.16668701171875,\"y\":938.6667175292969},{\"command\":\"L\",\"x\":472.8333740234375,\"y\":943.3333435058594},{\"command\":\"L\",\"x\":472.8333740234375,\"y\":944.6667175292969},{\"command\":\"L\",\"x\":474.16668701171875,\"y\":944.6667175292969},{\"command\":\"L\",\"x\":475.5,\"y\":944.0000305175781},{\"command\":\"L\",\"x\":478.16668701171875,\"y\":941.3333435058594},{\"command\":\"L\",\"x\":481.5,\"y\":937.3333435058594},{\"command\":\"L\",\"x\":484.8333740234375,\"y\":934.0000305175781},{\"command\":\"L\",\"x\":488.8333740234375,\"y\":929.3333435058594},{\"command\":\"L\",\"x\":489.5,\"y\":928.0000305175781}]'
+ path: '[{"command":"M","x":244.83334350585938,"y":982.0000305175781},{"command":"L","x":244.83334350585938,"y":982.0000305175781},{"command":"L","x":250.83334350585938,"y":953.3333435058594},{"command":"L","x":252.83334350585938,"y":946.0000305175781},{"command":"L","x":254.16668701171875,"y":940.6667175292969},{"command":"L","x":256.8333435058594,"y":931.3333435058594},{"command":"L","x":257.5,"y":929.3333435058594},{"command":"L","x":258.8333435058594,"y":926.6667175292969},{"command":"L","x":259.5,"y":924.0000305175781},{"command":"L","x":259.5,"y":922.6667175292969},{"command":"L","x":258.8333435058594,"y":922.0000305175781},{"command":"L","x":258.16668701171875,"y":922.0000305175781},{"command":"L","x":256.8333435058594,"y":922.0000305175781},{"command":"L","x":256.16668701171875,"y":922.6667175292969},{"command":"L","x":254.83334350585938,"y":923.3333435058594},{"command":"L","x":254.16668701171875,"y":923.3333435058594},{"command":"L","x":253.5,"y":923.3333435058594},{"command":"L","x":252.83334350585938,"y":925.3333435058594},{"command":"L","x":252.83334350585938,"y":927.3333435058594},{"command":"L","x":252.83334350585938,"y":936.0000305175781},{"command":"L","x":253.5,"y":940.6667175292969},{"command":"L","x":254.83334350585938,"y":944.6667175292969},{"command":"L","x":260.16668701171875,"y":952.0000305175781},{"command":"L","x":264.16668701171875,"y":954.0000305175781},{"command":"L","x":274.16668701171875,"y":958.6667175292969},{"command":"L","x":278.16668701171875,"y":960.0000305175781},{"command":"L","x":281.5,"y":961.3333435058594},{"command":"L","x":285.5,"y":964.6667175292969},{"command":"L","x":286.8333740234375,"y":967.3333435058594},{"command":"L","x":286.8333740234375,"y":970.0000305175781},{"command":"L","x":282.8333740234375,"y":978.6667175292969},{"command":"L","x":278.16668701171875,"y":983.3333435058594},{"command":"L","x":266.16668701171875,"y":991.3333435058594},{"command":"L","x":259.5,"y":993.3333435058594},{"command":"L","x":252.16668701171875,"y":994.0000305175781},{"command":"L","x":240.83334350585938,"y":991.3333435058594},{"command":"L","x":236.16668701171875,"y":988.6667175292969},{"command":"L","x":230.16668701171875,"y":982.6667175292969},{"command":"L","x":228.83334350585938,"y":980.6667175292969},{"command":"L","x":228.16668701171875,"y":978.6667175292969},{"command":"L","x":228.83334350585938,"y":974.6667175292969},{"command":"L","x":230.16668701171875,"y":973.3333435058594},{"command":"L","x":236.16668701171875,"y":971.3333435058594},{"command":"L","x":240.83334350585938,"y":971.3333435058594},{"command":"L","x":246.16668701171875,"y":972.0000305175781},{"command":"L","x":257.5,"y":974.6667175292969},{"command":"L","x":262.8333435058594,"y":976.0000305175781},{"command":"L","x":269.5,"y":977.3333435058594},{"command":"L","x":276.16668701171875,"y":978.6667175292969},{"command":"L","x":279.5,"y":978.0000305175781},{"command":"L","x":285.5,"y":976.6667175292969},{"command":"L","x":288.16668701171875,"y":974.6667175292969},{"command":"L","x":292.8333740234375,"y":969.3333435058594},{"command":"L","x":293.5,"y":966.6667175292969},{"command":"L","x":294.16668701171875,"y":964.0000305175781},{"command":"L","x":293.5,"y":960.0000305175781},{"command":"L","x":293.5,"y":958.0000305175781},{"command":"L","x":292.8333740234375,"y":956.6667175292969},{"command":"L","x":291.5,"y":954.6667175292969},{"command":"L","x":291.5,"y":954.0000305175781},{"command":"L","x":291.5,"y":953.3333435058594},{"command":"L","x":291.5,"y":954.0000305175781},{"command":"L","x":292.16668701171875,"y":954.6667175292969},{"command":"L","x":292.8333740234375,"y":956.0000305175781},{"command":"L","x":294.16668701171875,"y":961.3333435058594},{"command":"L","x":295.5,"y":964.6667175292969},{"command":"L","x":297.5,"y":969.3333435058594},{"command":"L","x":298.8333740234375,"y":970.6667175292969},{"command":"L","x":301.5,"y":970.0000305175781},{"command":"L","x":304.16668701171875,"y":968.6667175292969},{"command":"L","x":305.5,"y":966.0000305175781},{"command":"L","x":308.8333740234375,"y":960.0000305175781},{"command":"L","x":310.16668701171875,"y":957.3333435058594},{"command":"L","x":310.8333740234375,"y":956.0000305175781},{"command":"L","x":310.8333740234375,"y":954.6667175292969},{"command":"L","x":310.8333740234375,"y":954.0000305175781},{"command":"L","x":311.5,"y":956.0000305175781},{"command":"L","x":312.8333740234375,"y":959.3333435058594},{"command":"L","x":316.16668701171875,"y":968.0000305175781},{"command":"L","x":317.5,"y":972.6667175292969},{"command":"L","x":318.16668701171875,"y":977.3333435058594},{"command":"L","x":319.5,"y":983.3333435058594},{"command":"L","x":319.5,"y":986.0000305175781},{"command":"L","x":319.5,"y":988.0000305175781},{"command":"L","x":318.8333740234375,"y":988.0000305175781},{"command":"L","x":318.16668701171875,"y":988.6667175292969},{"command":"L","x":316.16668701171875,"y":987.3333435058594},{"command":"L","x":314.8333740234375,"y":985.3333435058594},{"command":"L","x":314.16668701171875,"y":980.6667175292969},{"command":"L","x":314.8333740234375,"y":974.6667175292969},{"command":"L","x":316.16668701171875,"y":969.3333435058594},{"command":"L","x":319.5,"y":960.6667175292969},{"command":"L","x":320.16668701171875,"y":957.3333435058594},{"command":"L","x":321.5,"y":955.3333435058594},{"command":"L","x":322.16668701171875,"y":953.3333435058594},{"command":"L","x":322.8333740234375,"y":952.6667175292969},{"command":"L","x":324.16668701171875,"y":952.6667175292969},{"command":"L","x":324.8333740234375,"y":953.3333435058594},{"command":"L","x":326.8333740234375,"y":956.0000305175781},{"command":"L","x":328.16668701171875,"y":958.0000305175781},{"command":"L","x":328.8333740234375,"y":960.0000305175781},{"command":"L","x":329.5,"y":962.0000305175781},{"command":"L","x":330.16668701171875,"y":962.0000305175781},{"command":"L","x":330.16668701171875,"y":962.6667175292969},{"command":"L","x":330.16668701171875,"y":962.0000305175781},{"command":"L","x":330.8333740234375,"y":960.0000305175781},{"command":"L","x":331.5,"y":956.0000305175781},{"command":"L","x":332.8333740234375,"y":952.0000305175781},{"command":"L","x":333.5,"y":950.0000305175781},{"command":"L","x":334.8333740234375,"y":948.6667175292969},{"command":"L","x":335.5,"y":948.6667175292969},{"command":"L","x":336.16668701171875,"y":948.6667175292969},{"command":"L","x":337.5,"y":950.6667175292969},{"command":"L","x":338.8333740234375,"y":952.0000305175781},{"command":"L","x":340.8333740234375,"y":954.0000305175781},{"command":"L","x":341.5,"y":954.0000305175781},{"command":"L","x":342.8333740234375,"y":954.6667175292969},{"command":"L","x":344.8333740234375,"y":954.0000305175781},{"command":"L","x":346.8333740234375,"y":952.6667175292969},{"command":"L","x":349.5,"y":949.3333435058594},{"command":"L","x":350.8333740234375,"y":948.0000305175781},{"command":"L","x":351.5,"y":946.6667175292969},{"command":"L","x":352.8333740234375,"y":944.0000305175781},{"command":"L","x":352.8333740234375,"y":943.3333435058594},{"command":"L","x":354.16668701171875,"y":942.0000305175781},{"command":"L","x":354.8333740234375,"y":942.0000305175781},{"command":"L","x":354.8333740234375,"y":942.6667175292969},{"command":"L","x":354.16668701171875,"y":943.3333435058594},{"command":"L","x":354.16668701171875,"y":946.6667175292969},{"command":"L","x":354.16668701171875,"y":950.0000305175781},{"command":"L","x":355.5,"y":956.0000305175781},{"command":"L","x":356.16668701171875,"y":957.3333435058594},{"command":"L","x":358.16668701171875,"y":959.3333435058594},{"command":"L","x":360.16668701171875,"y":958.0000305175781},{"command":"L","x":364.16668701171875,"y":956.0000305175781},{"command":"L","x":370.8333740234375,"y":948.6667175292969},{"command":"L","x":373.5,"y":943.3333435058594},{"command":"L","x":375.5,"y":937.3333435058594},{"command":"L","x":376.16668701171875,"y":933.3333435058594},{"command":"L","x":376.8333740234375,"y":931.3333435058594},{"command":"L","x":376.8333740234375,"y":930.0000305175781},{"command":"L","x":376.8333740234375,"y":929.3333435058594},{"command":"L","x":376.16668701171875,"y":930.0000305175781},{"command":"L","x":375.5,"y":932.0000305175781},{"command":"L","x":375.5,"y":937.3333435058594},{"command":"L","x":374.8333740234375,"y":953.3333435058594},{"command":"L","x":374.8333740234375,"y":960.6667175292969},{"command":"L","x":375.5,"y":966.0000305175781},{"command":"L","x":377.5,"y":974.6667175292969},{"command":"L","x":378.16668701171875,"y":977.3333435058594},{"command":"L","x":380.8333740234375,"y":981.3333435058594},{"command":"L","x":382.16668701171875,"y":982.6667175292969},{"command":"L","x":383.5,"y":982.6667175292969},{"command":"L","x":387.5,"y":982.6667175292969},{"command":"L","x":389.5,"y":980.6667175292969},{"command":"L","x":392.16668701171875,"y":976.6667175292969},{"command":"L","x":392.8333740234375,"y":973.3333435058594},{"command":"L","x":392.16668701171875,"y":970.0000305175781},{"command":"L","x":388.8333740234375,"y":965.3333435058594},{"command":"L","x":385.5,"y":964.0000305175781},{"command":"L","x":382.8333740234375,"y":964.0000305175781},{"command":"L","x":377.5,"y":964.0000305175781},{"command":"L","x":375.5,"y":964.6667175292969},{"command":"L","x":373.5,"y":965.3333435058594},{"command":"L","x":374.8333740234375,"y":963.3333435058594},{"command":"L","x":376.8333740234375,"y":961.3333435058594},{"command":"L","x":382.16668701171875,"y":956.0000305175781},{"command":"L","x":384.16668701171875,"y":953.3333435058594},{"command":"L","x":387.5,"y":950.6667175292969},{"command":"L","x":388.16668701171875,"y":952.0000305175781},{"command":"L","x":388.16668701171875,"y":952.6667175292969},{"command":"L","x":388.8333740234375,"y":954.0000305175781},{"command":"L","x":388.8333740234375,"y":954.6667175292969},{"command":"L","x":389.5,"y":959.3333435058594},{"command":"L","x":389.5,"y":960.6667175292969},{"command":"L","x":390.16668701171875,"y":961.3333435058594},{"command":"L","x":390.8333740234375,"y":960.6667175292969},{"command":"L","x":393.5,"y":958.0000305175781},{"command":"L","x":396.8333740234375,"y":954.0000305175781},{"command":"L","x":398.16668701171875,"y":952.0000305175781},{"command":"L","x":400.16668701171875,"y":949.3333435058594},{"command":"L","x":400.16668701171875,"y":948.6667175292969},{"command":"L","x":400.8333740234375,"y":948.0000305175781},{"command":"L","x":400.8333740234375,"y":947.3333435058594},{"command":"L","x":401.5,"y":948.0000305175781},{"command":"L","x":402.16668701171875,"y":949.3333435058594},{"command":"L","x":403.5,"y":950.6667175292969},{"command":"L","x":404.8333740234375,"y":953.3333435058594},{"command":"L","x":406.16668701171875,"y":954.0000305175781},{"command":"L","x":407.5,"y":954.0000305175781},{"command":"L","x":410.16668701171875,"y":952.0000305175781},{"command":"L","x":412.16668701171875,"y":949.3333435058594},{"command":"L","x":414.16668701171875,"y":944.6667175292969},{"command":"L","x":414.16668701171875,"y":942.0000305175781},{"command":"L","x":414.16668701171875,"y":940.6667175292969},{"command":"L","x":414.16668701171875,"y":938.6667175292969},{"command":"L","x":414.16668701171875,"y":938.0000305175781},{"command":"L","x":415.5,"y":939.3333435058594},{"command":"L","x":418.8333740234375,"y":942.6667175292969},{"command":"L","x":420.16668701171875,"y":945.3333435058594},{"command":"L","x":421.5,"y":946.6667175292969},{"command":"L","x":422.8333740234375,"y":950.0000305175781},{"command":"L","x":423.5,"y":950.6667175292969},{"command":"L","x":423.5,"y":953.3333435058594},{"command":"L","x":422.8333740234375,"y":954.0000305175781},{"command":"L","x":421.5,"y":955.3333435058594},{"command":"L","x":421.5,"y":956.0000305175781},{"command":"L","x":422.16668701171875,"y":954.6667175292969},{"command":"L","x":422.8333740234375,"y":954.0000305175781},{"command":"L","x":424.8333740234375,"y":950.6667175292969},{"command":"L","x":425.5,"y":948.6667175292969},{"command":"L","x":428.16668701171875,"y":945.3333435058594},{"command":"L","x":428.8333740234375,"y":943.3333435058594},{"command":"L","x":428.8333740234375,"y":942.6667175292969},{"command":"L","x":428.8333740234375,"y":943.3333435058594},{"command":"L","x":428.8333740234375,"y":945.3333435058594},{"command":"L","x":428.8333740234375,"y":948.0000305175781},{"command":"L","x":428.8333740234375,"y":950.0000305175781},{"command":"L","x":429.5,"y":953.3333435058594},{"command":"L","x":430.16668701171875,"y":953.3333435058594},{"command":"L","x":432.8333740234375,"y":952.6667175292969},{"command":"L","x":434.8333740234375,"y":950.6667175292969},{"command":"L","x":437.5,"y":948.6667175292969},{"command":"L","x":440.16668701171875,"y":944.6667175292969},{"command":"L","x":441.5,"y":942.6667175292969},{"command":"L","x":442.16668701171875,"y":942.0000305175781},{"command":"L","x":442.8333740234375,"y":941.3333435058594},{"command":"L","x":442.8333740234375,"y":942.0000305175781},{"command":"L","x":442.8333740234375,"y":943.3333435058594},{"command":"L","x":442.8333740234375,"y":944.6667175292969},{"command":"L","x":442.8333740234375,"y":946.0000305175781},{"command":"L","x":443.5,"y":949.3333435058594},{"command":"L","x":444.16668701171875,"y":950.6667175292969},{"command":"L","x":445.5,"y":950.6667175292969},{"command":"L","x":447.5,"y":950.6667175292969},{"command":"L","x":450.16668701171875,"y":948.6667175292969},{"command":"L","x":452.16668701171875,"y":945.3333435058594},{"command":"L","x":453.5,"y":942.6667175292969},{"command":"L","x":452.8333740234375,"y":938.6667175292969},{"command":"L","x":452.16668701171875,"y":937.3333435058594},{"command":"L","x":450.8333740234375,"y":936.6667175292969},{"command":"L","x":448.8333740234375,"y":936.0000305175781},{"command":"L","x":447.5,"y":936.6667175292969},{"command":"L","x":446.16668701171875,"y":937.3333435058594},{"command":"L","x":445.5,"y":938.6667175292969},{"command":"L","x":445.5,"y":939.3333435058594},{"command":"L","x":446.16668701171875,"y":939.3333435058594},{"command":"L","x":446.8333740234375,"y":939.3333435058594},{"command":"L","x":452.16668701171875,"y":937.3333435058594},{"command":"L","x":454.8333740234375,"y":936.6667175292969},{"command":"L","x":456.8333740234375,"y":936.0000305175781},{"command":"L","x":459.5,"y":936.6667175292969},{"command":"L","x":460.8333740234375,"y":937.3333435058594},{"command":"L","x":461.5,"y":938.6667175292969},{"command":"L","x":462.16668701171875,"y":942.0000305175781},{"command":"L","x":462.16668701171875,"y":942.6667175292969},{"command":"L","x":462.16668701171875,"y":944.0000305175781},{"command":"L","x":462.16668701171875,"y":943.3333435058594},{"command":"L","x":462.16668701171875,"y":942.6667175292969},{"command":"L","x":462.16668701171875,"y":941.3333435058594},{"command":"L","x":462.8333740234375,"y":938.6667175292969},{"command":"L","x":464.16668701171875,"y":935.3333435058594},{"command":"L","x":465.5,"y":933.3333435058594},{"command":"L","x":466.16668701171875,"y":932.6667175292969},{"command":"L","x":467.5,"y":933.3333435058594},{"command":"L","x":469.5,"y":935.3333435058594},{"command":"L","x":470.16668701171875,"y":938.6667175292969},{"command":"L","x":472.8333740234375,"y":943.3333435058594},{"command":"L","x":472.8333740234375,"y":944.6667175292969},{"command":"L","x":474.16668701171875,"y":944.6667175292969},{"command":"L","x":475.5,"y":944.0000305175781},{"command":"L","x":478.16668701171875,"y":941.3333435058594},{"command":"L","x":481.5,"y":937.3333435058594},{"command":"L","x":484.8333740234375,"y":934.0000305175781},{"command":"L","x":488.8333740234375,"y":929.3333435058594},{"command":"L","x":489.5,"y":928.0000305175781}]'
});
}
}
@@ -369,7 +369,7 @@ export default {
pageNumber: 1,
width: 200,
height: 60,
- path: '[{\"command\":\"M\",\"x\":244.83334350585938,\"y\":982.0000305175781},{\"command\":\"L\",\"x\":244.83334350585938,\"y\":982.0000305175781},{\"command\":\"L\",\"x\":250.83334350585938,\"y\":953.3333435058594},{\"command\":\"L\",\"x\":252.83334350585938,\"y\":946.0000305175781},{\"command\":\"L\",\"x\":254.16668701171875,\"y\":940.6667175292969},{\"command\":\"L\",\"x\":256.8333435058594,\"y\":931.3333435058594},{\"command\":\"L\",\"x\":257.5,\"y\":929.3333435058594},{\"command\":\"L\",\"x\":258.8333435058594,\"y\":926.6667175292969},{\"command\":\"L\",\"x\":259.5,\"y\":924.0000305175781},{\"command\":\"L\",\"x\":259.5,\"y\":922.6667175292969},{\"command\":\"L\",\"x\":258.8333435058594,\"y\":922.0000305175781},{\"command\":\"L\",\"x\":258.16668701171875,\"y\":922.0000305175781},{\"command\":\"L\",\"x\":256.8333435058594,\"y\":922.0000305175781},{\"command\":\"L\",\"x\":256.16668701171875,\"y\":922.6667175292969},{\"command\":\"L\",\"x\":254.83334350585938,\"y\":923.3333435058594},{\"command\":\"L\",\"x\":254.16668701171875,\"y\":923.3333435058594},{\"command\":\"L\",\"x\":253.5,\"y\":923.3333435058594},{\"command\":\"L\",\"x\":252.83334350585938,\"y\":925.3333435058594},{\"command\":\"L\",\"x\":252.83334350585938,\"y\":927.3333435058594},{\"command\":\"L\",\"x\":252.83334350585938,\"y\":936.0000305175781},{\"command\":\"L\",\"x\":253.5,\"y\":940.6667175292969},{\"command\":\"L\",\"x\":254.83334350585938,\"y\":944.6667175292969},{\"command\":\"L\",\"x\":260.16668701171875,\"y\":952.0000305175781},{\"command\":\"L\",\"x\":264.16668701171875,\"y\":954.0000305175781},{\"command\":\"L\",\"x\":274.16668701171875,\"y\":958.6667175292969},{\"command\":\"L\",\"x\":278.16668701171875,\"y\":960.0000305175781},{\"command\":\"L\",\"x\":281.5,\"y\":961.3333435058594},{\"command\":\"L\",\"x\":285.5,\"y\":964.6667175292969},{\"command\":\"L\",\"x\":286.8333740234375,\"y\":967.3333435058594},{\"command\":\"L\",\"x\":286.8333740234375,\"y\":970.0000305175781},{\"command\":\"L\",\"x\":282.8333740234375,\"y\":978.6667175292969},{\"command\":\"L\",\"x\":278.16668701171875,\"y\":983.3333435058594},{\"command\":\"L\",\"x\":266.16668701171875,\"y\":991.3333435058594},{\"command\":\"L\",\"x\":259.5,\"y\":993.3333435058594},{\"command\":\"L\",\"x\":252.16668701171875,\"y\":994.0000305175781},{\"command\":\"L\",\"x\":240.83334350585938,\"y\":991.3333435058594},{\"command\":\"L\",\"x\":236.16668701171875,\"y\":988.6667175292969},{\"command\":\"L\",\"x\":230.16668701171875,\"y\":982.6667175292969},{\"command\":\"L\",\"x\":228.83334350585938,\"y\":980.6667175292969},{\"command\":\"L\",\"x\":228.16668701171875,\"y\":978.6667175292969},{\"command\":\"L\",\"x\":228.83334350585938,\"y\":974.6667175292969},{\"command\":\"L\",\"x\":230.16668701171875,\"y\":973.3333435058594},{\"command\":\"L\",\"x\":236.16668701171875,\"y\":971.3333435058594},{\"command\":\"L\",\"x\":240.83334350585938,\"y\":971.3333435058594},{\"command\":\"L\",\"x\":246.16668701171875,\"y\":972.0000305175781},{\"command\":\"L\",\"x\":257.5,\"y\":974.6667175292969},{\"command\":\"L\",\"x\":262.8333435058594,\"y\":976.0000305175781},{\"command\":\"L\",\"x\":269.5,\"y\":977.3333435058594},{\"command\":\"L\",\"x\":276.16668701171875,\"y\":978.6667175292969},{\"command\":\"L\",\"x\":279.5,\"y\":978.0000305175781},{\"command\":\"L\",\"x\":285.5,\"y\":976.6667175292969},{\"command\":\"L\",\"x\":288.16668701171875,\"y\":974.6667175292969},{\"command\":\"L\",\"x\":292.8333740234375,\"y\":969.3333435058594},{\"command\":\"L\",\"x\":293.5,\"y\":966.6667175292969},{\"command\":\"L\",\"x\":294.16668701171875,\"y\":964.0000305175781},{\"command\":\"L\",\"x\":293.5,\"y\":960.0000305175781},{\"command\":\"L\",\"x\":293.5,\"y\":958.0000305175781},{\"command\":\"L\",\"x\":292.8333740234375,\"y\":956.6667175292969},{\"command\":\"L\",\"x\":291.5,\"y\":954.6667175292969},{\"command\":\"L\",\"x\":291.5,\"y\":954.0000305175781},{\"command\":\"L\",\"x\":291.5,\"y\":953.3333435058594},{\"command\":\"L\",\"x\":291.5,\"y\":954.0000305175781},{\"command\":\"L\",\"x\":292.16668701171875,\"y\":954.6667175292969},{\"command\":\"L\",\"x\":292.8333740234375,\"y\":956.0000305175781},{\"command\":\"L\",\"x\":294.16668701171875,\"y\":961.3333435058594},{\"command\":\"L\",\"x\":295.5,\"y\":964.6667175292969},{\"command\":\"L\",\"x\":297.5,\"y\":969.3333435058594},{\"command\":\"L\",\"x\":298.8333740234375,\"y\":970.6667175292969},{\"command\":\"L\",\"x\":301.5,\"y\":970.0000305175781},{\"command\":\"L\",\"x\":304.16668701171875,\"y\":968.6667175292969},{\"command\":\"L\",\"x\":305.5,\"y\":966.0000305175781},{\"command\":\"L\",\"x\":308.8333740234375,\"y\":960.0000305175781},{\"command\":\"L\",\"x\":310.16668701171875,\"y\":957.3333435058594},{\"command\":\"L\",\"x\":310.8333740234375,\"y\":956.0000305175781},{\"command\":\"L\",\"x\":310.8333740234375,\"y\":954.6667175292969},{\"command\":\"L\",\"x\":310.8333740234375,\"y\":954.0000305175781},{\"command\":\"L\",\"x\":311.5,\"y\":956.0000305175781},{\"command\":\"L\",\"x\":312.8333740234375,\"y\":959.3333435058594},{\"command\":\"L\",\"x\":316.16668701171875,\"y\":968.0000305175781},{\"command\":\"L\",\"x\":317.5,\"y\":972.6667175292969},{\"command\":\"L\",\"x\":318.16668701171875,\"y\":977.3333435058594},{\"command\":\"L\",\"x\":319.5,\"y\":983.3333435058594},{\"command\":\"L\",\"x\":319.5,\"y\":986.0000305175781},{\"command\":\"L\",\"x\":319.5,\"y\":988.0000305175781},{\"command\":\"L\",\"x\":318.8333740234375,\"y\":988.0000305175781},{\"command\":\"L\",\"x\":318.16668701171875,\"y\":988.6667175292969},{\"command\":\"L\",\"x\":316.16668701171875,\"y\":987.3333435058594},{\"command\":\"L\",\"x\":314.8333740234375,\"y\":985.3333435058594},{\"command\":\"L\",\"x\":314.16668701171875,\"y\":980.6667175292969},{\"command\":\"L\",\"x\":314.8333740234375,\"y\":974.6667175292969},{\"command\":\"L\",\"x\":316.16668701171875,\"y\":969.3333435058594},{\"command\":\"L\",\"x\":319.5,\"y\":960.6667175292969},{\"command\":\"L\",\"x\":320.16668701171875,\"y\":957.3333435058594},{\"command\":\"L\",\"x\":321.5,\"y\":955.3333435058594},{\"command\":\"L\",\"x\":322.16668701171875,\"y\":953.3333435058594},{\"command\":\"L\",\"x\":322.8333740234375,\"y\":952.6667175292969},{\"command\":\"L\",\"x\":324.16668701171875,\"y\":952.6667175292969},{\"command\":\"L\",\"x\":324.8333740234375,\"y\":953.3333435058594},{\"command\":\"L\",\"x\":326.8333740234375,\"y\":956.0000305175781},{\"command\":\"L\",\"x\":328.16668701171875,\"y\":958.0000305175781},{\"command\":\"L\",\"x\":328.8333740234375,\"y\":960.0000305175781},{\"command\":\"L\",\"x\":329.5,\"y\":962.0000305175781},{\"command\":\"L\",\"x\":330.16668701171875,\"y\":962.0000305175781},{\"command\":\"L\",\"x\":330.16668701171875,\"y\":962.6667175292969},{\"command\":\"L\",\"x\":330.16668701171875,\"y\":962.0000305175781},{\"command\":\"L\",\"x\":330.8333740234375,\"y\":960.0000305175781},{\"command\":\"L\",\"x\":331.5,\"y\":956.0000305175781},{\"command\":\"L\",\"x\":332.8333740234375,\"y\":952.0000305175781},{\"command\":\"L\",\"x\":333.5,\"y\":950.0000305175781},{\"command\":\"L\",\"x\":334.8333740234375,\"y\":948.6667175292969},{\"command\":\"L\",\"x\":335.5,\"y\":948.6667175292969},{\"command\":\"L\",\"x\":336.16668701171875,\"y\":948.6667175292969},{\"command\":\"L\",\"x\":337.5,\"y\":950.6667175292969},{\"command\":\"L\",\"x\":338.8333740234375,\"y\":952.0000305175781},{\"command\":\"L\",\"x\":340.8333740234375,\"y\":954.0000305175781},{\"command\":\"L\",\"x\":341.5,\"y\":954.0000305175781},{\"command\":\"L\",\"x\":342.8333740234375,\"y\":954.6667175292969},{\"command\":\"L\",\"x\":344.8333740234375,\"y\":954.0000305175781},{\"command\":\"L\",\"x\":346.8333740234375,\"y\":952.6667175292969},{\"command\":\"L\",\"x\":349.5,\"y\":949.3333435058594},{\"command\":\"L\",\"x\":350.8333740234375,\"y\":948.0000305175781},{\"command\":\"L\",\"x\":351.5,\"y\":946.6667175292969},{\"command\":\"L\",\"x\":352.8333740234375,\"y\":944.0000305175781},{\"command\":\"L\",\"x\":352.8333740234375,\"y\":943.3333435058594},{\"command\":\"L\",\"x\":354.16668701171875,\"y\":942.0000305175781},{\"command\":\"L\",\"x\":354.8333740234375,\"y\":942.0000305175781},{\"command\":\"L\",\"x\":354.8333740234375,\"y\":942.6667175292969},{\"command\":\"L\",\"x\":354.16668701171875,\"y\":943.3333435058594},{\"command\":\"L\",\"x\":354.16668701171875,\"y\":946.6667175292969},{\"command\":\"L\",\"x\":354.16668701171875,\"y\":950.0000305175781},{\"command\":\"L\",\"x\":355.5,\"y\":956.0000305175781},{\"command\":\"L\",\"x\":356.16668701171875,\"y\":957.3333435058594},{\"command\":\"L\",\"x\":358.16668701171875,\"y\":959.3333435058594},{\"command\":\"L\",\"x\":360.16668701171875,\"y\":958.0000305175781},{\"command\":\"L\",\"x\":364.16668701171875,\"y\":956.0000305175781},{\"command\":\"L\",\"x\":370.8333740234375,\"y\":948.6667175292969},{\"command\":\"L\",\"x\":373.5,\"y\":943.3333435058594},{\"command\":\"L\",\"x\":375.5,\"y\":937.3333435058594},{\"command\":\"L\",\"x\":376.16668701171875,\"y\":933.3333435058594},{\"command\":\"L\",\"x\":376.8333740234375,\"y\":931.3333435058594},{\"command\":\"L\",\"x\":376.8333740234375,\"y\":930.0000305175781},{\"command\":\"L\",\"x\":376.8333740234375,\"y\":929.3333435058594},{\"command\":\"L\",\"x\":376.16668701171875,\"y\":930.0000305175781},{\"command\":\"L\",\"x\":375.5,\"y\":932.0000305175781},{\"command\":\"L\",\"x\":375.5,\"y\":937.3333435058594},{\"command\":\"L\",\"x\":374.8333740234375,\"y\":953.3333435058594},{\"command\":\"L\",\"x\":374.8333740234375,\"y\":960.6667175292969},{\"command\":\"L\",\"x\":375.5,\"y\":966.0000305175781},{\"command\":\"L\",\"x\":377.5,\"y\":974.6667175292969},{\"command\":\"L\",\"x\":378.16668701171875,\"y\":977.3333435058594},{\"command\":\"L\",\"x\":380.8333740234375,\"y\":981.3333435058594},{\"command\":\"L\",\"x\":382.16668701171875,\"y\":982.6667175292969},{\"command\":\"L\",\"x\":383.5,\"y\":982.6667175292969},{\"command\":\"L\",\"x\":387.5,\"y\":982.6667175292969},{\"command\":\"L\",\"x\":389.5,\"y\":980.6667175292969},{\"command\":\"L\",\"x\":392.16668701171875,\"y\":976.6667175292969},{\"command\":\"L\",\"x\":392.8333740234375,\"y\":973.3333435058594},{\"command\":\"L\",\"x\":392.16668701171875,\"y\":970.0000305175781},{\"command\":\"L\",\"x\":388.8333740234375,\"y\":965.3333435058594},{\"command\":\"L\",\"x\":385.5,\"y\":964.0000305175781},{\"command\":\"L\",\"x\":382.8333740234375,\"y\":964.0000305175781},{\"command\":\"L\",\"x\":377.5,\"y\":964.0000305175781},{\"command\":\"L\",\"x\":375.5,\"y\":964.6667175292969},{\"command\":\"L\",\"x\":373.5,\"y\":965.3333435058594},{\"command\":\"L\",\"x\":374.8333740234375,\"y\":963.3333435058594},{\"command\":\"L\",\"x\":376.8333740234375,\"y\":961.3333435058594},{\"command\":\"L\",\"x\":382.16668701171875,\"y\":956.0000305175781},{\"command\":\"L\",\"x\":384.16668701171875,\"y\":953.3333435058594},{\"command\":\"L\",\"x\":387.5,\"y\":950.6667175292969},{\"command\":\"L\",\"x\":388.16668701171875,\"y\":952.0000305175781},{\"command\":\"L\",\"x\":388.16668701171875,\"y\":952.6667175292969},{\"command\":\"L\",\"x\":388.8333740234375,\"y\":954.0000305175781},{\"command\":\"L\",\"x\":388.8333740234375,\"y\":954.6667175292969},{\"command\":\"L\",\"x\":389.5,\"y\":959.3333435058594},{\"command\":\"L\",\"x\":389.5,\"y\":960.6667175292969},{\"command\":\"L\",\"x\":390.16668701171875,\"y\":961.3333435058594},{\"command\":\"L\",\"x\":390.8333740234375,\"y\":960.6667175292969},{\"command\":\"L\",\"x\":393.5,\"y\":958.0000305175781},{\"command\":\"L\",\"x\":396.8333740234375,\"y\":954.0000305175781},{\"command\":\"L\",\"x\":398.16668701171875,\"y\":952.0000305175781},{\"command\":\"L\",\"x\":400.16668701171875,\"y\":949.3333435058594},{\"command\":\"L\",\"x\":400.16668701171875,\"y\":948.6667175292969},{\"command\":\"L\",\"x\":400.8333740234375,\"y\":948.0000305175781},{\"command\":\"L\",\"x\":400.8333740234375,\"y\":947.3333435058594},{\"command\":\"L\",\"x\":401.5,\"y\":948.0000305175781},{\"command\":\"L\",\"x\":402.16668701171875,\"y\":949.3333435058594},{\"command\":\"L\",\"x\":403.5,\"y\":950.6667175292969},{\"command\":\"L\",\"x\":404.8333740234375,\"y\":953.3333435058594},{\"command\":\"L\",\"x\":406.16668701171875,\"y\":954.0000305175781},{\"command\":\"L\",\"x\":407.5,\"y\":954.0000305175781},{\"command\":\"L\",\"x\":410.16668701171875,\"y\":952.0000305175781},{\"command\":\"L\",\"x\":412.16668701171875,\"y\":949.3333435058594},{\"command\":\"L\",\"x\":414.16668701171875,\"y\":944.6667175292969},{\"command\":\"L\",\"x\":414.16668701171875,\"y\":942.0000305175781},{\"command\":\"L\",\"x\":414.16668701171875,\"y\":940.6667175292969},{\"command\":\"L\",\"x\":414.16668701171875,\"y\":938.6667175292969},{\"command\":\"L\",\"x\":414.16668701171875,\"y\":938.0000305175781},{\"command\":\"L\",\"x\":415.5,\"y\":939.3333435058594},{\"command\":\"L\",\"x\":418.8333740234375,\"y\":942.6667175292969},{\"command\":\"L\",\"x\":420.16668701171875,\"y\":945.3333435058594},{\"command\":\"L\",\"x\":421.5,\"y\":946.6667175292969},{\"command\":\"L\",\"x\":422.8333740234375,\"y\":950.0000305175781},{\"command\":\"L\",\"x\":423.5,\"y\":950.6667175292969},{\"command\":\"L\",\"x\":423.5,\"y\":953.3333435058594},{\"command\":\"L\",\"x\":422.8333740234375,\"y\":954.0000305175781},{\"command\":\"L\",\"x\":421.5,\"y\":955.3333435058594},{\"command\":\"L\",\"x\":421.5,\"y\":956.0000305175781},{\"command\":\"L\",\"x\":422.16668701171875,\"y\":954.6667175292969},{\"command\":\"L\",\"x\":422.8333740234375,\"y\":954.0000305175781},{\"command\":\"L\",\"x\":424.8333740234375,\"y\":950.6667175292969},{\"command\":\"L\",\"x\":425.5,\"y\":948.6667175292969},{\"command\":\"L\",\"x\":428.16668701171875,\"y\":945.3333435058594},{\"command\":\"L\",\"x\":428.8333740234375,\"y\":943.3333435058594},{\"command\":\"L\",\"x\":428.8333740234375,\"y\":942.6667175292969},{\"command\":\"L\",\"x\":428.8333740234375,\"y\":943.3333435058594},{\"command\":\"L\",\"x\":428.8333740234375,\"y\":945.3333435058594},{\"command\":\"L\",\"x\":428.8333740234375,\"y\":948.0000305175781},{\"command\":\"L\",\"x\":428.8333740234375,\"y\":950.0000305175781},{\"command\":\"L\",\"x\":429.5,\"y\":953.3333435058594},{\"command\":\"L\",\"x\":430.16668701171875,\"y\":953.3333435058594},{\"command\":\"L\",\"x\":432.8333740234375,\"y\":952.6667175292969},{\"command\":\"L\",\"x\":434.8333740234375,\"y\":950.6667175292969},{\"command\":\"L\",\"x\":437.5,\"y\":948.6667175292969},{\"command\":\"L\",\"x\":440.16668701171875,\"y\":944.6667175292969},{\"command\":\"L\",\"x\":441.5,\"y\":942.6667175292969},{\"command\":\"L\",\"x\":442.16668701171875,\"y\":942.0000305175781},{\"command\":\"L\",\"x\":442.8333740234375,\"y\":941.3333435058594},{\"command\":\"L\",\"x\":442.8333740234375,\"y\":942.0000305175781},{\"command\":\"L\",\"x\":442.8333740234375,\"y\":943.3333435058594},{\"command\":\"L\",\"x\":442.8333740234375,\"y\":944.6667175292969},{\"command\":\"L\",\"x\":442.8333740234375,\"y\":946.0000305175781},{\"command\":\"L\",\"x\":443.5,\"y\":949.3333435058594},{\"command\":\"L\",\"x\":444.16668701171875,\"y\":950.6667175292969},{\"command\":\"L\",\"x\":445.5,\"y\":950.6667175292969},{\"command\":\"L\",\"x\":447.5,\"y\":950.6667175292969},{\"command\":\"L\",\"x\":450.16668701171875,\"y\":948.6667175292969},{\"command\":\"L\",\"x\":452.16668701171875,\"y\":945.3333435058594},{\"command\":\"L\",\"x\":453.5,\"y\":942.6667175292969},{\"command\":\"L\",\"x\":452.8333740234375,\"y\":938.6667175292969},{\"command\":\"L\",\"x\":452.16668701171875,\"y\":937.3333435058594},{\"command\":\"L\",\"x\":450.8333740234375,\"y\":936.6667175292969},{\"command\":\"L\",\"x\":448.8333740234375,\"y\":936.0000305175781},{\"command\":\"L\",\"x\":447.5,\"y\":936.6667175292969},{\"command\":\"L\",\"x\":446.16668701171875,\"y\":937.3333435058594},{\"command\":\"L\",\"x\":445.5,\"y\":938.6667175292969},{\"command\":\"L\",\"x\":445.5,\"y\":939.3333435058594},{\"command\":\"L\",\"x\":446.16668701171875,\"y\":939.3333435058594},{\"command\":\"L\",\"x\":446.8333740234375,\"y\":939.3333435058594},{\"command\":\"L\",\"x\":452.16668701171875,\"y\":937.3333435058594},{\"command\":\"L\",\"x\":454.8333740234375,\"y\":936.6667175292969},{\"command\":\"L\",\"x\":456.8333740234375,\"y\":936.0000305175781},{\"command\":\"L\",\"x\":459.5,\"y\":936.6667175292969},{\"command\":\"L\",\"x\":460.8333740234375,\"y\":937.3333435058594},{\"command\":\"L\",\"x\":461.5,\"y\":938.6667175292969},{\"command\":\"L\",\"x\":462.16668701171875,\"y\":942.0000305175781},{\"command\":\"L\",\"x\":462.16668701171875,\"y\":942.6667175292969},{\"command\":\"L\",\"x\":462.16668701171875,\"y\":944.0000305175781},{\"command\":\"L\",\"x\":462.16668701171875,\"y\":943.3333435058594},{\"command\":\"L\",\"x\":462.16668701171875,\"y\":942.6667175292969},{\"command\":\"L\",\"x\":462.16668701171875,\"y\":941.3333435058594},{\"command\":\"L\",\"x\":462.8333740234375,\"y\":938.6667175292969},{\"command\":\"L\",\"x\":464.16668701171875,\"y\":935.3333435058594},{\"command\":\"L\",\"x\":465.5,\"y\":933.3333435058594},{\"command\":\"L\",\"x\":466.16668701171875,\"y\":932.6667175292969},{\"command\":\"L\",\"x\":467.5,\"y\":933.3333435058594},{\"command\":\"L\",\"x\":469.5,\"y\":935.3333435058594},{\"command\":\"L\",\"x\":470.16668701171875,\"y\":938.6667175292969},{\"command\":\"L\",\"x\":472.8333740234375,\"y\":943.3333435058594},{\"command\":\"L\",\"x\":472.8333740234375,\"y\":944.6667175292969},{\"command\":\"L\",\"x\":474.16668701171875,\"y\":944.6667175292969},{\"command\":\"L\",\"x\":475.5,\"y\":944.0000305175781},{\"command\":\"L\",\"x\":478.16668701171875,\"y\":941.3333435058594},{\"command\":\"L\",\"x\":481.5,\"y\":937.3333435058594},{\"command\":\"L\",\"x\":484.8333740234375,\"y\":934.0000305175781},{\"command\":\"L\",\"x\":488.8333740234375,\"y\":929.3333435058594},{\"command\":\"L\",\"x\":489.5,\"y\":928.0000305175781}]'
+ path: '[{"command":"M","x":244.83334350585938,"y":982.0000305175781},{"command":"L","x":244.83334350585938,"y":982.0000305175781},{"command":"L","x":250.83334350585938,"y":953.3333435058594},{"command":"L","x":252.83334350585938,"y":946.0000305175781},{"command":"L","x":254.16668701171875,"y":940.6667175292969},{"command":"L","x":256.8333435058594,"y":931.3333435058594},{"command":"L","x":257.5,"y":929.3333435058594},{"command":"L","x":258.8333435058594,"y":926.6667175292969},{"command":"L","x":259.5,"y":924.0000305175781},{"command":"L","x":259.5,"y":922.6667175292969},{"command":"L","x":258.8333435058594,"y":922.0000305175781},{"command":"L","x":258.16668701171875,"y":922.0000305175781},{"command":"L","x":256.8333435058594,"y":922.0000305175781},{"command":"L","x":256.16668701171875,"y":922.6667175292969},{"command":"L","x":254.83334350585938,"y":923.3333435058594},{"command":"L","x":254.16668701171875,"y":923.3333435058594},{"command":"L","x":253.5,"y":923.3333435058594},{"command":"L","x":252.83334350585938,"y":925.3333435058594},{"command":"L","x":252.83334350585938,"y":927.3333435058594},{"command":"L","x":252.83334350585938,"y":936.0000305175781},{"command":"L","x":253.5,"y":940.6667175292969},{"command":"L","x":254.83334350585938,"y":944.6667175292969},{"command":"L","x":260.16668701171875,"y":952.0000305175781},{"command":"L","x":264.16668701171875,"y":954.0000305175781},{"command":"L","x":274.16668701171875,"y":958.6667175292969},{"command":"L","x":278.16668701171875,"y":960.0000305175781},{"command":"L","x":281.5,"y":961.3333435058594},{"command":"L","x":285.5,"y":964.6667175292969},{"command":"L","x":286.8333740234375,"y":967.3333435058594},{"command":"L","x":286.8333740234375,"y":970.0000305175781},{"command":"L","x":282.8333740234375,"y":978.6667175292969},{"command":"L","x":278.16668701171875,"y":983.3333435058594},{"command":"L","x":266.16668701171875,"y":991.3333435058594},{"command":"L","x":259.5,"y":993.3333435058594},{"command":"L","x":252.16668701171875,"y":994.0000305175781},{"command":"L","x":240.83334350585938,"y":991.3333435058594},{"command":"L","x":236.16668701171875,"y":988.6667175292969},{"command":"L","x":230.16668701171875,"y":982.6667175292969},{"command":"L","x":228.83334350585938,"y":980.6667175292969},{"command":"L","x":228.16668701171875,"y":978.6667175292969},{"command":"L","x":228.83334350585938,"y":974.6667175292969},{"command":"L","x":230.16668701171875,"y":973.3333435058594},{"command":"L","x":236.16668701171875,"y":971.3333435058594},{"command":"L","x":240.83334350585938,"y":971.3333435058594},{"command":"L","x":246.16668701171875,"y":972.0000305175781},{"command":"L","x":257.5,"y":974.6667175292969},{"command":"L","x":262.8333435058594,"y":976.0000305175781},{"command":"L","x":269.5,"y":977.3333435058594},{"command":"L","x":276.16668701171875,"y":978.6667175292969},{"command":"L","x":279.5,"y":978.0000305175781},{"command":"L","x":285.5,"y":976.6667175292969},{"command":"L","x":288.16668701171875,"y":974.6667175292969},{"command":"L","x":292.8333740234375,"y":969.3333435058594},{"command":"L","x":293.5,"y":966.6667175292969},{"command":"L","x":294.16668701171875,"y":964.0000305175781},{"command":"L","x":293.5,"y":960.0000305175781},{"command":"L","x":293.5,"y":958.0000305175781},{"command":"L","x":292.8333740234375,"y":956.6667175292969},{"command":"L","x":291.5,"y":954.6667175292969},{"command":"L","x":291.5,"y":954.0000305175781},{"command":"L","x":291.5,"y":953.3333435058594},{"command":"L","x":291.5,"y":954.0000305175781},{"command":"L","x":292.16668701171875,"y":954.6667175292969},{"command":"L","x":292.8333740234375,"y":956.0000305175781},{"command":"L","x":294.16668701171875,"y":961.3333435058594},{"command":"L","x":295.5,"y":964.6667175292969},{"command":"L","x":297.5,"y":969.3333435058594},{"command":"L","x":298.8333740234375,"y":970.6667175292969},{"command":"L","x":301.5,"y":970.0000305175781},{"command":"L","x":304.16668701171875,"y":968.6667175292969},{"command":"L","x":305.5,"y":966.0000305175781},{"command":"L","x":308.8333740234375,"y":960.0000305175781},{"command":"L","x":310.16668701171875,"y":957.3333435058594},{"command":"L","x":310.8333740234375,"y":956.0000305175781},{"command":"L","x":310.8333740234375,"y":954.6667175292969},{"command":"L","x":310.8333740234375,"y":954.0000305175781},{"command":"L","x":311.5,"y":956.0000305175781},{"command":"L","x":312.8333740234375,"y":959.3333435058594},{"command":"L","x":316.16668701171875,"y":968.0000305175781},{"command":"L","x":317.5,"y":972.6667175292969},{"command":"L","x":318.16668701171875,"y":977.3333435058594},{"command":"L","x":319.5,"y":983.3333435058594},{"command":"L","x":319.5,"y":986.0000305175781},{"command":"L","x":319.5,"y":988.0000305175781},{"command":"L","x":318.8333740234375,"y":988.0000305175781},{"command":"L","x":318.16668701171875,"y":988.6667175292969},{"command":"L","x":316.16668701171875,"y":987.3333435058594},{"command":"L","x":314.8333740234375,"y":985.3333435058594},{"command":"L","x":314.16668701171875,"y":980.6667175292969},{"command":"L","x":314.8333740234375,"y":974.6667175292969},{"command":"L","x":316.16668701171875,"y":969.3333435058594},{"command":"L","x":319.5,"y":960.6667175292969},{"command":"L","x":320.16668701171875,"y":957.3333435058594},{"command":"L","x":321.5,"y":955.3333435058594},{"command":"L","x":322.16668701171875,"y":953.3333435058594},{"command":"L","x":322.8333740234375,"y":952.6667175292969},{"command":"L","x":324.16668701171875,"y":952.6667175292969},{"command":"L","x":324.8333740234375,"y":953.3333435058594},{"command":"L","x":326.8333740234375,"y":956.0000305175781},{"command":"L","x":328.16668701171875,"y":958.0000305175781},{"command":"L","x":328.8333740234375,"y":960.0000305175781},{"command":"L","x":329.5,"y":962.0000305175781},{"command":"L","x":330.16668701171875,"y":962.0000305175781},{"command":"L","x":330.16668701171875,"y":962.6667175292969},{"command":"L","x":330.16668701171875,"y":962.0000305175781},{"command":"L","x":330.8333740234375,"y":960.0000305175781},{"command":"L","x":331.5,"y":956.0000305175781},{"command":"L","x":332.8333740234375,"y":952.0000305175781},{"command":"L","x":333.5,"y":950.0000305175781},{"command":"L","x":334.8333740234375,"y":948.6667175292969},{"command":"L","x":335.5,"y":948.6667175292969},{"command":"L","x":336.16668701171875,"y":948.6667175292969},{"command":"L","x":337.5,"y":950.6667175292969},{"command":"L","x":338.8333740234375,"y":952.0000305175781},{"command":"L","x":340.8333740234375,"y":954.0000305175781},{"command":"L","x":341.5,"y":954.0000305175781},{"command":"L","x":342.8333740234375,"y":954.6667175292969},{"command":"L","x":344.8333740234375,"y":954.0000305175781},{"command":"L","x":346.8333740234375,"y":952.6667175292969},{"command":"L","x":349.5,"y":949.3333435058594},{"command":"L","x":350.8333740234375,"y":948.0000305175781},{"command":"L","x":351.5,"y":946.6667175292969},{"command":"L","x":352.8333740234375,"y":944.0000305175781},{"command":"L","x":352.8333740234375,"y":943.3333435058594},{"command":"L","x":354.16668701171875,"y":942.0000305175781},{"command":"L","x":354.8333740234375,"y":942.0000305175781},{"command":"L","x":354.8333740234375,"y":942.6667175292969},{"command":"L","x":354.16668701171875,"y":943.3333435058594},{"command":"L","x":354.16668701171875,"y":946.6667175292969},{"command":"L","x":354.16668701171875,"y":950.0000305175781},{"command":"L","x":355.5,"y":956.0000305175781},{"command":"L","x":356.16668701171875,"y":957.3333435058594},{"command":"L","x":358.16668701171875,"y":959.3333435058594},{"command":"L","x":360.16668701171875,"y":958.0000305175781},{"command":"L","x":364.16668701171875,"y":956.0000305175781},{"command":"L","x":370.8333740234375,"y":948.6667175292969},{"command":"L","x":373.5,"y":943.3333435058594},{"command":"L","x":375.5,"y":937.3333435058594},{"command":"L","x":376.16668701171875,"y":933.3333435058594},{"command":"L","x":376.8333740234375,"y":931.3333435058594},{"command":"L","x":376.8333740234375,"y":930.0000305175781},{"command":"L","x":376.8333740234375,"y":929.3333435058594},{"command":"L","x":376.16668701171875,"y":930.0000305175781},{"command":"L","x":375.5,"y":932.0000305175781},{"command":"L","x":375.5,"y":937.3333435058594},{"command":"L","x":374.8333740234375,"y":953.3333435058594},{"command":"L","x":374.8333740234375,"y":960.6667175292969},{"command":"L","x":375.5,"y":966.0000305175781},{"command":"L","x":377.5,"y":974.6667175292969},{"command":"L","x":378.16668701171875,"y":977.3333435058594},{"command":"L","x":380.8333740234375,"y":981.3333435058594},{"command":"L","x":382.16668701171875,"y":982.6667175292969},{"command":"L","x":383.5,"y":982.6667175292969},{"command":"L","x":387.5,"y":982.6667175292969},{"command":"L","x":389.5,"y":980.6667175292969},{"command":"L","x":392.16668701171875,"y":976.6667175292969},{"command":"L","x":392.8333740234375,"y":973.3333435058594},{"command":"L","x":392.16668701171875,"y":970.0000305175781},{"command":"L","x":388.8333740234375,"y":965.3333435058594},{"command":"L","x":385.5,"y":964.0000305175781},{"command":"L","x":382.8333740234375,"y":964.0000305175781},{"command":"L","x":377.5,"y":964.0000305175781},{"command":"L","x":375.5,"y":964.6667175292969},{"command":"L","x":373.5,"y":965.3333435058594},{"command":"L","x":374.8333740234375,"y":963.3333435058594},{"command":"L","x":376.8333740234375,"y":961.3333435058594},{"command":"L","x":382.16668701171875,"y":956.0000305175781},{"command":"L","x":384.16668701171875,"y":953.3333435058594},{"command":"L","x":387.5,"y":950.6667175292969},{"command":"L","x":388.16668701171875,"y":952.0000305175781},{"command":"L","x":388.16668701171875,"y":952.6667175292969},{"command":"L","x":388.8333740234375,"y":954.0000305175781},{"command":"L","x":388.8333740234375,"y":954.6667175292969},{"command":"L","x":389.5,"y":959.3333435058594},{"command":"L","x":389.5,"y":960.6667175292969},{"command":"L","x":390.16668701171875,"y":961.3333435058594},{"command":"L","x":390.8333740234375,"y":960.6667175292969},{"command":"L","x":393.5,"y":958.0000305175781},{"command":"L","x":396.8333740234375,"y":954.0000305175781},{"command":"L","x":398.16668701171875,"y":952.0000305175781},{"command":"L","x":400.16668701171875,"y":949.3333435058594},{"command":"L","x":400.16668701171875,"y":948.6667175292969},{"command":"L","x":400.8333740234375,"y":948.0000305175781},{"command":"L","x":400.8333740234375,"y":947.3333435058594},{"command":"L","x":401.5,"y":948.0000305175781},{"command":"L","x":402.16668701171875,"y":949.3333435058594},{"command":"L","x":403.5,"y":950.6667175292969},{"command":"L","x":404.8333740234375,"y":953.3333435058594},{"command":"L","x":406.16668701171875,"y":954.0000305175781},{"command":"L","x":407.5,"y":954.0000305175781},{"command":"L","x":410.16668701171875,"y":952.0000305175781},{"command":"L","x":412.16668701171875,"y":949.3333435058594},{"command":"L","x":414.16668701171875,"y":944.6667175292969},{"command":"L","x":414.16668701171875,"y":942.0000305175781},{"command":"L","x":414.16668701171875,"y":940.6667175292969},{"command":"L","x":414.16668701171875,"y":938.6667175292969},{"command":"L","x":414.16668701171875,"y":938.0000305175781},{"command":"L","x":415.5,"y":939.3333435058594},{"command":"L","x":418.8333740234375,"y":942.6667175292969},{"command":"L","x":420.16668701171875,"y":945.3333435058594},{"command":"L","x":421.5,"y":946.6667175292969},{"command":"L","x":422.8333740234375,"y":950.0000305175781},{"command":"L","x":423.5,"y":950.6667175292969},{"command":"L","x":423.5,"y":953.3333435058594},{"command":"L","x":422.8333740234375,"y":954.0000305175781},{"command":"L","x":421.5,"y":955.3333435058594},{"command":"L","x":421.5,"y":956.0000305175781},{"command":"L","x":422.16668701171875,"y":954.6667175292969},{"command":"L","x":422.8333740234375,"y":954.0000305175781},{"command":"L","x":424.8333740234375,"y":950.6667175292969},{"command":"L","x":425.5,"y":948.6667175292969},{"command":"L","x":428.16668701171875,"y":945.3333435058594},{"command":"L","x":428.8333740234375,"y":943.3333435058594},{"command":"L","x":428.8333740234375,"y":942.6667175292969},{"command":"L","x":428.8333740234375,"y":943.3333435058594},{"command":"L","x":428.8333740234375,"y":945.3333435058594},{"command":"L","x":428.8333740234375,"y":948.0000305175781},{"command":"L","x":428.8333740234375,"y":950.0000305175781},{"command":"L","x":429.5,"y":953.3333435058594},{"command":"L","x":430.16668701171875,"y":953.3333435058594},{"command":"L","x":432.8333740234375,"y":952.6667175292969},{"command":"L","x":434.8333740234375,"y":950.6667175292969},{"command":"L","x":437.5,"y":948.6667175292969},{"command":"L","x":440.16668701171875,"y":944.6667175292969},{"command":"L","x":441.5,"y":942.6667175292969},{"command":"L","x":442.16668701171875,"y":942.0000305175781},{"command":"L","x":442.8333740234375,"y":941.3333435058594},{"command":"L","x":442.8333740234375,"y":942.0000305175781},{"command":"L","x":442.8333740234375,"y":943.3333435058594},{"command":"L","x":442.8333740234375,"y":944.6667175292969},{"command":"L","x":442.8333740234375,"y":946.0000305175781},{"command":"L","x":443.5,"y":949.3333435058594},{"command":"L","x":444.16668701171875,"y":950.6667175292969},{"command":"L","x":445.5,"y":950.6667175292969},{"command":"L","x":447.5,"y":950.6667175292969},{"command":"L","x":450.16668701171875,"y":948.6667175292969},{"command":"L","x":452.16668701171875,"y":945.3333435058594},{"command":"L","x":453.5,"y":942.6667175292969},{"command":"L","x":452.8333740234375,"y":938.6667175292969},{"command":"L","x":452.16668701171875,"y":937.3333435058594},{"command":"L","x":450.8333740234375,"y":936.6667175292969},{"command":"L","x":448.8333740234375,"y":936.0000305175781},{"command":"L","x":447.5,"y":936.6667175292969},{"command":"L","x":446.16668701171875,"y":937.3333435058594},{"command":"L","x":445.5,"y":938.6667175292969},{"command":"L","x":445.5,"y":939.3333435058594},{"command":"L","x":446.16668701171875,"y":939.3333435058594},{"command":"L","x":446.8333740234375,"y":939.3333435058594},{"command":"L","x":452.16668701171875,"y":937.3333435058594},{"command":"L","x":454.8333740234375,"y":936.6667175292969},{"command":"L","x":456.8333740234375,"y":936.0000305175781},{"command":"L","x":459.5,"y":936.6667175292969},{"command":"L","x":460.8333740234375,"y":937.3333435058594},{"command":"L","x":461.5,"y":938.6667175292969},{"command":"L","x":462.16668701171875,"y":942.0000305175781},{"command":"L","x":462.16668701171875,"y":942.6667175292969},{"command":"L","x":462.16668701171875,"y":944.0000305175781},{"command":"L","x":462.16668701171875,"y":943.3333435058594},{"command":"L","x":462.16668701171875,"y":942.6667175292969},{"command":"L","x":462.16668701171875,"y":941.3333435058594},{"command":"L","x":462.8333740234375,"y":938.6667175292969},{"command":"L","x":464.16668701171875,"y":935.3333435058594},{"command":"L","x":465.5,"y":933.3333435058594},{"command":"L","x":466.16668701171875,"y":932.6667175292969},{"command":"L","x":467.5,"y":933.3333435058594},{"command":"L","x":469.5,"y":935.3333435058594},{"command":"L","x":470.16668701171875,"y":938.6667175292969},{"command":"L","x":472.8333740234375,"y":943.3333435058594},{"command":"L","x":472.8333740234375,"y":944.6667175292969},{"command":"L","x":474.16668701171875,"y":944.6667175292969},{"command":"L","x":475.5,"y":944.0000305175781},{"command":"L","x":478.16668701171875,"y":941.3333435058594},{"command":"L","x":481.5,"y":937.3333435058594},{"command":"L","x":484.8333740234375,"y":934.0000305175781},{"command":"L","x":488.8333740234375,"y":929.3333435058594},{"command":"L","x":489.5,"y":928.0000305175781}]'
});
}
}
@@ -607,7 +607,7 @@ Edit opacity using the range slider in the Edit Opacity tool.
Default properties for ink annotations can be set before creating the control using InkAnnotationSettings.
-After changing default values, the selected values are applied. Refer to the following code sample to set the default ink annotation settings.
+After changing default values, the new defaults are applied to subsequently created ink annotations.. Refer to the following code sample to set the default ink annotation settings.
{% tabs %}
{% highlight html tabtitle="Composition API (Standalone)" %}
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/annotation/line-angle-constraints.md b/Document-Processing/PDF/PDF-Viewer/vue/annotation/line-angle-constraints.md
index d138dd95b2..3fb7cc5110 100644
--- a/Document-Processing/PDF/PDF-Viewer/vue/annotation/line-angle-constraints.md
+++ b/Document-Processing/PDF/PDF-Viewer/vue/annotation/line-angle-constraints.md
@@ -9,7 +9,7 @@ documentation: ug
# Line angle constraints in Vue PDF Viewer
-The PDF Viewer control provides robust **line angle constraints** functionality. This allows users to draw line type annotations with controlled angle snapping, improving accuracy and consistency across technical drawings and measurements across your PDF documents.
+The PDF Viewer control provides angle-constraint functionality for line-type annotations. When enabled, drawing operations snap to configured angle increments, improving accuracy and consistency for technical drawings and measurements.
## Enable line angle constraints
Configure the `enableLineAngleConstraints` property within `annotationDrawingOptions`. When enabled, supported line-type annotations snap to fixed angles.
@@ -81,7 +81,7 @@ export default {
### enableLineAngleConstraints
-The `enableLineAngleConstraints` property activates angle snapping for line-based annotations. When set to `true`, the following annotation types will snap to fixed angles as defined by the `restrictLineAngleTo` property:
+The `enableLineAngleConstraints` property activates angle snapping for line-based annotations. When set to `true`, the following annotation types snap to fixed angles as defined by `restrictLineAngleTo`:
- Lines
- Arrows
@@ -91,51 +91,51 @@ The `enableLineAngleConstraints` property activates angle snapping for line-base
- Area measurements
- Volume measurements
-**Key Benefits:**
+**Key benefits:**
-- Automatic angle snapping during the drawing
-- Enhanced precision for technical drawings and measurements
-- Desktop behavior: hold Shift while drawing to toggle constraints (when disabled, Shift temporarily enables; when enabled, Shift enforces snapping)
-- Real-time visual feedback showing angle snapping behavior
+- Automatic angle snapping while drawing
+- Improved precision for technical drawings and measurements
+- Desktop behavior: hold Shift while drawing to toggle constraints (if constraints are disabled, Shift temporarily enables snapping; if enabled, Shift enforces snapping)
+- Real-time visual feedback during drawing
### restrictLineAngleTo
-Defines the angle increment (in degrees) used to constrain supported annotations. The default is 45.
+Specifies the angle increment (in degrees) used for snapping. The default increment is 45°.
-Angle snapping rules:
+Angle snapping behavior:
-- The initial drawing direction is treated as the 0° reference point
-- Snapped angles are calculated based on the increment
-- If the increment doesn’t divide 360 evenly, angles reset after 360°
+- The initial drawing direction is treated as the 0° reference point.
+- Snapped angles are calculated by adding the increment to the reference direction.
+- If the increment does not divide 360 evenly, angles continue wrapping after 360°.
Examples:
-- restrictLineAngleTo: 45 → Snapped angles: 0°, 45°, 90°, 135°, 180°, 225°, 270°, 315°, 360°
-- restrictLineAngleTo: 100 → Snapped angles: 0°, 100°, 200°, 300°, 360°
+- `restrictLineAngleTo: 45` → snapped angles: 0°, 45°, 90°, 135°, 180°, 225°, 270°, 315°, 360°
+- `restrictLineAngleTo: 100` → snapped angles: 0°, 100°, 200°, 300°, 360°
## Work with constrained annotations
-### Drawing Behavior
+### Drawing behavior
-When line angle constraints are enabled:
+When angle constraints are enabled:
-- Start drawing a supported annotation (Line, Arrow, Polyline, Distance, or Perimeter).
-- The segment snaps to the nearest allowed angle.
-- A visual indicator reflects snapping in real time.
-- Release to complete the annotation.
+- Begin drawing a supported annotation (Line, Arrow, Polyline, Distance, or Perimeter).
+- The segment snaps to the nearest allowed angle according to `restrictLineAngleTo`.
+- A visual indicator displays the current snapping angle in real time.
+- Release to finalize the annotation.
-### Keyboard Shortcuts
+### Keyboard shortcuts
Desktop platforms:
-- Shift + drag: toggles snapping. If constraints are disabled, Shift temporarily enables them; if enabled, Shift enforces snapping.
-### Selector-Based Modifications
+- `Shift` + drag: toggles snapping during the drag operation. If constraints are disabled, `Shift` temporarily enables snapping; if enabled, `Shift` enforces snapping.
-When modifying existing line annotations using selectors:
+### Modifying constrained annotations
-- Constraints apply based on the original line direction.
-- The reference angle (0°) is determined by the line’s current orientation.
-- Constraint snapping during modification is supported for Line and Arrow.
-- Adjustments snap to the configured angle increment.
+When editing existing line annotations with selectors:
-N> You can refer to our [Vue PDF Viewer](https://www.syncfusion.com/vue-ui-components/vue-pdf-viewer) feature tour page for its groundbreaking feature representations. You can also explore our [Vue PDF Viewer examples](https://github.com/SyncfusionExamples/vue-pdf-viewer-examples) to learn how to render and configure the PDF Viewer.
+- Constraints apply relative to the annotation's current orientation (the line's direction is the 0° reference).
+- Constraint snapping during modification is supported for Line and Arrow annotations.
+- Adjustments snap according to the configured `restrictLineAngleTo` increment.
+
+N> Refer to the Vue PDF Viewer [feature tour](https://www.syncfusion.com/pdf-viewer-sdk/vue-pdf-viewer) for highlights. See additional [Vue PDF Viewer examples](https://github.com/SyncfusionExamples/vue-pdf-viewer-examples)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/annotation/measurement-annotation.md b/Document-Processing/PDF/PDF-Viewer/vue/annotation/measurement-annotation.md
index bd82f44371..4bbd28f99e 100644
--- a/Document-Processing/PDF/PDF-Viewer/vue/annotation/measurement-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/vue/annotation/measurement-annotation.md
@@ -18,20 +18,20 @@ The PDF Viewer provides options to add measurement annotations. The supported me
* Radius
* Volume
-
+
## Adding measurement annotations to the PDF document
-The measurement annotations can be added to the PDF document using the annotation toolbar.
+Measurement annotations can be added to the PDF document using the annotation toolbar.
* Click the **Edit Annotation** button in the PDF Viewer toolbar. A toolbar appears below it.
* Click the **Measurement Annotation** drop-down button. The pop-up lists available measurement annotation types.
* Select a measurement type to enable its annotation mode.
* Measure and add annotations on the pages of the PDF document.
-When in pan mode, selecting a measurement annotation switches the PDF Viewer to text select mode.
+When the viewer is in pan mode, selecting a measurement annotation switches it to text selection mode.
-
+
The following example switches to distance annotation mode.
@@ -202,7 +202,7 @@ export default {
## Add a measurement annotation to the PDF document programmatically
-The PDF Viewer library allows adding measurement annotations programmatically using the [addAnnotation()](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotation/#addannotation) method.
+The PDF Viewer library allows adding measurement annotations programmatically using the [addAnnotation()](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotation#addannotation) method.
Here is an example showing how to add measurement annotations programmatically using addAnnotation():
@@ -919,35 +919,35 @@ The fill color, stroke color, thickness, and opacity can be edited using the Edi
The fill color of the annotation can be edited using the color palette provided in the Edit Color tool.
-
+
### Edit stroke color
The stroke color of the annotation can be edited using the color palette provided in the Edit Stroke Color tool.
-
+
### Edit thickness
Edit border thickness using the range slider provided in the Edit Thickness tool.
-
+
### Edit opacity
The opacity of the annotation can be edited using the range slider provided in the Edit Opacity tool.
-
+
### Edit the line properties
Line-based measurement annotations (distance and perimeter) have additional options in the Line Properties window. Open it by right-clicking the annotation and selecting Properties from the context menu.
-
+
## Set default properties during control initialization
-Default properties for measurement annotations can be set before creating the control using distanceSettings, perimeterSettings, areaSettings, radiusSettings, and volumeSettings.
+Default properties for measurement annotations can be set before creating the control using `distanceSettings`, `perimeterSettings`, `areaSettings`, `radiusSettings`, and `volumeSettings`.
{% tabs %}
{% highlight html tabtitle="Composition API (Standalone)" %}
@@ -1108,9 +1108,9 @@ export default {
The scale ratio and unit of measurement can be modified using the scale ratio option provided in the context menu of the PDF Viewer control.
-
+
-The Units of measurements support for the measurement annotations in the PDF Viewer are
+The PDF Viewer supports the following measurement units:
* Inch
* Millimeter
@@ -1119,7 +1119,7 @@ The Units of measurements support for the measurement annotations in the PDF Vie
* Pica
* Feet
-
+
## Setting default scale ratio settings during control initialization
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/annotation/shape-annotation.md b/Document-Processing/PDF/PDF-Viewer/vue/annotation/shape-annotation.md
index 458a6ac390..2b4fb2b7a4 100644
--- a/Document-Processing/PDF/PDF-Viewer/vue/annotation/shape-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/vue/annotation/shape-annotation.md
@@ -10,7 +10,7 @@ domainurl: ##DomainURL##
# Shape annotation in Vue PDF Viewer control
-The PDF Viewer control provides options to add, edit, and delete shape annotations. The supported shape annotation types are:
+The PDF Viewer provides options to add, edit, and delete shape annotations. Supported shape annotation types include:
* Line
* Arrow
@@ -24,16 +24,15 @@ The PDF Viewer control provides options to add, edit, and delete shape annotatio
Shape annotations can be added to the PDF document using the annotation toolbar.
-* Click the **Edit Annotation** button in the PDF Viewer toolbar. A toolbar appears below it.
-* Click the **Shape Annotation** drop-down button. The pop-up lists available shape annotation types.
-* Select a shape type to enable its annotation mode.
-* Draw the shape on the pages of the PDF document.
+* Select the **Edit Annotation** button in the PDF Viewer toolbar to open the annotation toolbar.
+* Open the **Shape Annotation** drop-down to view available shape types.
+* Select a shape type to enable its annotation mode, then draw the shape on the page.
-N> When in pan mode and a shape annotation tool is selected, the PDF Viewer switches to text select mode automatically to ensure a smooth interaction experience.
+N> When the PDF Viewer is in pan mode and a shape annotation tool is selected, the viewer automatically switches to text select mode to ensure a smooth interaction experience.

-Refer to the following code sample to switch to the circle annotation mode.
+Use the following sample to switch the viewer to circle annotation mode.
{% tabs %}
@@ -204,7 +203,7 @@ export default {
## Add a shape annotation to the PDF document programmatically
-The PDF Viewer library allows adding a shape annotation programmatically using the [addAnnotation()](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotation/#addannotation) method.
+The PDF Viewer library allows adding a shape annotation programmatically using the [addAnnotation()](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotation#addannotation) method.
Here is an example showing how to add shape annotations programmatically using addAnnotation():
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/annotation/signature-annotation.md b/Document-Processing/PDF/PDF-Viewer/vue/annotation/signature-annotation.md
index a0b2270e56..092aa0b4cd 100644
--- a/Document-Processing/PDF/PDF-Viewer/vue/annotation/signature-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/vue/annotation/signature-annotation.md
@@ -14,22 +14,26 @@ The PDF Viewer control supports adding handwritten signatures to a PDF document.
## Adding a handwritten signature to the PDF document
-The handwritten signature can be added to the PDF document using the annotation toolbar.
+Add a handwritten signature using the annotation toolbar.
-* Click the **Edit Annotation** button in the PDF Viewer toolbar. A toolbar appears below it.
-* Select the **HandWritten Signature** button in the annotation toolbar. The signature panel appears.
+* Open the annotation toolbar by clicking the **Edit Annotation** button on the PDF Viewer toolbar.
+* Select the **HandWritten Signature** button in the annotation toolbar to open the signature panel.
-
+
* Draw the signature in the panel.
-
+
* Click **Create**, move the signature, and place it at the desired location.

-Refer to the following code sample to switch to the handwritten signature mode programmatically.
+## Adding a handwritten signature to the PDF document Programmatically
+
+With the PDF Viewer library, you can programmatically add a handwritten signature to the PDF Viewer control using the [addAnnotation()](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotation#addannotation) method.
+
+Here is an example of using the `addAnnotation()` method to add a handwritten signature programmatically
{% tabs %}
{% highlight html tabtitle="Composition API (Standalone)" %}
@@ -276,7 +280,7 @@ export default {
## Add a handwritten signature programmatically to the PDF document
-With the PDF Viewer library, you can programmatically add handwritten signature to the PDF Viewer control using the [**addAnnotation()**](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotation/#addannotation) method.
+With the PDF Viewer library, you can programmatically add handwritten signature to the PDF Viewer control using the [**addAnnotation()**](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotation#addannotation) method.
Here is an example of adding a handwritten signature programmatically using addAnnotation():
@@ -295,7 +299,7 @@ Here is an example of adding a handwritten signature programmatically using addA
{% endhighlight %}
-{% highlight html tabtitle="Server-Backed" %}
+{% highlight html tabtitle="Options API (Server-Backed)" %}
@@ -211,7 +211,7 @@ export default {
To modify an existing sticky note annotation programmatically, use the editAnnotation() method.
-Here is an example of using editAnnotation():
+The following example shows how to modify an existing sticky note annotation using `editAnnotation()`:
{% tabs %}
{% highlight html tabtitle="Composition API (Standalone)" %}
@@ -254,7 +254,7 @@ const editAnnotation = function () {
{% endhighlight %}
-{% highlight html tabtitle="Standalone" %}
+{% highlight html tabtitle="Options API (Standalone)" %}
@@ -400,25 +400,25 @@ export default {
Edit opacity using the range slider in the Edit Opacity tool.
-
+
### Editing comments
-Comment text, replies, and status can be edited using the comment panel.
+Comment text, replies, and status can be edited in the comment panel.
* Open the comment panel using the Comment Panel button in the annotation toolbar.
-
+
Modify or delete comments or replies, and change status using the menu options in the comment panel.
-
+
## Set default properties during control initialization
-Default properties for sticky note annotations can be set before creating the control using StickyNotesSettings.
+Default properties for sticky note annotations can be set before creating the control using `StickyNotesSettings`.
-After changing default opacity using the Edit Opacity tool, the selected value is applied. The following example sets default sticky note annotation settings.
+After changing default opacity with the Edit Opacity tool, the selected value is applied to new sticky note annotations. The following example sets default sticky note annotation properties.
{% tabs %}
@@ -557,7 +557,7 @@ export default {
## Disable sticky note annotations
-The PDF Viewer control provides an option to disable sticky note annotations. The following example disables the feature.
+The PDF Viewer control provides an option to disable sticky note annotations. The following example shows how to disable the feature.
{% tabs %}
{% highlight html tabtitle="Composition API (Standalone)" %}
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/annotation/text-markup-annotation.md b/Document-Processing/PDF/PDF-Viewer/vue/annotation/text-markup-annotation.md
index e948d0f4f4..007147ad07 100644
--- a/Document-Processing/PDF/PDF-Viewer/vue/annotation/text-markup-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/vue/annotation/text-markup-annotation.md
@@ -8,11 +8,11 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Text markup annotation in Vue PDF viewer component
+# Text markup annotation in Vue PDF Viewer
-The PDF Viewer provides options to add, edit, and delete text markup annotations, including Highlight, Underline, Strikethrough, and Squiggly.
+The PDF Viewer provides options to add, edit, and delete text markup annotations, including highlight, underline, strikethrough, and squiggly.
-
+
## Highlight text
@@ -22,7 +22,7 @@ There are two ways to highlight text:
* Select text in the PDF document and right-click it.
* Select **Highlight** in the context menu.
- 
+ 
2.Using the annotation toolbar
@@ -31,7 +31,7 @@ There are two ways to highlight text:
* Select text to add the highlight annotation.
* Alternatively, select text first and then click **Highlight**.
- 
+ 
When pan mode is active and a text markup mode is entered, the PDF Viewer switches to text selection mode to enable selection.
@@ -239,7 +239,7 @@ provide('PdfViewer', [Toolbar, Magnification, Navigation, LinkAnnotation, Bookma
Print, TextSelection, TextSearch, Annotation, FormFields, FormDesigner, PageOrganizer])
const documentLoad = () => {
- const viewer = this.$refs.pdfviewer.ej2Instances;
+ const viewer = pdfviewer.value.ej2Instances;
document.getElementById('set').addEventListener('click', () => {
viewer.annotation.setAnnotationMode('Highlight');
});
@@ -329,7 +329,7 @@ provide('PdfViewer', [Toolbar, Magnification, Navigation, LinkAnnotation, Bookma
Print, TextSelection, TextSearch, Annotation, FormFields, FormDesigner, PageOrganizer])
const documentLoad = () => {
- const viewer = this.$refs.pdfviewer.ej2Instances;
+ const viewer = pdfviewer.value.ej2Instances;
document.getElementById('set').addEventListener('click', () => {
viewer.annotation.setAnnotationMode('Highlight');
});
@@ -395,7 +395,7 @@ export default {
## Highlight text programmatically
-Programmatically add highlights using the [addAnnotation](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotation/#addannotation) method.
+Programmatically add highlights using the [addAnnotation](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotation#addannotation) method.
Example:
@@ -425,7 +425,7 @@ provide('PdfViewer', [Toolbar, Magnification, Navigation, LinkAnnotation, Bookma
ThumbnailView, Print, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer])
const addAnnotation = function () {
- const viewer = this.$refs.pdfviewer.ej2Instances;
+ const viewer = pdfviewer.value.ej2Instances;
viewer.annotation.addAnnotation("Highlight", {
bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
pageNumber: 1
@@ -571,7 +571,7 @@ There are two ways to underline text:
* Select text in the PDF document and right-click it.
* Select **Underline** in the context menu.
- 
+ 
2.Using the annotation toolbar
@@ -580,7 +580,7 @@ There are two ways to underline text:
* Select text to add the underline annotation.
* Alternatively, select text first and then click **Underline**.
- 
+ 
In the pan mode, if the underline mode is entered, the PDF Viewer control will switch to text select mode to enable the text selection for underlining the text.
@@ -942,12 +942,12 @@ export default {
## Underline a text programmatically
-Programmatically add underlines using the [addAnnotation](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotation/#addannotation) method.
+Programmatically add underlines using the [addAnnotation](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotation#addannotation) method.
Example:
{% tabs %}
-{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+{% highlight html tabtitle="Composition API (Standalone)" %}
@@ -983,7 +983,7 @@ const addAnnotation = function () {
{% endhighlight %}
-{% highlight html tabtitle="Standalone" %}
+{% highlight html tabtitle="Options API (Standalone)" %}
@@ -1119,7 +1119,7 @@ There are two ways to strikethrough text:
* Select text in the PDF document and right-click it.
* Select **Strikethrough** in the context menu.
- 
+ 
2.Using the annotation toolbar
@@ -1128,9 +1128,9 @@ There are two ways to strikethrough text:
* Select text to add the strikethrough annotation.
* Alternatively, select text first and then click **Strikethrough**.
- 
+ 
-In the pan mode, if the strikethrough mode is entered, the PDF Viewer control will switch to text select mode to enable the text selection for striking through the text.
+N> While in pan mode, clicking the strikethrough button switches the viewer to text select mode so text can be selected for annotation.
Refer to the following code snippet to switch to strikethrough mode.
@@ -1162,7 +1162,7 @@ provide('PdfViewer', [Toolbar, Magnification, Navigation, LinkAnnotation, Bookma
Print, TextSelection, TextSearch, Annotation, FormFields, FormDesigner, PageOrganizer])
const documentLoad = () => {
- const viewer = this.$refs.pdfviewer.ej2Instances;
+ const viewer = pdfviewer.value.ej2Instances;
document.getElementById('set').addEventListener('click', () => {
viewer.annotation.setAnnotationMode('Strikethrough');
});
@@ -1216,7 +1216,7 @@ export default {
{% endhighlight %}
-{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+{% highlight html tabtitle="Composition API (Server-Backed)" %}
@@ -1491,7 +1491,7 @@ export default {
## Strikethrough text programmatically
-Programmatically add strikethrough using the [addAnnotation](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotation/#addannotation) method.
+Programmatically add strikethrough using the [addAnnotation](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotation#addannotation) method.
Here's an example of how you can use the **addAnnotation()** method to apply Strikethrough programmatically:
@@ -1670,7 +1670,7 @@ There are two ways to add squiggly to text:
* Select text in the PDF document and right-click it.
* Select **Squiggly** in the context menu.
- 
+ 
2.Using the annotation toolbar
@@ -1679,14 +1679,14 @@ There are two ways to add squiggly to text:
* Select the text and the squiggly annotation will be added.
* You can also select the text and apply the squiggly annotation using the **Squiggly** button.
- 
+ 
-In the pan mode, if the squiggly mode is entered, the PDF Viewer control will switch to text select mode to enable the text selection for adding squiggly to the text.
+N> While in pan mode, clicking the squiggly button switches the viewer to text select mode so text can be selected for annotation.
Refer to the following code snippet to switch to squiggly mode.
{% tabs %}
-{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+{% highlight html tabtitle="Composition API (Standalone)" %}
@@ -2042,7 +2042,7 @@ export default {
## Squiggly a text programmatically
-The PDF Viewer library enables you to programmatically Squiggly text within the PDF Viewer control using the [**addAnnotation()**](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotation/#addannotation) method.
+The PDF Viewer library enables you to programmatically Squiggly text within the PDF Viewer control using the [**addAnnotation()**](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/annotation#addannotation) method.
Here's an example of how you can use the **addAnnotation()** method to apply Squiggly programmatically:
@@ -2225,29 +2225,29 @@ The selected annotation can be deleted by the following ways:
* Select the annotation to be deleted.
* Click the **Delete Annotation** button in the annotation toolbar. The selected annotation will be deleted.
- 
+ 
-## Editing the properties of the text markup annotation
+## Edit text markup annotation properties
-The color and the opacity of the text markup annotation can be edited using the Edit Color tool and the Edit Opacity tool in the annotation toolbar.
+The color and opacity of text markup annotations can be edited using the Edit Color and Edit Opacity tools in the annotation toolbar.
-### Editing color
+### Edit color
-The color of the annotation can be edited using the color palette provided in the Edit Color tool.
+Use the color palette in the Edit Color tool to change the annotation color.
-
+
-### Editing opacity
+### Edit opacity
-The opacity of the annotation can be edited using the range slider provided in the Edit Opacity tool.
+Use the range slider in the Edit Opacity tool to change annotation opacity.
-
+
-## Setting default properties during control initialization
+## Set default properties during control initialization
The properties of the text markup annotation can be set before creating the control using highlightSettings, underlineSettings, strikethroughSettings, squigglySettings.
->After editing the default color and opacity using the Edit Color tool and Edit Opacity tool, they will be changed to the selected values.
+N> After editing default color and opacity with the Edit Color and Edit Opacity tools, the default values update to the selected settings.
Refer to the following code snippet to set the default annotation settings.
@@ -2426,7 +2426,7 @@ Refer to the following code snippet for calling undo and redo actions from the c
+ :documentLoad="documentLoad" :style="{ height: '800px', width: '1200px' }">
@@ -2434,37 +2434,27 @@ Refer to the following code snippet for calling undo and redo actions from the c
@@ -2506,7 +2496,7 @@ export default {
},
methods: {
documentLoad() {
- viewer = this.$refs.pdfviewer.ej2Instances;
+ const viewer = this.$refs.pdfviewer.ej2Instances;
document.getElementById('undo').addEventListener('click', () => {
viewer.undo();
});
@@ -2519,7 +2509,7 @@ export default {
{% endhighlight %}
-{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+{% highlight html tabtitle="Composition API (Server-Backed)" %}
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/content-security-policy.md b/Document-Processing/PDF/PDF-Viewer/vue/content-security-policy.md
index 6d84a8c904..cf334baff3 100644
--- a/Document-Processing/PDF/PDF-Viewer/vue/content-security-policy.md
+++ b/Document-Processing/PDF/PDF-Viewer/vue/content-security-policy.md
@@ -10,11 +10,33 @@ domainurl: ##DomainURL##
# Content Security Policy in Vue PDF Viewer
-Content Security Policy (CSP) is a security feature implemented by web browsers that helps to protect against attacks such as cross-site scripting (XSS) and data injection. It limits the sources from which content can be loaded on a web page.
+Content Security Policy (CSP) is a security feature implemented by web browsers that helps protect against attacks such as cross-site scripting (XSS) and data injection. It restricts the sources from which content can be loaded on a web page.
-To enable strict [Content Security Policy (CSP)](https://csp.withgoogle.com/docs/strict-csp.html), certain browser features are disabled by default. In order to use Syncfusion PDF Viewer control with strict CSP mode, it is essential to include following directives in the CSP meta tag.
+When enabling strict [Content Security Policy (CSP)](https://csp.withgoogle.com/docs/strict-csp.html), certain browser features are disabled by default for enhanced security. To use the Syncfusion PDF Viewer control in strict CSP mode, specific directives must be configured in the CSP meta tag to allow the control's necessary resources.
-* Syncfusion PDF Viewer control are rendered with calculated **inline styles** and **base64** font icons, which are blocked on a strict CSP-enabled site. To allow them, add the [`style-src 'self' 'wasm-unsafe' blob:;` ](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/style-src) and [`font-src 'self' data:;`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/font-src) directives in the meta tag as follows.
+## CSP Directives Reference
+
+The following table describes each CSP directive and its usage with the Syncfusion PDF Viewer:
+
+| Directive | Usage |
+|------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `default-src 'self';` | Sets the default policy for loading resources. `'self'` restricts loading to the same origin (same domain). |
+| `script-src 'self' 'wasm-unsafe-eval' blob:;` | Defines where JavaScript and WebAssembly code can be loaded. `'self'` allows scripts from the same origin. `'wasm-unsafe-eval'` permits WebAssembly compilation from JavaScript functions. `blob:` allows loading scripts from Blob URLs. |
+| `worker-src 'self' blob:;` | Controls where web workers can be loaded. `'self'` allows same-origin workers. `blob:` enables blob-based workers, which are common in PDF viewers and compute-intensive applications. |
+| `connect-src 'self' data:;` | Restricts network requests (fetch, XHR, WebSockets) to specified sources. `'self'` limits requests to the same origin. `data:` allows data URIs. |
+| `style-src 'self' blob:;` | Defines stylesheet sources. `'self'` restricts to the same origin. `blob:` allows dynamically generated styles necessary for runtime CSS generation. |
+| `font-src 'self' data:;` | Controls font loading sources. `'self'` allows local fonts. `data:` permits inline fonts (base64 encoded), and URLs enable loading from external font CDNs. |
+| `img-src 'self' data: blob:;` | Controls image loading sources. `'self'` restricts to the same origin. `data:` allows inline images (base64 encoded). `blob:` allows Blob URLs for dynamically generated images. |
+
+## Configuring CSP for PDF Viewer
+
+The following sections describe CSP configurations required for different PDF Viewer features.
+
+### Styles and Fonts
+
+The PDF Viewer is rendered with calculated inline styles and base64-encoded font icons, which are blocked in strict CSP mode. Additionally, the material and tailwind built-in themes reference the external Roboto font from Google Fonts, which must also be allowed.
+
+Include the following directives to permit inline styles and external fonts:
{% tabs %}
{% highlight razor tabtitle="HTML" %}
@@ -26,9 +48,7 @@ To enable strict [Content Security Policy (CSP)](https://csp.withgoogle.com/docs
{% endhighlight %}
{% endtabs %}
-* Syncfusion **material** and **tailwind** built-in themes contain a reference to the [`Roboto’s external font`](https://fonts.googleapis.com/css?family=Roboto:400,500), which is also blocked. To allow them, add the [`external font`](https://fonts.googleapis.com/css?family=Roboto:400,500) reference to the [`style-src`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/style-src) and [`font-src`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/font-src) directives in the above meta tag.
-
-The resultant meta tag is included within the `` tag and resolves the CSP violation on the application's side when utilizing Syncfusion PDF Viewer control with material and tailwind themes.
+The meta tag should be placed within the `` section of the HTML document to resolve CSP violations when using material or tailwind themes:
{% tabs %}
{% highlight razor tabtitle="HTML" %}
@@ -43,7 +63,9 @@ The resultant meta tag is included within the `` tag and resolves the CSP
{% endhighlight %}
{% endtabs %}
-* Syncfusion PDF Viewer control when images are added as **blob** and **base64**, which are blocked on a strict CSP-enabled site.To overcome this restriction, it is necessary to add the image-src data: directive in the meta tag. To allow them, add the [`style-src 'self' blob:;`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/style-src) and [`image-src 'self' data:;`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/img-src) directives as follows.
+### Images and Blobs
+
+When images are added as blob or base64 data to the PDF Viewer, they are blocked in strict CSP mode. To permit these resources, include the [`img-src`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/img-src) directive in the CSP meta tag:
{% tabs %}
{% highlight razor tabtitle="HTML" %}
@@ -57,7 +79,9 @@ The resultant meta tag is included within the `` tag and resolves the CSP
{% endhighlight %}
{% endtabs %}
-* Syncfusion PDF Viewer control when **web worker** and is used, which is blocked on a strict CSP-enabled site. To allow them, add the [`worker-src`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/worker-src) and [`connect-src`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/connect-src) directives in the above meta tag as follows.
+### Scripts, WebAssembly, and Workers
+
+The PDF Viewer uses WebAssembly and web workers for processing and rendering. Both are blocked in strict CSP mode. To enable these features, include the [`script-src`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src), [`worker-src`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/worker-src), and [`connect-src`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/connect-src) directives:
{% tabs %}
{% highlight razor tabtitle="HTML" %}
@@ -73,18 +97,13 @@ The resultant meta tag is included within the `` tag and resolves the CSP
{% endhighlight %}
{% endtabs %}
-N> In accordance with the latest security practices, the Syncfusion PDF Viewer control now recommends using `wasm-unsafe` in the Content Security Policy (CSP) settings to enhance the security of WebAssembly operations. This change ensures a safer execution environment while maintaining the necessary functionality. Make sure to update your CSP meta tags to reflect this change for optimal security compliance.
+N> In accordance with the latest security practices, the Syncfusion PDF Viewer control recommends using `wasm-unsafe-eval` in the Content Security Policy (CSP) settings to enable secure WebAssembly compilation. This directive allows WebAssembly to be compiled from JavaScript functions while maintaining a secure execution environment. Update your CSP meta tags to reflect this change for optimal security compliance.
-### Please find the usage of each directives:
+## Security Best Practices
-| Directive | Usage |
-|------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| `default-src 'none';` | Sets the default policy for loading resources. `'self'` means only allow resources from the same origin (same domain). |
-| `script-src 'self' 'wasm-unsafe-eval' blob:;` | Defines where JavaScript (and WebAssembly) code can come from. `'self'` allows scripts from the same origin. `'wasm-unsafe-eval'` allows compilation of WebAssembly using JS eval()-like functions (security-sensitive). `blob:` allows loading scripts from Blob URLs. |
-| `worker-src 'self' blob:;` | Controls where workers can be loaded from. `'self'` allows same-origin workers. `blob:` allows blob-based workers, common in PDF viewers and heavy JS applications. |
-| `connect-src 'self';` | Controls where the application can make network requests, such as `fetch()`, XHR, and WebSockets. `'self'` restricts this to the same origin. |
-| `style-src 'self' blob:;` | Defines the sources for stylesheets. `'self'` restricts to the same origin. `blob:` allows dynamically generated styles, which might be necessary for apps with dynamically generated CSS. |
-| `font-src 'self' data:` | Controls where fonts can be loaded from. `'self'` allows local fonts. `data:` allows inline fonts (base64 embedded), and the URLs allow loading from external font CDN. |
-| `img-src 'self' data:;` | Controls where images can be loaded from. `'self'` restricts to the same origin. `data:` allows inline images (base64). |
+- Test CSP configurations thoroughly in development to identify blocked resources before deployment.
+- Monitor browser console for CSP violations that may indicate missing directives.
+- Use the most restrictive CSP possible while maintaining required functionality.
+- Regularly review CSP settings when upgrading the Syncfusion PDF Viewer to the latest version.
[View sample in GitHub](https://github.com/SyncfusionExamples/vue-pdf-viewer-examples/tree/master)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/download.md b/Document-Processing/PDF/PDF-Viewer/vue/download.md
index 69de055f81..3caaa30779 100644
--- a/Document-Processing/PDF/PDF-Viewer/vue/download.md
+++ b/Document-Processing/PDF/PDF-Viewer/vue/download.md
@@ -9,15 +9,13 @@ domainurl: ##DomainURL##
---
# Download in Vue PDF viewer control
-The PDF Viewer supports downloading the loaded PDF document. Use the enableDownload property to enable or disable the download option, as shown below.
+The Vue PDF Viewer lets users download the currently loaded PDF. Enable the download toolbar button with `enableDownload` for both standalone and server-backed viewers. The examples below demonstrate typical configurations and how to trigger a programmatic download.
-
+
-> Note: When loading documents from other origins, ensure that CORS is correctly configured on the server. In server-backed mode, the document is streamed through the serviceUrl endpoint, which must allow download requests.
+N> When loading documents from other origins, ensure that CORS is correctly configured on the server. In server-backed mode, the document is streamed through the serviceUrl endpoint, which must allow download requests.
-
-
-You can invoke the download action using the following code snippet:
+To invoke download programmatically, use the following snippet:
{% tabs %}
{% highlight html tabtitle="Composition API (Standalone)" %}
@@ -86,7 +84,7 @@ export default {
},
methods: {
- downloadClicked: function (args) {
+ downloadClicked: function () {
this.$refs.pdfviewer.ej2Instances.download();
}
}
@@ -160,7 +158,7 @@ export default {
},
methods: {
- downloadClicked: function (args) {
+ downloadClicked: function () {
this.$refs.pdfviewer.ej2Instances.download();
}
}
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/event.md b/Document-Processing/PDF/PDF-Viewer/vue/event.md
index 938ddf1e78..2385ea34e9 100644
--- a/Document-Processing/PDF/PDF-Viewer/vue/event.md
+++ b/Document-Processing/PDF/PDF-Viewer/vue/event.md
@@ -10,7 +10,9 @@ domainurl: ##DomainURL##
# Events in Vue PDF Viewer
-The PDF Viewer component triggers events for creation, page navigation, document life cycle, context menu interactions, comments, bookmarks, download and export, hyperlinks, annotation import/export, custom keyboard commands, printing, signatures, text search, and text selection. Use these events to integrate custom logic into application workflows.
+The PDF Viewer component triggers events throughout its lifecycle, enabling you to respond to user interactions and document state changes. These events are organized into categories: **Component Lifecycle** (created, resourcesLoaded), **Navigation** (pageChange, pageClick), **Document Operations** (documentLoad, documentLoadFailed, downloadStart, downloadEnd, printStart, printEnd), **User Interactions** (toolbarClick, bookmarkClick, thumbnailClick), **Text Operations** (textSelectionStart, textSelectionEnd, textSearchStart, textSearchComplete), **Annotations** (commentAdd, commentEdit, commentDelete), **Forms** (buttonFieldClick, validateFormFields), and **Customization** (customContextMenuBeforeOpen, customContextMenuSelect). Subscribe to events using the `@eventName` syntax to execute custom code when specific actions occur.
+
+## Commonly used events
The following table lists commonly used events supported by the PDF Viewer component:
@@ -66,13 +68,13 @@ The following table lists commonly used events supported by the PDF Viewer compo
| [`validateFormFields`](#validateformfields) | Triggers when form field validation fails. |
| [`zoomChange`](#zoomchange) | Triggers when the magnification value changes. |
-Note: For annotation and signature events, see the dedicated Annotations Events topic.
+For annotation and signature events, see the dedicated Annotations Events topic.
## bookmarkClick
-The [bookmarkClick](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#bookmarkclick) event triggers when a bookmark item is clicked in the bookmark panel.
+The [bookmarkClick](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#bookmarkclick) event triggers when a bookmark item is clicked in the bookmark panel.
-- Event arguments: [BookmarkClickEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/bookmarkClickEventArgs/).
+- Event arguments: [BookmarkClickEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/bookmarkClickEventArgs).
Example:
@@ -150,7 +152,7 @@ export default {
## toolbarClick
-The [toolbarClick](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#toolbarclick) event triggers when a toolbar item is clicked. Use it to handle actions based on the clicked item's id or name.
+The [toolbarClick](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#toolbarclick) event triggers when a toolbar item is clicked. Use it to handle actions based on the clicked item's id or name.
- Event arguments: `ClickEventArgs`.
@@ -229,9 +231,9 @@ export default {
## validateFormFields
-The [validateFormFields](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#validateformfields) event triggers when form field validation fails, typically before a download or submit action proceeds. Use this event to inspect which required fields are empty and show custom messages or block application logic if needed.
+The [validateFormFields](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#validateformfields) event triggers when form field validation fails, typically before a download or submit action proceeds. Use this event to inspect which required fields are empty and show custom messages or block application logic if needed.
-- Event arguments: [ValidateFormFieldsArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/validateFormFieldsArgs/)
+- Event arguments: [ValidateFormFieldsArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/validateFormFieldsArgs)
- name: Event name
- documentName: Current document name
- formField: The last interacted field’s data (if applicable)
@@ -320,9 +322,9 @@ Tip
## zoomChange
-The [zoomChange](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#zoomchange) event triggers when the magnification value changes.
+The [zoomChange](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#zoomchange) event triggers when the magnification value changes.
-- Event arguments: [ZoomChangeEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/zoomChangeEventArgs/).
+- Event arguments: [ZoomChangeEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/zoomChangeEventArgs).
Example:
@@ -400,9 +402,9 @@ export default {
## buttonFieldClick
-The [buttonFieldClick](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#buttonfieldclick) event triggers when a button form field is clicked.
+The [buttonFieldClick](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#buttonfieldclick) event triggers when a button form field is clicked.
-- Event arguments: [ButtonFieldClickEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/buttonFieldClickEventArgs/).
+- Event arguments: [ButtonFieldClickEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/buttonFieldClickEventArgs).
Example:
@@ -480,9 +482,9 @@ export default {
## commentAdd
-The [commentAdd](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#commentadd) event triggers when a comment is added in the comment panel.
+The [commentAdd](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#commentadd) event triggers when a comment is added in the comment panel.
-- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/commentEventArgs/).
+- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/commentEventArgs).
Example:
@@ -560,9 +562,9 @@ export default {
## commentDelete
-The [commentDelete](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#commentdelete) event triggers when a comment is deleted in the comment panel.
+The [commentDelete](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#commentdelete) event triggers when a comment is deleted in the comment panel.
-- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/commentEventArgs/).
+- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/commentEventArgs).
Example:
@@ -640,9 +642,9 @@ export default {
## commentEdit
-The [commentEdit](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#commentedit) event triggers when a comment is edited in the comment panel.
+The [commentEdit](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#commentedit) event triggers when a comment is edited in the comment panel.
-- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/commentEventArgs/).
+- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/commentEventArgs).
Example:
@@ -720,9 +722,9 @@ export default {
## commentSelect
-The [commentSelect](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#commentselect) event triggers when a comment is selected in the comment panel.
+The [commentSelect](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#commentselect) event triggers when a comment is selected in the comment panel.
-- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/commentEventArgs/).
+- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/commentEventArgs).
Example:
@@ -784,9 +786,9 @@ export default {
## commentStatusChanged
-The [commentStatusChanged](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#commentstatuschanged) event triggers when a comment status is changed in the comment panel.
+The [commentStatusChanged](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#commentstatuschanged) event triggers when a comment status is changed in the comment panel.
-- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/commentEventArgs/).
+- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/commentEventArgs).
Example:
@@ -834,7 +836,7 @@ export default {
## created
-The [created](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#created) event is triggered during the creation of the PDF Viewer component.
+The [created](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#created) event is triggered during the creation of the PDF Viewer component.
- Event arguments: `void`.
@@ -915,9 +917,9 @@ export default {
## customContextMenuBeforeOpen
-The [customContextMenuBeforeOpen](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#customcontextmenubeforeopen) event fires just before the context menu is shown. Use it to show or hide items based on the current state (for example, only show search items when text is selected).
+The [customContextMenuBeforeOpen](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#customcontextmenubeforeopen) event fires just before the context menu is shown. Use it to show or hide items based on the current state (for example, only show search items when text is selected).
-- Event arguments: [CustomContextMenuBeforeOpenEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/customContextMenuBeforeOpenEventArgs/)
+- Event arguments: [CustomContextMenuBeforeOpenEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/customContextMenuBeforeOpenEventArgs)
- name: Event name
- ids: Array of menu item ids that will be shown; remove ids to hide items for this open
@@ -1015,9 +1017,9 @@ export default {
## customContextMenuSelect
-The [customContextMenuSelect](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#customcontextmenuselect) event fires when a custom menu item is clicked. Use it to branch logic by the clicked item's id.
+The [customContextMenuSelect](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#customcontextmenuselect) event fires when a custom menu item is clicked. Use it to branch logic by the clicked item's id.
-- Event arguments: [CustomContextMenuSelectEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/customContextMenuSelectEventArgs/).
+- Event arguments: [CustomContextMenuSelectEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/customContextMenuSelectEventArgs).
- name: Event name
- id: The id of the clicked menu item
@@ -1115,9 +1117,9 @@ export default {
## documentLoad
-The [documentLoad](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#documentload) event occurs after a document is successfully loaded and parsed.
+The [documentLoad](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#documentload) event occurs after a document is successfully loaded and parsed.
-- Event arguments: [LoadEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/loadEventArgs/).
+- Event arguments: [LoadEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/loadEventArgs).
Example:
@@ -1195,9 +1197,9 @@ export default {
## documentLoadFailed
-The [documentLoadFailed](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#documentloadfailed) event triggers when loading a document fails.
+The [documentLoadFailed](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#documentloadfailed) event triggers when loading a document fails.
-- Event arguments: [LoadFailedEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/loadFailedEventArgs/).
+- Event arguments: [LoadFailedEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/loadFailedEventArgs).
Example:
@@ -1276,9 +1278,9 @@ export default {
## documentUnload
-The [documentUnload](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#documentunload) event triggers when closing the current document.
+The [documentUnload](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#documentunload) event triggers when closing the current document.
-- Event arguments: [UnloadEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/unloadEventArgs/).
+- Event arguments: [UnloadEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/unloadEventArgs).
Example:
@@ -1358,9 +1360,9 @@ export default {
## downloadEnd
-The [downloadEnd](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#downloadend) event triggers after a document download completes.
+The [downloadEnd](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#downloadend) event triggers after a document download completes.
-- Event arguments: [DownloadEndEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/downloadEndEventArgs/).
+- Event arguments: [DownloadEndEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/downloadEndEventArgs).
Example:
@@ -1440,9 +1442,9 @@ export default {
## downloadStart
-The [downloadStart](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#downloadstart) event triggers when the download operation is initiated.
+The [downloadStart](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#downloadstart) event triggers when the download operation is initiated.
-- Event arguments: [DownloadStartEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/downloadStartEventArgs/).
+- Event arguments: [DownloadStartEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/downloadStartEventArgs).
Example:
@@ -1521,9 +1523,9 @@ export default {
## exportFailed
-The [exportFailed](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#exportfailed) event triggers when exporting annotations fails.
+The [exportFailed](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#exportfailed) event triggers when exporting annotations fails.
-- Event arguments: [ExportFailureEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/exportFailureEventArgs/).
+- Event arguments: [ExportFailureEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/exportFailureEventArgs).
Example:
@@ -1602,9 +1604,9 @@ export default {
## exportStart
-The [exportStart](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#exportstart) event triggers when exporting annotations starts.
+The [exportStart](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#exportstart) event triggers when exporting annotations starts.
-- Event arguments: [ExportStartEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/exportStartEventArgs/).
+- Event arguments: [ExportStartEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/exportStartEventArgs).
Example:
@@ -1683,9 +1685,9 @@ export default {
## exportSuccess
-The [exportSuccess](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#exportsuccess) event triggers when annotations are exported successfully.
+The [exportSuccess](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#exportsuccess) event triggers when annotations are exported successfully.
-- Event arguments: [ExportSuccessEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/exportSuccessEventArgs/).
+- Event arguments: [ExportSuccessEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/exportSuccessEventArgs).
Example:
@@ -1764,9 +1766,9 @@ export default {
## extractTextCompleted
-The [extractTextCompleted](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#extracttextcompleted) event triggers when text extraction completes.
+The [extractTextCompleted](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#extracttextcompleted) event triggers when text extraction completes.
-- Event arguments: [ExtractTextCompletedEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/extractTextCompletedEventArgs/).
+- Event arguments: [ExtractTextCompletedEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/extractTextCompletedEventArgs).
Example:
@@ -1845,9 +1847,9 @@ export default {
## hyperlinkClick
-The [hyperlinkClick](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#hyperlinkclick) event triggers when a hyperlink is clicked.
+The [hyperlinkClick](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#hyperlinkclick) event triggers when a hyperlink is clicked.
-- Event arguments: [HyperlinkClickEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/hyperlinkClickEventArgs/).
+- Event arguments: [HyperlinkClickEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/hyperlinkClickEventArgs).
Example:
@@ -1926,7 +1928,7 @@ export default {
## hyperlinkMouseOver
-The [hyperlinkMouseOver](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#hyperlinkmouseover) event triggers when hovering over a hyperlink.
+The [hyperlinkMouseOver](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#hyperlinkmouseover) event triggers when hovering over a hyperlink.
- Event arguments: HyperlinkMouseOverArgs.
@@ -2007,9 +2009,9 @@ export default {
## importFailed
-The [importFailed](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#importfailed) event triggers when importing annotations fails.
+The [importFailed](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#importfailed) event triggers when importing annotations fails.
-- Event arguments: [ImportFailureEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/importFailureEventArgs/).
+- Event arguments: [ImportFailureEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/importFailureEventArgs).
Example:
@@ -2088,9 +2090,9 @@ export default {
## importStart
-The [importStart](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#importstart) event triggers when importing annotations starts.
+The [importStart](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#importstart) event triggers when importing annotations starts.
-- Event arguments: [ImportStartEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/importStartEventArgs/).
+- Event arguments: [ImportStartEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/importStartEventArgs).
Example:
@@ -2169,9 +2171,9 @@ export default {
## importSuccess
-The [importSuccess](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#importsuccess) event triggers when annotations are imported successfully.
+The [importSuccess](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#importsuccess) event triggers when annotations are imported successfully.
-- Event arguments: [ImportSuccessEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/importSuccessEventArgs/).
+- Event arguments: [ImportSuccessEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/importSuccessEventArgs).
Example:
@@ -2251,9 +2253,9 @@ export default {
## keyboardCustomCommands
-The [keyboardCustomCommands](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#keyboardcustomcommands) event triggers when customized keyboard command keys are pressed.
+The [keyboardCustomCommands](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#keyboardcustomcommands) event triggers when customized keyboard command keys are pressed.
-- Event arguments: [KeyboardCustomCommandsEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/keyboardCustomCommandsEventArgs/).
+- Event arguments: [KeyboardCustomCommandsEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/keyboardCustomCommandsEventArgs).
- name: Event name
- keyboardCommand: The command metadata raised by Command Manager
@@ -2372,7 +2374,7 @@ export default {
## moveSignature
-The [moveSignature](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#movesignature) event triggers when a signature is moved across the page.
+The [moveSignature](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#movesignature) event triggers when a signature is moved across the page.
- Event arguments: `MoveSignatureEventArgs`.
@@ -2453,9 +2455,9 @@ export default {
## pageChange
-The [pageChange](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#pagechange) event triggers when the current page number changes (for example, via scrolling or navigation controls).
+The [pageChange](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#pagechange) event triggers when the current page number changes (for example, via scrolling or navigation controls).
-- Event arguments: [PageChangeEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/pageChangeEventArgs/).
+- Event arguments: [PageChangeEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/pageChangeEventArgs).
Example:
@@ -2535,9 +2537,9 @@ export default {
## pageClick
-The [pageClick](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#pageclick) event triggers when a mouse click occurs on a page.
+The [pageClick](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#pageclick) event triggers when a mouse click occurs on a page.
-- Event arguments: [PageClickEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/pageClickEventArgs/).
+- Event arguments: [PageClickEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/pageClickEventArgs).
Example:
@@ -2616,7 +2618,7 @@ export default {
## pageMouseover
-The [pageMouseover](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#pagemouseover) event triggers when the mouse moves over a page.
+The [pageMouseover](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#pagemouseover) event triggers when the mouse moves over a page.
- Event arguments: PageMouseoverEventArgs.
@@ -2697,7 +2699,7 @@ export default {
## pageOrganizerSaveAs
-The [pageOrganizerSaveAs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#pageorganizersaveas) event triggers when a Save As action is performed in the page organizer.
+The [pageOrganizerSaveAs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#pageorganizersaveas) event triggers when a Save As action is performed in the page organizer.
- Event arguments: `PageOrganizerSaveAsEventArgs`.
@@ -2778,9 +2780,9 @@ export default {
## pageRenderComplete
-The [pageRenderComplete](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#pagerendercomplete) event triggers after a page finishes rendering.
+The [pageRenderComplete](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#pagerendercomplete) event triggers after a page finishes rendering.
-- Event arguments: [PageRenderCompleteEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/pageRenderCompleteEventArgs/).
+- Event arguments: [PageRenderCompleteEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/pageRenderCompleteEventArgs).
Example:
@@ -2860,9 +2862,9 @@ export default {
## pageRenderInitiate
-The [pageRenderInitiate](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#pagerenderinitiate) event triggers when page rendering begins.
+The [pageRenderInitiate](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#pagerenderinitiate) event triggers when page rendering begins.
-- Event arguments: [PageRenderInitiateEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/pageRenderInitiateEventArgs/).
+- Event arguments: [PageRenderInitiateEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/pageRenderInitiateEventArgs).
Example:
@@ -2941,9 +2943,9 @@ export default {
## printEnd
-The [printEnd](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#printend) event triggers when a print action completes.
+The [printEnd](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#printend) event triggers when a print action completes.
-- Event arguments: [PrintEndEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/printEndEventArgs/).
+- Event arguments: [PrintEndEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/printEndEventArgs).
Example:
@@ -3005,9 +3007,9 @@ export default {
## printStart
-The [printStart](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#printstart) event triggers when a print action is initiated.
+The [printStart](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#printstart) event triggers when a print action is initiated.
-- Event arguments: [PrintStartEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/printStartEventArgs/).
+- Event arguments: [PrintStartEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/printStartEventArgs).
Example:
@@ -3069,9 +3071,9 @@ export default {
## removeSignature
-The [removeSignature](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#removesignature) event triggers when a signature is removed.
+The [removeSignature](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#removesignature) event triggers when a signature is removed.
-- Event arguments: [RemoveSignatureEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/removeSignatureEventArgs/).
+- Event arguments: [RemoveSignatureEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/removeSignatureEventArgs).
Example:
@@ -3133,9 +3135,9 @@ export default {
## resizeSignature
-The [resizeSignature](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#resizesignature) event triggers when a signature is resized.
+The [resizeSignature](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#resizesignature) event triggers when a signature is resized.
-- Event arguments: [ResizeSignatureEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/resizeSignatureEventArgs/).
+- Event arguments: [ResizeSignatureEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/resizeSignatureEventArgs).
Example:
@@ -3197,7 +3199,7 @@ export default {
## resourcesLoaded
-The [resourcesLoaded](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#resourcesLoaded) event triggers after the viewer's required resources are loaded.
+The [resourcesLoaded](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#resourcesLoaded) event triggers after the viewer's required resources are loaded.
- Event arguments: `void`.
@@ -3261,9 +3263,9 @@ export default {
## signaturePropertiesChange
-The [signaturePropertiesChange](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#signaturepropertieschange) event triggers when signature properties change.
+The [signaturePropertiesChange](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#signaturepropertieschange) event triggers when signature properties change.
-- Event arguments: [SignaturePropertiesChangeEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/signaturePropertiesChangeEventArgs/).
+- Event arguments: [SignaturePropertiesChangeEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/signaturePropertiesChangeEventArgs).
Example:
@@ -3326,9 +3328,9 @@ export default {
## signatureSelect
-The [signatureSelect](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#signatureselect) event triggers when a signature is selected.
+The [signatureSelect](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#signatureselect) event triggers when a signature is selected.
-- Event arguments: [SignatureSelectEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/signatureSelectEventArgs/).
+- Event arguments: [SignatureSelectEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/signatureSelectEventArgs).
Example:
@@ -3390,9 +3392,9 @@ export default {
## signatureUnselect
-The [signatureUnselect](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#signatureunselect) event triggers when a signature is unselected.
+The [signatureUnselect](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#signatureunselect) event triggers when a signature is unselected.
-- Event arguments: [SignatureUnselectEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/signatureUnselectEventArgs/).
+- Event arguments: [SignatureUnselectEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/signatureUnselectEventArgs).
Example:
@@ -3471,9 +3473,9 @@ export default {
## textSearchComplete
-The [textSearchComplete](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#textsearchcomplete) event triggers when a text search completes.
+The [textSearchComplete](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#textsearchcomplete) event triggers when a text search completes.
-- Event arguments: [TextSearchCompleteEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/textSearchCompleteEventArgs/).
+- Event arguments: [TextSearchCompleteEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/textSearchCompleteEventArgs).
Example:
@@ -3535,9 +3537,9 @@ export default {
## textSearchHighlight
-The [textSearchHighlight](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#textsearchhighlight) event triggers when searched text is highlighted.
+The [textSearchHighlight](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#textsearchhighlight) event triggers when searched text is highlighted.
-- Event arguments: [TextSearchHighlightEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/textSearchHighlightEventArgs/).
+- Event arguments: [TextSearchHighlightEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/textSearchHighlightEventArgs).
Example:
@@ -3616,9 +3618,9 @@ export default {
## textSearchStart
-The [textSearchStart](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#textsearchstart) event triggers when a text search is initiated.
+The [textSearchStart](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#textsearchstart) event triggers when a text search is initiated.
-- Event arguments: [TextSearchStartEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/textSearchStartEventArgs/).
+- Event arguments: [TextSearchStartEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/textSearchStartEventArgs).
Example:
@@ -3697,9 +3699,9 @@ export default {
## textSelectionEnd
-The [textSelectionEnd](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#textselectionend) event triggers when text selection is complete.
+The [textSelectionEnd](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#textselectionend) event triggers when text selection is complete.
-- Event arguments: [TextSelectionEndEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/textSelectionEndEventArgs/).
+- Event arguments: [TextSelectionEndEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/textSelectionEndEventArgs).
Example:
@@ -3761,7 +3763,7 @@ export default {
## textSelectionStart
-The [textSelectionStart](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#textselectionstart) event triggers when text selection is initiated.
+The [textSelectionStart](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#textselectionstart) event triggers when text selection is initiated.
- Event arguments: `TextSelectionStartEventArgs`.
@@ -3825,9 +3827,9 @@ export default {
## thumbnailClick
-The [thumbnailClick](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#thumbnailclick) event triggers when a thumbnail is clicked.
+The [thumbnailClick](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#thumbnailclick) event triggers when a thumbnail is clicked.
-- Event arguments: [ThumbnailClickEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/thumbnailClickEventArgs/).
+- Event arguments: [ThumbnailClickEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/thumbnailClickEventArgs).
Example:
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/feature-module.md b/Document-Processing/PDF/PDF-Viewer/vue/feature-module.md
index ee6a3741cc..07c502c8f8 100644
--- a/Document-Processing/PDF/PDF-Viewer/vue/feature-module.md
+++ b/Document-Processing/PDF/PDF-Viewer/vue/feature-module.md
@@ -10,26 +10,23 @@ domainurl: ##DomainURL##
# Feature modules in Vue PDF viewer Control
-The PDF Viewer features are provided as individual modules, allowing applications to include only what is needed. Inject the required modules to enable functionality, then configure the corresponding properties on the PDF Viewer instance.
-
-Available PDF Viewer modules:
-
-* [**Toolbar**](./toolbar-customization/annotation-toolbar-customization): Built-in toolbar for user interaction.
-* [**Magnification**](./magnification): Perform zoom operations for a better viewing experience.
-* [**Navigation**](./interactive-pdf-navigation/page-navigation): Navigate across pages.
-* [**LinkAnnotation**](./interactive-pdf-navigation/table-of-content-navigation): Navigate within the document or to external destinations via hyperlinks.
-* [**ThumbnailView**](./interactive-pdf-navigation/page-thumbnail-navigation): Navigate within the document using page thumbnails.
-* [**BookmarkView**](./interactive-pdf-navigation/bookmark-navigation): Navigate using document bookmarks (table of contents).
-* [**TextSelection**](./textselection): Select and copy text from the document.
-* [**TextSearch**](./text-search): Search for text across the document.
-* [**Print**](./print): Print the entire document or specific pages directly from the browser.
-* [**Annotation**](./annotations/text-markup-annotation): Add and edit annotations.
-* [**FormFields**](./form-designer/create-programmatically): Work with form fields in the document.
-* [**FormDesigner**](./form-designer/create-programmatically): Add or edit form fields in the document.
-
-> In addition to injecting the required modules in an application, enable the corresponding properties to activate features on a PDF Viewer instance.
-
-Refer to the following table:
+The [Vue PDF Viewer](https://www.syncfusion.com/pdf-viewer-sdk) exposes functionality as feature modules that can be imported selectively. Import and register only the modules required by an application to keep bundle sizes small and enable specific capabilities on demand. The following feature modules are available:
+
+* **Toolbar**: Built-in toolbar for user interaction.
+* **Magnification**: Zoom and fit options for improved viewing.
+* **Navigation**: Page navigation controls and page jump support.
+* **LinkAnnotation**: Support for hyperlinks within and outside the PDF.
+* **ThumbnailView**: Page thumbnails for rapid navigation within the document.
+* **BookmarkView**: Navigation based on document bookmarks.
+* **TextSelection**: Select and copy text from the PDF.
+* **TextSearch**: Find text across the document.
+* **Print**: Print the document or individual pages from the browser.
+* **Annotation**: Create and edit annotations on the PDF.
+* **FormFields**: Preserve and interact with form fields in the document.
+* **FormDesigner**: Add and edit form fields in design mode.
+* **StickyNotesAnnotation**: Add sticky notes to the PDF.
+
+N> In addition to registering the required modules, enable the corresponding component properties to activate each capability on a PDF Viewer instance. Refer to the following table for example attribute usage.
| Module | Property to enable the functionality for a PDF Viewer instance |
|---|---|
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/form-designer/create-programmatically.md b/Document-Processing/PDF/PDF-Viewer/vue/form-designer/create-programmatically.md
deleted file mode 100644
index db2c1a9e7b..0000000000
--- a/Document-Processing/PDF/PDF-Viewer/vue/form-designer/create-programmatically.md
+++ /dev/null
@@ -1,2528 +0,0 @@
----
-layout: post
-title: Create form fields in the Vue PDF Viewer component | Syncfusion
-description: Learn how to add, update, delete, save, print, validate, and import/export form fields in the Syncfusion Vue PDF Viewer component.
-platform: document-processing
-control: PDF Viewer
-documentation: ug
-domainurl: ##DomainURL##
----
-
-# Create programmatically in Vue PDF Viewer control
-
-The PDF Viewer component provides options to add, edit, and delete form fields. The supported form field types are:
-
-- Textbox
-- Password
-- CheckBox
-- RadioButton
-- ListBox
-- DropDown
-- Signature field
-- Initial field
-
-## Add a form field to PDF document programmatically
-
-Use the addFormField method to add form fields programmatically. Pass the form field type and the corresponding property object as parameters. The following example demonstrates adding multiple fields on document load.
-
-{% tabs %}
-{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-N> To set up the **server-backed PDF Viewer** in the app.vue file, include the following `serviceUrl`:
-**serviceUrl: "https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer"**
-Within the `template`, configure the PDF Viewer by adding the `:serviceUrl="serviceUrl"` attribute inside the
element.
-
-{% previewsample "/document-processing/code-snippet/pdfviewer/vue/addformfield-cs1" %}
-
-## Edit or update form field programmatically
-
-Use the updateFormField method to modify a form field programmatically. Retrieve the target field from the formFieldCollections property (by object or ID) and pass it as the first parameter. Provide the properties to update as the second parameter. The following example updates the background color of a Textbox field.
-
-{% tabs %}
-{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-N> To set up the **server-backed PDF Viewer** in the app.vue file, include the following `serviceUrl`:
-**serviceUrl: "https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer"**
-Within the `template`, configure the PDF Viewer by adding the `:serviceUrl="serviceUrl"` attribute inside the
element.
-
-{% previewsample "/document-processing/code-snippet/pdfviewer/vue/updateformfield-cs1" %}
-
-## Delete form field programmatically
-
-Use the deleteFormField method to remove a form field programmatically. Retrieve the target field from the formFieldCollections property (by object or ID) and pass it to deleteFormField. The following example deletes the first form field.
-
-{% tabs %}
-{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-N> To set up the **server-backed PDF Viewer** in the app.vue file, include the following `serviceUrl`:
-**serviceUrl: "https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer"**
-Within the `template`, configure the PDF Viewer by adding the `:serviceUrl="serviceUrl"` attribute inside the
element.
-
-{% previewsample "/document-processing/code-snippet/pdfviewer/vue/deleteformfield-cs1" %}
-
-## Saving the form fields
-
-Selecting the Download icon on the toolbar saves the form fields in the exported PDF without modifying the original document. See the following GIF for reference.
-
-
-
-You can invoke the download action using the following code snippet.
-
-{% tabs %}
-{% highlight html tabtitle="Composition API (Standalone)" %}
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (Standalone)" %}
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Composition API (Server-Backed)" %}
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (Server-Backed)" %}
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## Printing the form fields
-
-Selecting the Print icon on the toolbar prints the PDF with the added form fields. This action does not modify the original document. See the following GIF for reference.
-
-
-
-You can invoke the print action using the following code snippet:
-
-{% tabs %}
-{% highlight html tabtitle="Composition API (Standalone)" %}
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (Standalone)" %}
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Composition API (Server-Backed)" %}
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (Server-Backed)" %}
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## Open the existing PDF document
-
-Open a PDF that already contains form fields by clicking the Open icon on the toolbar. See the following GIF for reference.
-
-
-
-## Validate form fields
-
-Form fields are validated when enableFormFieldsValidation is set to true and the validateFormFields event is handled. The event triggers during download or print if required fields are not filled. The non-filled fields are available in the nonFillableFields property of the event arguments.
-
-Add the following code to validate form fields:
-
-{% tabs %}
-{% highlight html tabtitle="Composition API (Standalone)" %}
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (Standalone)" %}
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Composition API (Server-backed)" %}
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (Server-Backed)" %}
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## Export and import form fields
-
-The PDF Viewer component supports exporting and importing form field data using the `importFormFields`, `exportFormFields`, and `exportFormFieldsAsObject` methods in the following formats:
-
-- FDF
-- XFDF
-- JSON
-- XML
-
-### Export and import as FDF
-
-Using the `exportFormFields` method, the form field data can be exported in the specified data format. This method accepts two parameters:
-
-* The first one must be the destination path for the exported data. If the path is not specified, it will ask for the location while exporting.
-* The second parameter should be the format type of the form data.
-
-The following example exports and imports form field data as FDF.
-
-{% tabs %}
-{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-### Export and import as XFDF
-
-The following example exports and imports form field data as XFDF.
-
-{% tabs %}
-{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-### Export and import as JSON
-
-The following example exports and imports form field data as JSON.
-
-{% tabs %}
-{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-### Export and import as Object
-
-The PDF Viewer component supports exporting the form field data as an object and importing that data back into the current PDF document.
-
-The following code shows how to export the form field data as an object and import the form field data from that object into the current PDF document via a button click.
-
-{% tabs %}
-{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-### Export and import as XML
-
-The following example exports and imports form field data as XML.
-
-{% tabs %}
-{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## Form field properties
-
-Form field properties in Syncfusion® PDF Viewer allow you to customize and interact with form fields embedded within PDF documents. This documentation provides an overview of the form field properties supported by the Syncfusion® PDF Viewer and explains how to use them effectively.
-
- * Textbox
- * Password
- * CheckBox
- * RadioButton
- * ListBox
- * DropDown
- * SignatureField
- * InitialField
-
-### Signature and initial fields settings
-
-Using the `updateFormField` method, the form fields can be updated programmatically.
-
-The following code example explains how to update the signature field properties on a button click.
-
-{% tabs %}
-{% highlight html tabtitle="Composition API (Standalone)" %}
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (Standalone)" %}
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Composition API (Server-Backed)" %}
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (Server-Backed)" %}
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-The following code example explains how to update the properties of the signature field added to the document from the form designer toolbar.
-
-```ts
- // Properties to customize the signature field settings
- viewer.signatureFieldSettings = {
- // Set the name of the form field element.
- name: 'Signatute',
- // Specify whether the signature field is in read-only or read-write mode.
- isReadOnly: false,
- // Set the visibility of the form field.
- visibility: 'visible',
- // Specify whether the field is mandatory or not.
- isRequired: false,
- // Specify whether to print the signature field.
- isPrint: true,
- // Set the text to be displayed as a tooltip.
- tooltip: 'Signatute',
- // Set the thickness of the signature field. To hide the borders, set the value to 0 (zero).
- thickness: 4,
- // Specify the properties of the signature Dialog Settings in the signature field.
- signatureDialogSettings: {
- isplayMode: DisplayMode.Draw | DisplayMode.Upload | DisplayMode.Text,
- hideSaveSignature: false,
- },
- // Specify the properties of the signature indicator in the signature field.
- signatureIndicatorSettings: {
- opacity: 1,
- backgroundColor: '#237ba2',
- height: 50,
- fontSize: 15,
- text: 'Signature Field',
- color: 'white'
- },
- };
-
-```
-
-
-
-The following code example explains how to update the properties of the initial field added to the document from the form designer toolbar.
-
-```ts
- // Properties to customize the initial field settings
- viewer.initialFieldSettings = {
- // Set the name of the form field element.
- name: 'Initial',
- // Specify whether the initial field is in read-only or read-write mode.
- isReadOnly: false,
- // Set the visibility of the form field.
- visibility: 'visible',
- // Specify whether the field is mandatory or not.
- isRequired: false,
- // Specify whether to print the initial field.
- isPrint: true,
- // Set the text to be displayed as tooltip.
- tooltip: 'Initial',
- // Set the thickness of the initial field. To hide the borders, set the value to 0 (zero).
- thickness: 4,
- // Specify the properties of the initial indicator in the initial field.
- initialIndicatorSettings: {
- opacity: 1,
- backgroundColor: '#237ba2',
- height: 50,
- fontSize: 15,
- text: 'Initial Field',
- color: 'white'
- },
- // Specify the properties of the initial Dialog Settings in the intial field.
- initialDialogSettings: {
- displayMode: DisplayMode.Draw | DisplayMode.Upload | DisplayMode.Text,
- hideSaveSignature: false
- }
- };
-
-```
-
-
-
-### Textbox field settings
-
-Using the `updateFormField` method, the form fields can be updated programmatically.
-
-The following code example explains how to update the Textbox field properties on a button click.
-
-{% tabs %}
-{% highlight html tabtitle="Composition API (Standalone)" %}
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (Standalone)" %}
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (Server-Backed)" %}
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-The following code example explains how to update the properties of the textbox field added to the document from the form designer toolbar.
-
-{% tabs %}
-{% highlight html tabtitle="Composition API (Standalone)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (Standalone)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Composition API (Server-Backed)" %}
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (Server-Backed)" %}
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-
-
-### Password field settings
-
-Using the `updateFormField` method, the form fields can be updated programmatically.
-
-The following code example explains how to update the Password field properties on a button click.
-
-{% tabs %}
-{% highlight html tabtitle="Composition API (Standalone)" %}
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (Standalone)" %}
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Composition API (Server-Backed)" %}
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (Server-Backed)" %}
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-
-The following code example explains how to update the properties of the password field added to the do
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/form-designer/create-with-user-interface-interaction.md b/Document-Processing/PDF/PDF-Viewer/vue/form-designer/create-with-user-interface-interaction.md
deleted file mode 100644
index 0dfde8a19f..0000000000
--- a/Document-Processing/PDF/PDF-Viewer/vue/form-designer/create-with-user-interface-interaction.md
+++ /dev/null
@@ -1,366 +0,0 @@
----
-layout: post
-title: Design form fields in the Vue PDF Viewer component | Syncfusion
-description: Learn how to add, drag, resize, edit, and manage form fields using the UI in the Syncfusion Vue PDF Viewer component.
-control: PDF Viewer
-platform: document-processing
-documentation: ug
-domainurl: ##DomainURL##
----
-
-# Create form fields with UI interaction in Vue PDF Viewer control
-
-The PDF Viewer component supports interactive form field design, including drawing, dragging, and resizing fields directly on the page. Click the Form Field icon on the toolbar to add a field and place it on the document. Supported form field types include:
-
-- Textbox
-- Password
-- CheckBox
-- RadioButton
-- ListBox
-- DropDown
-- Signature field
-- Initial field
-
-## Enable or Disable form designer toolbar
-
-Inject the FormDesigner module and set enableFormDesignerToolbar to true to display the Form Designer icon on the toolbar. The default value is true. Use the following code to enable the toolbar option.
-
-{% tabs %}
-{% highlight html tabtitle="Composition API (Standalone)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (Standalone)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Composition API (Server-Backed)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (Server-Backed)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## Add the form field dynamically
-
-Click the Form Field icon on the toolbar, then click on the PDF to draw a form field. See the following GIF for reference.
-
-
-
-## Drag the form field
-
-Drag the selected form field to reposition it within the PDF document. See the following GIF for reference.
-
-
-
-## Resize the form field
-
-Resize the selected form field using the resize handles on the field boundary. See the following GIF for reference.
-
-
-
-## Edit or Update the form field dynamically
-
-Edit form field properties using the Form Field Properties dialog. Open it by right-clicking a form field and selecting Properties from the context menu. The following images show examples of available settings.
-
-
-
-
-
-
-
-## Clipboard operation with form field
-
-The PDF Viewer supports clipboard operations such as cut, copy, and paste for form fields. Right-click a form field to open the context menu and choose the desired clipboard action. The following image shows the available options.
-
-
-
-## Undo and Redo
-
-Undo and redo actions are supported for runtime changes made to form fields. Use the following code to perform undo and redo operations.
-
-{% tabs %}
-{% highlight html tabtitle="Composition API (Standalone)" %}
-
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (Standalone)" %}
-
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Composition API (Server-Backed)" %}
-
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (Server-Backed)" %}
-
-
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/form-designer/form-field-events.md b/Document-Processing/PDF/PDF-Viewer/vue/form-designer/form-field-events.md
deleted file mode 100644
index 4c6feff296..0000000000
--- a/Document-Processing/PDF/PDF-Viewer/vue/form-designer/form-field-events.md
+++ /dev/null
@@ -1,1199 +0,0 @@
----
-layout: post
-title: Form Field Events in Vue PDF Viewer control | Syncfusion
-description: Learn here all about different form field in Syncfusion Vue PDF Viewer component of Syncfusion Essential JS 2 and more.
-control: Form Field Events
-platform: document-processing
-documentation: ug
-domainurl: ##DomainURL##
----
-
-# PDF Viewer Form Field events in Vue PDF Viewer control
-
-The PDF Viewer control provides the support to different Form Field events. The Form Field events supported by the PDF Viewer Control are:
-
-| Form Field events | Description |
-|---|---|
-| formFieldAdd | Event trigger when a form field is added.|
-| formFieldClick | Events trigger when the form field is selected.|
-| formFieldDoubleClick | Events trigger when the form field is double-clicked.|
-| formFieldFocusOut | Events trigger when focus out from the form fields.|
-| formFieldMouseLeave | Events trigger when the mouse cursor leaves the form field.|
-| formFieldMouseOver | Events trigger when the mouse cursor is over a form field.|
-| formFieldMove | Events trigger when a form field is moved.|
-| formFieldPropertiesChange | Events trigger when a property of form field is changed.|
-| formFieldRemove | Events trigger when a form field is removed.|
-| formFieldResize | Events trigger when a form field is resized.|
-| formFieldSelect | Events trigger when a form field is selected.|
-| formFieldUnselect | Events trigger when a form field is unselected.|
-| validateFormFields | Events trigger when validation is failed.|
-
-## formFieldAdd event
-
-The [formFieldAdd](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/formfieldaddargs/) event is triggered when a new form field is added, either programmatically or through user interaction. The event arguments provide the necessary information about the form field addition.
-
-{% tabs %}
-{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## formFieldClick event
-
-The [formFieldClick](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/formFieldClickArgs/) event is triggered when a form field is clicked. The event arguments provide the necessary information about the form field click event.
-
-{% tabs %}
-{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## formFieldDoubleClick event
-
-The [formFieldDoubleClick](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/formFieldDoubleClickArgs/) event is triggered when a form field is double-clicked. The event arguments provide the necessary information about the form field double-click event.
-
-{% tabs %}
-{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## formFieldFocusOut event
-
-The [formFieldFocusOut](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/formfieldfocusouteventargs/) event is triggered when a form field loses focus. The event arguments provide the necessary information about the form field focus out event.
-
-{% tabs %}
-{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## formFieldMouseLeave event
-
-The [formFieldMouseLeave](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/formfieldmouseleaveargs/) event is triggered when the mouse leaves a form field. The event arguments provide the necessary information about the form field mouse leave event.
-
-{% tabs %}
-{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## formFieldMouseOver event
-
-The [formFieldMouseOver](https://helpej2.syncfusion.com/vue/documentation/api/pdfviewer/formFieldMouseoverArgs/) event is triggered when the mouse hovers over a form field. The event arguments provide the necessary information about the form field mouse over event.
-
-{% tabs %}
-{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## formFieldMove event
-
-The [formFieldMove](https://helpej2.syncfusion.com/vue/documentation/api/pdfviewer/formFieldMoveArgs/) event is triggered when the mouse moves inside a form field. The event arguments provide the necessary information about the form field mouse move event.
-
-{% tabs %}
-{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## formFieldPropertiesChange event
-
-The [formFieldPropertiesChange](https://helpej2.syncfusion.com/vue/documentation/api/pdfviewer/formFieldPropertiesChangeArgs/) event is triggered when the properties of a form field are changed. The event arguments provide the necessary information about which property of the form field has been changed.
-
-{% tabs %}
-{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## formFieldRemove event
-
-The [formFieldRemove](https://helpej2.syncfusion.com/vue/documentation/api/pdfviewer/formFieldRemoveArgs/) event is triggered when a form field is removed from the PDF. The event arguments provide the necessary information about which form field has been removed.
-
-{% tabs %}
-{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## formFieldResize event
-
-The [formFieldResize](https://helpej2.syncfusion.com/vue/documentation/api/pdfviewer/formFieldResizeArgs/) events are triggered when a form field in a PDF is resized. These events provide the relevant details about the specific form field that has been resized.
-
-{% tabs %}
-{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## formFieldSelect event
-
-The [formFieldSelect](https://helpej2.syncfusion.com/vue/documentation/api/pdfviewer/formFieldSelectArgs/) events are triggered when a form field in a PDF is selected. These events provide the necessary details about the specific form field that has been selected.
-
-{% tabs %}
-{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## formFieldUnselect event
-
-The [formFieldUnselect](https://helpej2.syncfusion.com/vue/documentation/api/pdfviewer/formFieldUnselectArgs/) events are triggered when a form field in a PDF is unselected. These events provide the necessary details about the specific form field that has been unselected.
-
-{% tabs %}
-{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## validateFormFields event
-
-The [validateFormFields](https://helpej2.syncfusion.com/vue/documentation/api/pdfviewer/validateFormFieldsArgs/) events are triggered when a required form field is left unfilled before downloading the PDF. These events provide the necessary information for validating which form fields are incomplete.
-
-{% tabs %}
-{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/form-filling.md b/Document-Processing/PDF/PDF-Viewer/vue/form-filling.md
deleted file mode 100644
index d512ccd2ca..0000000000
--- a/Document-Processing/PDF/PDF-Viewer/vue/form-filling.md
+++ /dev/null
@@ -1,138 +0,0 @@
----
-layout: post
-title: Form filling in Vue PDF Viewer | Syncfusion
-description: Learn how to view, fill, export, and import PDF form fields using the Syncfusion Vue PDF Viewer, including disabling interaction and working with signatures.
-platform: document-processing
-control: PDF Viewer
-documentation: ug
-domainurl: ##DomainURL##
----
-
-# Form filling in Vue PDF Viewer
-
-The PDF Viewer displays existing form fields in a PDF and enables users to fill, validate, and download the filled data.
-
-The PDF Viewer supports the following form field types:
-
-* Text box
-* Password
-* Check box
-* Radio button
-* List box
-* Dropdown
-* Signature field
-* Initial field
-
-
-
-## Disabling form fields
-
-The PDF Viewer provides an option to disable interaction with form fields. Use the following configuration to disable form fields in the viewer.
-
-{% tabs %}
-{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% highlight html tabtitle="Options API (~/src/App.vue)" %}
-
-
-
-
-
-
-
-
-
-
-{% endhighlight %}
-{% endtabs %}
-
-## Add a handwritten signature to a signature field
-
-Add a handwritten signature to a signature field by following these steps:
-
-* Click the signature field in the PDF document to open the signature panel.
-
-
-
-* Draw the signature in the signature panel.
-
-
-
-* Select **CREATE**. The drawn signature is added to the signature field.
-
-
-
-## Delete a signature from a signature field
-
-Delete a signature placed in a signature field by using the Delete option in the annotation toolbar.
-
-
-
-## Export and import form fields
-
-The PDF Viewer supports exporting and importing form field data using the `importFormFields`, `exportFormFields`, and `exportFormFieldsAsObject` methods. The following formats are supported:
-
-* FDF
-* XFDF
-* JSON
-
-For more information, see the [Form fields documentation](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/vue/form-designer/create-programmatically#export-and-import-form-fields).
-
-## See also
-
-* [Handwritten signature in Vue PDF Viewer](./annotations/signature-annotation)
-* [Form Designer events](./form-designer/form-field-events)
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/forms/custom-data.md b/Document-Processing/PDF/PDF-Viewer/vue/forms/custom-data.md
new file mode 100644
index 0000000000..7e5a834fd3
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/vue/forms/custom-data.md
@@ -0,0 +1,270 @@
+---
+layout: post
+title: Add custom data to form fields in Vue PDF Viewer | Syncfusion
+description: Learn how to attach, update, and read custom data on PDF form fields using the Form Designer UI and APIs in the Syncfusion Vue PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Add Custom Data to PDF Form Fields in Vue PDF Viewer
+
+The **Syncfusion Vue PDF Viewer** allows you to attach **custom application-specific data** to form fields by using the `customData` property. This enables you to associate business identifiers, tags, validation hints, or workflow metadata with form fields.
+
+The custom data remains linked to the form field throughout the viewer session and can be accessed or updated whenever the field is queried or modified.
+
+This page explains how to:
+- [Add custom data when creating form fields](#add-custom-data-while-creating-pdf-form-fields)
+- [Define default custom data for fields created using the UI](#set-default-custom-data-for-pdf-form-fields-added-using-ui)
+- [Update or replace custom data for existing fields](#update-or-replace-pdf-form-field-custom-data)
+- [Read custom data from form fields](#read-custom-data-from-pdf-form-fields)
+- [Apply best practices when using custom data](#best-practices)
+
+**Key Points**
+- customData is a **free form object**; you control its structure.
+- Use only **serializable values** such as objects, arrays, strings, numbers, and booleans.
+- Custom data does not affect the field appearance or behavior unless consumed by your application logic.
+
+## Add Custom Data While Creating PDF Form Fields
+
+You can attach custom data at the time of field creation by passing a `customData` object in the settings parameter of `addFormField()`.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Set Default Custom Data for PDF Form Fields Added Using UI
+
+When users add form fields using the [Form Designer toolbar](../toolbar-customization/form-designer-toolbar), you can define default `customData` so that newly created fields automatically inherit it. Default custom data can be configured using per-field settings objects such as:
+
+- [textFieldSettings](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#textfieldsettings)
+- [passwordFieldSettings](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#passwordfieldsettings)
+- [checkBoxFieldSettings](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#checkboxfieldsettings)
+- [radioButtonFieldSettings](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#radiobuttonfieldsettings)
+- [listBoxFieldSettings](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#listboxfieldsettings)
+- [dropDownFieldSettings](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#dropdownfieldsettings)
+- [signatureFieldSettings](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#signaturefieldsettings)
+- [initialFieldSettings](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#initialfieldsettings)
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Update or Replace PDF Form Field Custom Data
+
+You can modify the `customData` of an existing form field by using the [updateFormField()](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#updateformfields) method. The field can be identified using either its object reference or field ID.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+**Tip:**
+Merge new values with the existing customData object before calling [updateFormField()](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#updateformfields) to avoid overwriting previously stored data.
+
+## Read Custom Data from PDF Form Fields
+
+You can access the customData property from any form field at any point in your application flow, such as:
+- After the document is loaded
+- During save or submit operations
+- While performing validation or conditional routing
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Best Practices
+
+- Treat customData as application metadata, not display data.
+- Use it to drive business rules, validation logic, and workflow decisions.
+- Keep the data minimal and structured for easy processing.
+- When cloning or copying form fields, ensure customData is copied or updated as required.
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/vue-pdf-viewer-examples)
+
+## See Also
+
+- [Form Designer overview](./overview)
+- [Form Designer Toolbar](../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./overview-create-forms)
+- [Group form fields](../group-form-fields)
+- [Form flags](./form-constrain)
+- [Form validation](./form-validation)
+- [Form fields API](./form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/forms/form-constrain.md b/Document-Processing/PDF/PDF-Viewer/vue/forms/form-constrain.md
new file mode 100644
index 0000000000..396a74c8d8
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/vue/forms/form-constrain.md
@@ -0,0 +1,430 @@
+---
+layout: post
+title: PDF form field flags in the Vue PDF Viewer | Syncfusion
+description: Learn how to apply isReadOnly, isRequired, and isPrint flags to PDF form fields in the Syncfusion Vue PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# PDF form field flags in Vue PDF Viewer
+
+The Syncfusion **Vue PDF Viewer** allows you to control how users interact with form fields and how those fields behave during validation and printing by applying **form field flags**. These flags define whether a form field can be modified, whether it is mandatory, and whether it appears in printed output.
+
+This topic explains:
+- [Supported form field flags](#supported-pdf-form-field-flags)
+- [How each constraint affects field behavior](#key-actions)
+- [How to apply flags during field creation](#apply-pdf-form-field-flags-using-the-ui)
+- [How to update flags on existing fields](#update-flags-on-existing-fields-programmatically)
+- [How flags work with validation and printing](#control-print-behavior)
+
+## Supported PDF Form Field Flags
+
+The following flags are supported in the PDF Viewer:
+
+- [isReadOnly](#make-fields-read-only)
+ Prevents users from modifying the form field in the UI while still allowing updates through APIs.
+
+- [isRequired](#mark-fields-as-required)
+ Marks the form field as mandatory and includes it in form field validation.
+
+- [isPrint](#control-print-behavior)
+ Controls whether the form field appears when the document is printed.
+
+## Key Actions
+
+### Make Fields Read Only
+Use the **isReadOnly** property to prevent users from modifying a form field through the UI. This is useful for displaying pre filled or calculated values that should not be changed by the user.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+### Mark Fields as Required
+Use the **isRequired** property to mark form fields as mandatory. To enforce this constraint, enable form field validation and validate fields before allowing actions such as printing or downloading.
+
+- Enable validation using [enableFormFieldsValidation](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#enableformfieldsvalidation)
+- [Validate fields](./form-validation) using [validateFormFields()](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#validateformfields)
+
+If required fields are empty, validation can prevent further actions.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+### Control Print Behavior
+Use the **isPrint** property to control whether a form field appears in the printed output of the PDF document.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+N> Printing can be triggered programmatically using `pdfviewer.print()`. Form fields with `isPrint: false` are excluded from the printed output.
+
+## Apply PDF Form Field Flags Using the UI
+
+**Steps**
+1. Enable **Form Designer** mode in the PDF Viewer.
+2. Select an existing form field on the PDF page.
+3. Right-click the field and choose **Properties** from the context menu.
+4. Configure the required constraint options.
+5. Click OK to apply the changes and close the properties popover.
+
+Changes are reflected immediately in the viewer.
+
+
+
+## Apply PDF Form Field Flags Programmatically
+
+You can apply or modify form field flags in the following ways.
+
+### Apply flags When Creating Fields
+Pass the flags properties in the settings object when creating form fields using **addFormField()**.
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+### Update flags on Existing Fields programmatically
+Use the [updateFormField()](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#updateformfields) method to modify constraint values on existing form fields.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+### Set Default Flags for New PDF Form Fields
+You can configure default flag values so that form fields added using the [Form Designer toolbar](../toolbar-customization/form-designer-toolbar) automatically inherit them. This helps ensure consistent behavior for all newly created fields.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## See Also
+
+- [Form Designer overview](./overview)
+- [Form Designer Toolbar](../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./manage-form-fields/create-form-fields)
+- [Modify form fields](./manage-form-fields/modify-form-fields)
+- [Group form fields](./group-form-fields)
+- [Add custom data to PDF form fields](./custom-data)
+- [Form Validation](./form-validation)
+- [Form fields API](./form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/forms/form-designer.md b/Document-Processing/PDF/PDF-Viewer/vue/forms/form-designer.md
new file mode 100644
index 0000000000..81a4a5184f
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/vue/forms/form-designer.md
@@ -0,0 +1,270 @@
+---
+layout: post
+title: Form Designer and Toolbar Customization in Vue | Syncfusion
+description: Learn here all about form designer and toolbar in the Syncfusion Vue PDF Viewer and how to customize the form designer UI and toolbar.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Form Designer in Vue PDF Viewer
+
+When **Form Designer mode** is enabled in the Syncfusion [Vue PDF Viewer](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/vue/overview), a default [Form Designer user interface (UI)](https://document.syncfusion.com/demos/pdf-viewer/vue/#/tailwind3/pdfviewer/form-designer.html) is displayed. This UI includes a built-in toolbar for adding form fields such as text boxes, password fields, check boxes, radio buttons, drop down lists, list boxes, and signature and initial fields.
+
+Using the Form Designer UI, users can place form fields on the PDF, move and resize them, configure field and widget properties, preview the designed form, and remove fields when required. The Form Designer toolbar can also be shown or hidden and customized to control the available tools based on application requirements, enabling flexible and interactive form design directly within the viewer.
+
+## Key Features
+
+**Add Form Fields**
+You can add the following form fields to the PDF:
+
+- [Text box](../forms/manage-form-fields/create-form-fields#add-textbox)
+- [Password Field](../forms/manage-form-fields/create-form-fields#add-password)
+- [Check box](../forms/manage-form-fields/create-form-fields#add-checkbox)
+- [Radio button](../forms/manage-form-fields/create-form-fields#add-radiobutton)
+- [Dropdown List](../forms/manage-form-fields/create-form-fields#add-dropdown)
+- [List box](../forms/manage-form-fields/create-form-fields#add-listbox)
+- [Signature field](../forms/manage-form-fields/create-form-fields#add-signature-field)
+- [Initial field](../forms/manage-form-fields/create-form-fields#add-initial-field)
+
+**Edit Form Fields**
+You can move, resize, align, distribute, copy, paste, and undo or redo changes to form fields.
+
+**Set Field Properties**
+You can configure field properties such as name, value, font, color, border, alignment, visibility, tab order, and required or read only state.
+
+**Control Field Behavior**
+You can enable or disable read only mode, show or hide fields, and control whether fields appear when printing the document.
+
+**Manage Form Fields**
+You can select, group or ungroup, reorder, and delete form fields as needed.
+
+**Save and Print Forms**
+Designed form fields can be saved into the PDF document and printed with their appearances.
+
+## Enable Form Designer
+
+To enable form design features, inject the [FormDesigner](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/formdesigner) module into the PDF Viewer. After injecting the module, use the `enableFormDesigner` property or API to enable or disable the Form Designer option in the main toolbar (set to `true` to enable). The standalone examples below show `enableFormDesigner` set to `false`; change this to `true` to enable form design in those samples.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Form Designer UI
+
+When [Form Designer mode](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/formdesigner) is enabled in the Syncfusion [Vue PDF Viewer](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/vue/overview), a default [Form Designer user interface (UI)](https://document.syncfusion.com/demos/pdf-viewer/vue/#/tailwind3/pdfviewer/form-designer.html) is displayed. This UI provides a built-in toolbar for adding common form fields such as text boxes, check boxes, radio buttons, drop down lists, and signature fields. Users can place fields on the PDF, select them, resize or move them, and configure their properties using the available editing options, enabling interactive form creation directly within the viewer.
+
+
+
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es6/prefilledforms-cs1" %}
+
+For more information about creating and editing form fields in the PDF Viewer, refer to [Create form fields](./manage-form-fields/create-form-fields).
+
+## Form Designer Toolbar
+
+The **Form Designer toolbar** appears at the top of the PDF Viewer and provides quick access to form field creation tools. It includes frequently used field types such as:
+
+- [Text box](../forms/manage-form-fields/create-form-fields#add-textbox)
+- [Password Field](../forms/manage-form-fields/create-form-fields#add-password)
+- [Check box](../forms/manage-form-fields/create-form-fields#add-checkbox)
+- [Radio button](../forms/manage-form-fields/create-form-fields#add-radiobutton)
+- [Dropdown List](../forms/manage-form-fields/create-form-fields#add-dropdown)
+- [List box](../forms/manage-form-fields/create-form-fields#add-listbox)
+- [Signature field](../forms/manage-form-fields/create-form-fields#add-signature-field)
+- [Initial field](../forms/manage-form-fields/create-form-fields#add-initial-field)
+
+Each toolbar item allows users to place the corresponding form field by selecting the tool and clicking on the desired location in the PDF document.
+
+
+
+Use the above code snippet to show or hide the Form Designer by injecting the Form Designer module. (see the Composition API sample).
+
+For more information about creating and editing form fields in the PDF Viewer, refer to [Create form fields](./manage-form-fields/create-form-fields).
+
+## Show or Hide the Built-in Form Designer Toolbar
+
+You can control the visibility of the Form Designer toolbar using the [isFormDesignerToolbarVisible()](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#isformdesignertoolbarvisible) property. This allows the application to display or hide the Form Designer tools in the PDF Viewer based on user or workflow requirements.
+
+**Use this property to:**
+- Show the Form Designer toolbar when form design is required
+- Hide the toolbar to provide a cleaner viewing experience
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Customize the Built-in Form Designer Toolbar
+
+You can customize the Form Designer toolbar by specifying the tools to display and arranging them in the required order using the [FormDesignerToolbarItems](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/formdesignertoolbaritem) property.
+
+This customization helps you limit the available tools and simplify the user interface.
+
+**Key Points**
+- Include only the toolbar items you need, in the exact order you specify.
+- Any toolbar items not listed remain hidden, resulting in a cleaner and more focused UI.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Move, Resize, and Edit Form Fields
+
+You can move, resize, and edit an existing form field directly in the PDF Viewer using the Form Designer.
+
+- Move a field by selecting it and dragging it to the required position.
+
+- Resize a field using the handles displayed on the field boundary.
+
+
+
+- Edit a field by selecting it to open the Form Field Properties popover. The popover allows modification of the form field and widget annotation properties. Changes are reflected immediately in the viewer and are saved when the properties popover is closed.
+For more information, see Editing Form Fields.
+
+## Deleting Form Fields
+
+You can remove a form field from the PDF document by selecting the field and using one of the following methods:
+- Click the `Delete option` in the Form Designer UI.
+- Press the `Delete key` on the keyboard after selecting the form field.
+
+The selected form field and its associated widget annotation are permanently removed from the page.
+For more information, see [Deleting Form Fields](./manage-form-fields/remove-form-fields)
+
+## See Also
+
+- [Filling PDF Forms](./form-filling)
+- [Create](./manage-form-fields/create-form-fields), [edit](./manage-form-fields/modify-form-fields), [style](./manage-form-fields/style-form-fields) and [remove](./manage-form-fields/remove-form-fields) form fields
+- [Grouping form fields](./group-form-fields)
+- [Form Constraints](./form-constrain)
+- [Form Validation](./form-validation)
+- [Custom Data](./custom-data)
+- [Import](./import-export-form-fields/import-form-fields)/[Export Form Data](./import-export-form-fields/export-form-fields)
+- [Form field events](./form-field-events)
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/forms/form-field-events.md b/Document-Processing/PDF/PDF-Viewer/vue/forms/form-field-events.md
new file mode 100644
index 0000000000..713915881b
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/vue/forms/form-field-events.md
@@ -0,0 +1,143 @@
+---
+layout: post
+title: Form Field Events in Vue PDF Viewer | Syncfusion
+description: Learn here all about form field events in the Syncfusion Vue PDF Viewer component and how to handle them.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# PDF Viewer Form Field Events in Vue
+
+The Syncfusion **Vue PDF Viewer** provides a comprehensive set of **form field events** that allow developers to track user interactions, respond to form changes, and implement custom business logic. These events can be used for scenarios such as [validation](./form-validation), **UI updates**, **logging**, and **workflow automation**.
+
+Form field events are triggered during actions such as adding, selecting, modifying, moving, resizing, and removing form fields.
+
+## Supported PDF Form Field Events
+
+The following table lists all supported form field events and their descriptions:
+
+| Form Field events | Description |
+|---|---|
+| [formFieldAdd](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/formFieldAddArgs) | Triggered when a new form field is added, either through the Form Designer UI or programmatically. |
+| [formFieldClick](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/formFieldClickArgs) | Fired when a form field is clicked in the viewer. |
+| [formFieldDoubleClick](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/formFieldDoubleClickArgs) | Fired when a form field is double clicked. |
+| [formFieldFocusOut](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/formFieldFocusOutEventArgs) | Triggered when a form field loses focus after editing. |
+| [formFieldMouseLeave](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/formFieldMouseLeaveArgs) | Fired when the mouse pointer leaves a form field. |
+| [formFieldMouseOver](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/formFieldMouseoverArgs) | Fired when the mouse pointer moves over a form field. |
+| [formFieldMove](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/formFieldMoveArgs) | Triggered when a form field is moved to a new position. |
+| [formFieldPropertiesChange](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/formFieldPropertiesChangeArgs) | Fired when any form field property changes, such as font, color, or constraint values. |
+| [formFieldRemove](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/formFieldRemoveArgs) | Triggered when a form field is deleted from the document. |
+| [formFieldResize](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/formFieldResizeArgs) | Fired when a form field is resized. |
+| [formFieldSelect](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/formFieldSelectArgs) | Fired when a form field is selected in the Form Designer. |
+| [formFieldUnselect](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/formFieldUnselectArgs) | Fired when a previously selected form field is unselected. |
+| [validateFormFields](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/validateFormFieldsArgs) | Fired when form field validation fails during print or download actions. |
+
+**Common Use Cases**
+
+Form field events can be used to:
+- Validate form data before printing or downloading
+- Track user interaction with form fields
+- Update UI elements dynamically
+- Log form changes for auditing
+- Trigger workflow actions based on field changes
+- Enforce business rules during form editing
+
+## Handle PDF Form Field Events
+
+Form field events can be wired on the PDF Viewer instance to execute custom logic when specific actions occur. The following Vue Composition API example demonstrates wiring up the events and handling validation.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+**Event Behavior Notes**
+
+- Events triggered through the UI and programmatic APIs use the same event handlers.
+- Property related events are raised immediately when changes occur.
+- Validation events are triggered only during print or download operations.
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/vue-pdf-viewer-examples)
+
+## See also
+
+- [Form Designer overview](./overview)
+- [Form Designer Toolbar](../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./manage-form-fields/create-form-fields)
+- [Edit form fields](./manage-form-fields/modify-form-fields)
+- [Group form fields](./group-form-fields)
+- [Add custom data to form fields](./custom-data)
+- [Form Field Flags](./form-constrain)
+- [Form validation](./form-validation)
+- [Form fields API](./form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/forms/form-fields-api.md b/Document-Processing/PDF/PDF-Viewer/vue/forms/form-fields-api.md
new file mode 100644
index 0000000000..6e65bd94ea
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/vue/forms/form-fields-api.md
@@ -0,0 +1,823 @@
+---
+layout: post
+title: Form Fields API in Vue PDF Viewer | Syncfusion
+description: Learn How to use Form Fields API to enable, update, retrieve and clear in the Syncfusion Vue PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Form Fields API in Vue PDF Viewer
+
+The Vue PDF Viewer provides APIs to create, edit, validate, navigate, and manage form fields programmatically. The following APIs are available:
+
+| API | Description |
+|---|---|
+| [updateFormFieldsValue](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#updateformfieldsvalue) | Updates the value for one or more form fields.|
+| [updateFormFields](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#updateformfields) | Updates the properties of one or more form fields.|
+| [retrieveFormFields](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#retrieveformfields) | Retrieves all form fields or by specific criteria.|
+| [resetFormFields](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#resetformfields) | Resets the specified or all form fields to their default values.|
+| [importFormFields](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#importformfields) | Imports values and states for form fields from a JSON object or file stream.|
+| [focusFormField](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#focusformfield) | Sets focus to a form field by name or ID.|
+| [exportFormFieldsAsObject](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#exportformfieldsasobject) | Exports form fields as a JSON object.|
+| [exportFormFields](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#exportformfields) | Exports form fields as a downloadable file.|
+| [clearFormFields](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#clearformfields) | Clears values of specified or all form fields without removing them.|
+| [isFormFieldDocument](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#isformfielddocument) | Indicates whether the loaded document contains form fields.|
+| [isFormDesignerToolbarVisible](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#isformdesignertoolbarvisible) | Gets whether the Form Designer toolbar is currently visible.|
+| [formFieldCollections](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#formfieldcollections) | Gets the collection of current form fields with their properties.|
+| [enableFormFieldsValidation](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#enableformfieldsvalidation) | Enables or disables form field validation.|
+| [enableFormFields](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#enableformfields) | Enables or disables interaction with form fields.|
+| [enableFormDesignerToolbar](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#enableformdesignertoolbar) | Shows or hides the Form Designer toolbar.|
+
+## updateFormFieldsValue
+
+Updates the value of one or more form fields programmatically.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## updateFormFields
+
+Updates form field properties such as bounds, color, font, isReadOnly, required, and more.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## retrieveFormFields
+
+Retrieves all form fields and their properties or filters by type/name.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## resetFormFields
+
+Resets specified form fields or all fields to their default values.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## importFormFields
+
+Imports form field data from an object or file into the current document.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## focusFormField
+
+Moves focus to a form field by name or ID.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## exportFormFieldsAsObject
+
+Exports current form field values and states as a JSON object.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## exportFormFields
+
+Exports form field data to a file for download.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## clearFormFields
+
+Clears values of specified or all fields without removing the fields themselves.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## isFormFieldDocument
+
+Returns true if the loaded document contains one or more form fields.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## isFormDesignerToolbarVisible
+
+Opens the Form Designer toolbar and returns its visibility status.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## formFieldCollections
+
+Gets the current collection of form fields with their properties from the viewer instance.
+
+```html
+
+```
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## enableFormDesignerToolbar
+
+Shows or hides the Form Designer toolbar at runtime.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## See also
+
+- [Form Designer overview](./overview)
+- [Form Designer Toolbar](../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./manage-form-fields/create-form-fields)
+- [Edit form fields](./manage-form-fields/modify-form-fields)
+- [Group form fields](./group-form-fields)
+- [Add custom data to form fields](./custom-data)
+- [Form Constrain](./form-constrain)
+- [Form fields Validation](./form-validation)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/forms/form-filling.md b/Document-Processing/PDF/PDF-Viewer/vue/forms/form-filling.md
new file mode 100644
index 0000000000..fa5f5d0d88
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/vue/forms/form-filling.md
@@ -0,0 +1,247 @@
+---
+layout: post
+title: Form filling in Vue PDF Viewer Control | Syncfusion
+description: Learn to view, fill, export, and import PDF form fields in Syncfusion Vue PDF Viewer, including disabling interaction and handling signatures.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Filling PDF Forms in Vue PDF Viewer
+
+The Syncfusion PDF Viewer supports three form-filling approaches:
+
+1. [Filling Form Fields Programmatically](#fill-pdf-forms-programmatically)
+
+ Form fields can be filled or updated programmatically using the [updateFormFieldsValue](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#updateformfieldsvalue) API. This approach is useful when form data must be set dynamically by application logic.
+
+2. [Form Filling Through User Interface](#fill-pdf-forms-through-the-user-interface)
+
+ End users can fill PDF form fields directly through the PDF Viewer interface by typing text, selecting options, or interacting with supported form elements.
+
+3. [Importing Form Field Data](#fill-pdf-forms-through-import-data)
+
+ The PDF Viewer can import form field data into an existing PDF document to prefill fields from external data sources.
+
+## Fill PDF forms programmatically
+
+Form field values can be updated programmatically using the [updateFormFieldsValue](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#updateformfieldsvalue) API. This method allows applications to set or modify form field values dynamically without end-user interaction.
+
+The following example demonstrates how to update PDF form field values programmatically:
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Fill PDF forms through the User Interface
+
+The PDF Viewer enables end users to complete form fields directly in the interface without code. Fields accept input appropriate to their type.
+
+
+
+The PDF Viewer supports common form fields such as text boxes, check boxes, radio buttons, drop-down lists, list boxes, and signature fields. Entered values remain editable during the viewing session.
+
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es6/prefilledforms-cs1" %}
+
+## Fill PDF forms through Import Data
+
+The PDF Viewer can import form field data into an existing PDF document using the [importFormFields](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#importformfields) API. This enables prefilling fields from external data sources without manual entry.
+
+Imported data is mapped to PDF form fields by field name. The imported values appear in the viewer and remain editable if the document permits modification. Refer to Import Form Data for details about expected data formats and mapping rules.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+For more details, see [Import Form Data](./import-export-form-fields/import-form-fields).
+
+## How to get the filled data and store it to a backing system
+
+Filled form field data can be exported from the PDF Viewer and stored in a backing system such as a database or file storage. Exported data can be re-imported later to restore form state. See Export Form Data for supported export formats and recommended persistence patterns.
+
+For more details, see [Export Form Data](./import-export-form-fields/export-form-fields).
+
+## How to Validate Form Fields using `validateFormFields` Event
+
+The [validateFormFields](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#validateformfields) event fires when a download or submit action is attempted while validation is enabled. The [retrieveFormFields()](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#retrieveformfields) API returns all form fields so the application can validate values before proceeding.
+
+Validation applies to all field types: a textbox is considered empty if it contains no text; a list box or dropdown is empty when no item is selected; a signature or initial field is empty if no signature exists; and radio buttons or checkboxes are empty when none are chosen.
+
+Enable [enableFormFieldsValidation](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#enableformfieldsvalidation) and handle the event to cancel submit/download actions when required fields are missing.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## See also
+
+- [Form Designer overview](./overview)
+- [Form Designer Toolbar](../toolbar-customization/form-designer-toolbar)
+- [Create](./manage-form-fields/create-form-fields), [edit](./manage-form-fields/modify-form-fields), [style](./manage-form-fields/customize-form-fields) and [remove](./manage-form-fields/remove-form-fields) form fields
+- [Edit form fields](./manage-form-fields/edit-form-fields)
+- [Group form fields](./group-form-fields)
+- [Add custom data to form fields](./custom-data)
+- [Form Constrain](./form-constrain)
+- [Form validation](./form-validation)
+- [Form fields API](./form-fields-api)
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/forms/form-validation.md b/Document-Processing/PDF/PDF-Viewer/vue/forms/form-validation.md
new file mode 100644
index 0000000000..efaa25c009
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/vue/forms/form-validation.md
@@ -0,0 +1,168 @@
+---
+layout: post
+title: Form validation in the Vue PDF Viewer component | Syncfusion
+description: Learn how to enable built-in form field validation and validate missing required fields in the Syncfusion Vue PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Validate PDF Form Fields in Vue PDF Viewer
+
+The Syncfusion **Vue PDF Viewer** provides built-in support for **validating form fields** before end users perform actions such as **printing**, **downloading**, or **submitting** a PDF document. Validation ensures that all required form fields are completed before allowing these actions to proceed.
+
+## How PDF Form Validation Works
+
+Form field validation follows this flow:
+ - Enable validation using the [enableFormFieldsValidation](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#enableformfieldsvalidation) property.
+ - Handle the [validateFormFields](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#validateformfields) event to determine which required fields are not filled.
+ - When validation is enabled and an end user attempts to print, download, or submit the document:
+ - The [validateFormFields](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#validateformfields) event is triggered.
+ - Unfilled required fields are listed in `args.nonFillableFields`.
+ - The application can cancel the action, display an error message, or move focus to an invalid field.
+
+## Enable PDF Form Field Validation
+
+Enable validation by setting the [enableFormFieldsValidation](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#validateformfields) property to `true` and handling the `validateFormFields` event.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Mark Fields as Required
+
+Only fields marked as **required** participate in validation. Use the `isRequired` property when creating or updating a form field.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+// (inside your `onDocumentLoad` method)
+const pdfviewer = this.$refs.pdfviewer.ej2Instances;
+pdfviewer.formDesignerModule.addFormField('Textbox', {
+ name: 'Email',
+ bounds: { X: 146, Y: 260, Width: 220, Height: 24 },
+ isRequired: true,
+ tooltip: 'Email is required',
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Handle PDF Form Validation Results
+
+In the [validateFormFields](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#validateformfields) event, the application can control the behavior when fields are missing. Typical actions include:
+- Cancel the print or download operation
+- Display an error message to the end user
+- Set focus to the first unfilled required field
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+// (inside your `onDocumentLoad` or mounted handler)
+const pdfviewer = this.$refs.pdfviewer.ej2Instances;
+pdfviewer.enableFormFieldsValidation = true;
+pdfviewer.validateFormFields = (args) => {
+ if (args && args.formField && args.formField.length > 0) {
+ // Example: prevent the pending action and notify the end user
+ args.cancel = true;
+ alert('Please fill all required fields. Missing: ' + args.formField[0].name);
+ // Optionally focus or scroll to the field
+ }
+};
+{% endhighlight %}
+{% endtabs %}
+
+## Tips
+
+- Use `isRequired` to clearly mark mandatory fields.
+- Validation is triggered only during [print](../print), [download](../download), or **submit** actions.
+- For custom validation logic (such as validating an email format):
+ - Retrieve all form fields using [retrieveFormFields()](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#retrieveformfields).
+ - Apply custom checks before allowing the action to proceed.
+
+## See Also
+
+- [Form Designer overview](./overview)
+- [Form Designer Toolbar](../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./manage-form-fields/create-form-fields)
+- [Modify form fields](./manage-form-fields/modify-form-fields)
+- [Group form fields](./group-form-fields)
+- [Add custom data to PDF form fields](./custom-data)
+- [Form flags](./form-constrain)
+- [Form fields API](./form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/forms/group-form-fields.md b/Document-Processing/PDF/PDF-Viewer/vue/forms/group-form-fields.md
new file mode 100644
index 0000000000..689677a8d7
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/vue/forms/group-form-fields.md
@@ -0,0 +1,172 @@
+---
+layout: post
+title: Group form fields in the Vue PDF Viewer component | Syncfusion
+description: Learn how to group PDF form fields in the Syncfusion Vue PDF Viewer by assigning the same name to multiple widgets.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Group form fields in Vue PDF Viewer
+
+The Syncfusion **Vue PDF Viewer** allows you to **group multiple form fields into a single logical field** by assigning the **same Name** to them. Grouped form fields share their values and states automatically based on the field type. Group form fields using the **Form Designer UI** or programmatically via APIs to keep related fields synchronized across a PDF document.
+
+This page covers:
+- [How form field grouping works](#how-grouping-works)
+- [Field behavior based on type](#field-behavior-by-type)
+- [How to group form fields using the UI](#group-using-the-form-designer-ui)
+- [How to group form fields programmatically](#group-pdf-form-fields-programmatically)
+- [Related references and samples](#example-scenarios)
+
+
+## How grouping works
+
+In a PDF form, multiple PDF form fields can represent the same logical field. When PDF form fields share the same **Name**, they are treated as a group and stay synchronized.
+
+## Field behavior by type
+
+- **Textbox and Password** — Text entered in one widget appears in all widgets with the same Name.
+- **CheckBox** — Checking one widget sets the checked state for all checkboxes with the same Name.
+- **RadioButton** — Widgets with the same Name form a radio group; only one option can be selected.
+- **ListBox and DropDown** — The selected value is shared across widgets with the same Name.
+- **Signature and Initial fields** — Applied signature/initial is mirrored across grouped widgets.
+
+N> Form field grouping is controlled by the **Name** property. The position of each widget is determined only by its bounds; grouping is not affected by location.
+
+## Group using the Form Designer UI
+
+**Steps**
+1. Enable the [Form Designer toolbar](../toolbar-customization/form-designer-toolbar).
+2. Add the form fields you want to group.
+3. Select a form field, open **Properties**, and set the **Name** value.
+4. Assign the same **Name** to all PDF form fields that belong to the group.
+5. Apply the changes and verify that updates in one widget reflect in the others.
+
+
+
+
+
+## Group PDF Form Fields Programmatically
+
+You can also group form fields during creation by assigning the same **Name** through code.
+
+### Example Scenarios
+- Two textboxes named **EmployeeId** share the same value.
+- A radio button group named **Gender** allows single selection.
+- Two checkboxes named **Subscribe** share the checked state.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/vue-pdf-viewer-examples)
+
+## See also
+
+- [Form Designer overview](../overview)
+- [Form Designer Toolbar](../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./manage-form-fields/create-form-fields)
+- [Modify form fields](./manage-form-fields/modify-form-fields)
+- [Add custom data to form fields](./custom-data)
+- [Form Constrain](./form-constrain)
+- [Form validation](./form-validation)
+- [Form fields API](./form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/forms/import-export-form-fields/export-form-fields.md b/Document-Processing/PDF/PDF-Viewer/vue/forms/import-export-form-fields/export-form-fields.md
new file mode 100644
index 0000000000..c66f0f8b0f
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/vue/forms/import-export-form-fields/export-form-fields.md
@@ -0,0 +1,243 @@
+---
+layout: post
+title: Export form data in the Vue PDF Viewer | Syncfusion
+description: Learn how to export PDF form field data (FDF, XFDF, JSON, and as an object) using the Syncfusion Vue PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Export PDF Form Data from Vue PDF Viewer
+
+The PDF Viewer allows you to export form field data in multiple formats for easy storage or integration. Supported formats:
+
+- [FDF](#export-as-fdf)
+- [XFDF](#export-as-xfdf)
+- [JSON](#export-as-json)
+- [JavaScript Object](#export-as-object) (for custom persistence)
+
+## Available methods
+
+- [exportFormFields](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#exportformfields)(destination?, format) — Exports data to a file in the specified format.
+- [exportFormFieldsAsObject](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#exportformfieldsasobject)(format) — Exports data as a JavaScript object for custom handling.
+- [importFormFields](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#importformfields)(sourceOrObject, format) — Import data back into the PDF.
+
+## How to export
+
+Use [exportFormFields()](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#exportformfields) with an optional destination path and the format type.
+
+### Export as FDF
+The following example exports form field data as FDF.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+### Export as XFDF
+The following example exports form field data as XFDF.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+### Export as JSON
+The following example exports form field data as JSON.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+### Export as Object
+
+Use [exportFormFieldsAsObject()](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#exportformfieldsasobject) to obtain form data as a JavaScript object for database or API integration.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Common Use Cases
+
+- Save user-entered data to your server without altering the original PDF.
+- Export as JSON for REST API integration.
+- Export as FDF/XFDF for compatibility with other PDF tools.
+- Export as Object to merge with app state or store securely.
+- Automate exports after [validation](../form-validation) using [validateFormFields()](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#validateformfields)
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/vue-pdf-viewer-examples)
+
+## See also
+
+- [Form Designer overview](../overview)
+- [Form Designer Toolbar](../../toolbar-customization/form-designer-toolbar)
+- [Import form fields](./import-form-fields)
+- [Import Export Events](./import-export-events)
+- [Create form fields](../overview-create-forms)
+- [Group form fields](../group-form-fields)
+- [Form validation](../form-validation)
+- [Add custom data to form fields](../custom-data)
+- [Form fields API](../form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/forms/import-export-form-fields/import-export-events.md b/Document-Processing/PDF/PDF-Viewer/vue/forms/import-export-form-fields/import-export-events.md
new file mode 100644
index 0000000000..70f2b8eab8
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/vue/forms/import-export-form-fields/import-export-events.md
@@ -0,0 +1,169 @@
+---
+layout: post
+title: Import/Export events in the Vue PDF Viewer | Syncfusion
+description: Learn how to handle Import/Export events for PDF form fields in the Syncfusion Vue PDF Viewer component.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# PDF Form Import and Export Events in Vue
+
+Import/Export events let you **track and customize the entire life cycle** of form data being imported into or exported from the PDF Viewer.
+Use these events to:
+- Validate inputs before processing.
+- Show progress indicators.
+- Log audit trails.
+- Block operations based on business rules.
+
+Each event provides detailed context through event arguments such as [ImportStartEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/importstarteventargs), [ImportSuccessEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/importsuccesseventargs), [ImportFailureEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/importfailureeventargs), [ExportStartEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/exportstarteventargs), [ExportSuccessEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/exportsuccesseventargs), and [ExportFailureEventArgs](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/exportfailureeventargs).
+
+## Import Events
+- [importStart](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#importstart) — Fires when an import begins.
+- [importSuccess](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#importsuccess) — Fires when form fields are successfully imported.
+- [importFailed](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#importfailed) — Fires if the import fails.
+
+**Example: Handle Import Events**
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Export Events
+- [exportStart](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#exportstart) — Fires when an export begins.
+- [exportSuccess](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#exportsuccess) — Fires when form fields are successfully exported.
+- [exportFailed](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#exportfailed) — Fires if the export fails.
+
+**Example: Handle Export Events**
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Key Notes
+- importStart, importSuccess, importFailed cover the full import life cycle.
+- exportStart, exportSuccess, exportFailed cover the full export life cycle.
+
+## See also
+
+- [Form Designer overview](../overview)
+- [Form Designer Toolbar](../../toolbar-customization/form-designer-toolbar)
+- [Create form fields](../overview-create-forms)
+- [Group form fields](../group-form-fields)
+- [Form validation](../form-validation)
+- [Add custom data to form fields](../custom-data)
+- [Import form fields](./import-form-fields)
+- [Export form fields](./export-form-fields)
+- [Form validation](../form-validation)
+- [Form fields API](../form-fields-api)
+- [Form fields API](../form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/forms/import-export-form-fields/import-form-fields.md b/Document-Processing/PDF/PDF-Viewer/vue/forms/import-export-form-fields/import-form-fields.md
new file mode 100644
index 0000000000..12d474fe0a
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/vue/forms/import-export-form-fields/import-form-fields.md
@@ -0,0 +1,189 @@
+---
+layout: post
+title: Import form data in the Vue PDF Viewer | Syncfusion
+description: Learn how to import PDF form field data (FDF, XFDF, JSON, and from an object) using the Syncfusion Vue PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Import PDF Form Data into Vue PDF Viewer
+
+The **PDF Viewer** lets you import values into interactive form fields in the currently loaded PDF. You can import data from these formats:
+
+- [FDF](#import-as-fdf)
+- [XFDF](#import-xfdf)
+- [JSON](#import-json)
+
+## API to use
+- [importFormFields](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#importformfields)(sourceOrObject, format)
+
+N> If a **server-backed viewer** is used, set `serviceUrl` before importing.
+
+### Import FDF
+
+The following Vue example imports FDF data into the currently loaded PDF.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+### Import XFDF
+
+The following example imports XFDF data.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+### Import JSON
+
+The following example imports JSON form data.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Common Use Cases
+
+- Pre-fill application forms from a database using JSON.
+- Migrate data from other PDF tools using FDF/XFDF.
+- Restore user progress saved locally or on the server.
+- Combine with validation to block print/download until required fields are completed.
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/vue-pdf-viewer-examples)
+
+## See also
+
+- [Form Designer overview](../overview)
+- [Form Designer Toolbar](../../toolbar-customization/form-designer-toolbar)
+- [Export form fields](./export-form-fields)
+- [Import Export Events](./import-export-events)
+- [Create Edit form fields](../overview-create-forms)
+- [Group form fields](../group-form-fields)
+- [Form validation](../form-validation)
+- [Add custom data to form fields](../custom-data)
+- [Form fields API](../form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/forms/manage-form-fields/create-form-fields.md b/Document-Processing/PDF/PDF-Viewer/vue/forms/manage-form-fields/create-form-fields.md
new file mode 100644
index 0000000000..3c1cef8290
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/vue/forms/manage-form-fields/create-form-fields.md
@@ -0,0 +1,633 @@
+---
+layout: post
+title: Create form fields in the Vue PDF Viewer | Syncfusion
+description: Learn how to add each PDF form field using the PDF Viewer UI and how to create them programmatically in the Syncfusion Vue PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Create PDF Form Fields in Vue
+
+You can create or add new form fields either visually using the [Form Designer UI](https://document.syncfusion.com/demos/pdf-viewer/vue/#/tailwind3/pdfviewer/form-designer.html) or dynamically using APIs.
+
+## Create Form Fields Using the Form Designer UI
+Use this approach when you want to design forms manually without writing code.
+
+**Steps:**
+
+1. Enable [Form Designer](../form-designer) mode in the PDF Viewer.
+2. Click a form field type (Textbox, Checkbox, Dropdown, etc.) from the toolbar.
+3. Click on the PDF page to place the form field.
+4. Move or resize the field as required.
+5. Configure field properties using the **Properties** panel.
+
+
+
+## Add Form Fields Programmatically (API)
+
+Use this approach when you want to generate form fields dynamically based on data or application logic.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+**Use programmatic creation when:**
+
+- Building dynamic forms
+- Pre-filling forms from databases
+- Automating form creation workflows
+
+## PDF Form Field Types and How to Add Them
+Each field can be added via the **Form Designer** or **programmatically**.
+
+### Textbox
+
+**Add via Toolbar (UI)**
+- Open **Form Designer** → select **Textbox** → click on the page → configure in **Properties**.
+
+
+**Add Programmatically (API)**
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+### Password
+
+**Add via Toolbar (UI)**
+- Select **Password** → place it → configure tooltip, required, max length.
+
+
+**Add Programmatically (API)**
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+### CheckBox
+**Add via Toolbar (UI)**
+- Select **CheckBox** → click to place → duplicate for options → set isChecked, tooltip, appearance.
+
+
+**Add Programmatically (API)**
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+### RadioButton
+**Add via Toolbar (UI)**
+- Select **RadioButton** → place buttons with the **same Name** to group → configure selection/colors.
+
+
+**Add Programmatically (API)**
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+### ListBox
+**Add via Toolbar (UI)**
+- Select **ListBox** → place → add items in **Properties**.
+
+
+**Add Programmatically (API)**
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+### DropDown
+**Add via Toolbar (UI)**
+- Select **DropDown** → place → add items → set default value.
+
+
+**Add Programmatically (API)**
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+### Signature Field
+**Add via Toolbar (UI)**
+- Select **Signature Field** → place where signing is required → configure indicator text, thickness, tooltip, required.
+
+
+**Add Programmatically (API)**
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+### Initial Field
+**Add via Toolbar (UI)**
+- Select **Initial Field** → place where initials are needed → configure text and required state.
+
+
+**Add Programmatically (API)**
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Add Fields Dynamically with setFormFieldMode
+
+Use **setFormFieldMode()** to add fields on the fly based on user actions.
+
+### Edit Form Fields in TypeScript PDF Viewer
+You can edit form fields using the UI or API.
+
+#### Edit Using the UI
+- Right click a field → **Properties** to update settings. (Image here)
+- Drag to move; use handles to resize.
+- Use the toolbar to toggle field mode or add new fields.
+
+#### Edit Programmatically
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/vue-pdf-viewer-examples)
+
+## See Also
+
+- [Form Designer overview](../overview)
+- [Form Designer Toolbar](../../toolbar-customization/form-designer-toolbar)
+- [Modify form fields](./modify-form-fields)
+- [Style form fields](./style-form-fields)
+- [Remove form fields](./remove-form-fields)
+- [Group form fields](../group-form-fields)
+- [Form validation](../form-validation)
+- [Form Fields API](../form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/forms/manage-form-fields/customize-form-fields.md b/Document-Processing/PDF/PDF-Viewer/vue/forms/manage-form-fields/customize-form-fields.md
new file mode 100644
index 0000000000..42d6c965be
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/vue/forms/manage-form-fields/customize-form-fields.md
@@ -0,0 +1,160 @@
+---
+layout: post
+title: Customize form fields in the Vue PDF Viewer | Syncfusion
+description: Learn how to customize PDF form fields using the UI and programmatically with APIs in the Syncfusion Vue PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Customize the appearance of PDF Form Fields in Vue PDF Viewer
+
+**Styling** customizes appearance only (font, color, alignment, border, background, indicator text).
+
+## Customize Appearance of Form Fields Using the UI
+Use the **Properties** panel to adjust:
+- Font family/size, text color, alignment
+- Border color/thickness
+- Background color
+
+
+## Customize appearance Form Fields Programmatically
+Use [updateFormField()](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#updateformfields) to apply styles.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Set Default Styles for New Form Fields
+Define defaults so fields added from the toolbar inherit styles.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/vue-pdf-viewer-examples)
+
+## See also
+
+- [Form Designer overview](../overview)
+- [Form Designer Toolbar](../../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./create-form-fields)
+- [Modify form fields](./modify-form-fields)
+- [Remove form fields](./remove-form-fields)
+- [Group form fields](../group-form-fields)
+- [Form validation](../form-validation)
+- [Add custom data to form fields](../custom-data)
+- [Form fields API](../form-fields-api)
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/forms/manage-form-fields/modify-form-fields.md b/Document-Processing/PDF/PDF-Viewer/vue/forms/manage-form-fields/modify-form-fields.md
new file mode 100644
index 0000000000..dad4fcd2e1
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/vue/forms/manage-form-fields/modify-form-fields.md
@@ -0,0 +1,577 @@
+---
+layout: post
+title: Modify form fields in the Vue PDF Viewer | Syncfusion
+description: Learn how to modify PDF form fields using the UI and programmatically with APIs in the Syncfusion Vue PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Modify PDF Form Field Properties in Vue
+You can modify form fields using the **UI** or **API**.
+
+## Modify PDF Form Field Properties using the UI
+- Right click a field → **Properties** to update settings.
+
+- Drag to move; use handles to resize.
+- Use the toolbar to toggle field mode or add new fields.
+
+## Modify PDF Form Field Properties programmatically
+Use [updateFormField()](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#updateformfields) to change behavior/data (including position and size).
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## Modify PDF Form Field Properties by Field type
+
+### Textbox
+- UI: Update value, font, size, colors, border thickness, alignment, max length, multiline.
+
+Use [updateFormField()](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#updateformfields) for value, typography, alignment, colors, borders.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+### Password
+
+- UI: Tooltip, required, max length, font, appearance.
+
+Use [updateFormField()](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#updateformfields) for tooltip, validation flags, typography, colors, alignment, borders.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+### RadioButton
+• UI: Set selected item in a group (same Name).
+
+• API: [updateFormField()](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#updateformfields) to set selected value and border appearance.
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+### ListBox
+• UI: Add/remove items, set selection, adjust fonts/colors.
+
+• API: [updateFormField()](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#updateformfields) for items, selection, borders.
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+### Signature Field
+• UI: Tooltip, thickness, indicator text, required/visibility.
+
+• API: [updateFormField()](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#updateformfields) for tooltip, required, colors, borders.
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+### Initial Field
+• UI: Tooltip, indicator text, thickness, required/visibility.
+
+• API: [updateFormField()](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/index-default#updateformfields) for tooltip, required, colors, borders.
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/vue-pdf-viewer-examples)
+
+## See also
+
+- [Form Designer overview](../overview)
+- [Form Designer Toolbar](../../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./create-form-fields)
+- [Remove form Fields](./remove-form-fields)
+- [Style form fields](./customize-form-fields)
+- [Group form fields](../group-form-fields)
+- [Form validation](../form-validation)
+- [Form fields API](../form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/forms/manage-form-fields/move-resize-form-fields.md b/Document-Processing/PDF/PDF-Viewer/vue/forms/manage-form-fields/move-resize-form-fields.md
new file mode 100644
index 0000000000..74391d64b7
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/vue/forms/manage-form-fields/move-resize-form-fields.md
@@ -0,0 +1,82 @@
+---
+layout: post
+title: Move and Resize form fields in the Vue PDF Viewer | Syncfusion
+description: Learn how to move and resize PDF form fields using the UI and programmatically with APIs in the Syncfusion Vue PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Move and Resize PDF Form Fields in Vue
+- **Move**: Drag the form field to reposition it.
+- **Resize**: Use the resize handles to change width and height.
+
+
+
+## Move and Resize Fields Programmatically (API)
+You can set absolute bounds or move fields by a delta.
+
+**Set absolute bounds**
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## See also
+
+- [Form Designer overview](../overview)
+- [Form Designer Toolbar](../../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./create-form-fields)
+- [Remove form Fields](./remove-form-fields)
+- [Customize form fields](./customize-form-fields)
+- [Group form fields](../group-form-fields)
+- [Form validation](../form-validation)
+- [Form fields API](../form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/forms/manage-form-fields/remove-form-fields.md b/Document-Processing/PDF/PDF-Viewer/vue/forms/manage-form-fields/remove-form-fields.md
new file mode 100644
index 0000000000..636819bb44
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/vue/forms/manage-form-fields/remove-form-fields.md
@@ -0,0 +1,88 @@
+---
+layout: post
+title: Remove form fields in the Vue PDF Viewer | Syncfusion
+description: Learn how to remove PDF form fields using the UI and programmatically in the Syncfusion Vue PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Remove PDF Form Fields from a PDF in Vue
+
+## Remove Form Fields Using the UI
+**Steps:**
+1. Enable **Form Designer mode**.
+2. Select the form field.
+3. Click **Delete** in the toolbar or press the **Delete** key.
+
+
+## Remove Form Fields Programmatically
+Use **deleteFormField()** with a field reference or ID.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/vue-pdf-viewer-examples)
+
+## See also
+
+- [Form Designer overview](../overview)
+- [Form Designer Toolbar](../../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./create-form-fields)
+- [Modify form fields](./modify-form-fields)
+- [Customize form fields](./customize-form-fields)
+- [Group form fields](../group-form-fields)
+- [Form validation](../form-validation)
+- [Add custom data to form fields](../custom-data)
+- [Form fields API](../form-fields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/forms/overview-create-forms.md b/Document-Processing/PDF/PDF-Viewer/vue/forms/overview-create-forms.md
new file mode 100644
index 0000000000..9c92ef76e1
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/vue/forms/overview-create-forms.md
@@ -0,0 +1,19 @@
+---
+layout: post
+title: Overview of Create form fields in Vue PDF Viewer | Syncfusion
+description: Learn how to create edit each form field using the PDF Viewer UI and how to create them programmatically in the Syncfusion Vue PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Create, Edit, Style, and Remove Form Fields in Vue PDF Viewer
+
+The [Vue PDF Viewer](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/vue/overview) enables the creation, editing, styling, and removal of interactive PDF form fields. These operations are available through the [Form Designer user interface (UI)](https://document.syncfusion.com/demos/pdf-viewer/vue/#/tailwind3/pdfviewer/form-designer) or programmatically via the Vue APIs.
+
+This section links to step-by-step guidance for each operation:
+
+- [Create PDF form fields](./manage-form-fields/create-form-fields)
+- [Edit form field behavior and values](./manage-form-fields/modify-form-fields)
+- [Style the appearance of form fields](./manage-form-fields/customize-form-fields)
+- [Remove form fields from a PDF document](./manage-form-fields/remove-form-fields)
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/forms/overview.md b/Document-Processing/PDF/PDF-Viewer/vue/forms/overview.md
new file mode 100644
index 0000000000..3c00d44fab
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/vue/forms/overview.md
@@ -0,0 +1,172 @@
+---
+layout: post
+title: Overview of Forms in Vue PDF Viewer Control | Syncfusion
+description: Learn what the Form Designer in Syncfusion Vue PDF Viewer offers, supported field types, and how the topics are organized.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Overview of Forms in Vue PDF Viewer
+
+The Syncfusion PDF Viewer provides a full-featured PDF forms experience for Vue applications. Users can read, fill, add, edit, and remove form fields in PDF documents using the viewer's UI or programmatic APIs.
+
+Flexible import and export of form data simplifies integration in automated workflows or user-driven scenarios. APIs offer developers control over form behavior while the viewer presents a concise, accessible interface for end users.
+
+## Filling PDF Forms
+
+Use the viewer UI or APIs to fill PDF forms, import/export form data, or integrate automated form workflows.
+
+See the [Filling PDF Forms](./form-filling) page for full details.
+
+Use the following code-snippet to enable form-filling by injecting the `FormFields` module.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+
+
+1. [Programmatically Form fill](./form-filling#fill-pdf-forms-programmatically)
+2. [Form Fill Using UI](./form-filling#fill-pdf-forms-through-the-user-interface)
+3. [Import the Form data](./form-filling#fill-pdf-forms-through-import-data)
+
+## Form Designer
+
+A built-in Form Designer enables creating, positioning, and editing form fields directly on the PDF page. Use the built-in designer tools for common tasks or extend them to build a customized form-design workflow.
+
+See the [Form Designer](./form-designer) page for full details.
+
+Use the following Code-snippet to enable Form Designer by injecting `FormDesigner` Module.
+
+{% tabs %}
+{% highlight html tabtitle="Composition API (~/src/App.vue)" %}
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+
+
+Create and customize interactive fields directly on the PDF page.
+- [Create](./manage-form-fields/create-form-fields), [edit](./manage-form-fields/modify-form-fields), or [remove](./manage-form-fields/remove-form-fields) forms
+- [Add a Signature Field](./manage-form-fields/create-form-fields#add-signature-field)
+- [Edit Form Field](./manage-form-fields/modify-form-fields)
+- [Remove Form Field](./manage-form-fields/remove-form-fields)
+- [Form Field Constraints](./form-constrain)
+
+## Supported form field types
+
+- [Textbox](../forms/manage-form-fields/create-form-fields#add-textbox)
+- [Password](../forms/manage-form-fields/create-form-fields#add-password)
+- [CheckBox](../forms/manage-form-fields/create-form-fields#add-checkbox)
+- [RadioButton](../forms/manage-form-fields/create-form-fields#add-radiobutton)
+- [ListBox](../forms/manage-form-fields/create-form-fields#add-listbox)
+- [DropDown](../forms/manage-form-fields/create-form-fields#add-dropdown)
+- [Signature field](../forms/manage-form-fields/create-form-fields#add-signature-field)
+- [Initial field](../forms/manage-form-fields/create-form-fields#add-initial-field)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/getting-started-application.md b/Document-Processing/PDF/PDF-Viewer/vue/getting-started-application.md
index f62429649a..ae4f9a5b4b 100644
--- a/Document-Processing/PDF/PDF-Viewer/vue/getting-started-application.md
+++ b/Document-Processing/PDF/PDF-Viewer/vue/getting-started-application.md
@@ -10,11 +10,13 @@ domainurl: ##DomainURL##
# Getting started with Syncfusion PDF Viewer in Vue 3
-This guide explains how to create a Vue 3 application with Vite and integrate the Syncfusion® Vue PDF Viewer component.using the [Composition API](https://vuejs.org/guide/introduction.html#composition-api) / [Options API](https://vuejs.org/guide/introduction.html#options-api).
+This guide demonstrates how to create a Vue 3 application with Vite and integrate the Syncfusion® Vue PDF Viewer component using either the [Composition API](https://vuejs.org/guide/introduction.html#composition-api) or [Options API](https://vuejs.org/guide/introduction.html#options-api).
-The `Composition API` is a new feature introduced in Vue.js 3 that provides an alternative way to organize and reuse component logic. It allows developers to write components as functions that use smaller, reusable functions called composition functions to manage their properties and behavior.
+## API Approaches
-The `Options API` is the traditional way of writing Vue.js components, where the component logic is organized into a series of options that define the component's properties and behavior. These options include data, methods, computed properties, watchers, life cycle hooks, and more.
+**Composition API** – A modern approach to organizing component logic by composing smaller, reusable functions. This method offers better code organization and reusability for complex components.
+
+**Options API** – The traditional Vue approach that organizes component logic into a series of options (data, methods, computed properties, watchers, lifecycle hooks, etc.).
## Prerequisites
@@ -23,7 +25,7 @@ Install Node.js (version 18 or later recommended) along with npm or Yarn before
## Set up the Vite project
-A recommended approach for beginning with Vue is to scaffold a project using [Vite](https://vitejs.dev/). Run one of the following commands to create a new project.
+Use [Vite](https://vitejs.dev/) to quickly scaffold a Vue 3 project. Run one of the following commands to create a new project:
```bash
npm create vite@latest
@@ -66,7 +68,7 @@ Vanilla
Nuxt ↗
```
-4. After the scaffold completes, install the dependencies for `my-project`:
+4. After the scaffold completes, install the project dependencies:
```bash
cd my-project
@@ -80,16 +82,12 @@ cd my-project
yarn install
```
-With the scaffold ready, add the Syncfusion Vue PDF Viewer component to the project.
-
## Add Syncfusion® Vue packages
-Syncfusion Vue component packages are available at [npmjs.com](https://www.npmjs.com/search?q=ej2-vue). Install the Vue PDF Viewer package with one of the following commands.
-
-This tutorial uses the [Vue PDF Viewer component](https://www.syncfusion.com/pdf-viewer-sdk). Install the `@syncfusion/ej2-vue-pdfviewer` package with the following command:
+Install the `@syncfusion/ej2-vue-pdfviewer` package using npm or Yarn. This package includes the PDF Viewer component and all required dependencies:
```bash
- npm install @syncfusion/ej2-vue-pdfviewer --save
+npm install @syncfusion/ej2-vue-pdfviewer --save
```
or
@@ -100,9 +98,9 @@ yarn add @syncfusion/ej2-vue-pdfviewer
## Import Syncfusion® CSS styles
-You can import themes for the Syncfusion Vue components by using CSS or SASS assets from npm packages, a CDN, [CRG](https://ej2.syncfusion.com/javascript/documentation/common/custom-resource-generator), or [Theme Studio](https://ej2.syncfusion.com/vue/documentation/appearance/theme-studio). Refer to the [themes topic](https://ej2.syncfusion.com/vue/documentation/appearance/theme) for details about built-in themes and additional options for referencing them in a Vue project.
+Import the required theme CSS for the PDF Viewer component. Syncfusion offers multiple theme options (Material, Bootstrap, Fabric, Tailwind, etc.) available from npm packages, CDN, [CRG](https://ej2.syncfusion.com/javascript/documentation/common/custom-resource-generator), or [Theme Studio](https://ej2.syncfusion.com/vue/documentation/appearance/theme-studio). For full details, see the [themes documentation](https://ej2.syncfusion.com/vue/documentation/appearance/theme).
-This tutorial applies the Material theme by importing the required CSS from the installed packages into the `
+
+
+
+