diff --git a/Document-Processing/Excel/Excel-Library/NET/Import-Export/Import-to-Excel.md b/Document-Processing/Excel/Excel-Library/NET/Import-Export/Import-to-Excel.md
index 8348f801d..55a9bedf2 100644
--- a/Document-Processing/Excel/Excel-Library/NET/Import-Export/Import-to-Excel.md
+++ b/Document-Processing/Excel/Excel-Library/NET/Import-Export/Import-to-Excel.md
@@ -75,6 +75,24 @@ A complete working example to import data from DataTable to Excel in C# is prese
N> XlsIO imports the data from data table into Excel worksheet based on the data table column type. So, it is suggested to create the data tables with required column types such as number, text or date time before importing the data table to Excel worksheet.
+### Preserve Data Types
+
+To preserve data types when importing a DataTable into an Excel worksheet, set the **preserveTypes** parameter of the ImportDataTable method to **true**.
+
+{% tabs %}
+{% highlight c# tabtitle="C# [Cross-platform]" %}
+worksheet.ImportDataTable(table, false, 1, 1, true); // preserveTypes = true
+{% endhighlight %}
+
+{% highlight c# tabtitle="C# [Windows-specific]" %}
+worksheet.ImportDataTable(table, false, 1, 1, true); // preserveTypes = true
+{% endhighlight %}
+
+{% highlight vb.net tabtitle="VB.NET [Windows-specific]" %}
+worksheet.ImportDataTable(table, False, 1, 1, True) ' preserveTypes = True
+{% endhighlight %}
+{% endtabs %}
+
## DataColumn to Excel
The following code example illustrates how to import DataColumn into an Excel using [ImportDataColumn](https://help.syncfusion.com/cr/document-processing/Syncfusion.XlsIO.IWorksheet.html#Syncfusion_XlsIO_IWorksheet_ImportDataColumn_System_Data_DataColumn_System_Boolean_System_Int32_System_Int32_) method.
@@ -2609,4 +2627,4 @@ Using excelEngine As ExcelEngine = New ExcelEngine()
workbook.SaveAs("Output.xlsx")
End Using
{% endhighlight %}
-{% endtabs %}
\ No newline at end of file
+{% endtabs %}
diff --git a/Document-Processing/Excel/Excel-Library/NET/Working-with-Drawing-Objects.md b/Document-Processing/Excel/Excel-Library/NET/Working-with-Drawing-Objects.md
index d132ede8a..70f84d234 100644
--- a/Document-Processing/Excel/Excel-Library/NET/Working-with-Drawing-Objects.md
+++ b/Document-Processing/Excel/Excel-Library/NET/Working-with-Drawing-Objects.md
@@ -924,6 +924,9 @@ A complete working example to remove comment in C# is present on [this GitHub pa
Threaded comments are a way to add and organize annotations or discussions related to specific cells in a worksheet. [IThreadedComment](https://help.syncfusion.com/cr/document-processing/Syncfusion.XlsIO.IThreadedComment.html) object represents a threaded comment in a worksheet.
+To quickly learn how to add, reply to, resolve, delete, and clear threaded comments in Excel documents, check out this video.
+{% youtube "https://www.youtube.com/watch?v=h8x62gZLxng" %}
+
### Create
The following code explains how to create a threaded comment for a specific cell using [AddThreadedComment](https://help.syncfusion.com/cr/document-processing/Syncfusion.XlsIO.IRange.html#Syncfusion_XlsIO_IRange_AddThreadedComment_System_String_System_String_System_DateTime_) method.
diff --git a/Document-Processing/Excel/Excel-Library/NET/faqs/does-xlsio-support-changing-the-colors-of-built-in-icon-sets.md b/Document-Processing/Excel/Excel-Library/NET/faqs/does-xlsio-support-changing-the-colors-of-built-in-icon-sets.md
new file mode 100644
index 000000000..2a058a1fe
--- /dev/null
+++ b/Document-Processing/Excel/Excel-Library/NET/faqs/does-xlsio-support-changing-the-colors-of-built-in-icon-sets.md
@@ -0,0 +1,11 @@
+---
+title: Support for changing icon set colors in Excel | Syncfusion
+description: This page explains whether Syncfusion XlsIO supports changing the colors of built-in icon sets in Excel using the Syncfusion .NET Excel library (XlsIO).
+platform: document-processing
+control: XlsIO
+documentation: UG
+---
+
+# Does XlsIO support changing the colors of built-in icon sets?
+
+No. In Microsoft Excel, the colors of built-in icon sets used in conditional formatting (such as arrows, traffic lights, and symbols) are fixed and cannot be customized. XlsIO follows the same behavior and does not provide support for changing these icon colors programmatically. You can apply icon sets and configure their thresholds through conditional formatting, but the icon colors remain predefined by Excel.
\ No newline at end of file
diff --git a/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-apply-font-styles-to-the-entire-worksheet.md b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-apply-font-styles-to-the-entire-worksheet.md
new file mode 100644
index 000000000..726a4872a
--- /dev/null
+++ b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-apply-font-styles-to-the-entire-worksheet.md
@@ -0,0 +1,104 @@
+---
+title: How to apply styles to an Entire Excel Worksheet | Syncfusion
+description: Learn how to apply font settings and fill color to an entire Excel worksheet using the Syncfusion .NET Excel library (XlsIO) in C# and VB.NET.
+platform: document-processing
+control: XlsIO
+documentation: UG
+---
+
+# How to apply styles to the entire worksheet in Excel?
+
+The following examples show how to apply font attributes (name and size) and fill color to an entire worksheet using C# (cross-platform and Windows-specific) and VB.NET.
+
+{% tabs %}
+{% highlight c# tabtitle="C# [Cross-platform]" %}
+using (ExcelEngine excelEngine = new ExcelEngine())
+{
+ IApplication application = excelEngine.Excel;
+ application.DefaultVersion = ExcelVersion.Xlsx;
+ IWorkbook workbook = application.Workbooks.Open("../../../Data/Input.xlsx", ExcelOpenType.Automatic);
+ IWorksheet worksheet = workbook.Worksheets[0];
+
+ //Define new styles to apply in rows and columns
+ IStyle columnStyle = workbook.Styles.Add("ColumnStyle");
+ columnStyle.Font.FontName = "Times New Roman";
+ columnStyle.Font.Size = 10;
+ columnStyle.Color = Color.Pink;
+
+ worksheet.SetDefaultColumnStyle(1, 16384, columnStyle);
+
+ //Save the Excel document
+ workbook.SaveAs("../../../Output/FontStyle.xlsx");
+}
+{% endhighlight %}
+
+{% highlight c# tabtitle="C# [Windows-specific]" %}
+using (ExcelEngine excelEngine = new ExcelEngine())
+{
+ IApplication application = excelEngine.Excel;
+ application.DefaultVersion = ExcelVersion.Xlsx;
+ IWorkbook workbook = application.Workbooks.Open("../../Data/Input.xlsx", ExcelOpenType.Automatic);
+ IWorksheet worksheet = workbook.Worksheets[0];
+
+ //Define new styles to apply in rows and columns
+ IStyle columnStyle = workbook.Styles.Add("ColumnStyle");
+ columnStyle.Font.FontName = "Times New Roman";
+ columnStyle.Font.Size = 10;
+ columnStyle.Color = Color.Pink;
+
+ worksheet.SetDefaultColumnStyle(1, 16384, columnStyle);
+
+ //Save the Excel document
+ workbook.SaveAs("../../Output/FontStyle.xlsx");
+
+}
+{% endhighlight %}
+
+{% highlight vb.net tabtitle="VB.NET [Windows-specific]" %}
+Using excelEngine As New ExcelEngine()
+ Dim application As IApplication = excelEngine.Excel
+ application.DefaultVersion = ExcelVersion.Xlsx
+
+ Dim workbook As IWorkbook = application.Workbooks.Open("../../Data/Input.xlsx", ExcelOpenType.Automatic)
+ Dim worksheet As IWorksheet = workbook.Worksheets(0)
+
+ 'Define new styles to apply in rows and columns
+ Dim columnStyle As IStyle = workbook.Styles.Add("ColumnStyle")
+ columnStyle.Font.FontName = "Times New Roman"
+ columnStyle.Font.Size = 10
+ columnStyle.Color = Color.Pink
+
+ worksheet.SetDefaultColumnStyle(1, 16384, columnStyle)
+
+ 'Save the Excel document
+ workbook.SaveAs("../../Output/FontStyle.xlsx")
+End Using
+{% endhighlight %}
+{% endtabs %}
+
+N>
+* Applying a default style to cells replaces any existing styles. This is standard Excel behavior.
+* To add new styling without removing existing formats, set specific properties on targeted ranges.
+
+The following code snippet shows how to apply a new style without affecting existing styles:
+
+{% tabs %}
+{% highlight c# tabtitle="C# [Cross-platform]" %}
+ worksheet.Range["A1:F13"].CellStyle.Font.FontName = "Times New Roman";
+ worksheet.Range["A1:F13"].CellStyle.Font.Size = 10;
+ worksheet.Range["A1:F13"].CellStyle.Color = Color.Lavender;
+{% endhighlight %}
+
+{% highlight c# tabtitle="C# [Windows-specific]" %}
+ worksheet.Range["A1:F13"].CellStyle.Font.FontName = "Times New Roman";
+ worksheet.Range["A1:F13"].CellStyle.Font.Size = 10;
+ worksheet.Range["A1:F13"].CellStyle.Color = Color.Lavender;
+{% endhighlight %}
+
+{% highlight vb.net tabtitle="VB.NET [Windows-specific]" %}
+worksheet.Range("A1:F13").CellStyle.Font.FontName = "Times New Roman"
+worksheet.Range("A1:F13").CellStyle.Font.Size = 10
+worksheet.Range("A1:F13").CellStyle.Color = Color.Lavender
+{% endhighlight %}
+{% endtabs %}
+
diff --git a/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-retrieve-the-first-cell-in-the-used-range-in-Excel.md b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-retrieve-the-first-cell-in-the-used-range-in-Excel.md
new file mode 100644
index 000000000..1315eb382
--- /dev/null
+++ b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-retrieve-the-first-cell-in-the-used-range-in-Excel.md
@@ -0,0 +1,89 @@
+---
+title: Retrieve the first cell in the used range in Excel | Syncfusion
+description: Code example to retrieve the first cell in the used range in an Excel worksheet using Syncfusion .NET Excel library (XlsIO).
+platform: document-processing
+control: XlsIO
+documentation: UG
+---
+
+# How to retrieve the first cell in the used range in Excel?
+
+The following code examples demonstrate retrieving the first cell in the used range of an Excel worksheet using C# (Cross-platform and Windows-specific) and VB.NET.
+
+{% tabs %}
+{% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/XlsIO-Examples/master/FAQ/First%20used%20cell%20in%20used%20range/.NET/FirstUsedCellInUsedRange/FirstUsedCellInUsedRange/Program.cs,180" %}
+using (ExcelEngine excelEngine = new ExcelEngine())
+{
+ IApplication application = excelEngine.Excel;
+ application.DefaultVersion = ExcelVersion.Xlsx;
+ IWorkbook workbook = application.Workbooks.Open(Path.GetFullPath(@"Data/Input.xlsx"));
+ IWorksheet worksheet = workbook.Worksheets[0];
+
+ //Get the used range of the worksheet
+ IRange usedRange = worksheet.UsedRange;
+
+ //Get the first cell from the used range
+ IRange firstCell = worksheet.Range[usedRange.Row, usedRange.Column];
+
+ //Get the address of the first cell
+ string firstCellAddress = firstCell.AddressLocal;
+
+ //Display the address of the first cell
+ Console.WriteLine("The address of the first used cell in used range is: " + firstCellAddress);
+
+ //Save the workbook
+ workbook.SaveAs(Path.GetFullPath(@"Output/Output.xlsx"));
+}
+{% endhighlight %}
+
+{% highlight c# tabtitle="C# [Windows-specific]" %}
+using (ExcelEngine excelEngine = new ExcelEngine())
+{
+ IApplication application = excelEngine.Excel;
+ application.DefaultVersion = ExcelVersion.Xlsx;
+ IWorkbook workbook = application.Workbooks.Open("Input.xlsx");
+ IWorksheet worksheet = workbook.Worksheets[0];
+
+ //Get the used range of the worksheet
+ IRange usedRange = worksheet.UsedRange;
+
+ //Get the first cell from the used range
+ IRange firstCell = worksheet.Range[usedRange.Row, usedRange.Column];
+
+ //Get the address of the first cell
+ string firstCellAddress = firstCell.AddressLocal;
+
+ //Display the address of the first cell
+ Console.WriteLine("The address of the first used cell in used range is: " + firstCellAddress);
+
+ //Save the workbook
+ workbook.SaveAs("Output.xlsx");
+}
+{% endhighlight %}
+
+{% highlight vb.net tabtitle="VB.NET [Windows-specific]" %}
+Using excelEngine As New ExcelEngine()
+ Dim application As IApplication = excelEngine.Excel
+ application.DefaultVersion = ExcelVersion.Xlsx
+ Dim workbook As IWorkbook = application.Workbooks.Open("Input.xlsx")
+ Dim worksheet As IWorksheet = workbook.Worksheets(0)
+
+ 'Get the used range of the worksheet
+ Dim usedRange As IRange = worksheet.UsedRange
+
+ 'Get the first cell from the used range
+ Dim firstCell As IRange = worksheet.Range(usedRange.Row, usedRange.Column)
+
+ 'Get the address of the first cell
+ Dim firstCellAddress As String = firstCell.AddressLocal
+
+ 'Display the address of the first cell
+ Console.WriteLine("The address of the first used cell in used range is: " & firstCellAddress)
+
+ 'Save the workbook
+ workbook.SaveAs("Output.xlsx")
+End Using
+{% endhighlight %}
+{% endtabs %}
+
+A complete working example in C# is present on this GitHub page.
\ No newline at end of file
diff --git a/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-retrieve-the-list-of-named-ranges-in-an-Excel-workbook.md b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-retrieve-the-list-of-named-ranges-in-an-Excel-workbook.md
new file mode 100644
index 000000000..8dfaf4c4f
--- /dev/null
+++ b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-retrieve-the-list-of-named-ranges-in-an-Excel-workbook.md
@@ -0,0 +1,83 @@
+---
+title: Retrieve the list of named ranges in an Excel workbook | Syncfusion
+description: Code example to retrieve the list of named ranges in an Excel workbook using Syncfusion .NET Excel library (XlsIO).
+platform: document-processing
+control: XlsIO
+documentation: UG
+---
+
+# How to retrieve the list of named ranges in an Excel workbook?
+
+The following code examples demonstrate retrieving the list of named ranges in an Excel workbook using C# (Cross-platform and Windows-specific) and VB.NET.
+
+{% tabs %}
+{% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/XlsIO-Examples/master/FAQ/Named%20Range/.NET/RetrieveNamedRanges/RetrieveNamedRanges/Program.cs,180" %}
+using (ExcelEngine excelEngine = new ExcelEngine())
+{
+ IApplication application = excelEngine.Excel;
+ application.DefaultVersion = ExcelVersion.Xlsx;
+ IWorkbook workbook = application.Workbooks.Open(Path.GetFullPath(@"Data/Input.xlsx"));
+ IWorksheet worksheet = workbook.Worksheets[0];
+
+ //Retrieving names defined in the workbook
+ IName[] names = new IName[workbook.Names.Count];
+ for (int i = 0; i < workbook.Names.Count; i++)
+ {
+ names[i] = workbook.Names[i];
+ Console.WriteLine(names[i].Name);
+ }
+
+ //Saving the workbook
+ workbook.SaveAs(Path.GetFullPath(@"Output/Output.xlsx"));
+}
+{% endhighlight %}
+
+{% highlight c# tabtitle="C# [Windows-specific]" %}
+using (ExcelEngine excelEngine = new ExcelEngine())
+{
+ IApplication application = excelEngine.Excel;
+ application.DefaultVersion = ExcelVersion.Xlsx;
+ IWorkbook workbook = application.Workbooks.Open("Input.xlsx");
+ IWorksheet worksheet = workbook.Worksheets[0];
+
+ //Retrieving names defined in the workbook
+ IName[] names = new IName[workbook.Names.Count];
+ for (int i = 0; i < workbook.Names.Count; i++)
+ {
+ names[i] = workbook.Names[i];
+ Console.WriteLine(names[i].Name);
+ }
+
+ //Saving the workbook
+ workbook.SaveAs("Output.xlsx");
+}
+{% endhighlight %}
+
+{% highlight vb.net tabtitle="VB.NET [Windows-specific]" %}
+Using excelEngine As New ExcelEngine()
+ ' Instantiate the Excel application object
+ Dim application As IApplication = excelEngine.Excel
+
+ ' Set the default application version
+ application.DefaultVersion = ExcelVersion.Xlsx
+
+ ' Load the existing Excel workbook into IWorkbook
+ Dim workbook As IWorkbook = application.Workbooks.Open("Input.xlsx")
+
+ ' Get the first worksheet in the workbook into IWorksheet
+ Dim worksheet As IWorksheet = workbook.Worksheets(0)
+
+ ' Retrieving names defined in the workbook
+ Dim names(workbook.Names.Count - 1) As IName
+ For i As Integer = 0 To workbook.Names.Count - 1
+ names(i) = workbook.Names(i)
+ Console.WriteLine(names(i).Name)
+ Next
+
+ ' Saving the workbook
+ workbook.SaveAs("Output.xlsx")
+End Using
+{% endhighlight %}
+{% endtabs %}
+
+A complete working example in C# is present on this GitHub page.
\ No newline at end of file
diff --git a/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-retrieve-the-name-of-the-chart-in-an-Excel-worksheet.md b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-retrieve-the-name-of-the-chart-in-an-Excel-worksheet.md
new file mode 100644
index 000000000..be4c112a9
--- /dev/null
+++ b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-retrieve-the-name-of-the-chart-in-an-Excel-worksheet.md
@@ -0,0 +1,76 @@
+---
+title: Retrieve the name of the chart in an Excel worksheet | Syncfusion
+description: Code example to retrieve the name of the chart in an Excel worksheet using Syncfusion .NET Excel library (XlsIO).
+platform: document-processing
+control: XlsIO
+documentation: UG
+---
+
+# How to retrieve the name of the chart in an Excel worksheet?
+
+The following code examples demonstrate retrieving the name of the chart in an Excel worksheet using C# (Cross-platform and Windows-specific) and VB.NET.
+
+{% tabs %}
+{% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/XlsIO-Examples/master/FAQ/Chart/.NET/ChartNameInWorksheet/ChartNameInWorksheet/Program.cs,180" %}
+using (ExcelEngine excelEngine = new ExcelEngine())
+{
+ IApplication application = excelEngine.Excel;
+ application.DefaultVersion = ExcelVersion.Xlsx;
+ IWorkbook workbook = application.Workbooks.Open(Path.GetFullPath(@"Data/Input.xlsx"));
+ IWorksheet worksheet = workbook.Worksheets[0];
+
+ //Get the chart name
+ string chartName = worksheet.Charts[0].Name;
+ //Display the chart name
+ Console.WriteLine("The name of the chart is: " + chartName);
+
+ //Saving the workbook
+ workbook.SaveAs(Path.GetFullPath(@"Output/Output.xlsx"));
+}
+{% endhighlight %}
+
+{% highlight c# tabtitle="C# [Windows-specific]" %}
+using (ExcelEngine excelEngine = new ExcelEngine())
+{
+ IApplication application = excelEngine.Excel;
+ application.DefaultVersion = ExcelVersion.Xlsx;
+ IWorkbook workbook = application.Workbooks.Open("Input.xlsx");
+ IWorksheet worksheet = workbook.Worksheets[0];
+
+ //Get the chart name
+ string chartName = worksheet.Charts[0].Name;
+ //Display the chart name
+ Console.WriteLine("The name of the chart is: " + chartName);
+
+ //Saving the workbook
+ workbook.SaveAs("Output.xlsx");
+}
+{% endhighlight %}
+
+{% highlight vb.net tabtitle="VB.NET [Windows-specific]" %}
+Using excelEngine As New ExcelEngine()
+ ' Access the IApplication instance
+ Dim application As IApplication = excelEngine.Excel
+
+ ' Set the default version
+ application.DefaultVersion = ExcelVersion.Xlsx
+
+ ' Open the input workbook
+ Dim workbook As IWorkbook = application.Workbooks.Open("InputTemplate.xlsx")
+
+ ' Get the first worksheet
+ Dim worksheet As IWorksheet = workbook.Worksheets(0)
+
+ ' Get the chart name
+ Dim chartName As String = worksheet.Charts(0).Name
+
+ ' Display the chart name
+ Console.WriteLine("The name of the chart is: " & chartName)
+
+ ' Save the workbook to output
+ workbook.SaveAs("Output.xlsx")
+End Using
+{% endhighlight %}
+{% endtabs %}
+
+A complete working example in C# is present on this GitHub page.
\ No newline at end of file
diff --git a/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-set-the-color-for-the-dynamic-series-in-sunburst-chart.md b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-set-the-color-for-the-dynamic-series-in-sunburst-chart.md
new file mode 100644
index 000000000..376e96c28
--- /dev/null
+++ b/Document-Processing/Excel/Excel-Library/NET/faqs/how-to-set-the-color-for-the-dynamic-series-in-sunburst-chart.md
@@ -0,0 +1,184 @@
+---
+title: Set Dynamic Series Colors in a Sunburst Chart | Syncfusion
+description: Learn how to apply custom colors to each data point in a Sunburst chart dynamically with the Syncfusion .NET Excel library (XlsIO) using C# and VB.NET.
+platform: document-processing
+control: XlsIO
+documentation: UG
+---
+
+# How to set colors for dynamic series in a Sunburst chart?
+
+The following code shows how to assign custom colors to each data point in a Sunburst chart with Syncfusion XlsIO.
+{% tabs %}
+{% highlight c# tabtitle="C# [Cross-platform]" %}
+{% endhighlight %}
+using (ExcelEngine excelEngine = new ExcelEngine())
+{
+ IApplication application = excelEngine.Excel;
+ application.DefaultVersion = ExcelVersion.Xlsx;
+ IWorkbook workbook = application.Workbooks.Open("../../../Data/Input.xlsx");
+ IWorksheet worksheet = workbook.Worksheets[0];
+
+ //Initialize chart
+ IChartShape chart = worksheet.Charts.Add();
+ chart.ChartType = ExcelChartType.SunBurst;
+
+ //Assign data
+ chart.DataRange = worksheet["A1:B13"];
+ chart.IsSeriesInRows = false;
+
+ //Apply chart elements
+ //Set Chart Title
+ chart.ChartTitle = "Transfer Summary";
+
+ //Set Data labels
+ IChartSerie series = chart.Series[0];
+ series.DataPoints.DefaultDataPoint.DataLabels.IsCategoryName = false;
+ series.DataPoints.DefaultDataPoint.DataLabels.IsValue = true;
+
+ Color[] series_color = new Color[12];
+ series_color[0] = Color.FromArgb(253, 182, 33);
+ series_color[1] = Color.FromArgb(18, 151, 243);
+ series_color[2] = Color.FromArgb(38, 7, 142);
+ series_color[3] = Color.FromArgb(5, 60, 122);
+ series_color[4] = Color.FromArgb(180, 70, 243);
+ series_color[5] = Color.FromArgb(53, 12, 133);
+ series_color[6] = Color.FromArgb(108, 11, 23);
+ series_color[7] = Color.FromArgb(200, 70, 112);
+ series_color[8] = Color.FromArgb(125, 200, 12);
+ series_color[9] = Color.FromArgb(10, 150, 43);
+ series_color[10] = Color.FromArgb(150, 82, 133);
+ series_color[11] = Color.FromArgb(98, 15, 103);
+
+ for (int i = 0; i < (series as ChartSerieImpl).PointNumber; i++)
+ {
+ series.DataPoints[i].DataFormat.AreaProperties.ForegroundColor = series_color[i];
+ }
+
+ //Set Legend
+ chart.HasLegend = true;
+
+ //Positioning the chart in the worksheet
+ chart.TopRow = 8;
+ chart.LeftColumn = 1;
+ chart.BottomRow = 23;
+ chart.RightColumn = 8;
+
+ //Saving the workbook
+ workbook.SaveAs("../../../Output/SunBurst.xlsx");
+}
+{% highlight c# tabtitle="C# [Windows-specific]" %}
+using (ExcelEngine excelEngine = new ExcelEngine())
+{
+ IApplication application = excelEngine.Excel;
+ application.DefaultVersion = ExcelVersion.Xlsx;
+ IWorkbook workbook = application.Workbooks.Open("../../Data/Input.xlsx");
+ IWorksheet worksheet = workbook.Worksheets[0];
+
+ //Initialize chart
+ IChartShape chart = worksheet.Charts.Add();
+ chart.ChartType = ExcelChartType.SunBurst;
+
+ //Assign data
+ chart.DataRange = worksheet["A1:B13"];
+ chart.IsSeriesInRows = false;
+
+ //Apply chart elements
+ //Set Chart Title
+ chart.ChartTitle = "Transfer Summary";
+
+ //Set Data labels
+ IChartSerie series = chart.Series[0];
+ series.DataPoints.DefaultDataPoint.DataLabels.IsCategoryName = false;
+ series.DataPoints.DefaultDataPoint.DataLabels.IsValue = true;
+
+ Color[] series_color = new Color[12];
+ series_color[0] = Color.FromArgb(253, 182, 33);
+ series_color[1] = Color.FromArgb(18, 151, 243);
+ series_color[2] = Color.FromArgb(38, 7, 142);
+ series_color[3] = Color.FromArgb(5, 60, 122);
+ series_color[4] = Color.FromArgb(180, 70, 243);
+ series_color[5] = Color.FromArgb(53, 12, 133);
+ series_color[6] = Color.FromArgb(108, 11, 23);
+ series_color[7] = Color.FromArgb(200, 70, 112);
+ series_color[8] = Color.FromArgb(125, 200, 12);
+ series_color[9] = Color.FromArgb(10, 150, 43);
+ series_color[10] = Color.FromArgb(150, 82, 133);
+ series_color[11] = Color.FromArgb(98, 15, 103);
+
+ for (int i = 0; i < (series as ChartSerieImpl).PointNumber; i++)
+ {
+ series.DataPoints[i].DataFormat.AreaProperties.ForegroundColor = series_color[i];
+ }
+
+ //Set Legend
+ chart.HasLegend = true;
+
+ //Positioning the chart in the worksheet
+ chart.TopRow = 8;
+ chart.LeftColumn = 1;
+ chart.BottomRow = 23;
+ chart.RightColumn = 8;
+
+ //Saving the workbook
+ workbook.SaveAs("../../Output/SunBurst.xlsx");
+}
+{% endhighlight %}
+
+{% highlight vb.net tabtitle="VB.NET [Windows-specific]" %}
+ Using excelEngine As New ExcelEngine()
+ Dim application As IApplication = excelEngine.Excel
+ application.DefaultVersion = ExcelVersion.Xlsx
+
+ Dim workbook As IWorkbook = application.Workbooks.Open("../../Data/Input.xlsx")
+ Dim worksheet As IWorksheet = workbook.Worksheets(0)
+
+ 'Initialize chart
+ Dim chart As IChartShape = worksheet.Charts.Add()
+ chart.ChartType = ExcelChartType.SunBurst
+
+ 'Assign data
+ chart.DataRange = worksheet("A1:B13")
+ chart.IsSeriesInRows = False
+
+ 'Apply chart elements
+ 'Set Chart Title
+ chart.ChartTitle = "Transfer Summary"
+
+ 'Set Data labels
+ Dim series As IChartSerie = chart.Series(0)
+ series.DataPoints.DefaultDataPoint.DataLabels.IsCategoryName = False
+ series.DataPoints.DefaultDataPoint.DataLabels.IsValue = True
+
+ Dim series_color(11) As Color
+ series_color(0) = Color.FromArgb(253, 182, 33)
+ series_color(1) = Color.FromArgb(18, 151, 243)
+ series_color(2) = Color.FromArgb(38, 7, 142)
+ series_color(3) = Color.FromArgb(5, 60, 122)
+ series_color(4) = Color.FromArgb(180, 70, 243)
+ series_color(5) = Color.FromArgb(53, 12, 133)
+ series_color(6) = Color.FromArgb(108, 11, 23)
+ series_color(7) = Color.FromArgb(200, 70, 112)
+ series_color(8) = Color.FromArgb(125, 200, 12)
+ series_color(9) = Color.FromArgb(10, 150, 43)
+ series_color(10) = Color.FromArgb(150, 82, 133)
+ series_color(11) = Color.FromArgb(98, 15, 103)
+
+ For i As Integer = 0 To CType(series, ChartSerieImpl).PointNumber - 1
+ series.DataPoints(i).DataFormat.AreaProperties.ForegroundColor = series_color(i)
+ Next
+
+ 'Set Legend
+ chart.HasLegend = True
+
+ 'Positioning the chart in the worksheet
+ chart.TopRow = 8
+ chart.LeftColumn = 1
+ chart.BottomRow = 23
+ chart.RightColumn = 8
+
+ 'Saving the workbook
+ workbook.SaveAs("../../Output/SunBurst.xlsx")
+ End Using
+{% endhighlight %}
+{% endtabs %}
diff --git a/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/comment.md b/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/comment.md
new file mode 100644
index 000000000..4264fc9aa
--- /dev/null
+++ b/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/comment.md
@@ -0,0 +1,187 @@
+---
+layout: post
+title: Comment in EJ2 ASP.NET Core Spreadsheet control | Syncfusion
+description: Learn here all about Comment feature in Syncfusion EJ2 ASP.NET Core Spreadsheet control of Syncfusion Essential JS 2 and more.
+platform: document-processing
+control: Comment
+documentation: ug
+---
+
+# Comment in EJ2 ASP.NET Core Spreadsheet control
+The **Comment** feature allows you to add feedback to cells without changing their values, enabling contextual discussions through threaded **replies**. Unlike [Notes](./notes), Comment include advanced review tools such as **resolve** and **reopen** to track status, plus an optional **Comments Review Pane** for browsing and managing threads.
+
+Cells with comment display a small comment indicator; hover to preview the comment editor. This provides a clear, collaborative workflow while keeping data intact.
+
+
+
+## Author identity
+The Syncfusion Spreadsheet does not automatically track user identity. To tag new comments and replies with an author name, set the `author` property when initializing the Spreadsheet.
+
+```js
+
+
+```
+>If the author property is not set, "Guest User" will be displayed as the author for comment and replies by default.
+
+## Adding a comment
+You can add a **comment** to a cell in several ways:
+* **Context menu**: Right-click the target cell and select **"New Comment"**.
+* **Ribbon**: Go to **Review > Comment > New Comment**.
+* **Keyboard shortcut**: Press Ctrl + Shift + F2 to open the comment editor for the active cell.
+* **Programmatically**:
+ * Use the `updateCell` method with the comment model to add a comment to a specific cell.
+ * Bind comments via code-behind during initial load by associating the comment model with the cell model.
+
+The image below shows that once a comment is posted, the cell displays an indicator, and the comment can be previewed on hover.
+
+
+
+## Adding a reply
+You can add one or more replies to an existing comment to provide additional details or answers:
+* **Context menu**: Right-click the cell that already has a comment, select **Comment > New Reply**, enter your reply, and click **Post**.
+* **Ribbon**: Go to **Review > Comment > New Comment** on a cell that contains a comment. This opens the comment editor in **reply mode**.
+* **Comment editor**: Open the comment editor by hovering over the comment indicator, type your reply, and click **Post**.
+* **Keyboard shortcut**: Press Ctrl + Shift + F2 on a cell that contains a comment to open the comment editor in reply mode.
+
+After posting, the replies appear under the first comment in the comment editor.
+
+
+
+## Editing a comment
+You can edit the content of a comment or its replies directly within the comment editor.
+
+* **Edit first comment**: In the comment editor. Click the **"⋯" (More thread actions)** menu in the header, select the **Edit Comment**, modify the text and click **Post**.
+* **Edit a reply comment**: In the comment editor, hover over the specific reply, click the **"⋯" (More actions)**, select the **Edit Comment**, modify the text and click **Post**.
+
+
+
+## Resolve and Reopen
+The **Resolve thread** option marks a comment thread as completed when the discussion or issue is addressed. When a thread is resolved, its background color changes to indicate the resolved state, and the reply input box and reply menu actions are hidden. Use **Reopen** to restore the comment if further discussion is needed.
+
+### Resolve a comment
+* In the comment editor, click the **"⋯" (More thread actions)** menu in the header and select **Resolve Thread**.
+
+### Reopen a comment
+* In the comment editor, click the **Reopen** button in the header to make the thread active again.
+
+
+
+You can also use the `isResolved` property in the comment model when initializing or updating comments programmatically.
+
+**Example: Using `isResolved` property in the comment model with the `updateCell` method**
+
+```ts
+// Update a cell with a comment using the updateCell method
+ spreadsheet.updateCell({
+ comment: {
+ author: 'Chistoper', text: 'Are you completed the report',
+ createdTime: 'January 03, 2026 at 5:00 PM',
+ // Set to true to mark the thread as resolved; false keeps it active
+ isResolved: false,
+ replies: [{ author: 'John', text: 'Yes, completed',
+ createdTime: 'January 03, 2026 at 7:00 PM' }]
+ }
+ }, 'Sheet1!D5');
+
+```
+
+## Deleting a comment or reply
+You can delete either a specific reply or an entire comment thread (including all replies) using the following options:
+
+### Deleting a comment thread
+* **Context menu**: Right-click the cell that contains the comment and select **Comment > Delete Comment**.
+* **Ribbon**: Go to **Review > Comment > Delete Comment** on a cell that contains the comment.
+* **Comment editor**: In the comment editor, click the **"⋯" (More thread actions)** menu in the header and select **Delete Thread** for an active comment or use the **Delete Thread** button in header for a resolved comment.
+
+Deleting a thread removes the comment and all its replies from the cell.
+
+
+
+### Delete a reply
+In the comment editor, hover over the reply and click the **"⋯" (More actions)** menu then select **Delete Comment**.
+
+
+
+## Next and Previous Comment
+The **Review > Comment > Next Comment and Previous Comment** options in the ribbon allow you to quickly navigate between cells that contain comments:
+
+* **Next Comment**: Moves to the next cell with a comment.
+* **Previous Comment**: Moves to the previous cell with a comment.
+
+Navigation starts within the active sheet. When all comments in the active sheet have been visited (end or start reached), the navigation automatically continues to the next or previous sheet that contains comments. This ensures you can review all comments across the workbook without manually switching sheets.
+
+
+
+## Comments review pane
+The **"Comments" review pane** provides a centralized view of all comments in the active sheet, making it easier to manage discussions without switching between individual cells. It offers filtering, inline actions, and navigation, ensuring an efficient review workflow across the workbook.
+
+You can show or hide the "Comments" review pane using:
+
+* **Ribbon**: Go to **Review > Comment > Show Comments**.
+* **Property**: Set the `showCommentsPane` property to true when initializing the Spreadsheet. By default, this property is **false**.
+
+
+
+### Features of the comments review pane
+The "Comments" review pane is rendered within the spreadsheet interface to provide a dedicated space for managing comments efficiently. It acts as a centralized hub where you can view all comment threads, perform actions, and keep discussions organized without navigating cell by cell.
+
+The "Comments" review pane allows you to:
+
+* Add new comment using the **New** button.
+* Filter comments by **All**, **Active**, or **Resolved** to view specific comment threads.
+* Navigate between comments and synchronize selection with the corresponding cells.
+* Perform actions such as:
+ * **Reply** – Add replies directly from the review pane.
+ * **Edit** – Modify the text of a comment or reply.
+ * **Delete** – Remove a reply or an entire thread.
+ * **Resolve/Reopen** – Change the status of a comment.
+
+When the review pane is open, all actions performed in the review pane or in the cell’s comment editor are synchronized:
+
+* Selecting a comment in the review pane highlights the corresponding cell in the sheet.
+* Selecting a cell with a comment focuses the respective comment thread in the review pane.
+* Actions such as **Reply**, **Edit**, **Delete**, and **Resolve/Reopen** update both the pane and the cell comment editor instantly, ensuring consistency across the UI.
+* The review pane dynamically updates when comments are added, deleted, or resolved, so you always see the latest state without refreshing.
+
+## Saving a Workbook with Comments
+You can save spreadsheet data along with **comments** using **File > Save As > Microsoft Excel(.xlsx)**.
+- **MS Excel (.xlsx)** - Preserves all **threaded comments** (modern comments).
+
+> Comments are **not included** when exporting to **.xls**, **.csv**, and **.pdf**.
+
+### Why comments are not saved in `.xls`
+The **.xls** format is based on the older Excel binary structure (BIFF8), which does not support modern features like **threaded comments**.
+Threaded comments introduced in newer Excel versions require the **Open XML** structure used by `.xlsx`.
+
+> To retain threaded comments, always save the workbook in **.xlsx** format.
+
+## Bind Comments via code-behind
+You can bind **comment thread** to cells at initial load by providing a `comment` object in the cell model. Each cell supports **per comment thread**, which can include:
+- **Comment**: `author`, `text`, `createdTime`, `isResolved`
+- **Replies**: A collection of replies. Each reply is an object containing its `author`, `text`, and `createdTime` (no nested replies-of-replies).
+
+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 cshtml tabtitle="CSHTML" %}
+{% include code-snippet/spreadsheet/asp-net-core/comment-cs1/tagHelper %}
+{% endhighlight %}
+{% highlight c# tabtitle="CommentController.cs" %}
+{% include code-snippet/spreadsheet/asp-net-core/comment-cs1/commentController.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+### Important Notes
+* **One thread per cell**: Attach a single `comment` object per cell. New remarks should be added as replies inside the existing thread.
+* **Author Identity**: The author name for each comment and reply is static once set. When exporting, the author information is preserved for all comments, even if multiple authors exist in the workbook.
+* **New comment**: When the "Comments" review pane is enabled, adding a new comment renders the drafted comment editor directly in the "Comments" review pane.
+
+## Limitations
+* **Un-posted comments are not stored**: If you type in the comment editor and close it without clicking **Post**, the entered text is not saved and will not appear when you reopen the editor. Only posted content is persisted in the comment model.
+* **Comments and Notes cannot coexist**: When a cell contains comment, notes cannot be added. Similarly, if a cell already has a notes, comment cannot be added.
+* **Comments in Print**: Comments are not included in print output.
+* **Non-collaborative**: Real-time multi-user synchronization is not supported. However, when exporting and re-importing the workbook, the author information for each comment and reply is preserved.
+
+## See Also
+* [Notes](./notes)
+* [Hyperlink](./link)
\ No newline at end of file
diff --git a/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/images/spreadsheet_adding_a_comment.gif b/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/images/spreadsheet_adding_a_comment.gif
new file mode 100644
index 000000000..863da7a34
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/images/spreadsheet_adding_a_comment.gif differ
diff --git a/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/images/spreadsheet_comment.png b/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/images/spreadsheet_comment.png
new file mode 100644
index 000000000..b002a6db3
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/images/spreadsheet_comment.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/images/spreadsheet_comment_reply.png b/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/images/spreadsheet_comment_reply.png
new file mode 100644
index 000000000..548694016
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/images/spreadsheet_comment_reply.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/images/spreadsheet_delete-reply_comment.png b/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/images/spreadsheet_delete-reply_comment.png
new file mode 100644
index 000000000..f2385a4f9
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/images/spreadsheet_delete-reply_comment.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/images/spreadsheet_delete_comment.png b/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/images/spreadsheet_delete_comment.png
new file mode 100644
index 000000000..0c0ff11f1
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/images/spreadsheet_delete_comment.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/images/spreadsheet_edit_comment.png b/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/images/spreadsheet_edit_comment.png
new file mode 100644
index 000000000..2874b11cb
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/images/spreadsheet_edit_comment.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/images/spreadsheet_next_previous_comment.png b/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/images/spreadsheet_next_previous_comment.png
new file mode 100644
index 000000000..ece81c396
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/images/spreadsheet_next_previous_comment.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/images/spreadsheet_resolve_reopen.gif b/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/images/spreadsheet_resolve_reopen.gif
new file mode 100644
index 000000000..1307efbbb
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/images/spreadsheet_resolve_reopen.gif differ
diff --git a/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/images/spreadsheet_show_comments.gif b/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/images/spreadsheet_show_comments.gif
new file mode 100644
index 000000000..d033c0c9a
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/images/spreadsheet_show_comments.gif differ
diff --git a/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/notes.md b/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/notes.md
index a71451518..126d4fe12 100644
--- a/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/notes.md
+++ b/Document-Processing/Excel/Spreadsheet/ASP-NET-CORE/notes.md
@@ -10,7 +10,7 @@ documentation: ug
# Notes in ASP.NET Core Spreadsheet control
-The **Notes** feature is used to insert comments, provide feedback, suggest changes, or leave remarks on specific cells while reviewing documents in the Spreadsheet. You can enable or disable the notes functionality using the [`enableNotes`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.Spreadsheet.Spreadsheet.html#Syncfusion_EJ2_Spreadsheet_Spreadsheet_EnableNotes) property, which defaults to **true**.
+The **Notes** feature is used to insert comments, provide feedback, suggest changes, or leave remarks on specific cells while reviewing documents in the Spreadsheet. You can enable or disable the notes functionality using the [enableNotes](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.Spreadsheet.Spreadsheet.html#Syncfusion_EJ2_Spreadsheet_Spreadsheet_EnableNotes) property, which defaults to **true**.
When opening the Excel document with notes in the Spreadsheet, they will be displayed in the control. The cells containing notes will be indicated with a red colored triangle at the top-right corner. Hovering the mouse over these cells will display the content of the notes.
@@ -31,29 +31,94 @@ In the below example, you can add, edit, save, and delete notes.
In the active worksheet, you can add a note in the following ways:
-* To add a note, right-click the cell to open the context menu and choose the **"Add Note"** option from the context menu. This will open a dialog box to add the content as a note.
-* You can also use the `Shift` + `F2` keyboard shortcut to add a note to the desired cell. A dialog box will be opened to add the content as a note.
-* After entering the content in the dialog box, you can either click on other cells or press the `Esc` button on the keyboard to automatically save the note in the cell and close the dialog box.
+* **Context Menu**: Right-click the desired cell and select **Add Note**.
+* **Ribbon**: Select the cell, navigate to the **Review** tab, click the **Notes** dropdown, and select **Add Note**.
+* **Keyboard Shortcut**: Select the cell and press Shift + F2.
+* **Programmatically**:
+ * Use the `updateCell` method with the note model to add a note to a specific cell.
+ * Bind notes via code-behind during initial load by associating the note model with the cell model.
+
+A dialog box will open where you can enter the note content. After entering the content, you can either click on other cells or press the Esc button to automatically save the note and close the dialog box.

## Editing a note
-In the active worksheet, you can modify the content of existing notes in the document.
+In the active worksheet, you can modify the content of existing notes in the document:
+
+* **Context Menu**: Right-click the cell containing the note and select **Edit Note**.
+* **Ribbon**: Select the cell containing the note, navigate to the **Review** tab, click the **Notes** dropdown, and select **Edit Note**.
+* **Keyboard Shortcut**: Select the cell containing the note and press Shift + F2.
-* To edit a note, right-click on the desired cell containing the note, which will open the context menu.
-* Select the **"Edit Note"** option from the context menu.
-* You can also use the `Shift` + `F2` keyboard shortcut to edit the note of the desired cell. A dialog box will be opened to edit the note.
-* After editing the content in the dialog box, you can either click on other cells or press the `Esc` button on the keyboard to automatically save the note in the cell and close the dialog box.
+The note editor dialog box will open with the existing content. After editing the content, you can either click on other cells or press the Esc button to automatically save the changes and close the dialog box.

## Deleting a note
-In the active worksheet, right-click on the desired cell containing the note that you want to remove, which opens the context menu. In the context menu, select the **"Delete Note"** option to delete the note.
+You can remove notes from cells using the following ways:
+
+* **Context Menu**: Right-click the cell containing the note and select **Delete Note**.
+* **Ribbon**: Select the cell containing the note, navigate to the **Review** tab, click the **Notes** dropdown, and select **Delete Note**.
+
+The note will be removed from the cell, and the red triangle indicator will be removed.

+## Navigating between notes
+
+The Syncfusion Spreadsheet provides intuitive navigation to quickly move between cells containing notes in your worksheet. These options are accessible through the **Notes** dropdown in the **Review** tab.
+
+### Previous Note
+
+To navigate to the previous note:
+
+* In the **Review** tab, open the **Notes** dropdown and select **Previous Note**.
+* The Spreadsheet will automatically select the previous note in the current worksheet, searching leftward and then upward.
+* If no prior note exists in the sheet, the search continues to the previous worksheet in order.
+* If the workbook contains no notes, the selection remains on the current cell.
+
+### Next Note
+
+To navigate to the next note:
+
+* In the **Review** tab, open the **Notes** dropdown and select **Next Note**.
+* The Spreadsheet will automatically select the next note in the current worksheet, searching rightward and then downward.
+* If no subsequent note exists in the sheet, the search continues to the next worksheet in order.
+* If the workbook contains no notes, the selection remains on the current cell.
+
+This functionality streamlines the process of reviewing notes across worksheets, ensuring efficient traversal and discovery.
+
+## Show/Hide Note
+
+The **Show/Hide Note** option allows you to toggle the visibility of individual notes as sticky notes within the worksheet. When enabled, the note appears as a persistent floating text box, making it convenient to reference key information without hovering over the cell.
+
+To toggle the visibility of a note:
+
+* **Context Menu**: Right-click the cell containing the note and select **Show/Hide Note**.
+* **Ribbon**: Select the cell, go to the **Review** tab, click the **Notes** dropdown, and choose **Show/Hide Note**.
+
+**Behavior:**
+
+* **Default State (Hidden)**: Notes are hidden by default and only appear when hovering over the cell, which displays a red triangle indicator.
+* **Sticky State (Visible)**: Toggling Show/Hide Note on a hidden note makes it visible as a sticky note, which remains on display even when navigating to other cells or selections.
+* **Toggle Functionality**: Selecting Show/Hide Note again on a visible note hides it, reverting to the default state.
+* **Independent Control**: Each note can be toggled individually, allowing you to display only the most relevant notes for your current task.
+
+## Show All Notes
+
+The **Show All Notes** option enables you to display all notes in the current worksheet simultaneously as sticky notes, simplifying the review of multiple comments at a glance.
+
+To activate:
+
+* Navigate to the **Review** tab, click the **Notes** dropdown, and select **Show All Notes**.
+
+All notes in the worksheet will appear as floating text boxes near their respective cells.
+
+> **Note**: After using Show All Notes, you can hide individual notes selectively via the **Show/Hide Note** option. Additionally, any new notes added to the worksheet will automatically appear as visible sticky notes when Show All Notes is active.
+
+This functionality enhances workflow efficiency by providing flexible control over note visibility, whether for individual focus or comprehensive review.
+
## Saving the document with notes
The Spreadsheet data, including notes, can be saved and exported as an Excel document by selecting **File > Save As** in the ribbon menu. Exporting worksheets with notes is supported in Excel file formats such as Microsoft Excel (.xlsx) and Microsoft Excel 97-2003 (.xls).
@@ -62,7 +127,7 @@ The Spreadsheet data, including notes, can be saved and exported as an Excel doc
## Disabling notes
-To disable the note functionality, you need to set the [`enableNotes`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.Spreadsheet.Spreadsheet.html#Syncfusion_EJ2_Spreadsheet_Spreadsheet_EnableNotes) property to **false**. After disabling, the notes in the document will not be shown when opened in the Spreadsheet. The **"Add Note"** option will not be shown in the context menu. The keyboard shortcuts for the note functionality will not work.
+To disable the note functionality, you need to set the [enableNotes](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.Spreadsheet.Spreadsheet.html#Syncfusion_EJ2_Spreadsheet_Spreadsheet_EnableNotes) property to **false**. After disabling, the notes in the document will not be shown when opened in the Spreadsheet. The **"Add Note"** option will not be shown in the context menu. The keyboard shortcuts for the note functionality will not work.

@@ -81,6 +146,8 @@ In the below example, the note functionality is disabled in the Spreadsheet.
The notes can be added initially when the Spreadsheet loads using cell data binding. You need to use the `notes` property in the cell settings to add notes to the Spreadsheet.
+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 cshtml tabtitle="CSHTML" %}
{% include code-snippet/spreadsheet/asp-net-core/note-cs3/tagHelper %}
diff --git a/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/comment.md b/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/comment.md
new file mode 100644
index 000000000..546475e68
--- /dev/null
+++ b/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/comment.md
@@ -0,0 +1,189 @@
+---
+layout: post
+title: Comment in EJ2 ASP.NET MVC Spreadsheet control | Syncfusion
+description: Learn here all about Comment feature in Syncfusion EJ2 ASP.NET MVC Spreadsheet control of Syncfusion Essential JS 2 and more.
+platform: document-processing
+control: Comment
+documentation: ug
+---
+
+# Comment in EJ2 ASP.NET MVC Spreadsheet control
+The **Comment** feature allows you to add feedback to cells without changing their values, enabling contextual discussions through threaded **replies**. Unlike [Notes](./notes), Comment include advanced review tools such as **resolve** and **reopen** to track status, plus an optional **Comments Review Pane** for browsing and managing threads.
+
+Cells with comment display a small comment indicator; hover to preview the comment editor. This provides a clear, collaborative workflow while keeping data intact.
+
+
+
+## Author identity
+The Syncfusion Spreadsheet does not automatically track user identity. To tag new comments and replies with an author name, set the `author` property when initializing the Spreadsheet.
+
+```js
+ @(Html.EJ2().Spreadsheet("spreadsheet")
+ .Author("Place the Author Name Here")
+ .Render()
+ )
+```
+>If the author property is not set, "Guest User" will be displayed as the author for comment and replies by default.
+
+## Adding a comment
+You can add a **comment** to a cell in several ways:
+* **Context menu**: Right-click the target cell and select **"New Comment"**.
+* **Ribbon**: Go to **Review > Comment > New Comment**.
+* **Keyboard shortcut**: Press Ctrl + Shift + F2 to open the comment editor for the active cell.
+* **Programmatically**:
+ * Use the `updateCell` method with the comment model to add a comment to a specific cell.
+ * Bind comments via code-behind during initial load by associating the comment model with the cell model.
+
+The image below shows that once a comment is posted, the cell displays an indicator, and the comment can be previewed on hover.
+
+
+
+## Adding a reply
+You can add one or more replies to an existing comment to provide additional details or answers:
+* **Context menu**: Right-click the cell that already has a comment, select **Comment > New Reply**, enter your reply, and click **Post**.
+* **Ribbon**: Go to **Review > Comment > New Comment** on a cell that contains a comment. This opens the comment editor in **reply mode**.
+* **Comment editor**: Open the comment editor by hovering over the comment indicator, type your reply, and click **Post**.
+* **Keyboard shortcut**: Press Ctrl + Shift + F2 on a cell that contains a comment to open the comment editor in reply mode.
+
+After posting, the replies appear under the first comment in the comment editor.
+
+
+
+## Editing a comment
+You can edit the content of a comment or its replies directly within the comment editor.
+
+* **Edit first comment**: In the comment editor. Click the **"⋯" (More thread actions)** menu in the header, select the **Edit Comment**, modify the text and click **Post**.
+* **Edit a reply comment**: In the comment editor, hover over the specific reply, click the **"⋯" (More actions)**, select the **Edit Comment**, modify the text and click **Post**.
+
+
+
+## Resolve and Reopen
+The **Resolve thread** option marks a comment thread as completed when the discussion or issue is addressed. When a thread is resolved, its background color changes to indicate the resolved state, and the reply input box and reply menu actions are hidden. Use **Reopen** to restore the comment if further discussion is needed.
+
+### Resolve a comment
+* In the comment editor, click the **"⋯" (More thread actions)** menu in the header and select **Resolve Thread**.
+
+### Reopen a comment
+* In the comment editor, click the **Reopen** button in the header to make the thread active again.
+
+
+
+You can also use the `isResolved` property in the comment model when initializing or updating comments programmatically.
+
+**Example: Using `isResolved` property in the comment model with the `updateCell` method**
+
+```ts
+// Update a cell with a comment using the updateCell method
+ spreadsheet.updateCell({
+ comment: {
+ author: 'Chistoper', text: 'Are you completed the report',
+ createdTime: 'January 03, 2026 at 5:00 PM',
+ // Set to true to mark the thread as resolved; false keeps it active
+ isResolved: false,
+ replies: [{ author: 'John', text: 'Yes, completed',
+ createdTime: 'January 03, 2026 at 7:00 PM' }]
+ }
+ }, 'Sheet1!D5');
+
+```
+
+## Deleting a comment or reply
+You can delete either a specific reply or an entire comment thread (including all replies) using the following options:
+
+### Deleting a comment thread
+* **Context menu**: Right-click the cell that contains the comment and select **Comment > Delete Comment**.
+* **Ribbon**: Go to **Review > Comment > Delete Comment** on a cell that contains the comment.
+* **Comment editor**: In the comment editor, click the **"⋯" (More thread actions)** menu in the header and select **Delete Thread** for an active comment or use the **Delete Thread** button in header for a resolved comment.
+
+Deleting a thread removes the comment and all its replies from the cell.
+
+
+
+### Delete a reply
+In the comment editor, hover over the reply and click the **"⋯" (More actions)** menu then select **Delete Comment**.
+
+
+
+## Next and Previous Comment
+The **Review > Comment > Next Comment and Previous Comment** options in the ribbon allow you to quickly navigate between cells that contain comments:
+
+* **Next Comment**: Moves to the next cell with a comment.
+* **Previous Comment**: Moves to the previous cell with a comment.
+
+Navigation starts within the active sheet. When all comments in the active sheet have been visited (end or start reached), the navigation automatically continues to the next or previous sheet that contains comments. This ensures you can review all comments across the workbook without manually switching sheets.
+
+
+
+## Comments review pane
+The **"Comments" review pane** provides a centralized view of all comments in the active sheet, making it easier to manage discussions without switching between individual cells. It offers filtering, inline actions, and navigation, ensuring an efficient review workflow across the workbook.
+
+You can show or hide the "Comments" review pane using:
+
+* **Ribbon**: Go to **Review > Comment > Show Comments**.
+* **Property**: Set the `showCommentsPane` property to true when initializing the Spreadsheet. By default, this property is **false**.
+
+
+
+### Features of the comments review pane
+The "Comments" review pane is rendered within the spreadsheet interface to provide a dedicated space for managing comments efficiently. It acts as a centralized hub where you can view all comment threads, perform actions, and keep discussions organized without navigating cell by cell.
+
+The "Comments" review pane allows you to:
+
+* Add new comment using the **New** button.
+* Filter comments by **All**, **Active**, or **Resolved** to view specific comment threads.
+* Navigate between comments and synchronize selection with the corresponding cells.
+* Perform actions such as:
+ * **Reply** – Add replies directly from the review pane.
+ * **Edit** – Modify the text of a comment or reply.
+ * **Delete** – Remove a reply or an entire thread.
+ * **Resolve/Reopen** – Change the status of a comment.
+
+When the review pane is open, all actions performed in the review pane or in the cell’s comment editor are synchronized:
+
+* Selecting a comment in the review pane highlights the corresponding cell in the sheet.
+* Selecting a cell with a comment focuses the respective comment thread in the review pane.
+* Actions such as **Reply**, **Edit**, **Delete**, and **Resolve/Reopen** update both the pane and the cell comment editor instantly, ensuring consistency across the UI.
+* The review pane dynamically updates when comments are added, deleted, or resolved, so you always see the latest state without refreshing.
+
+## Saving a Workbook with Comments
+You can save spreadsheet data along with **comments** using **File > Save As > Microsoft Excel(.xlsx)**.
+- **MS Excel (.xlsx)** - Preserves all **threaded comments** (modern comments).
+
+> Comments are **not included** when exporting to **.xls**, **.csv**, and **.pdf**.
+
+### Why comments are not saved in `.xls`
+The **.xls** format is based on the older Excel binary structure (BIFF8), which does not support modern features like **threaded comments**.
+Threaded comments introduced in newer Excel versions require the **Open XML** structure used by `.xlsx`.
+
+> To retain threaded comments, always save the workbook in **.xlsx** format.
+
+## Bind Comments via code-behind
+You can bind **comment thread** to cells at initial load by providing a `comment` object in the cell model. Each cell supports **per comment thread**, which can include:
+- **Comment**: `author`, `text`, `createdTime`, `isResolved`
+- **Replies**: A collection of replies. Each reply is an object containing its `author`, `text`, and `createdTime` (no nested replies-of-replies).
+
+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 razor tabtitle="CSHTML" %}
+{% include code-snippet/spreadsheet/asp-net-mvc/comment-cs1/razor %}
+{% endhighlight %}
+{% highlight c# tabtitle="CommentController.cs" %}
+{% include code-snippet/spreadsheet/asp-net-mvc/comment-cs1/commentController.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+### Important Notes
+* **One thread per cell**: Attach a single `comment` object per cell. New remarks should be added as replies inside the existing thread.
+* **Author Identity**: The author name for each comment and reply is static once set. When exporting, the author information is preserved for all comments, even if multiple authors exist in the workbook.
+* **New comment**: When the "Comments" review pane is enabled, adding a new comment renders the drafted comment editor directly in the "Comments" review pane.
+
+## Limitations
+* **Un-posted comments are not stored**: If you type in the comment editor and close it without clicking **Post**, the entered text is not saved and will not appear when you reopen the editor. Only posted content is persisted in the comment model.
+* **Comments and Notes cannot coexist**: When a cell contains comment, notes cannot be added. Similarly, if a cell already has a notes, comment cannot be added.
+* **Comments in Print**: Comments are not included in print output.
+* **Non-collaborative**: Real-time multi-user synchronization is not supported. However, when exporting and re-importing the workbook, the author information for each comment and reply is preserved.
+
+## See Also
+* [Notes](./notes)
+* [Hyperlink](./link)
\ No newline at end of file
diff --git a/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/images/spreadsheet_adding_a_comment.gif b/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/images/spreadsheet_adding_a_comment.gif
new file mode 100644
index 000000000..863da7a34
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/images/spreadsheet_adding_a_comment.gif differ
diff --git a/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/images/spreadsheet_comment.png b/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/images/spreadsheet_comment.png
new file mode 100644
index 000000000..b002a6db3
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/images/spreadsheet_comment.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/images/spreadsheet_comment_reply.png b/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/images/spreadsheet_comment_reply.png
new file mode 100644
index 000000000..548694016
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/images/spreadsheet_comment_reply.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/images/spreadsheet_delete-reply_comment.png b/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/images/spreadsheet_delete-reply_comment.png
new file mode 100644
index 000000000..f2385a4f9
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/images/spreadsheet_delete-reply_comment.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/images/spreadsheet_delete_comment.png b/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/images/spreadsheet_delete_comment.png
new file mode 100644
index 000000000..0c0ff11f1
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/images/spreadsheet_delete_comment.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/images/spreadsheet_edit_comment.png b/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/images/spreadsheet_edit_comment.png
new file mode 100644
index 000000000..2874b11cb
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/images/spreadsheet_edit_comment.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/images/spreadsheet_next_previous_comment.png b/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/images/spreadsheet_next_previous_comment.png
new file mode 100644
index 000000000..ece81c396
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/images/spreadsheet_next_previous_comment.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/images/spreadsheet_resolve_reopen.gif b/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/images/spreadsheet_resolve_reopen.gif
new file mode 100644
index 000000000..1307efbbb
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/images/spreadsheet_resolve_reopen.gif differ
diff --git a/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/images/spreadsheet_show_comments.gif b/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/images/spreadsheet_show_comments.gif
new file mode 100644
index 000000000..d033c0c9a
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/images/spreadsheet_show_comments.gif differ
diff --git a/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/notes.md b/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/notes.md
index ecaeea236..878eb042d 100644
--- a/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/notes.md
+++ b/Document-Processing/Excel/Spreadsheet/ASP-NET-MVC/notes.md
@@ -10,7 +10,7 @@ documentation: ug
# Notes in ASP.NET MVC Spreadsheet Control
-The **Notes** feature is used to insert comments, provide feedback, suggest changes, or leave remarks on specific cells while reviewing documents in the Spreadsheet. You can enable or disable the notes functionality using the [`enableNotes`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.Spreadsheet.Spreadsheet.html#Syncfusion_EJ2_Spreadsheet_Spreadsheet_EnableNotes) property, which defaults to **true**.
+The **Notes** feature is used to insert comments, provide feedback, suggest changes, or leave remarks on specific cells while reviewing documents in the Spreadsheet. You can enable or disable the notes functionality using the [enableNotes](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.Spreadsheet.Spreadsheet.html#Syncfusion_EJ2_Spreadsheet_Spreadsheet_EnableNotes) property, which defaults to **true**.
When opening the Excel document with notes in the Spreadsheet, they will be displayed in the control. The cells containing notes will be indicated with a red colored triangle at the top-right corner. Hovering the mouse over these cells will display the content of the notes.
@@ -31,38 +31,103 @@ In the below example, you can add, edit, save, and delete notes.
In the active worksheet, you can add a note in the following ways:
-* To add a note, right-click the cell to open the context menu and choose the **"Add Note"** option from the context menu. This will open a dialog box to add the content as a note.
-* You can also use the `Shift` + `F2` keyboard shortcut to add a note to the desired cell. A dialog box will be opened to add the content as a note.
-* After entering the content in the dialog box, you can either click on other cells or press the `Esc` button on the keyboard to automatically save the note in the cell and close the dialog box.
+* **Context Menu**: Right-click the desired cell and select **Add Note**.
+* **Ribbon**: Select the cell, navigate to the **Review** tab, click the **Notes** dropdown, and select **Add Note**.
+* **Keyboard Shortcut**: Select the cell and press Shift + F2.
+* **Programmatically**:
+ * Use the `updateCell` method with the note model to add a note to a specific cell.
+ * Bind notes via code-behind during initial load by associating the note model with the cell model.
+
+A dialog box will open where you can enter the note content. After entering the content, you can either click on other cells or press the Esc button to automatically save the note and close the dialog box.

## Editing a note
-In the active worksheet, you can modify the content of existing notes in the document.
+In the active worksheet, you can modify the content of existing notes in the document:
+
+* **Context Menu**: Right-click the cell containing the note and select **Edit Note**.
+* **Ribbon**: Select the cell containing the note, navigate to the **Review** tab, click the **Notes** dropdown, and select **Edit Note**.
+* **Keyboard Shortcut**: Select the cell containing the note and press Shift + F2.
-* To edit a note, right-click on the desired cell containing the note, which will open the context menu.
-* Select the **"Edit Note"** option from the context menu.
-* You can also use the `Shift` + `F2` keyboard shortcut to edit the note of the desired cell. A dialog box will be opened to edit the note.
-* After editing the content in the dialog box, you can either click on other cells or press the `Esc` button on the keyboard to automatically save the note in the cell and close the dialog box.
+The note editor dialog box will open with the existing content. After editing the content, you can either click on other cells or press the Esc button to automatically save the changes and close the dialog box.

## Deleting a note
-In the active worksheet, right-click on the desired cell containing the note that you want to remove, which opens the context menu. In the context menu, select the **"Delete Note"** option to delete the note.
+You can remove notes from cells using the following ways:
+
+* **Context Menu**: Right-click the cell containing the note and select **Delete Note**.
+* **Ribbon**: Select the cell containing the note, navigate to the **Review** tab, click the **Notes** dropdown, and select **Delete Note**.
+
+The note will be removed from the cell, and the red triangle indicator will be removed.

+## Navigating between notes
+
+The Syncfusion Spreadsheet provides intuitive navigation to quickly move between cells containing notes in your worksheet. These options are accessible through the **Notes** dropdown in the **Review** tab.
+
+### Previous Note
+
+To navigate to the previous note:
+
+* In the **Review** tab, open the **Notes** dropdown and select **Previous Note**.
+* The Spreadsheet will automatically select the previous note in the current worksheet, searching leftward and then upward.
+* If no prior note exists in the sheet, the search continues to the previous worksheet in order.
+* If the workbook contains no notes, the selection remains on the current cell.
+
+### Next Note
+
+To navigate to the next note:
+
+* In the **Review** tab, open the **Notes** dropdown and select **Next Note**.
+* The Spreadsheet will automatically select the next note in the current worksheet, searching rightward and then downward.
+* If no subsequent note exists in the sheet, the search continues to the next worksheet in order.
+* If the workbook contains no notes, the selection remains on the current cell.
+
+This functionality streamlines the process of reviewing notes across worksheets, ensuring efficient traversal and discovery.
+
+## Show/Hide Note
+
+The **Show/Hide Note** option allows you to toggle the visibility of individual notes as sticky notes within the worksheet. When enabled, the note appears as a persistent floating text box, making it convenient to reference key information without hovering over the cell.
+
+To toggle the visibility of a note:
+
+* **Context Menu**: Right-click the cell containing the note and select **Show/Hide Note**.
+* **Ribbon**: Select the cell, go to the **Review** tab, click the **Notes** dropdown, and choose **Show/Hide Note**.
+
+**Behavior:**
+
+* **Default State (Hidden)**: Notes are hidden by default and only appear when hovering over the cell, which displays a red triangle indicator.
+* **Sticky State (Visible)**: Toggling Show/Hide Note on a hidden note makes it visible as a sticky note, which remains on display even when navigating to other cells or selections.
+* **Toggle Functionality**: Selecting Show/Hide Note again on a visible note hides it, reverting to the default state.
+* **Independent Control**: Each note can be toggled individually, allowing you to display only the most relevant notes for your current task.
+
+## Show All Notes
+
+The **Show All Notes** option enables you to display all notes in the current worksheet simultaneously as sticky notes, simplifying the review of multiple comments at a glance.
+
+To activate:
+
+* Navigate to the **Review** tab, click the **Notes** dropdown, and select **Show All Notes**.
+
+All notes in the worksheet will appear as floating text boxes near their respective cells.
+
+> **Note**: After using Show All Notes, you can hide individual notes selectively via the **Show/Hide Note** option. Additionally, any new notes added to the worksheet will automatically appear as visible sticky notes when Show All Notes is active.
+
+This functionality enhances workflow efficiency by providing flexible control over note visibility, whether for individual focus or comprehensive review.
+
## Saving the document with notes
-The Spreadsheet data, including notes, can be saved and exported as an Excel document by selecting **File > Save As** in the ribbon menu. Exporting worksheets with notes is supported in Excel file formats such as MS Excel (.xlsx) and MS Excel 97-2003 (.xls).
+The Spreadsheet data, including notes, can be saved and exported as an Excel document by selecting **File > Save As** in the ribbon menu. Exporting worksheets with notes is supported in Excel file formats such as Microsoft Excel (.xlsx) and Microsoft Excel 97-2003 (.xls).
> When exporting the Spreadsheet to file formats such as Comma Separated Values (.csv), Excel Macro-Enabled Workbook (.xlsm), Excel Binary Workbook (.xlsb), and PDF Document (.pdf), the notes will not be available.
## Disabling notes
-To disable the note functionality, you need to set the [`enableNotes`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.Spreadsheet.Spreadsheet.html#Syncfusion_EJ2_Spreadsheet_Spreadsheet_EnableNotes) property to **false**. After disabling, the notes in the document will not be shown when opened in the Spreadsheet. The **"Add Note"** option will not be shown in the context menu. The keyboard shortcuts for the note functionality will not work.
+To disable the note functionality, you need to set the [enableNotes](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.Spreadsheet.Spreadsheet.html#Syncfusion_EJ2_Spreadsheet_Spreadsheet_EnableNotes) property to **false**. After disabling, the notes in the document will not be shown when opened in the Spreadsheet. The **"Add Note"** option will not be shown in the context menu. The keyboard shortcuts for the note functionality will not work.

@@ -81,6 +146,8 @@ In the below example, the note functionality is disabled in the Spreadsheet.
The notes can be added initially when the Spreadsheet loads using cell data binding. You need to use the `notes` property in the cell settings to add notes to the Spreadsheet.
+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 razor tabtitle="CSHTML" %}
{% include code-snippet/spreadsheet/asp-net-mvc/note-cs3/razor %}
diff --git a/Document-Processing/Excel/Spreadsheet/Javascript-ES5/comment.md b/Document-Processing/Excel/Spreadsheet/Javascript-ES5/comment.md
new file mode 100644
index 000000000..cc657354a
--- /dev/null
+++ b/Document-Processing/Excel/Spreadsheet/Javascript-ES5/comment.md
@@ -0,0 +1,194 @@
+---
+layout: post
+title: Comment in EJ2 JavaScript Spreadsheet control | Syncfusion
+description: Learn here all about Comment feature in Syncfusion EJ2 JavaScript Spreadsheet control of Syncfusion Essential JS 2 and more.
+platform: document-processing
+control: Comment
+documentation: ug
+---
+
+# Comment in EJ2 JavaScript Spreadsheet control
+The **Comment** feature allows you to add feedback to cells without changing their values, enabling contextual discussions through threaded **replies**. Unlike [Notes](./notes), Comment include advanced review tools such as **resolve** and **reopen** to track status, plus an optional **Comments Review Pane** for browsing and managing threads.
+
+Cells with comment display a small comment indicator; hover to preview the comment editor. This provides a clear, collaborative workflow while keeping data intact.
+
+
+
+## Author identity
+The Syncfusion Spreadsheet does not automatically track user identity. To tag new comments and replies with an author name, set the `author` property when initializing the Spreadsheet.
+
+```js
+ // Initialize Spreadsheet component
+ var spreadsheet = new ej.spreadsheet.Spreadsheet({
+ // Set the author name, If not set, "Guest User" will be shown as the author by default.
+ author: 'Place the Author Name Here'
+ });
+ // Render initialized Spreadsheet
+ spreadsheet.appendTo('#element');
+```
+>If the author property is not set, "Guest User" will be displayed as the author for comment and replies by default.
+
+## Adding a comment
+You can add a **comment** to a cell in several ways:
+* **Context menu**: Right-click the target cell and select **"New Comment"**.
+* **Ribbon**: Go to **Review > Comment > New Comment**.
+* **Keyboard shortcut**: Press Ctrl + Shift + F2 to open the comment editor for the active cell.
+* **Programmatically**:
+ * Use the `updateCell` method with the comment model to add a comment to a specific cell.
+ * Bind comments via code-behind during initial load by associating the comment model with the cell model.
+
+The image below shows that once a comment is posted, the cell displays an indicator, and the comment can be previewed on hover.
+
+
+
+## Adding a reply
+You can add one or more replies to an existing comment to provide additional details or answers:
+* **Context menu**: Right-click the cell that already has a comment, select **Comment > New Reply**, enter your reply, and click **Post**.
+* **Ribbon**: Go to **Review > Comment > New Comment** on a cell that contains a comment. This opens the comment editor in **reply mode**.
+* **Comment editor**: Open the comment editor by hovering over the comment indicator, type your reply, and click **Post**.
+* **Keyboard shortcut**: Press Ctrl + Shift + F2 on a cell that contains a comment to open the comment editor in reply mode.
+
+After posting, the replies appear under the first comment in the comment editor.
+
+
+
+## Editing a comment
+You can edit the content of a comment or its replies directly within the comment editor.
+
+* **Edit first comment**: In the comment editor. Click the **"⋯" (More thread actions)** menu in the header, select the **Edit Comment**, modify the text and click **Post**.
+* **Edit a reply comment**: In the comment editor, hover over the specific reply, click the **"⋯" (More actions)**, select the **Edit Comment**, modify the text and click **Post**.
+
+
+
+## Resolve and Reopen
+The **Resolve thread** option marks a comment thread as completed when the discussion or issue is addressed. When a thread is resolved, its background color changes to indicate the resolved state, and the reply input box and reply menu actions are hidden. Use **Reopen** to restore the comment if further discussion is needed.
+
+### Resolve a comment
+* In the comment editor, click the **"⋯" (More thread actions)** menu in the header and select **Resolve Thread**.
+
+### Reopen a comment
+* In the comment editor, click the **Reopen** button in the header to make the thread active again.
+
+
+
+You can also use the `isResolved` property in the comment model when initializing or updating comments programmatically.
+
+**Example: Using `isResolved` property in the comment model with the `updateCell` method**
+
+```js
+// Update a cell with a comment using the updateCell method
+ spreadsheet.updateCell({
+ comment: {
+ author: 'Chistoper', text: 'Are you completed the report',
+ createdTime: 'January 03, 2026 at 5:00 PM',
+ // Set to true to mark the thread as resolved; false keeps it active
+ isResolved: false,
+ replies: [{ author: 'John', text: 'Yes, completed',
+ createdTime: 'January 03, 2026 at 7:00 PM' }]
+ }
+ }, 'Sheet1!D5');
+
+```
+
+## Deleting a comment or reply
+You can delete either a specific reply or an entire comment thread (including all replies) using the following options:
+
+### Deleting a comment thread
+* **Context menu**: Right-click the cell that contains the comment and select **Comment > Delete Comment**.
+* **Ribbon**: Go to **Review > Comment > Delete Comment** on a cell that contains the comment.
+* **Comment editor**: In the comment editor, click the **"⋯" (More thread actions)** menu in the header and select **Delete Thread** for an active comment or use the **Delete Thread** button in header for a resolved comment.
+
+Deleting a thread removes the comment and all its replies from the cell.
+
+
+
+### Delete a reply
+In the comment editor, hover over the reply and click the **"⋯" (More actions)** menu then select **Delete Comment**.
+
+
+
+## Next and Previous Comment
+The **Review > Comment > Next Comment and Previous Comment** options in the ribbon allow you to quickly navigate between cells that contain comments:
+
+* **Next Comment**: Moves to the next cell with a comment.
+* **Previous Comment**: Moves to the previous cell with a comment.
+
+Navigation starts within the active sheet. When all comments in the active sheet have been visited (end or start reached), the navigation automatically continues to the next or previous sheet that contains comments. This ensures you can review all comments across the workbook without manually switching sheets.
+
+
+
+## Comments review pane
+The **"Comments" review pane** provides a centralized view of all comments in the active sheet, making it easier to manage discussions without switching between individual cells. It offers filtering, inline actions, and navigation, ensuring an efficient review workflow across the workbook.
+
+You can show or hide the "Comments" review pane using:
+
+* **Ribbon**: Go to **Review > Comment > Show Comments**.
+* **Property**: Set the `showCommentsPane` property to true when initializing the Spreadsheet. By default, this property is **false**.
+
+
+
+### Features of the comments review pane
+The "Comments" review pane is rendered within the spreadsheet interface to provide a dedicated space for managing comments efficiently. It acts as a centralized hub where you can view all comment threads, perform actions, and keep discussions organized without navigating cell by cell.
+
+The "Comments" review pane allows you to:
+
+* Add new comment using the **New** button.
+* Filter comments by **All**, **Active**, or **Resolved** to view specific comment threads.
+* Navigate between comments and synchronize selection with the corresponding cells.
+* Perform actions such as:
+ * **Reply** – Add replies directly from the review pane.
+ * **Edit** – Modify the text of a comment or reply.
+ * **Delete** – Remove a reply or an entire thread.
+ * **Resolve/Reopen** – Change the status of a comment.
+
+When the review pane is open, all actions performed in the review pane or in the cell’s comment editor are synchronized:
+
+* Selecting a comment in the review pane highlights the corresponding cell in the sheet.
+* Selecting a cell with a comment focuses the respective comment thread in the review pane.
+* Actions such as **Reply**, **Edit**, **Delete**, and **Resolve/Reopen** update both the pane and the cell comment editor instantly, ensuring consistency across the UI.
+* The review pane dynamically updates when comments are added, deleted, or resolved, so you always see the latest state without refreshing.
+
+## Saving a Workbook with Comments
+You can save spreadsheet data along with **comments** using **File > Save As > Microsoft Excel(.xlsx)**.
+- **MS Excel (.xlsx)** - Preserves all **threaded comments** (modern comments).
+
+> Comments are **not included** when exporting to **.xls**, **.csv**, and **.pdf**.
+
+### Why comments are not saved in `.xls`
+The **.xls** format is based on the older Excel binary structure (BIFF8), which does not support modern features like **threaded comments**.
+Threaded comments introduced in newer Excel versions require the **Open XML** structure used by `.xlsx`.
+
+> To retain threaded comments, always save the workbook in **.xlsx** format.
+
+## Bind Comments via code-behind
+You can bind **comment thread** to cells at initial load by providing a `comment` object in the cell model. Each cell supports **per comment thread**, which can include:
+- **Comment**: `author`, `text`, `createdTime`, `isResolved`
+- **Replies**: A collection of replies. Each reply is an object containing its `author`, `text`, and `createdTime` (no nested replies-of-replies).
+
+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 js tabtitle="index.js" %}
+{% include code-snippet/spreadsheet/javascript-es5/comment-cs1/index.js %}
+{% endhighlight %}
+{% highlight html tabtitle="index.html" %}
+{% include code-snippet/spreadsheet/javascript-es5/comment-cs1/index.html %}
+{% endhighlight %}
+{% endtabs %}
+
+{% previewsample "/document-processing/code-snippet/spreadsheet/javascript-es5/comment-cs1" %}
+
+### Important Notes
+* **One thread per cell**: Attach a single `comment` object per cell. New remarks should be added as replies inside the existing thread.
+* **Author Identity**: The author name for each comment and reply is static once set. When exporting, the author information is preserved for all comments, even if multiple authors exist in the workbook.
+* **New comment**: When the "Comments" review pane is enabled, adding a new comment renders the drafted comment editor directly in the "Comments" review pane.
+
+## Limitations
+* **Un-posted comments are not stored**: If you type in the comment editor and close it without clicking **Post**, the entered text is not saved and will not appear when you reopen the editor. Only posted content is persisted in the comment model.
+* **Comments and Notes cannot coexist**: When a cell contains comment, notes cannot be added. Similarly, if a cell already has a notes, comment cannot be added.
+* **Comments in Print**: Comments are not included in print output.
+* **Non-collaborative**: Real-time multi-user synchronization is not supported. However, when exporting and re-importing the workbook, the author information for each comment and reply is preserved.
+
+## See Also
+* [Notes](./notes)
+* [Hyperlink](./link)
\ No newline at end of file
diff --git a/Document-Processing/Excel/Spreadsheet/Javascript-ES5/images/spreadsheet_adding_a_comment.gif b/Document-Processing/Excel/Spreadsheet/Javascript-ES5/images/spreadsheet_adding_a_comment.gif
new file mode 100644
index 000000000..863da7a34
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/Javascript-ES5/images/spreadsheet_adding_a_comment.gif differ
diff --git a/Document-Processing/Excel/Spreadsheet/Javascript-ES5/images/spreadsheet_comment.png b/Document-Processing/Excel/Spreadsheet/Javascript-ES5/images/spreadsheet_comment.png
new file mode 100644
index 000000000..b002a6db3
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/Javascript-ES5/images/spreadsheet_comment.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/Javascript-ES5/images/spreadsheet_comment_reply.png b/Document-Processing/Excel/Spreadsheet/Javascript-ES5/images/spreadsheet_comment_reply.png
new file mode 100644
index 000000000..548694016
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/Javascript-ES5/images/spreadsheet_comment_reply.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/Javascript-ES5/images/spreadsheet_delete-reply_comment.png b/Document-Processing/Excel/Spreadsheet/Javascript-ES5/images/spreadsheet_delete-reply_comment.png
new file mode 100644
index 000000000..f2385a4f9
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/Javascript-ES5/images/spreadsheet_delete-reply_comment.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/Javascript-ES5/images/spreadsheet_delete_comment.png b/Document-Processing/Excel/Spreadsheet/Javascript-ES5/images/spreadsheet_delete_comment.png
new file mode 100644
index 000000000..0c0ff11f1
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/Javascript-ES5/images/spreadsheet_delete_comment.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/Javascript-ES5/images/spreadsheet_edit_comment.png b/Document-Processing/Excel/Spreadsheet/Javascript-ES5/images/spreadsheet_edit_comment.png
new file mode 100644
index 000000000..2874b11cb
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/Javascript-ES5/images/spreadsheet_edit_comment.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/Javascript-ES5/images/spreadsheet_next_previous_comment.png b/Document-Processing/Excel/Spreadsheet/Javascript-ES5/images/spreadsheet_next_previous_comment.png
new file mode 100644
index 000000000..ece81c396
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/Javascript-ES5/images/spreadsheet_next_previous_comment.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/Javascript-ES5/images/spreadsheet_resolve_reopen.gif b/Document-Processing/Excel/Spreadsheet/Javascript-ES5/images/spreadsheet_resolve_reopen.gif
new file mode 100644
index 000000000..1307efbbb
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/Javascript-ES5/images/spreadsheet_resolve_reopen.gif differ
diff --git a/Document-Processing/Excel/Spreadsheet/Javascript-ES5/images/spreadsheet_show_comments.gif b/Document-Processing/Excel/Spreadsheet/Javascript-ES5/images/spreadsheet_show_comments.gif
new file mode 100644
index 000000000..d033c0c9a
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/Javascript-ES5/images/spreadsheet_show_comments.gif differ
diff --git a/Document-Processing/Excel/Spreadsheet/Javascript-ES5/notes.md b/Document-Processing/Excel/Spreadsheet/Javascript-ES5/notes.md
index 9f4ac3852..abd669c0d 100644
--- a/Document-Processing/Excel/Spreadsheet/Javascript-ES5/notes.md
+++ b/Document-Processing/Excel/Spreadsheet/Javascript-ES5/notes.md
@@ -7,9 +7,9 @@ control: Notes
documentation: ug
---
-# Notes in EJ2 Javascript Spreadsheet control
+# Notes in EJ2 JavaScript Spreadsheet control
-The **Notes** feature is used to insert comments, provide feedback, suggest changes, or leave remarks on specific cells while reviewing documents in the Spreadsheet. You can enable or disable the notes functionality using the [`enableNotes`](https://ej2.syncfusion.com/javascript/documentation/api/spreadsheet/#enablenotes) property, which defaults to **true**.
+The **Notes** feature is used to insert comments, provide feedback, suggest changes, or leave remarks on specific cells while reviewing documents in the Spreadsheet. You can enable or disable the notes functionality using the [enableNotes](https://ej2.syncfusion.com/javascript/documentation/api/spreadsheet/index-default#enablenotes) property, which defaults to **true**.
When opening the Excel document with notes in the Spreadsheet, they will be displayed in the control. The cells containing notes will be indicated with a red colored triangle at the top-right corner. Hovering the mouse over these cells will display the content of the notes.
@@ -32,38 +32,103 @@ In the below example, you can add, edit, save, and delete notes.
In the active worksheet, you can add a note in the following ways:
-* To add a note, right-click the cell to open the context menu and choose the **"Add Note"** option from the context menu. This will open a dialog box to add the content as a note.
-* You can also use the `Shift` + `F2` keyboard shortcut to add a note to the desired cell. A dialog box will be opened to add the content as a note.
-* After entering the content in the dialog box, you can either click on other cells or press the `Esc` button on the keyboard to automatically save the note in the cell and close the dialog box.
+* **Context Menu**: Right-click the desired cell and select **Add Note**.
+* **Ribbon**: Select the cell, navigate to the **Review** tab, click the **Notes** dropdown, and select **Add Note**.
+* **Keyboard Shortcut**: Select the cell and press Shift + F2.
+* **Programmatically**:
+ * Use the `updateCell` method with the note model to add a note to a specific cell.
+ * Bind notes via code-behind during initial load by associating the note model with the cell model.
+
+A dialog box will open where you can enter the note content. After entering the content, you can either click on other cells or press the Esc button to automatically save the note and close the dialog box.

## Editing a note
-In the active worksheet, you can modify the content of existing notes in the document.
+In the active worksheet, you can modify the content of existing notes in the document:
+
+* **Context Menu**: Right-click the cell containing the note and select **Edit Note**.
+* **Ribbon**: Select the cell containing the note, navigate to the **Review** tab, click the **Notes** dropdown, and select **Edit Note**.
+* **Keyboard Shortcut**: Select the cell containing the note and press Shift + F2.
-* To edit a note, right-click on the desired cell containing the note, which will open the context menu.
-* Select the **"Edit Note"** option from the context menu.
-* You can also use the `Shift` + `F2` keyboard shortcut to edit the note of the desired cell. A dialog box will be opened to edit the note.
-* After editing the content in the dialog box, you can either click on other cells or press the `Esc` button on the keyboard to automatically save the note in the cell and close the dialog box.
+The note editor dialog box will open with the existing content. After editing the content, you can either click on other cells or press the Esc button to automatically save the changes and close the dialog box.

## Deleting a note
-In the active worksheet, right-click on the desired cell containing the note that you want to remove, which opens the context menu. In the context menu, select the **"Delete Note"** option to delete the note.
+You can remove notes from cells using the following ways:
+
+* **Context Menu**: Right-click the cell containing the note and select **Delete Note**.
+* **Ribbon**: Select the cell containing the note, navigate to the **Review** tab, click the **Notes** dropdown, and select **Delete Note**.
+
+The note will be removed from the cell, and the red triangle indicator will be removed.

+## Navigating between notes
+
+The Syncfusion Spreadsheet provides intuitive navigation to quickly move between cells containing notes in your worksheet. These options are accessible through the **Notes** dropdown in the **Review** tab.
+
+### Previous Note
+
+To navigate to the previous note:
+
+* In the **Review** tab, open the **Notes** dropdown and select **Previous Note**.
+* The Spreadsheet will automatically select the previous note in the current worksheet, searching leftward and then upward.
+* If no prior note exists in the sheet, the search continues to the previous worksheet in order.
+* If the workbook contains no notes, the selection remains on the current cell.
+
+### Next Note
+
+To navigate to the next note:
+
+* In the **Review** tab, open the **Notes** dropdown and select **Next Note**.
+* The Spreadsheet will automatically select the next note in the current worksheet, searching rightward and then downward.
+* If no subsequent note exists in the sheet, the search continues to the next worksheet in order.
+* If the workbook contains no notes, the selection remains on the current cell.
+
+This functionality streamlines the process of reviewing notes across worksheets, ensuring efficient traversal and discovery.
+
+## Show/Hide Note
+
+The **Show/Hide Note** option allows you to toggle the visibility of individual notes as sticky notes within the worksheet. When enabled, the note appears as a persistent floating text box, making it convenient to reference key information without hovering over the cell.
+
+To toggle the visibility of a note:
+
+* **Context Menu**: Right-click the cell containing the note and select **Show/Hide Note**.
+* **Ribbon**: Select the cell, go to the **Review** tab, click the **Notes** dropdown, and choose **Show/Hide Note**.
+
+**Behavior:**
+
+* **Default State (Hidden)**: Notes are hidden by default and only appear when hovering over the cell, which displays a red triangle indicator.
+* **Sticky State (Visible)**: Toggling Show/Hide Note on a hidden note makes it visible as a sticky note, which remains on display even when navigating to other cells or selections.
+* **Toggle Functionality**: Selecting Show/Hide Note again on a visible note hides it, reverting to the default state.
+* **Independent Control**: Each note can be toggled individually, allowing you to display only the most relevant notes for your current task.
+
+## Show All Notes
+
+The **Show All Notes** option enables you to display all notes in the current worksheet simultaneously as sticky notes, simplifying the review of multiple comments at a glance.
+
+To activate:
+
+* Navigate to the **Review** tab, click the **Notes** dropdown, and select **Show All Notes**.
+
+All notes in the worksheet will appear as floating text boxes near their respective cells.
+
+> **Note**: After using Show All Notes, you can hide individual notes selectively via the **Show/Hide Note** option. Additionally, any new notes added to the worksheet will automatically appear as visible sticky notes when Show All Notes is active.
+
+This functionality enhances workflow efficiency by providing flexible control over note visibility, whether for individual focus or comprehensive review.
+
## Saving the document with notes
-The Spreadsheet data, including notes, can be saved and exported as an Excel document by selecting **File > Save As** in the ribbon menu. Exporting worksheets with notes is supported in Excel file formats such as MS Excel (.xlsx) and MS Excel 97-2003 (.xls).
+The Spreadsheet data, including notes, can be saved and exported as an Excel document by selecting **File > Save As** in the ribbon menu. Exporting worksheets with notes is supported in Excel file formats such as Microsoft Excel (.xlsx) and Microsoft Excel 97-2003 (.xls).
> When exporting the Spreadsheet to file formats such as Comma Separated Values (.csv), Excel Macro-Enabled Workbook (.xlsm), Excel Binary Workbook (.xlsb), and PDF Document (.pdf), the notes will not be available.
## Disabling notes
-To disable the note functionality, you need to set the [`enableNotes`](https://ej2.syncfusion.com/javascript/documentation/api/spreadsheet/#enablenotes) property to **false**. After disabling, the notes in the document will not be shown when opened in the Spreadsheet. The **"Add Note"** option will not be shown in the context menu. The keyboard shortcuts for the note functionality will not work.
+To disable the note functionality, you need to set the [enableNotes](https://ej2.syncfusion.com/javascript/documentation/api/spreadsheet/index-default#enablenotes) property to **false**. After disabling, the notes in the document will not be shown when opened in the Spreadsheet. The **"Add Note"** option will not be shown in the context menu. The keyboard shortcuts for the note functionality will not work.

@@ -84,6 +149,8 @@ In the below example, the note functionality is disabled in the Spreadsheet.
The notes can be added initially when the Spreadsheet loads using cell data binding. You need to use the `notes` property in the cell settings to add notes to the Spreadsheet.
+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 js tabtitle="index.js" %}
{% include code-snippet/spreadsheet/javascript-es5/note-cs3/index.js %}
diff --git a/Document-Processing/Excel/Spreadsheet/React/comment.md b/Document-Processing/Excel/Spreadsheet/React/comment.md
new file mode 100644
index 000000000..90cc3ce02
--- /dev/null
+++ b/Document-Processing/Excel/Spreadsheet/React/comment.md
@@ -0,0 +1,199 @@
+---
+layout: post
+title: Comment in React Spreadsheet control | Syncfusion
+description: Learn here all about Comment feature in Syncfusion React Spreadsheet control of Syncfusion Essential JS 2 and more.
+platform: document-processing
+control: Comment
+documentation: ug
+---
+
+# Comment in React Spreadsheet control
+The **Comment** feature allows you to add feedback to cells without changing their values, enabling contextual discussions through threaded **replies**. Unlike [Notes](./notes), Comment include advanced review tools such as **resolve** and **reopen** to track status, plus an optional **Comments Review Pane** for browsing and managing threads.
+
+Cells with comment display a small comment indicator; hover to preview the comment editor. This provides a clear, collaborative workflow while keeping data intact.
+
+
+
+## Author identity
+The Syncfusion Spreadsheet does not automatically track user identity. To tag new comments and replies with an author name, set the `author` property when initializing the Spreadsheet.
+
+```ts
+ import * as React from 'react';
+ import { createRoot } from 'react-dom/client';
+ import { SpreadsheetComponent } from '@syncfusion/ej2-react-spreadsheet';
+ export default function App() {
+ return (
+
+
+ );
+ }
+ const root = createRoot(document.getElementById('root')!);
+ root.render();
+```
+>If the author property is not set, "Guest User" will be displayed as the author for comment and replies by default.
+
+## Adding a comment
+You can add a **comment** to a cell in several ways:
+* **Context menu**: Right-click the target cell and select **"New Comment"**.
+* **Ribbon**: Go to **Review > Comment > New Comment**.
+* **Keyboard shortcut**: Press Ctrl + Shift + F2 to open the comment editor for the active cell.
+* **Programmatically**:
+ * Use the `updateCell` method with the comment model to add a comment to a specific cell.
+ * Bind comments via code-behind during initial load by associating the comment model with the cell model.
+
+The image below shows that once a comment is posted, the cell displays an indicator, and the comment can be previewed on hover.
+
+
+
+## Adding a reply
+You can add one or more replies to an existing comment to provide additional details or answers:
+* **Context menu**: Right-click the cell that already has a comment, select **Comment > New Reply**, enter your reply, and click **Post**.
+* **Ribbon**: Go to **Review > Comment > New Comment** on a cell that contains a comment. This opens the comment editor in **reply mode**.
+* **Comment editor**: Open the comment editor by hovering over the comment indicator, type your reply, and click **Post**.
+* **Keyboard shortcut**: Press Ctrl + Shift + F2 on a cell that contains a comment to open the comment editor in reply mode.
+
+After posting, the replies appear under the first comment in the comment editor.
+
+
+
+## Editing a comment
+You can edit the content of a comment or its replies directly within the comment editor.
+
+* **Edit first comment**: In the comment editor. Click the **"⋯" (More thread actions)** menu in the header, select the **Edit Comment**, modify the text and click **Post**.
+* **Edit a reply comment**: In the comment editor, hover over the specific reply, click the **"⋯" (More actions)**, select the **Edit Comment**, modify the text and click **Post**.
+
+
+
+## Resolve and Reopen
+The **Resolve thread** option marks a comment thread as completed when the discussion or issue is addressed. When a thread is resolved, its background color changes to indicate the resolved state, and the reply input box and reply menu actions are hidden. Use **Reopen** to restore the comment if further discussion is needed.
+
+### Resolve a comment
+* In the comment editor, click the **"⋯" (More thread actions)** menu in the header and select **Resolve Thread**.
+
+### Reopen a comment
+* In the comment editor, click the **Reopen** button in the header to make the thread active again.
+
+
+
+You can also use the `isResolved` property in the comment model when initializing or updating comments programmatically.
+
+**Example: Using `isResolved` property in the comment model with the `updateCell` method**
+
+```ts
+// Update a cell with a comment using the updateCell method
+ spreadsheet.updateCell({
+ comment: {
+ author: 'Chistoper', text: 'Are you completed the report',
+ createdTime: 'January 03, 2026 at 5:00 PM',
+ // Set to true to mark the thread as resolved; false keeps it active
+ isResolved: false,
+ replies: [{ author: 'John', text: 'Yes, completed',
+ createdTime: 'January 03, 2026 at 7:00 PM' }]
+ }
+ }, 'Sheet1!D5');
+```
+
+## Deleting a comment or reply
+You can delete either a specific reply or an entire comment thread (including all replies) using the following options:
+
+### Deleting a comment thread
+* **Context menu**: Right-click the cell that contains the comment and select **Comment > Delete Comment**.
+* **Ribbon**: Go to **Review > Comment > Delete Comment** on a cell that contains the comment.
+* **Comment editor**: In the comment editor, click the **"⋯" (More thread actions)** menu in the header and select **Delete Thread** for an active comment or use the **Delete Thread** button in header for a resolved comment.
+
+Deleting a thread removes the comment and all its replies from the cell.
+
+
+
+### Delete a reply
+In the comment editor, hover over the reply and click the **"⋯" (More actions)** menu then select **Delete Comment**.
+
+
+
+## Next and Previous Comment
+The **Review > Comment > Next Comment and Previous Comment** options in the ribbon allow you to quickly navigate between cells that contain comments:
+
+* **Next Comment**: Moves to the next cell with a comment.
+* **Previous Comment**: Moves to the previous cell with a comment.
+
+Navigation starts within the active sheet. When all comments in the active sheet have been visited (end or start reached), the navigation automatically continues to the next or previous sheet that contains comments. This ensures you can review all comments across the workbook without manually switching sheets.
+
+
+
+## Comments review pane
+The **"Comments" review pane** provides a centralized view of all comments in the active sheet, making it easier to manage discussions without switching between individual cells. It offers filtering, inline actions, and navigation, ensuring an efficient review workflow across the workbook.
+
+You can show or hide the "Comments" review pane using:
+
+* **Ribbon**: Go to **Review > Comment > Show Comments**.
+* **Property**: Set the `showCommentsPane` property to true when initializing the Spreadsheet. By default, this property is **false**.
+
+
+
+### Features of the comments review pane
+The "Comments" review pane is rendered within the spreadsheet interface to provide a dedicated space for managing comments efficiently. It acts as a centralized hub where you can view all comment threads, perform actions, and keep discussions organized without navigating cell by cell.
+
+The "Comments" review pane allows you to:
+
+* Add new comment using the **New** button.
+* Filter comments by **All**, **Active**, or **Resolved** to view specific comment threads.
+* Navigate between comments and synchronize selection with the corresponding cells.
+* Perform actions such as:
+ * **Reply** – Add replies directly from the review pane.
+ * **Edit** – Modify the text of a comment or reply.
+ * **Delete** – Remove a reply or an entire thread.
+ * **Resolve/Reopen** – Change the status of a comment.
+
+When the review pane is open, all actions performed in the review pane or in the cell’s comment editor are synchronized:
+
+* Selecting a comment in the review pane highlights the corresponding cell in the sheet.
+* Selecting a cell with a comment focuses the respective comment thread in the review pane.
+* Actions such as **Reply**, **Edit**, **Delete**, and **Resolve/Reopen** update both the pane and the cell comment editor instantly, ensuring consistency across the UI.
+* The review pane dynamically updates when comments are added, deleted, or resolved, so you always see the latest state without refreshing.
+
+## Saving a Workbook with Comments
+You can save spreadsheet data along with **comments** using **File > Save As > Microsoft Excel(.xlsx)**.
+- **MS Excel (.xlsx)** - Preserves all **threaded comments** (modern comments).
+
+> Comments are **not included** when exporting to **.xls**, **.csv**, and **.pdf**.
+
+### Why comments are not saved in `.xls`
+The **.xls** format is based on the older Excel binary structure (BIFF8), which does not support modern features like **threaded comments**.
+Threaded comments introduced in newer Excel versions require the **Open XML** structure used by `.xlsx`.
+
+> To retain threaded comments, always save the workbook in **.xlsx** format.
+
+## Bind Comments via code-behind
+You can bind **comment thread** to cells at initial load by providing a `comment` object in the cell model. Each cell supports **per comment thread**, which can include:
+- **Comment**: `author`, `text`, `createdTime`, `isResolved`
+- **Replies**: A collection of replies. Each reply is an object containing its `author`, `text`, and `createdTime` (no nested replies-of-replies).
+
+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 js tabtitle="app.jsx" %}
+{% include code-snippet/spreadsheet/react/comment-cs1/app/app.jsx %}
+{% endhighlight %}
+{% highlight ts tabtitle="app.tsx" %}
+{% include code-snippet/spreadsheet/react/comment-cs1/app/app.tsx %}
+{% endhighlight %}
+{% endtabs %}
+
+{% previewsample "/document-processing/code-snippet/spreadsheet/react/comment-cs1" %}
+
+### Important Notes
+* **One thread per cell**: Attach a single `comment` object per cell. New remarks should be added as replies inside the existing thread.
+* **Author Identity**: The author name for each comment and reply is static once set. When exporting, the author information is preserved for all comments, even if multiple authors exist in the workbook.
+* **New comment**: When the "Comments" review pane is enabled, adding a new comment renders the drafted comment editor directly in the "Comments" review pane.
+
+## Limitations
+* **Un-posted comments are not stored**: If you type in the comment editor and close it without clicking **Post**, the entered text is not saved and will not appear when you reopen the editor. Only posted content is persisted in the comment model.
+* **Comments and Notes cannot coexist**: When a cell contains comment, notes cannot be added. Similarly, if a cell already has a notes, comment cannot be added.
+* **Comments in Print**: Comments are not included in print output.
+* **Non-collaborative**: Real-time multi-user synchronization is not supported. However, when exporting and re-importing the workbook, the author information for each comment and reply is preserved.
+
+## See Also
+* [Notes](./notes)
+* [Hyperlink](./link)
\ No newline at end of file
diff --git a/Document-Processing/Excel/Spreadsheet/React/images/spreadsheet_adding_a_comment.gif b/Document-Processing/Excel/Spreadsheet/React/images/spreadsheet_adding_a_comment.gif
new file mode 100644
index 000000000..863da7a34
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/React/images/spreadsheet_adding_a_comment.gif differ
diff --git a/Document-Processing/Excel/Spreadsheet/React/images/spreadsheet_comment.png b/Document-Processing/Excel/Spreadsheet/React/images/spreadsheet_comment.png
new file mode 100644
index 000000000..b002a6db3
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/React/images/spreadsheet_comment.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/React/images/spreadsheet_comment_reply.png b/Document-Processing/Excel/Spreadsheet/React/images/spreadsheet_comment_reply.png
new file mode 100644
index 000000000..548694016
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/React/images/spreadsheet_comment_reply.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/React/images/spreadsheet_delete-reply_comment.png b/Document-Processing/Excel/Spreadsheet/React/images/spreadsheet_delete-reply_comment.png
new file mode 100644
index 000000000..f2385a4f9
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/React/images/spreadsheet_delete-reply_comment.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/React/images/spreadsheet_delete_comment.png b/Document-Processing/Excel/Spreadsheet/React/images/spreadsheet_delete_comment.png
new file mode 100644
index 000000000..0c0ff11f1
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/React/images/spreadsheet_delete_comment.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/React/images/spreadsheet_edit_comment.png b/Document-Processing/Excel/Spreadsheet/React/images/spreadsheet_edit_comment.png
new file mode 100644
index 000000000..2874b11cb
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/React/images/spreadsheet_edit_comment.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/React/images/spreadsheet_next_previous_comment.png b/Document-Processing/Excel/Spreadsheet/React/images/spreadsheet_next_previous_comment.png
new file mode 100644
index 000000000..ece81c396
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/React/images/spreadsheet_next_previous_comment.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/React/images/spreadsheet_resolve_reopen.gif b/Document-Processing/Excel/Spreadsheet/React/images/spreadsheet_resolve_reopen.gif
new file mode 100644
index 000000000..1307efbbb
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/React/images/spreadsheet_resolve_reopen.gif differ
diff --git a/Document-Processing/Excel/Spreadsheet/React/images/spreadsheet_show_comments.gif b/Document-Processing/Excel/Spreadsheet/React/images/spreadsheet_show_comments.gif
new file mode 100644
index 000000000..d033c0c9a
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/React/images/spreadsheet_show_comments.gif differ
diff --git a/Document-Processing/Excel/Spreadsheet/React/notes.md b/Document-Processing/Excel/Spreadsheet/React/notes.md
index 832fccab7..bca9e39d2 100644
--- a/Document-Processing/Excel/Spreadsheet/React/notes.md
+++ b/Document-Processing/Excel/Spreadsheet/React/notes.md
@@ -9,7 +9,7 @@ documentation: ug
# Notes in React Spreadsheet component
-The **Notes** feature is used to insert comments, provide feedback, suggest changes, or leave remarks on specific cells while reviewing documents in the Spreadsheet. You can enable or disable the notes functionality using the [`enableNotes`](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/#enablenotes) property, which defaults to **true**.
+The **Notes** feature is used to insert comments, provide feedback, suggest changes, or leave remarks on specific cells while reviewing documents in the Spreadsheet. You can enable or disable the notes functionality using the [enableNotes](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/index-default#enablenotes) property, which defaults to **true**.
When opening the Excel document with notes in the Spreadsheet, they will be displayed in the control. The cells containing notes will be indicated with a red colored triangle at the top-right corner. Hovering the mouse over these cells will display the content of the notes.
@@ -32,38 +32,103 @@ In the below example, you can add, edit, save, and delete notes.
In the active worksheet, you can add a note in the following ways:
-* To add a note, right-click the cell to open the context menu and choose the **"Add Note"** option from the context menu. This will open a dialog box to add the content as a note.
-* You can also use the `Shift` + `F2` keyboard shortcut to add a note to the desired cell. A dialog box will be opened to add the content as a note.
-* After entering the content in the dialog box, you can either click on other cells or press the `Esc` button on the keyboard to automatically save the note in the cell and close the dialog box.
+* **Context Menu**: Right-click the desired cell and select **Add Note**.
+* **Ribbon**: Select the cell, navigate to the **Review** tab, click the **Notes** dropdown, and select **Add Note**.
+* **Keyboard Shortcut**: Select the cell and press Shift + F2.
+* **Programmatically**:
+ * Use the `updateCell` method with the note model to add a note to a specific cell.
+ * Bind notes via code-behind during initial load by associating the note model with the cell model.
+
+A dialog box will open where you can enter the note content. After entering the content, you can either click on other cells or press the Esc button to automatically save the note and close the dialog box.

## Editing a note
-In the active worksheet, you can modify the content of existing notes in the document.
+In the active worksheet, you can modify the content of existing notes in the document:
+
+* **Context Menu**: Right-click the cell containing the note and select **Edit Note**.
+* **Ribbon**: Select the cell containing the note, navigate to the **Review** tab, click the **Notes** dropdown, and select **Edit Note**.
+* **Keyboard Shortcut**: Select the cell containing the note and press Shift + F2.
-* To edit a note, right-click on the desired cell containing the note, which will open the context menu.
-* Select the **"Edit Note"** option from the context menu.
-* You can also use the `Shift` + `F2` keyboard shortcut to edit the note of the desired cell. A dialog box will be opened to edit the note.
-* After editing the content in the dialog box, you can either click on other cells or press the `Esc` button on the keyboard to automatically save the note in the cell and close the dialog box.
+The note editor dialog box will open with the existing content. After editing the content, you can either click on other cells or press the Esc button to automatically save the changes and close the dialog box.

## Deleting a note
-In the active worksheet, right-click on the desired cell containing the note that you want to remove, which opens the context menu. In the context menu, select the **"Delete Note"** option to delete the note.
+You can remove notes from cells using the following ways:
+
+* **Context Menu**: Right-click the cell containing the note and select **Delete Note**.
+* **Ribbon**: Select the cell containing the note, navigate to the **Review** tab, click the **Notes** dropdown, and select **Delete Note**.
+
+The note will be removed from the cell, and the red triangle indicator will be removed.

+## Navigating between notes
+
+The Syncfusion Spreadsheet provides intuitive navigation to quickly move between cells containing notes in your worksheet. These options are accessible through the **Notes** dropdown in the **Review** tab.
+
+### Previous Note
+
+To navigate to the previous note:
+
+* In the **Review** tab, open the **Notes** dropdown and select **Previous Note**.
+* The Spreadsheet will automatically select the previous note in the current worksheet, searching leftward and then upward.
+* If no prior note exists in the sheet, the search continues to the previous worksheet in order.
+* If the workbook contains no notes, the selection remains on the current cell.
+
+### Next Note
+
+To navigate to the next note:
+
+* In the **Review** tab, open the **Notes** dropdown and select **Next Note**.
+* The Spreadsheet will automatically select the next note in the current worksheet, searching rightward and then downward.
+* If no subsequent note exists in the sheet, the search continues to the next worksheet in order.
+* If the workbook contains no notes, the selection remains on the current cell.
+
+This functionality streamlines the process of reviewing notes across worksheets, ensuring efficient traversal and discovery.
+
+## Show/Hide Note
+
+The **Show/Hide Note** option allows you to toggle the visibility of individual notes as sticky notes within the worksheet. When enabled, the note appears as a persistent floating text box, making it convenient to reference key information without hovering over the cell.
+
+To toggle the visibility of a note:
+
+* **Context Menu**: Right-click the cell containing the note and select **Show/Hide Note**.
+* **Ribbon**: Select the cell, go to the **Review** tab, click the **Notes** dropdown, and choose **Show/Hide Note**.
+
+**Behavior:**
+
+* **Default State (Hidden)**: Notes are hidden by default and only appear when hovering over the cell, which displays a red triangle indicator.
+* **Sticky State (Visible)**: Toggling Show/Hide Note on a hidden note makes it visible as a sticky note, which remains on display even when navigating to other cells or selections.
+* **Toggle Functionality**: Selecting Show/Hide Note again on a visible note hides it, reverting to the default state.
+* **Independent Control**: Each note can be toggled individually, allowing you to display only the most relevant notes for your current task.
+
+## Show All Notes
+
+The **Show All Notes** option enables you to display all notes in the current worksheet simultaneously as sticky notes, simplifying the review of multiple comments at a glance.
+
+To activate:
+
+* Navigate to the **Review** tab, click the **Notes** dropdown, and select **Show All Notes**.
+
+All notes in the worksheet will appear as floating text boxes near their respective cells.
+
+> **Note**: After using Show All Notes, you can hide individual notes selectively via the **Show/Hide Note** option. Additionally, any new notes added to the worksheet will automatically appear as visible sticky notes when Show All Notes is active.
+
+This functionality enhances workflow efficiency by providing flexible control over note visibility, whether for individual focus or comprehensive review.
+
## Saving the document with notes
-The Spreadsheet data, including notes, can be saved and exported as an Excel document by selecting **File > Save As** in the ribbon menu. Exporting worksheets with notes is supported in Excel file formats such as MS Excel (.xlsx) and MS Excel 97-2003 (.xls).
+The Spreadsheet data, including notes, can be saved and exported as an Excel document by selecting **File > Save As** in the ribbon menu. Exporting worksheets with notes is supported in Excel file formats such as Microsoft Excel (.xlsx) and Microsoft Excel 97-2003 (.xls).
> When exporting the Spreadsheet to file formats such as Comma Separated Values (.csv), Excel Macro-Enabled Workbook (.xlsm), Excel Binary Workbook (.xlsb), and PDF Document (.pdf), the notes will not be available.
## Disabling notes
-To disable the note functionality, you need to set the [`enableNotes`](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/#enablenotes) property to **false**. After disabling, the notes in the document will not be shown when opened in the Spreadsheet. The **"Add Note"** option will not be shown in the context menu. The keyboard shortcuts for the note functionality will not work.
+To disable the note functionality, you need to set the [enableNotes](https://ej2.syncfusion.com/react/documentation/api/spreadsheet/index-default#enablenotes) property to **false**. After disabling, the notes in the document will not be shown when opened in the Spreadsheet. The **"Add Note"** option will not be shown in the context menu. The keyboard shortcuts for the note functionality will not work.

@@ -84,6 +149,8 @@ In the below example, the note functionality is disabled in the Spreadsheet.
The notes can be added initially when the Spreadsheet loads using cell data binding. You need to use the `notes` property in the cell settings to add notes to the Spreadsheet.
+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 js tabtitle="app.jsx" %}
{% include code-snippet/spreadsheet/react/note-cs3/app/app.jsx %}
diff --git a/Document-Processing/Excel/Spreadsheet/Vue/comment.md b/Document-Processing/Excel/Spreadsheet/Vue/comment.md
new file mode 100644
index 000000000..54021ec62
--- /dev/null
+++ b/Document-Processing/Excel/Spreadsheet/Vue/comment.md
@@ -0,0 +1,202 @@
+---
+layout: post
+title: Comment in Vue Spreadsheet control | Syncfusion
+description: Learn here all about Comment feature in Syncfusion Vue Spreadsheet control of Syncfusion Essential JS 2 and more.
+platform: document-processing
+control: Comment
+documentation: ug
+---
+
+# Comment in Vue Spreadsheet control
+The **Comment** feature allows you to add feedback to cells without changing their values, enabling contextual discussions through threaded **replies**. Unlike [Notes](./notes), Comment include advanced review tools such as **resolve** and **reopen** to track status, plus an optional **Comments Review Pane** for browsing and managing threads.
+
+Cells with comment display a small comment indicator; hover to preview the comment editor. This provides a clear, collaborative workflow while keeping data intact.
+
+
+
+## Author identity
+The Syncfusion Spreadsheet does not automatically track user identity. To tag new comments and replies with an author name, set the `author` property when initializing the Spreadsheet.
+
+```ts
+
+
+
+
+
+
+```
+>If the author property is not set, "Guest User" will be displayed as the author for comment and replies by default.
+
+## Adding a comment
+You can add a **comment** to a cell in several ways:
+* **Context menu**: Right-click the target cell and select **"New Comment"**.
+* **Ribbon**: Go to **Review > Comment > New Comment**.
+* **Keyboard shortcut**: Press Ctrl + Shift + F2 to open the comment editor for the active cell.
+* **Programmatically**:
+ * Use the `updateCell` method with the comment model to add a comment to a specific cell.
+ * Bind comments via code-behind during initial load by associating the comment model with the cell model.
+
+The image below shows that once a comment is posted, the cell displays an indicator, and the comment can be previewed on hover.
+
+
+
+## Adding a reply
+You can add one or more replies to an existing comment to provide additional details or answers:
+* **Context menu**: Right-click the cell that already has a comment, select **Comment > New Reply**, enter your reply, and click **Post**.
+* **Ribbon**: Go to **Review > Comment > New Comment** on a cell that contains a comment. This opens the comment editor in **reply mode**.
+* **Comment editor**: Open the comment editor by hovering over the comment indicator, type your reply, and click **Post**.
+* **Keyboard shortcut**: Press Ctrl + Shift + F2 on a cell that contains a comment to open the comment editor in reply mode.
+
+After posting, the replies appear under the first comment in the comment editor.
+
+
+
+## Editing a comment
+You can edit the content of a comment or its replies directly within the comment editor.
+
+* **Edit first comment**: In the comment editor. Click the **"⋯" (More thread actions)** menu in the header, select the **Edit Comment**, modify the text and click **Post**.
+* **Edit a reply comment**: In the comment editor, hover over the specific reply, click the **"⋯" (More actions)**, select the **Edit Comment**, modify the text and click **Post**.
+
+
+
+## Resolve and Reopen
+The **Resolve thread** option marks a comment thread as completed when the discussion or issue is addressed. When a thread is resolved, its background color changes to indicate the resolved state, and the reply input box and reply menu actions are hidden. Use **Reopen** to restore the comment if further discussion is needed.
+
+### Resolve a comment
+* In the comment editor, click the **"⋯" (More thread actions)** menu in the header and select **Resolve Thread**.
+
+### Reopen a comment
+* In the comment editor, click the **Reopen** button in the header to make the thread active again.
+
+
+
+You can also use the `isResolved` property in the comment model when initializing or updating comments programmatically.
+
+**Example: Using `isResolved` property in the comment model with the `updateCell` method**
+
+```ts
+// Update a cell with a comment using the updateCell method
+ spreadsheet.updateCell({
+ comment: {
+ author: 'Chistoper', text: 'Are you completed the report',
+ createdTime: 'January 03, 2026 at 5:00 PM',
+ // Set to true to mark the thread as resolved; false keeps it active
+ isResolved: false,
+ replies: [{ author: 'John', text: 'Yes, completed',
+ createdTime: 'January 03, 2026 at 7:00 PM' }]
+ }
+ }, 'Sheet1!D5');
+
+```
+
+## Deleting a comment or reply
+You can delete either a specific reply or an entire comment thread (including all replies) using the following options:
+
+### Deleting a comment thread
+* **Context menu**: Right-click the cell that contains the comment and select **Comment > Delete Comment**.
+* **Ribbon**: Go to **Review > Comment > Delete Comment** on a cell that contains the comment.
+* **Comment editor**: In the comment editor, click the **"⋯" (More thread actions)** menu in the header and select **Delete Thread** for an active comment or use the **Delete Thread** button in header for a resolved comment.
+
+Deleting a thread removes the comment and all its replies from the cell.
+
+
+
+### Delete a reply
+In the comment editor, hover over the reply and click the **"⋯" (More actions)** menu then select **Delete Comment**.
+
+
+
+## Next and Previous Comment
+The **Review > Comment > Next Comment and Previous Comment** options in the ribbon allow you to quickly navigate between cells that contain comments:
+
+* **Next Comment**: Moves to the next cell with a comment.
+* **Previous Comment**: Moves to the previous cell with a comment.
+
+Navigation starts within the active sheet. When all comments in the active sheet have been visited (end or start reached), the navigation automatically continues to the next or previous sheet that contains comments. This ensures you can review all comments across the workbook without manually switching sheets.
+
+
+
+## Comments review pane
+The **"Comments" review pane** provides a centralized view of all comments in the active sheet, making it easier to manage discussions without switching between individual cells. It offers filtering, inline actions, and navigation, ensuring an efficient review workflow across the workbook.
+
+You can show or hide the "Comments" review pane using:
+
+* **Ribbon**: Go to **Review > Comment > Show Comments**.
+* **Property**: Set the `showCommentsPane` property to true when initializing the Spreadsheet. By default, this property is **false**.
+
+
+
+### Features of the comments review pane
+The "Comments" review pane is rendered within the spreadsheet interface to provide a dedicated space for managing comments efficiently. It acts as a centralized hub where you can view all comment threads, perform actions, and keep discussions organized without navigating cell by cell.
+
+The "Comments" review pane allows you to:
+
+* Add new comment using the **New** button.
+* Filter comments by **All**, **Active**, or **Resolved** to view specific comment threads.
+* Navigate between comments and synchronize selection with the corresponding cells.
+* Perform actions such as:
+ * **Reply** – Add replies directly from the review pane.
+ * **Edit** – Modify the text of a comment or reply.
+ * **Delete** – Remove a reply or an entire thread.
+ * **Resolve/Reopen** – Change the status of a comment.
+
+When the review pane is open, all actions performed in the review pane or in the cell’s comment editor are synchronized:
+
+* Selecting a comment in the review pane highlights the corresponding cell in the sheet.
+* Selecting a cell with a comment focuses the respective comment thread in the review pane.
+* Actions such as **Reply**, **Edit**, **Delete**, and **Resolve/Reopen** update both the pane and the cell comment editor instantly, ensuring consistency across the UI.
+* The review pane dynamically updates when comments are added, deleted, or resolved, so you always see the latest state without refreshing.
+
+## Saving a Workbook with Comments
+You can save spreadsheet data along with **comments** using **File > Save As > Microsoft Excel(.xlsx)**.
+- **MS Excel (.xlsx)** - Preserves all **threaded comments** (modern comments).
+
+> Comments are **not included** when exporting to **.xls**, **.csv**, and **.pdf**.
+
+### Why comments are not saved in `.xls`
+The **.xls** format is based on the older Excel binary structure (BIFF8), which does not support modern features like **threaded comments**.
+Threaded comments introduced in newer Excel versions require the **Open XML** structure used by `.xlsx`.
+
+> To retain threaded comments, always save the workbook in **.xlsx** format.
+
+## Bind Comments via code-behind
+You can bind **comment thread** to cells at initial load by providing a `comment` object in the cell model. Each cell supports **per comment thread**, which can include:
+- **Comment**: `author`, `text`, `createdTime`, `isResolved`
+- **Replies**: A collection of replies. Each reply is an object containing its `author`, `text`, and `createdTime` (no nested replies-of-replies).
+
+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 html tabtitle="Composition API (~/src/App.vue)" %}
+{% include code-snippet/spreadsheet/vue/comment-cs1/app-composition.vue %}
+{% endhighlight %}
+{% highlight html tabtitle="Options API (~/src/App.vue)" %}
+{% include code-snippet/spreadsheet/vue/comment-cs1/app.vue %}
+{% endhighlight %}
+{% endtabs %}
+
+{% previewsample "/document-processing/code-snippet/spreadsheet/vue/comment-cs1" %}
+
+### Important Notes
+* **One thread per cell**: Attach a single `comment` object per cell. New remarks should be added as replies inside the existing thread.
+* **Author Identity**: The author name for each comment and reply is static once set. When exporting, the author information is preserved for all comments, even if multiple authors exist in the workbook.
+* **New comment**: When the "Comments" review pane is enabled, adding a new comment renders the drafted comment editor directly in the "Comments" review pane.
+
+## Limitations
+* **Un-posted comments are not stored**: If you type in the comment editor and close it without clicking **Post**, the entered text is not saved and will not appear when you reopen the editor. Only posted content is persisted in the comment model.
+* **Comments and Notes cannot coexist**: When a cell contains comment, notes cannot be added. Similarly, if a cell already has a notes, comment cannot be added.
+* **Comments in Print**: Comments are not included in print output.
+* **Non-collaborative**: Real-time multi-user synchronization is not supported. However, when exporting and re-importing the workbook, the author information for each comment and reply is preserved.
+
+## See Also
+* [Notes](./notes)
+* [Hyperlink](./link)
\ No newline at end of file
diff --git a/Document-Processing/Excel/Spreadsheet/Vue/images/spreadsheet_adding_a_comment.gif b/Document-Processing/Excel/Spreadsheet/Vue/images/spreadsheet_adding_a_comment.gif
new file mode 100644
index 000000000..863da7a34
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/Vue/images/spreadsheet_adding_a_comment.gif differ
diff --git a/Document-Processing/Excel/Spreadsheet/Vue/images/spreadsheet_comment.png b/Document-Processing/Excel/Spreadsheet/Vue/images/spreadsheet_comment.png
new file mode 100644
index 000000000..b002a6db3
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/Vue/images/spreadsheet_comment.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/Vue/images/spreadsheet_comment_reply.png b/Document-Processing/Excel/Spreadsheet/Vue/images/spreadsheet_comment_reply.png
new file mode 100644
index 000000000..548694016
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/Vue/images/spreadsheet_comment_reply.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/Vue/images/spreadsheet_delete-reply_comment.png b/Document-Processing/Excel/Spreadsheet/Vue/images/spreadsheet_delete-reply_comment.png
new file mode 100644
index 000000000..f2385a4f9
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/Vue/images/spreadsheet_delete-reply_comment.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/Vue/images/spreadsheet_delete_comment.png b/Document-Processing/Excel/Spreadsheet/Vue/images/spreadsheet_delete_comment.png
new file mode 100644
index 000000000..0c0ff11f1
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/Vue/images/spreadsheet_delete_comment.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/Vue/images/spreadsheet_edit_comment.png b/Document-Processing/Excel/Spreadsheet/Vue/images/spreadsheet_edit_comment.png
new file mode 100644
index 000000000..2874b11cb
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/Vue/images/spreadsheet_edit_comment.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/Vue/images/spreadsheet_next_previous_comment.png b/Document-Processing/Excel/Spreadsheet/Vue/images/spreadsheet_next_previous_comment.png
new file mode 100644
index 000000000..ece81c396
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/Vue/images/spreadsheet_next_previous_comment.png differ
diff --git a/Document-Processing/Excel/Spreadsheet/Vue/images/spreadsheet_resolve_reopen.gif b/Document-Processing/Excel/Spreadsheet/Vue/images/spreadsheet_resolve_reopen.gif
new file mode 100644
index 000000000..1307efbbb
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/Vue/images/spreadsheet_resolve_reopen.gif differ
diff --git a/Document-Processing/Excel/Spreadsheet/Vue/images/spreadsheet_show_comments.gif b/Document-Processing/Excel/Spreadsheet/Vue/images/spreadsheet_show_comments.gif
new file mode 100644
index 000000000..d033c0c9a
Binary files /dev/null and b/Document-Processing/Excel/Spreadsheet/Vue/images/spreadsheet_show_comments.gif differ
diff --git a/Document-Processing/Excel/Spreadsheet/Vue/notes.md b/Document-Processing/Excel/Spreadsheet/Vue/notes.md
index ac3edef37..82e1f805a 100644
--- a/Document-Processing/Excel/Spreadsheet/Vue/notes.md
+++ b/Document-Processing/Excel/Spreadsheet/Vue/notes.md
@@ -9,7 +9,7 @@ documentation: ug
# Notes in Vue Spreadsheet component
-The **Notes** feature is used to insert comments, provide feedback, suggest changes, or leave remarks on specific cells while reviewing documents in the Spreadsheet. You can enable or disable the notes functionality using the [`enableNotes`](https://ej2.syncfusion.com/vue/documentation/api/spreadsheet/#enablenotes) property, which defaults to **true**.
+The **Notes** feature is used to insert comments, provide feedback, suggest changes, or leave remarks on specific cells while reviewing documents in the Spreadsheet. You can enable or disable the notes functionality using the [enableNotes](https://ej2.syncfusion.com/vue/documentation/api/spreadsheet/index-default#enablenotes) property, which defaults to **true**.
When opening the Excel document with notes in the Spreadsheet, they will be displayed in the control. The cells containing notes will be indicated with a red colored triangle at the top-right corner. Hovering the mouse over these cells will display the content of the notes.
@@ -32,38 +32,103 @@ In the below example, you can add, edit, save, and delete notes.
In the active worksheet, you can add a note in the following ways:
-* To add a note, right-click the cell to open the context menu and choose the **"Add Note"** option from the context menu. This will open a dialog box to add the content as a note.
-* You can also use the `Shift` + `F2` keyboard shortcut to add a note to the desired cell. A dialog box will be opened to add the content as a note.
-* After entering the content in the dialog box, you can either click on other cells or press the `Esc` button on the keyboard to automatically save the note in the cell and close the dialog box.
+* **Context Menu**: Right-click the desired cell and select **Add Note**.
+* **Ribbon**: Select the cell, navigate to the **Review** tab, click the **Notes** dropdown, and select **Add Note**.
+* **Keyboard Shortcut**: Select the cell and press Shift + F2.
+* **Programmatically**:
+ * Use the `updateCell` method with the note model to add a note to a specific cell.
+ * Bind notes via code-behind during initial load by associating the note model with the cell model.
+
+A dialog box will open where you can enter the note content. After entering the content, you can either click on other cells or press the Esc button to automatically save the note and close the dialog box.

## Editing a note
-In the active worksheet, you can modify the content of existing notes in the document.
+In the active worksheet, you can modify the content of existing notes in the document:
+
+* **Context Menu**: Right-click the cell containing the note and select **Edit Note**.
+* **Ribbon**: Select the cell containing the note, navigate to the **Review** tab, click the **Notes** dropdown, and select **Edit Note**.
+* **Keyboard Shortcut**: Select the cell containing the note and press Shift + F2.
-* To edit a note, right-click on the desired cell containing the note, which will open the context menu.
-* Select the **"Edit Note"** option from the context menu.
-* You can also use the `Shift` + `F2` keyboard shortcut to edit the note of the desired cell. A dialog box will be opened to edit the note.
-* After editing the content in the dialog box, you can either click on other cells or press the `Esc` button on the keyboard to automatically save the note in the cell and close the dialog box.
+The note editor dialog box will open with the existing content. After editing the content, you can either click on other cells or press the Esc button to automatically save the changes and close the dialog box.

## Deleting a note
-In the active worksheet, right-click on the desired cell containing the note that you want to remove, which opens the context menu. In the context menu, select the **"Delete Note"** option to delete the note.
+You can remove notes from cells using the following ways:
+
+* **Context Menu**: Right-click the cell containing the note and select **Delete Note**.
+* **Ribbon**: Select the cell containing the note, navigate to the **Review** tab, click the **Notes** dropdown, and select **Delete Note**.
+
+The note will be removed from the cell, and the red triangle indicator will be removed.

+## Navigating between notes
+
+The Syncfusion Spreadsheet provides intuitive navigation to quickly move between cells containing notes in your worksheet. These options are accessible through the **Notes** dropdown in the **Review** tab.
+
+### Previous Note
+
+To navigate to the previous note:
+
+* In the **Review** tab, open the **Notes** dropdown and select **Previous Note**.
+* The Spreadsheet will automatically select the previous note in the current worksheet, searching leftward and then upward.
+* If no prior note exists in the sheet, the search continues to the previous worksheet in order.
+* If the workbook contains no notes, the selection remains on the current cell.
+
+### Next Note
+
+To navigate to the next note:
+
+* In the **Review** tab, open the **Notes** dropdown and select **Next Note**.
+* The Spreadsheet will automatically select the next note in the current worksheet, searching rightward and then downward.
+* If no subsequent note exists in the sheet, the search continues to the next worksheet in order.
+* If the workbook contains no notes, the selection remains on the current cell.
+
+This functionality streamlines the process of reviewing notes across worksheets, ensuring efficient traversal and discovery.
+
+## Show/Hide Note
+
+The **Show/Hide Note** option allows you to toggle the visibility of individual notes as sticky notes within the worksheet. When enabled, the note appears as a persistent floating text box, making it convenient to reference key information without hovering over the cell.
+
+To toggle the visibility of a note:
+
+* **Context Menu**: Right-click the cell containing the note and select **Show/Hide Note**.
+* **Ribbon**: Select the cell, go to the **Review** tab, click the **Notes** dropdown, and choose **Show/Hide Note**.
+
+**Behavior:**
+
+* **Default State (Hidden)**: Notes are hidden by default and only appear when hovering over the cell, which displays a red triangle indicator.
+* **Sticky State (Visible)**: Toggling Show/Hide Note on a hidden note makes it visible as a sticky note, which remains on display even when navigating to other cells or selections.
+* **Toggle Functionality**: Selecting Show/Hide Note again on a visible note hides it, reverting to the default state.
+* **Independent Control**: Each note can be toggled individually, allowing you to display only the most relevant notes for your current task.
+
+## Show All Notes
+
+The **Show All Notes** option enables you to display all notes in the current worksheet simultaneously as sticky notes, simplifying the review of multiple comments at a glance.
+
+To activate:
+
+* Navigate to the **Review** tab, click the **Notes** dropdown, and select **Show All Notes**.
+
+All notes in the worksheet will appear as floating text boxes near their respective cells.
+
+> **Note**: After using Show All Notes, you can hide individual notes selectively via the **Show/Hide Note** option. Additionally, any new notes added to the worksheet will automatically appear as visible sticky notes when Show All Notes is active.
+
+This functionality enhances workflow efficiency by providing flexible control over note visibility, whether for individual focus or comprehensive review.
+
## Saving the document with notes
-The Spreadsheet data, including notes, can be saved and exported as an Excel document by selecting **File > Save As** in the ribbon menu. Exporting worksheets with notes is supported in Excel file formats such as MS Excel (.xlsx) and MS Excel 97-2003 (.xls).
+The Spreadsheet data, including notes, can be saved and exported as an Excel document by selecting **File > Save As** in the ribbon menu. Exporting worksheets with notes is supported in Excel file formats such as Microsoft Excel (.xlsx) and Microsoft Excel 97-2003 (.xls).
> When exporting the Spreadsheet to file formats such as Comma Separated Values (.csv), Excel Macro-Enabled Workbook (.xlsm), Excel Binary Workbook (.xlsb), and PDF Document (.pdf), the notes will not be available.
## Disabling notes
-To disable the note functionality, you need to set the [`enableNotes`](https://ej2.syncfusion.com/vue/documentation/api/spreadsheet/#enablenotes) property to **false**. After disabling, the notes in the document will not be shown when opened in the Spreadsheet. The **"Add Note"** option will not be shown in the context menu. The keyboard shortcuts for the note functionality will not work.
+To disable the note functionality, you need to set the [enableNotes](https://ej2.syncfusion.com/vue/documentation/api/spreadsheet/index-default#enablenotes) property to **false**. After disabling, the notes in the document will not be shown when opened in the Spreadsheet. The **"Add Note"** option will not be shown in the context menu. The keyboard shortcuts for the note functionality will not work.

@@ -84,6 +149,8 @@ In the below example, the note functionality is disabled in the Spreadsheet.
The notes can be added initially when the Spreadsheet loads using cell data binding. You need to use the `notes` property in the cell settings to add notes to the Spreadsheet.
+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 html tabtitle="Composition API (~/src/App.vue)" %}
{% include code-snippet/spreadsheet/vue/note-cs3/app-composition.vue %}
diff --git a/Document-Processing/PDF/PDF-Library/NET/Merge-Documents.md b/Document-Processing/PDF/PDF-Library/NET/Merge-Documents.md
index 0aa295cb1..b9b62d860 100644
--- a/Document-Processing/PDF/PDF-Library/NET/Merge-Documents.md
+++ b/Document-Processing/PDF/PDF-Library/NET/Merge-Documents.md
@@ -24,21 +24,16 @@ Refer to the following code example to merge multiple documents from disk.
//Due to platform limitations, the PDF file cannot be loaded from disk. However, you can merge multiple documents from stream using the following code snippet.
//Creates a PDF document.
PdfDocument finalDoc = new PdfDocument();
-FileStream stream1 = new FileStream("file1.pdf", FileMode.Open, FileAccess.Read);
-FileStream stream2 = new FileStream("file2.pdf", FileMode.Open, FileAccess.Read);
-//Creates a PDF stream for merging.
-Stream[] streams = { stream1, stream2 };
+//Creates a string array of source files to be merged.
+string[] source = { "file1.pdf", "file2.pdf" };
//Merges PDFDocument.
-PdfDocumentBase.Merge(finalDoc, streams);
+PdfDocumentBase.Merge(finalDoc, source);
//Save the document into stream.
MemoryStream stream = new MemoryStream();
finalDoc.Save(stream);
//Close the document.
finalDoc.Close(true);
-//Disposes the streams.
-stream1.Dispose();
-stream2.Dispose();
{% endhighlight %}
@@ -392,22 +387,16 @@ The following code shows how to merge multiple PDF documents using [Merge](https
//Creates a PDF document.
PdfDocument finalDoc = new PdfDocument();
-//Load the PDF document.
-FileStream stream1 = new FileStream("file1.pdf", FileMode.Open, FileAccess.Read);
-FileStream stream2 = new FileStream("file2.pdf", FileMode.Open, FileAccess.Read);
-//Creates a PDF stream for merging.
-Stream[] streams = { stream1, stream2 };
+//Creates a string array of source files to be merged.
+string[] source = { "file1.pdf", "file2.pdf" };
//Merges PDFDocument.
-PdfDocumentBase.Merge(finalDoc, streams);
+PdfDocumentBase.Merge(finalDoc, source);
//Save the document into stream.
MemoryStream stream = new MemoryStream();
finalDoc.Save(stream);
//Close the document.
finalDoc.Close(true);
-//Disposes the streams.
-stream1.Dispose();
-stream2.Dispose();
{% endhighlight %}
@@ -457,25 +446,19 @@ Refer to the following code example to optimize the PDF resources when merging P
//Due to platform limitations, the PDF file cannot be loaded from disk. However, you can optimize PDF resources when merging multiple documents from stream using the following code snippet.
//Create a PDF document.
PdfDocument finalDoc = new PdfDocument();
-//Load the PDF document.
-FileStream stream1 = new FileStream("file1.pdf", FileMode.Open, FileAccess.Read);
-FileStream stream2 = new FileStream("file2.pdf", FileMode.Open, FileAccess.Read);
-//Creates a PDF stream for merging.
-Stream[] streams = { stream1, stream2 };
+//Creates a string array of source files to be merged.
+string[] source = { "file1.pdf", "file2.pdf" };
PdfMergeOptions mergeOptions = new PdfMergeOptions();
//Enable Optimize Resources.
mergeOptions.OptimizeResources = true;
//Merges PDFDocument.
-PdfDocumentBase.Merge(finalDoc, mergeOptions, streams);
+PdfDocumentBase.Merge(finalDoc, mergeOptions, source);
//Save the document into stream.
MemoryStream stream = new MemoryStream();
finalDoc.Save(stream);
//Close the document.
finalDoc.Close(true);
-//Disposes the streams.
-stream1.Dispose();
-stream2.Dispose();
{% endhighlight %}
@@ -538,25 +521,19 @@ PdfMargins margin= new PdfMargins();
margin.All=40;
//Set margin.
finalDoc.PageSettings.Margins = margin;
-//Load the PDF document.
-FileStream stream1 = new FileStream("file1.pdf", FileMode.Open, FileAccess.Read);
-FileStream stream2 = new FileStream("file2.pdf", FileMode.Open, FileAccess.Read);
-//Create a PDF stream for merging.
-Stream[] streams = { stream1, stream2 };
+//Creates a string array of source files to be merged.
+string[] source = { "file1.pdf", "file2.pdf" };
PdfMergeOptions mergeOptions = new PdfMergeOptions();
//Enable the Extend Margin.
mergeOptions.ExtendMargin = true;
//Merge PDFDocument.
-PdfDocumentBase.Merge(finalDoc, mergeOptions, streams);
+PdfDocumentBase.Merge(finalDoc, mergeOptions, source);
//Save the document into stream.
MemoryStream stream = new MemoryStream();
finalDoc.Save(stream);
//Close the document.
finalDoc.Close(true);
-//Dispose the stream.
-stream1.Dispose();
-stream2.Dispose();
{% endhighlight %}
@@ -625,24 +602,18 @@ The Syncfusion® PDF library enables users to merge PDF documents
//Create a PDF document.
PdfDocument finalDoc = new PdfDocument();
-//Load the PDF document.
-FileStream stream1 = new FileStream("file1.pdf", FileMode.Open, FileAccess.Read);
-FileStream stream2 = new FileStream("file2.pdf", FileMode.Open, FileAccess.Read);
-//Create a PDF stream for merging.
-Stream[] streams = { stream1, stream2 };
+//Create a string array of source files to be merged.
+string[] source = { "file1.pdf", "file2.pdf" };
PdfMergeOptions mergeOptions = new PdfMergeOptions();
//Enable the Merge Accessibility Tags.
mergeOptions.MergeAccessibilityTags = true;
//Merge PDFDocument.
-PdfDocumentBase.Merge(finalDoc, mergeOptions, streams);
+PdfDocumentBase.Merge(finalDoc, mergeOptions, source);
//Save the document into stream.
MemoryStream stream = new MemoryStream();
finalDoc.Save(stream);
//Close the document.
-finalDoc.Close(true);
-//Dispose the stream.
-stream1.Dispose();
-stream2.Dispose();
+finalDoc.Close(true);
{% endhighlight %}
diff --git a/Document-Processing/PDF/PDF-Library/NET/Overview.md b/Document-Processing/PDF/PDF-Library/NET/Overview.md
index 5878b6044..55d5c7bf6 100644
--- a/Document-Processing/PDF/PDF-Library/NET/Overview.md
+++ b/Document-Processing/PDF/PDF-Library/NET/Overview.md
@@ -8,7 +8,7 @@ documentation: UG
# Overview of PDF Framework
-The PDF framework is a feature rich [.NET PDF class library](https://www.syncfusion.com/document-processing/pdf-framework/net) developed with 100% managed C# code that can be used to create, read and write PDF. The library can be used in [Windows Forms](https://www.syncfusion.com/document-processing/pdf-framework/net), [WPF](https://www.syncfusion.com/document-processing/pdf-framework/net), [ASP.NET Web Forms](https://www.syncfusion.com/document-processing/pdf-framework/net), [ASP.NET MVC](https://www.syncfusion.com/document-processing/pdf-framework/net), [ASP.NET Core](https://www.syncfusion.com/document-processing/pdf-framework/net-core), [Blazor](https://www.syncfusion.com/document-processing/pdf-framework/blazor), [UWP](https://www.syncfusion.com/document-processing/pdf-framework/uwp), [Xamarin](https://www.syncfusion.com/document-processing/pdf-framework/xamarin), [Flutter](https://www.syncfusion.com/document-processing/pdf-framework/flutter), [WinUI](https://www.syncfusion.com/document-processing/pdf-framework/winui) and [.NET MAUI](https://www.syncfusion.com/document-processing/pdf-framework/maui) applications and Unity platform without the dependency of Adobe Acrobat. The creation of PDF follows the most popular PDF 1.7 (ISO 32000-1) and latest PDF 2.0 (ISO 32000-2) specifications.
+The PDF framework is a feature rich [.NET PDF class library](https://www.syncfusion.com/document-sdk/net-pdf-library) developed with 100% managed C# code that can be used to create, read and write PDF. The library can be used in [Windows Forms](https://www.syncfusion.com/document-sdk/net-pdf-library), [WPF](https://www.syncfusion.com/document-sdk/net-pdf-library), [ASP.NET Web Forms](https://www.syncfusion.com/document-sdk/net-pdf-library), [ASP.NET MVC](https://www.syncfusion.com/document-sdk/net-pdf-library), [ASP.NET Core](https://www.syncfusion.com/document-sdk/net-pdf-library), [Blazor](https://www.syncfusion.com/document-sdk/net-pdf-library), [UWP](https://www.syncfusion.com/document-sdk/net-pdf-library), [Xamarin](https://www.syncfusion.com/document-sdk/net-pdf-library), [Flutter](https://www.syncfusion.com/document-sdk/flutter-pdf-library), [WinUI](https://www.syncfusion.com/document-sdk/net-pdf-library) and [.NET MAUI](https://www.syncfusion.com/document-sdk/net-pdf-library) applications and Unity platform without the dependency of Adobe Acrobat. The creation of PDF follows the most popular PDF 1.7 (ISO 32000-1) and latest PDF 2.0 (ISO 32000-2) specifications.
## Key Features of Essential® PDF
diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-Document-Conversions.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-Document-Conversions.md
index b9d6af630..f984b9807 100644
--- a/Document-Processing/PDF/PDF-Library/NET/Working-with-Document-Conversions.md
+++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-Document-Conversions.md
@@ -993,7 +993,7 @@ Refer the below code snippet to draw a single frame monochrome TIFF image with J
Compression Applied
Default
-
All images
+
Non-TIFF images
Applies Deflate (DEFLATE) compression to monochrome, grayscale, and color images.
@@ -1003,7 +1003,7 @@ Refer the below code snippet to draw a single frame monochrome TIFF image with J
JBIG2
-
All images
+
Monochrome (bi-level)
Supported only in lossy mode and only for single-frame TIFF images.
@@ -1076,7 +1076,7 @@ N> 2. By default, all monochrome images will be compressed in CITTT4 compression
The XPS (XML Paper Specification) document format is a fixed document format which consists of structured XML markup that defines the layout of a document and the visual appearance of each page, along with rendering rules for distributing, archiving, rendering, processing and printing the documents.
-Essential® PDF provides support for converting XPS to PDF using [XPSToPdfConverter](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Base~Syncfusion.XPS.XPSToPdfConverter.html) class.
+Essential® PDF provides support for converting XPS to PDF using [XPSToPdfConverter](https://help.syncfusion.com/cr/document-processing/Syncfusion.XPS.XPSToPdfConverter.html) class.
The below code illustrates how to convert XPS to PDF.
@@ -1400,7 +1400,7 @@ N> To know more about PdfToImageConverter and features it provides, please refer
## HTML to PDF
-The [HTML to PDF converter library](https://www.syncfusion.com/document-processing/pdf-framework/net/html-to-pdf) supports converting web pages and HTML content into high-quality PDF documents.
+The [HTML to PDF converter library](https://www.syncfusion.com/document-sdk/net-pdf-library/html-to-pdf) supports converting web pages and HTML content into high-quality PDF documents.
**Learn more about the features supported in HTML to PDF conversion here**: [HTML to PDF Features](https://help.syncfusion.com/document-processing/pdf/conversions/html-to-pdf/net/features)
@@ -1464,7 +1464,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
## SVG to PDF
-The [HTML to PDF converter library](https://www.syncfusion.com/document-processing/pdf-framework/net/html-to-pdf) supports converting the SVG to PDF document. Please refer to the following code example.
+The [HTML to PDF converter library](https://www.syncfusion.com/document-sdk/net-pdf-library/html-to-pdf) supports converting the SVG to PDF document. Please refer to the following code example.
{% tabs %}
diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-XFA.MD b/Document-Processing/PDF/PDF-Library/NET/Working-with-XFA.MD
index 92cc4fa51..ccf81610a 100644
--- a/Document-Processing/PDF/PDF-Library/NET/Working-with-XFA.MD
+++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-XFA.MD
@@ -14,11 +14,11 @@ XFA stands for XML Forms Architecture, dynamic forms are based on a XML specific
## Creating a new XFA form
-Essential® PDF allows you to create and manipulate the XFA form in PDF document by using [PdfXfaDocument](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaDocument.html) and [PdfXfaForm](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaForm.html) classes. The [PdfXfaFieldCollection](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaFieldCollection.html) class represents the entire field collection of the XFA form.
+Essential® PDF allows you to create and manipulate the XFA form in PDF document by using [PdfXfaDocument](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaDocument.html) and [PdfXfaForm](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaForm.html) classes. The [PdfXfaFieldCollection](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaFieldCollection.html) class represents the entire field collection of the XFA form.
### Adding a new page to the XFA document
-The following code example explains how to add a new page using [PdfXfaPage](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaPage.html) class in a PDF XFA document.
+The following code example explains how to add a new page using [PdfXfaPage](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaPage.html) class in a PDF XFA document.
{% tabs %}
@@ -106,7 +106,7 @@ N> PDF supports XFA forms only in Windows Forms, WPF, ASP.NET, ASP.NET MVC, UWP
### Adding the XFA document settings
-Essential® PDF supports various XFA page setting options through [PdfXfaPageSettings](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaPageSettings.html) class, to control the page display.
+Essential® PDF supports various XFA page setting options through [PdfXfaPageSettings](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaPageSettings.html) class, to control the page display.
The below sample illustrates how to create a new PDF document with XFA page size.
@@ -310,7 +310,7 @@ document.Close()
You can download a complete working sample from [GitHub](https://github.com/SyncfusionExamples/PDF-Examples/tree/master/XFA/Create-a-custom-page-size-to-the-PDF-document).
-You can change page orientation from portrait to landscape by using [PdfXfaPageOrientation](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaPageOrientation.html) Enum. The below code snippet explains this.
+You can change page orientation from portrait to landscape by using [PdfXfaPageOrientation](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaPageOrientation.html) Enum. The below code snippet explains this.
{% tabs %}
@@ -419,7 +419,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
## Creating dynamic XFA forms
-To create a dynamic XFA forms using [PdfXfaType](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaType.html) Enum and save the dynamic form document using below example code.
+To create a dynamic XFA forms using [PdfXfaType](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaType.html) Enum and save the dynamic form document using below example code.
{% tabs %}
@@ -522,7 +522,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
## Creating static XFA forms
-To create a static XFA forms using [PdfXfaType](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaType.html) Enum and save the static form document using below example code.
+To create a static XFA forms using [PdfXfaType](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaType.html) Enum and save the static form document using below example code.
{% tabs %}
@@ -627,7 +627,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
### Adding the XFA text box field
-The below code snippet illustrates how to add a textbox field to a new PDF document using [PdfXfaTextBoxField](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaTextBoxField.html) class.
+The below code snippet illustrates how to add a textbox field to a new PDF document using [PdfXfaTextBoxField](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaTextBoxField.html) class.
{% tabs %}
@@ -813,7 +813,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
### Adding the XFA numeric field
-The below code snippet illustrates how to add a numeric field to a new PDF document using [PdfXfaNumericField](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaNumericField.html) class.
+The below code snippet illustrates how to add a numeric field to a new PDF document using [PdfXfaNumericField](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaNumericField.html) class.
{% tabs %}
@@ -987,7 +987,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
### Adding the XFA combo box field
-The below code snippet illustrates how to add a combo box field to a new PDF document using [PdfXfaComboBoxField](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaComboBoxField.html) class.
+The below code snippet illustrates how to add a combo box field to a new PDF document using [PdfXfaComboBoxField](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaComboBoxField.html) class.
{% tabs %}
@@ -1186,7 +1186,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
### Adding the XFA list box field
-The below code snippet illustrates how to add a list box field to a new PDF document using [PdfXfaListBoxField](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaListBoxField.html) class.
+The below code snippet illustrates how to add a list box field to a new PDF document using [PdfXfaListBoxField](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaListBoxField.html) class.
{% tabs %}
@@ -1395,7 +1395,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
### Adding XFA check box field
-The below code snippet illustrates how to add a check box field to a new PDF document using [PdfXfaCheckBoxField](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaCheckBoxField.html) class.
+The below code snippet illustrates how to add a check box field to a new PDF document using [PdfXfaCheckBoxField](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaCheckBoxField.html) class.
{% tabs %}
@@ -1574,7 +1574,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
### Adding the XFA radio button field
-The below code snippet illustrates how to add a radio button field to a new PDF document using [PdfXfaRadioButtonField](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaRadioButtonField.html) class and add it into [PdfXfaRadioButtonGroup](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaRadioButtonGroup.html).
+The below code snippet illustrates how to add a radio button field to a new PDF document using [PdfXfaRadioButtonField](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaRadioButtonField.html) class and add it into [PdfXfaRadioButtonGroup](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaRadioButtonGroup.html).
{% tabs %}
@@ -1801,7 +1801,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
### Adding the XFA date time field
-The below code snippet illustrates how to add a date time field to a new PDF document using [PdfXfaDateTimeField](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaDateTimeField.html) class.
+The below code snippet illustrates how to add a date time field to a new PDF document using [PdfXfaDateTimeField](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaDateTimeField.html) class.
{% tabs %}
@@ -1985,7 +1985,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
### Adding the XFA button field
-The below code snippet illustrates how to add a button field to a new PDF document using [PdfXfaButtonField](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaButtonField.html) class.
+The below code snippet illustrates how to add a button field to a new PDF document using [PdfXfaButtonField](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaButtonField.html) class.
{% tabs %}
@@ -2157,7 +2157,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
### Adding the XFA text element
-The below code snippet illustrates how to add a text element to a new PDF document using [PdfXfaTextElement](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaTextElement.html) class.
+The below code snippet illustrates how to add a text element to a new PDF document using [PdfXfaTextElement](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaTextElement.html) class.
{% tabs %}
@@ -2330,7 +2330,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
### Adding the XFA rectangle field
-The below code snippet illustrates how to add the rectangle field to a new PDF document using [PdfXfaRectangleField](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaRectangleField.html) class.
+The below code snippet illustrates how to add the rectangle field to a new PDF document using [PdfXfaRectangleField](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaRectangleField.html) class.
{% tabs %}
@@ -2502,7 +2502,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
### Adding the XFA circle field
-The below code snippet illustrates how to add the circle field to a new PDF document using [PdfXfaCircleField](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaCircleField.html) class.
+The below code snippet illustrates how to add the circle field to a new PDF document using [PdfXfaCircleField](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaCircleField.html) class.
{% tabs %}
@@ -2674,7 +2674,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
### Adding the XFA line
-The below code snippet illustrates how to add a line to a new PDF document using [PdfXfaLine](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaLine.html) class.
+The below code snippet illustrates how to add a line to a new PDF document using [PdfXfaLine](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaLine.html) class.
{% tabs %}
@@ -2846,7 +2846,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
### Adding the XFA image
-The below code snippet illustrates how to add an image to a new PDF document using [PdfXfaImage](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaImage.html) class.
+The below code snippet illustrates how to add an image to a new PDF document using [PdfXfaImage](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaImage.html) class.
{% tabs %}
@@ -3017,7 +3017,7 @@ There are two types of flow directions available in XFA forms.
### Horizontal flow direction
-You can set the flow direction to an XFA form while creating, using [PdfXfaFlowDirection](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaFlowDirection.html) Enum. The below sample illustrate how to set the horizontal flow direction in XFA forms.
+You can set the flow direction to an XFA form while creating, using [PdfXfaFlowDirection](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaFlowDirection.html) Enum. The below sample illustrate how to set the horizontal flow direction in XFA forms.
{% tabs %}
@@ -3134,7 +3134,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
### Vertical flow direction
-You can set the flow direction to an XFA form while creating, using [PdfXfaFlowDirection](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaFlowDirection.html) Enum. The below sample illustrate how to set the vertical flow direction in XFA forms.
+You can set the flow direction to an XFA form while creating, using [PdfXfaFlowDirection](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaFlowDirection.html) Enum. The below sample illustrate how to set the vertical flow direction in XFA forms.
{% tabs %}
@@ -3251,7 +3251,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
## Rotating XFA form fields
-You can rotate a form field in XFA document, using [PdfXfaRotateAngle](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaRotateAngle.html) Enum. The following code snippet explains this.
+You can rotate a form field in XFA document, using [PdfXfaRotateAngle](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaRotateAngle.html) Enum. The following code snippet explains this.
{% tabs %}
@@ -3356,7 +3356,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
## Validating the date time field
-You can validate the date time fields of the input text by enabling the [RequireValidation](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaDateTimeField.html#Syncfusion_Pdf_Xfa_PdfXfaDateTimeField_RequireValidation) property of [PdfXfaDateTimeField](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaDateTimeField.html). The following code snippet illustrates this.
+You can validate the date time fields of the input text by enabling the [RequireValidation](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaDateTimeField.html#Syncfusion_Pdf_Xfa_PdfXfaDateTimeField_RequireValidation) property of [PdfXfaDateTimeField](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaDateTimeField.html). The following code snippet illustrates this.
{% tabs %}
@@ -3461,7 +3461,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
## Customizing the numeric field value
-You can customize the numeric field input value to the specific pattern through [PatternString](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaNumericField.html#Syncfusion_Pdf_Xfa_PdfXfaNumericField_PatternString) property of [PdfXfaNumericField](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaNumericField.html) class. The following code snippet explains this.
+You can customize the numeric field input value to the specific pattern through [PatternString](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaNumericField.html#Syncfusion_Pdf_Xfa_PdfXfaNumericField_PatternString) property of [PdfXfaNumericField](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaNumericField.html) class. The following code snippet explains this.
Please refer the below link for numeric pattern format in detail,
[Numeric Pattern](http://help.adobe.com/en_US/livecycle/10.0/DesignerHelp/WS92d06802c76abadb-56c02439129b8b00ebc-7ecf.html).
@@ -3560,7 +3560,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
## Adding nested sub forms
-You can add the nested sub forms by using [PdfXfaForm](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaForm.html) class. The below code snippet explains this.
+You can add the nested sub forms by using [PdfXfaForm](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaForm.html) class. The below code snippet explains this.
{% tabs %}
@@ -3698,7 +3698,7 @@ XFA support both the horizontal and vertical alignments.
### Horizontal alignment
-You can add the horizontal alignments in XFA form fields through [HorizontalAlignment](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaStyledField.html#Syncfusion_Pdf_Xfa_PdfXfaStyledField_HorizontalAlignment) property by using [PdfXfaHorizontalAlignment](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaHorizontalAlignment.html) Enum. The below code snippet illustrates this.
+You can add the horizontal alignments in XFA form fields through [HorizontalAlignment](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaStyledField.html#Syncfusion_Pdf_Xfa_PdfXfaStyledField_HorizontalAlignment) property by using [PdfXfaHorizontalAlignment](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaHorizontalAlignment.html) Enum. The below code snippet illustrates this.
{% tabs %}
@@ -3794,7 +3794,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
### Vertical alignment
-You can add the vertical alignments in XFA form fields through [VerticalAlignment](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaStyledField.html#Syncfusion_Pdf_Xfa_PdfXfaStyledField_VerticalAlignment) property by using [PdfXfaVerticalAlignment](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaVerticalAlignment.html) Enum. The below code snippet explains this.
+You can add the vertical alignments in XFA form fields through [VerticalAlignment](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaStyledField.html#Syncfusion_Pdf_Xfa_PdfXfaStyledField_VerticalAlignment) property by using [PdfXfaVerticalAlignment](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaVerticalAlignment.html) Enum. The below code snippet explains this.
{% tabs %}
@@ -3893,7 +3893,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
### Adding margins to the XFA fields
-You can add margin to the XFA form fields by using [Margins](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaField.html#Syncfusion_Pdf_Xfa_PdfXfaField_Margins) property. The below code snippet explains this.
+You can add margin to the XFA form fields by using [Margins](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaField.html#Syncfusion_Pdf_Xfa_PdfXfaField_Margins) property. The below code snippet explains this.
{% tabs %}
@@ -3995,7 +3995,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
### Adding padding to the XFA fields
-You can add padding to the XFA form fields by using [padding](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaTextBoxField.html#Syncfusion_Pdf_Xfa_PdfXfaTextBoxField_Padding) property. The below code snippet explains this.
+You can add padding to the XFA form fields by using [padding](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaTextBoxField.html#Syncfusion_Pdf_Xfa_PdfXfaTextBoxField_Padding) property. The below code snippet explains this.
{% tabs %}
@@ -4094,7 +4094,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
### Adding border to the XFA fields
-You can add border to the XFA fields by using [Border](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaStyledField.html#Syncfusion_Pdf_Xfa_PdfXfaStyledField_Border) property. The below code snippet explains this.
+You can add border to the XFA fields by using [Border](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaStyledField.html#Syncfusion_Pdf_Xfa_PdfXfaStyledField_Border) property. The below code snippet explains this.
{% tabs %}
@@ -4196,11 +4196,11 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
## Filling form fields in an existing XFA document
-Essential® PDF allows you to fill the XFA form fields using [PdfLoadedXfaform](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfLoadedXfaForm.html) class.
+Essential® PDF allows you to fill the XFA form fields using [PdfLoadedXfaform](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfLoadedXfaForm.html) class.
### Filling the XFA text box field
-Please refer the below sample for filling the XFA text box field using [PdfLoadedXfaTextBoxField](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfLoadedXfaTextBoxField.html) class.
+Please refer the below sample for filling the XFA text box field using [PdfLoadedXfaTextBoxField](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfLoadedXfaTextBoxField.html) class.
{% tabs %}
@@ -4275,7 +4275,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
### Filling the XFA numeric field
-You can fill the XFA numeric field by using [PdfLoadedXfaNumericField](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfLoadedXfaNumericField.html) class. The below code snippet illustrates this.
+You can fill the XFA numeric field by using [PdfLoadedXfaNumericField](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfLoadedXfaNumericField.html) class. The below code snippet illustrates this.
{% tabs %}
@@ -4350,7 +4350,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
### Filling the XFA combo box field
-You can fill the XFA combo box field by using [PdfLoadedXfaComboBoxField](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfLoadedXfaComboBoxField.html) class. The below code snippet explains this.
+You can fill the XFA combo box field by using [PdfLoadedXfaComboBoxField](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfLoadedXfaComboBoxField.html) class. The below code snippet explains this.
{% tabs %}
@@ -4423,7 +4423,7 @@ loadedDocument.Close()
You can download a complete working sample from [GitHub](https://github.com/SyncfusionExamples/PDF-Examples/tree/master/XFA/Filling-the-XFA-combobox-field-in-an-existing-PDF-document).
-You can fill and save hidden items in XFA combo box field by using [HiddenItems](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfLoadedXfaComboBoxField.html#Syncfusion_Pdf_Xfa_PdfLoadedXfaComboBoxField_HiddenItems) property. The below code snippet explains this.
+You can fill and save hidden items in XFA combo box field by using [HiddenItems](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfLoadedXfaComboBoxField.html#Syncfusion_Pdf_Xfa_PdfLoadedXfaComboBoxField_HiddenItems) property. The below code snippet explains this.
{% tabs %}
@@ -4507,7 +4507,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
### Filling the XFA list box field
-You can fill the XFA list box field by using [PdfLoadedXfaListBoxField](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfLoadedXfaListBoxField.html) class. The below code snippet illustrates this.
+You can fill the XFA list box field by using [PdfLoadedXfaListBoxField](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfLoadedXfaListBoxField.html) class. The below code snippet illustrates this.
{% tabs %}
@@ -4580,7 +4580,7 @@ loadedDocument.Close()
You can download a complete working sample from [GitHub](https://github.com/SyncfusionExamples/PDF-Examples/tree/master/XFA/Fill-the-XFA-listbox-field-in-an-existing-PDF-document).
-You can also select the multiple values by using [SelectedItems](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfLoadedXfaListBoxField.html#Syncfusion_Pdf_Xfa_PdfLoadedXfaListBoxField_SelectedItems) property. The below code snippet explains this.
+You can also select the multiple values by using [SelectedItems](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfLoadedXfaListBoxField.html#Syncfusion_Pdf_Xfa_PdfLoadedXfaListBoxField_SelectedItems) property. The below code snippet explains this.
{% tabs %}
@@ -4655,7 +4655,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
### Filling the XFA date time field
-You can fill the XFA date time field by using [PdfLoadedXfaDateTimeField](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfLoadedXfaDateTimeField.html) class. The below code snippet explains this.
+You can fill the XFA date time field by using [PdfLoadedXfaDateTimeField](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfLoadedXfaDateTimeField.html) class. The below code snippet explains this.
{% tabs %}
@@ -4730,7 +4730,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
### Filling the XFA check box field
-You can fill the XFA check box field by using [PdfLoadedXfaCheckBoxField](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfLoadedXfaCheckBoxField.html) class. The below code snippet illustrates this.
+You can fill the XFA check box field by using [PdfLoadedXfaCheckBoxField](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfLoadedXfaCheckBoxField.html) class. The below code snippet illustrates this.
{% tabs %}
@@ -4805,7 +4805,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
### Filling the XFA radio button field
-You can fill the XFA radio button field by using [PdfLoadedXfaRadioButtonField](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfLoadedXfaRadioButtonField.html) class. The below code snippet explains this.
+You can fill the XFA radio button field by using [PdfLoadedXfaRadioButtonField](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfLoadedXfaRadioButtonField.html) class. The below code snippet explains this.
{% tabs %}
@@ -4886,9 +4886,9 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
### Removing editing capability of form fields
-The form field editing or filling capabilities can be removed by marking the form or field as read only. To prevent the user from changing the form field content, you can enable the [ReadOnly](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaForm.html#Syncfusion_Pdf_Xfa_PdfXfaForm_ReadOnly) property of [PdfXfaForm](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaForm.html).
+The form field editing or filling capabilities can be removed by marking the form or field as read only. To prevent the user from changing the form field content, you can enable the [ReadOnly](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaForm.html#Syncfusion_Pdf_Xfa_PdfXfaForm_ReadOnly) property of [PdfXfaForm](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaForm.html).
-The below code snippet illustrates how to set the [ReadOnly](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfXfaForm.html#Syncfusion_Pdf_Xfa_PdfXfaForm_ReadOnly) property to a new PDF document.
+The below code snippet illustrates how to set the [ReadOnly](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfXfaForm.html#Syncfusion_Pdf_Xfa_PdfXfaForm_ReadOnly) property to a new PDF document.
{% tabs %}
@@ -4985,7 +4985,7 @@ document.Close()
You can download a complete working sample from [GitHub](https://github.com/SyncfusionExamples/PDF-Examples/tree/master/XFA/Removing-editing-capability-of-form-fields-in-a-new-PDF).
-The below code snippet illustrates how to set the [ReadOnly](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfLoadedXfaForm.html#Syncfusion_Pdf_Xfa_PdfLoadedXfaForm_ReadOnly) property to an existing PDF document.
+The below code snippet illustrates how to set the [ReadOnly](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfLoadedXfaForm.html#Syncfusion_Pdf_Xfa_PdfLoadedXfaForm_ReadOnly) property to an existing PDF document.
{% tabs %}
@@ -5052,7 +5052,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
## Flattening XFA Form fields
The form field editing or filling capabilities can be removed by flattening the PDF document.
-The Essential® PDF flattens a form field by removing the existing form field and replacing it with graphical objects that will resemble the form field and cannot be edited. This can be achieved by enabling the [Flatten](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfLoadedXfaDocument.html#Syncfusion_Pdf_Xfa_PdfLoadedXfaDocument_Flatten) property of [PdfLoadedXfaDocument](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfLoadedXfaDocument.html).
+The Essential® PDF flattens a form field by removing the existing form field and replacing it with graphical objects that will resemble the form field and cannot be edited. This can be achieved by enabling the [Flatten](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfLoadedXfaDocument.html#Syncfusion_Pdf_Xfa_PdfLoadedXfaDocument_Flatten) property of [PdfLoadedXfaDocument](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfLoadedXfaDocument.html).
The following code snippet illustrates how to flatten the XFA form field.
{% tabs %}
@@ -5102,7 +5102,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
## Removing the dynamic form fields from an existing XFA document
-You can remove the dynamic XFA form fields by using [Remove](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfLoadedXfaFieldCollection.html#Syncfusion_Pdf_Xfa_PdfLoadedXfaFieldCollection_Remove_Syncfusion_Pdf_Xfa_PdfLoadedXfaField_) method of [PdfLoadedXfaFieldCollection](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfLoadedXfaFieldCollection.html) class. The below code snippet explained this.
+You can remove the dynamic XFA form fields by using [Remove](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfLoadedXfaFieldCollection.html#Syncfusion_Pdf_Xfa_PdfLoadedXfaFieldCollection_Remove_Syncfusion_Pdf_Xfa_PdfLoadedXfaField_) method of [PdfLoadedXfaFieldCollection](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfLoadedXfaFieldCollection.html) class. The below code snippet explained this.
{% tabs %}
@@ -5177,7 +5177,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
## Modifying the existing fields in XFA document
-You can modify the existing dynamic XFA fields like Width, Height and Text by using [PdfLoadedXfaTextBoxField](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfLoadedXfaTextBoxField.html) class. The below code snippet explains this.
+You can modify the existing dynamic XFA fields like Width, Height and Text by using [PdfLoadedXfaTextBoxField](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfLoadedXfaTextBoxField.html) class. The below code snippet explains this.
{% tabs %}
@@ -5261,7 +5261,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
## Clear XFA date time field value
-The Essential® PDF supports clearing XFA form date time fields values, you can clear the date time values by using the [ClearValue](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfLoadedXfaDateTimeField.html#Syncfusion_Pdf_Xfa_PdfLoadedXfaDateTimeField_ClearValue) method available in the [PdfLoadedXfaDateTimeField](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Xfa.PdfLoadedXfaDateTimeField.html).
+The Essential® PDF supports clearing XFA form date time fields values, you can clear the date time values by using the [ClearValue](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfLoadedXfaDateTimeField.html#Syncfusion_Pdf_Xfa_PdfLoadedXfaDateTimeField_ClearValue) method available in the [PdfLoadedXfaDateTimeField](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Xfa.PdfLoadedXfaDateTimeField.html).
The following sample illustrates how to clear the date time field in an existing XFA document.
diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-ZUGFeRD-invoice.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-ZUGFeRD-invoice.md
index d0746ee48..6b3be86df 100644
--- a/Document-Processing/PDF/PDF-Library/NET/Working-with-ZUGFeRD-invoice.md
+++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-ZUGFeRD-invoice.md
@@ -26,7 +26,7 @@ N> The **Minimum** and **EN16931** conformance levels are only supported in **Zu
N> The **XRechnung** conformance level is only supported in **Factur-X**.
N> A **PDF/A-3** file contains embedded XML data, making the invoice both **human-readable (PDF)** and **machine-readable (XML)** within the same document.
-The ZUGFeRD invoice document can be created by specifying the conformance level as ``Pdf_A3B`` through [PdfConformanceLevel](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.PdfConformanceLevel.html) Enum when creating the new PDF document and set the [ZugferdConformanceLevel](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.PdfDocument.html#Syncfusion_Pdf_PdfDocument_ZugferdConformanceLevel) property as *Basic* in [ZugferdConformanceLevel](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.ZugferdConformanceLevel.html) Enum.
+The ZUGFeRD invoice document can be created by specifying the conformance level as ``Pdf_A3B`` through [PdfConformanceLevel](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.PdfConformanceLevel.html) Enum when creating the new PDF document and set the [ZugferdConformanceLevel](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.PdfDocument.html#Syncfusion_Pdf_PdfDocument_ZugferdConformanceLevel) property as *Basic* in [ZugferdConformanceLevel](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.ZugferdVersion.html) Enum.
{% tabs %}
@@ -62,7 +62,7 @@ document.ZugferdConformanceLevel = ZugferdConformanceLevel.Basic
{% endtabs %}
-Using PDF/A-3b conformance, you can create a ZUGFeRD invoice PDF by specifying the [ZugferdVersion](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.PdfDocument.html#Syncfusion_Pdf_PdfDocument_ZugferdVersion) property as *ZugferdVersion2_0* of [ZugferdVersion](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.ZugferdVersion.html) Enum. By default, ZugferdVersion1.0 used.
+Using PDF/A-3b conformance, you can create a ZUGFeRD invoice PDF by specifying the [ZugferdVersion](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.PdfDocument.html#Syncfusion_Pdf_PdfDocument_ZugferdVersion) property as *ZugferdVersion2_0* of [ZugferdVersion](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.ZugferdVersion.html) Enum. By default, ZugferdVersion1.0 used.
{% tabs %}
@@ -100,7 +100,7 @@ document.ZugferdVersion = ZugferdVersion.ZugferdVersion2_0
## Adding ZUGFeRD structured data as attachment
-The PDF/A-3b conformance supports the external files as attachment to the PDF document using [PdfAttachment](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Interactive.PdfAttachment.html) class.
+The PDF/A-3b conformance supports the external files as attachment to the PDF document using [PdfAttachment](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Interactive.PdfAttachment.html) class.
{% tabs %}
@@ -156,7 +156,7 @@ N> 1. **ZUGFeRD 1.0**: The file name should be "ZUGFeRD-invoice.xml".
N> 2. **ZUGFeRD 2.0**: The file name should be "zugferd-invoice.xml".
N> 3. **Factur-X**: The file name should be "factur-x.xml", except for **XRechnung**, where the file name must be "xrechnung.xml".
-Using **PDF/A-3b** conformance, you can create a **ZUGFeRD invoice PDF** by specifying the [ZugferdVersion](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.PdfDocument.html#Syncfusion_Pdf_PdfDocument_ZugferdVersion) property as **Factur-X** in the [ZugferdVersion](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.ZugferdVersion.html) Enum.
+Using **PDF/A-3b** conformance, you can create a **ZUGFeRD invoice PDF** by specifying the [ZugferdVersion](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.PdfDocument.html#Syncfusion_Pdf_PdfDocument_ZugferdVersion) property as **Factur-X** in the [ZugferdVersion](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.ZugferdVersion.html) Enum.
{% tabs %}
@@ -356,7 +356,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
## Extract ZUGFeRD invoice from PDF
-You can extract the ZUGFeRD invoice using [PdfAttachment](https://help.syncfusion.com/cr/document-processings/Syncfusion.Pdf.Interactive.PdfAttachment.html) class.
+You can extract the ZUGFeRD invoice using [PdfAttachment](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Interactive.PdfAttachment.html) class.
{% tabs %}
diff --git a/Document-Processing/PDF/PDF-Library/NET/Working-with-forms.md b/Document-Processing/PDF/PDF-Library/NET/Working-with-forms.md
index 5dc7e7b86..b93b096d9 100644
--- a/Document-Processing/PDF/PDF-Library/NET/Working-with-forms.md
+++ b/Document-Processing/PDF/PDF-Library/NET/Working-with-forms.md
@@ -4504,6 +4504,94 @@ document.Close(True)
You can download a complete working sample from [GitHub](https://github.com/SyncfusionExamples/PDF-Examples/tree/master/Forms/Export_checkbox_values/.NET).
+## Add a date field to a PDF form
+
+This section explains how to add a date text box field to a PDF form using the Syncfusion PDF library. The field is initialized with a sample date and uses JavaScript-based formatting to enforce the date format, validate input, and automatically format user entries.
+
+The following code example illustrates how to add a date field to a PDF form.
+
+{% tabs %}
+{% highlight c# tabtitle="C# [Cross-platform]" playgroundButtonLink="https://raw.githubusercontent.com/SyncfusionExamples/PDF-Examples/master/Forms/Add-a-date-field-to-a-PDF/.NET/Add-a-date-field-to-a-PDF/Program.cs" %}
+
+using Syncfusion.Drawing;
+using Syncfusion.Pdf;
+using Syncfusion.Pdf.Interactive;
+
+// Create a new PDF document
+using (PdfDocument pdfDocument = new PdfDocument())
+{
+ // Add a new page to the PDF document
+ PdfPage pdfPage = pdfDocument.Pages.Add();
+ // Create a text box field for entering the name
+ PdfTextBoxField nameField = new PdfTextBoxField(pdfPage, "DateField");
+ nameField.Bounds = new RectangleF(10, 40, 70, 20);
+ nameField.ToolTip = "Date";
+ nameField.Text = "12/01/1995";
+ //Set the scriptAction to submitButton
+ nameField.Actions.KeyPressed = new PdfJavaScriptAction("AFDate_KeystrokeEx(\"mm/dd/yyyy\")");
+ nameField.Actions.Format = new PdfJavaScriptAction("AFDate_FormatEx(\"mm/dd/yyyy\")");
+ nameField.Actions.Validate = new PdfJavaScriptAction("AFDate_Validate(\"mm/dd/yyyy\")");
+ // Add the field to the form
+ pdfDocument.Form.Fields.Add(nameField);
+ // Save the PDF document
+ pdfDocument.Save(Path.GetFullPath(@"Output/Output.pdf"));
+}
+{% endhighlight %}
+{% highlight c# tabtitle="C# [Windows-specific]" %}
+
+using System.Drawing;
+using Syncfusion.Pdf;
+using Syncfusion.Pdf.Interactive;
+
+// Create a new PDF document
+using (PdfDocument pdfDocument = new PdfDocument())
+{
+ // Add a new page to the PDF document
+ PdfPage pdfPage = pdfDocument.Pages.Add();
+ // Create a text box field for entering the name
+ PdfTextBoxField nameField = new PdfTextBoxField(pdfPage, "DateField");
+ nameField.Bounds = new RectangleF(10, 40, 70, 20);
+ nameField.ToolTip = "Date";
+ nameField.Text = "12/01/1995";
+ //Set the scriptAction to submitButton
+ nameField.Actions.KeyPressed = new PdfJavaScriptAction("AFDate_KeystrokeEx(\"mm/dd/yyyy\")");
+ nameField.Actions.Format = new PdfJavaScriptAction("AFDate_FormatEx(\"mm/dd/yyyy\")");
+ nameField.Actions.Validate = new PdfJavaScriptAction("AFDate_Validate(\"mm/dd/yyyy\")");
+ // Add the field to the form
+ pdfDocument.Form.Fields.Add(nameField);
+ // Save the PDF document
+ pdfDocument.Save(Path.GetFullPath(@"Output/Output.pdf"));
+}
+{% endhighlight %}
+{% highlight vb.net tabtitle="VB.NET [Windows-specific]" %}
+
+Imports System.Drawing
+Imports Syncfusion.Pdf
+Imports Syncfusion.Pdf.Interactive
+
+' Create a new PDF document
+Using pdfDocument As New PdfDocument()
+ ' Add a new page to the PDF document
+ Dim pdfPage As PdfPage = pdfDocument.Pages.Add()
+ ' Create a text box field for entering the name
+ Dim nameField As New PdfTextBoxField(pdfPage, "DateField")
+ nameField.Bounds = New RectangleF(10, 40, 70, 20)
+ nameField.ToolTip = "Date"
+ nameField.Text = "12/01/1995"
+ ' Set the scriptAction to submitButton
+ nameField.Actions.KeyPressed = New PdfJavaScriptAction("AFDate_KeystrokeEx(\"mm/dd/yyyy\")")
+ nameField.Actions.Format = New PdfJavaScriptAction("AFDate_FormatEx(\"mm/dd/yyyy\")")
+ nameField.Actions.Validate = New PdfJavaScriptAction("AFDate_Validate(\"mm/dd/yyyy\")")
+ ' Add the field to the form
+ pdfDocument.Form.Fields.Add(nameField)
+ ' Save the PDF document
+ pdfDocument.Save(Path.GetFullPath("Output/Output.pdf"))
+End Using
+{% endhighlight %}
+{% endtabs %}
+
+You can download a complete working sample from [GitHub](https://github.com/SyncfusionExamples/PDF-Examples/tree/master/Forms/Add-a-date-field-to-a-PDF/.NET).
+
## Unified radio button selection
The essential® PDF allows radio buttons within the same group that have identical export values to be selected or deselected simultaneously.
diff --git a/Document-Processing/PDF/PDF-Library/flutter/getting-started.md b/Document-Processing/PDF/PDF-Library/flutter/getting-started.md
new file mode 100644
index 000000000..ccaf9f8a7
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Library/flutter/getting-started.md
@@ -0,0 +1,605 @@
+---
+layout: post
+title: Getting started with Flutter PDF library | Syncfusion
+description: Learn here about getting started with Syncfusion Flutter PDF non-UI library, its elements, and more.
+platform: document-processing
+control: PDF
+documentation: ug
+---
+
+# Getting started with Flutter PDF
+
+This section explains the steps required to create a [Flutter PDF library](https://www.syncfusion.com/document-processing/pdf-framework/flutter/pdf-library) document by a single button click. This section covers only the minimal features needed to learn to get started with the PDF.
+
+Check the following video to quickly get started with creating a Flutter PDF document.
+{% youtube "https://youtu.be/tMM9ty4Wfq0?si=b3EBPP0mjVpLKdBJ" %}
+
+## Steps to create PDF document in Flutter application
+
+Create a simple project using the instructions given in the [`Getting Started with your first Flutter app'](https://docs.flutter.dev/get-started/test-drive#choose-your-ide) documentation.
+
+**Add dependency**
+
+Add the Syncfusion®
+ Flutter PDF dependency to your pub spec file.
+
+{% highlight dart %}
+
+dependencies:
+ syncfusion_flutter_pdf: ^xx.x.xx
+
+{% endhighlight %}
+
+N> Here **xx.x.xx** denotes the current version of [`Syncfusion Flutter PDF`](https://pub.dev/packages/syncfusion_flutter_pdf/versions) package.
+
+**Get packages**
+
+Run the following command to get the required packages.
+
+{% highlight dart %}
+
+$ flutter pub get
+
+{% endhighlight %}
+
+**Import package**
+
+Import the following package in your Dart code.
+
+{% highlight dart %}
+
+import 'package:syncfusion_flutter_pdf/pdf.dart';
+
+{% endhighlight %}
+
+Add a new button widget as a child of your container widget.
+
+{% highlight dart %}
+
+@override
+Widget build(BuildContext context) {
+ return Scaffold(
+ body: Center(
+ child: TextButton(
+ onPressed: _createPDF,
+ child: Text('Create PDF')
+ )
+ )
+ );
+}
+
+{% endhighlight %}
+
+Include the following code snippet in the button click event to create a PDF file.
+
+{% highlight dart %}
+
+Future _createPDF() async {
+ //Create a new PDF document
+ PdfDocument document = PdfDocument();
+
+ //Add a new page and draw text
+ document.pages.add().graphics.drawString(
+ 'Hello World!', PdfStandardFont(PdfFontFamily.helvetica, 20),
+ brush: PdfSolidBrush(PdfColor(0, 0, 0)),
+ bounds: Rect.fromLTWH(0, 0, 500, 50));
+
+ //Save the document
+ List bytes = await document.save();
+
+ //Dispose the document
+ document.dispose();
+}
+
+{% endhighlight %}
+
+## Save and open a PDF document in desktop
+
+You can save and open a PDF document in desktop by using the following steps:
+
+**Set up**
+
+Configure and enable the desktop support to run the app.
+
+{% highlight dart %}
+
+flutter config --enable--desktop
+
+{% endhighlight %}
+
+N> You only need to execute `flutter config --enable--desktop` once. You can always check the status of your configuration using the no-argument flutter config command.
+
+Here you can get more details about [`How to add desktop support in the app`](https://docs.flutter.dev/desktop)
+
+**Add dependency**
+
+Add the following packages to your pub spec file.
+
+{% highlight dart %}
+
+path_provider: ^1.6.5
+open_file: ^3.0.1
+
+{% endhighlight %}
+
+**Import package**
+
+{% highlight dart %}
+
+import 'dart:io';
+import 'package:open_file/open_file.dart';
+import 'package:path_provider/path_provider.dart';
+
+{% endhighlight %}
+
+Include the following code snippet in _createPDF method to open the PDF document in mobile after saving it.
+
+{% highlight dart %}
+
+//Get external storage directory
+final directory = await getExternalStorageDirectory();
+
+//Get directory path
+final path = directory.path;
+
+//Create an empty file to write PDF data
+File file = File('$path/Output.pdf');
+
+//Write PDF data
+await file.writeAsBytes(bytes, flush: true);
+
+//Open the PDF document in mobile
+OpenFile.open('$path/Output.pdf');
+
+{% endhighlight %}
+
+## Save and open a PDF document in mobile
+
+You can save and open a PDF document in mobile by using the following steps:
+
+**Add dependency**
+
+Add the following packages to your pub spec file.
+
+{% highlight dart %}
+
+path_provider: ^2.0.7
+open_file: ^3.2.1
+
+{% endhighlight %}
+
+**Import package**
+
+{% highlight dart %}
+
+import 'dart:io';
+import 'package:open_file/open_file.dart';
+import 'package:path_provider/path_provider.dart';
+
+{% endhighlight %}
+
+Include the following code snippet in _createPDF method to open the PDF document in mobile after saving it.
+
+{% highlight dart %}
+
+//Get external storage directory
+final directory = await getApplicationSupportDirectory();
+
+//Get directory path
+final path = directory.path;
+
+//Create an empty file to write PDF data
+File file = File('$path/Output.pdf');
+
+//Write PDF data
+await file.writeAsBytes(bytes, flush: true);
+
+//Open the PDF document in mobile
+OpenFile.open('$path/Output.pdf');
+
+{% endhighlight %}
+
+## Save and download a PDF document in web
+
+You can save and download a PDF document in web by using the following steps.
+
+**Import package**
+
+{% highlight dart %}
+
+import 'dart:async';
+import 'dart:convert';
+import 'dart:js' as js;
+
+{% endhighlight %}
+
+Include the following code snippet in _createPDF method to open the document in web after saving it.
+
+{% highlight dart %}
+
+js.context['pdfData'] = base64.encode(bytes);
+js.context['filename'] = 'Output.pdf';
+Timer.run(() {
+ js.context.callMethod('download');
+});
+
+{% endhighlight %}
+
+Add the following code in the header section of index.html file under the web folder.
+
+{% highlight dart %}
+
+
+
+{% endhighlight %}
+
+## Save and download a PDF document in WASM
+
+step 1: Add the [web](https://pub.dev/packages/web) package as a dependency in your **pubspec.yaml** file.
+
+step 2: Create a new Dart file called **save_file_wasm.dart**.
+
+step 3: Add the following code:
+
+**Import package**
+
+{% highlight dart %}
+
+import 'dart:convert';
+import 'package:web/web.dart' as web;
+
+{% endhighlight %}
+
+To enable file saving and launching for download in a web environment, include the following code snippet within the **saveAndLaunchFile** method.
+
+{% highlight dart %}
+
+// Function to save and launch a file for download in a web environment
+Future saveAndLaunchFile(List bytes, String fileName) async {
+ final web.HTMLAnchorElement anchor =
+ web.document.createElement('a') as web.HTMLAnchorElement
+ ..href = "data:application/octet-stream;base64,${base64Encode(bytes)}"
+ ..style.display = 'none'
+ ..download = fileName;
+
+// Insert the new element into the DOM
+web.document.body!.appendChild(anchor);
+
+// Initiate the download
+anchor.click();
+// Clean up the DOM by removing the anchor element
+web.document.body!.removeChild(anchor);
+}
+
+{% endhighlight %}
+
+By executing the above code sample, you will get the PDF document as follows.
+
+
+
+## Creating a PDF document with image
+
+The following code example shows how to create a PDF document with an image.
+
+{% highlight dart %}
+
+//Creates a new PDF document
+PdfDocument document = PdfDocument();
+
+//Draw the image
+document.pages.add().graphics.drawImage(
+ PdfBitmap(File('image.jpg').readAsBytesSync()),
+ Rect.fromLTWH(0, 0, 100, 100));
+
+//Saves the document
+File('Output.pdf').writeAsBytes(await document.save());
+
+//Dispose the document
+document.dispose();
+
+{% endhighlight %}
+
+## Creating a PDF document with table
+
+{% highlight dart %}
+
+//Creates a new PDF document
+PdfDocument document = PdfDocument();
+
+//Create a PdfGrid
+PdfGrid grid = PdfGrid();
+
+//Add the columns to the grid
+grid.columns.add(count: 3);
+
+//Add header to the grid
+grid.headers.add(1);
+
+//Add the rows to the grid
+PdfGridRow header = grid.headers[0];
+header.cells[0].value = 'RollNo';
+header.cells[1].value = 'Name';
+header.cells[2].value = 'Class';
+
+//Add rows to grid
+PdfGridRow row = grid.rows.add();
+row.cells[0].value = '1';
+row.cells[1].value = 'Arya';
+row.cells[2].value = '6';
+row = grid.rows.add();
+row.cells[0].value = '12';
+row.cells[1].value = 'John';
+row.cells[2].value = '9';
+row = grid.rows.add();
+row.cells[0].value = '42';
+row.cells[1].value = 'Tony';
+row.cells[2].value = '8';
+
+//Draw grid to the page of the PDF document
+grid.draw(
+ page: document.pages.add(), bounds: Rect.fromLTWH(0, 0, 0, 0));
+
+//Saves the document
+File('Output.pdf').writeAsBytes(await document.save());
+
+//Dispose the document
+document.dispose();
+
+{% endhighlight %}
+
+## Creating a simple PDF document with basic elements
+
+The [`PdfDocument`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfDocument-class.html) object represents an entire PDF document that is being created. The following code example shows how to create a PDF document and add a [`PdfPage`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfPage-class.html) to it along with the [`PdfPageSettings`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfPageSettings-class.html).
+
+{% highlight dart %}
+
+//Creates a new PDF document
+PdfDocument document = PdfDocument();
+
+//Adds page settings
+document.pageSettings.orientation = PdfPageOrientation.landscape;
+document.pageSettings.margins.all = 50;
+
+//Adds a page to the document
+PdfPage page = document.pages.add();
+PdfGraphics graphics = page.graphics;
+
+{% endhighlight %}
+
+* All the units are measured in point instead of pixel.
+* In PDF, all the elements are placed in absolute positions and has the possibility for content overlapping if misplaced.
+* Syncfusion®
+ PDF provides the rendered bounds for each and every element added through [`PdfLayoutResult`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfLayoutResult-class.html) objects. This can be used to add successive elements and prevent content overlap.
+
+The following code example explains how to add an image from base64 string to a PDF document, by providing the rectangle coordinates.
+
+{% highlight dart %}
+
+//Loads the image from base64 string
+PdfImage image = PdfBitmap.fromBase64String(
+ '/9j/4AAQSkZJRgABAQAAAQABAAD/4gIoSUNDX1BST0ZJTEUAAQEAAAIYAAAAAAQwAABtbnRyUkdCIFhZWiAAAAAAAAAAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAAHRyWFlaAAABZAAAABRnWFlaAAABeAAAABRiWFlaAAABjAAAABRyVFJDAAABoAAAAChnVFJDAAABoAAAAChiVFJDAAABoAAAACh3dHB0AAAByAAAABRjcHJ0AAAB3AAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAFgAAAAcAHMAUgBHAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z3BhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABYWVogAAAAAAAA9tYAAQAAAADTLW1sdWMAAAAAAAAAAQAAAAxlblVTAAAAIAAAABwARwBvAG8AZwBsAGUAIABJAG4AYwAuACAAMgAwADEANv/bAEMA///////////////////////////////////////////////////////////////////////////////////////bAEMB///////////////////////////////////////////////////////////////////////////////////////AABEIASkDmQMBIgACEQEDEQH/xAAYAAEBAQEBAAAAAAAAAAAAAAAAAgEDBP/EACoQAQEAAgEEAwACAwACAwEAAAABAhExEiFBUWFxkTKBE6GxIuFCwdHw/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAEC/8QAGhEBAQEBAQEBAAAAAAAAAAAAABEBQTEhUf/aAAwDAQACEQMRAD8A6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAm5SfYKHLrvqNmfufgOgyWXhoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyup8uK8+Z9IAABWN1f+uzzususNgsc/8AJ8f7b1z1QWI658t68fYKE9WPtu57gNGbntoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOec4rm72bmnGyzkGAAOtmsPz/rMcfNVn/G/1/0HEAAAAAAAG7vu/rZlZ5/UgO8u5tqMOFgAAAAAAM3EW7Fg6CJe60AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE9OPo1jj3U5Z3d14gL68TLvj2+HF1w4/sEdOXo6cvTsA49OXo6MvTsy2TkHLpy//AKxKssrfpIANkt4Bjpjh5v4qYyfftQAAAAAADLxWsvAIAUHRznLoaACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcrqf8cVZXd+IkB3k1NIwnn8dAAAHHK7t+HZzzx8z+wcwAdJh7/HThGOW+15/6230DbZGdV8Ex9qBGrW9PyoBPT8mqoAAATlwpFu6DAFFY+1E7CAAAMtkRcqLF70zqiBKRXVWbvtgLDd903QA3fdbu+2AK6q3qiAI6bla5NlsKkdBMyn0pUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT1QFJyup806nK3dBjZN3TF4aneg6SammgAAAADnlj5n45vQ554zmcg5umNnnn25gPQOeOXi/roAAAAACbfQFvhIKCpPLJPawBlykRbaixdsiLlaxsxqL8xguYxRErn01vTVhCo6flvTFCpWdMOmNAT0xnT8rBa56sY6sslSFcxtxv2wUbLYwB0l21zxvd0VnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNy9M3aqTQJ1byrUaAjO6mvbkrP8AkkGybunbpicJqb9rBGrOGzL2plmwaIl12qwAAEc1V4ZiDMsd95y5PQnLHf2DivHLXa8f8TZrlgPQOOOWvp2l3wAy2QvCAbbthq1XT7UTrapPZ1ScJttSrFXKRNtrJLVzH2h8xCpj7WEKySRrNxPUqLHPdFg6DmEHQRutmXtBQAAAAADLJWgOdljHVmp6SLU4zvtYKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAi3d0q8MxgNk00AAATcZWTCebtYAAAADLNpl12q05TyChku40E5cNnEZl4bOIDQAZcZXGyzl3ZZLyDgvC99e2XC/a8cdd7yCr3NSF7Rz3sq5i7l6Rba2Y2rkkQ+YiS1Uxn2pm5FhWibl6SRFXL0ndo3pqjBeo0o56vpvTVhRGqx0CjmKs9JAl06cubcQWAgAAAAAAAAAAAAAAA529wdBmPDQBGV7s7/KLHQc92OkUgIyvdU4EaIyvhWPANEZVnf5RY6CJvflaoDnu7dABz3bXQAc+/wAs7/KVY6iJvflWXCo0RirLgGiMeVXgGjn3+Tv8pVjoIx3tdVAc+/yd/lKsdBmPHdqoAjK8AsTjwm3uLHQZxETdvIjoDnu0WOg59/klu53SkdAc7btUdBz/APL5N32lWOgOdt2qOgy3URN280WOgOe7RI6Dn3+Sb2lWOgCoAAAAAAAAAAidrpaLysE5NnELwzEFAAAAAAyzcJJGgM3GdTNU6aobrFdMVoEaremKEAAAAAAAABNm1AI1VSaaAAAAAAAAAAAAAAAAAzK6jm296ZevhGsXOI1k4n0Xiqyi966OePK7wmLqL3ro5zl0MNc8uVztP6RlzVZXtIH4md66Jxnlt4U1F710covq+ENUzLhqMvCpiXTfb+nNVv8A4xGtZjy6JxUuJqcuGY+TLlWPCdONRktzvJpiseGZeFThF5DPVY8GXDZwnLkOmLcuCWSfabdh1uPluXDZwnI4dMVol0qXYa0BUEZcrc8uU1cVxihV8Rk5FVlfBjPKb3roJxOXDMTJuPB043LhOPJl4bjwdONvCJyrLhmPbdDPFXhGPLbdxuIcVeHOcqy4QGNt3VyajMZ5UGsy4Tjyqzcc+KGeLy4ZjFS7aoAzLi/VENz3P03Pc/XAB33Pc/TcvmfrgrD+X6DsAAAAACcvDZwzLw2cQGo4q05QFDJWgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMt1GoyvfQYYzyzLk1WI06py4UjLlUz0x8ty4bOE5cpw6Y+Vsx4aqa53n+y96y81WM8o0tOXCkZcqmGM2rpjMeFBo55cujnO9TTG5TtEry4QLjpOI0ZeFZRe9dHPHl0TF0rnO9VlwzEM8W5zvVZcMx5DPFud71d4ROTTDLx9KkmmZeG48HTinO96u8InJpiumNkkaKgAA53n+3RyTVxU73afK52iBVYzutkmo2qmud710jnO9dEw1zy5XOETvXQw1GXJ/8Z9sveqy4D8ZjJVox5WuGoy5T6be9blxEX8bjwpGPlas6JynlM71d4RfES6ro5zl0MNGZcX6rWZcX6qo4AAKw/l+pVh/L9B2AAAAABGXK0TvVgAAizXeKl21Nmu8BQmZe1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVzku+7oAOervjy6ADnd74roA59/lsxvlYkWgCo56vpc7NBaOd3viugI59/lWO/O1AtZeE4zusEZeE4zusCicuFAJxigBOW+ye/y6Atc+/yrGaigKnLgxigRORj5UAnLhPf5dAWuff5dAEAAK5yV0Bay8VEnd0AozLhoI59/k7/AC6CRajGeVXhoqOcndd4rQKjHe10Ac5LteXDQWox3tV4aCOff5O/y6CRanGeVAqDMuL9VrMuL9UHAABWH8v1KsP5foOwAAAAAAAAAAAMslTqxYDJvy0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFzk471Fyt8/gOzNz3P1wAegedUys8g7DnM/a974BojrnqnXPVBYjrnqnXPVBYyZStAAAGW6m09c9UFiOueqqXfcGjLZOXO53x2B1Zue442281gO+57jXnbuzyDuOUzvnuuZSgpmXF+q1mXF+qDgAArD+X6lWH8v0HYAAZbJyi5+v0HRm57jjbbzWA77nufrXnN2A9A5TOz5XM5fgFAAAADjllu9uIY5WfMB2GS74aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA55ZeJ/a8rqWuAAADZLeIrHHfe8OoOHTfVY9DLJeYDg2WzhVw9fiscdd7z/wABmUut+fLm9DjlNX/gJABsurt3nfu868MtdrwDqCM8tdvYIyu78RIA2Td07WzGMxmp81Gd3degTbb3rAACTd07TGT79g5dN9U1ZzHcB5x2uEvwjou9f7BuFv8AS8uL9Uk12hlxfqg4AAKw/l+pVh/L9B2Zbqba553voEW21gAA6Y9PNs3/AMBGrfFNWeK7gPOO1xlc7hd//YNwt3rw6sk1NNATldT5qnDK7oMABstjtLK4EuuAegTjlv7UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACM+P7cnbObn13cQAAd5xPpqcbufSgAAAZLLwDU5Tc/4oB5x0znn9cwAAdZl278z/AG5W7uwAXhN9/SZN3TtJqaBrheb913ccpq39BIALw5/p1ccbquwAAAMuUgNZlxfqtZlxfqg4AAKw/l+pVh/L9B2ccv5V2cs53+wQAAC5hvvsEN3fddOie63oxBEyu538urOmTwWycg0C9u4Izupr25Nt3dsAFTG2b/0kAAB1xy32vLk2XV2DuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ZTVd2WSwHAbcbP/wBYDZbOFzP3HMB268ff+qy5zw5ANuVvJLq7YuYe/wAB0l3NtOABwymq7pym58+AcQAAXhN3fiArGam/NWACM5ub9LAecdMsPM/HMBUzs+YkB1659N68XEBdzvjsgbMbeAXhl4v9Ly4v1WY4yfbbxfqg4DdX1fymr6v5QYrD+X6zV9X8qsZd8X8B1TlNz5igHnHXLHfecuXACplZ9JAdeufTevFxAdLn6cxslvALwy8X+jO+P1upjN3vXLkBuM3dMdsJqfNBScsZftTLdTYONmu1Y23d2wAFYzd+PIOs4n00AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE3CX4+lAOf+P5Z0X3HUBz6Plswn2sBkknEaAAAAJyup80HPLW7pIA2Td07Samk4TU35qwAAAAGWS8xoCLhPFZ0X26AOXRfcb/j+XQBMxk/9qAAAAAAAAABlkvLQEXCeOzP8fy6AOXRfcb/j+XQBMwk+ftQAnLHq86T/AI/n/X/t0Ac5h35/06AAyzc00Bz6L7Z0X3HUBzmHurkk4aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcOFu7ted8frmArGbvxEybd5NTQNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//2Q==');
+
+//Draws the image to the PDF page
+page.graphics.drawImage(image, Rect.fromLTWH(176, 0, 390, 130));
+
+{% endhighlight %}
+
+The following methods can be used to add text to a PDF document.
+
+* [`drawString`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGraphics/drawString.html) method of the [`PdfGraphics`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGraphics-class.html)
+* [`PdfTextElement`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfTextElement-class.html) class.
+
+The [`PdfTextElement`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfTextElement-class.html) provides the layout result of the added text by using the location of the next element that decides to prevent content overlapping. This is not available in the [`drawString`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGraphics/drawString.html) method.
+
+The following code example adds the necessary text such as address, invoice number and date to create a basic invoice application.
+
+{% highlight dart %}
+
+PdfBrush solidBrush = PdfSolidBrush(PdfColor(126, 151, 173));
+Rect bounds = Rect.fromLTWH(0, 160, graphics.clientSize.width, 30);
+
+//Draws a rectangle to place the heading in that region
+graphics.drawRectangle(brush: solidBrush, bounds: bounds);
+
+//Creates a font for adding the heading in the page
+PdfFont subHeadingFont = PdfStandardFont(PdfFontFamily.timesRoman, 14);
+
+//Creates a text element to add the invoice number
+PdfTextElement element =
+ PdfTextElement(text: 'INVOICE 001', font: subHeadingFont);
+element.brush = PdfBrushes.white;
+
+//Draws the heading on the page
+PdfLayoutResult result = element.draw(
+ page: page, bounds: Rect.fromLTWH(10, bounds.top + 8, 0, 0))!;
+
+//Use 'intl' package for date format.
+String currentDate = 'DATE ' + DateFormat.yMMMd().format(DateTime.now());
+
+//Measures the width of the text to place it in the correct location
+Size textSize = subHeadingFont.measureString(currentDate);
+Offset textPosition = Offset(
+ graphics.clientSize.width - textSize.width - 10, result.bounds.top);
+
+//Draws the date by using drawString method
+graphics.drawString(currentDate, subHeadingFont,
+ brush: element.brush,
+ bounds: Offset(graphics.clientSize.width - textSize.width - 10,
+ result.bounds.top) &
+ Size(textSize.width + 2, 20));
+
+//Creates text elements to add the address and draw it to the page
+element = PdfTextElement(
+ text: 'BILL TO ',
+ font: PdfStandardFont(PdfFontFamily.timesRoman, 10,
+ style: PdfFontStyle.bold));
+element.brush = PdfSolidBrush(PdfColor(126, 155, 203));
+result = element.draw(
+ page: page, bounds: Rect.fromLTWH(10, result.bounds.bottom + 25, 0, 0))!;
+
+PdfFont timesRoman = PdfStandardFont(PdfFontFamily.timesRoman, 10);
+
+element = PdfTextElement(text: 'Victuailles en stock ', font: timesRoman);
+element.brush = PdfBrushes.black;
+result = element.draw(
+ page: page, bounds: Rect.fromLTWH(10, result.bounds.bottom + 10, 0, 0))!;
+
+element = PdfTextElement(
+ text: '2, rue du Commerce, Lyon, France ', font: timesRoman);
+element.brush = PdfBrushes.black;
+result = element.draw(
+ page: page, bounds: Rect.fromLTWH(10, result.bounds.bottom + 10, 0, 0))!;
+
+//Draws a line at the bottom of the address
+graphics.drawLine(
+ PdfPen(PdfColor(126, 151, 173), width: 0.7),
+ Offset(0, result.bounds.bottom + 3),
+ Offset(graphics.clientSize.width, result.bounds.bottom + 3));
+
+{% endhighlight %}
+
+Since the invoice document requires only simple cell customizations, the given code example explains how to create a simple invoice table by using [`PdfGrid`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGrid-class.html).
+
+{% highlight dart %}
+
+//Creates a PDF grid
+PdfGrid grid = PdfGrid();
+
+//Add the columns to the grid
+grid.columns.add(count: 5);
+
+//Add header to the grid
+grid.headers.add(1);
+
+//Set values to the header cells
+PdfGridRow header = grid.headers[0];
+header.cells[0].value = 'Product Id';
+header.cells[1].value = 'Product Name';
+header.cells[2].value = 'Price';
+header.cells[3].value = 'Quantity';
+header.cells[4].value = 'Total';
+
+//Creates the header style
+PdfGridCellStyle headerStyle = PdfGridCellStyle();
+headerStyle.borders.all = PdfPen(PdfColor(126, 151, 173));
+headerStyle.backgroundBrush = PdfSolidBrush(PdfColor(126, 151, 173));
+headerStyle.textBrush = PdfBrushes.white;
+headerStyle.font = PdfStandardFont(PdfFontFamily.timesRoman, 14,
+ style: PdfFontStyle.regular);
+
+//Adds cell customizations
+for (int i = 0; i < header.cells.count; i++) {
+ if (i == 0 || i == 1) {
+ header.cells[i].stringFormat = PdfStringFormat(
+ alignment: PdfTextAlignment.left,
+ lineAlignment: PdfVerticalAlignment.middle);
+ } else {
+ header.cells[i].stringFormat = PdfStringFormat(
+ alignment: PdfTextAlignment.right,
+ lineAlignment: PdfVerticalAlignment.middle);
+ }
+ header.cells[i].style = headerStyle;
+}
+
+//Add rows to grid
+PdfGridRow row = grid.rows.add();
+row.cells[0].value = 'CA-1098';
+row.cells[1].value = 'AWC Logo Cap';
+row.cells[2].value = '\$8.99';
+row.cells[3].value = '2';
+row.cells[4].value = '\$17.98';
+row = grid.rows.add();
+row.cells[0].value = 'LJ-0192';
+row.cells[1].value = 'Long-Sleeve Logo Jersey,M';
+row.cells[2].value = '\$49.99';
+row.cells[3].value = '3';
+row.cells[4].value = '\$149.97';
+row = grid.rows.add();
+row.cells[0].value = 'So-B909-M';
+row.cells[1].value = 'Mountain Bike Socks,M';
+row.cells[2].value = '\$9.5';
+row.cells[3].value = '2';
+row.cells[4].value = '\$19';
+row = grid.rows.add();
+row.cells[0].value = 'LJ-0192';
+row.cells[1].value = 'Long-Sleeve Logo Jersey,M';
+row.cells[2].value = '\$49.99';
+row.cells[3].value = '4';
+row.cells[4].value = '\$199.96';
+
+//Set padding for grid cells
+grid.style.cellPadding = PdfPaddings(left: 2, right: 2, top: 2, bottom: 2);
+
+//Creates the grid cell styles
+PdfGridCellStyle cellStyle = PdfGridCellStyle();
+cellStyle.borders.all = PdfPens.white;
+cellStyle.borders.bottom = PdfPen(PdfColor(217, 217, 217), width: 0.70);
+cellStyle.font = PdfStandardFont(PdfFontFamily.timesRoman, 12);
+cellStyle.textBrush = PdfSolidBrush(PdfColor(131, 130, 136));
+//Adds cell customizations
+for (int i = 0; i < grid.rows.count; i++) {
+ PdfGridRow row = grid.rows[i];
+ for (int j = 0; j < row.cells.count; j++) {
+ row.cells[j].style = cellStyle;
+ if (j == 0 || j == 1) {
+ row.cells[j].stringFormat = PdfStringFormat(
+ alignment: PdfTextAlignment.left,
+ lineAlignment: PdfVerticalAlignment.middle);
+ } else {
+ row.cells[j].stringFormat = PdfStringFormat(
+ alignment: PdfTextAlignment.right,
+ lineAlignment: PdfVerticalAlignment.middle);
+ }
+ }
+}
+
+//Creates layout format settings to allow the table pagination
+PdfLayoutFormat layoutFormat =
+ PdfLayoutFormat(layoutType: PdfLayoutType.paginate);
+
+//Draws the grid to the PDF page
+PdfLayoutResult gridResult = grid.draw(
+ page: page,
+ bounds: Rect.fromLTWH(0, result.bounds.bottom + 20,
+ graphics.clientSize.width, graphics.clientSize.height - 100),
+ format: layoutFormat)!;
+
+gridResult.page.graphics.drawString(
+ 'Grand Total : \$386.91', subHeadingFont,
+ brush: PdfSolidBrush(PdfColor(126, 155, 203)),
+ bounds: Rect.fromLTWH(520, gridResult.bounds.bottom + 30, 0, 0));
+
+gridResult.page.graphics.drawString(
+ 'Thank you for your business !', subHeadingFont,
+ brush: PdfBrushes.black,
+ bounds: Rect.fromLTWH(520, gridResult.bounds.bottom + 60, 0, 0));
+
+{% endhighlight %}
+
+The following code example shows how to save the invoice document and dispose the [`PdfDocument`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfDocument-class.html) object.
+
+{% highlight dart %}
+
+//Saves the document
+File('Output.pdf').writeAsBytes(await document.save());
+
+//Dispose the document
+document.dispose();
+
+{% endhighlight %}
+
+The following screenshot shows the invoice PDF document created by the Syncfusion®
+ Flutter PDF.
+
+
+
+N> You can also explore our [Flutter PDF library](https://github.com/syncfusion/flutter-examples/tree/master/lib/samples/pdf) demo that shows how to create and modify PDF files from C# with just five lines of code.
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Library/flutter/images/getting-started/default.jpg b/Document-Processing/PDF/PDF-Library/flutter/images/getting-started/default.jpg
new file mode 100644
index 000000000..b63ed8f13
Binary files /dev/null and b/Document-Processing/PDF/PDF-Library/flutter/images/getting-started/default.jpg differ
diff --git a/Document-Processing/PDF/PDF-Library/flutter/images/getting-started/invoice.jpg b/Document-Processing/PDF/PDF-Library/flutter/images/getting-started/invoice.jpg
new file mode 100644
index 000000000..579fd57bb
Binary files /dev/null and b/Document-Processing/PDF/PDF-Library/flutter/images/getting-started/invoice.jpg differ
diff --git a/Document-Processing/PDF/PDF-Library/flutter/images/working-with-headers-and-footers/header-and-footer.png b/Document-Processing/PDF/PDF-Library/flutter/images/working-with-headers-and-footers/header-and-footer.png
new file mode 100644
index 000000000..18a068741
Binary files /dev/null and b/Document-Processing/PDF/PDF-Library/flutter/images/working-with-headers-and-footers/header-and-footer.png differ
diff --git a/Document-Processing/PDF/PDF-Library/flutter/loading-and-saving-document.md b/Document-Processing/PDF/PDF-Library/flutter/loading-and-saving-document.md
new file mode 100644
index 000000000..1d30f3929
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Library/flutter/loading-and-saving-document.md
@@ -0,0 +1,52 @@
+---
+layout: post
+title: Open and save PDF file in Flutter PDF library | Syncfusion
+description: Learn here all about Open and save PDF file feature of Syncfusion Flutter PDF non-UI library and more.
+platform: document-processing
+control: PDF
+documentation: ug
+---
+
+# Open and save PDF file in Flutter PDF
+
+## Opening an existing PDF document
+
+You can open an existing PDF document by using the [`PdfDocument`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfDocument-class.html) class. The following example shows how to load an existing document from the list of bytes.
+
+{% highlight dart %}
+
+//Opens an existing document from the list of bytes
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+{% endhighlight %}
+
+## Opening an existing PDF document from the base 64 string
+
+You can open an existing document from the base 64 string by using the [`PdfDocument`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfDocument-class.html) class as shown below.
+
+{% highlight dart %}
+
+//Opens an existing document from the base 64 string
+PdfDocument document = PdfDocument.fromBase64String(
+ 'JVBERi0xLjcNCiWDkvr+DQoxIDAgb2JqDQo8PA0KL1R5cGUgL0NhdGFsb2cNCi9QYWdlcyAyIDAgUg0KPj4NCmVuZG9iag0KMiAwIG9iag0KPDwNCi9UeXBlIC9QYWdlcw0KL0tpZHMgWzMgMCBSXQ0KL0NvdW50IDENCi9SZXNvdXJjZXMgPDw+Pg0KDQovTWVkaWFCb3ggWzAgMCA1OTUgODQyXQ0KPj4NCmVuZG9iag0KMyAwIG9iag0KPDwNCi9Db3VudCAxDQovVHlwZSAvUGFnZXMNCi9LaWRzIFs0IDAgUl0NCi9QYXJlbnQgMiAwIFINCj4+DQplbmRvYmoNCjQgMCBvYmoNCjw8DQovVHlwZSAvUGFnZQ0KL1BhcmVudCAzIDAgUg0KPj4NCmVuZG9iag0KeHJlZg0KMCA1DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMTcgMDAwMDAgbg0KMDAwMDAwMDA3MiAwMDAwMCBuDQowMDAwMDAwMTgwIDAwMDAwIG4NCjAwMDAwMDAyNTkgMDAwMDAgbg0KdHJhaWxlcg0KPDwNCi9Sb290IDEgMCBSDQovU2l6ZSA1DQo+Pg0KDQpzdGFydHhyZWYNCjMxMg0KJSVFT0Y=');
+
+{% endhighlight %}
+
+## Saving a PDF document to list of bytes
+
+You can save the manipulated PDF document as a list of bytes using the [`save`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfDocument/save.html) method of [`PdfDocument`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfDocument-class.html) class. Also, you can save the list of bytes to the file system as follows.
+
+{% highlight dart %}
+
+//Opens an existing PDF document
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Saves the document into a list of bytes
+List bytes =await document.save();
+
+//Saves the bytes to the file system
+File('output.pdf').writeAsBytes(bytes);
+
+{% endhighlight %}
diff --git a/Document-Processing/PDF/PDF-Library/flutter/overview.md b/Document-Processing/PDF/PDF-Library/flutter/overview.md
new file mode 100644
index 000000000..d3729928a
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Library/flutter/overview.md
@@ -0,0 +1,29 @@
+---
+layout: post
+title: About Flutter PDF library | Syncfusion
+description: Learn here all about introduction of Syncfusion Flutter PDF non-UI library and its features, and more.
+platform: document-processing
+control: PDF
+documentation: ug
+---
+
+# Flutter PDF Overview
+
+The Syncfusion® Flutter PDF is a library written natively in Dart for creating the PDF documents from scratch. The library can be used in Flutter Mobile and Web platforms without the dependency of Adobe Acrobat. The creation of PDF follows the most popular PDF 1.7 (ISO 32000-1) and latest PDF 2.0 (ISO 32000-2) specifications.
+
+Check the following video for a quick overview of Syncfusion Flutter UI Widgets and File Format Packages.
+{% youtube "https://youtu.be/FwUSJtv-3NY?si=doGR-fOkvghf-UUa" %}
+
+## Key features of Syncfusion® Flutter PDF:
+
+* Support to create PDF files from scratch.
+* Support to add text and drawing shapes.
+* Support to add ordered and unordered lists.
+* Support to draw raster images like JPEG and PNG formats.
+* Support to add hyperlink and document link annotations.
+* Support to add tables.
+* Support to add headers and footers in PDF document.
+* Support to add bookmarks in PDF document.
+* Support to protect PDF document by encryption.
+
+You can get the sample from this link: [`Flutter PDF`](https://github.com/syncfusion/flutter-examples).
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Library/flutter/working-with-annotations.md b/Document-Processing/PDF/PDF-Library/flutter/working-with-annotations.md
new file mode 100644
index 000000000..752043776
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Library/flutter/working-with-annotations.md
@@ -0,0 +1,795 @@
+---
+layout: post
+title: Annotations in Flutter PDF library | Syncfusion
+description: Learn here all about interactive annotations feature of Syncfusion Flutter PDF non-UI library and more.
+platform: document-processing
+control: PDF
+documentation: ug
+---
+
+# Annotations in Flutter PDF
+
+The Syncfusion®
+ Flutter PDF provides support for interactive annotations.
+
+You can [`add`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfAnnotationCollection/add.html), remove, and modify the [`annotations`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfPage/annotations.html) from the PDF documents.
+
+## Adding annotations to a PDF document
+
+You can add a rectangle annotation to the page using the PdfRectangleAnnotation class. The following code example explains this.
+
+{% highlight dart %}
+
+//Creates a new PDF document
+PdfDocument document = PdfDocument();
+
+//Adds a new PDF page
+PdfPage page = document.pages.add();
+
+//Creates a rectangle annotation
+PdfRectangleAnnotation rectangleAnnotation = PdfRectangleAnnotation(
+ Rect.fromLTWH(0, 30, 80, 80), 'Rectangle Annotation',
+ author: 'Syncfusion',
+ color: PdfColor(255, 0, 0),
+ setAppearance: true,
+ modifiedDate: DateTime.now());
+
+//Adds the annotation to the PDF page
+page.annotations.add(rectangleAnnotation);
+
+//Saves the document
+File('output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+To add annotations to an existing PDF document, use the following code example.
+
+{% highlight dart %}
+
+//Loads an existing PDF document
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Loads the existing PDF page
+PdfPage page = document.pages[0];
+
+//Creates a rectangle annotation
+PdfRectangleAnnotation rectangleAnnotation = PdfRectangleAnnotation(
+ Rect.fromLTWH(40, 70, 80, 80), 'Rectangle Annotation',
+ author: 'Syncfusion',
+ color: PdfColor(255, 0, 0),
+ setAppearance: true,
+ modifiedDate: DateTime.now());
+
+//Adds the annotation to the loaded page
+page.annotations.add(rectangleAnnotation);
+
+//Saves the document
+File('output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+## Supported annotation types
+
+### Rectangle Annotation
+
+This annotation displays a rectangle/square on the page based on the input bounds. When you open it, it displays a pop-up window containing the text of the associated note.
+
+The PdfRectangleAnnotation is used to create and set the properties of the Rectangle annotation.
+
+{% highlight dart %}
+
+//Create a new PDF document
+PdfDocument document = PdfDocument();
+
+//Adds a new PDF page
+PdfPage page = document.pages.add();
+
+//Creates a rectangle annotation
+PdfRectangleAnnotation rectangleAnnotation = PdfRectangleAnnotation(
+ Rect.fromLTWH(40, 70, 80, 80), 'Rectangle Annotation',
+ author: 'Syncfusion',
+ color: PdfColor(255, 0, 0),
+ innerColor: PdfColor(0, 0, 255),
+ border: PdfAnnotationBorder(10),
+ setAppearance: true,
+ modifiedDate: DateTime.now());
+
+//Adds annotation to the page
+page.annotations.add(rectangleAnnotation);
+
+//Saves the document
+File('output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+### Ellipse Annotation
+
+This annotation displays an ellipse/circle on the page based on the input bounds. When you open it, it displays a pop-up window containing the text of the associated note.
+
+The PdfEllipseAnnotation is used to create and set the properties of the Ellipse annotation.
+
+{% highlight dart %}
+
+//Create a new PDF document
+PdfDocument document = PdfDocument();
+
+//Adds a new PDF page
+PdfPage page = document.pages.add();
+
+//Creates an ellipse annotation
+PdfEllipseAnnotation ellipseAnnotation = PdfEllipseAnnotation(
+ Rect.fromLTWH(40, 70, 80, 80), 'Ellipse Annotation',
+ author: 'Syncfusion',
+ color: PdfColor(255, 0, 0),
+ innerColor: PdfColor(0, 0, 255),
+ border: PdfAnnotationBorder(10),
+ setAppearance: true,
+ modifiedDate: DateTime.now());
+
+//Adds annotation to the page
+page.annotations.add(ellipseAnnotation);
+
+//Saves the document
+File('output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+### Line Annotation
+
+This annotation displays a single straight line on the page. When you open it, it displays a pop-up window containing the text of the associated note.
+
+The PdfLineAnnotation is used to create and set the properties of the Line annotation.
+
+{% highlight dart %}
+
+//Creates a new PDF document
+PdfDocument document = PdfDocument();
+
+//Adds a new PDF page
+PdfPage page = document.pages.add();
+
+//Creates a line annotation
+PdfLineAnnotation lineAnnotation = PdfLineAnnotation(
+ [80, 420, 250, 420], 'Line Annotation',
+ author: 'Syncfusion',
+ opacity: 0.95,
+ border: PdfAnnotationBorder(1),
+ lineIntent: PdfLineIntent.lineDimension,
+ beginLineStyle: PdfLineEndingStyle.butt,
+ endLineStyle: PdfLineEndingStyle.square,
+ innerColor: PdfColor(0, 255, 0),
+ color: PdfColor(0, 0, 255),
+ leaderLineExt: 10,
+ leaderLine: 2,
+ lineCaption: true,
+ setAppearance: true,
+ captionType: PdfLineCaptionType.top,
+ modifiedDate: DateTime.now());
+
+//Adds annotation to the page
+page.annotations.add(lineAnnotation);
+
+//Saves the document
+File('output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+### Polygon Annotation
+
+This annotation displays a polygon on the page based on the input coordinate points. When you open it, it displays a pop-up window containing the text of the associated note.
+
+The PdfPolygonAnnotation is used to create and set the properties of the Polygon annotation.
+
+{% highlight dart %}
+
+//Creates a new PDF document
+PdfDocument document = PdfDocument();
+
+//Adds a new PDF page
+PdfPage page = document.pages.add();
+
+//Creates a polygon annotation
+PdfPolygonAnnotation polygonAnnotation = PdfPolygonAnnotation(
+ [50, 298, 100, 325, 200, 355, 300, 230, 180, 230], 'Polygon Annotation',
+ author: 'Syncfusion',
+ color: PdfColor(255, 0, 0),
+ innerColor: PdfColor(255, 0, 255),
+ setAppearance: true,
+ modifiedDate: DateTime.now());
+
+//Adds annotation to the page
+page.annotations.add(polygonAnnotation);
+
+//Saves the document
+File('output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+### Document Link Annotation
+
+This annotation is used to navigate to a specific destination within the document.
+
+The [`PdfDocumentLinkAnnotation`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfDocumentLinkAnnotation-class.html) is used to add a document link annotation in the PDF document.
+
+{% highlight dart %}
+
+//Creates a new PDF document
+PdfDocument document = PdfDocument();
+
+//Creates a new page
+PdfPage page = document.pages.add();
+
+//Creates a new document link annotation
+PdfDocumentLinkAnnotation documentLinkAnnotation =
+ PdfDocumentLinkAnnotation(Rect.fromLTWH(10, 40, 30, 30),
+ setAppearance: true,
+ PdfDestination(document.pages.add(), Offset(10, 0)));
+
+//Adds this annotation the page.
+page.annotations.add(documentLinkAnnotation);
+
+//Saves the document
+File('output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+### URI Annotation
+
+The URI annotation is used to navigate to a particular web URI.
+
+The following code example explains how to add URI annotation in a PDF document using the [`PdfUriAnnotation`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfUriAnnotation-class.html).
+
+{% highlight dart %}
+
+//Creates a new PDF document
+PdfDocument document = PdfDocument();
+
+//Adds a new PDF page
+PdfPage page = document.pages.add();
+
+//Creates a new URI annotation
+PdfUriAnnotation uriAnnotation = PdfUriAnnotation(
+ bounds: Rect.fromLTWH(10, 10, 100, 30), setAppearance: true,
+ uri: 'http://www.google.com');
+
+//Adds this annotation to the page.
+page.annotations.add(uriAnnotation);
+
+//Saves the document
+File('output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+### Text Web Link Annotation
+
+This annotation is used to navigate to a particular web URI while clicking on the link text.
+
+The following code example explains how to add the Text Web Link annotation in a PDF document using the PdfTextWebLinkAnnotation.
+
+{% highlight dart %}
+
+//Creates a new PDF document
+PdfDocument document = PdfDocument();
+
+//Adds a new PDF page
+PdfPage page = document.pages.add();
+
+//Creates a new text web link annotation
+PdfTextWebLink textWebLink = PdfTextWebLink(
+ url: 'http://www.google.com',
+ text: 'Google',
+ font: PdfStandardFont(PdfFontFamily.helvetica, 10,
+ style: PdfFontStyle.bold),
+ brush: PdfBrushes.red,
+ setAppearance: true,
+ pen: PdfPen(PdfColor(0, 0, 255)));
+
+//Draws the text web link to the page
+textWebLink.draw(page, Offset(10, 10));
+
+//Saves the document
+File('output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+### Text Markup Annotation
+
+The PdfTextMarkupAnnotation class is used to annotate the text in a PDF document with various formats, including highlight, squiggly, strikeout, and underline. The following code demonstrates how to highlight text in a PDF document.
+
+{% highlight dart %}
+
+//Create a new PDF document.
+PdfDocument document = PdfDocument();
+//Create a new page.
+PdfPage page = document.pages.add();
+//Create PDF font with font style.
+PdfFont font = PdfStandardFont(PdfFontFamily.courier, 14, style: PdfFontStyle.bold);
+String markupText = 'Text Markup';
+//Measure the text size.
+Size textSize = font.measureString(markupText);
+//Draw the text.
+page.graphics.drawString(markupText, font,
+ brush: PdfBrushes.black, bounds: const Rect.fromLTWH(175, 40, 0, 0));
+//Create a text markup annotation.
+PdfTextMarkupAnnotation markupAnnotation = PdfTextMarkupAnnotation(
+ Rect.fromLTWH(175, 40, textSize.width, textSize.height),
+ 'Markup annotation',
+ PdfColor(128, 43, 226),
+ author: 'Syncfusion',
+ subject: 'Text Markup Annotation',
+ textMarkupAnnotationType: PdfTextMarkupAnnotationType.highlight,
+ modifiedDate: DateTime.now(),
+ setAppearance: true);
+//Add the annotation to the page.
+page.annotations.add(markupAnnotation);
+//Save the document.
+File('output.pdf').writeAsBytes(await document.save());
+//Dispose of the document.
+document.dispose();
+
+{% endhighlight %}
+
+To add text markup annotation to an existing PDF document, use the following code example.
+
+{% highlight dart %}
+
+//Load the PDF document.
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+//Create a text markup annotation.
+final PdfTextMarkupAnnotation textMarkupAnnotation = PdfTextMarkupAnnotation(
+ const Rect.fromLTWH(60, 165, 495, 45),
+ 'Text Markup Highlight',
+ PdfColor(255, 255, 0),
+ author: 'Syncfusion',
+ subject: 'Text Markup Annotation',
+ textMarkupAnnotationType: PdfTextMarkupAnnotationType.highlight,
+ modifiedDate: DateTime.now());
+//Add the bounds collection to highlight the text on more than one line.
+textMarkupAnnotation.boundsCollection = [
+ const Rect.fromLTWH(251, 165, 304, 15),
+ const Rect.fromLTWH(60, 180, 495, 15),
+ const Rect.fromLTWH(60, 195, 100, 15)
+];
+//Add the text markup annotation to the page.
+document.pages[0].annotations.add(textMarkupAnnotation);
+//Save the document.
+File('output.pdf').writeAsBytesSync(await document.save());
+//Dispose of the document.
+document.dispose();
+
+{% endhighlight %}
+
+### Pop-up Annotation
+
+Pop-up annotation displays text in a pop-up window for entry and editing.
+
+It typically does not appear alone but is associated with markup annotation, its parent annotation.
+
+PdfPopupAnnotation is used to add pop-up annotation in a PDF document.
+
+{% highlight dart %}
+
+//Create a new PDF document.
+PdfDocument document = PdfDocument();
+//Create a new page.
+PdfPage page = document.pages.add();
+//Create a new popup annotation.
+PdfPopupAnnotation popup = PdfPopupAnnotation(
+ Rect.fromLTWH(10, 40, 30, 30), 'Popup Annotation',
+ author: 'Syncfusion',
+ subject: 'Popup Annotation',
+ open: true,
+ icon: PdfPopupIcon.comment,
+ setAppearance: true);
+//Add the popup annotation to the page.
+page.annotations.add(popup);
+//Save the document.
+File('output.pdf').writeAsBytes(await document.save());
+//Dispose of the document.
+document.dispose();
+
+{% endhighlight %}
+
+To add popup annotation to an existing PDF document, use the following code example.
+
+{% highlight dart %}
+
+//Load the PDF document.
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+//Create a popup annotation.
+final PdfPopupAnnotation popupAnnotation = PdfPopupAnnotation(
+ const Rect.fromLTWH(225, 371, 20, 20), 'Popup Annotation',
+ author: 'Syncfusion',
+ subject: 'Popup Annotation Comment',
+ color: PdfColor(255, 255, 0),
+ icon: PdfPopupIcon.comment,
+ open: true,
+ setAppearance: true);
+//Add the popup annotation to the page.
+document.pages[0].annotations.add(popupAnnotation);
+//Save the document.
+File('output.pdf').writeAsBytesSync(await document.save());
+//Dispose of the document.
+document.dispose();
+
+{% endhighlight %}
+
+## Flatten annotation
+
+Annotations can be flattened by removing the existing annotation and replacing it with the graphics objects that would resemble the annotation and it cannot be edited.
+
+This can be achieved by enabling the flattenAllAnnotations method . Please refer to the sample for flattening all the annotations in the PDF document.
+
+{% highlight dart %}
+
+//Loads an existing PDF document
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Gets all the pages
+for (int i = 0; i < document.pages.count; i++) {
+
+ //Loads the existing PDF page
+ PdfPage page = document.pages[i];
+
+ //Gets the annotation collection from page
+ PdfAnnotationCollection annotationCollection = page.annotations;
+
+ //Flattens all the annotations in the page
+ annotationCollection.flattenAllAnnotations();
+}
+
+//Saves the document
+File('output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+To flatten the specific annotation in the PDF document, use the following code example.
+
+{% highlight dart %}
+
+//Loads an existing PDF document
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Gets all the pages
+for (int i = 0; i < document.pages.count; i++) {
+
+ //Loads the existing PDF page
+ PdfPage page = document.pages[i];
+
+ //Gets the annotation collection from the page
+ PdfAnnotationCollection collection = page.annotations;
+
+ //Gets all the annotations in the page
+ for (int j = 0; j < collection.count; j++) {
+
+ //Gets the annotation from the annotation collection
+ PdfAnnotation annotation = collection[j];
+
+ //Checks for the rectangle annotation
+ if (annotation is PdfRectangleAnnotation) {
+
+ //Flattens the rectangle annotation
+ annotation.flatten();
+ }
+ }
+}
+
+//Saves the document
+File('output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+## Modifying the annotations
+
+The Syncfusion®
+ Flutter PDF allows you to modify the annotation of an existing document. The following code explains this.
+
+{% highlight dart %}
+
+//Loads an existing PDF document
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Loads the existing PDF page
+PdfPage page = document.pages[0];
+
+//Gets the first annotation and modify the properties
+PdfRectangleAnnotation annotation =
+ page.annotations[0] as PdfRectangleAnnotation;
+annotation.border = PdfAnnotationBorder(4);
+annotation.bounds = Rect.fromLTWH(300, 300, 100, 100);
+annotation.color = PdfColor(0, 0, 255);
+annotation.innerColor = PdfColor(0, 255, 0);
+annotation.text = 'Modified Annotation';
+annotation.author = 'Syncfusion';
+annotation.modifiedDate = DateTime.now();
+annotation.setAppearance: true;
+
+//Saves the document
+File('output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+## Removing annotations from an existing PDF
+
+You can remove the annotation from the annotation collection, represented by the [`PdfAnnotationCollection`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfAnnotationCollection-class.html) of the page. The following code explains this.
+
+{% highlight dart %}
+
+//Loads an existing PDF document
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Loads the existing PDF page
+PdfPage page = document.pages[0];
+
+//Gets the annotation collection from the loaded page
+PdfAnnotationCollection collection = page.annotations;
+
+//Removes the first annotation from the annotation collection
+collection.remove(collection[0]);
+
+//Saves the document
+File('output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+## Annotation Flags
+
+Annotation flags are elements added to annotations to provide additional information or interactivity. Flags associated with annotations help specify their appearance, behavior, and other properties. We can set the annotation flag using the annotationFlags property.
+
+The following table explains annotation flags.
+
+
+
+
+
+Member
+Meaning
+
+
+
+
+invisible
+If set, do not display the annotation if it does not belong to one of the standard annotation types and no annotation handler is available.
+
+
+hidden
+If set, do not display or print the annotation, or allow the user to interact with the annotation, regardless of annotation type or annotation handler.
+
+
+print
+If set, print the annotation when the page is printed.
+
+
+noZoom
+If set, do not scale the annotation’s appearance to match the magnification of the page.
+
+
+noRotate
+If set, do not rotate the annotation’s appearance to match the rotation of the page.
+
+
+noView
+If set, do not display the annotation on the screens or allow the user to interact with the annotation.
+
+
+readOnly
+If set, do not allow the user to interact with annotation.
+
+
+locked
+If set, do not allow the annotation to be deleted or its properties to be modified by the user.
+
+
+toggleNoView
+If set, invert the interpretation of the noView flat for certain events.
+
+
+
+The following code example illustrates how to set annotation flags in the PDF document.
+
+{% highlight dart %}
+
+//Create a new PDF document.
+PdfDocument document = PdfDocument();
+//Add new PDF page.
+PdfPage page = document.pages.add();
+//Create an annotation with annotation flags.
+PdfRectangleAnnotation rectangleAnnotation = PdfRectangleAnnotation(
+ Rect.fromLTWH(40, 70, 80, 80), 'Rectangle Annotation',
+ flags: [
+ PdfAnnotationFlags.print,
+ PdfAnnotationFlags.readOnly
+ ],
+ author: 'Syncfusion',
+ subject: 'Rectangle Annotation',
+ color: PdfColor(255, 0, 0),
+ innerColor: PdfColor(0, 0, 255),
+ border: PdfAnnotationBorder(10),
+ setAppearance: true,
+ modifiedDate: DateTime.now());
+//Add annotation to the page.
+page.annotations.add(rectangleAnnotation);
+//Save the document.
+File('output.pdf').writeAsBytes(await document.save());
+//Dispose of the document.
+document.dispose();
+
+{% endhighlight %}
+
+To add annotation flags to an existing annotation, use the following code example.
+
+{% highlight dart %}
+
+//Load the PDF document.
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+//Get the first page.
+PdfPage page = document.pages[0];
+//Add annotation flags to existing annotation.
+page.annotations[0].annotationFlags.addAll([
+ PdfAnnotationFlags.print,
+ PdfAnnotationFlags.readOnly
+]);
+//Save the document.
+File('output.pdf').writeAsBytesSync(await document.save());
+//Dispose of the document.
+document.dispose();
+
+{% endhighlight %}
+
+## Importing annotations from FDF file
+
+FDF stands for Forms Data Format. FDF is a file format for representing annotations present in a PDF document. You can import annotation data from the FDF file to PDF using the importAnnotation method in the PdfDocument class.
+
+{% highlight dart %}
+
+ //Load an existing PDF document.
+ PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+ //Import the annotations to FDF file format.
+ document.importAnnotation(
+ File('import.fdf').readAsBytesSync(), PdfAnnotationDataFormat.fdf);
+ //Save the PDF document.
+ File('output.pdf').writeAsBytesSync(await document.save());
+ //Dispose the document.
+ document.dispose();
+
+{% endhighlight %}
+
+## Importing annotations from XFDF file
+
+XFDF stands for XML Forms Data Format. XFDF is the XML version of FDF for representing annotations that are contained in a PDF document. You can import annotation data from the XFDF file to PDF using the importAnnotation method in PdfDocument class.
+
+{% highlight dart %}
+
+ //Load an existing PDF document.
+ PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+ //Import the annotations to XFDF file format.
+ document.importAnnotation(
+ File('import.xfdf').readAsBytesSync(), PdfAnnotationDataFormat.xfdf);
+ //Save the PDF document.
+ File('output.pdf').writeAsBytesSync(await document.save());
+ //Dispose the document.
+ document.dispose();
+
+{% endhighlight %}
+
+## Importing annotations from JSON file
+
+JSON stands for JavaScript Object Notation. It is a collection of key or value pairs, and it is used for serializing and transmitting the structured data over a network connection. You can import the annotation data from the JSON file to PDF using the importAnnotation method in PdfDocument class.
+
+{% highlight dart %}
+
+ //Load an existing PDF document.
+ PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+ //Import the annotations to JSON file format.
+ document.importAnnotation(
+ File('import.json').readAsBytesSync(), PdfAnnotationDataFormat.json);
+ //Save the PDF document.
+ File('output.pdf').writeAsBytesSync(await document.save());
+ //Dispose the document.
+ document.dispose();
+
+{% endhighlight %}
+
+## Exporting annotations to FDF file
+
+To export annotation data to the FDF file from the PDF document, you can use the exportAnnotation method in PdfDocument class.
+
+{% highlight dart %}
+
+ //Load an existing PDF document.
+ PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+ //Export the annotations to FDF file format
+ List bytes = document.exportAnnotation(PdfAnnotationDataFormat.fdf);
+ //Save the FDF file.
+ File('export.fdf').writeAsBytesSync(bytes);
+ //Dispose the document
+ document.dispose();
+
+{% endhighlight %}
+
+## Exporting annotations to XFDF file
+
+To export annotation data to the XFDF file from the PDF document, you can use the exportAnnotation method in PdfDocument class.
+
+{% highlight dart %}
+
+ //Load an existing PDF document.
+ PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+ //Export the annotations to XFDF file format.
+ List bytes = document.exportAnnotation(PdfAnnotationDataFormat.xfdf);
+ //Save the FDF file.
+ File('export.xfdf').writeAsBytesSync(bytes);
+ //Dispose the document.
+ document.dispose();
+
+{% endhighlight %}
+
+## Exporting annotations to JSON file
+
+To export annotation data to the JSON file from the PDF document, you can use the exportAnnotation method in PdfDocument class.
+
+{% highlight dart %}
+
+ //Load an existing PDF document.
+ PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+ //Export the annotations to JSON file format.
+ List bytes = document.exportAnnotation(PdfAnnotationDataFormat.json);
+ //Save the FDF file.
+ File('export.json').writeAsBytesSync(bytes);
+ //Dispose the document.
+ document.dispose();
+
+{% endhighlight %}
diff --git a/Document-Processing/PDF/PDF-Library/flutter/working-with-attachments.md b/Document-Processing/PDF/PDF-Library/flutter/working-with-attachments.md
new file mode 100644
index 000000000..8d7b6bafa
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Library/flutter/working-with-attachments.md
@@ -0,0 +1,135 @@
+---
+layout: post
+title: Attachments in Flutter PDF library | Syncfusion
+description: Learn here all about add, remove, and load the properties of file Attachments feature of Syncfusion Flutter PDF non-UI library and more.
+platform: document-processing
+control: PDF
+documentation: ug
+---
+
+# Attachments in Flutter PDF
+
+The Syncfusion®
+ Flutter PDF provides support for file attachments in PDF documents.
+
+Attachments can contain any kind of file with detailed information.
+
+## Adding an attachment to a PDF document
+
+You can add a file attachment to a PDF document using the PdfAttachment class. The following code example shows this.
+
+{% highlight dart %}
+
+//Creates a new PDF document
+PdfDocument document = PdfDocument();
+
+//Create and add attachment to the PDF document
+document.attachments.add(PdfAttachment(
+ 'input.txt', File('input.txt').readAsBytesSync(),
+ description: 'Text File', mimeType: 'application/txt'));
+
+//Saves the document
+File('output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+You can also add file attachment as a base 64 string using the PdfAttachment class. The following code example shows this.
+
+{% highlight dart %}
+
+//Creates a new PDF document
+PdfDocument document = PdfDocument();
+
+//Create and add attachment to the PDF document
+document.attachments.add(PdfAttachment.fromBase64String(
+ 'input.txt', 'SGVsbG8gV29ybGQ=',
+ description: 'Text File', mimeType: 'application/txt'));
+
+//Saves the document
+File('output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+The Syncfusion®
+ Flutter PDF also provides support for adding the attachments to an existing PDF document. The following code example shows the same.
+
+{% highlight dart %}
+
+//Loads an existing PDF document
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Create and add attachment to the PDF document
+document.attachments.add(PdfAttachment(
+ 'input.txt', File('input.txt').readAsBytesSync(),
+ description: 'Text File', mimeType: 'application/txt'));
+
+//Saves the document
+File('output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+## Removing attachments from an existing PDF
+
+You can remove the attachments from the existing document by using the remove method, as shown in the following code example.
+
+{% highlight dart %}
+
+//Loads an existing PDF document
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Gets the attachment from the loaded document
+PdfAttachment attachment = document.attachments[0];
+
+//Removes the attachment
+document.attachments.remove(attachment);
+
+//Removes the attachment from a specific index
+document.attachments.removeAt(1);
+
+//Saves the document
+File('output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+## Extracting and saving an attachment to the disc
+
+The ®
+ Flutter PDF provides support for extracting the attachments and saving them to the disk. The following code example explains how to extract and save an attachment.
+
+{% highlight dart %}
+
+//Loads an existing PDF document
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Gets the attachment collection
+PdfAttachmentCollection attachmentCollection = document.attachments;
+
+//Iterates the attachments
+for (int i = 0; i < attachmentCollection.count; i++) {
+ //Extracts the attachment and saves it to the disk
+ File(attachmentCollection[i].fileName)
+ .writeAsBytesSync(attachmentCollection[i].data);
+}
+
+//Saves the document
+File('output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Library/flutter/working-with-bookmarks.md b/Document-Processing/PDF/PDF-Library/flutter/working-with-bookmarks.md
new file mode 100644
index 000000000..4bad5d471
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Library/flutter/working-with-bookmarks.md
@@ -0,0 +1,210 @@
+---
+layout: post
+title: Bookmarks in Flutter PDF library | Syncfusion
+description: Learn here all about add, insert, and remove Bookmarks feature of Syncfusion Flutter PDF non-UI library and more.
+platform: document-processing
+control: PDF
+documentation: ug
+---
+
+# Bookmarks in Flutter PDF
+
+The Syncfusion®
+ Flutter PDF provides support to add [`bookmarks`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfDocument/bookmarks.html) to a PDF document to navigate interactively from one part of the document to another. It provides customization such as title font, color, size and more. It also provides support to [`insert`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfBookmarkBase/insert.html), [`remove`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfBookmarkBase/remove.html), and modify the bookmarks in an existing PDF Document.
+
+## Adding bookmarks to a PDF
+
+The [`PdfBookmarkBase`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfBookmarkBase-class.html) collection represents the bookmarks in a PDF document. You can add a bookmark to a new PDF document using [`PdfBookmark`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfBookmark-class.html) class. Refer to the following code example.
+
+{% highlight dart %}
+
+//Create a new PDF document
+PdfDocument document = PdfDocument();
+
+//Creates document bookmark
+PdfBookmark bookmark = document.bookmarks.add('page 1');
+
+//Sets the destination page and destination location
+bookmark.destination = PdfDestination(document.pages.add(), Offset(100, 100));
+
+//Sets the text style
+bookmark.textStyle = [PdfTextStyle.bold];
+
+//Sets the bookmark color(RGB)
+bookmark.color = PdfColor(255, 0, 0);
+
+//Save the document
+File('Output.pdf').writeAsBytes(await document.save());
+
+//Dispose the document
+document.dispose();
+
+{% endhighlight %}
+
+## Adding a child to the bookmarks
+
+You can add a child bookmark by using the [`insert`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfBookmarkBase/insert.html) or [`add`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfBookmarkBase/add.html) method. Refer to the following code example.
+
+{% highlight dart %}
+
+//Create a new PDF document
+PdfDocument document = PdfDocument();
+
+//Add a page
+PdfPage page = document.pages.add();
+
+//Creates document bookmark
+PdfBookmark bookmark = document.bookmarks.add('page 1');
+
+//Inserts the child bookmark
+PdfBookmark childBookmark1 = bookmark.insert(0, 'heading 1');
+
+//Adds the child bookmark
+PdfBookmark childBookmark2 = bookmark.add('heading 2');
+
+//Sets the text style
+childBookmark1.textStyle = [PdfTextStyle.bold, PdfTextStyle.italic];
+childBookmark2.textStyle = [PdfTextStyle.italic];
+
+//Sets the destination page and destination location
+childBookmark1.destination = PdfDestination(page, Offset(100, 100));
+childBookmark2.destination = PdfDestination(page, Offset(100, 400));
+
+//Sets the bookmark color(RGB)
+childBookmark1.color = PdfColor(0, 255, 0);
+childBookmark2.color = PdfColor(0, 0, 255);
+
+//Saves the bookmark
+File('Output.pdf').writeAsBytes(await document.save());
+
+//Dispose the document
+document.dispose();
+
+{% endhighlight %}
+
+## Adding bookmarks in an existing PDF document
+
+To add [`bookmarks`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfDocument/bookmarks.html) in an existing PDF document, use the following code example.
+
+{% highlight dart %}
+
+//Loads an existing PDF document
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Creates a document bookmark
+PdfBookmark bookmark = document.bookmarks.add('Page 1');
+
+//Sets the destination page and location
+bookmark.destination = PdfDestination(document.pages[0], Offset(20, 20));
+
+//Sets the bookmark color
+bookmark.color = PdfColor(255, 0, 0);
+
+//Sets the text style
+bookmark.textStyle = [PdfTextStyle.bold];
+
+//Saves the document
+File('output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+## Inserting bookmarks in an existing PDF
+
+When loading an existing document, the Syncfusion®
+ Flutter PDF loads all bookmarks of the document.
+
+Each loaded bookmark is represented by the [`PdfBookmark`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfBookmark-class.html) object. The following code example explains how to [`insert`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfBookmarkBase/insert.html) new bookmarks in the existing PDF document.
+
+{% highlight dart %}
+
+//Loads an existing PDF document
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Creates a document bookmark
+PdfBookmark bookmark = document.bookmarks.insert(1, 'New Bookmark');
+
+//Sets the destination page and location
+bookmark.destination = PdfDestination(document.pages[0], Offset(40, 40));
+
+//Saves the document
+File('output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+## Removing bookmarks from an existing PDF
+
+You can also remove [`bookmarks`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfDocument/bookmarks.html) from the existing PDF document by using the [`remove`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfBookmarkBase/remove.html) method. Please refer to the following code example.
+
+{% highlight dart %}
+
+//Loads an existing PDF document
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Gets all the bookmarks
+PdfBookmarkBase bookmark = document.bookmarks;
+
+//Removes bookmark by index
+bookmark.removeAt(1);
+
+//Removes bookmark by bookmark name
+bookmark.remove('Page 1');
+
+//Saves the document
+File('output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+## Modifying bookmarks in an existing PDF
+
+The Syncfusion®
+ Flutter PDF allows you to modify the [`bookmarks`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfDocument/bookmarks.html) in the existing PDF document. The following modifications can be done to bookmarks in an existing document.
+
+* Modify the bookmark style, color, title, and destination.
+* Add or insert new bookmarks into the root collection.
+* Add or insert new bookmarks as a child of another bookmark.
+* Assign the destination of the added bookmarks to a loaded page or a new page of the document.
+
+The following code example shows how to modify the [`destination`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfBookmark/destination.html), [`color`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfBookmark/color.html), [`textStyle`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfBookmark/textStyle.html) and [`title`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfBookmark/title.html) of the existing bookmark collection.
+
+{% highlight dart %}
+
+//Loads an existing PDF document
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Loads an existing PDF page
+PdfPage page = document.pages[1];
+
+//Gets all the bookmarks
+PdfBookmarkBase collection = document.bookmarks;
+
+//Gets the first bookmark and changes the properties of the bookmark
+PdfBookmark bookmark = collection[0];
+bookmark.color = PdfColor(0, 0, 255);
+bookmark.destination = PdfDestination(page, Offset(20, 20));
+bookmark.textStyle = [PdfTextStyle.italic];
+bookmark.title = 'Changed Title';
+
+//Adds a child to the existing bookmark
+PdfBookmark childBookmark = bookmark.add('Child Bookmark');
+childBookmark.destination = PdfDestination(page, Offset(100, 100));
+
+//Saves the document
+File('output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
diff --git a/Document-Processing/PDF/PDF-Library/flutter/working-with-digital-signature.md b/Document-Processing/PDF/PDF-Library/flutter/working-with-digital-signature.md
new file mode 100644
index 000000000..e6c2db60f
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Library/flutter/working-with-digital-signature.md
@@ -0,0 +1,429 @@
+---
+layout: post
+title: Digital Signature in Flutter PDF library | Syncfusion
+description: Learn here all about internal and external Digital Signature feature of Syncfusion Flutter PDF non-UI library and more.
+platform: document-processing
+control: PDF
+documentation: ug
+---
+
+# Digital Signature in Flutter PDF
+
+Flutter PDF allows you to add a digital signature to the PDF document. You can sign the PDF document internally by using a certificate with private keys or externally by using the digital signature created from various sources such as cloud services like DigitalSign.
+
+## Adding a digital signature
+
+To add a digital signature, you need a certificate with private keys. The following code example explains how to add a digital signature to the PDF document.
+
+{% highlight dart %}
+
+//Creates a new PDF document
+PdfDocument document = PdfDocument();
+
+//Adds a new page
+PdfPage page = document.pages.add();
+
+//Creates a digital signature and sets signature information
+PdfSignatureField field = PdfSignatureField(page, 'signature',
+ bounds: Rect.fromLTWH(0, 0, 200, 100),
+ signature: PdfSignature(
+ //Creates a certificate instance from the PFX file with a private key
+ certificate:
+ PdfCertificate(File('PDF.pfx').readAsBytesSync(), 'password123'),
+ contactInfo: 'johndoe@owned.us',
+ locationInfo: 'Honolulu, Hawaii',
+ reason: 'I am author of this document.',
+ digestAlgorithm: DigestAlgorithm.sha256,
+ cryptographicStandard: CryptographicStandard.cms));
+
+//Add a signature field to the form
+document.form.fields.add(field);
+
+//Save and dispose the PDF document
+File('Output.pdf').writeAsBytes(await document.save());
+document.dispose();
+
+{% endhighlight %}
+
+## Signing an existing document
+
+You can load the signature field from the existing PDF document and add a certificate to the document as follows,
+
+{% highlight dart %}
+
+//Loads an existing PDF document.
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Gets the first signature field of the PDF document.
+PdfSignatureField field = document.form.fields[0] as PdfSignatureField;
+
+//Creates a digital signature and sets the signature information.
+field.signature = PdfSignature(
+ //Creates a certificate instance from the PFX file with a private key.
+ certificate:
+ PdfCertificate(File('PDF.pfx').readAsBytesSync(), 'password123'),
+ contactInfo: 'johndoe@owned.us',
+ locationInfo: 'Honolulu, Hawaii',
+ reason: 'I am author of this document.',
+ digestAlgorithm: DigestAlgorithm.sha512,
+ cryptographicStandard: CryptographicStandard.cades);
+
+//Save and dispose the PDF document.
+File('Output.pdf').writeAsBytes(await document.save());
+document.dispose();
+
+{% endhighlight %}
+
+## Adding a signature appearance
+
+You can customize the appearance of the signature field by using the [`appearance`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfSignatureField/appearance.html) property in [`PdfSignatureField`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfSignatureField-class.html) as follows,
+
+{% highlight dart %}
+
+//Loads an existing PDF document.
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Gets the first signature field of the PDF document.
+PdfSignatureField field = document.form.fields[0] as PdfSignatureField;
+
+//Creates a digital signature.
+field.signature = PdfSignature(
+ //Creates a certificate instance from the PFX file with a private key.
+ certificate:
+ PdfCertificate(File('PDF.pfx').readAsBytesSync(), 'password123'));
+
+//Gets the signature field appearance graphics.
+PdfGraphics graphics = field.appearance.normal.graphics;
+
+//Draws the signature image.
+graphics!.drawImage(
+ PdfBitmap(File('image.jpg').readAsBytesSync()), Rect.fromLTWH(0, 0, field.bounds.width, field.bounds.height));
+
+//Save and dispose the PDF document.
+File('Output.pdf').writeAsBytes(await document.save());
+document.dispose();
+
+{% endhighlight %}
+
+## Externally sign a PDF document
+
+You can sign the PDF document from an external digital signature created from various sources such as cloud services like DigitalSign.
+
+The following code example shows how to sign the PDF document from an external signature.
+
+{% highlight dart %}
+
+//Loads an existing PDF document.
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Gets the first signature field of the PDF document.
+PdfSignatureField field = document.form.fields[0] as PdfSignatureField;
+
+//Creates a digital signature.
+field.signature = PdfSignature()
+ ..addExternalSigner(
+ //Creates an external signer.
+ PdfExternalSigner(),
+ //Loads a public certificate to generate message digest for signing.
+ [File('certificate.cer').readAsBytesSync()]);
+
+//Save and dispose the PDF document.
+File('Output.pdf').writeAsBytes(await document.save());
+document.dispose();
+
+{% endhighlight %}
+
+You can create an external digital signature with the [`x509`](https://pub.dev/packages/x509) package by using the following steps:
+
+**Add dependency**
+
+Add this to your package's pubspec.yaml file.
+
+{% highlight dart %}
+
+dependencies:
+ x509: ^0.1.4
+
+{% endhighlight %}
+
+**Import package**
+
+{% highlight dart %}
+
+import 'package:x509/x509.dart' as x509;
+
+{% endhighlight %}
+
+You can compute the signed message digest by using the x509 package with a corresponding private key of the public certificate.
+
+{% highlight dart %}
+
+//Class for singing a PDF document externally.
+class PdfExternalSigner extends IPdfExternalSigner {
+ //Hash algorithm.
+ @override
+ DigestAlgorithm get hashAlgorithm => DigestAlgorithm.sha256;
+
+ //Sign message digest.
+ @override
+ SignerResult signSync(List message) {
+ final pem = File('privatekey.pem').readAsBytesSync();
+ final x509.KeyPair keyPair =
+ x509.parsePem(String.fromCharCodes(pem)).single;
+ final privateKey = keyPair.privateKey as x509.RsaPrivateKey;
+ final signer = privateKey.createSigner(x509.algorithms.signing.rsa.sha256);
+ final x509.Signature signed = signer.sign(message);
+ return SignerResult(signed.data.toList());
+ }
+}
+
+{% endhighlight %}
+
+You can use the sign method in IPdfExternalSigner for asynchronous signing.
+
+N> Asynchronous signing will only work when saving the PDF document asynchronously. signSync works with synchronous and asynchronous save methods.
+
+{% highlight dart %}
+
+ //Class for singing a PDF document externally.
+ class PdfExternalSigner extends IPdfExternalSigner {
+ //Hash algorithm.
+ @override
+ DigestAlgorithm get hashAlgorithm => DigestAlgorithm.sha256;
+
+ //Sign message digest.
+ @override
+ Future sign(List message) async {
+ final pem = File('privatekey.pem').readAsBytesSync();
+ final x509.KeyPair keyPair =
+ x509.parsePem(String.fromCharCodes(pem)).single;
+ final privateKey = keyPair.privateKey as x509.RsaPrivateKey;
+ final signer = privateKey.createSigner(x509.algorithms.signing.rsa.sha256);
+ final x509.Signature signed = signer.sign(message);
+ return SignerResult(signed.data.toList());
+ }
+ }
+
+{% endhighlight %}
+
+## Adding multiple digital signature
+
+You can apply one or more digital signatures to a PDF document. The following code example shows how to add multiple signatures to the PDF document.
+
+{% highlight dart %}
+
+//Loads an existing PDF document.
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Gets the first signature field of the PDF document.
+PdfSignatureField field = document.form.fields[0] as PdfSignatureField;
+
+//Creates a digital signature and sets signature information.
+field.signature = PdfSignature(
+ //Creates a certificate instance from the PFX file with a private key.
+ certificate:
+ PdfCertificate(File('PDF.pfx').readAsBytesSync(), 'password123'),
+ contactInfo: 'johndoe@owned.us',
+ locationInfo: 'Honolulu, Hawaii',
+ reason: 'I am author of this document.',
+ digestAlgorithm: DigestAlgorithm.sha512,
+ cryptographicStandard: CryptographicStandard.cades);
+
+//Save and load the PDF document.
+document = PdfDocument(inputBytes: await document.save());
+
+//Gets the second signature field of the PDF document.
+field = document.form.fields[1] as PdfSignatureField;
+
+//Creates a digital signature and sets signature information.
+field.signature = PdfSignature(
+ //Creates a certificate instance from the PFX file with a private key.
+ certificate: PdfCertificate(
+ File('Certificate.pfx').readAsBytesSync(), 'password123'),
+ contactInfo: 'johndoe@owned.us',
+ locationInfo: 'Honolulu, Hawaii',
+ reason: 'I am author of this document.',
+ digestAlgorithm: DigestAlgorithm.sha256,
+ cryptographicStandard: CryptographicStandard.cms);
+
+//Save and dispose the PDF document.
+File('Output.pdf').writeAsBytes(await document.save());
+document.dispose();
+
+{% endhighlight %}
+
+## Long Term Validation (LTV) PDF signature
+
+The Syncfusion®
+ Flutter PDF supports creating long term signature validation for the signed PDF document. The LTV signature allows you to check the validity of a signature long after the document has been signed. To achieve long term validation, all the required elements for signature validation must be embedded in the signed PDF.
+
+N> The resulting PDF document size will be substantial because all the necessary signature information, Certificate Revocation List (CRL), and Online Certificate Status Protocol (OCSP) are embedded.
+
+The following code example shows how to enable LTV for a signed PDF document using createLongTermValidity method in [PdfSignature](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfSignature-class.html) class.
+
+{% highlight dart %}
+
+ // Load the existing PDF document.
+ PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+ // Load the existing signature field.
+ PdfSignatureField field = document.form.fields[0] as PdfSignatureField;
+ // Create LTV for loaded signed signature.
+ bool isLTVAdded = await field.signature!.createLongTermValidity();
+ // Save the document.
+ File('output.pdf').writeAsBytesSync(await document.save());
+ // Dispose the document.
+ document.dispose();
+
+{% endhighlight %}
+
+## Create Long Term Validation (LTV) with public certificates data
+
+The following code example shows how to create an LTV for a signed PDF document using public certificates with the createLongTermValidity method in [PdfSignature](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfSignature-class.html) class.
+
+{% highlight dart %}
+
+ // Load the existing PDF document.
+ PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+ // Load the existing signature field.
+ PdfSignatureField field = document.form.fields[0] as PdfSignatureField;
+ // Load the certificate from the PFX file.
+ PdfCertificate certificate =
+ PdfCertificate(File('PDF.pfx').readAsBytesSync(), 'syncfusion');
+ // Get the public certificates data.
+ List>? publicCertificatesData = certificate.getCertificateChain();
+ // Create LTV with your public certificates.
+ await field.signature!.createLongTermValidity(
+ publicCertificatesData: publicCertificatesData,
+ includePublicCertificates: true);
+ // Save the document.
+ File('output.pdf').writeAsBytesSync(await document.save());
+ // Dispose the document.
+ document.dispose();
+
+{% endhighlight %}
+
+## Adding a timestamp in digital signature
+
+The Syncfusion®
+ Flutter PDF allows you to add timestamp in the digital signature of the PDF document using timestampServer property in [PdfSignature](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfSignature-class.html) class. The following code example explains the same.
+
+N> Signing using TimestampServer only works when the document is saved using asynchronous [save](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfDocument/save.html). It is not supported in synchronous [saveSync](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfDocument/saveSync.html).
+
+{% highlight dart %}
+
+ // Create a new PDF document.
+ PdfDocument document = PdfDocument();
+ // Add a new page to the document.
+ PdfPage page = document.pages.add();
+ // Create a new timestamp server.
+ TimestampServer server = TimestampServer(
+ Uri.parse('http://syncfusion.digistamp.com'),
+ userName: 'user',
+ password: '123456',
+ timeOut: const Duration(milliseconds: 5000));
+ // Check whether the timestamp server is valid.
+ bool isValid = await server.isValid;
+ if (isValid) {
+ // Add a new signature field to the page.
+ PdfSignatureField field = PdfSignatureField(page, 'signature',
+ bounds: const Rect.fromLTWH(0, 0, 200, 100),
+ signature: PdfSignature(
+ certificate:
+ PdfCertificate(File('PDF.pfx').readAsBytesSync(), 'syncfusion'),
+ contactInfo: 'johndoe@owned.us',
+ locationInfo: 'Honolulu, Hawaii',
+ reason: 'I am author of this document.',
+ ));
+ // Add the timestamp server to the signature.
+ field.signature!.timestampServer = server;
+ // Get the graphics of the signature field.
+ final PdfGraphics? graphics = field.appearance.normal.graphics;
+ // Draw an image to the signature field.
+ graphics!.drawImage(PdfBitmap(File('picture.png').readAsBytesSync()),
+ Rect.fromLTWH(0, 0, field.bounds.width, field.bounds.height));
+ // Add the signature field to the form fields collection.
+ document.form.fields.add(field);
+ }
+ // Save the document.
+ File('output.pdf').writeAsBytesSync(await document.save());
+ // Dispose the document.
+ document.dispose();
+
+{% endhighlight %}
+
+## Adding a timestamp in the PDF document
+
+You can add timestamp to the PDF document using timestampServer property in [PdfSignature](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfSignature-class.html) class. The following code example explains the same.
+
+N> Signing using TimestampServer only works when the document is saved using asynchronous [save](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfDocument/save.html). It is not supported in synchronous [saveSync](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfDocument/saveSync.html).
+
+
+{% highlight dart %}
+
+ // Create a new PDF document.
+ PdfDocument document = PdfDocument();
+ // Add a new page to the document.
+ PdfPage page = document.pages.add();
+ // Create a new timestamp server.
+ TimestampServer server = TimestampServer(
+ Uri.parse('http://syncfusion.digistamp.com'),
+ userName: 'user',
+ password: '123456',
+ timeOut: const Duration(milliseconds: 5000));
+ // Check whether the timestamp server is valid.
+ bool isValid = await server.isValid;
+ if (isValid) {
+ // Add a new signature field to the page.
+ PdfSignatureField field =
+ PdfSignatureField(page, 'signature', signature: PdfSignature());
+ // Add the timestamp server to the signature.
+ field.signature!.timestampServer = server;
+ // Add the signature field to the form fields collection.
+ document.form.fields.add(field);
+ }
+ // Save the document.
+ File('output.pdf').writeAsBytesSync(await document.save());
+ // Dispose the document.
+ document.dispose();
+
+{% endhighlight %}
+
+## Adding a timestamp in an existing PDF document
+
+You can add timestamp to the existing PDF document using timestampServer property in [PdfSignature](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfSignature-class.html) class. The following code example explains the same.
+
+N> Signing using TimestampServer only works when the document is saved using asynchronous [save](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfDocument/save.html). It is not supported in synchronous [saveSync](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfDocument/saveSync.html).
+
+{% highlight dart %}
+
+ // Create a new PDF document.
+ PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+ // Load the existing signature field.
+ PdfSignatureField field = document.form.fields[0] as PdfSignatureField;
+ // Create a new timestamp server.
+ TimestampServer server = TimestampServer(
+ Uri.parse('http://syncfusion.digistamp.com'),
+ userName: 'user',
+ password: '123456',
+ timeOut: const Duration(milliseconds: 5000));
+ // Check whether the timestamp server is valid.
+ bool isValid = await server.isValid;
+ if (isValid) {
+ // Add new signature to the existing signature field.
+ field.signature = PdfSignature();
+ // Add the timestamp server to the signature.
+ field.signature!.timestampServer = server;
+ }
+ // Save the document.
+ File('output.pdf').writeAsBytesSync(await document.save());
+ // Dispose the document.
+ document.dispose();
+
+{% endhighlight %}
diff --git a/Document-Processing/PDF/PDF-Library/flutter/working-with-document.md b/Document-Processing/PDF/PDF-Library/flutter/working-with-document.md
new file mode 100644
index 000000000..9685b05c8
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Library/flutter/working-with-document.md
@@ -0,0 +1,155 @@
+---
+layout: post
+title: Document in Flutter PDF library | Syncfusion
+description: Learn here all about different types of Document settings feature of Syncfusion Flutter PDF non-UI library and more.
+platform: document-processing
+control: PDF
+documentation: ug
+---
+
+# Document in Flutter PDF
+
+## Adding the document settings
+
+Flutter PDF supports various page setting options to control the page display, using the [`pageSettings`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfDocument/pageSettings.html) property of [`PdfDocument`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfDocument-class.html).
+
+You can choose the standard or custom page size when you add a page to the PDF document. The following sample explains how to create a PDF document with standard page size.
+
+{% highlight dart %}
+
+//Create a new PDF documentation
+PdfDocument document = PdfDocument();
+
+//Set the page size
+document.pageSettings.size = PdfPageSize.a4;
+
+//Draw the text by adding page to the document
+document.pages.add().graphics.drawString(
+ 'Hello World!!!', PdfStandardFont(PdfFontFamily.helvetica, 27),
+ brush: PdfBrushes.mediumVioletRed,
+ bounds: const Rect.fromLTWH(170, 100, 0, 0));
+
+//Save and dispose the PDF document
+File('Output.pdf').writeAsBytes(await document.save());
+document.dispose();
+
+{% endhighlight %}
+
+You can create a PDF document with custom page size by using the following code snippet.
+
+{% highlight dart %}
+
+//Create a new PDF documentation
+PdfDocument document = PdfDocument();
+
+//Set the page size
+document.pageSettings.size = const Size(200, 300);
+
+//Draw the text by adding page to the document
+document.pages.add().graphics.drawString(
+ 'Hello World!!!', PdfStandardFont(PdfFontFamily.helvetica, 19),
+ brush: PdfBrushes.mediumVioletRed);
+
+//Save and close the PDF document
+File('Output.pdf').writeAsBytes(await document.save());
+document.dispose();
+
+{% endhighlight %}
+
+You can change the page [`orientation`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfPageSettings/orientation.html) from [`portrait`] to landscape using the [`PdfPageOrientation`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfPageOrientation.html) enum by the following code snippet.
+
+{% highlight dart %}
+
+//Create a new PDF documentation
+PdfDocument document = PdfDocument();
+
+//Set the page size
+document.pageSettings.size = PdfPageSize.a4;
+
+//Change the page orientation to landscape
+document.pageSettings.orientation = PdfPageOrientation.landscape;
+
+//Draw the text by adding page to the document
+document.pages.add().graphics.drawString(
+ 'Hello World!!!', PdfStandardFont(PdfFontFamily.helvetica, 27),
+ brush: PdfBrushes.mediumVioletRed,
+ bounds: const Rect.fromLTWH(170, 100, 0, 0));
+
+//Save and close the PDF document
+File('Output.pdf').writeAsBytes(await document.save());
+document.dispose();
+
+{% endhighlight %}
+
+You can also change the [`orientation`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfPageSettings/orientation.html) by setting the [`rotation angle`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfPageSettings/rotate.html) using the [`PdfPageRotateAngle`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfPageRotateAngle.html) enum. The following code snippet explains the same.
+
+{% highlight dart %}
+
+//Create a new PDF documentation
+PdfDocument document = PdfDocument();
+
+//Set the page size
+document.pageSettings.size = PdfPageSize.a4;
+
+//Change the page orientation to 90 degree
+document.pageSettings.rotate = PdfPageRotateAngle.rotateAngle90;
+
+//Draw the text by adding page to the document
+document.pages.add().graphics.drawString(
+ 'Hello World!!!', PdfStandardFont(PdfFontFamily.helvetica, 27),
+ brush: PdfBrushes.mediumVioletRed,
+ bounds: const Rect.fromLTWH(170, 100, 0, 0));
+
+//Save and close the PDF document
+File('Output.pdf').writeAsBytes(await document.save());
+document.dispose();
+
+{% endhighlight %}
+
+## Creating sections in a PDF
+
+PDF [`sections`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfDocument/sections.html) are parts of a PDF document, which may contain one or more pages with their unique page settings. The following code snippet explains how to create a [`PdfSection`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfSection-class.html) in a PDF document.
+
+{% highlight dart %}
+
+//Create a new PDF documentation
+PdfDocument document = PdfDocument();
+
+//Add a section to PDF document
+PdfSection section = document.sections!.add();
+
+//Draw the text by section page graphics
+section.pages.add().graphics.drawString(
+ 'Hello World!!!', PdfStandardFont(PdfFontFamily.helvetica, 27),
+ brush: PdfBrushes.mediumVioletRed,
+ bounds: const Rect.fromLTWH(170, 100, 0, 0));
+
+//Save and close the PDF document
+File('Output.pdf').writeAsBytes(await document.save());
+document.dispose();
+
+{% endhighlight %}
+
+## Performing incremental update for the PDF document
+
+The Syncfusion® Flutter PDF supports incremental update for the PDF document. The content of a PDF file can be updated incrementally without rewriting the entire file. The changes are appended to the end of the file, leaving its original contents intact. The main benefit is small changes to a large PDF document can be saved quickly but the resultant document size gets increased compared with the original PDF document. Disabling the incrementalUpdate of [`PdfFileStructure`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfFileStructure-class.html) will rewrite the entire file, which results in a smaller PDF. This is explained in the following code sample.
+
+{% highlight dart %}
+
+//Loads an existing PDF document
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Disable the incremental update
+document.fileStructure.incrementalUpdate = false;
+
+//Set the compression level
+document.compressionLevel = PdfCompressionLevel.best;
+
+//Saves the document
+File('output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
diff --git a/Document-Processing/PDF/PDF-Library/flutter/working-with-flow-layout.md b/Document-Processing/PDF/PDF-Library/flutter/working-with-flow-layout.md
new file mode 100644
index 000000000..1a423cb8f
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Library/flutter/working-with-flow-layout.md
@@ -0,0 +1,87 @@
+---
+layout: post
+title: Flow layout in Flutter PDF library | Syncfusion
+description: Learn here all about drawing images, paragraph text, header text and tables using Flow layout feature of Syncfusion Flutter non-UI PDF library and more.
+platform: document-processing
+control: PDF
+documentation: ug
+---
+
+# Flow layout in Flutter PDF
+
+The Syncfusion® Flutter PDF supports creating a PDF document with flow model by maintaining the position of previously drawn element.
+
+## Flow model using PdfLayoutResult
+
+The following code snippet explains how to create a PDF document with image, paragraph text, header text, and a table using flow model with the help of [`PdfLayoutResult`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfLayoutResult-class.html).
+
+{% highlight dart %}
+
+//Create a new PDF document
+PdfDocument document = PdfDocument();
+
+//Add a page to the document
+PdfPage page = document.pages.add();
+
+//Draw image on the page in the specified location and with required size
+page.graphics.drawImage(
+ PdfBitmap(File('AdventureCycle.jpg').readAsBytesSync()),
+ Rect.fromLTWH(150, 30, 200, 100));
+
+//Load the paragraph text into PdfTextElement with standard font
+PdfTextElement textElement = PdfTextElement(
+ text:
+ 'Adventure Works Cycles, the fictitious company on which the AdventureWorks sample databases are based, is a large, multinational manufacturing company. The company manufactures and sells metal and composite bicycles to North American, European and Asian commercial markets. While its base operation is located in Bothell, Washington with 290 employees, several regional sales teams are located throughout their market base.',
+ font: PdfStandardFont(PdfFontFamily.helvetica, 12));
+
+//Draw the paragraph text on page and maintain the position in PdfLayoutResult
+PdfLayoutResult layoutResult = textElement.draw(
+ page: page,
+ bounds: Rect.fromLTWH(0, 150, page.getClientSize().width,
+ page.getClientSize().height))!;
+
+//Assign header text to PdfTextElement
+textElement.text = 'Top 5 sales stores';
+
+//Assign standard font to PdfTextElement
+textElement.font = PdfStandardFont(PdfFontFamily.helvetica, 14,
+ style: PdfFontStyle.bold);
+
+//Draw the header text on page, below the paragraph text with a height gap of 20 and maintain the position in PdfLayoutResult
+layoutResult = textElement.draw(
+ page: page,
+ bounds: Rect.fromLTWH(0, layoutResult.bounds.bottom + 20, 0, 0))!;
+
+//Initialize PdfGrid for drawing the table
+PdfGrid grid = PdfGrid();
+grid.columns.add(count: 3);
+grid.headers.add(1);
+PdfGridRow header = grid.headers[0];
+header.cells[0].value = 'ID';
+header.cells[1].value = 'Name';
+header.cells[2].value = 'Salary';
+PdfGridRow row1 = grid.rows.add();
+row1.cells[0].value = 'E01';
+row1.cells[1].value = 'Clay';
+row1.cells[2].value = '\$10,000';
+PdfGridRow row2 = grid.rows.add();
+row2.cells[0].value = 'E02';
+row2.cells[1].value = 'Thomas';
+row2.cells[2].value = '\$10,500';
+PdfGridRow row3 = grid.rows.add();
+row3.cells[0].value = 'E02';
+row3.cells[1].value = 'Simon';
+row3.cells[2].value = '\$12,000';
+
+//Draws the grid
+grid.draw(
+ page: page,
+ bounds: Rect.fromLTWH(0, layoutResult.bounds.bottom + 20, 0, 0));
+
+//Saves the document
+File('Output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
diff --git a/Document-Processing/PDF/PDF-Library/flutter/working-with-forms.md b/Document-Processing/PDF/PDF-Library/flutter/working-with-forms.md
new file mode 100644
index 000000000..796960205
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Library/flutter/working-with-forms.md
@@ -0,0 +1,994 @@
+---
+layout: post
+title: Forms in Flutter PDF library | Syncfusion
+description: Learn here all about different types of Forms feature of Syncfusion Flutter PDF non-UI library and more.
+platform: document-processing
+control: PDF
+documentation: UG
+---
+
+# Forms in Flutter PDF
+
+An interactive form sometimes referred to as an AcroForm is a collection of fields for gathering information. A PDF document can contain any number of fields appearing on any combination of pages, all that makes a single, globally interactive form spanning the entire document.
+
+## Creating a new PDF form
+
+Flutter PDF allows you to create and manage the form (AcroForm) in PDF documents by using the PdfForm class. The PdfFormFieldCollection class represents the entire field collection of the form.
+
+### Adding the text box field
+
+The [`PdfTextBoxField `](#) class is used to create a text box field in PDF forms.
+
+The following code sample explains how to add a textbox field to a new PDF document.
+
+{% highlight dart %}
+
+//Create a new PDF document.
+final PdfDocument document = PdfDocument();
+
+// Create a text box form field and add it to the document.
+document.form.fields.add(PdfTextBoxField(
+ document.pages.add(), 'TextBox', Rect.fromLTWH(100, 20, 200, 20),
+ text: 'toType',
+ font: PdfStandardFont(PdfFontFamily.courier, 12),
+ isPassword: false,
+ spellCheck: true,
+ backColor: PdfColor(0, 255, 0),
+ borderColor: PdfColor(255, 0, 0),
+ foreColor: PdfColor(0, 0, 255)));
+
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(await document.save());
+
+{% endhighlight %}
+
+The following code sample explains how to add the textbox to an existing PDF document.
+
+{% highlight dart %}
+
+//Loads an existing PDF document.
+final PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+// Create a text box form field and add it to the existing document.
+document.form.fields.add(PdfTextBoxField(
+ document.pages[0], 'TextBox', Rect.fromLTWH(100, 20, 200, 20),
+ text: 'toType',
+ font: PdfStandardFont(PdfFontFamily.courier, 12),
+ isPassword: false,
+ spellCheck: true,
+ backColor: PdfColor(0, 255, 0),
+ borderColor: PdfColor(255, 0, 0),
+ foreColor: PdfColor(0, 0, 255)));
+
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(await document.save());
+
+{% endhighlight %}
+
+### Adding the combo box field
+
+The PdfComboBoxField class is used to create a combo box field in PDF forms. You can add a list of items to the combo box by using the PdfListFieldItem class.
+
+Please refer to the following code sample for adding the combo box in a new PDF document.
+
+{% highlight dart %}
+
+//Create a new PDF document.
+final PdfDocument document = PdfDocument();
+
+// Create a combo box form field and add it to the document.
+document.form.fields.add(PdfComboBoxField(
+ document.pages.add(), 'comboBox', Rect.fromLTWH(100, 100, 200, 20),
+ font: PdfStandardFont(PdfFontFamily.helvetica, 12),
+ alignment: PdfTextAlignment.right,
+ editable: true,
+ selectedValue: 'Language 2',
+ items: [
+ PdfListFieldItem('Tamil', 'Language 1'),
+ PdfListFieldItem('English', 'Language 2'),
+ PdfListFieldItem('French', 'Language 3')
+ ]));
+
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(await document.save());
+
+{% endhighlight %}
+
+Please refer to the following code sample for adding the combo box in an existing PDF document.
+
+{% highlight dart %}
+
+//Loads an existing PDF document.
+final PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+// Create a combo box form field and add it to the existing document.
+document.form.fields.add(PdfComboBoxField(
+ document.pages[0], 'comboBox', Rect.fromLTWH(100, 100, 200, 20),
+ font: PdfStandardFont(PdfFontFamily.helvetica, 12),
+ alignment: PdfTextAlignment.right,
+ editable: true,
+ selectedValue: 'Language 2',
+ items: [
+ PdfListFieldItem('Tamil', 'Language 1'),
+ PdfListFieldItem('English', 'Language 2'),
+ PdfListFieldItem('French', 'Language 3')
+ ]));
+
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(await document.save());
+
+{% endhighlight %}
+
+### Adding the radio button field
+
+To create the radio button in the PDF forms, you can use the PdfRadioButtonListField class and you can create the radio button list items by using the PdfRadioButtonListItem class.
+
+Please refer to the following code sample for adding the radio button in a new PDF document.
+
+{% highlight dart %}
+
+//Create a new PDF document.
+final PdfDocument document = PdfDocument();
+
+// Create a radio button form field and add it to the document.
+document.form.fields.add(PdfRadioButtonListField(
+document.pages.add(),
+'Gender',
+items: [
+ PdfRadioButtonListItem('Male', Rect.fromLTWH(100, 150, 35, 35),
+ style: PdfCheckBoxStyle.diamond,
+ highlightMode: PdfHighlightMode.push,
+ foreColor: PdfColor(0, 255, 0),
+ borderWidth: 3),
+ PdfRadioButtonListItem('Female', Rect.fromLTWH(100, 200, 35, 35),
+ highlightMode: PdfHighlightMode.outline,
+ backColor: PdfColor(153, 12, 102),
+ foreColor: PdfColor(0, 255, 0),
+ borderWidth: 2),
+ PdfRadioButtonListItem('Others', Rect.fromLTWH(100, 250, 35, 35),
+ highlightMode: PdfHighlightMode.outline,
+ borderStyle: PdfBorderStyle.dot,
+ borderColor: PdfColor(230, 0, 172),
+ foreColor: PdfColor(0, 255, 0),
+ borderWidth: 1)
+],
+selectedIndex: 0,
+));
+
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(await document.save());
+
+{% endhighlight %}
+
+The following code sample shows how to add the radio button in an existing PDF document.
+
+{% highlight dart %}
+
+//Loads an existing PDF document.
+final PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+// Create a radio button form field and add it to the existing document.
+document.form.fields.add(PdfRadioButtonListField(
+document.pages[0],
+'Gender',
+items: [
+ PdfRadioButtonListItem('Male', Rect.fromLTWH(100, 150, 35, 35),
+ style: PdfCheckBoxStyle.diamond,
+ highlightMode: PdfHighlightMode.push,
+ foreColor: PdfColor(0, 255, 0),
+ borderWidth: 3),
+ PdfRadioButtonListItem('Female', Rect.fromLTWH(100, 200, 35, 35),
+ highlightMode: PdfHighlightMode.outline,
+ backColor: PdfColor(153, 12, 102),
+ foreColor: PdfColor(0, 255, 0),
+ borderWidth: 2),
+ PdfRadioButtonListItem('Others', Rect.fromLTWH(100, 250, 35, 35),
+ highlightMode: PdfHighlightMode.outline,
+ borderStyle: PdfBorderStyle.dot,
+ borderColor: PdfColor(230, 0, 172),
+ foreColor: PdfColor(0, 255, 0),
+ borderWidth: 1)
+],
+selectedIndex: 0,
+));
+
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(await document.save());
+
+{% endhighlight %}
+
+### Retrieving option values from the acroform radio button
+
+The Flutter PDF supports retrieving values from the acroform radio button. The value property is used to get values of the PdfRadioButtonListItem instance.
+
+The following code example shows how to get values from the acroform radio button.
+
+{% highlight dart %}
+
+//Loads an existing PDF document.
+final PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+// Get a radio button and select the item.
+final PdfField radioButtonListField = document.form.fields[0];
+if (radioButtonListField is PdfRadioButtonListField &&
+ radioButtonListField.selectedIndex != 1) {
+ radioButtonListField.selectedValue = radioButtonListField.items[1].value;
+}
+
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(await document.save());
+
+{% endhighlight %}
+
+### Adding the list box field
+
+You can create the list box field in PDF forms using the PdfListBoxField class.
+
+Please refer to the following code sample for adding the list box field in a new PDF document.
+
+{% highlight dart %}
+
+//Create a new PDF document.
+final PdfDocument document = PdfDocument();
+
+// Create a list form field and add it to the document.
+document.form.fields.add(PdfListBoxField(
+ document.pages.add(), 'listBox', Rect.fromLTWH(100, 100, 100, 50),
+ alignment: PdfTextAlignment.center,
+ items: [
+ PdfListFieldItem('Tamil', 'Language 1'),
+ PdfListFieldItem('English', 'Language 2'),
+ PdfListFieldItem('French', 'Language 3')
+ ],
+ selectedValues: [
+ 'Tamil'
+ ]));
+document.form.setDefaultAppearance(true);
+
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(await document.save());
+
+{% endhighlight %}
+
+Please refer to the following code sample for adding the list box field in an existing PDF document.
+
+{% highlight dart %}
+
+//Loads an existing PDF document.
+final PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+// Create a list form field and add it to the existing document.
+document.form.fields.add(PdfListBoxField(
+ document.pages[0], 'listBox', Rect.fromLTWH(100, 100, 100, 50),
+ alignment: PdfTextAlignment.center,
+ items: [
+ PdfListFieldItem('Tamil', 'Language 1'),
+ PdfListFieldItem('English', 'Language 2'),
+ PdfListFieldItem('French', 'Language 3')
+ ],
+ selectedValues: [
+ 'Tamil'
+ ]));
+document.form.setDefaultAppearance(true);
+
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(await document.save());
+
+{% endhighlight %}
+
+### Adding the check Box field
+
+You can create the check box field in PDF forms using the PdfCheckBoxField class.
+
+Please refer to the following code sample for adding the check box field in a new PDF document.
+
+{% highlight dart %}
+
+//Create a new PDF document.
+final PdfDocument document = PdfDocument();
+
+// Create a list form field and add it to the document.
+document.form.fields.add(PdfCheckBoxField(
+ document.pages.add(), 'CheckBox', Rect.fromLTWH(100, 200, 70, 45),
+ highlightMode: PdfHighlightMode.push,
+ borderStyle: PdfBorderStyle.dot,
+ borderColor: PdfColor(230, 0, 172),
+ backColor: PdfColor(153, 255, 102),
+ foreColor: PdfColor(255, 153, 0),
+ borderWidth: 1,
+ style: PdfCheckBoxStyle.diamond,
+ isChecked: true));
+
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(await document.save());
+
+{% endhighlight %}
+
+Please refer to the following code sample for adding the check box field in an existing PDF document.
+
+{% highlight dart %}
+
+//Loads an existing PDF document.
+final PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+// Create a check box form field and add it to the existing document.
+document.form.fields.add(PdfCheckBoxField(
+ document.pages.add(), 'CheckBox', Rect.fromLTWH(100, 200, 70, 45),
+ highlightMode: PdfHighlightMode.push,
+ borderStyle: PdfBorderStyle.dot,
+ borderColor: PdfColor(230, 0, 172),
+ backColor: PdfColor(153, 255, 102),
+ foreColor: PdfColor(255, 153, 0),
+ borderWidth: 1,
+ style: PdfCheckBoxStyle.diamond,
+ isChecked: true));
+
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(await document.save());
+
+{% endhighlight %}
+
+### Adding the signature field
+
+You can add the signature field in PDF forms using the PdfSignatureField class.
+
+Please refer to the following code sample for adding the signature field in a new PDF document.
+
+{% highlight dart %}
+
+//Create a new PDF document.
+final PdfDocument document = PdfDocument();
+
+// Create a signature form field and add it to the document.
+document.form.fields.add(PdfSignatureField(document.pages.add(), 'Sign',
+ bounds: Rect.fromLTWH(100, 100, 100, 50)));
+
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(document.save());
+
+{% endhighlight %}
+
+Please refer to the following code sample for adding the signature field in an existing PDF document.
+
+{% highlight dart %}
+
+//Loads an existing PDF document.
+final PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+// Create a signature form field and add it to the existing document.
+document.form.fields.add(PdfSignatureField(document.pages[0], 'Sign',
+ bounds: Rect.fromLTWH(100, 100, 100, 50)));
+
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(await document.save());
+
+{% endhighlight %}
+
+### Adding the button field
+
+To create button fields in PDF forms, you can use the PdfButtonField class.
+
+The following code explains how to add the button field in a new PDF document.
+
+{% highlight dart %}
+
+//Create a new PDF document.
+final PdfDocument document = PdfDocument();
+
+// Create a list form field and add it to the document.
+document.form.fields.add(PdfButtonField(
+ document.pages.add(), 'Button field', Rect.fromLTWH(10, 10, 130, 40),
+ text: 'submit',
+ font: PdfStandardFont(PdfFontFamily.timesRoman, 14),
+ backColor: PdfColor(0, 255, 120),
+ borderColor: PdfColor(255, 131, 0),
+ foreColor: PdfColor(201, 130, 255),
+ highlightMode: PdfHighlightMode.push,
+ borderWidth: 5,
+ borderStyle: PdfBorderStyle.dashed)
+..addPrintAction());
+
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(await document.save());
+
+{% endhighlight %}
+
+Please refer to the following code sample for adding the button field in an existing PDF document.
+
+{% highlight dart %}
+
+//Loads an existing PDF document.
+final PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+// Create a PDF button form field and add it to the existing document.
+document.form.fields.add(PdfButtonField(
+ document.pages[0], 'Button field', Rect.fromLTWH(10, 10, 130, 40),
+ text: 'submit',
+ font: PdfStandardFont(PdfFontFamily.timesRoman, 14),
+ backColor: PdfColor(0, 255, 120),
+ borderColor: PdfColor(255, 131, 0),
+ foreColor: PdfColor(201, 130, 255),
+ highlightMode: PdfHighlightMode.push,
+ borderWidth: 5,
+ borderStyle: PdfBorderStyle.dashed)
+..addPrintAction());
+
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(await document.save());
+
+{% endhighlight %}
+
+## Set appearance to the PDF form fields
+
+After filling the form fields in the PDF document, it may appear empty due to the absence of the appearance dictionary. By setting the setDefaultAppearance method in PdfForm class to false, you can create the appearance dictionary. By this, the text will be visible in all PDF Viewers.
+
+The following code sample explains how to set appearance to the PDF form fields.
+
+{% highlight dart %}
+
+//Loads an existing PDF document.
+final PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Set the default appearance.
+document.form.setDefaultAppearance(true);
+
+//Get the loaded form field and update text.
+(document.form.fields[0] as PdfTextBoxField).text = 'Updated';
+
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(await document.save());
+
+{% endhighlight %}
+
+## Modifying the existing form field in a PDF document
+
+You can modify an existing form field by getting the field from the PdfFormFieldCollection. You can retrieve a field from the field collection by index.
+
+The following code sample explains how to modify an existing form field in a PDF document.
+
+{% highlight dart %}
+
+//Loads an existing PDF document.
+final PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Get the loaded form field and modify the properties.
+final PdfField field = document.form.fields[0];
+if (field is PdfTextBoxField) {
+ field.multiline = false;
+ field.isPassword = false;
+ field.text = 'new Text';
+ field.maxLength = 0;
+ field.spellCheck = false;
+ field.defaultValue = 'new defaultValue';
+ field.scrollable = false;
+}
+
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(await document.save());
+{% endhighlight %}
+
+Retrieving or Modifying the fore, border, and back color of an existing form field
+
+You can retrieve or modify the fore, border, and background color of existing form fields in a PDF document by using the foreColor, borderColor, and backColor properties of the respective form fields. The following code sample explains this.
+
+{% highlight dart %}
+
+//Loads an existing PDF document.
+final PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Get the loaded form field.
+final PdfField field = document.form.fields[0];
+
+if (field is PdfTextBoxField) {
+ //Get colors from the loaded field.
+ PdfColor fColor = field.foreColor;
+ PdfColor brColor = field.borderColor;
+ PdfColor bColor = field.backColor;
+
+ //Set colors for the loaded field.
+ field.foreColor = brColor;
+ field.borderColor = bColor;
+ field.backColor = fColor;
+}
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(await document.save());
+
+{% endhighlight %}
+
+## Filling form fields in an existing PDF Document
+
+Flutter PDF allows you to fill the form fields using the PdfField class.
+
+### Filling the text box field
+
+You can fill a text box field using the text property of PdfTextBoxField class. The following code sample explains this.
+
+{% highlight dart %}
+
+//Loads an existing PDF document.
+final PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Get the loaded form field and update text.
+(document.form.fields[0] as PdfTextBoxField).text = 'Updated';
+
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(await document.save());
+
+{% endhighlight %}
+
+### Filling the combo box field
+
+You can fill a combo box field using the selectedValue or selectedIndex properties of PdfLoadedComboBoxField class. Please refer to the following code sample to fill the combo box field in an existing PDF document.
+
+{% highlight dart %}
+
+//Loads an existing PDF document.
+final PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+// Get a combo box field and select the item.
+final PdfField comboBox = document.form.fields[0];
+if (comboBox is PdfComboBoxField && comboBox.selectedIndex != 1) {
+ comboBox.selectedValue = comboBox.items[1].value;
+}
+
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(await document.save());
+
+{% endhighlight %}
+
+### Filling the radio button field
+
+You can fill a radio button field using the selectedValue or selectedIndex properties of PdfRadioButtonListField class. Please refer to the following code sample to fill the radio button field in an existing PDF document.
+
+{% highlight dart %}
+
+//Loads an existing PDF document.
+final PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+// Get a radio button and select the item.
+final PdfField radioButtonListField = document.form.fields[0];
+if (radioButtonListField is PdfRadioButtonListField &&
+ radioButtonListField.selectedIndex != 1) {
+ radioButtonListField.selectedValue = radioButtonListField.items[1].value;
+}
+
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(await document.save());
+
+{% endhighlight %}
+
+### Filling the list box field
+
+The following code sample explains how to fill the list box field in an existing PDF document using the selectedIndex property of PdfListBoxField class.
+
+{% highlight dart %}
+
+//Loads an existing PDF document.
+final PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+// Get a list box field and select the items.
+(document.form.fields[0] as PdfListBoxField).selectedIndexes = [1,3];
+
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(await document.save());
+
+{% endhighlight %}
+
+### Filling the check box field
+
+You can fill a check box field by enabling the checked property of PdfCheckBoxField class. Please refer to the following code sample to fill the check box field.
+
+{% highlight dart %}
+
+//Loads an existing PDF document.
+final PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+// Get and fill the check box field.
+(document.form.fields[0] as PdfCheckBoxField).isChecked = true;
+
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(await document.save());
+
+{% endhighlight %}
+
+### Enumerate the form fields
+
+All the form fields are maintained in the PdfFormFieldCollection class. You can enumerate the fields from this form field collection and fill them.
+
+The following code example explains this.
+
+{% highlight dart %}
+
+//Loads an existing PDF document.
+final PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Enumerates the form fields.
+for (int i = 0; i < document.form.fields.count; i++) {
+ PdfField field = document.form.fields[i];
+ if (field is PdfTextBoxField) {
+ field.text = 'Updated';
+ }
+}
+
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(await document.save());
+
+{% endhighlight %}
+
+## Removing editing capability of form fields
+
+The form field editing or filling capabilities can be removed by either flattening the PDF document or marking the form or field as read-only.
+
+Flutter PDF provides the support to flatten a form field by removing the existing form field and replacing it with graphical objects that would resemble the form field and cannot be edited.
+
+Please refer to the sample for flattening the form fields in a new PDF document.
+
+{% highlight dart %}
+
+//Create a new PDF document.
+final PdfDocument document = PdfDocument();
+
+//Flatten the whole form fields.
+document.form.flattenAllFields();
+
+// Create a textbox form field and add it to the document.
+document.form.fields.add(PdfTextBoxField(
+ document.pages.add(), 'TextBox', Rect.fromLTWH(100, 20, 200, 20),
+ text: 'toType', isPassword: true, spellCheck: true));
+
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(document.save());
+
+{% endhighlight %}
+
+Please refer to the sample for flattening the form fields in an existing PDF document.
+
+{% highlight dart %}
+
+//Loads an existing PDF document.
+final PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+// Get and fill the text box field.
+(document.form.fields[0] as PdfTextBoxField).text = 'Updated';
+
+//Flatten the whole existing form fields.
+document.form.flattenAllFields();
+
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(await document.save());
+
+{% endhighlight %}
+
+To prevent the user from changing the form field content, you can also use the readOnly property.
+
+The following code sample explains how to set the readOnly property to a new PDF document.
+
+{% highlight dart %}
+
+//Create a new PDF document.
+final PdfDocument document = PdfDocument();
+
+//Set the form as read-only.
+document.form.readOnly = true;
+
+// Create a text box form field and add it to the document.
+document.form.fields.add(PdfTextBoxField(
+ document.pages.add(), 'TextBox', Rect.fromLTWH(100, 20, 200, 20),
+ text: 'toType', isPassword: true, spellCheck: true));
+
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(document.save());
+
+{% endhighlight %}
+
+The following code sample explains how to set the ReadOnly property to an existing PDF document.
+
+{% highlight dart %}
+
+//Loads an existing PDF document and set the form as read-only.
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync())
+ ..form.readOnly = true;
+
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(await document.save());
+
+{% endhighlight %}
+
+## Removing the form fields from the existing PDF document
+
+You can remove the form fields from an existing PDF document using the remove or removeAt methods of PdfFormFieldCollection class.
+
+The following code explains how to remove the form fields from the existing PDF document.
+
+{% highlight dart %}
+
+//Loads an existing PDF document.
+final PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Get the loaded form.
+PdfFormFieldCollection collection = document.form.fields;
+
+//Remove the field at index 1.
+collection.removeAt(1);
+
+//Remove the field.
+collection.remove(collection[0]);
+
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(await document.save());
+
+{% endhighlight %}
+
+## Auto naming of form fields
+
+Flutter PDF supports auto naming of form fields in a PDF document while creating form fields with the same name. The fieldAutoNaming property of PdfForm is used to enable or disable auto naming of a form field.
+
+While enabling this property, the field names are auto naming. If the fields are created using the same or common name, the created fields will act as an individual.
+
+While disabling this property, the field names are not auto naming, and the created fields are saved in a single group. The same value will be referred in all the same name fields.
+
+By default, the value is set to true. This is explained in the following code sample.
+
+{% highlight dart %}
+
+//Create a new PDF document.
+final PdfDocument document = PdfDocument();
+
+//Enable the field auto naming.
+document.form.fieldAutoNaming = true;
+
+// Create a text box form field and add it to the document.
+document.form.fields.add(PdfTextBoxField(
+ document.pages.add(), 'TextBox', Rect.fromLTWH(100, 20, 200, 20),
+ text: 'First name', spellCheck: true));
+
+// Create a text box form field and add it to the document.
+document.form.fields.add(PdfTextBoxField(
+ document.pages[0], 'TextBox', Rect.fromLTWH(100, 50, 200, 20),
+ text: 'Last name', spellCheck: true));
+
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(await document.save());
+
+{% endhighlight %}
+
+## Adding an action to the form field
+
+Flutter PDF provides support to add various actions to the form fields. The PdfFieldActions class is used to create the form field actions.
+
+The following code example explains this.
+
+{% highlight dart %}
+
+//Create a new PDF document.
+final PdfDocument document = PdfDocument();
+
+//Create a button field with the filed actions and added to the form fields.
+document.form.fields.add(PdfButtonField(document.pages.add(),
+ 'Submit with actions', Rect.fromLTWH(100, 60, 50, 20),
+ actions: PdfFieldActions(
+ PdfAnnotationActions(
+ mouseEnter: PdfSubmitAction('https://www.google.co.in/',
+ dataFormat: SubmitDataFormat.pdf, submitCoordinates: true)),
+ keyPressed: PdfJavaScriptAction(
+ 'app.alert(\"You are looking at Java script action of PDF \")'),
+ )));
+
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(await document.save());
+
+{% endhighlight %}
+
+## Importing FDF file to PDF
+
+FDF (Forms Data Format) is a file format for representing form data and annotations that are contained in a PDF form. You can import the FDF file to PDF using the importData method available in the ['PdfForm'](#) class.
+
+The following code sample explains how to import the FDF file to PDF.
+
+{% highlight dart %}
+
+//Loads an existing PDF document.
+final PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Import the FDF into the existing form.
+document.form
+ .importData(File('Import.fdf').readAsBytesSync(), DataFormat.fdf);
+
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(await document.save());
+
+{% endhighlight %}
+
+## Importing XFDF file to PDF
+
+XFDF (XML Forms Data Format) is used to save the form data that can be imported into a PDF document. You can import the XFDF file to PDF using the importData method available in the ['PdfForm'](#) class.
+
+The following code sample explains how to import the XFDF file to PDF.
+
+{% highlight dart %}
+
+//Loads an existing PDF document.
+final PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Import the XFDF into the existing form.
+document.form
+ .importData(File('Import.xfdf').readAsBytesSync(), DataFormat.xfdf);
+
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(await document.save());
+
+{% endhighlight %}
+
+## Importing JSON file to PDF
+
+JSON (JavaScript Object Notation) file is used to save the form data that can be imported into a PDF document. You can import the JSON file to PDF using the importData method available in the ['PdfForm'](#) class.
+
+The following code sample explains how to import JSON files to PDF.
+
+{% highlight dart %}
+
+//Loads an existing PDF document.
+final PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Import the JSON into the existing form.
+document.form
+ .importData(File('Import.json').readAsBytesSync(), DataFormat.json);
+
+//Enable the form default appearance.
+document.form.setDefaultAppearance(true);
+
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(await document.save());
+
+{% endhighlight %}
+
+## Importing XML file to PDF
+
+XML stands for an extensible markup language. The XML file is used to save the form data that can be imported into a PDF document. You can import the JSON file to PDF using the importData method available in the ['PdfForm'](#) class.
+
+The following code sample explains how to import XML files to PDF.
+
+{% highlight dart %}
+
+//Loads an existing PDF document.
+final PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Import the XML into the existing form.
+document.form
+ .importData(File('Import.xml').readAsBytesSync(), DataFormat.xml);
+
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(await document.save());
+
+{% endhighlight %}
+
+## Export PDF file to FDF
+
+To export the FDF file from a PDF document, you can use the exportData method available in the ['PdfForm'](#) class.
+
+The following code sample explains how to export the FDF file from a PDF document.
+
+{% highlight dart %}
+
+//Load the existing PDF document.
+PdfDocument document = PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Export the form data to FDF format.
+File('Export.fdf').writeAsBytesSync(document.form.exportData(DataFormat.fdf));
+
+//Dispose the PDF document.
+document.dispose();
+
+{% endhighlight %}
+
+## Export PDF file to XFDF
+
+To export the XFDF file from a PDF document, you can use the exportData method available in the ['PdfForm'](#) class.
+
+The following code sample explains how to export the XFDF file from a PDF document.
+
+{% highlight dart %}
+
+//Load the existing PDF document.
+PdfDocument document = PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Export the form data to XFDF format.
+File('Export.xfdf').writeAsBytesSync(document.form.exportData(DataFormat.xfdf));
+
+//Dispose the PDF document.
+document.dispose();
+
+{% endhighlight %}
+
+## Export PDF file to JSON
+
+To export the JSON file from a PDF document, you can use the exportData method available in the ['PdfForm'](#) class.
+
+The following code sample explains how to export JSON files from a PDF document.
+
+{% highlight dart %}
+//Load the existing PDF document.
+PdfDocument document = PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Export the form data to JSON format.
+File('Export.json').writeAsBytesSync(document.form.exportData(DataFormat.json));
+
+//Dispose the PDF document.
+document.dispose();
+
+{% endhighlight %}
+
+## Export PDF file to XML
+
+To export the XML file from a PDF document, you can use the exportData method available in the ['PdfForm'](#) class.
+
+The following code sample explains how to export an XML file from a PDF document.
+
+{% highlight dart %}
+
+//Load the existing PDF document.
+PdfDocument document = PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Export the form data to XML format.
+File('Export.xml').writeAsBytesSync(document.form.exportData(DataFormat.xml));
+
+//Dispose the PDF document.
+document.dispose();
+
+{% endhighlight %}
+
+
+## Troubleshooting
+
+Sometimes, Form fields may appear empty in an adobe reader due to the absence of the appearance dictionary. To resolve this, you need to enable the Adobe Reader default appearance by using the setDefaultAppearance method in PdfForm class.
+
+The following code explains how to enable the default appearance in a new PDF document.
+
+{% highlight dart %}
+
+//Loads an existing PDF document.
+final PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+// Create a list form field and add it to the existing document.
+document.form.fields.add(PdfListBoxField(
+ document.pages[0], 'listBox', Rect.fromLTWH(100, 100, 100, 50),
+ alignment: PdfTextAlignment.center,
+ items: [
+ PdfListFieldItem('Tamil', 'Language 1'),
+ PdfListFieldItem('English', 'Language 2'),
+ PdfListFieldItem('French', 'Language 3')
+ ],
+ selectedValues: [
+ 'Tamil'
+ ]));
+document.form.setDefaultAppearance(true);
+
+//Save the PDF document.
+File('output.pdf').writeAsBytesSync(await document.save());
+
+{% endhighlight %}
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Library/flutter/working-with-headers-and-footers.md b/Document-Processing/PDF/PDF-Library/flutter/working-with-headers-and-footers.md
new file mode 100644
index 000000000..844a2c7ac
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Library/flutter/working-with-headers-and-footers.md
@@ -0,0 +1,113 @@
+---
+layout: post
+title: Headers and Footers in Flutter PDF library | Syncfusion
+description: Learn here all about drawing Headers and Footers feature of Syncfusion Flutter PDF non-UI library and more.
+platform: document-processing
+control: PDF
+documentation: ug
+---
+
+# Headers and Footers in Flutter PDF
+
+The Flutter PDF supports drawing the header and footer in PDF document using [`PdfPageTemplateElement`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfPageTemplateElement-class.html) class. The header and footer contain the graphics support and automatic field support to perform their operations.
+
+## Adding graphics and automatic fields to header and footer
+
+This package supports to add page count, page numbers, date and time using automatic fields such as [`PdfPageCountField`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfPageCountField-class.html), [`PdfPageNumberField`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfPageNumberField-class.html) and [`PdfDateTimeField`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfDateTimeField-class.html), and more.
+
+The following code snippet explains how to use the graphics and automatic fields in header and footer.
+
+{% highlight dart %}
+
+//Create a new pdf document
+PdfDocument document = PdfDocument();
+
+//Create the header with specific bounds
+PdfPageTemplateElement header = PdfPageTemplateElement(
+ Rect.fromLTWH(0, 0, document.pageSettings.size.width, 100));
+
+//Create the date and time field
+PdfDateTimeField dateAndTimeField = PdfDateTimeField(
+ font: PdfStandardFont(PdfFontFamily.timesRoman, 19),
+ brush: PdfSolidBrush(PdfColor(0, 0, 0)));
+dateAndTimeField.date = DateTime(2020, 2, 10, 13, 13, 13, 13, 13);
+dateAndTimeField.dateFormatString = 'E, MM.dd.yyyy';
+
+//Create the composite field with date field
+PdfCompositeField compositefields = PdfCompositeField(
+ font: PdfStandardFont(PdfFontFamily.timesRoman, 19),
+ brush: PdfSolidBrush(PdfColor(0, 0, 0)),
+ text: '{0} Header',
+ fields: [dateAndTimeField]);
+
+//Add composite field in header
+compositefields.draw(header.graphics,
+ Offset(0, 50 - PdfStandardFont(PdfFontFamily.timesRoman, 11).height));
+
+//Add the header at top of the document
+document.template.top = header;
+
+//Create the footer with specific bounds
+PdfPageTemplateElement footer = PdfPageTemplateElement(
+ Rect.fromLTWH(0, 0, document.pageSettings.size.width, 50));
+
+//Create the page number field
+PdfPageNumberField pageNumber = PdfPageNumberField(
+ font: PdfStandardFont(PdfFontFamily.timesRoman, 19),
+ brush: PdfSolidBrush(PdfColor(0, 0, 0)));
+
+//Sets the number style for page number
+pageNumber.numberStyle = PdfNumberStyle.upperRoman;
+
+//Create the page count field
+PdfPageCountField count = PdfPageCountField(
+ font: PdfStandardFont(PdfFontFamily.timesRoman, 19),
+ brush: PdfSolidBrush(PdfColor(0, 0, 0)));
+
+//set the number style for page count
+count.numberStyle = PdfNumberStyle.upperRoman;
+
+//Create the date and time field
+PdfDateTimeField dateTimeField = PdfDateTimeField(
+ font: PdfStandardFont(PdfFontFamily.timesRoman, 19),
+ brush: PdfSolidBrush(PdfColor(0, 0, 0)));
+
+//Sets the date and time
+dateTimeField.date = DateTime(2020, 2, 10, 13, 13, 13, 13, 13);
+
+//Sets the date and time format
+dateTimeField.dateFormatString = 'hh\':\'mm\':\'ss';
+
+//Create the composite field with page number page count
+PdfCompositeField compositeField = PdfCompositeField(
+ font: PdfStandardFont(PdfFontFamily.timesRoman, 19),
+ brush: PdfSolidBrush(PdfColor(0, 0, 0)),
+ text: 'Page {0} of {1}, Time:{2}',
+ fields: [pageNumber, count, dateTimeField]);
+compositeField.bounds = footer.bounds;
+
+//Add the composite field in footer
+compositeField.draw(footer.graphics,
+ Offset(290, 50 - PdfStandardFont(PdfFontFamily.timesRoman, 19).height));
+
+//Add the footer at the bottom of the document
+document.template.bottom = footer;
+
+//Add the pages to the document
+for (int i = 1; i <= 5; i++) {
+ document.pages.add().graphics.drawString(
+ 'Page $i', PdfStandardFont(PdfFontFamily.timesRoman, 11),
+ bounds: Rect.fromLTWH(250, 0, 615, 100));
+}
+
+//Save the PDF document
+File('HeaderAndFooter.pdf').writeAsBytes(await document.save());
+
+//Dispose document
+document.dispose();
+
+{% endhighlight %}
+
+By executing the above code sample, you will get the PDF document as follows.
+
+
diff --git a/Document-Processing/PDF/PDF-Library/flutter/working-with-hyperlinks.md b/Document-Processing/PDF/PDF-Library/flutter/working-with-hyperlinks.md
new file mode 100644
index 000000000..cab9b89a3
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Library/flutter/working-with-hyperlinks.md
@@ -0,0 +1,76 @@
+---
+layout: post
+title: Hyperlinks in Flutter PDF library | Syncfusion
+description: Learn here all about Hyperlinks or Web navigation feature of Syncfusion Flutter PDF non-UI library and more.
+platform: document-processing
+control: PDF
+documentation: ug
+---
+
+# Hyperlinks in Flutter PDF
+
+In PDF, hyperlinks can be added to allow the users to navigate to another part of a PDF file and web page.
+
+## Working with Web navigation
+
+You can navigate to a specified URL from a PDF document by using the [`PdfTextWebLink`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfTextWebLink-class.html) class.
+
+Refer to the following code snippet for navigating to the webpage.
+
+{% highlight dart %}
+
+//Create a new Pdf document
+PdfDocument document = PdfDocument();
+
+//Create and draw the web link in the PDF page
+PdfTextWebLink(
+ url: 'www.google.co.in',
+ text: 'google',
+ font: PdfStandardFont(PdfFontFamily.timesRoman, 14),
+ brush: PdfSolidBrush(PdfColor(0, 0, 0)),
+ pen: PdfPens.brown,
+ format: PdfStringFormat(
+ alignment: PdfTextAlignment.center,
+ lineAlignment: PdfVerticalAlignment.middle))
+ .draw(document.pages.add(), Offset(50, 40));
+
+//Save the PDF document
+File('Hyperlink.pdf').writeAsBytes(await document.save());
+
+//Dispose document
+document.dispose();
+
+{% endhighlight %}
+
+## Working with internal document navigation
+
+To allow the users navigate to any other part of the same document, the [`PdfDocumentLinkAnnotation`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfDocumentLinkAnnotation-class.html) class can be used.
+
+The following code explains how to add the hyperlink for internal document navigation.
+
+{% highlight dart %}
+
+//Create a new Pdf document
+PdfDocument document = PdfDocument();
+
+//Create a page
+PdfPage page = document.pages.add();
+
+//Create a document link
+PdfDocumentLinkAnnotation docLink = PdfDocumentLinkAnnotation(
+ Rect.fromLTWH(10, 40, 30, 30),
+ PdfDestination(document.pages.add(), Offset(10, 0)));
+
+//Set the destination mode
+docLink.destination!.mode = PdfDestinationMode.fitToPage;
+
+//Add the document link to the page
+page.annotations.add(docLink);
+
+//Save the PDF document
+File('Hyperlink.pdf').writeAsBytes(await document.save());
+
+//Dispose document
+document.dispose();
+
+{% endhighlight %}
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Library/flutter/working-with-images.md b/Document-Processing/PDF/PDF-Library/flutter/working-with-images.md
new file mode 100644
index 000000000..2d2d7b9ac
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Library/flutter/working-with-images.md
@@ -0,0 +1,137 @@
+---
+layout: post
+title: Images in Flutter PDF library | Syncfusion
+description: Learn here all about draw raster images and applying transparency and rotation to the images feature of Syncfusion Flutter PDF non-UI library and more.
+platform: document-processing
+control: PDF
+documentation: ug
+---
+
+# Images in Flutter PDF
+
+Images are supported through the [`PdfImage`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfImage-class.html) class, which is an abstract base class that provides functionality for [`PdfBitmap`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfBitmap-class.html) class.
+
+## Inserting an image in PDF document
+
+The following raster images are supported in Flutter PDF:
+
+* JPEG
+* PNG
+
+You can load image data in [`PdfBitmap`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfBitmap-class.html) object to draw the images using the [`drawImage`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGraphics/drawImage.html) method of the [`PdfGraphics`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGraphics-class.html) class. The image data can be initialized as list of bytes or base64 string format.
+
+The following code snippet shows how to draw an image to the PDF document.
+
+{% highlight dart %}
+
+//Create a new PDF document
+PdfDocument document = PdfDocument();
+
+//Adds a page to the document
+PdfPage page = document.pages.add();
+
+//Draw the image
+page.graphics.drawImage(
+ PdfBitmap(File('image.jpg').readAsBytesSync()),
+ Rect.fromLTWH(
+ 0, 0, page.getClientSize().width, page.getClientSize().height));
+
+//Saves the document
+File('Output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+## Applying transparency and rotation to the image
+
+You can add transparency and rotation to the image using the [`setTransparency`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGraphics/setTransparency.html) and [`rotateTransform`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGraphics/rotateTransform.html) methods of [`PdfGraphics`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGraphics-class.html) respectively. This is explained in the following code snippet.
+
+{% highlight dart %}
+
+//Create a new PDF document
+PdfDocument document = PdfDocument();
+
+//Adds a page to the document
+PdfPage page = document.pages.add();
+
+//Save the current graphics state
+PdfGraphicsState state = page.graphics.save();
+
+//Translate the coordinate system to the required position
+page.graphics.translateTransform(20, 100);
+
+//Apply transparency
+page.graphics.setTransparency(0.5);
+
+//Rotate the coordinate system
+page.graphics.rotateTransform(-45);
+
+//Draw image
+page.graphics.drawImage(
+ PdfBitmap(File('image.jpg').readAsBytesSync()),
+ Rect.fromLTWH(
+ 0, 0, page.getClientSize().width, page.getClientSize().height));
+
+//Restore the graphics state
+page.graphics.restore(state);
+
+//Saves the document
+File('Output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+## Inserting image to PDF using a web URL
+
+The ['PdfBitmap'](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfBitmap-class.html) API accepts List and base64 string as inputs, so you can retrieve the image from the web URL as base64 or List and assign it to the bitmap class.
+
+Steps to insert an image to the PDF using Web URL:
+ 1. Add **http** package to the dependencies section of the **pubspec.yaml** file
+ {% highlight dart %}
+dependencies:
+http: ^0.13.4
+{%endhighlight%}
+
+2. Import the following package into your dart file.
+{%highlight dart%}
+import 'package:http/http.dart' show get;
+{%endhighlight%}
+
+This is explained in the following code snippet.
+
+{% highlight dart %}
+
+ //Create a PDF document.
+ PdfDocument document = PdfDocument();
+
+ //Add a page to the PDF.
+ PdfPage page = document.pages.add();
+
+
+ //Read the image data from the weblink.
+ var url =
+ "https://cdn.pixabay.com/photo/2015/04/23/22/00/tree-736885_1280.jpg";
+ var response = await get(Uri.parse(url));
+ var data = response.bodyBytes;
+
+ //Create a bitmap object.
+ PdfBitmap image = PdfBitmap(data);
+
+ //Draw an image to the document.
+ page.graphics.drawImage(
+ image,
+ Rect.fromLTWH(
+ 0, 0, page.getClientSize().width, page.getClientSize().height));
+
+ //Save and launch the document.
+ final List bytes =await document.save();
+
+ //Dispose the document.
+ document.dispose();
+
+
+{% endhighlight %}
diff --git a/Document-Processing/PDF/PDF-Library/flutter/working-with-layers.md b/Document-Processing/PDF/PDF-Library/flutter/working-with-layers.md
new file mode 100644
index 000000000..f00ed700c
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Library/flutter/working-with-layers.md
@@ -0,0 +1,188 @@
+---
+layout: post
+title: Layers in Flutter PDF library | Syncfusion
+description: Learn here all about add, remove, and modify the layers feature of Syncfusion Flutter PDF non-UI library and more.
+platform: document-processing
+control: PDF
+documentation: ug
+---
+
+# Layers in Flutter PDF
+
+Layers also known as Option content, refer to sections of content in a PDF document that can be selectively viewed or hidden by document authors or consumers.
+
+Syncfusion® Flutter PDF provides support to create, add, update, and remove the layers from the PDF document.
+
+## Adding Layers in a PDF document
+
+You can create a layer in a PDF page using the [`PdfPageLayer`](#) class. The following code sample shows how to add the multiple layers in a new PDF document.
+
+{% highlight dart %}
+
+//Creates a new PDF document
+PdfDocument document = PdfDocument();
+
+//Creates a new page
+PdfPage page = document.pages.add();
+
+//Add the first layer.
+PdfPageLayer layer = page.layers.add(name: 'Layer1');
+
+//Get the layer graphics.
+PdfGraphics graphics = layer.graphics;
+graphics.translateTransform(100, 60);
+
+//Draw an Arc.
+graphics.drawArc(Rect.fromLTWH(0, 0, 50, 50), 360, 360,
+ pen: PdfPen(PdfColor(250, 0, 0), width: 50));
+graphics.drawArc(Rect.fromLTWH(0, 0, 50, 50), 360, 360,
+ pen: PdfPen(PdfColor(0, 0, 250), width: 30));
+graphics.drawArc(Rect.fromLTWH(0, 0, 50, 50), 360, 360,
+ pen: PdfPen(PdfColor(250, 250, 0), width: 20));
+graphics.drawArc(Rect.fromLTWH(0, 0, 50, 50), 360, 360,
+ pen: PdfPen(PdfColor(0, 250, 0), width: 10));
+
+//Add another layer on the page.
+layer = page.layers.add(name: 'Layer2', visible: false);
+
+graphics = layer.graphics;
+graphics.translateTransform(100, 180);
+
+//Draw another set of elements.
+graphics.drawArc(Rect.fromLTWH(0, 0, 50, 50), 360, 360,
+ pen: PdfPen(PdfColor(250, 0, 0), width: 50));
+graphics.drawArc(Rect.fromLTWH(0, 0, 50, 50), 360, 360,
+ pen: PdfPen(PdfColor(0, 0, 250), width: 30));
+graphics.drawArc(Rect.fromLTWH(0, 0, 50, 50), 360, 360,
+ pen: PdfPen(PdfColor(250, 250, 0), width: 20));
+graphics.drawArc(Rect.fromLTWH(0, 0, 50, 50), 360, 360,
+ pen: PdfPen(PdfColor(0, 250, 0), width: 10));
+
+//Save the PDF document.
+File('output.pdf').writeAsBytes(await document.save());
+
+{% endhighlight %}
+
+The following code shows how to add the multiple layers in an existing PDF document.
+
+{% highlight dart %}
+
+//Load the existing PDF document.
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Add the first layer.
+PdfPageLayer layer =
+ document.pages[0].layers.add(name: 'Layer1', visible: true);
+
+//Get the layer graphics.
+PdfGraphics graphics = layer.graphics;
+
+graphics.translateTransform(300, 360);
+
+//Draw an Arc.
+graphics.drawArc(Rect.fromLTWH(0, 0, 50, 50), 360, 360,
+ pen: PdfPen(PdfColor(250, 0, 0), width: 50));
+graphics.drawArc(Rect.fromLTWH(0, 0, 50, 50), 360, 360,
+ pen: PdfPen(PdfColor(0, 0, 250), width: 30));
+graphics.drawArc(Rect.fromLTWH(0, 0, 50, 50), 360, 360,
+ pen: PdfPen(PdfColor(250, 250, 0), width: 20));
+graphics.drawArc(Rect.fromLTWH(0, 0, 50, 50), 360, 360,
+ pen: PdfPen(PdfColor(0, 250, 0), width: 10));
+
+//Save the PDF document.
+File('output.pdf').writeAsBytes(await document.save());
+
+{% endhighlight %}
+
+## Toggling the visibility of layers
+
+The visibility of a layer can be mentioned while creating a new page layer.
+
+The following code shows how to toggle the visibility of layers in a new PDF document.
+
+{% highlight dart %}
+
+//Creates a new PDF document
+PdfDocument document = PdfDocument();
+
+//Creates a new page
+PdfPage page = document.pages.add();
+
+//Add the first layer and enable visibility.
+PdfPageLayer layer = page.layers.add(name: 'Layer1', visible: true);
+PdfGraphics graphics = layer.graphics;
+graphics.translateTransform(100, 60);
+graphics.drawArc(Rect.fromLTWH(0, 0, 50, 50), 360, 360,
+ pen: PdfPen(PdfColor(250, 0, 0), width: 50));
+
+//Add another layer on the page and disable the visibility.
+PdfPageLayer layer2 = page.layers.add(name: 'Layer2', visible: false);
+graphics = layer2.graphics;
+graphics.translateTransform(100, 180);
+graphics.drawEllipse(Rect.fromLTWH(0, 0, 50, 50),
+ pen: PdfPen(PdfColor(250, 0, 0), width: 50));
+
+//Save the PDF document.
+File('output.pdf').writeAsBytes(await document.save());
+
+{% endhighlight %}
+
+## Removing layers from an existing PDF document
+
+You can remove the layers from the layer collection represented by the [`PdfPageLayerCollection`](#) of the loaded page. This is showed in the following code sample.
+
+{% highlight dart %}
+
+//Load the existing PDF document and remove the layer on the first page.
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync())
+ ..pages[0].layers.removeAt(1);
+
+//Save the PDF document.
+File('output.pdf').writeAsBytes(await document.save());
+
+{% endhighlight %}
+
+## Nested Layers
+
+Syncfusion® Flutter PDF allows users to add nested layers in the PDF document. Refer to the following code sample.
+
+{% highlight dart %}
+
+//Creates a new PDF document
+PdfDocument document = PdfDocument();
+
+//Creates a new page
+PdfPage page = document.pages.add();
+
+//Add the first layer.
+PdfLayer layer = document.layers.add(name: 'Layer1', visible: true)
+ ..createGraphics(page).drawRectangle(
+ bounds: Rect.fromLTWH(0, 0, 200, 100), brush: PdfBrushes.red);
+
+//Create nested layer.
+layer.layers.add(name: 'Nested Layer1', visible: true)
+ ..createGraphics(page)
+ .drawRectangle(bounds: Rect.fromLTWH(0, 120, 200, 100), brush: PdfBrushes.green);
+
+//Save the PDF document.
+File('output.pdf').writeAsBytes(await document.save());
+
+{% endhighlight %}
+
+## Flattening the layers in an existing PDF document
+
+You can flatten a layer in a PDF document by removing it from the [`PdfLayerCollection`](#). The following code sample explains this.
+
+{% highlight dart %}
+
+//Load the existing PDF document and flatten the layer.
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync())..layers.removeAt(0, false);
+
+//Save the PDF document.
+File('output.pdf').writeAsBytes(await document.save());
+
+
+{% endhighlight %}
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Library/flutter/working-with-lists.md b/Document-Processing/PDF/PDF-Library/flutter/working-with-lists.md
new file mode 100644
index 000000000..2eca4c2fb
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Library/flutter/working-with-lists.md
@@ -0,0 +1,157 @@
+---
+layout: post
+title: Bullets and Lists in Flutter PDF library | Syncfusion
+description: Learn here all about add ordered and unordered lists feature of Syncfusion Flutter PDF non-UI library and more.
+platform: document-processing
+control: PDF
+documentation: ug
+---
+
+# Bullets and Lists in Flutter PDF
+
+The Syncfusion® Flutter PDF allows you list the content in ordered and unordered list. The ordered list can be number or alphabets and the unordered list can be bullets, circles, and images.
+
+## Adding an ordered list
+
+The Syncfusion® Flutter PDF allows you to create an ordered list in the document. An ordered list is represented by the [`PdfOrderedList`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfOrderedList-class.html) class. The following code snippet explains the same.
+
+{% highlight dart %}
+
+//Create a new PDF document
+PdfDocument document = PdfDocument();
+
+//Create ordered list and draw on page
+PdfOrderedList(
+ items: PdfListItemCollection([
+ 'Mammals',
+ 'Reptiles',
+ 'Birds',
+ 'Insects',
+ 'Aquatic Animals'
+ ]),
+ font: PdfStandardFont(PdfFontFamily.timesRoman, 20,
+ style: PdfFontStyle.italic),
+ indent: 20,
+ format: PdfStringFormat(lineSpacing: 10))
+ .draw(page: document.pages.add(), bounds: Rect.fromLTWH(0, 20, 0, 0));
+
+//Saves the document
+File('Output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+## Adding an unordered list
+
+The Syncfusion® Flutter PDF also provides support to create an unordered list that is represented by the [`PdfUnorderedList`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfUnorderedList-class.html) class. The following code snippet explains the same.
+
+{% highlight dart %}
+
+//Create a new PDF document
+PdfDocument document = PdfDocument();
+
+//Create unordered list and draw list on page
+PdfUnorderedList(
+ text: 'Mammals\nReptiles\nBirds\nInsects\nAquatic Animals',
+ style: PdfUnorderedMarkerStyle.disk,
+ font: PdfStandardFont(PdfFontFamily.helvetica, 12),
+ indent: 10,
+ textIndent: 10,
+ format: PdfStringFormat(lineSpacing: 10))
+ .draw(page: document.pages.add(), bounds: Rect.fromLTWH(0, 10, 0, 0));
+
+//Saves the document
+File('Output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+## Adding a sub list
+
+The Syncfusion® Flutter PDF also provides support to create a sub list to a [`PdfList`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfList-class.html). A sub list can be created under both [`PdfOrderedList`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfOrderedList-class.html) and [`PdfUnorderedList`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfUnorderedList-class.html). The following code snippet explains the same.
+
+{% highlight dart %}
+
+//Create a new PDF document
+PdfDocument document = PdfDocument();
+
+//Adds a page to the document
+PdfPage page = document.pages.add();
+
+//Create font
+PdfFont font = PdfStandardFont(PdfFontFamily.helvetica, 16);
+
+PdfListItemCollection item = PdfListItemCollection(['Mammals', 'Reptiles']);
+
+PdfListItemCollection item_2 = PdfListItemCollection([
+ 'body covered by scales',
+ 'cold-blooded',
+ 'have a backbone',
+ 'most lay hard-shelled eggs on land',
+]);
+PdfListItemCollection item_3 = PdfListItemCollection([
+ 'body covered by scales',
+ 'cold-blooded',
+ 'have a backbone',
+ 'most lay hard-shelled eggs on land'
+]);
+
+//Create a string format
+PdfStringFormat format = PdfStringFormat(lineSpacing: 10);
+
+//Create ordered list
+PdfOrderedList oList =
+ PdfOrderedList(items: item, font: font, format: format);
+
+//Create ordered sub list
+oList.items[0].subList = PdfOrderedList(
+ items: item_2, font: font, format: format, markerHierarchy: true);
+
+//Create ordered sub list
+oList.items[1].subList = PdfOrderedList(
+ items: item_3, font: font, format: format, markerHierarchy: true);
+
+//Draw ordered list with sub list
+oList.draw(
+ page: page,
+ bounds: Rect.fromLTWH(
+ 0, 10, page.getClientSize().width, page.getClientSize().height));
+
+//Create unordered list
+PdfUnorderedList uList = PdfUnorderedList(
+ items: item,
+ font: font,
+ format: format,
+ style: PdfUnorderedMarkerStyle.disk);
+
+//Create unordered sub list
+uList.items[0].subList = PdfUnorderedList(
+ items: item_2,
+ font: font,
+ format: format,
+ style: PdfUnorderedMarkerStyle.circle);
+
+//Create unordered sub list
+uList.items[1].subList = PdfUnorderedList(
+ items: item_3,
+ font: font,
+ format: format,
+ style: PdfUnorderedMarkerStyle.circle);
+
+//Draw unordered list with sub list
+uList.draw(
+ page: page,
+ bounds: Rect.fromLTWH(
+ 0, 400, page.getClientSize().width, page.getClientSize().height));
+
+//Saves the document
+File('Output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
diff --git a/Document-Processing/PDF/PDF-Library/flutter/working-with-pages.md b/Document-Processing/PDF/PDF-Library/flutter/working-with-pages.md
new file mode 100644
index 000000000..f178a99db
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Library/flutter/working-with-pages.md
@@ -0,0 +1,227 @@
+---
+layout: post
+title: Pages in Flutter PDF library | Syncfusion
+description: Learn here all about add, rotate pages and customize page settings feature of Syncfusion Flutter PDF non-UI library and more.
+platform: document-processing
+control: PDF
+documentation: ug
+---
+
+# Pages in Flutter PDF
+
+## Adding a new page to the PDF document
+
+The following code sample explains how to add a [`PdfPage`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfPage-class.html) to a PDF document. When multiple pages are added, the new page will always be added to the end of the document.
+
+{% highlight dart %}
+
+//Create a new PDF documentation
+PdfDocument document = PdfDocument();
+
+//Create a new PDF page and draw the text
+document.pages.add().graphics.drawString(
+ 'Hello World!!!', PdfStandardFont(PdfFontFamily.helvetica, 27),
+ brush: PdfBrushes.darkBlue, bounds: const Rect.fromLTWH(170, 100, 0, 0));
+
+//Save and dispose the PDF document
+File('Output.pdf').writeAsBytes(await document.save());
+document.dispose();
+
+{% endhighlight %}
+
+## Inserting pages in an existing document
+
+You can insert an empty page at any location in the existing PDF document using the insert method. The following code sample explains the same.
+
+{% highlight dart %}
+
+//Loads an existing PDF document
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Inserts a new page at index 0
+document.pages.insert(0);
+
+//Saves the document
+File('output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+
+## Adding margin to the PDF pages
+
+You can add [`margin`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfPageSettings/margins.html) to all the PDF pages of a PDF document using the [`pageSettings`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfDocument/pageSettings.html) property. The following code snippet explains the same.
+
+{% highlight dart %}
+
+//Create a new PDF documentation
+PdfDocument document = PdfDocument();
+
+//Set margin for all the pages
+document.pageSettings.margins.all = 200;
+
+//Draw the text by adding page to the document
+document.pages.add().graphics.drawString(
+ 'Hello World!!!', PdfStandardFont(PdfFontFamily.helvetica, 27),
+ brush: PdfBrushes.darkBlue);
+
+//Save and dispose the PDF document
+List bytes =await document.save();
+document.dispose();
+
+{% endhighlight %}
+
+## Adding sections with different page settings
+
+Flutter PDF supports adding sections with different page settings such as [`margins`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfPageSettings/margins.html), [`orientation`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfPageSettings/orientation.html), [`rotate`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfPageSettings/rotate.html), [`size`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfPageSettings/size.html). You can add sections to a PDF document by using the [`PdfSection`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfSection-class.html) available in [`PdfDocument`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfDocument-class.html) instance and create page settings to the [`PdfSection`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfSection-class.html) using the [`pageSettings`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfSection/pageSettings.html) property.
+
+The following code snippet explains how to add more sections to a PDF document with different page settings.
+
+{% highlight dart %}
+
+//Create a PDF document
+PdfDocument document = PdfDocument();
+
+//Set the font
+PdfFont font = PdfStandardFont(PdfFontFamily.helvetica, 14);
+
+//Section - 1
+//Add section to the document
+PdfSection section = document.sections!.add();
+
+//Create page settings to the section
+section.pageSettings.rotate = PdfPageRotateAngle.rotateAngle0;
+section.pageSettings.size = const Size(300, 400);
+
+//Draw simple text on the page
+section.pages.add().graphics.drawString('Rotated by 0 degrees', font,
+ brush: PdfBrushes.black, bounds: const Rect.fromLTWH(20, 20, 0, 0));
+
+//Section - 2
+//Add section to the document
+section = document.sections!.add();
+
+//Create page settings to the section
+section.pageSettings.rotate = PdfPageRotateAngle.rotateAngle90;
+section.pageSettings.size = const Size(300, 400);
+
+//Draw simple text on the page
+section.pages.add().graphics.drawString('Rotated by 90 degrees', font,
+ brush: PdfBrushes.black, bounds: const Rect.fromLTWH(20, 20, 0, 0));
+
+//Section - 3
+//Add section to the document
+section = document.sections!.add();
+
+//Create page settings to the section
+section.pageSettings.rotate = PdfPageRotateAngle.rotateAngle180;
+section.pageSettings.size = const Size(500, 200);
+
+//Draw simple text on the page
+section.pages.add().graphics.drawString('Rotated by 180 degrees', font,
+ brush: PdfBrushes.black, bounds: const Rect.fromLTWH(20, 20, 0, 0));
+
+//Section - 4
+//Add section to the document
+section = document.sections!.add();
+
+//Create page settings to the section
+section.pageSettings.rotate = PdfPageRotateAngle.rotateAngle270;
+section.pageSettings.size = const Size(300, 200);
+
+//Draw simple text on the page
+section.pages.add().graphics.drawString('Rotated by 270 degrees', font,
+ brush: PdfBrushes.black, bounds: const Rect.fromLTWH(20, 20, 0, 0));
+
+//Save and dispose the PDF document
+File('Output.pdf').writeAsBytes(await document.save());
+document.dispose();
+
+{% endhighlight %}
+
+## Get the number of pages from a PDF document
+
+You can get the page count from the existing PDF document as shown in the following code sample.
+
+{% highlight dart %}
+
+//Loads an existing PDF document
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Gets the pages count
+int pageCount = document.pages.count;
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+## Rotating a PDF page
+
+You can [`rotate`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfPageSettings/rotate.html) a PDF page in the PDF document using the [`PdfPageRotateAngle`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfPageRotateAngle.html) enum as shown in the following code snippet.
+
+{% highlight dart %}
+
+//Create a PDF document
+PdfDocument document = PdfDocument();
+
+//Add section to the document
+PdfSection section = document.sections!.add();
+
+//Create page settings to the section
+section.pageSettings.rotate = PdfPageRotateAngle.rotateAngle180;
+section.pageSettings.size = PdfPageSize.a4;
+
+//Draw simple text on the page
+section.pages.add().graphics.drawString(
+ 'Rotated by 180 degrees', PdfStandardFont(PdfFontFamily.helvetica, 14),
+ brush: PdfBrushes.black, bounds: const Rect.fromLTWH(20, 20, 0, 0));
+
+//Add section to the document
+section = document.sections!.add();
+
+//Create page settings to the section
+section.pageSettings.rotate = PdfPageRotateAngle.rotateAngle270;
+section.pageSettings.size = PdfPageSize.a4;
+
+//Draw simple text on the page
+section.pages.add().graphics.drawString(
+ 'Rotated by 270 degrees', PdfStandardFont(PdfFontFamily.helvetica, 14),
+ brush: PdfBrushes.black, bounds: const Rect.fromLTWH(20, 20, 0, 0));
+
+//Save and dispose the PDF document
+File('Output.pdf').writeAsBytes(await document.save());
+document.dispose();
+
+{% endhighlight %}
+
+## Removing pages from a document
+
+You can remove the pages from the existing PDF document using the remove or removeAt method as shown in the following code sample.
+
+{% highlight dart %}
+
+//Loads an existing PDF document
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Gets the second page of the document
+PdfPage page = document.pages[1];
+
+//Removes the second page from the document
+document.pages.remove(page);
+
+//Removes the first page from the document
+document.pages.removeAt(0);
+
+//Saves the document
+File('output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
diff --git a/Document-Processing/PDF/PDF-Library/flutter/working-with-pdf-conformance.md b/Document-Processing/PDF/PDF-Library/flutter/working-with-pdf-conformance.md
new file mode 100644
index 000000000..c6559144d
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Library/flutter/working-with-pdf-conformance.md
@@ -0,0 +1,90 @@
+---
+layout: post
+title: Conformance in Flutter PDF library | Syncfusion
+description: Learn here all about different types of Conformance feature of Syncfusion Flutter PDF non-UI library and more.
+platform: document-processing
+control: PDF
+documentation: ug
+---
+
+# Conformance in Flutter PDF
+
+The Syncfusion® Flutter PDF currently supports the following PDF conformances:
+
+* PDF/A-1b conformance
+* PDF/A-2b conformance
+* PDF/A-3b conformance
+
+N> To know more details about PDF/A standard refer [`https://en.wikipedia.org/wiki/PDF/A#Description`](https://en.wikipedia.org/wiki/PDF/A#Description)
+
+## PDF/A-1b conformance
+
+You can create a PDF/A-1b document by specifying the conformance level as a1b through PdfConformanceLevel enum when creating the new PDF document as follows.
+
+{% highlight dart %}
+
+//Creates a new document with the PDF/A-1b standard
+PdfDocument document = PdfDocument(conformanceLevel: PdfConformanceLevel.a1b)
+ ..pages.add().graphics.drawString('Hello World!',
+ PdfTrueTypeFont(File('arial.ttf').readAsBytesSync(), 12),
+ bounds: Rect.fromLTWH(20, 20, 200, 50));
+
+//Saves the document
+File('output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+## PDF/A-2b conformance
+
+You can create a PDF/A-2b document by specifying the conformance level as a2b through PdfConformanceLevel enum when creating the new PDF document as follows.
+
+{% highlight dart %}
+
+//Creates a new document with the PDF/A-2b standard
+PdfDocument document = PdfDocument(conformanceLevel: PdfConformanceLevel.a2b)
+ ..pages.add().graphics.drawString('Hello World!',
+ PdfTrueTypeFont(File('arial.ttf').readAsBytesSync(), 12),
+ bounds: Rect.fromLTWH(20, 20, 200, 50));
+
+//Saves the document
+File('output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+## PDF/A-3b conformance
+
+The PDF/A-3b conformance supports the external files as attachment to the PDF document, so you can attach any document format such as Excel, Word, HTML, CAD, or XML files.
+
+You can create a PDF/A-3b document by specifying the conformance level as a3b through PdfConformanceLevel enum when creating the new PDF document as follows.
+
+{% highlight dart %}
+
+//Creates a new document with the PDF/A-3b standard
+PdfDocument document = PdfDocument(conformanceLevel: PdfConformanceLevel.a3b)
+ ..pages.add().graphics.drawString('Hello World!',
+ PdfTrueTypeFont(File('arial.ttf').readAsBytesSync(), 12),
+ bounds: Rect.fromLTWH(20, 20, 200, 50));
+
+//Creates an attachment
+PdfAttachment attachment = PdfAttachment(
+ 'input.txt', File('input.txt').readAsBytesSync(),
+ description: 'Input text', mimeType: 'application/txt')
+ ..relationship = PdfAttachmentRelationship.alternative
+ ..modificationDate = DateTime.now();
+
+//Adds the attachment to the document
+document.attachments.add(attachment);
+
+//Saves the document
+File('output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
diff --git a/Document-Processing/PDF/PDF-Library/flutter/working-with-pdf-templates.md b/Document-Processing/PDF/PDF-Library/flutter/working-with-pdf-templates.md
new file mode 100644
index 000000000..0695c08fb
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Library/flutter/working-with-pdf-templates.md
@@ -0,0 +1,176 @@
+---
+layout: post
+title: Templates in Flutter PDF library | Syncfusion
+description: Learn here all about add headers and footers and stamp by Templates feature of Syncfusion Flutter PDF non-UI library and more.
+platform: document-processing
+control: PDF
+documentation: ug
+---
+
+# Templates in Flutter PDF
+
+A PDF template is a drawing surface, where contents can be added. All the elements that can be added to a [`PdfPage`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfPage-class.html) is supported in [`PdfTemplate`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfTemplate-class.html) as well. The template in turn can be drawn over the page or can be positioned at any part of the page.
+
+## Creating a new PDF template
+
+The [`PdfTemplate`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfTemplate-class.html) class can be used to create a new PDF template. You can add contents to the template using [`graphics`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfPage/graphics.html) property of the [`PdfTemplate`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfTemplate-class.html) object.
+
+The following code example explains how to add contents to the [`PdfTemplate`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfTemplate-class.html) and render into the new PDF page.
+
+{% highlight dart %}
+
+//Create a new PDF document.
+PdfDocument document = PdfDocument();
+
+//Create a PDF Template.
+PdfTemplate template = PdfTemplate(100, 50);
+
+//Draw a rectangle on the template graphics
+template.graphics!.drawRectangle(
+ brush: PdfBrushes.burlyWood, bounds: Rect.fromLTWH(0, 0, 100, 50));
+
+//Draw a string using the graphics of the template.
+template.graphics!.drawString(
+ 'Hello World', PdfStandardFont(PdfFontFamily.helvetica, 14),
+ brush: PdfBrushes.black, bounds: Rect.fromLTWH(5, 5, 0, 0));
+
+//Add a new page and draw the template on the page graphics of the document.
+document.pages.add().graphics.drawPdfTemplate(template, Offset(0, 0));
+
+//Save and dispose the PDF document
+File('Output.pdf').writeAsBytes(await document.save());
+document.dispose();
+
+{% endhighlight %}
+
+## Creating templates from existing PDF document
+
+Essential® PDF supports template creation using the [`CreateTemplate`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfPage/createTemplate.html) method, enabling users to extract content from an existing PDF page and seamlessly incorporate it into a new PDF document.
+
+The below code illustrates how to create the template from an existing page and draw it in a new PDF document.
+
+{% highlight dart %}
+
+ //Load the PDF document.
+ PdfDocument loadedDocument =
+ PdfDocument(inputBytes: File('Input.pdf').readAsBytesSync());
+ //Get the first page from the document.
+ PdfPage loadedPage = loadedDocument.pages[0];
+ //Create a PDF Template.
+ PdfTemplate template = loadedPage.createTemplate();
+ //Create a new PDF document.
+ PdfDocument document = PdfDocument();
+ //Add the page.
+ PdfPage page = document.pages.add();
+ //Create the graphics.
+ PdfGraphics graphics = page.graphics;
+ //Draw the template.
+ graphics.drawPdfTemplate(template, Offset(0, 0));
+ //Save and dispose of the PDF document.
+ File('Output.pdf').writeAsBytes(await document.save());
+ document.dispose();
+
+{% endhighlight %}
+
+## Working with PdfPageTemplateElement
+
+The [`PdfPageTemplateElement`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfPageTemplateElement-class.html) is a template element that can be added to any part of the PDF page such as header, footer, and more.
+
+The following code example explains how to add the page template elements to a PDF document.
+
+{% highlight dart %}
+
+//Create a new PDF document
+PdfDocument document = PdfDocument();
+
+//Add a page to the PDF document
+PdfPage page = document.pages.add();
+
+Rect bounds = Rect.fromLTWH(0, 0, page.getClientSize().width, 50);
+PdfFont font = PdfStandardFont(PdfFontFamily.helvetica, 7);
+
+//Create a header and draw the image
+PdfPageTemplateElement header = PdfPageTemplateElement(bounds);
+
+//Get image data
+File imageFile = File('image.jpg');
+Uint8List imagebytes = await imageFile.readAsBytes();
+String imageData = base64.encode(imagebytes);
+
+//Draw the image in the header
+header.graphics.drawImage(
+ PdfBitmap.fromBase64String(imageData),
+ Rect.fromLTWH(0, 0, 100, 50));
+
+//Add the header at the top
+document.template.top = header;
+
+//Create a Page template that can be used as footer
+PdfPageTemplateElement footer = PdfPageTemplateElement(bounds);
+
+//Add the fields in composite fields
+PdfCompositeField compositeField = PdfCompositeField(
+ font: font,
+ brush: PdfBrushes.black,
+ text: "Page {0} of {1}",
+ fields: [
+ PdfPageNumberField(font: font, brush: PdfBrushes.black),
+ PdfPageCountField(font: font, brush: PdfBrushes.black)
+ ]);
+compositeField.bounds = footer.bounds;
+
+//Draw the composite field in footer
+compositeField.draw(footer.graphics, Offset(470, 40));
+
+//Add the footer template at the bottom
+document.template.bottom = footer;
+
+//Save and dispose the PDF document
+File('SampleOutput.pdf').writeAsBytes(await document.save());
+document.dispose();
+
+{% endhighlight %}
+
+## Adding stamp to the PDF document
+
+The Syncfusion® Flutter PDF allows you add stamp to the PDF document using PDF templates.
+
+The following code example explains how to draw text as a stamp to the PDF document.
+
+{% highlight dart %}
+
+//Create a new PDF document
+PdfDocument document = PdfDocument();
+
+//Add a page to the PDF document
+PdfPage page = document.pages.add();
+
+//Create template and draw text in template graphics
+final PdfPageTemplateElement custom =
+ PdfPageTemplateElement(Offset(0, 0) & page.getClientSize(), page);
+custom.dock = PdfDockStyle.fill;
+PdfGraphicsState state = custom.graphics.save();
+custom.graphics.rotateTransform(-40);
+custom.graphics.drawString(
+ 'STAMP PDF DOCUMENT', PdfStandardFont(PdfFontFamily.helvetica, 20),
+ pen: PdfPens.red,
+ brush: PdfBrushes.red,
+ bounds: Rect.fromLTWH(-150, 450, 400, 400));
+custom.graphics.restore(state);
+
+//Add template as a stamp to the PDF document
+document.template.stamps.add(custom);
+
+//Draw rectangle to the page graphics
+page.graphics.drawRectangle(
+ pen: PdfPen(PdfColor(0, 0, 0), width: 5),
+ brush: PdfBrushes.lightGray,
+ bounds: Offset(0, 0) & page.getClientSize());
+
+//Save the document
+final List bytes = await document.save();
+
+//Dispose the document
+document.dispose();
+
+{% endhighlight %}
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Library/flutter/working-with-security.md b/Document-Processing/PDF/PDF-Library/flutter/working-with-security.md
new file mode 100644
index 000000000..4dc914555
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Library/flutter/working-with-security.md
@@ -0,0 +1,325 @@
+---
+layout: post
+title: Security in Flutter PDF library | Syncfusion
+description: Learn here all about add encryption and set permission by Security feature of Syncfusion Flutter PDF non-UI library and more.
+platform: document-processing
+control: PDF
+documentation: ug
+---
+
+# Security in Flutter PDF
+
+Flutter PDF allows you to protect the PDF document using encryption and set permission to the PDF document operations like printing, editing, copy content etc. using user password and owner password. Two types of encryption algorithms are available
+
+* Rivest Cipher 4 (RC4)
+* Advanced Encryption Standard (AES)
+
+## Working with RC4 Encryption
+
+You can encrypt PDF document using RC4 algorithm with 40bit or 128bit key size. The following code snippet illustrates how to encrypt the PDF document with the [`userPassword`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfSecurity/userPassword.html).
+
+User password: Prevents people from opening or viewing a PDF document. Once the User Password is set, to open the PDF document, Adobe Acrobat/Reader will prompt a user to enter this password. If it is not correct, the document will not open. By setting a PDF User password, you can secure the PDF document.
+
+{% highlight dart %}
+
+//Create a new PDF documentation
+PdfDocument document = PdfDocument();
+
+//Document security
+PdfSecurity security = document.security;
+
+//Specifies encryption algorithm and key size
+security.algorithm = PdfEncryptionAlgorithm.rc4x128Bit;
+
+//Set user password
+security.userPassword = 'password';
+
+//Draw the text by adding page to the document
+document.pages.add().graphics.drawString(
+ 'Encrypted with RC4 128bit', PdfStandardFont(PdfFontFamily.helvetica, 27),
+ brush: PdfBrushes.mediumVioletRed,
+ bounds: Rect.fromLTWH(10, 10, 500, 50));
+
+//Save and dispose the PDF document
+File('Output.pdf').writeAsBytes(await document.save());
+document.dispose();
+
+{% endhighlight %}
+
+N> While using both user and owner passwords, please specify different user and owner password while encrypting the PDF document for better security.
+
+You can protect the PDF document from printing, editing, copying with the [`ownerPassword`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfSecurity/ownerPassword.html) by using the following code snippet.
+
+Owner password: Sets PDF document restrictions, which can include printing, content copying, editing, page extracting, commenting, and more. Once the owner password is set, Acrobat will require this password to make any changes to the PDF document. It further secures the PDF document to set a PDF Owner Password.
+
+{% highlight dart %}
+
+//Create a new PDF documentation
+PdfDocument document = PdfDocument();
+
+//Document security
+PdfSecurity security = document.security;
+
+//Specifies encryption algorithm and key size
+security.algorithm = PdfEncryptionAlgorithm.rc4x128Bit;
+
+//Set owner password
+security.ownerPassword = 'password';
+
+//It allows printing and accessibility copy content
+security.permissions.addAll([
+ PdfPermissionsFlags.print,
+ PdfPermissionsFlags.accessibilityCopyContent
+]);
+
+//Draw the text by adding page to the document
+document.pages.add().graphics.drawString(
+ 'This document is protected with owner password',
+ PdfStandardFont(PdfFontFamily.helvetica, 27),
+ brush: PdfBrushes.mediumVioletRed,
+ bounds: Rect.fromLTWH(10, 10, 500, 50));
+
+//Save and dispose the PDF document
+File('Output.pdf').writeAsBytes(await document.save());
+document.dispose();
+
+{% endhighlight %}
+
+## Working with AES Encryption
+
+You can encrypt PDF document using AES algorithm with 128bit or 256bit or 256bit Revision 6 key size. The following code snippet illustrates how to encrypt the PDF document with the [`userPassword`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfSecurity/userPassword.html).
+
+{% highlight dart %}
+
+//Create a new PDF documentation
+PdfDocument document = PdfDocument();
+
+//Document security
+PdfSecurity security = document.security;
+
+//Specifies encryption algorithm and key size
+security.algorithm = PdfEncryptionAlgorithm.aesx256Bit;
+
+//Set user password
+security.userPassword = 'password';
+
+//Draw the text by adding page to the document
+document.pages.add().graphics.drawString(
+ 'Encrypted with AES 256bit', PdfStandardFont(PdfFontFamily.helvetica, 27),
+ brush: PdfBrushes.mediumVioletRed,
+ bounds: Rect.fromLTWH(10, 10, 500, 50));
+
+//Save and dispose the PDF document
+File('Output.pdf').writeAsBytes(await document.save());
+document.dispose();
+
+{% endhighlight %}
+
+You can protect the PDF document from printing, editing, copying with the [`ownerPassword`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfSecurity/ownerPassword.html) by using the following code snippet.
+
+{% highlight dart %}
+
+//Create a new PDF document
+PdfDocument document = PdfDocument();
+
+//Document security
+PdfSecurity security = document.security;
+
+//Specifies encryption algorithm and key size
+security.algorithm = PdfEncryptionAlgorithm.aesx256Bit;
+
+//Set owner password
+security.ownerPassword = 'password';
+
+//It allows printing and accessibility copy content
+security.permissions.addAll([
+ PdfPermissionsFlags.print,
+ PdfPermissionsFlags.accessibilityCopyContent]);
+
+//Draw the text by adding page to the document
+document.pages.add().graphics.drawString(
+ 'This document is protected with owner password',
+ PdfStandardFont(PdfFontFamily.helvetica, 27),
+ brush: PdfBrushes.mediumVioletRed,
+ bounds: Rect.fromLTWH(10, 10, 500, 50));
+
+//Save and dispose the PDF document
+File('Output.pdf').writeAsBytes(await document.save());
+document.dispose();
+
+{% endhighlight %}
+
+## Protect an existing document
+
+You can protect an existing PDF document with both [`userPassword`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfSecurity/userPassword.html) and [`ownerPassword`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfSecurity/ownerPassword.html) by using the following code snippet.
+
+{% highlight dart %}
+
+//Loads an existing PDF document
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Document security
+PdfSecurity security = document.security;
+
+//Specifies encryption algorithm and key size
+security.algorithm = PdfEncryptionAlgorithm.aesx256Bit;
+
+//Set owner and user password
+security.ownerPassword = 'ownerPassword';
+security.userPassword = 'userPassword';
+
+//Save and dispose the PDF document
+File('Output.pdf').writeAsBytes(await document.save());
+document.dispose();
+
+{% endhighlight %}
+
+## Changing the password of the PDF document
+
+You can change the [`userPassword`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfSecurity/userPassword.html) of the existing PDF document by using following code snippet.
+
+{% highlight dart %}
+
+//Loads an existing PDF document
+PdfDocument document = PdfDocument(
+ inputBytes: File('input.pdf').readAsBytesSync(), password: 'password');
+
+//Change the user password
+document.security.userPassword = 'NewPassword';
+
+//Save and dispose the PDF document
+File('Output.pdf').writeAsBytes(await document.save());
+document.dispose();
+
+{% endhighlight %}
+
+## Remove password from the user password PDF document
+
+You can remove the [`userPassword`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfSecurity/userPassword.html) from the encrypted PDF document by using the following code snippet.
+
+{% highlight dart %}
+
+//Loads an existing PDF document
+PdfDocument document = PdfDocument(
+ inputBytes: File('input.pdf').readAsBytesSync(), password: 'password');
+
+//Change the user password as empty string
+document.security.userPassword = '';
+
+//Save and dispose the PDF document
+File('Output.pdf').writeAsBytes(await document.save());
+document.dispose();
+
+{% endhighlight %}
+
+## Change the permission of the PDF document
+
+You can change the permission of the PDF document using the [`permissions`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfPermissions-class.html). The following code snippet illustrates the same.
+
+{% highlight dart %}
+
+//Loads an existing PDF document
+PdfDocument document = PdfDocument(
+ inputBytes: File('input.pdf').readAsBytesSync(), password: 'password');
+
+//Remove the permissions
+document.security.permissions.remove(PdfPermissionsFlags.print);
+
+//Add the new permissions
+document.security.permissions.addAll([
+ PdfPermissionsFlags.editContent,
+ PdfPermissionsFlags.copyContent,
+ PdfPermissionsFlags.editAnnotations,
+ PdfPermissionsFlags.fillFields,
+ PdfPermissionsFlags.assembleDocument,
+ PdfPermissionsFlags.fullQualityPrint]);
+
+//Save and dispose the PDF document
+File('Output.pdf').writeAsBytes(await document.save());
+document.dispose();
+
+{% endhighlight %}
+
+## How to determine whether the PDF document is protected by user or owner password?
+
+Flutter PDF supports identifying the document whether it is protected by user or owner.
+
+The following table shows the various combination for loading the secured document with user or owner password:
+
+
+
+
+
+Document type
+
+
+Open with
+
+
+User password
+
+
+Owner password
+
+
+
+
+
+
+PDF document secured with both the owner and user passwords
+
+
+User password
+
+
+Returns user password
+
+
+Returns empty string
+
+
+
+
+PDF document secured with both the owner and user passwords
+
+
+Owner password
+
+
+Returns user password (Returns null for AES 256 and AES 256 Revision 6 encryptions)
+
+
+Returns owner password
+
+
+
+
+PDF document secured with owner password alone
+
+
+Owner password
+
+
+Returns empty string
+
+
+Returns owner password
+
+
+
+
+PDF document secured with user password alone
+
+
+User Password
+
+
+Returns user password
+
+
+Returns owner Password (owner password is same as the user password; it allows full permission to users)
+
+
+
+
diff --git a/Document-Processing/PDF/PDF-Library/flutter/working-with-shapes.md b/Document-Processing/PDF/PDF-Library/flutter/working-with-shapes.md
new file mode 100644
index 000000000..bdc0f87e9
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Library/flutter/working-with-shapes.md
@@ -0,0 +1,233 @@
+---
+layout: post
+title: Shapes drawing in Flutter PDF library | Syncfusion
+description: Learn here all about drawing different types of Shapes feature of Syncfusion Flutter PDF non-UI library and more.
+platform: document-processing
+control: PDF
+documentation: ug
+---
+
+# Shapes Drawing in Flutter PDF
+
+Syncfusion® Flutter PDF has support for adding the following shapes:
+
+* Polygon
+* Line
+* Curve
+* Path
+* Rectangle
+* Pie
+* Arc
+* Bezier
+* Ellipse
+
+## Adding shapes to a PDF document
+
+This package supports adding shapes with various color and transparency levels.
+
+### Polygon
+
+You can draw a polygon in PDF document by using the [`drawPolygon`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGraphics/drawPolygon.html) method of [`PdfGraphics`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGraphics-class.html). The following code snippet explains how to draw a polygon in the new PDF document.
+
+{% highlight dart %}
+
+//Create a new PDF document
+PdfDocument document = PdfDocument();
+
+//Draw a polygon on PDF document
+document.pages.add().graphics.drawPolygon(
+ [Offset(10, 100), Offset(10, 200), Offset(100, 100), Offset(55, 150)],
+ pen: PdfPens.black, brush: PdfSolidBrush(PdfColor(165, 42, 42)));
+
+//Save the PDF document
+File('Polygon.pdf').writeAsBytes(await document.save());
+
+//Dispose the document
+document.dispose();
+
+{% endhighlight %}
+
+### Line
+
+You can draw a line in PDF document by using the [`drawLine`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGraphics/drawLine.html) method of [`PdfGraphics`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGraphics-class.html). The following code snippet explains how to draw a line in the new PDF document.
+
+{% highlight dart %}
+
+//Create a new PDF document
+PdfDocument document = PdfDocument();
+
+//Draw a line on PDF document
+document.pages.add().graphics.drawLine(
+ PdfPen(PdfColor(165, 42, 42), width: 5),
+ Offset(10, 100),
+ Offset(10, 200));
+
+//Save the PDF document
+File('Line.pdf').writeAsBytes(await document.save());
+
+//Dispose the document
+document.dispose();
+
+{% endhighlight %}
+
+### Curve
+
+You can draw a curve in PDF document by using the [`draw`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfLayoutElement/draw.html) method of [`PdfBezierCurve`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfBezierCurve-class.html). The following code snippet explains how to draw a curve in the new PDF document.
+
+{% highlight dart %}
+
+//Create a new PDF document
+final PdfDocument document = PdfDocument();
+
+//Create an instance of Bezier curve
+final PdfBezierCurve bezier = PdfBezierCurve(
+ Offset(100, 10), Offset(150, 50), Offset(50, 80), Offset(100, 10));
+
+//Draw a Bezier curve
+bezier.draw(
+ page: document.pages.add(), bounds: Rect.fromLTWH(200, 100, 0, 0));
+
+//Save the PDF document
+File('Curve.pdf').writeAsBytes(await document.save());
+
+//Dispose the document
+document.dispose();
+
+{% endhighlight %}
+
+### Path
+
+You can draw a path in PDF document by using the draw method of [`PdfPath`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfPath-class.html). The following code snippet explains how to draw a path in the new PDF document.
+
+{% highlight dart %}
+
+//Create a new PDF document
+final PdfDocument document = PdfDocument();
+
+//Create an instance of the path
+final PdfPath path = PdfPath();
+
+//Add the lines to draw path
+path.addLine(Offset(10, 100), Offset(10, 200));
+path.addLine(Offset(100, 100), Offset(100, 200));
+path.addLine(Offset(100, 200), Offset(55, 150));
+
+//Draw the path
+path.draw(page: document.pages.add(), bounds: Rect.zero);
+
+//Save the PDF document
+File('Path.pdf').writeAsBytes(await document.save());
+
+//Dispose the document
+document.dispose();
+
+{% endhighlight %}
+
+### Rectangle
+
+You can draw a rectangle in PDF document by using the [`drawRectangle`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGraphics/drawRectangle.html) method of [`PdfGraphics`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGraphics-class.html). The following code snippet explains how to draw a rectangle in the new PDF document.
+
+{% highlight dart %}
+
+//Create a new PDF document
+final PdfDocument document = PdfDocument();
+
+//Draw the rectangle on PDF document
+document.pages.add().graphics.drawRectangle(
+ brush: PdfBrushes.chocolate, bounds: Rect.fromLTWH(10, 10, 100, 50));
+
+//Save the PDF document
+File('Rectangle.pdf').writeAsBytes(await document.save());
+
+//Dispose the document
+document.dispose();
+
+{% endhighlight %}
+
+### Pie
+
+You can draw a pie in PDF document by using the [`drawPie`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGraphics/drawPie.html) method of [`PdfGraphics`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGraphics-class.html). The following code snippet explains how to draw a pie in the new PDF document.
+
+{% highlight dart %}
+
+//Create a new PDF document
+final PdfDocument document = PdfDocument();
+
+//Draw a pie on page
+document.pages.add().graphics.drawPie(
+ Rect.fromLTWH(10, 50, 200, 200), 90, 180,
+ pen: PdfPen(PdfColor(165, 42, 42), width: 5), brush: PdfBrushes.green);
+
+//Save the PDF document
+File('Pie.pdf').writeAsBytes(await document.save());
+
+//Dispose the document
+document.dispose();
+
+{% endhighlight %}
+
+### Arc
+
+You can draw an arc in PDF document by using the [`drawArc`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGraphics-class.html) method of [`PdfGraphics`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGraphics-class.html). The following code snippet explains how to draw an arc in the new PDF document.
+
+{% highlight dart %}
+
+//Create a new PDF document
+final PdfDocument document = PdfDocument();
+
+//Draw arc on page
+document.pages.add().graphics.drawArc(
+ Rect.fromLTWH(100, 140, 200, 400), 70, 190,
+ pen: PdfPen(PdfColor(165, 42, 42), width: 5));
+
+//Save the PDF document
+File('Arc.pdf').writeAsBytes(await document.save());
+
+//Dispose the document
+document.dispose();
+
+{% endhighlight %}
+
+### Bezier
+
+You can draw a bezier in PDF document by using the [`drawBezier`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGraphics/drawBezier.html) method of [`PdfGraphics`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGraphics-class.html). The following code snippet explains how to draw a bezier in the new PDF document.
+
+{% highlight dart %}
+
+//Create a new PDF document
+final PdfDocument document = PdfDocument();
+
+//Draw Bezier on page
+document.pages.add().graphics.drawBezier(
+ Offset(100, 10), Offset(150, 50), Offset(50, 80), Offset(100, 10),
+ pen: PdfPen(PdfColor(165, 42, 42), width: 1));
+
+//Save the PDF document
+File('Bezier.pdf').writeAsBytes(await document.save());
+
+//Dispose the document
+document.dispose();
+
+{% endhighlight %}
+
+### Ellipse
+
+You can draw an ellipse in PDF document by using the [`drawEllipse`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGraphics/drawEllipse.html) method of [`PdfGraphics`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGraphics-class.html). The following code snippet explains how to draw an ellipse in the new PDF document.
+
+{% highlight dart %}
+
+//Create a new PDF document
+final PdfDocument document = PdfDocument();
+
+//Draw an Ellipse on page
+document.pages.add().graphics.drawEllipse(Rect.fromLTWH(10, 200, 450, 150),
+ pen: PdfPen(PdfColor(165, 42, 42), width: 5),
+ brush: PdfBrushes.darkOrange);
+
+//Save the PDF document
+File('Ellipse.pdf').writeAsBytes(await document.save());
+
+//Dispose the document
+document.dispose();
+
+{% endhighlight %}
diff --git a/Document-Processing/PDF/PDF-Library/flutter/working-with-tables.md b/Document-Processing/PDF/PDF-Library/flutter/working-with-tables.md
new file mode 100644
index 000000000..137ef26ea
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Library/flutter/working-with-tables.md
@@ -0,0 +1,535 @@
+---
+layout: post
+title: Tables in Flutter PDF library | Syncfusion
+description: Learn here all about draw and customize cells, rows, and columns in Tables feature of Syncfusion Flutter PDF non-UI library and more.
+platform: document-processing
+control: PDF
+documentation: ug
+---
+
+# Tables in Flutter PDF
+
+The Syncfusion® Flutter PDF provides support for creating customizable tables in a PDF document by using [`PdfGrid`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGrid-class.html) table model. It is designed with advanced customization, styling, and formatting.
+
+## Creating a table
+
+[`PdfGrid`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGrid-class.html) allows you to create table by entering the data manually.
+
+The following code example explains how to create a table directly using [`PdfGrid`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGrid-class.html) with [`PdfGridStyle`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGridStyle-class.html), [`PdfGridColumn`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGridColumn-class.html) and [`PdfGridRow`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGridRow-class.html) classes.
+
+{% highlight dart %}
+
+//Create a new PDF document
+PdfDocument document = PdfDocument();
+
+//Create a PdfGrid class
+PdfGrid grid = PdfGrid();
+
+//Add the columns to the grid
+grid.columns.add(count: 3);
+
+//Add header to the grid
+grid.headers.add(1);
+
+//Add the rows to the grid
+PdfGridRow header = grid.headers[0];
+header.cells[0].value = 'Employee ID';
+header.cells[1].value = 'Employee Name';
+header.cells[2].value = 'Salary';
+
+//Add rows to grid
+PdfGridRow row = grid.rows.add();
+row.cells[0].value = 'E01';
+row.cells[1].value = 'Clay';
+row.cells[2].value = '\$10,000';
+
+row = grid.rows.add();
+row.cells[0].value = 'E02';
+row.cells[1].value = 'Simon';
+row.cells[2].value = '\$12,000';
+
+//Set the grid style
+grid.style = PdfGridStyle(
+ cellPadding: PdfPaddings(left: 2, right: 3, top: 4, bottom: 5),
+ backgroundBrush: PdfBrushes.blue,
+ textBrush: PdfBrushes.white,
+ font: PdfStandardFont(PdfFontFamily.timesRoman, 25));
+
+//Draw the grid
+grid.draw(
+ page: document.pages.add(), bounds: const Rect.fromLTWH(0, 0, 0, 0));
+
+//Save and dispose the PDF document
+File('SampleOutput.pdf').writeAsBytes(await document.save());
+document.dispose();
+
+{% endhighlight %}
+
+## Cell customization in PdfGrid
+
+[`PdfGridCell`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGridCell-class.html) provides various direct options to customize cells such as [`columnSpan`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGridCell/columnSpan.html), [`rowSpan`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGridCell/rowSpan.html), [`textPen`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGridStyleBase/textPen.html), [`backgroundBrush`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGridStyleBase/backgroundBrush.html), and more.
+
+The following code snippet explains how to customize the cell in [`PdfGrid`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGrid-class.html).
+
+{% highlight dart %}
+
+//Create a new PDF document
+PdfDocument document = PdfDocument();
+
+//Create a PdfGrid
+PdfGrid grid = PdfGrid();
+
+//Add columns to grid
+grid.columns.add(count: 3);
+
+//Add headers to grid
+PdfGridRow header = grid.headers.add(1)[0];
+header.cells[0].value = 'Employee ID';
+header.cells[1].value = 'Employee Name';
+header.cells[2].value = 'Salary';
+
+//Add the styles to specific cell
+header.cells[0].style.stringFormat = PdfStringFormat(
+ alignment: PdfTextAlignment.center,
+ lineAlignment: PdfVerticalAlignment.bottom,
+ wordSpacing: 10);
+header.cells[1].style.textPen = PdfPens.mediumVioletRed;
+header.cells[2].style.backgroundBrush = PdfBrushes.yellow;
+header.cells[2].style.textBrush = PdfBrushes.darkOrange;
+
+//Add rows to grid
+PdfGridRow row1 = grid.rows.add();
+row1.cells[0].value = 'E01';
+row1.cells[1].value = 'Clay';
+row1.cells[2].value = '\$10,000';
+
+//Apply the cell style to specific row cells
+row1.cells[0].style = PdfGridCellStyle(
+ backgroundBrush: PdfBrushes.lightYellow,
+ cellPadding: PdfPaddings(left: 2, right: 3, top: 4, bottom: 5),
+ font: PdfStandardFont(PdfFontFamily.timesRoman, 17),
+ textBrush: PdfBrushes.white,
+ textPen: PdfPens.orange,
+);
+
+PdfGridRow row2 = grid.rows.add();
+row2.cells[0].value = 'E02';
+row2.cells[1].value = 'Simon';
+row2.cells[2].value = '\$12,000';
+
+//Add the style to specific cell
+row2.cells[2].style.borders = PdfBorders(
+ left: PdfPen(PdfColor(240, 0, 0), width: 2),
+ top: PdfPen(PdfColor(0, 240, 0), width: 3),
+ bottom: PdfPen(PdfColor(0, 0, 240), width: 4),
+ right: PdfPen(PdfColor(240, 100, 240), width: 5));
+
+//Draw the grid in PDF document page
+grid.draw(
+ page: document.pages.add(), bounds: const Rect.fromLTWH(0, 0, 0, 0));
+
+//Save and dispose the PDF document
+File('SampleOutput.pdf').writeAsBytes(await document.save());
+document.dispose();
+
+{% endhighlight %}
+
+## Row customization in PdfGrid
+
+You can customize row height and styles using the [`rows`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGrid/rows.html) property in [`PdfGrid`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGrid-class.html) class.
+
+The following code snippet explains how to customize the row in [`PdfGrid`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGrid-class.html).
+
+{% highlight dart %}
+
+//Create a new PDF document
+PdfDocument document = PdfDocument();
+
+//Create a PdfGrid
+PdfGrid grid = PdfGrid();
+
+//Add columns to grid
+grid.columns.add(count: 3);
+
+//Add headers to grid
+grid.headers.add(2);
+PdfGridRow header = grid.headers[0];
+header.cells[0].value = 'Employee ID';
+header.cells[1].value = 'Employee Name';
+header.cells[2].value = 'Salary';
+
+//Add rows to grid
+PdfGridRow row1 = grid.rows.add();
+row1.cells[0].value = 'E01';
+row1.cells[1].value = 'Clay';
+row1.cells[2].value = '\$10,000';
+PdfGridRow row2 = grid.rows.add();
+row2.cells[0].value = 'E02';
+row2.cells[1].value = 'Simon';
+row2.cells[2].value = '\$12,000';
+
+//Set the row span
+row1.cells[1].rowSpan = 2;
+
+//Set the row height
+row2.height = 20;
+
+//Set the row style
+row1.style = PdfGridRowStyle(
+ backgroundBrush: PdfBrushes.dimGray,
+ textPen: PdfPens.lightGoldenrodYellow,
+ textBrush: PdfBrushes.darkOrange,
+ font: PdfStandardFont(PdfFontFamily.timesRoman, 12));
+
+//Create the PDF grid row style. Assign to second row
+PdfGridRowStyle rowStyle = PdfGridRowStyle(
+ backgroundBrush: PdfBrushes.lightGoldenrodYellow,
+ textPen: PdfPens.indianRed,
+ textBrush: PdfBrushes.lightYellow,
+ font: PdfStandardFont(PdfFontFamily.timesRoman, 12));
+row2.style = rowStyle;
+
+//Draw the grid in PDF document page
+grid.draw(
+ page: document.pages.add(), bounds: const Rect.fromLTWH(0, 0, 0, 0));
+
+//Save and dispose the PDF document
+File('SampleOutput.pdf').writeAsBytes(await document.save());
+document.dispose();
+
+{% endhighlight %}
+
+## Columns customization in PdfGrid
+
+You can customize the column width and text formats using the [`columns`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGrid/columns.html) property in [`PdfGrid`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGrid-class.html) class.
+
+The following code snippet explains how to customize the column in [`PdfGrid`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGrid-class.html).
+
+{% highlight dart %}
+
+//Create a new PDF document
+PdfDocument document = PdfDocument();
+
+//Create a PdfGrid
+PdfGrid grid = PdfGrid();
+
+//Add columns to grid
+grid.columns.add(count: 3);
+
+//Add headers to grid
+grid.headers.add(1);
+PdfGridRow header = grid.headers[0];
+header.cells[0].value = 'Employee ID';
+header.cells[1].value = 'Employee Name';
+header.cells[2].value = 'Salary';
+
+//Add rows to grid
+PdfGridRow row1 = grid.rows.add();
+row1.cells[0].value = 'E01';
+row1.cells[1].value = 'Clay';
+row1.cells[2].value = '\$10,000';
+PdfGridRow row2 = grid.rows.add();
+row2.cells[0].value = 'E02';
+row2.cells[1].value = 'Simon';
+row2.cells[2].value = '\$12,000';
+
+//Set the width
+grid.columns[1].width = 50;
+//Create and customize the string formats
+PdfStringFormat format = PdfStringFormat();
+format.alignment = PdfTextAlignment.center;
+format.lineAlignment = PdfVerticalAlignment.bottom;
+
+//Set the column text format
+grid.columns[0].format = format;
+
+//Draw the grid in PDF document page
+grid.draw(
+ page: document.pages.add(), bounds: const Rect.fromLTWH(0, 0, 0, 0));
+
+//Save and dispose the PDF document
+File('SampleOutput.pdf').writeAsBytes(await document.save());
+document.dispose();
+
+{% endhighlight %}
+
+## Table customization in PdfGrid
+
+Flutter PDF supports users to create a customizable PDF table like [`cellSpacing`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGridStyle/cellSpacing.html), [`cellPadding`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGridStyle/cellPadding.html), [`borderOverLapStyle`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGridStyle/borderOverlapStyle.html), and more. This can be achieved by using the [`PdfGridStyle`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGridStyle-class.html) class.
+
+The following code snippet explains how to customize the [`PdfGrid`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGrid-class.html) using [`PdfGridStyle`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGridStyle-class.html).
+
+{% highlight dart %}
+
+//Create a new Pdf document
+PdfDocument document = PdfDocument();
+
+//Create a border
+PdfBorders border = PdfBorders(
+ left: PdfPen(PdfColor(240, 0, 0), width: 2),
+ top: PdfPen(PdfColor(0, 240, 0), width: 3),
+ bottom: PdfPen(PdfColor(0, 0, 240), width: 4),
+ right: PdfPen(PdfColor(240, 100, 240), width: 5));
+
+//Create a string format
+PdfStringFormat format = PdfStringFormat(
+ alignment: PdfTextAlignment.center,
+ lineAlignment: PdfVerticalAlignment.bottom,
+ wordSpacing: 10);
+
+//Create a cell style
+PdfGridCellStyle cellStyle = PdfGridCellStyle(
+ backgroundBrush: PdfBrushes.lightYellow,
+ borders: border,
+ cellPadding: PdfPaddings(left: 2, right: 3, top: 4, bottom: 5),
+ font: PdfStandardFont(PdfFontFamily.timesRoman, 17),
+ format: format,
+ textBrush: PdfBrushes.white,
+ textPen: PdfPens.orange,
+);
+
+//Create a grid style
+PdfGridStyle gridStyle = PdfGridStyle(
+ cellSpacing: 2,
+ cellPadding: PdfPaddings(left: 2, right: 3, top: 4, bottom: 5),
+ borderOverlapStyle: PdfBorderOverlapStyle.inside,
+ backgroundBrush: PdfBrushes.lightGray,
+ textPen: PdfPens.black,
+ textBrush: PdfBrushes.white,
+ font: PdfStandardFont(PdfFontFamily.timesRoman, 17),
+);
+
+//Create a grid
+PdfGrid grid = PdfGrid();
+
+//Adds the columns to the grid
+grid.columns.add(count: 3);
+grid.headers.add(1);
+PdfGridRow header = grid.headers[0];
+header.cells[0].value = 'Employee Id';
+header.cells[1].value = 'Employee name';
+header.cells[2].value = 'Employee role';
+
+//Apply the grid style
+grid.rows.applyStyle(gridStyle);
+
+//Add rows to grid. Set the cells style
+PdfGridRow row1 = grid.rows.add();
+row1.cells[0].value = 'E01';
+row1.cells[1].value = 'Clay';
+row1.cells[2].value = 'Product manager';
+PdfGridRow row2 = grid.rows.add();
+row2.cells[0].value = 'E02';
+row2.cells[1].value = 'Thomas';
+row2.cells[2].value = 'Software engineer';
+PdfGridRow row3 = grid.rows.add();
+row3.cells[0].value = 'E03';
+row3.cells[1].value = 'Albert';
+row3.cells[2].value = 'Test engineer';
+
+//Set the row cells style
+for (int i = 0; i < grid.columns.count; i++) {
+ row1.cells[i].style = cellStyle;
+ row2.cells[i].style = cellStyle;
+ row3.cells[i].style = cellStyle;
+}
+
+//Draw the grid in PDF document page
+grid.draw(
+ page: document.pages.add(), bounds: const Rect.fromLTWH(0, 0, 0, 0));
+
+//Save and dispose the PDF document
+File('SampleOutput.pdf').writeAsBytes(await document.save());
+document.dispose();
+
+{% endhighlight %}
+
+## Pagination in PdfGrid
+
+Flutter PDF supports to paginate the [`PdfGrid`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGrid-class.html) using the [`PdfLayoutFormat`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfLayoutFormat-class.html) class.
+
+The following sample explains how to allow [`PdfGrid`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGrid-class.html) to flow across pages.
+
+{% highlight dart %}
+
+//Create a new PDF documentation
+PdfDocument document = PdfDocument();
+
+//Create a PdfGrid
+PdfGrid grid = PdfGrid();
+
+//Add the columns to the grid
+grid.columns.add(count: 3);
+grid.headers.add(1);
+PdfGridRow header = grid.headers[0];
+header.cells[0].value = 'Name';
+header.cells[1].value = 'Age';
+header.cells[2].value = 'Sex';
+
+//Add rows to grid. Set the cells style
+PdfGridRow row1 = grid.rows.add();
+row1.cells[0].value = 'Bob';
+row1.cells[1].value = '22';
+row1.cells[2].value = 'Male';
+PdfGridRow row2 = grid.rows.add();
+row2.cells[0].value = 'Sam';
+row2.cells[1].value = '23';
+row2.cells[2].value = 'Male';
+PdfGridRow row3 = grid.rows.add();
+row3.cells[0].value = 'Falitha';
+row3.cells[1].value = '19';
+row3.cells[2].value = 'Female';
+
+//Create a PdfLayoutFormat for pagination
+PdfLayoutFormat format = PdfLayoutFormat(
+ breakType: PdfLayoutBreakType.fitColumnsToPage,
+ layoutType: PdfLayoutType.paginate);
+
+//Draw the grid in PDF document page
+grid.draw(
+ page: document.pages.add(),
+ bounds: const Rect.fromLTWH(0, 0, 0, 0),
+ format: format);
+
+//Save and dispose the PDF document
+File('SampleOutput.pdf').writeAsBytes(await document.save());
+document.dispose();
+
+{% endhighlight %}
+
+## Adding multiple tables
+
+The Flutter PDF supports maintaining the position of a PDF grid drawn on PDF page using [`PdfLayoutResult`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfLayoutResult-class.html). It provides the rendered bounds of previously added grid, which can be used to place successive elements without overlapping. You can add multiple PDF grids using the bottom position of previously rendered PDF grid. The following code snippet explains this.
+
+{% highlight dart %}
+
+//Create a new PDF document
+PdfDocument document = PdfDocument();
+
+//Create a PdfGrid
+PdfGrid grid = PdfGrid();
+
+//Add the columns to the grid
+grid.columns.add(count: 3);
+grid.headers.add(1);
+PdfGridRow header = grid.headers[0];
+header.cells[0].value = 'Product Id';
+header.cells[1].value = 'Product name';
+header.cells[2].value = 'Price';
+
+//Add rows to grid
+PdfGridRow row1 = grid.rows.add();
+row1.cells[0].value = 'P01';
+row1.cells[1].value = 'Water bottle';
+row1.cells[2].value = 'Rs: 100';
+PdfGridRow row2 = grid.rows.add();
+row2.cells[0].value = 'P02';
+row2.cells[1].value = 'Trimmer';
+row2.cells[2].value = 'Rs: 1200';
+
+//Draw grid on the page of PDF document and store the grid position in PdfLayoutResult
+PdfLayoutResult result = grid.draw(
+ page: document.pages.add(),
+ bounds: const Rect.fromLTWH(0, 0, 400, 300)) as PdfLayoutResult;
+
+//Create a second PdfGrid in the same page
+PdfGrid grid2 = PdfGrid();
+
+//Add columns to second grid
+grid2.columns.add(count: 3);
+grid2.headers.add(1);
+PdfGridRow header1 = grid2.headers[0];
+header1.cells[0].value = 'Employee ID';
+header1.cells[1].value = 'Employee Name';
+header1.cells[2].value = 'Salary';
+
+//Add rows to grid
+PdfGridRow row11 = grid2.rows.add();
+row11.cells[0].value = 'E01';
+row11.cells[1].value = 'Clay';
+row11.cells[2].value = '\$10,000';
+PdfGridRow row12 = grid2.rows.add();
+row12.cells[0].value = 'E02';
+row12.cells[1].value = 'Simon';
+row12.cells[2].value = '\$12,000';
+
+//Draw the grid in PDF document page
+grid2.draw(
+ page: result.page,
+ bounds: Rect.fromLTWH(0, result.bounds.bottom + 20, 400, 300));
+
+//Save and dispose the PDF document
+File('SampleOutput.pdf').writeAsBytes(await document.save());
+document.dispose();
+
+{% endhighlight %}
+
+## Apply built-in grid style
+
+Essential Flutter PDF supports Built-in table styles. This will help you apply background colors and styles to your grid. This is applicable to the [PdfGrid](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGrid-class.html) model, and the appearance is identical to Microsoft Word’s built-in table styles. You can also apply in-built table styles with the following additional table style options.
+* Banded columns
+* Banded rows
+* First column
+* Last column
+* Header row
+* Last row
+
+We have various built-in styles for [PdfGrid](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGrid-class.html) and some of the styles have no changes to the background color property. For example, the below listed styles do not have a background color. As the default background color is white, it is directly applied to each row in the grid.
+* PdfGridBuiltInStyle.gridTable1Light
+* PdfGridBuiltInStyle.gridTable1LightAccent1
+* PdfGridBuiltInStyle.gridTable1LightAccent2
+* PdfGridBuiltInStyle.gridTable1LightAccent3
+* PdfGridBuiltInStyle.gridTable1LightAccent4
+* PdfGridBuiltInStyle.gridTable1LightAccent5
+* PdfGridBuiltInStyle.gridTable1LightAccent6
+
+And we have some styles that have background color only in the header rows. Please find the below list for the same,
+* PdfGridBuiltInStyle.listTable3
+* PdfGridBuiltInStyle.listTable3Accent1
+* PdfGridBuiltInStyle.listTable3Accent2
+* PdfGridBuiltInStyle.listTable3Accent3
+* PdfGridBuiltInStyle.listTable3Accent4
+* PdfGridBuiltInStyle.listTable3Accent5
+* PdfGridBuiltInStyle.listTable3Accent6
+
+N> We can also customize the background color of the ['PdfGrid'](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGrid-class.html) by using the PdfGrid.style.backgroundBrush, PdfGridRow.style.backgroundBrush and PdfGridCell.style.backgroundBrush properties. Please note that the changes in the above properties are not considered, when we apply the ['PdfGridBuiltInStyle'](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGridBuiltInStyle.html) .
+The below code example illustrates how to apply a built-in table style using the ['applyBuiltInStyle'](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGrid/applyBuiltInStyle.html ) method of the PdfGrid with styles from the ['PdfGridBuiltInStyle'](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGridBuiltInStyle.html) Enum.
+
+{% highlight dart %}
+//Create a new PDF document.
+PdfDocument document = PdfDocument();
+//Create a PdfGrid class.
+PdfGrid grid = PdfGrid();
+//Add columns to the grid.
+grid.columns.add(count: 3);
+//Add a header to the grid.
+grid.headers.add(1);
+//Add rows to the grid.
+PdfGridRow header = grid.headers[0];
+header.cells[0].value = 'Employee ID';
+header.cells[1].value = 'Employee Name';
+header.cells[2].value = 'Salary';
+//Add rows to the grid.
+PdfGridRow row = grid.rows.add();
+row.cells[0].value = 'E01';
+row.cells[1].value = 'Clay';
+row.cells[2].value = '\$10,000';
+row = grid.rows.add();
+row.cells[0].value = 'E02';
+row.cells[1].value = 'Simon';
+row.cells[2].value = '\$12,000';
+PdfGridBuiltInStyleSettings tableStyleOption = PdfGridBuiltInStyleSettings();
+tableStyleOption.applyStyleForBandedRows = true;
+tableStyleOption.applyStyleForHeaderRow = true;
+//Apply built-in table style.
+grid.applyBuiltInStyle(PdfGridBuiltInStyle.listTable6ColorfulAccent1,
+ settings: tableStyleOption);
+//Draw the grid.
+grid.draw(
+ page: document.pages.add(), bounds: const Rect.fromLTWH(10, 10, 0, 0));
+//Save the document.
+List bytes =await document.save();
+//Dispose the document.
+document.dispose();
+
+{% endhighlight %}
diff --git a/Document-Processing/PDF/PDF-Library/flutter/working-with-text-extraction.md b/Document-Processing/PDF/PDF-Library/flutter/working-with-text-extraction.md
new file mode 100644
index 000000000..b8fb9be32
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Library/flutter/working-with-text-extraction.md
@@ -0,0 +1,272 @@
+---
+layout: post
+title: Text extraction in Flutter PDF library | Syncfusion
+description: Learn here all about different types of fonts and draw Text feature of Syncfusion Flutter PDF non-UI library and more.
+platform: document-processing
+control: PDF
+documentation: ug
+---
+
+# Text Extraction in Flutter PDF
+
+The Syncfusion® Flutter PDF allows you to extract or find the text from a particular page or the entire PDF document.
+
+## Working with the basic text extraction
+
+You can extract the text from pages using the extractText method in the PdfTextExtractor class.
+
+The following code explains how to extract the text from the entire PDF document:
+
+{% highlight dart %}
+
+//Loads an existing PDF document
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Extracts the text from all the pages
+String text = PdfTextExtractor(document).extractText();
+
+//Dispose the document
+document.dispose();
+
+{% endhighlight %}
+
+The following code sample explains how to extract the texts from a specific page:
+
+{% highlight dart %}
+
+//Loads an existing PDF document
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Extracts the text from page 1
+String text = PdfTextExtractor(document).extractText(startPageIndex: 0);
+
+//Dispose the document
+document.dispose();
+
+{% endhighlight %}
+
+The following code sample explains how to extract the texts from a particular page range:
+
+{% highlight dart %}
+
+//Loads an existing PDF document
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Extracts the text from pages 1 to 3
+String text = PdfTextExtractor(document)
+ .extractText(startPageIndex: 0, endPageIndex: 2);
+
+//Dispose the document
+document.dispose();
+
+{% endhighlight %}
+
+## Text Extraction with Bounds
+
+### Working with Lines
+
+You can get the line and its properties that contains texts by using the TextLine. Refer to the following code sample.
+
+{% highlight dart %}
+
+//Loads an existing PDF document
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Extracts the text line collection from the document
+final List textLine =
+ PdfTextExtractor(document).extractTextLines();
+
+//Gets specific line from the collection
+TextLine line = textLine[0];
+
+//Gets bounds of the line
+Rect bounds = line.bounds;
+
+//Gets font name of the line
+String fontName = line.fontName;
+
+//Gets size of the line
+double fontSize = line.fontSize;
+
+//Gets font style of the line
+List fontStyle = line.fontStyle;
+
+//Gets text in the line
+String text = line.text;
+
+//Gets a collection of the words in the line
+List textWordCollection = line.wordCollection;
+
+//Dispose the document
+document.dispose();
+
+{% endhighlight %}
+
+### Working with words
+
+You can get a single word and its properties by using the TextWord. Refer to the following code sample.
+
+{% highlight dart %}
+
+//Loads an existing PDF document
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Extracts the text line collection from the page 2
+final List textLine =
+ PdfTextExtractor(document).extractTextLines(startPageIndex: 1);
+
+//Gets the specific line from the collection
+TextLine line = textLine[0];
+
+//Gets a collection of the words in the line
+List textWordCollection = line.wordCollection;
+
+//Gets word from the collection using index
+TextWord textWord = textWordCollection[0];
+
+//Gets bounds of the word
+Rect wordBounds = textWord.bounds;
+
+//Gets font name of the word
+String wordFontName = textWord.fontName;
+
+//Gets size of the word
+double wordFontSize = textWord.fontSize;
+
+//Gets font style of the word
+List wordFontStyle = textWord.fontStyle;
+
+//Gets the word
+String wordText = textWord.text;
+
+//Gets Glyph details of the word
+List textGlyphCollection = textWord.glyphs;
+
+//Dispose the document
+document.dispose();
+
+{% endhighlight %}
+
+### Working with characters
+
+You can get a single character and its properties by using the TextGlyph. Refer to the following code sample.
+
+{% highlight dart %}
+
+//Loads an existing PDF document
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Extracts the text line collection from the pages 2 to 3
+final List textLine = PdfTextExtractor(document)
+ .extractTextLines(startPageIndex: 1, endPageIndex: 2);
+
+//Gets the specific line from the collection
+TextLine line = textLine[0];
+
+//Gets a collection of the words in the line
+List textWordCollection = line.wordCollection;
+
+//Gets word from the collection using index
+TextWord textWord = textWordCollection[0];
+
+//Gets Glyph details of the word
+List textGlyphCollection = textWord.glyphs;
+
+//Gets character of the word
+TextGlyph textGlyph = textGlyphCollection[0];
+
+//Gets bounds of the character
+Rect glyphBounds = textGlyph.bounds;
+
+//Gets font name of the character
+String glyphFontName = textGlyph.fontName;
+
+//Gets font size of the character
+double glyphFontSize = textGlyph.fontSize;
+
+//Gets font style of the character
+List glyphFontStyle = textGlyph.fontStyle;
+
+//Gets character in the word
+String glyphText = textGlyph.text;
+
+//Dispose the document
+document.dispose();
+
+{% endhighlight %}
+
+## Working with find text
+
+You can find a collection of text from pages using the findText method in the PdfTextExtractor class. You can get the text and its properties using the MatchedItem.
+
+The following code sample explains how to find the text from an entire PDF document:
+
+{% highlight dart %}
+
+//Loads an existing PDF document
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Find the text and get matched items
+List textCollection =
+ PdfTextExtractor(document).findText(['text1', 'text2']);
+
+//Gets the matched item in the collection using index
+MatchedItem matchedText = textCollection[0];
+
+//Gets the text bounds
+Rect textBounds = matchedText.bounds;
+
+//Gets the page index
+int pageIndex = matchedText.pageIndex;
+
+//Gets the text
+String text = matchedText.text;
+
+//Dispose the document
+document.dispose();
+
+{% endhighlight %}
+
+The following code sample explains how to find the text from a specific page.
+
+{% highlight dart %}
+
+//Loads an existing PDF document
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Find the text and get matched items from the page 1
+List textCollection = PdfTextExtractor(document)
+ .findText(['text1', 'text2'], startPageIndex: 0);
+
+//Dispose the document
+document.dispose();
+
+{% endhighlight %}
+
+The TextSearchOption is used to specify the option for text search. The following code snippet explains how to find text using the search option from a particular page range.
+
+{% highlight dart %}
+
+//Loads an existing PDF document
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Find the text and get matched items from the pages 1 to 3
+List textCollection = PdfTextExtractor(document).findText(
+ ['text1', 'text2'],
+ startPageIndex: 0,
+ endPageIndex: 2,
+ searchOption: TextSearchOption.caseSensitive);
+
+//Dispose the document
+document.dispose();
+
+{% endhighlight %}
diff --git a/Document-Processing/PDF/PDF-Library/flutter/working-with-text.md b/Document-Processing/PDF/PDF-Library/flutter/working-with-text.md
new file mode 100644
index 000000000..d6d1d36b6
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Library/flutter/working-with-text.md
@@ -0,0 +1,313 @@
+---
+layout: post
+title: Text drawing in Flutter PDF library | Syncfusion
+description: Learn here all about Text extraction and find text feature of Syncfusion Flutter PDF non-UI library and more.
+platform: document-processing
+control: PDF
+documentation: ug
+---
+
+# Text Drawing in Flutter PDF
+
+## Drawing text in PDF document
+
+You can add text to the PDF document by using the [`drawString`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGraphics/drawString.html) method of [`PdfGraphics`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGraphics-class.html) class as shown in the following code sample.
+
+{% highlight dart %}
+
+//Create a new PDF document
+PdfDocument document = PdfDocument();
+
+//Draw text
+document.pages.add().graphics.drawString(
+ 'Hello World!!!', PdfStandardFont(PdfFontFamily.helvetica, 20),
+ brush: PdfBrushes.black, bounds: Rect.fromLTWH(10, 10, 300, 50));
+
+//Saves the document
+File('Output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+## Drawing text in an existing document
+
+The following code sample explains how to add text in the existing PDF document by using the [`drawString`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGraphics/drawString.html) method.
+
+{% highlight dart %}
+
+//Loads an existing PDF document
+PdfDocument document =
+ PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
+
+//Gets the first page from the document
+PdfPage page = document.pages[0];
+
+//Draw the text
+page.graphics.drawString(
+ 'Hello World!', PdfStandardFont(PdfFontFamily.helvetica, 20),
+ bounds: Rect.fromLTWH(40, 40, 500, 40));
+
+//Saves the document
+File('output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+## Drawing text using different fonts
+
+The Syncfusion® Flutter PDF allows you to add text to the PDF document using the following types of fonts:
+
+* Standard fonts
+* TrueType fonts
+* Chinese, Japanese and Korean (CJK) fonts
+
+### Draw text using standard fonts
+
+PDF has fourteen base fonts also known as standard fonts, which has special significance. The details can be referred from the link below.
+
+[`Standard type 1 fonts`](https://en.wikipedia.org/wiki/PDF#Standard_Type_1_Fonts_.28Standard_14_Fonts.29)
+
+You can add text using the standard PDF fonts, by initializing the [`PdfFont`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfFont-class.html) class as [`PdfStandardFont`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfStandardFont-class.html) class. The following code snippet explains this.
+
+{% highlight dart %}
+
+//Create a new PDF document
+PdfDocument document = PdfDocument();
+
+//Draw text
+document.pages.add().graphics.drawString(
+ 'Hello World!!!', PdfStandardFont(PdfFontFamily.helvetica, 16),
+ brush: PdfBrushes.black, bounds: Rect.fromLTWH(10, 10, 300, 50));
+
+//Saves the document
+File('Output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+### Draw text using TrueType fonts
+
+You can add text using the font data, by initializing [`PdfFont`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfFont-class.html) class as [`PdfTrueTypeFont`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfTrueTypeFont-class.html) class. The font data can be loaded from the disk. The font data can be initialized to [`PdfTrueTypeFont`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfTrueTypeFont-class.html) as a list of bytes or base64 string format. The following code snippet explains this.
+
+{% highlight dart %}
+
+//Create a new PDF document
+PdfDocument document = PdfDocument();
+
+//Draw text
+document.pages.add().graphics.drawString('Hello World!!!',
+ PdfTrueTypeFont(File('Arial.ttf').readAsBytesSync(), 14),
+ brush: PdfBrushes.black, bounds: Rect.fromLTWH(10, 10, 300, 50));
+
+//Saves the document
+File('Output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+### Draw text using CJK fonts
+
+The Syncfusion® Flutter PDF provides support to draw a CJK (Chinese, Japanese, Korean) text using some of the standard CJK fonts. The font data can be initialized by initializing [`PdfFont`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfFont-class.html) class as PDF CJK StandardFont. The following code sample explains this.
+
+{% highlight dart %}
+
+//Create a new PDF document
+PdfDocument document = PdfDocument();
+
+//Create page and draw text
+document.pages.add().graphics.drawString(
+ 'こんにちは世界', PdfCjkStandardFont(PdfCjkFontFamily.heiseiMinchoW3, 20),
+ brush: PdfBrushes.black, bounds: Rect.fromLTWH(10, 10, 300, 50));
+
+//Saves the document
+File('Output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+## Measuring a string
+
+The Syncfusion® Flutter PDF allows you to measure the size of a string which uses the [`PdfFont`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfFont-class.html) using the [`measureString`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfFont/measureString.html) method of it and returns the size. Refer to the following code sample.
+
+{% highlight dart %}
+
+//Create a new PDF document
+PdfDocument document = PdfDocument();
+
+//Set a standard font
+PdfFont font = PdfStandardFont(PdfFontFamily.helvetica, 12);
+
+String text = 'Hello World!!!';
+
+//Measure the text
+Size size = font.measureString(text);
+
+//Draw text
+document.pages.add().graphics.drawString(text, font,
+ brush: PdfBrushes.black,
+ bounds: Rect.fromLTWH(0, 0, size.width, size.height));
+
+//Saves the document
+File('Output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+## Drawing Right-To-Left text
+
+The Syncfusion® Flutter PDF allows you to draw the right-to-left language text in a PDF document. To draw RTL scripts such as Arabic, Hebrew, Persian, and Urdu, set the value of [`textDirection`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfStringFormat/textDirection.html) property in the [`PdfStringFormat`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfStringFormat-class.html) class to rightToLeft using [`PdfTextDirection`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfTextDirection.html) enum. The languages (e.g., Sindhi and Kurdish) that have more than one script and can be written in either right-to-left or left-to-right format. The leftToRight value of the [`textDirection`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfStringFormat/textDirection.html) property is used to draw RTL text in the left-to-right format. Refer to the following code sample.
+
+{% highlight dart %}
+
+//Create a new PDF document
+PdfDocument document = PdfDocument();
+
+//Adds a page to the document
+PdfPage page = document.pages.add();
+
+String text =
+ 'سنبدأ بنظرة عامة مفاهيمية على مستند PDF بسيط. تم تصميم هذا الفصل ليكون توجيهًا مختصرًا قبل الغوص في مستند حقيقي وإنشاءه من البداية.\r\n \r\nيمكن تقسيم ملف PDF إلى أربعة أجزاء: الرأس والجسم والجدول الإسناد الترافقي والمقطورة. يضع الرأس الملف كملف PDF ، حيث يحدد النص المستند المرئي ، ويسرد جدول الإسناد الترافقي موقع كل شيء في الملف ، ويوفر المقطع الدعائي تعليمات حول كيفية بدء قراءة الملف.\r\n\r\nرأس الصفحة هو ببساطة رقم إصدار PDF وتسلسل عشوائي للبيانات الثنائية. البيانات الثنائية تمنع التطبيقات الساذجة من معالجة ملف PDF كملف نصي. سيؤدي ذلك إلى ملف تالف ، لأن ملف PDF يتكون عادةً من نص عادي وبيانات ثنائية (على سبيل المثال ، يمكن تضمين ملف خط ثنائي بشكل مباشر في ملف PDF).\r\n\r\nלאחר הכותרת והגוף מגיע טבלת הפניה המקושרת. הוא מתעדת את מיקום הבית של כל אובייקט בגוף הקובץ. זה מאפשר גישה אקראית של המסמך, ולכן בעת עיבוד דף, רק את האובייקטים הנדרשים עבור דף זה נקראים מתוך הקובץ. זה עושה מסמכי PDF הרבה יותר מהר מאשר קודמיו PostScript, אשר היה צריך לקרוא את כל הקובץ לפני עיבוד זה.';
+
+//Draw text
+page.graphics.drawString(
+ text, PdfTrueTypeFont(File('Arial.ttf').readAsBytesSync(), 14),
+ brush: PdfBrushes.black,
+ bounds: Rect.fromLTWH(
+ 0, 0, page.getClientSize().width, page.getClientSize().height),
+ format: PdfStringFormat(
+ textDirection: PdfTextDirection.rightToLeft,
+ alignment: PdfTextAlignment.right,
+ paragraphIndent: 35));
+
+//Saves the document
+File('Output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+## Creating a multicolumn PDF document
+
+Syncfusion® Flutter PDF allows you to create a multi-column text in PDF document by using [`PdfTextElement`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfTextElement-class.html) class. The following code example explains the same.
+
+{% highlight dart %}
+
+//Create a new PDF document
+PdfDocument document = PdfDocument();
+
+//Adds a page to the document
+PdfPage page = document.pages.add();
+
+String text =
+ 'Adventure Works Cycles, the fictitious company on which the AdventureWorks sample databases are based, is a large, multinational manufacturing company. The company manufactures and sells metal and composite bicycles to North American, European and Asian commercial markets. While its base operation is located in Washington with 290 employees, several regional sales teams are located throughout their market base.';
+
+//Create a text element with the text and font
+//Draw the text in the first column
+PdfTextElement(
+ text: text, font: PdfStandardFont(PdfFontFamily.timesRoman, 14))
+ .draw(
+ page: page,
+ bounds: Rect.fromLTWH(0, 0, page.getClientSize().width / 2,
+ page.getClientSize().height / 2));
+
+//Create a text element with the text and font
+//Draw the text in second column
+PdfTextElement(
+ text: text, font: PdfStandardFont(PdfFontFamily.timesRoman, 14))
+ .draw(
+ page: page,
+ bounds: Rect.fromLTWH(page.getClientSize().width / 2, 0,
+ page.getClientSize().width / 2, page.getClientSize().height / 2));
+
+//Saves the document
+File('Output.pdf').writeAsBytes(await document.save());
+
+// Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+The [`PdfLayoutFormat`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfLayoutFormat-class.html) class helps to allow the text to flow across pages. The [`PdfLayoutResult`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfLayoutResult-class.html) class provides the rendered bounds of the previously added text, which can be used to place successive elements without overlapping.
+
+The following code snippet explains how to add elements relatively and also allow the text to flow across multiple pages.
+
+{% highlight dart %}
+
+//Create a new PDF document
+PdfDocument document = PdfDocument();
+
+//Adds a page to the document
+PdfPage page = document.pages.add();
+
+String text =
+ 'Adventure Works Cycles, the fictitious company on which the AdventureWorks sample databases are based, is a large, multinational manufacturing company. The company manufactures and sells metal and composite bicycles to North American, European and Asian commercial markets. While its base operation is located in Washington with 290 employees, several regional sales teams are located throughout their market base.';
+
+//Create a text element with the text and font
+PdfTextElement textElement = PdfTextElement(
+ text: text, font: PdfStandardFont(PdfFontFamily.timesRoman, 20));
+
+//Create layout format
+PdfLayoutFormat layoutFormat = PdfLayoutFormat(
+ layoutType: PdfLayoutType.paginate,
+ breakType: PdfLayoutBreakType.fitPage);
+
+//Draw the first paragraph
+PdfLayoutResult result = textElement.draw(
+ page: page,
+ bounds: Rect.fromLTWH(0, 0, page.getClientSize().width / 2,
+ page.getClientSize().height),
+ format: layoutFormat)!;
+
+//Draw the second paragraph from the first paragraph end position
+textElement.draw(
+ page: page,
+ bounds: Rect.fromLTWH(0, result.bounds.bottom + 300,
+ page.getClientSize().width / 2, page.getClientSize().height),
+ format: layoutFormat);
+
+//Saves the document
+File('Output.pdf').writeAsBytes(await document.save());
+
+//Disposes the document
+document.dispose();
+
+{% endhighlight %}
+
+## Draw text with Pens and Brushes
+
+Pens and brushes are used to draw the content on PDF document with specific color and style.
+
+{% highlight dart %}
+
+//Create a new PDF document
+final PdfDocument document = PdfDocument();
+
+//Add a new page and draw text using PdfPen and PdfSolidBrush
+document.pages.add().graphics.drawString(
+ 'Hello World!', PdfStandardFont(PdfFontFamily.helvetica, 20),
+ brush: PdfSolidBrush(PdfColor(0, 0, 0)),
+ pen: PdfPen(PdfColor(255, 0, 0), width : 0.5),
+ bounds: const Rect.fromLTWH(0, 0, 500, 50));
+
+//Save the document
+final List bytes =await document.save();
+
+//Dispose the document
+document.dispose();
+
+{% endhighlight %}
+
+The Syncfusion® Flutter PDF has [`Pens`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfPens-class.html) and [`Brushes`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfBrushes-class.html) with various built-in colors to draw the content on PDF document.
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Library/flutter/working-with-watermarks.md b/Document-Processing/PDF/PDF-Library/flutter/working-with-watermarks.md
new file mode 100644
index 000000000..3bb1cfb17
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Library/flutter/working-with-watermarks.md
@@ -0,0 +1,84 @@
+---
+layout: post
+title: Watermarks in Flutter PDF library | Syncfusion
+description: Learn here all about add text and image Watermarks feature of Syncfusion Flutter PDF non-UI library and more.
+platform: document-processing
+control: PDF
+documentation: ug
+---
+
+# Watermarks in Flutter PDF
+
+The Syncfusion® Flutter PDF provides support for adding watermarks to a PDF document using [`PdfGraphics`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGraphics-class.html).
+
+## Adding text watermark to a PDF document
+
+The Syncfusion® Flutter PDF allows you draw the text watermark to the PDF document using graphics elements.
+
+The following code example explains how to draw the text watermark to the PDF document.
+
+{% highlight dart %}
+
+//Create a new PDF document
+PdfDocument document = PdfDocument();
+
+//Add a page to the document and get page graphics
+PdfGraphics graphics = document.pages.add().graphics;
+
+//Watermark text
+PdfGraphicsState state = graphics.save();
+
+//Set transparency and rotation
+graphics.setTransparency(0.25);
+
+graphics.rotateTransform(-40);
+
+//Add text watermark
+graphics.drawString('Imported using Essential PDF',
+ PdfStandardFont(PdfFontFamily.helvetica, 20),
+ pen: PdfPens.red,
+ brush: PdfBrushes.red,
+ bounds: Rect.fromLTWH(-150, 450, 0, 0));
+
+//Restore graphics state
+graphics.restore(state);
+
+//Save and dispose the PDF document
+File('SampleOutput.pdf').writeAsBytes(await document.save());
+document.dispose();
+
+{% endhighlight %}
+
+## Adding image watermark to a PDF document
+
+To add the image watermark to a PDF document, you can draw the image with transparency in [`PdfGraphics`](https://pub.dev/documentation/syncfusion_flutter_pdf/latest/pdf/PdfGraphics-class.html).
+
+The following code example explains how to draw an image watermark to the PDF document.
+
+{% highlight dart %}
+
+//Create a new PDF document
+PdfDocument document = PdfDocument();
+
+//Add a page to the document and get page graphics
+PdfGraphics graphics = document.pages.add().graphics;
+
+//Get image data
+File imageFile = File('image.jpg');
+Uint8List imagebytes = await imageFile.readAsBytes();
+String imageBase64 = base64.encode(imagebytes);
+
+//Watermark image
+PdfGraphicsState state = graphics.save();
+graphics.setTransparency(0.25);
+graphics.drawImage(
+ PdfBitmap.fromBase64String(imageBase64),
+ Rect.fromLTWH(
+ 0, 0, graphics.clientSize.width, graphics.clientSize.height));
+graphics.restore(state);
+
+//Save and dispose the PDF document
+File('SampleOutput.pdf').writeAsBytes(await document.save());
+document.dispose();
+
+{% endhighlight %}
diff --git a/Document-Processing/PDF/PDF-Library/javascript/Create-PDF-document-angular.md b/Document-Processing/PDF/PDF-Library/javascript/Create-PDF-document-angular.md
index ffd0cb50c..7bf31a7e2 100644
--- a/Document-Processing/PDF/PDF-Library/javascript/Create-PDF-document-angular.md
+++ b/Document-Processing/PDF/PDF-Library/javascript/Create-PDF-document-angular.md
@@ -43,13 +43,12 @@ All Syncfusion® JS 2 packages are published in `npmjs.com` regist
```bash
npm install @syncfusion/ej2-pdf --save
```
-N> For data extraction features, you need to install the `@syncfusion/ej2-pdf-data-extract` package as an add-on.
-* Copy the contents of the openjpeg folder from ./node_modules/@syncfusion/ej2-pdf-data-extract/dist to the public directory using the command:
-```bash
-cp -R ./node_modules/@syncfusion/ej2-pdf-data-extract/dist/openjpeg ./src/assets/openjpeg
-```
-* Confirm that there is an `openjpeg` directory within your src/assets directory if you are extracting images from PDFs.
-* Ensure your server serves .wasm files with the Content-Type: application/wasm MIME type (Angular dev server handles this by default; configure your production server accordingly).
+N> For image and data extraction features, you need to install the `@syncfusion/ej2-pdf-data-extract` package as an add-on.
+* Copy the `ej2-pdf-lib` folder from the @syncfusion/ej2-pdf-data-extract package into your project's **public, dist, or assets** directory (where your static files are served).
+* Make sure the `ej2-pdf-lib` folder exists in your final build output if you need to extract images or data from PDF files.
+* Ensure your server serves .wasm files with the **Content-Type: application/wasm** MIME type.
+(Angular’s development server already handles this; configure production servers manually.)
+* This setup is not required for **basic PDF creation**.
## Create a PDF document
diff --git a/Document-Processing/PDF/PDF-Library/javascript/Create-PDF-document-asp-net-core.md b/Document-Processing/PDF/PDF-Library/javascript/Create-PDF-document-asp-net-core.md
index 8affa95eb..7a66d5745 100644
--- a/Document-Processing/PDF/PDF-Library/javascript/Create-PDF-document-asp-net-core.md
+++ b/Document-Processing/PDF/PDF-Library/javascript/Create-PDF-document-asp-net-core.md
@@ -39,7 +39,8 @@ N> Check out the following topics for including script references in an ASP.NET
* [CDN](https://ej2.syncfusion.com/aspnetcore/documentation/common/adding-script-references#cdn-reference)
* [NPM Package](https://ej2.syncfusion.com/aspnetcore/documentation/common/adding-script-references#node-package-manager-npm)
* [CRG](https://ej2.syncfusion.com/aspnetcore/documentation/common/custom-resource-generator)
-And ensure the application includes an `openjpeg` folder under `wwwroot` (or a publicly accessible static path). This folder must contain the `openjpeg.js` and `openjpeg.wasm` files, along with the PDF file to extract images. Keep these in the same static content area as `ej2.min.js`.
+For image and data extraction features, you need to install the `@syncfusion/ej2-pdf-data-extract` package as an add-on.
+Ensure that your application includes an `ej2-pdf-lib` folder within a publicly accessible static directory (such as wwwroot, public, or dist). This folder must contain the required `.js` and `.wasm` files needed for image and data extraction.
Step 6: **Create a PDF document**: Add the script in `~/Views/Home/Index.cshtml` by creating a button and attaching a click event that uses the JavaScript PDF API to generate a PDF document.
diff --git a/Document-Processing/PDF/PDF-Library/javascript/Create-PDF-document-asp-net-mvc.md b/Document-Processing/PDF/PDF-Library/javascript/Create-PDF-document-asp-net-mvc.md
index 9806ca90a..e8d08b9d8 100644
--- a/Document-Processing/PDF/PDF-Library/javascript/Create-PDF-document-asp-net-mvc.md
+++ b/Document-Processing/PDF/PDF-Library/javascript/Create-PDF-document-asp-net-mvc.md
@@ -40,7 +40,8 @@ N> Check out the following topics for including script references in an ASP.NET
* [CDN](https://ej2.syncfusion.com/aspnetmvc/documentation/common/adding-script-references)
* [NPM Package](https://ej2.syncfusion.com/aspnetmvc/documentation/common/adding-script-references#node-package-manager-npm)
* [CRG](https://ej2.syncfusion.com/aspnetmvc/documentation/common/custom-resource-generator)
-And ensure the application includes an `openjpeg` folder under `Scripts` (or a publicly accessible static path). This folder must contain the `openjpeg.js` and `openjpeg.wasm` files, along with the PDF file to extract images. Keep these in the same static content area as `ej2.min.js`.
+For image and data extraction features, you need to install the `@syncfusion/ej2-pdf-data-extract` package as an add-on.
+Ensure that your application includes an `ej2-pdf-lib` folder within a publicly accessible static directory (such as wwwroot, public, or dist). This folder must contain the required `.js` and `.wasm` files needed for image and data extraction.
Step 6: **Create a PDF document**: Add the script in `~/Views/Home/Index.cshtml` by creating a button and attaching a click event that uses the JavaScript PDF API to generate a PDF document.
diff --git a/Document-Processing/PDF/PDF-Library/javascript/Create-PDF-document-javascript.md b/Document-Processing/PDF/PDF-Library/javascript/Create-PDF-document-javascript.md
index 290373361..a77b535de 100644
--- a/Document-Processing/PDF/PDF-Library/javascript/Create-PDF-document-javascript.md
+++ b/Document-Processing/PDF/PDF-Library/javascript/Create-PDF-document-javascript.md
@@ -35,10 +35,8 @@ Step 3: Create a HTML page (index.html) in `my-app` location and add the CDN lin
{% endhighlight %}
{% endtabs %}
-N> For image/data extraction features, install and deploy the openjpeg runtime. Place an openjpeg folder alongside your index.html (or any publicly accessible static path) containing:
-* `openjpeg.js`
-* `openjpeg.wasm`
-Ensure your server serves .wasm files with the Content-Type: application/wasm MIME type. This is not required for basic PDF creation.
+N> For image and data extraction features, you need to install the `@syncfusion/ej2-pdf-data-extract` package as an add-on.
+Ensure that your application includes an `ej2-pdf-lib` folder within a publicly accessible static directory (such as wwwroot, public, or dist). This folder must contain the required `.js` and `.wasm` files needed for image and data extraction.
Step 4: **Create a PDF document**: Add the script in `index.html` by creating a button and attaching a click event that uses the JavaScript PDF API to generate a PDF document.
diff --git a/Document-Processing/PDF/PDF-Library/javascript/Create-PDF-document-react.md b/Document-Processing/PDF/PDF-Library/javascript/Create-PDF-document-react.md
index b22d7fefb..7bb1c2ee4 100644
--- a/Document-Processing/PDF/PDF-Library/javascript/Create-PDF-document-react.md
+++ b/Document-Processing/PDF/PDF-Library/javascript/Create-PDF-document-react.md
@@ -23,13 +23,11 @@ All Syncfusion JS 2 packages are published in `npmjs.com` registry.
```bash
npm install @syncfusion/ej2-pdf --save
```
-N> For image/data extraction features, you need to install the `@syncfusion/ej2-pdf-data-extract` package as an add-on.
-* Copy the contents of the openjpeg folder from ./node_modules/@syncfusion/ej2-pdf-data-extract/dist to the public directory using the command:
-```bash
-cp -R ./node_modules/@syncfusion/ej2-pdf-data-extract/dist/openjpeg public/openjpeg
-```
-* Confirm that there is an 'openjpeg' directory within your public directory if you are extracting images from PDFs.
-* Ensure your server serves .wasm files with the Content-Type: application/wasm MIME type.
+N> For image and data extraction features, you need to install the `@syncfusion/ej2-pdf-data-extract` package as an add-on.
+* Copy the `ej2-pdf-lib` folder from the @syncfusion/ej2-pdf-data-extract package into your project's **public, dist, or assets** directory (where your static files are served).
+* Make sure the `ej2-pdf-lib` folder exists in your final build output if you need to extract images or data from PDF files.
+* Ensure your server serves .wasm files with the **Content-Type: application/wasm** MIME type.
+* This setup is not required for **basic PDF creation**.
**Create a PDF document**: Add the script in `App.jsx` by creating a button and attaching a click event that uses the JavaScript PDF API to generate a PDF document.
diff --git a/Document-Processing/PDF/PDF-Library/javascript/Create-PDF-document-typescript.md b/Document-Processing/PDF/PDF-Library/javascript/Create-PDF-document-typescript.md
index dcb0728fd..4ac11c4cf 100644
--- a/Document-Processing/PDF/PDF-Library/javascript/Create-PDF-document-typescript.md
+++ b/Document-Processing/PDF/PDF-Library/javascript/Create-PDF-document-typescript.md
@@ -23,10 +23,8 @@ All Syncfusion JS 2 packages are published in `npmjs.com` registry.
```bash
npm install @syncfusion/ej2-pdf --save
```
-N> For image/data extraction features, install the `@syncfusion/ej2-pdf-data-extract` add-on. Place an openjpeg folder alongside your built static assets (for example, under public or dist) containing:
-* openjpeg.js
-* openjpeg.wasm
-Ensure your server serves .wasm files with the Content-Type: application/wasm MIME type. This is not required for basic PDF creation.
+N> For image and data extraction features, you need to install the `@syncfusion/ej2-pdf-data-extract` package as an add-on.
+Ensure that your application includes an `ej2-pdf-lib` folder within a publicly accessible static directory (such as wwwroot, public, or dist). This folder must contain the required `.js` and `.wasm` files needed for image and data extraction. This setup is not required for **basic PDF creation**.
## Dependencies
diff --git a/Document-Processing/PDF/PDF-Library/javascript/Create-PDF-document-vue.md b/Document-Processing/PDF/PDF-Library/javascript/Create-PDF-document-vue.md
index 6b394c5d2..492ddb465 100644
--- a/Document-Processing/PDF/PDF-Library/javascript/Create-PDF-document-vue.md
+++ b/Document-Processing/PDF/PDF-Library/javascript/Create-PDF-document-vue.md
@@ -52,13 +52,11 @@ or
yarn add @syncfusion/ej2-pdf
```
-N> For image/data extraction features, you need to install the `@syncfusion/ej2-pdf-data-extract` package as an add-on.
-* Copy the contents of the openjpeg folder from ./node_modules/@syncfusion/ej2-pdf-data-extract/dist to the public directory using the command:
-```bash
-cp -R ./node_modules/@syncfusion/ej2-pdf-data-extract/dist/openjpeg public/js/openjpeg
-```
-* Confirm that there is an 'openjpeg' directory within your public directory if you are extracting images from PDFs.
-* Ensure your server serves .wasm files with the Content-Type: application/wasm MIME type.
+N> For image and data extraction features, you need to install the `@syncfusion/ej2-pdf-data-extract` package as an add-on.
+* Copy the `ej2-pdf-lib` folder from the @syncfusion/ej2-pdf-data-extract package into your project's **public, dist, or assets** directory (where your static files are served).
+* Make sure the `ej2-pdf-lib` folder exists in your final build output if you need to extract images or data from PDF files.
+* Ensure your server serves .wasm files with the **Content-Type: application/wasm** MIME type.
+* This setup is not required for **basic PDF creation**.
* **Create a PDF document**: Add the script in `App.vue` by creating a button and attaching a click event that uses the JavaScript PDF API to generate a PDF document.
diff --git a/Document-Processing/PDF/PDF-Library/javascript/Shapes.md b/Document-Processing/PDF/PDF-Library/javascript/Shapes.md
index 9f9862147..00f32c3ef 100644
--- a/Document-Processing/PDF/PDF-Library/javascript/Shapes.md
+++ b/Document-Processing/PDF/PDF-Library/javascript/Shapes.md
@@ -21,7 +21,7 @@ The PDF has support for adding the below shapes.
## Adding Shapes to a PDF document
-JavaScript PDF supports adding shapes with different types of brushes like solid bush, gradient brush, tiling brush, and image brush along with various color spaces and transparency levels.
+The JavaScript PDF library supports shape rendering exclusively with PDF solid brushes.
### Line
diff --git a/Document-Processing/PDF/PDF-Viewer/angular/form-designer/create-programmatically.md b/Document-Processing/PDF/PDF-Viewer/angular/form-designer/create-programmatically.md
index 6db092f4d..ee1b36ccd 100644
--- a/Document-Processing/PDF/PDF-Viewer/angular/form-designer/create-programmatically.md
+++ b/Document-Processing/PDF/PDF-Viewer/angular/form-designer/create-programmatically.md
@@ -94,7 +94,7 @@ N> To configure the server-backed PDF Viewer, add the following `serviceUrl` in
`public service: string = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer'`;
Within the template, configure the PDF Viewer by adding the `[serviceUrl]='service'` attribute inside the div element.
-{% previewsample "Document-Processing/samples/pdfviewer/anagular/addformfield-cs1/index.html" %}
+{% previewsample "/document-processing/samples/pdfviewer/anagular/addformfield-cs1" %}
## Edit/Update form field programmatically
@@ -170,7 +170,7 @@ N> To configure the server-backed PDF Viewer, add the following `serviceUrl` in
`public service: string = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer'`;
Within the template, configure the PDF Viewer by adding the `[serviceUrl]='service'` attribute inside the div element.
-{% previewsample "Document-Processing/samples/pdfviewer/angular/updateformfield-cs1/index.html" %}
+{% previewsample "/document-processing/samples/pdfviewer/angular/updateformfield-cs1" %}
## Delete form field programmatically
@@ -246,7 +246,7 @@ N> To configure the server-backed PDF Viewer, add the following `serviceUrl` in
`public service: string = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer'`;
Within the template, configure the PDF Viewer by adding the `[serviceUrl]='service'` attribute inside the div element.
-{% previewsample "Document-Processing/samples/pdfviewer/angular/deleteformfield-cs1/index.html" %}
+{% previewsample "/document-processing/samples/pdfviewer/angular/deleteformfield-cs1" %}
The following code illustrates how to delete a signature from the signature field using the `retrieveFormFields` and `clearFormFields` APIs.
diff --git a/Document-Processing/PDF/PDF-Viewer/angular/getting-started-with-server-backed.md b/Document-Processing/PDF/PDF-Viewer/angular/getting-started-with-server-backed.md
index 5d1d997aa..7a5663b81 100644
--- a/Document-Processing/PDF/PDF-Viewer/angular/getting-started-with-server-backed.md
+++ b/Document-Processing/PDF/PDF-Viewer/angular/getting-started-with-server-backed.md
@@ -150,7 +150,7 @@ platformBrowserDynamic().bootstrapModule(AppModule)
```
-{% previewsample "Document-Processing/samples/pdfviewer/angular/getting-started-cs1/index.html" %}
+{% previewsample "/document-processing/samples/pdfviewer/angular/getting-started-cs1" %}
> For PDF Viewer serviceUrl creation, follow the steps provided in the [link](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/javascript-es6/how-to/create-pdfviewer-service)
diff --git a/Document-Processing/PDF/PDF-Viewer/angular/getting-started.md b/Document-Processing/PDF/PDF-Viewer/angular/getting-started.md
index 67aeadca7..fc56dc6e8 100644
--- a/Document-Processing/PDF/PDF-Viewer/angular/getting-started.md
+++ b/Document-Processing/PDF/PDF-Viewer/angular/getting-started.md
@@ -215,7 +215,7 @@ platformBrowserDynamic().bootstrapModule(AppModule)
{% endhighlight %}
{% endtabs %}
-{% previewsample "Document-Processing/samples/pdfviewer/angular/getting-started-cs1-standalone/index.html" %}
+{% previewsample "/document-processing/samples/pdfviewer/angular/getting-started-cs1-standalone" %}
## Module injection
diff --git a/Document-Processing/PDF/PDF-Viewer/angular/how-to/custom-context-menu.md b/Document-Processing/PDF/PDF-Viewer/angular/how-to/custom-context-menu.md
index 9f5583368..a9fb0ed93 100644
--- a/Document-Processing/PDF/PDF-Viewer/angular/how-to/custom-context-menu.md
+++ b/Document-Processing/PDF/PDF-Viewer/angular/how-to/custom-context-menu.md
@@ -11,7 +11,7 @@ domainurl: ##DomainURL##
# Customize the context menu in PDF Viewer
PDF Viewer allows you to add custom option in context menu. It can be achieved by using the `addCustomMenu()` method and custom action is defined using the `customContextMenuSelect()`method.
-PDF Viewer supports adding custom options to the context menu using the `addCustomMenu()`(https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#addcustommenu)method. Define actions for custom items with the [customContextMenuSelect()](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#customcontextmenuselect) method.
+PDF Viewer supports adding custom options to the context menu using the `addCustomMenu()`(https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#addcustommenu)method. Define actions for custom items with the [customContextMenuSelect()](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#customcontextmenuselect) method.
### Add a custom option
@@ -102,7 +102,7 @@ Toggle the display of the default context menu. When the addCustomMenu parameter
#### show or hide custom items before opening
-Use [customContextMenuBeforeOpen()](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#customcontextmenubeforeopen) to hide or show custom options dynamically.
+Use [customContextMenuBeforeOpen()](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#customcontextmenubeforeopen) to hide or show custom options dynamically.
```js
export class CustomContextMenuComponent implements OnInit {
@@ -227,6 +227,6 @@ Add the below serviceUrl in the `app.component.ts` file
`public service: string = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer'`;
Within the template, configure the PDF Viewer by adding the `[serviceUrl]='service'` attribute inside the div element.
-{% previewsample "Document-Processing/samples/pdfviewer/angular/custom-context-menu/index.html" %}
+{% previewsample "/document-processing/samples/pdfviewer/angular/custom-context-menu" %}
[View sample in GitHub](https://github.com/SyncfusionExamples/angular-pdf-viewer-examples/tree/master/How%20to/Custom%20Context%20Menu)
\ No newline at end of file
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 f903adaf5..254f9bbfe 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
@@ -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/MAUI%20Blazor%20App/MauiBlazorWindow).
+>[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-assembly-application.md b/Document-Processing/PDF/PDF-Viewer/blazor/getting-started/web-assembly-application.md
index a3732020e..861783645 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/Client-side%20application).
+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).
{% tabcontents %}
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 5467edba9..a2d79446b 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
@@ -198,7 +198,7 @@ Run the WinForms application. The Syncfusion® Blazor PDF Viewer renders insi

->[View the sample on GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/tree/master/Getting%20Started/WinForms%20Blazor%20App).
+>[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 d9c294d8c..f1bbf2960 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
@@ -215,7 +215,7 @@ Run the WPF application. The Syncfusion® Blazor PDF Viewer renders inside th

->[View the sample on GitHub](https://github.com/SyncfusionExamples/blazor-pdf-viewer-examples/tree/master/Getting%20Started/WPF%20Blazor%20App).
+>[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/javascript-es5/Localization/default-language.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/Localization/default-language.md
new file mode 100644
index 000000000..6f687afb3
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/Localization/default-language.md
@@ -0,0 +1,330 @@
+---
+layout: post
+title: Localization in JavaScript ES5 PDF Viewer | Syncfusion
+description: Learn about the default language culture and localization in Syncfusion JavaScript ES5 PDF Viewer component.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Localization support in 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.
+
+
+
+## Default language (en-US)
+
+By default, the PDF Viewer uses the en-US culture and requires no additional configuration.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.Print,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.PageOrganizer
+ );
+
+ var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib',
+ locale: 'ar-AE' //Using locale update culture (en-US by default)
+ });
+ pdfviewer.appendTo('#pdfViewer');
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.Print,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.PageOrganizer
+ );
+
+ var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/',
+ locale: 'ar-AE' //Using locale update culture (en-US by default)
+ });
+ pdfviewer.appendTo('#pdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples)
+
+## Localization keys reference
+
+The PDF Viewer supports localization using culture-specific string collections. By default, the component uses the "en-US" culture.
+
+The following table lists the default text values used by the PDF Viewer in the "en-US" culture:
+
+|Keywords|Values|
+|---|---|
+|PdfViewer|PDF Viewer|
+|Cancel|Cancel|
+|Download file|Download file|
+|Download|Download|
+|Enter Password|This document is password protected. Please enter a password.|
+|File Corrupted|File corrupted|
+|File Corrupted Content|The file is corrupted and cannot be opened.|
+|Fit Page|Fit page|
+|Fit Width|Fit width|
+|Automatic|Automatic|
+|Go To First Page|Show first page|
+|Invalid Password|Incorrect password. Please try again.|
+|Next Page|Show next page|
+|OK|OK|
+|Open|Open file|
+|Page Number|Current page number|
+|Previous Page|Show previous page|
+|Go To Last Page|Show last page|
+|Zoom|Zoom|
+|Zoom In|Zoom in|
+|Zoom Out|Zoom out|
+|Page Thumbnails|Page thumbnails|
+|Bookmarks|Bookmarks|
+|Print|Print file|
+|Password Protected|Password required|
+|Copy|Copy|
+|Text Selection|Text selection tool|
+|Panning|Pan mode|
+|Text Search|Find text|
+|Find in document|Find in document|
+|Match case|Match case|
+|Apply|Apply|
+|GoToPage|Go to page|
+|No Matches|Viewer has finished searching the document. No more matches were found|
+|No Text Found|No Text Found|
+|Undo|Undo|
+|Redo|Redo|
+|Annotation|Add or Edit annotations|
+|Highlight|Highlight Text|
+|Underline|Underline Text|
+|Strikethrough|Strikethrough Text|
+|Delete|Delete annotation|
+|Opacity|Opacity|
+|Color edit|Change Color|
+|Opacity edit|Change Opacity|
+|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.|
+|Open text|Open|
+|First text|First Page|
+|Previous text|Previous Page|
+|Next text|Next Page|
+|Last text|Last Page|
+|Zoom in text|Zoom In|
+|Zoom out text|Zoom Out|
+|Selection text|Selection|
+|Pan text|Pan|
+|Print text|Print|
+|Search text|Search|
+|Annotation Edit text|Edit Annotation|
+|Line Thickness|Line Thickness|
+|Line Properties|Line Properties|
+|Start Arrow|Start Arrow |
+|End Arrow|End Arrow|
+|Line Style|Line Style|
+|Fill Color|Fill Color|
+|Line Color|Line Color|
+|None|None|
+|Open Arrow|Open Arrow|
+|Closed Arrow|Closed Arrow|
+|Round Arrow|Round Arrow|
+|Square Arrow|Square Arrow|
+|Diamond Arrow|Diamond Arrow|
+|Cut|Cut|
+|Paste|Paste|
+|Delete Context|Delete Context|
+|Properties|Properties|
+|Add Stamp|Add Stamp|
+|Add Shapes|Add Shapes|
+|Stroke edit|Stroke Edit|
+|Change thickness|Change Thickness|
+|Add line|Add Line|
+|Add arrow|Add Arrow|
+|Add rectangle|Add Rectangle|
+|Add circle|Add Circle|
+|Add polygon|Add Polygon|
+|Add Comments|Add Comments|
+|Comments| Comments|
+|No Comments Yet|No Comments Yet|
+|Accepted| Accepted|
+|Completed| Completed|
+|Cancelled| Cancelled|
+|Rejected| Rejected|
+|Leader Length|Leader Length|
+|Scale Ratio|Scale Ratio|
+|Calibrate| Calibrate|
+|Calibrate Distance|Calibrate Distance|
+|Calibrate Perimeter|Calibrate Perimeter|
+|Calibrate Area|Calibrate Area|
+|Calibrate Radius|Calibrate Radius|
+|Calibrate Volume|Calibrate Volume|
+|Depth|Depth|
+|Closed|Closed|
+|Round|Round|
+|Square|Square|
+|Diamond|Diamond|
+|Edit|Edit|
+|Comment|Comment|
+|Comment Panel|Comment Panel|
+|Set Status|Set Status|
+|Post|Post|
+|Page|Page|
+|Add a comment|Add a comment|
+|Add a reply|Add a reply|
+|Import Annotations|Import Annotations|
+|Export Annotations|Export Annotations|
+|Add|Add|
+|Clear|Clear|
+|Bold|Bold|
+|Italic|Italic|
+|Strikethroughs|Strikethroughs|
+|Underlines|Underlines|
+|Superscript|Superscript|
+|Subscript|Subscript|
+|Align left|Align Left|
+|Align right|Align Right|
+|Center|Center|
+|Justify|Justify|
+|Font color|Font Color|
+|Text Align|Text Align|
+|Text Properties|Text Properties|
+|Draw Signature|Draw Signature|
+|Create| Create|
+|Font family|Font Family|
+|Font size|Font Size|
+|Free Text|Free Text|
+|Import Failed|Import Failed|
+|File not found|File Not Found|
+|Export Failed|Export Failed|
+|Dynamic|Dynamic|
+|Standard Business|Standard Business|
+|Sign Here|Sign Here|
+|Custom Stamp|Custom Stamp|
+|InitialFieldDialogHeaderText|Initial Field Dialog Header Text|
+|HandwrittenInitialDialogHeaderText|Handwritten Initial Dialog Header Text|
+|SignatureFieldDialogHeaderText|Signature Field Dialog Header Text|
+|HandwrittenSignatureDialogHeaderText|Handwritten Signature Dialog Header Text|
+|Draw-hand Signature|Draw-hand Signature|
+|Type Signature|Type Signature|
+|Upload Signature|Upload Signature|
+|Browse Signature Image|Browse Signature Image|
+|Save Signature|Save Signature|
+|Save Initial|Save Initial|
+|highlight|highlight|
+|underline|underline|
+|strikethrough|strikethrough|
+|FormDesigner|Form Designer|
+|SubmitForm|Submit Form|
+|Search text|Search Text|
+|Draw Ink|Draw Ink|
+|Revised|Revised|
+|Reviewed|Reviewed|
+|Received|Received|
+|Confidential|Confidential|
+|Approved|Approved|
+|Not Approved|Not Approved|
+|Witness|Witness|
+|Initial Here|Initial Here|
+|Draft|Draft|
+|Final|Final|
+|For Public Release|For Public Release|
+|Not For Public Release|Not For Public Release|
+|For Comment|For Comment|
+|Void|Void|
+|Preliminary Results|Preliminary Results|
+|Information Only|Information Only|
+|Enter Signature as Name|Enter Signature as Name|
+|Textbox|Textbox|
+|Password|Password|
+|Check Box|Check Box|
+|Radio Button|Radio Button|
+|Dropdown|Dropdown|
+|List Box|List Box|
+|Signature|Signature|
+|Delete FormField|Delete FormField|
+|FormDesigner Edit text|Form Designer Edit Text|
+|in|in|
+|m|m|
+|ft_in|ft_in|
+|ft|ft|
+|p|p|
+|cm|cm|
+|mm|mm|
+|pt|pt|
+|cu|cu|
+|sq|sq|
+|General|General|
+|Appearance|Appearance|
+|Options|Options|
+|Textbox Properties|Textbox Properties|
+|Name|Name|
+|Tooltip|Tooltip|
+|Value|Value|
+|Form Field Visibility|Form Field Visibility|
+|Read Only|Read Only|
+|Required|Required|
+|Checked|Checked|
+|Show Printing|Show Printing|
+|Formatting|Formatting|
+|Fill|Fill|
+|Border|Border|
+|Border Color|Border Color|
+|Thickness|Thickness|
+|Max Length|Max Length|
+|List Item|List Item|
+|Export Value|Export Value|
+|Dropdown Item List|Dropdown Item List|
+|List Box Item List|List Box Item List|
+|Delete Item|Delete Item|
+|Up|Up|
+|Down|Down|
+|Multiline|Multiline|
+|Initial|Initial|
+|Export XFDF|Export XFDF|
+|Import XFDF|Import XFDF|
+|Organize Pages|Organize Pages|
+|Insert Right|Insert Right|
+|Insert Left|Insert Left|
+|Total|Total|
+|Pages|Pages|
+|Rotate Right|Rotate Right|
+|Rotate Left|Rotate Left|
+|Delete Page|Delete Page|
+|Delete Pages|Delete Pages|
+|Copy Page|Copy Page|
+|Copy Pages|Copy Pages|
+|Save|Save|
+|Save As|Save As|
+|Select All|Select All|
+|Import Document|Import Document|
+|Match any word|Match any word|
+|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|
+|Cors policy error|Unable to retrieve the document due to an invalid URL or access restrictions. Please check the document URL and try again|
+|No More Matches|Viewer has finished searching the document. No more matches were found|
+|No Search Matches|No matches found|
+|No More Search Matches|No more matches found|
+|Exact Matches|EXACT MATCHES|
+|Total Matches|TOTAL MATCHES|
+
+## See Also
+
+- [New Language](./new-language)
+- [RTL Language Support](./rtl-language-support)
\ No newline at end of file
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
new file mode 100644
index 000000000..88ec41fb1
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/Localization/new-language.md
@@ -0,0 +1,316 @@
+---
+layout: post
+title: Update New Language in JavaScript ES5 PDF Viewer | Syncfusion
+description: Learn how to set and configure new language culture and localization in Syncfusion JavaScript ES5 PDF Viewer component.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Set a new language (localization) in JavaScript
+
+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
+
+
+
+## Example Code-snippet to change language using Locale
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.Print,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.PageOrganizer
+ );
+
+ var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib',
+ locale: 'de', //Using German locale updates culture
+ });
+
+ ej.base.L10n.load({
+ 'de': {
+ 'PdfViewer': {
+ 'PdfViewer': 'PDF-Viewer',
+ 'Cancel': 'Abbrechen',
+ 'Download file': 'Datei herunterladen',
+ 'Download': 'Herunterladen',
+ 'Enter Password': 'Dieses Dokument ist passwortgeschützt. Bitte geben Sie ein Passwort ein.',
+ 'File Corrupted': 'Datei beschädigt',
+ 'File Corrupted Content': 'Die Datei ist beschädigt und kann nicht geöffnet werden.',
+ 'Fit Page': 'Seite anpassen',
+ 'Fit Width': 'Breite anpassen',
+ 'Automatic': 'Automatisch',
+ 'Go To First Page': 'Erste Seite anzeigen',
+ 'Invalid Password': 'Falsches Passwort. Bitte versuchen Sie es erneut.',
+ 'Next Page': 'Nächste Seite anzeigen',
+ 'OK': 'OK',
+ 'Open': 'Datei öffnen',
+ 'Page Number': 'Aktuelle Seitenzahl',
+ 'Previous Page': 'Vorherige Seite anzeigen',
+ 'Go To Last Page': 'Letzte Seite anzeigen',
+ 'Zoom': 'Zoomen',
+ 'Zoom In': 'Hineinzoomen',
+ 'Zoom Out': 'Herauszoomen',
+ 'Page Thumbnails': 'Miniaturansichten der Seiten',
+ 'Bookmarks': 'Lesezeichen',
+ 'Print': 'Druckdatei',
+ 'Organize Pages': 'Seiten organisieren',
+ 'Insert Right': 'Rechts einfügen',
+ 'Insert Left': 'Links einfügen',
+ 'Total': 'Gesamt',
+ 'Pages': 'Seiten',
+ 'Rotate Right': 'Drehe nach rechts',
+ 'Rotate Left': 'Nach links drehen',
+ 'Delete Page': 'Seite löschen',
+ 'Delete Pages': 'Seiten löschen',
+ 'Copy Page': 'Seite kopieren',
+ 'Copy Pages': 'Seiten kopieren',
+ 'Import Document': 'Dokument importieren',
+ 'Save': 'Speichern',
+ 'Save As': 'Speichern als',
+ 'Select All': 'Wählen Sie Alle',
+ 'Change Page Zoom': 'Change Page Zoom',
+ 'Increase Page Zoom': 'Increase Page Zoom',
+ 'Decrease Page Zoom': 'Decrease Page Zoom',
+ 'Password Protected': 'Passwort erforderlich',
+ 'Copy': 'Kopieren',
+ 'Text Selection': 'Textauswahltool',
+ 'Panning': 'Schwenkmodus',
+ 'Text Search': 'Text finden',
+ 'Find in document': 'Im Dokument suchen',
+ 'Match case': 'Gross- / Kleinschreibung',
+ 'Match any word': 'Passen Sie ein beliebiges Wort an',
+ 'Apply': 'Anwenden',
+ 'GoToPage': 'Gehen Sie zur Seite',
+ 'No Matches': 'PDF Viewer hat die Suche im Dokument abgeschlossen. Es wurden keine Übereinstimmungen gefunden.',
+ 'No More Matches': 'PDF Viewer hat die Suche im Dokument abgeschlossen. Es wurden keine weiteren Übereinstimmungen gefunden.',
+ 'No Search Matches': 'Keine Treffer gefunden',
+ 'No More Search Matches': 'Keine weiteren Übereinstimmungen gefunden',
+ 'Exact Matches': 'Genaue Übereinstimmungen',
+ 'Total Matches': 'Gesamtspiele',
+ 'Undo': 'Rückgängig machen',
+ 'Redo': 'Wiederholen',
+ 'Annotation': 'Anmerkungen hinzufügen oder bearbeiten',
+ 'FormDesigner': 'Fügen Sie Formularfelder hinzu und bearbeiten Sie sie',
+ 'Highlight': 'Text hervorheben',
+ 'Underline': 'Text unterstreichen',
+ 'Strikethrough': 'Durchgestrichener Text',
+ 'Squiggly': 'Squiggly Text',
+ 'Delete': 'Anmerkung löschen',
+ 'Opacity': 'Opazität',
+ 'Color edit': 'Farbe ändern',
+ 'Opacity edit': 'Deckkraft ändern',
+ 'Highlight context': 'Markieren',
+ 'Underline context': 'Unterstreichen',
+ 'Strikethrough context': 'Durchschlagen',
+ 'Squiggly context': 'Squiggly',
+ 'Server error': 'Der Webdienst hört nicht zu. ',
+ 'Client error': 'Der Client-Seiten-Fehler wird gefunden. Bitte überprüfen Sie die benutzerdefinierten Header in der Eigenschaft von AjaxRequestSets und Web -Aktion in der Eigenschaftsassettierungseigenschaft.',
+ 'Cors policy error': 'Das Dokument kann aufgrund einer ungültigen URL- oder Zugriffsbeschränkungen nicht abgerufen werden. Bitte überprüfen Sie die Dokument -URL und versuchen Sie es erneut.',
+ 'Open text': 'Offen',
+ 'First text': 'Erste Seite',
+ 'Previous text': 'Vorherige Seite',
+ 'Next text': 'Nächste Seite',
+ 'Last text': 'Letzte Seite',
+ 'Zoom in text': 'Hineinzoomen',
+ 'Zoom out text': 'Rauszoomen',
+ 'Selection text': 'Auswahl',
+ 'Pan text': 'Pfanne',
+ 'Print text': 'Drucken',
+ 'Search text': 'Suchen',
+ 'Annotation Edit text': 'Anmerkung bearbeiten',
+ 'FormDesigner Edit text': 'Fügen Sie Formularfelder hinzu und bearbeiten Sie sie',
+ 'Line Thickness': 'Dicke der Linie',
+ 'Line Properties': 'Linieneigenschaften',
+ 'Start Arrow': 'Pfeil starten',
+ 'End Arrow': 'Endpfeil',
+ 'Line Style': 'Linienstil',
+ 'Fill Color': 'Füllfarbe',
+ 'Line Color': 'Linienfarbe',
+ 'None': 'Keiner',
+ 'Open Arrow': 'Offen',
+ 'Closed Arrow': 'Geschlossen',
+ 'Round Arrow': 'Runden',
+ 'Square Arrow': 'Quadrat',
+ 'Diamond Arrow': 'Diamant',
+ 'Butt': 'Hintern',
+ 'Cut': 'Schneiden',
+ 'Paste': 'Paste',
+ 'Delete Context': 'Löschen',
+ 'Properties': 'Eigenschaften',
+ 'Add Stamp': 'Stempel hinzufügen',
+ 'Add Shapes': 'Formen hinzufügen',
+ 'Stroke edit': 'Ändern Sie die Strichfarbe',
+ 'Change thickness': 'Randstärke ändern',
+ 'Add line': 'Zeile hinzufügen',
+ 'Add arrow': 'Pfeil hinzufügen',
+ 'Add rectangle': 'Rechteck hinzufügen',
+ 'Add circle': 'Kreis hinzufügen',
+ 'Add polygon': 'Polygon hinzufügen',
+ 'Add Comments': 'Füge Kommentare hinzu',
+ 'Comments': 'Kommentare',
+ 'SubmitForm': 'Formular abschicken',
+ 'No Comments Yet': 'Noch keine Kommentare',
+ 'Accepted': 'Akzeptiert',
+ 'Completed': 'Vollendet',
+ 'Cancelled': 'Abgesagt',
+ 'Rejected': 'Abgelehnt',
+ 'Leader Length': 'Führungslänge',
+ 'Scale Ratio': 'Skalenverhältnis',
+ 'Calibrate': 'Kalibrieren',
+ 'Calibrate Distance': 'Distanz kalibrieren',
+ 'Calibrate Perimeter': 'Umfang kalibrieren',
+ 'Calibrate Area': 'Bereich kalibrieren',
+ 'Calibrate Radius': 'Radius kalibrieren',
+ 'Calibrate Volume': 'Lautstärke kalibrieren',
+ 'Depth': 'Tiefe',
+ 'Closed': 'Geschlossen',
+ 'Round': 'Runden',
+ 'Square': 'Quadrat',
+ 'Diamond': 'Diamant',
+ 'Edit': 'Bearbeiten',
+ 'Comment': 'Kommentar',
+ 'Comment Panel': 'Kommentarpanel',
+ 'Set Status': 'Status festlegen',
+ 'Post': 'Post',
+ 'Page': 'Seite',
+ 'Add a comment': 'Einen Kommentar hinzufügen',
+ 'Add a reply': 'Fügen Sie eine Antwort hinzu',
+ 'Import Annotations': 'Importieren Sie Annotationen aus der JSON -Datei',
+ 'Export Annotations': 'Annotation an die JSON -Datei exportieren',
+ 'Export XFDF': 'Annotation in XFDF -Datei exportieren',
+ 'Import XFDF': 'Importieren Sie Annotationen aus der XFDF -Datei',
+ 'Add': 'Hinzufügen',
+ 'Clear': 'Klar',
+ 'Bold': 'Deutlich',
+ 'Italic': 'Kursiv',
+ 'Strikethroughs': 'Durchgestrichen',
+ 'Underlines': 'Unterstreichen',
+ 'Superscript': 'Hochgestellt',
+ 'Subscript': 'Index',
+ 'Align left': 'Linksbündig',
+ 'Align right': 'Rechts ausrichten',
+ 'Center': 'Center',
+ 'Justify': 'Rechtfertigen',
+ 'Font color': 'Schriftfarbe',
+ 'Text Align': 'Textausrichtung',
+ 'Text Properties': 'Schriftstil',
+ 'SignatureFieldDialogHeaderText': 'Signatur hinzufügen',
+ 'HandwrittenSignatureDialogHeaderText': 'Signatur hinzufügen',
+ 'InitialFieldDialogHeaderText': 'Initial hinzufügen',
+ 'HandwrittenInitialDialogHeaderText': 'Initial hinzufügen',
+ 'Draw Ink': 'Tinte zeichnen',
+ 'Create': 'Erstellen',
+ 'Font family': 'Schriftfamilie',
+ 'Font size': 'Schriftgröße',
+ 'Free Text': 'Freier Text',
+ 'Import Failed': 'Ungültiger JSON -Dateityp oder Dateiname; Bitte wählen Sie eine gültige JSON -Datei aus',
+ 'Import PDF Failed': 'Ungültige PDF -Dateityp oder PDF -Datei nicht gefunden. Bitte wählen Sie eine gültige PDF -Datei aus',
+ 'File not found': 'Die importierte JSON -Datei wird nicht am gewünschten Ort gefunden',
+ 'Export Failed': 'Exportanmerkungen sind gescheitert. Bitte stellen Sie sicher, dass Anmerkungen ordnungsgemäß hinzugefügt werden',
+ 'of': 'von ',
+ 'Dynamic': 'Dynamisch',
+ 'Standard Business': 'Standardgeschäft',
+ 'Sign Here': 'Hier unterschreiben',
+ 'Custom Stamp': 'Benutzerdefinierte Stempel',
+ 'Enter Signature as Name': 'Gib deinen Namen ein',
+ 'Draw-hand Signature': 'ZIEHEN',
+ 'Type Signature': 'TYP',
+ 'Upload Signature': 'HOCHLADEN',
+ 'Browse Signature Image': 'DURCHSUCHE',
+ 'Save Signature': 'Signatur speichern',
+ 'Save Initial': 'Initial speichern',
+ 'Textbox': 'Textfeld',
+ 'Password': 'Passwort',
+ 'Check Box': 'Kontrollkästchen',
+ 'Radio Button': 'Radio knopf',
+ 'Dropdown': 'Runterfallen',
+ 'List Box': 'Listenfeld',
+ 'Signature': 'Unterschrift',
+ 'Delete FormField': 'Formular löschen',
+ 'Textbox Properties': 'Textbox -Eigenschaften',
+ 'Name': 'Name',
+ 'Tooltip': 'Tooltip',
+ 'Value': 'Wert',
+ 'Form Field Visibility': 'Sichtbarkeit von Feldwäschen',
+ 'Read Only': 'Schreibgeschützt',
+ 'Required': 'Erforderlich',
+ 'Checked': 'Geprüft',
+ 'Show Printing': 'Drucken zeigen',
+ 'Formatting': 'Format',
+ 'Fill': 'Füllen',
+ 'Border': 'Grenze',
+ 'Border Color': 'Randfarbe',
+ 'Thickness': 'Dicke',
+ 'Max Length': 'Maximale Länge',
+ 'List Item': 'Artikelname',
+ 'Export Value': 'Gegenstandswert',
+ 'Dropdown Item List': 'Dropdown -Elementliste',
+ 'List Box Item List': 'Listenfeldelementliste',
+ 'General': 'ALLGEMEIN',
+ 'Appearance': 'AUSSEHEN',
+ 'Options': 'OPTIONEN',
+ 'Delete Item': 'Löschen',
+ 'Up': 'Hoch',
+ 'Down': 'Runter',
+ 'Multiline': 'Multiline',
+ 'Revised': 'Überarbeitet',
+ 'Reviewed': 'Bewertet',
+ 'Received': 'Erhalten',
+ 'Confidential': 'Vertraulich',
+ 'Approved': 'Genehmigt',
+ 'Not Approved': 'Nicht bestätigt',
+ 'Witness': 'Zeuge',
+ 'Initial Here': 'Anfang hier',
+ 'Draft': 'Entwurf',
+ 'Final': 'Finale',
+ 'For Public Release': 'Für die Veröffentlichung',
+ 'Not For Public Release': 'Nicht für die Veröffentlichung',
+ 'For Comment': 'Für Kommentar',
+ 'Void': 'Leere',
+ 'Preliminary Results': 'Vorläufige Ergebnisse',
+ 'Information Only': 'Nur Informationen',
+ 'in': 'In',
+ 'm': 'M',
+ 'ft_in': 'ft_in',
+ 'ft': 'ft',
+ 'p': 'P',
+ 'cm': 'cm',
+ 'mm': 'mm',
+ 'pt': 'pt',
+ 'cu': 'cu',
+ 'sq': 'Quadrat',
+ 'Initial': 'Initiale',
+ 'Extract Pages': 'Extract Pages',
+ 'Delete Pages After Extracting': 'Delete Pages After Extracting',
+ 'Extract Pages As Separate Files': 'Extract Pages As Separate Files',
+ 'Extract': 'Extract',
+ 'Example: 1,3,5-12': 'Example: 1,3,5-12',
+ 'No matches': 'Der Viewer hat die Suche im Dokument abgeschlossen. ',
+ 'No Text Found': 'Kein Text gefunden'
+ }
+ }
+ });
+
+ pdfviewer.appendTo('#pdfViewer');
+{% 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.
+
+## See Also
+
+- [Default Language](./default-language)
+- [RTL Language Support](./rtl-language-support)
\ No newline at end of file
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
new file mode 100644
index 000000000..c71526109
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/Localization/rtl-language-support.md
@@ -0,0 +1,316 @@
+---
+layout: post
+title: RTL Localization in JavaScript ES5 PDF Viewer | Syncfusion
+description: Learn about the Localization and Right to Left Lanugage Support in Syncfusion JavaScript ES5 PDF Viewer component.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# RTL Language Support in JavaScript PDF Viewer
+
+RTL 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.
+
+
+
+## Example Code-snippet to Enable RTL with Arabic Localization
+
+Use the below code-snippet to enable RTL for RTL Languages(Arabic, Hebrew, Persian)
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.Print,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.PageOrganizer
+ );
+
+ var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib',
+ locale: 'ar-AE', //Using locale updates culture
+ enableRtl: true, //To enbale Right to Left rendering.
+ });
+
+ ej.base.L10n.load({
+ 'ar-AE': {
+ 'PdfViewer': {
+ 'PdfViewer': 'قوات الدفاع الشعبي المشاهد',
+ 'Cancel': 'إلغاء',
+ 'Download file': 'تحميل الملف',
+ 'Download': 'تحميل',
+ 'Enter Password': 'هذا المستند محمي بكلمة مرور. يرجى إدخال كلمة مرور.',
+ 'File Corrupted': 'ملف تالف',
+ 'File Corrupted Content': 'الملف تالف ولا يمكن فتحه.',
+ 'Fit Page': 'لائق بدنيا الصفحة',
+ 'Fit Width': 'لائق بدنيا عرض',
+ 'Automatic': 'تلقائي',
+ 'Go To First Page': 'عرض الصفحة الأولى',
+ 'Invalid Password': 'كلمة سر خاطئة. حاول مرة اخرى.',
+ 'Next Page': 'عرض الصفحة التالية',
+ 'OK': 'حسنا',
+ 'Open': 'فتح الملف',
+ 'Page Number': 'رقم الصفحة الحالية',
+ 'Previous Page': 'عرض الصفحة السابقة',
+ 'Go To Last Page': 'عرض الصفحة الأخيرة',
+ 'Zoom': 'تكبير',
+ 'Zoom In': 'تكبير في',
+ 'Zoom Out': 'تكبير خارج',
+ 'Page Thumbnails': 'مصغرات الصفحة',
+ 'Bookmarks': 'المرجعية',
+ 'Print': 'اطبع الملف',
+ 'Password Protected': 'كلمة المرور مطلوبة',
+ 'Copy': 'نسخ',
+ 'Text Selection': 'أداة اختيار النص',
+ 'Panning': 'وضع عموم',
+ 'Text Search': 'بحث عن نص',
+ 'Find in document': 'ابحث في المستند',
+ 'Match case': 'حالة مباراة',
+ 'Apply': 'تطبيق',
+ 'GoToPage': 'انتقل إلى صفحة',
+ 'No Matches': 'انتهى العارض من البحث في المستند. لم يتم العثور على مزيد من التطابقات',
+ 'No Text Found': 'لم يتم العثور على نص',
+ 'Undo': 'فك',
+ 'Redo': 'فعل ثانية',
+ 'Annotation': 'إضافة أو تعديل التعليقات التوضيحية',
+ 'Highlight': 'تسليط الضوء على النص',
+ 'Underline': 'تسطير النص',
+ 'Strikethrough': 'نص يتوسطه خط',
+ 'Delete': 'حذف التعليق التوضيحي',
+ 'Opacity': 'غموض',
+ 'Color edit': 'غير اللون',
+ 'Opacity edit': 'تغيير التعتيم',
+ 'highlight': 'تسليط الضوء',
+ 'underline': 'أكد',
+ 'strikethrough': 'يتوسطه',
+ // tslint:disable-next-line:max-line-length
+ 'Server error': 'خدمة الانترنت لا يستمع. يعتمد قوات الدفاع الشعبي المشاهد على خدمة الويب لجميع ميزاته. يرجى بدء خدمة الويب للمتابعة.',
+ 'Open text': 'افتح',
+ 'First text': 'الصفحة الأولى',
+ 'Previous text': 'الصفحة السابقة',
+ 'Next text': 'الصفحة التالية',
+ 'Last text': 'آخر صفحة',
+ 'Zoom in text': 'تكبير',
+ 'Zoom out text': 'تصغير',
+ 'Selection text': 'اختيار',
+ 'Pan text': 'مقلاة',
+ 'Print text': 'طباعة',
+ 'Search text': 'بحث',
+ 'Annotation Edit text': 'تحرير التعليق التوضيحي',
+ 'Line Thickness': 'سمك الخط',
+ 'Line Properties': 'خط الخصائص',
+ 'Start Arrow': 'ابدأ السهم',
+ 'End Arrow': 'نهاية السهم',
+ 'Line Style': 'أسلوب الخط',
+ 'Fill Color': 'ملء اللون',
+ 'Line Color': ' الخط اللون',
+ 'None': 'لا شيء',
+ 'Open Arrow': 'افتح',
+ 'Closed Arrow': 'مغلق',
+ 'Round Arrow': 'مستدير',
+ 'Square Arrow': 'مربع',
+ 'Diamond Arrow': 'الماس',
+ 'Cut': 'يقطع',
+ 'Paste': 'معجون',
+ 'Delete Context': 'حذف',
+ 'Properties': 'الخصائص',
+ 'Add Stamp': 'إضافة الطوابع',
+ 'Add Shapes': 'أضف الأشكال',
+ 'Stroke edit': 'تغيير لون السكتة الدماغية',
+ 'Change thickness': 'تغيير سمك الحدود',
+ 'Add line': 'إضافة خط',
+ 'Add arrow': 'سهم إضافة',
+ 'Add rectangle': 'أضف مستطيل',
+ 'Add circle': 'إضافة دائرة',
+ 'Add polygon': 'أضف مضلع',
+ 'Add Comments': 'أضف تعليقات',
+ 'Comments': 'تعليقات',
+ 'No Comments Yet': 'لا توجد تعليقات حتى الآن',
+ 'Accepted': 'وافقت',
+ 'Completed': 'منجز',
+ 'Cancelled': 'ألغيت',
+ 'Rejected': 'مرفوض',
+ 'Leader Length': 'زعيم الطول',
+ 'Scale Ratio': 'نسبة مقياس',
+ 'Calibrate': 'عاير',
+ 'Calibrate Distance': 'معايرة المسافة',
+ 'Calibrate Perimeter': 'معايرة محيط',
+ 'Calibrate Area': 'عاير منطقة',
+ 'Calibrate Radius': 'معايرة نصف القطر',
+ 'Calibrate Volume': 'معايرة الحجم',
+ 'Depth': 'عمق',
+ 'Closed': 'مغلق',
+ 'Round': 'مستدير',
+ 'Square': 'ميدان',
+ 'Diamond': 'الماس',
+ 'Edit': 'تصحيح',
+ 'Comment': 'تعليقات',
+ 'Comment Panel': 'لوحة التعليقات',
+ 'Set Status': 'تعيين الحالة',
+ 'Post': 'بريد',
+ 'Page': 'صفحة',
+ 'Add a comment': 'أضف تعليق',
+ 'Add a reply': 'أضف رد',
+ 'Import Annotations': 'استيراد التعليقات التوضيحية',
+ 'Export Annotations': 'شروح التصدير',
+ 'Add': 'أضف',
+ 'Clear': 'واضح',
+ 'Bold': 'بالخط العريض',
+ 'Italic': 'مائل',
+ 'Strikethroughs': 'يتوسطه',
+ 'Underlines': 'تحت الخط',
+ 'Superscript': 'حرف فوقي',
+ 'Subscript': 'الفرعية النصي',
+ 'Align left': 'محاذاة اليسار',
+ 'Align right': 'محاذاة اليمين',
+ 'Center': 'مركز',
+ 'Justify': 'برر',
+ 'Font color': 'لون الخط',
+ 'Text Align': 'محاذاة النص',
+ 'Text Properties': 'نوع الخط',
+ 'Draw Signature': 'ارسم التوقيع',
+ 'Create': 'خلق',
+ 'Font family': 'خط العائلة',
+ 'Font size': 'حجم الخط',
+ 'Free Text': 'نص حر',
+ 'Import Failed': 'نوع ملف سلمان أو اسم الملف غير صالح ؛ يرجى تحديد ملف سلمانصالح',
+ 'File not found': 'لم يتم العثور على ملف سلمان المستورد في الموقع المطلوب',
+ 'Export Failed': 'شل إجراء تصدير التعليقات التوضيحية ؛ يرجى التأكد من إضافة التعليقات التوضيحية بشكل صحيح',
+ 'Dynamic': 'متحرك',
+ 'Standard Business': 'الأعمال القياسية',
+ 'Sign Here': 'وقع هنا',
+ 'Custom Stamp': 'ختم مخصص',
+ 'InitialFieldDialogHeaderText': 'إضافة الأولية',
+ 'HandwrittenInitialDialogHeaderText': 'إضافة الأولية',
+ 'SignatureFieldDialogHeaderText': 'أضف التوقيع',
+ 'HandwrittenSignatureDialogHeaderText': 'أضف التوقيع',
+ 'Draw-hand Signature': 'يرسم',
+ 'Type Signature': 'نوع',
+ 'Upload Signature': 'تحميل',
+ 'Browse Signature Image': 'تصفح',
+ 'Save Signature': 'احفظ التوقيع',
+ 'Save Initial': 'حفظ الأولي',
+ 'Highlight context': 'تسليط الضوء',
+ 'Underline context': 'تسطير',
+ 'Strikethrough context': 'يتوسطه خط',
+ 'FormDesigner': 'إضافة وتحرير حقل النموذج',
+ 'SubmitForm': 'تقديم النموذج',
+ 'Search Text': 'بحث',
+ 'Draw Ink': 'ارسم الحبر',
+ 'Revised': 'مراجعة',
+ 'Reviewed': 'تمت المراجعة',
+ 'Received': 'تم الاستلام',
+ 'Confidential': 'مؤتمن',
+ 'Approved': 'وافق',
+ 'Not Approved': 'غير مقبول',
+ 'Witness': 'الشاهد',
+ 'Initial Here': 'المبدئي هنا',
+ 'Draft': 'مشروع',
+ 'Final': 'أخير',
+ 'For Public Release': 'للنشر العام',
+ 'Not For Public Release': 'ليس للنشر العام',
+ 'For Comment': 'للتعليق',
+ 'Void': 'فارغ',
+ 'Preliminary Results': 'نتائج اولية',
+ 'Information Only': 'المعلومات فقط',
+ 'Enter Signature as Name': 'أدخل أسمك',
+ 'Textbox': 'مربع الكتابة',
+ 'Password': 'كلمه السر',
+ 'Check Box': 'خانة اختيار',
+ 'Radio Button': 'زر الراديو',
+ 'Dropdown': 'اسقاط',
+ 'List Box': 'مربع القائمة',
+ 'Signature': 'إمضاء',
+ 'Delete FormField': 'حذف حقل النموذج',
+ 'FormDesigner Edit text': 'إضافة وتحرير حقل النموذج',
+ 'in': 'في',
+ 'm': 'م',
+ 'ft_in': 'قدم',
+ 'ft': 'قدم',
+ 'p': 'ص',
+ 'cm': 'سم',
+ 'mm': 'مم',
+ 'pt': 'نقطة',
+ 'cu': 'مكعب',
+ 'sq': 'قدم مربع',
+ 'General': 'جنرال لواء',
+ 'Appearance': 'مظهر خارجي',
+ 'Options': 'والخيارات',
+ 'Textbox Properties': 'خصائص مربع النص',
+ 'Name': 'اسم',
+ 'Tooltip': 'تلميح',
+ 'Value': 'القيمة',
+ 'Form Field Visibility': 'رؤية حقل النموذج',
+ 'Read Only': 'يقرأ فقط',
+ 'Required': 'مطلوب',
+ 'Checked': 'التحقق',
+ 'Show Printing': 'عرض الطباعة',
+ 'Formatting': 'صيغة',
+ 'Fill': 'يملأ',
+ 'Border': 'الحدود',
+ 'Border Color': 'لون الحدود',
+ 'Thickness': 'السماكة',
+ 'Max Length': 'الحد الاقصى للطول',
+ 'List Item': 'اسم العنصر',
+ 'Export Value': 'قيمة البند',
+ 'Dropdown Item List': 'قائمة العناصر المنسدلة',
+ 'List Box Item List': 'قائمة عناصر مربع القائمة',
+ 'Delete Item': 'حذف',
+ 'Up': 'فوق',
+ 'Down': 'تحت',
+ 'Multiline': 'متعدد الأسطر',
+ 'Initial': 'أولي',
+ 'Export XFDF': 'تصدير التعليق التوضيحي إلى ملف XFDF',
+ 'Import XFDF': 'استيراد التعليقات التوضيحية من ملف XFDF',
+ 'Organize Pages': 'تنظيم الصفحات',
+ 'Insert Right': 'أدخل الحق',
+ 'Insert Left': 'أدخل اليسار',
+ 'Total': 'المجموع',
+ 'Pages': 'الصفحات',
+ 'Rotate Right': 'تدوير لليمين',
+ 'Rotate Left': 'استدر يسارا',
+ 'Delete Page': 'حذف الصفحة',
+ 'Delete Pages': 'حذف الصفحات',
+ 'Copy Page': 'انسخ الصفحة',
+ 'Copy Pages': 'نسخ الصفحات',
+ 'Save': 'يحفظ',
+ 'Save As': 'حفظ باسم',
+ 'Select All': 'اختر الكل',
+ 'Import Document': 'استيراد المستند',
+ 'Match any word': 'تطابق أي كلمة',
+ 'Client error': 'تم العثور على خطأ في جانب العميل. يرجى التحقق من رؤوس Ajax المخصصة في خاصية AjaxRequestSettings وطرق الويب في خاصية ServerActionSettings',
+ 'Cors policy error': 'تعذر استرداد المستند بسبب عنوان URL غير صالح أو قيود على الوصول. يرجى التحقق من عنوان URL للمستند والمحاولة مرة أخرى',
+ 'No More Matches': 'انتهى العارض من البحث في المستند. لم يتم العثور على تطابقات أخرى',
+ 'No Search Matches': 'لم يتم العثور على تطابقات',
+ 'No More Search Matches': 'لم يتم العثور على تطابقات أخرى',
+ 'Exact Matches': 'تطابقات دقيقة',
+ 'Total Matches': 'إجمالي التطابقات'
+ }
+ }
+ });
+
+ pdfviewer.appendTo('#pdfViewer');
+{% 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.
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples)
+
+## See Also
+
+- [Default Language](./default-language)
+- [New Language](./new-language)
\ No newline at end of file
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 fb0528a9a..0a732025b 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
@@ -35,11 +35,11 @@ The PDF Viewer component triggers various events based on user interactions and
### annotationAdd
-The [annotationAdd](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/#annotationaddevent) event is triggered when an annotation is added to a PDF document's page.
+The [annotationAdd](https://ej2.syncfusion.com/javascript/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/javascript/documentation/api/pdfviewer/annotationAddEventArgs/). It provides properties such as `annotationId`, `pageNumber`, `annotationType`, and `bounds`.
+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.
@@ -80,11 +80,11 @@ viewer.appendTo('#pdfViewer');
### annotationDoubleClick
-The [annotationDoubleClick](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/#annotationdoubleclickevent) event is triggered when an annotation is double-clicked.
+The [annotationDoubleClick](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer#annotationdoubleclickevent) event is triggered when an annotation is double-clicked.
#### Event Arguments
-For event data, see [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.
@@ -128,11 +128,11 @@ viewer.appendTo('#pdfViewer');
### annotationMouseLeave
-The [annotationMouseLeave](https://ej2.syncfusion.com/javascript/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/javascript/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/javascript/documentation/api/pdfviewer/annotationMouseLeaveEventArgs/).
+For event data, see [AnnotationMouseLeaveEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationMouseLeaveEventArgs).
The following example illustrates how to handle the `annotationMouseLeave` event.
@@ -176,11 +176,11 @@ viewer.appendTo('#pdfViewer');
### annotationMouseover
-The [annotationMouseover](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/#annotationmouseoverevent) event is triggered when the mouse is moved over an annotation object.
+The [annotationMouseover](https://ej2.syncfusion.com/javascript/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/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.
@@ -224,11 +224,11 @@ viewer.appendTo('#pdfViewer');
### annotationMove
-The [annotationMove](https://ej2.syncfusion.com/javascript/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/javascript/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/javascript/documentation/api/pdfviewer/annotationMoveEventArgs/).
+For event data, see [AnnotationMoveEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationMoveEventArgs).
The following example illustrates how to handle the `annotationMove` event.
@@ -272,11 +272,11 @@ viewer.appendTo('#pdfViewer');
### annotationMoving
-The [annotationMoving](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/#annotationmovingevent) event is triggered while an annotation is being moved.
+The [annotationMoving](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer#annotationmovingevent) event is triggered while an annotation is being moved.
#### Event Arguments
-For event data, see [AnnotationMovingEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationMovingEventArgs/).
+For event data, see [AnnotationMovingEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationMovingEventArgs).
The following example illustrates how to handle the `annotationMoving` event.
@@ -320,11 +320,11 @@ viewer.appendTo('#pdfViewer');
### annotationPropertiesChange
-The [annotationPropertiesChange](https://ej2.syncfusion.com/javascript/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/javascript/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/javascript/documentation/api/pdfviewer/annotationPropertiesChangeEventArgs/). It provides properties such as `annotationId`, `pageNumber`, and `action`.
+For event data, see [AnnotationPropertiesChangeEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationPropertiesChangeEventArgs). It provides properties such as `annotationId`, `pageNumber`, and `action`.
The following example illustrates how to handle the `annotationPropertiesChange` event.
@@ -369,11 +369,11 @@ viewer.appendTo('#pdfViewer');
### annotationRemove
-The [annotationRemove](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/#annotationremoveevent) event is triggered when an annotation is removed from a PDF document's page.
+The [annotationRemove](https://ej2.syncfusion.com/javascript/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/javascript/documentation/api/pdfviewer/annotationRemoveEventArgs/). It provides properties such as `annotationId` and `pageNumber`.
+For event data, see [AnnotationRemoveEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationRemoveEventArgs). It provides properties such as `annotationId` and `pageNumber`.
The following example illustrates how to handle the `annotationRemove` event.
@@ -417,11 +417,11 @@ viewer.appendTo('#pdfViewer');
### annotationResize
-The [annotationResize](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/#annotationresizeevent) event is triggered when an annotation is resized on a PDF document page.
+The [annotationResize](https://ej2.syncfusion.com/javascript/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/javascript/documentation/api/pdfviewer/annotationResizeEventArgs/).
+For event data, see [AnnotationResizeEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationResizeEventArgs).
The following example illustrates how to handle the `annotationResize` event.
@@ -465,11 +465,11 @@ viewer.appendTo('#pdfViewer');
### annotationSelect
-The [annotationSelect](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/#annotationselectevent) event is triggered when an annotation is selected on a PDF document's page.
+The [annotationSelect](https://ej2.syncfusion.com/javascript/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/javascript/documentation/api/pdfviewer/annotationSelectEventArgs/).
+For event data, see [AnnotationSelectEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationSelectEventArgs).
The following example illustrates how to handle the `annotationSelect` event.
@@ -513,11 +513,11 @@ viewer.appendTo('#pdfViewer');
### annotationUnselect
-The [annotationUnselect](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/#annotationunselectevent) event is triggered when an annotation is unselected from the PDF document's page.
+The [annotationUnselect](https://ej2.syncfusion.com/javascript/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/javascript/documentation/api/pdfviewer/annotationUnSelectEventArgs/).
+For event data, see [AnnotationUnSelectEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationUnSelectEventArgs).
The following example illustrates how to handle the `annotationUnselect` event.
@@ -561,11 +561,11 @@ viewer.appendTo('#pdfViewer');
### beforeAddFreeText
-The [beforeAddFreeText](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/#beforeaddfreetextevent) event is triggered before adding a text in the freeText annotation.
+The [beforeAddFreeText](https://ej2.syncfusion.com/javascript/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/javascript/documentation/api/pdfviewer/beforeAddFreeTextEventArgs/).
+For event data, see [BeforeAddFreeTextEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/beforeAddFreeTextEventArgs).
The following example illustrates how to handle the `beforeAddFreeText` event.
@@ -613,11 +613,11 @@ viewer.appendTo('#pdfViewer');
### addSignature
-The [addSignature](https://ej2.syncfusion.com/javascript/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/javascript/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/javascript/documentation/api/pdfviewer/addSignatureEventArgs/). It provides properties such as `pageNumber`.
+For event data, see [AddSignatureEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/addSignatureEventArgs). It provides properties such as `pageNumber`.
The following example illustrates how to handle the `addSignature` event.
@@ -661,11 +661,11 @@ viewer.appendTo('#pdfViewer');
### removeSignature
-The [removeSignature](https://ej2.syncfusion.com/javascript/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/javascript/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/javascript/documentation/api/pdfviewer/removeSignatureEventArgs/). It provides properties such as `pageNumber`.
+For event data, see [RemoveSignatureEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/removeSignatureEventArgs). It provides properties such as `pageNumber`.
The following example illustrates how to handle the `removeSignature` event.
@@ -709,11 +709,11 @@ viewer.appendTo('#pdfViewer');
### resizeSignature
-The [resizeSignature](https://ej2.syncfusion.com/javascript/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/javascript/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/javascript/documentation/api/pdfviewer/resizeSignatureEventArgs/).
+For event data, see [ResizeSignatureEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/resizeSignatureEventArgs).
The following example illustrates how to handle the `resizeSignature` event.
@@ -757,11 +757,11 @@ viewer.appendTo('#pdfViewer');
### signaturePropertiesChange
-The [signaturePropertiesChange](https://ej2.syncfusion.com/javascript/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/javascript/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/javascript/documentation/api/pdfviewer/signaturePropertiesChangeEventArgs/).
+For event data, see [SignaturePropertiesChangeEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/signaturePropertiesChangeEventArgs).
The following example illustrates how to handle the `signaturePropertiesChange` event.
@@ -805,11 +805,11 @@ viewer.appendTo('#pdfViewer');
### signatureSelect
-The [signatureSelect](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/#signatureselectevent) event is triggered when signature is selected over the page of the PDF document.
+The [signatureSelect](https://ej2.syncfusion.com/javascript/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/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.
@@ -853,11 +853,11 @@ viewer.appendTo('#pdfViewer');
### signatureUnselect
-The [signatureUnselect](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/#signatureunselectevent) event is triggered when signature is unselected over the page of the PDF document.
+The [signatureUnselect](https://ej2.syncfusion.com/javascript/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/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.
@@ -898,3 +898,17 @@ var viewer = new ej.pdfviewer.PdfViewer({
});
viewer.appendTo('#pdfViewer');
```
+
+## 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 API](../annotations/annotations-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/area-annot.png b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/area-annot.png
new file mode 100644
index 000000000..5974cf3bc
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/area-annot.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/arrow-annot.png b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/arrow-annot.png
new file mode 100644
index 000000000..c85e14482
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/arrow-annot.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/circle-annot.png b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/circle-annot.png
new file mode 100644
index 000000000..25eb71e63
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/circle-annot.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/delete-annot-context-menu.png b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/delete-annot-context-menu.png
new file mode 100644
index 000000000..7a622d4ac
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/delete-annot-context-menu.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/delete-annot.png b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/delete-annot.png
new file mode 100644
index 000000000..11a148f2f
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/delete-annot.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/distance-annot.png b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/distance-annot.png
new file mode 100644
index 000000000..9adddffc2
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/distance-annot.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/export-annot.png b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/export-annot.png
new file mode 100644
index 000000000..9ad0f027e
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/export-annot.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/free-text-annot.png b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/free-text-annot.png
new file mode 100644
index 000000000..9b5ab0fb6
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/free-text-annot.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/import-annot.png b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/import-annot.png
new file mode 100644
index 000000000..8921a81c3
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/import-annot.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/line-annot.png b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/line-annot.png
new file mode 100644
index 000000000..691212636
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/line-annot.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/perimeter-annot.png b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/perimeter-annot.png
new file mode 100644
index 000000000..6f97c31e0
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/perimeter-annot.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/polygon-annot.png b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/polygon-annot.png
new file mode 100644
index 000000000..38318eaf6
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/polygon-annot.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/radius-annot.png b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/radius-annot.png
new file mode 100644
index 000000000..b04dcfbee
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/radius-annot.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/rect-annot.png b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/rect-annot.png
new file mode 100644
index 000000000..36e5305f9
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/rect-annot.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/volume-annot.png b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/volume-annot.png
new file mode 100644
index 000000000..21387faca
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-images/volume-annot.png differ
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
new file mode 100644
index 000000000..86e3b1cc9
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-permission.md
@@ -0,0 +1,140 @@
+---
+layout: post
+title: Annotations Permission in JavaScript PDF Viewer | Syncfusion
+description: Learn how to use annotation permissions in Syncfusion JavaScript PDF Viewer using programmatic APIs.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+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.
+
+## 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.
+
+```js
+// Ensure you have included the required EJ2 PDF Viewer scripts and styles via CDN before this script
+// Example CDN: https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2.min.js and corresponding CSS
+
+// Inject required modules
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.Print,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner
+);
+
+// Create viewer instance
+var viewer = new ej.pdfviewer.PdfViewer();
+viewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+viewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+
+// Default annotation settings applied to annotations created via the UI
+viewer.annotationSettings = {
+ author: 'XYZ',
+ minHeight: 10,
+ minWidth: 10,
+ maxWidth: 100,
+ maxHeight: 100,
+ isLock: false, // allow moving/resizing/editing by default
+ skipPrint: false, // include annotations when printing the document
+ skipDownload: false, // include annotations when downloading/exporting the document
+ allowedInteractions: [ej.pdfviewer.AllowedInteraction.Resize]
+};
+
+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.
+
+```js
+// Ensure you have included the required EJ2 PDF Viewer scripts and styles via CDN before this script
+// Example CDN: https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2.min.js and corresponding CSS
+
+// Inject required modules
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.FormFields
+);
+
+// Create viewer instance with settings
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib',
+
+ // Text markup defaults
+ highlightSettings: { author: 'QA', subject: 'Review', color: '#ffff00', opacity: 0.6 },
+ strikethroughSettings: { author: 'QA', subject: 'Remove', color: '#ff0000', opacity: 0.6 },
+ underlineSettings: { author: 'Guest User', subject: 'Points to be remembered', color: '#00ffff', opacity: 0.9 },
+ squigglySettings: { author: 'Guest User', subject: 'Corrections', color: '#00ff00', opacity: 0.9 },
+
+ // Shapes
+ lineSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, isLock: false, isPrint: true },
+ arrowSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, isLock: false, isPrint: true },
+ rectangleSettings: { fillColor: '#ffffff00', strokeColor: '#222222', thickness: 1, opacity: 1, isLock: false, isPrint: true },
+ circleSettings: { fillColor: '#ffffff00', strokeColor: '#222222', thickness: 1, opacity: 1, isLock: false, isPrint: true },
+ polygonSettings: { fillColor: '#ffffff00', strokeColor: '#222222', thickness: 1, opacity: 1, isLock: false, isPrint: true },
+
+ // Measurements
+ distanceSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, isLock: false, isPrint: true },
+ perimeterSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, isLock: false, isPrint: true },
+ areaSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, fillColor: '#ffffff00', isLock: false, isPrint: true },
+ radiusSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, fillColor: '#ffffff00', isLock: false, isPrint: true },
+ volumeSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, fillColor: '#ffffff00', isLock: false, isPrint: true },
+
+ // Others
+ freeTextSettings: { borderColor: '#222222', opacity: 1, isLock: false, isPrint: true },
+ inkAnnotationSettings: { strokeColor: '#0000ff', thickness: 3, opacity: 0.8, isLock: false, isPrint: true },
+ stampSettings: { opacity: 0.9, isLock: false, isPrint: true },
+ stickyNotesSettings: { author: 'QA', subject: 'Review', opacity: 1, isLock: false, isPrint: true }
+});
+
+pdfviewer.appendTo('#PdfViewer');
+```
+
+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/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 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)
\ No newline at end of file
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
new file mode 100644
index 000000000..43ba1a4f5
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/Squiggly-annotation.md
@@ -0,0 +1,481 @@
+---
+layout: post
+title: Squiggly annotation in JavaScript PDF Viewer | Syncfusion
+description: Learn to add, edit, delete, and customize Squiggly text markup annotations in Syncfusion JavaScript PDF Viewer, with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Squiggly annotation in JavaScript PDF Viewer
+
+The PDF Viewer provides options to add, edit, and delete Squiggly text markup annotations on text. You can add squiggles via the UI (context menu or annotation toolbar) and programmatically. You can also customize color, opacity, author/subject, and default settings, and use undo/redo, save, print, or disable them as needed.
+
+
+
+## Add Squiggly Annotation
+
+### Add squiggly annotation in UI
+
+You can add squiggly annotations in two ways:
+
+1. Using the context menu
+* Select text in the PDF document and right-click it.
+* Choose **Squiggly** in the context menu.
+
+
+
+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**.
+
+
+
+N> When in pan mode, selecting a text markup annotation switches the PDF Viewer to text select mode.
+
+### Enable Squiggly Mode
+
+Enable/exit squiggly mode using the following code:
+
+```html
+
+
+```
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('squigglyMode').addEventListener('click', function () {
+ pdfviewer.annotation.setAnnotationMode('Squiggly');
+});
+
+document.getElementById('setNone').addEventListener('click', function () {
+ pdfviewer.annotation.setAnnotationMode('None');
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var 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');
+
+document.getElementById('squigglyMode').addEventListener('click', function () {
+ pdfviewer.annotation.setAnnotationMode('Squiggly');
+});
+
+document.getElementById('setNone').addEventListener('click', function () {
+ pdfviewer.annotation.setAnnotationMode('None');
+});
+{% endhighlight %}
+{% endtabs %}
+
+### Add squiggly annotation programmatically
+
+Add squiggly annotations programmatically using the [addAnnotation](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#addannotation) method.
+
+```html
+
+```
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addSquiggly').addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Squiggly', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1
+ });
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var 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');
+
+document.getElementById('addSquiggly').addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Squiggly', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1
+ });
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Edit Squiggly Annotation
+
+### Edit squiggly annotation in UI
+
+You can select and delete squiggly annotations directly in the viewer. Use the context menu or toolbar options as needed.
+
+Delete the selected annotation in the following ways:
+
+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.
+
+
+
+#### 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.
+
+- 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.
+
+
+
+### Edit a squiggly annotation programmatically
+
+To modify an existing squiggly annotation programmatically, use the editAnnotation() method.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('editSquiggly').addEventListener('click', function () {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ var ann = pdfviewer.annotationCollection[i];
+ if (ann.author === 'Guest User' || ann.subject === 'Corrections') {
+ ann.color = '#ff0000';
+ ann.opacity = 0.8;
+ pdfviewer.annotation.editAnnotation(ann);
+ }
+ }
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var 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');
+
+document.getElementById('editSquiggly').addEventListener('click', function () {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ var ann = pdfviewer.annotationCollection[i];
+ if (ann.author === 'Guest User' || ann.subject === 'Corrections') {
+ ann.color = '#ff0000';
+ ann.opacity = 0.8;
+ pdfviewer.annotation.editAnnotation(ann);
+ }
+ }
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Set default properties during control initialization
+
+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.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.Annotation
+);
+
+var pdfviewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ squigglySettings: { author: 'Guest User', subject: 'Corrections', color: '#00ff00', opacity: 0.9}
+});
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.Annotation
+);
+
+var pdfviewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ squigglySettings: { author: 'Guest User', subject: 'Corrections', color: '#00ff00', opacity: 0.9}
+});
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation 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.
+
+Refer to the following code snippet to set the default highlight settings.
+
+```html
+
+```
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+//Apply Squiggly Settings while adding individual Annotation
+document.getElementById('squiggly')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Squiggly', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1,
+ author: 'User 1',
+ color: '#ffff00',
+ opacity: 0.9
+ });
+
+ pdfviewer.annotation.addAnnotation('Squiggly', {
+ bounds: [{ x: 107, y: 220, width: 350, height: 14 }],
+ pageNumber: 1,
+ author: 'User 2',
+ color: '#ff1010ff',
+ opacity: 0.9
+ });
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+
+//Apply Squiggly Settings while adding individual Annotation
+document.getElementById('squiggly')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Squiggly', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1,
+ author: 'User 1',
+ color: '#ffff00',
+ opacity: 0.9
+ });
+
+ pdfviewer.annotation.addAnnotation('Squiggly', {
+ bounds: [{ x: 107, y: 220, width: 350, height: 14 }],
+ pageNumber: 1,
+ author: 'User 2',
+ color: '#ff1010ff',
+ opacity: 0.9
+ });
+});
+{% endhighlight %}
+{% endtabs %}
+
+
+## Disable squiggly annotation
+
+Disable text markup annotations (including squiggly) using the `enableTextMarkupAnnotation` property.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.Annotation
+);
+
+var pdfviewer = new PdfViewer({ documentPath:'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf', enableTextMarkupAnnotation: false });
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.Annotation
+);
+
+var pdfviewer = new PdfViewer({ documentPath:'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf', enableTextMarkupAnnotation: false });
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../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/javascript-es5/annotations/annotation-types/area-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/area-annotation.md
new file mode 100644
index 000000000..92424415c
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/area-annotation.md
@@ -0,0 +1,516 @@
+---
+layout: post
+title: Area annotation in JavaScript PDF Viewer | Syncfusion
+description: Learn to add, edit, and customize Area measurement annotations in Syncfusion JavaScript PDF Viewer with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Area annotation in JavaScript PDF Viewer
+
+Area is a measurement annotation used to measure the surface of a closed region in the PDF.
+
+
+
+## Add Area Annotation
+
+### Add area annotation via UI
+
+Use the annotation toolbar:
+- Click the **Edit Annotation** button in the PDF Viewer toolbar.
+- Click the **Measurement Annotation** dropdown.
+- Choose **Area**, then draw the region on the page.
+
+N> When in pan mode, selecting a measurement annotation switches the viewer to text select mode.
+
+
+
+### Enable area mode
+
+The PDF Viewer library allows drawing measurement annotations programmatically after enabling area mode in button clicks.
+
+```html
+
+```
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('areaMode').addEventListener('click', function () {
+ pdfviewer.annotationModule.setAnnotationMode('Area');
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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');
+
+document.getElementById('areaMode').addEventListener('click', function () {
+ pdfviewer.annotationModule.setAnnotationMode('Area');
+});
+{% endhighlight %}
+{% endtabs %}
+
+### Add an area annotation programmatically
+
+The PDF Viewer library allows adding measurement annotations programmatically using the [addAnnotation()](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#annotation) method.
+
+```html
+
+```
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addAreaAnnotation').addEventListener('click', function () {
+ pdfviewer.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 }
+ ]
+ });
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addAreaAnnotation').addEventListener('click', function () {
+ pdfviewer.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 }
+ ]
+ });
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Edit Area Annotation
+
+### Edit Area Annotation in UI
+
+You can select, move, and resize Area annotations directly in the viewer:
+- Select an Area 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.
+
+See the sections below for screenshots and details.
+
+#### Edit the properties of area 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.
+
+#### 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
+
+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 an existing area annotation programmatically
+
+To modify an existing area annotation programmatically, use the editAnnotation() method.
+
+Here is an example of using editAnnotation():
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+var editAreaAnnotation = document.getElementById('editAreaAnnotation');
+if (editAreaAnnotation) {
+ editAreaAnnotation.addEventListener('click', function () {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === "Area calculation") {
+ pdfviewer.annotationCollection[i].annotationSelectorSettings.resizerShape = "Circle";
+ pdfviewer.annotationCollection[i].strokeColor = "#0000FF";
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].fillColor = "#FFFF00";
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+ });
+}
+
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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');
+
+var editAreaAnnotation = document.getElementById('editAreaAnnotation');
+if (editAreaAnnotation) {
+ editAreaAnnotation.addEventListener('click', function () {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === "Area calculation") {
+ pdfviewer.annotationCollection[i].annotationSelectorSettings.resizerShape = "Circle";
+ pdfviewer.annotationCollection[i].strokeColor = "#0000FF";
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].fillColor = "#FFFF00";
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+ });
+}
+
+{% endhighlight %}
+{% endtabs %}
+
+## Default area settings during initialization
+
+Set default [areaSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#areasettings) before creating the control.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+
+pdfviewer.areaSettings = { fillColor: 'yellow', opacity: 0.6, strokeColor: 'orange' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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.areaSettings = { fillColor: 'yellow', opacity: 0.6, strokeColor: 'orange' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation 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.
+
+Refer to the following code snippet to set the default Area settings.
+
+```html
+
+```
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+// Apply Area settings while adding individual annotation
+document.getElementById('Area')?.addEventListener('click', function () {
+ pdfviewer.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 }
+ ],
+ fillColor: 'yellow',
+ opacity: 0.6,
+ strokeColor: 'orange'
+ });
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.appendTo('#PdfViewer');
+// Apply Area settings while adding individual annotation
+document.getElementById('Area')?.addEventListener('click', function () {
+ pdfviewer.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 }
+ ],
+ fillColor: 'yellow',
+ opacity: 0.6,
+ strokeColor: 'orange'
+ });
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Editing scale ratio and unit of the area measurement annotation
+
+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
+
+* Inch
+* Millimeter
+* Centimeter
+* Point
+* Pica
+* Feet
+
+
+
+## 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,
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.measurementSettings = { scaleRatio: 2, conversionUnit: 'cm', displayUnit: 'cm' };
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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.measurementSettings = { scaleRatio: 2, conversionUnit: 'cm', displayUnit: 'cm' };
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../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)
\ No newline at end of file
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
new file mode 100644
index 000000000..c8016a52a
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/arrow-annotation.md
@@ -0,0 +1,433 @@
+---
+layout: post
+title: Arrow annotation in JavaScript PDF Viewer | Syncfusion
+description: Learn to add, edit, and customize Arrow annotations in Syncfusion JavaScript PDF Viewer with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Arrow annotation in JavaScript PDF Viewer
+
+Arrow is a shape annotation used to point, direct attention, or indicate flow. Common use cases include callouts, direction markers, and connectors in technical reviews.
+
+
+
+## Add Arrow Annotation
+
+### Add arrow annotation via UI
+
+Use the annotation toolbar:
+- Click the **Edit Annotation** button in the PDF Viewer toolbar.
+- 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.
+
+
+
+### Enable arrow mode
+
+The PDF Viewer library allows drawing shape annotations programmatically after enabling arrow mode in button clicks.
+
+```html
+
+```
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('arrowMode').addEventListener('click', function() {
+ pdfviewer.annotationModule.setAnnotationMode('Arrow');
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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');
+
+document.getElementById('arrowMode').addEventListener('click', function() {
+ pdfviewer.annotationModule.setAnnotationMode('Arrow');
+});
+{% endhighlight %}
+{% endtabs %}
+
+### Add an arrow annotation programmatically
+
+The PDF Viewer library allows adding shape annotations programmatically using the [addAnnotation()](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#annotation) method.
+
+```html
+
+```
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addArrowAnnotation').addEventListener('click', function() {
+ pdfviewer.annotation.addAnnotation('Arrow', {
+ offset: { x: 200, y: 370 },
+ pageNumber: 1,
+ vertexPoints: [{ x: 200, y: 370 }, { x: 350, y: 370 }]
+ });
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addArrowAnnotation').addEventListener('click', function() {
+ pdfviewer.annotation.addAnnotation('Arrow', {
+ offset: { x: 200, y: 370 },
+ pageNumber: 1,
+ vertexPoints: [{ x: 200, y: 370 }, { x: 350, y: 370 }]
+ });
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Edit Arrow Annotation
+
+### Edit arrow annotation in UI
+
+You can select, move, and resize Arrow annotations directly in the viewer:
+- Select an Arrow to show its handles.
+- Move: drag inside the shape to reposition it on the page.
+- Resize/reshape: drag start/end handles to adjust its length and direction.
+- Delete or access more options from the context menu.
+
+#### Editing the properties of the arrow annotation
+
+The fill color, stroke color, thickness, and opacity of arrow shape annotations can be edited using the Edit Color, Edit Stroke Color, Edit Thickness, and Edit Opacity tools in the annotation toolbar.
+
+##### Editing fill color
+
+The fill color of the annotation can be edited using the color palette provided in the Edit Color tool.
+
+
+
+#### Editing stroke color
+
+The stroke color of the annotation can be edited using the color palette provided in the Edit Stroke Color tool.
+
+
+
+#### Editing thickness
+
+The thickness of the border of the annotation can be edited using the range slider provided in the Edit Thickness tool.
+
+
+
+#### Editing opacity
+
+The opacity of the annotation can be edited using the range slider provided in the Edit Opacity tool.
+
+
+
+#### Editing the line properties
+
+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.
+
+
+
+### Edit an existing arrow annotation programmatically
+
+To modify an existing arrow annotation programmatically, use the editAnnotation() method.
+
+Here is an example of using editAnnotation():
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('editArrowAnnotation').addEventListener('click', function() {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Arrow') {
+ pdfviewer.annotationCollection[i].annotationSelectorSettings.resizerShape = 'Circle';
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].fillColor = '#FFFF00';
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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');
+
+document.getElementById('editArrowAnnotation').addEventListener('click', function() {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Arrow') {
+ pdfviewer.annotationCollection[i].annotationSelectorSettings.resizerShape = 'Circle';
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].fillColor = '#FFFF00';
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Default arrow settings during initialization
+
+Set default [arrowSettings](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#arrowsettings) before creating the control.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+
+pdfviewer.arrowSettings = { fillColor: 'green', opacity: 0.6, strokeColor: 'blue' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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.arrowSettings = { fillColor: 'green', opacity: 0.6, strokeColor: 'blue' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation 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.
+
+Refer to the following code snippet to set the default arrow settings.
+
+```html
+
+```
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+//Apply Arrow Settings while adding individual Annotation
+document.getElementById('arrow')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Arrow', {
+ offset: { x: 200, y: 230 },
+ pageNumber: 1,
+ vertexPoints: [{ x: 200, y: 230 }, { x: 350, y: 230 }],
+ fillColor: '#ff1010ff',
+ strokeColor: '#fff000',
+ opacity: 0.9,
+ author: 'User 1',
+ thickness: 1
+ });
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+//Apply Arrow Settings while adding individual Annotation
+document.getElementById('arrow').addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Arrow', {
+ offset: { x: 200, y: 230 },
+ pageNumber: 1,
+ vertexPoints: [{ x: 200, y: 230 }, { x: 350, y: 230 }],
+ fillColor: '#ff1010ff',
+ strokeColor: '#fff000',
+ opacity: 0.9,
+ author: 'User 1',
+ thickness: 1
+ });
+});
+{% 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.
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../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)
\ No newline at end of file
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
new file mode 100644
index 000000000..4e1a6d8aa
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/circle-annotation.md
@@ -0,0 +1,446 @@
+---
+layout: post
+title: Circle annotation in JavaScript PDF Viewer | Syncfusion
+description: Learn to add, edit, and customize Circle annotations in Syncfusion JavaScript PDF Viewer with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Circle annotation in JavaScript PDF Viewer
+
+Circle is a shape annotation used to highlight circular regions or draw emphasis bubbles.
+
+
+
+## Add Circle Annotation
+
+### Add circle annotation via UI
+
+Use the annotation toolbar:
+- Click the **Edit Annotation** button in the PDF Viewer toolbar.
+- Open the **Shape Annotation** dropdown.
+- Choose **Circle**, then draw on the page.
+
+N> When in pan mode, selecting a shape annotation switches the viewer to text select mode.
+
+
+
+### Enable circle mode
+
+The PDF Viewer library allows drawing Circle annotations programmatically after enabling Circle mode in button clicks.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('circleMode').addEventListener('click', function () {
+ pdfviewer.annotationModule.setAnnotationMode('Circle');
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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');
+
+document.getElementById('circleMode').addEventListener('click', function () {
+ pdfviewer.annotationModule.setAnnotationMode('Circle');
+});
+{% endhighlight %}
+{% endtabs %}
+
+#### Exit circle mode
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Common" %}
+var setNone = document.getElementById('setNone');
+if (setNone) {
+ setNone.addEventListener('click', function () {
+ pdfviewer.annotationModule.setAnnotationMode('None');
+ });
+}
+{% endhighlight %}
+{% endtabs %}
+
+### Add a circle annotation programmatically
+
+Add shape annotations programmatically using the [addAnnotation()](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#annotation) method.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addCircleAnnotation').addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Circle', {
+ offset: { x: 200, y: 620 },
+ pageNumber: 1,
+ width: 90,
+ height: 90
+ });
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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');
+
+document.getElementById('addCircleAnnotation').addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Circle', {
+ offset: { x: 200, y: 620 },
+ pageNumber: 1,
+ width: 90,
+ height: 90
+ });
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Edit Circle Annotation
+
+### Edit circle annotation in UI
+
+You can select, move, and resize Circle annotations directly in the viewer:
+- Select a Circle to show its handles.
+- Move: drag inside the shape to reposition it on the page.
+- Resize: drag the corner handles to adjust its diameter.
+- Delete or access more options from the context menu.
+
+#### Editing the properties of the circle annotation
+
+The fill color, stroke color, thickness, and opacity of circle shape annotations can be edited using the Edit Color, Edit Stroke Color, Edit Thickness, and Edit Opacity tools in the annotation toolbar.
+
+##### Editing fill color
+
+The fill color of the annotation can be edited using the color palette provided in the Edit Color tool.
+
+
+
+##### Editing stroke color
+
+The stroke color of the annotation can be edited using the color palette provided in the Edit Stroke Color tool.
+
+
+
+##### Editing thickness
+
+The thickness of the border of the annotation can be edited using the range slider provided in the Edit Thickness tool.
+
+
+
+##### Editing opacity
+
+The opacity of the annotation can be edited using the range slider provided in the Edit Opacity tool.
+
+
+
+### Edit an existing circle annotation programmatically
+
+Use editAnnotation on items from annotationCollection.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+var editCircleAnnotation = document.getElementById('editCircleAnnotation');
+if (editCircleAnnotation) {
+ editCircleAnnotation.addEventListener('click', function () {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Circle') {
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].fillColor = '#FFFF00';
+ pdfviewer.annotationCollection[i].annotationSelectorSettings.resizerShape = 'Circle';
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+ });
+}
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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');
+
+var editCircleAnnotation = document.getElementById('editCircleAnnotation');
+if (editCircleAnnotation) {
+ editCircleAnnotation.addEventListener('click', function () {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Circle') {
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].fillColor = '#FFFF00';
+ pdfviewer.annotationCollection[i].annotationSelectorSettings.resizerShape = 'Circle';
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+ });
+}
+{% endhighlight %}
+{% endtabs %}
+
+## Default circle settings during initialization
+
+Set default [circleSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#circlesettings) before creating the control.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.circleSettings = { fillColor: 'orange', opacity: 0.6, strokeColor: 'pink' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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.circleSettings = { fillColor: 'orange', opacity: 0.6, strokeColor: 'pink' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation 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.
+
+Refer to the following code snippet to set the default Circle settings.
+
+```html
+
+```
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+//Apply Circle Settings while adding individual Annotation
+document.getElementById('Circle')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Circle', {
+ offset: { x: 200, y: 480 },
+ pageNumber: 1,
+ width: 150,
+ height: 75,
+ opacity: 0.5,
+ strokeColor: '#FF0000',
+ fillColor: '#000fff#',
+ author: 'User1'
+ });
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+//Apply Circle Settings while adding individual Annotation
+document.getElementById('Circle')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Circle', {
+ offset: { x: 200, y: 480 },
+ pageNumber: 1,
+ width: 150,
+ height: 75,
+ opacity: 0.5,
+ strokeColor: '#FF0000',
+ fillColor: '#000fff#',
+ author: 'User1'
+ });
+});
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../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)
\ No newline at end of file
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
new file mode 100644
index 000000000..c123d3b8e
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/distance-annotation.md
@@ -0,0 +1,485 @@
+---
+layout: post
+title: Distance annotation in JavaScript PDF Viewer | Syncfusion
+description: Learn to add, edit, and customize Distance measurement annotations in Syncfusion JavaScript PDF Viewer with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Distance annotation in JavaScript PDF Viewer
+
+Distance is a measurement annotation used to measure the length between two points in the PDF.
+
+
+
+## Add Distance Annotation
+
+### Add distance annotation via UI
+
+Use the annotation toolbar:
+- Click the **Edit Annotation** button in the PDF Viewer toolbar.
+- Open the **Measurement Annotation** dropdown.
+- Choose **Distance**, then draw on the page.
+
+N> When in pan mode, selecting a measurement annotation switches the viewer to text select mode.
+
+
+
+### Enable distance mode
+
+The PDF Viewer component allows drawing Distance annotations programmatically after enabling Distance mode in button clicks.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('distanceMode').addEventListener('click', function () {
+ pdfviewer.annotationModule.setAnnotationMode('Distance');
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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');
+
+document.getElementById('distanceMode').addEventListener('click', function () {
+ pdfviewer.annotationModule.setAnnotationMode('Distance');
+});
+{% endhighlight %}
+{% endtabs %}
+
+#### Exit distance mode
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Common" %}
+document.getElementById('setNone').addEventListener('click', function () {
+ pdfviewer.annotationModule.setAnnotationMode('None');
+});
+{% endhighlight %}
+{% endtabs %}
+
+### Add a distance annotation programmatically
+
+Add measurement annotations programmatically using the [addAnnotation()](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#annotation) method.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addDistanceAnnotation').addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Distance', {
+ offset: { x: 200, y: 230 },
+ pageNumber: 1,
+ vertexPoints: [{ x: 200, y: 230 }, { x: 350, y: 230 }]
+ });
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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');
+
+document.getElementById('addDistanceAnnotation').addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Distance', {
+ offset: { x: 200, y: 230 },
+ pageNumber: 1,
+ vertexPoints: [{ x: 200, y: 230 }, { x: 350, y: 230 }]
+ });
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Edit Distance Annotation
+
+### Edit distance annotation in UI
+
+You can select, move, and resize Distance annotations directly in the viewer:
+- Select a Distance measurement to show its handles.
+- Move: drag the line to reposition it on the page.
+- Resize: drag the end handles to adjust its length.
+- Delete or access more options from the context menu.
+
+#### Edit the properties of area 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.
+
+##### 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
+
+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 an existing distance annotation programmatically
+
+Use editAnnotation on items from annotationCollection.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('editDistanceAnnotation').addEventListener('click', function () {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Distance calculation') {
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].opacity = 0.8;
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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');
+
+document.getElementById('editDistanceAnnotation').addEventListener('click', function () {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Distance calculation') {
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].opacity = 0.8;
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Default distance settings during initialization
+
+Set default [distanceSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#distancesettings) before creating the control.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.distanceSettings = { fillColor: 'blue', opacity: 0.6, strokeColor: 'green' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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.distanceSettings = { fillColor: 'blue', opacity: 0.6, strokeColor: 'green' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation 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.
+
+Refer to the following code snippet to set the default Distance settings.
+
+```html
+
+```
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+//Apply Distance Settings while adding individual Annotation
+document.getElementById('Distance')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Distance', {
+ offset: { x: 200, y: 230 },
+ pageNumber: 1,
+ vertexPoints: [{ x: 200, y: 230 }, { x: 350, y: 230 }],
+ fillColor: 'blue', opacity: 0.6, strokeColor: 'green'
+ });
+ });
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+//Apply Distance Settings while adding individual Annotation
+document.getElementById('Distance')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Distance', {
+ offset: { x: 200, y: 230 },
+ pageNumber: 1,
+ vertexPoints: [{ x: 200, y: 230 }, { x: 350, y: 230 }],
+ fillColor: 'blue', opacity: 0.6, strokeColor: 'green'
+ });
+ });
+{% endhighlight %}
+{% endtabs %}
+
+## Scale ratio and units
+
+You can modify scale ratio and units using the Scale Ratio option in the context menu.
+
+
+
+Supported units:
+- Inch, Millimeter, Centimeter, Point, Pica, Feet
+
+
+
+Set defaults via measurementSettings:
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.measurementSettings = { scaleRatio: 2, conversionUnit: 'cm', displayUnit: 'cm' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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.measurementSettings = { scaleRatio: 2, conversionUnit: 'cm', displayUnit: 'cm' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../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)
\ No newline at end of file
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
new file mode 100644
index 000000000..e5bc79d25
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/free-text-annotation.md
@@ -0,0 +1,476 @@
+---
+layout: post
+title: Free text annotation in JavaScript PDF Viewer | Syncfusion
+description: Learn to add, edit, delete, and customize Free Text annotations in Syncfusion JavaScript PDF Viewer, with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Free text annotation in JavaScript PDF Viewer
+
+Free Text is a text box annotation used to place formatted text anywhere on the page for notes, labels, or callouts.
+
+
+
+## Add Free Text annotation
+
+### Add Free Text annotation via UI
+
+Use the annotation toolbar:
+- 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.
+
+
+
+### Switch to Free Text mode
+
+The PDF Viewer component allows drawing Distance annotations programmatically after enabling Distance mode in button clicks.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addFreeTextAnnotation').addEventListener('click', function () {
+ pdfviewer.annotationModule.setAnnotationMode('FreeText');
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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');
+
+document.getElementById('addFreeTextAnnotation').addEventListener('click', function () {
+ pdfviewer.annotationModule.setAnnotationMode('FreeText');
+});
+{% endhighlight %}
+{% endtabs %}
+
+### Add Free Text annotation programmatically
+
+Use [addAnnotation()](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#annotation) to programmatically create Free Text.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addFreeTextProgram').addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('FreeText', {
+ offset: { x: 120, y: 80 },
+ fontSize: 16,
+ fontFamily: 'Helvetica',
+ pageNumber: 1,
+ width: 200,
+ height: 40,
+ isLock: false,
+ defaultText: 'Syncfusion'
+ });
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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');
+
+document.getElementById('addFreeTextProgram').addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('FreeText', {
+ offset: { x: 120, y: 80 },
+ fontSize: 16,
+ fontFamily: 'Helvetica',
+ pageNumber: 1,
+ width: 200,
+ height: 40,
+ isLock: false,
+ defaultText: 'Syncfusion'
+ });
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Edit Free Text annotation
+
+### Edit Free Text Annotation in UI
+
+You can select, move, and resize FreeText annotations directly in the viewer:
+- Select a Free Text annotation to display its bounding box and resize handles.
+- Move: drag the annotation box to reposition it on the page.
+- Resize: drag any corner or edge handle to adjust its size.
+- Delete: press the Delete key or use the context menu to remove the annotation.
+
+Use the toolbar to change the appearance of the selected Free Text annotation:
+- Font Family, Font Size, Font Style (Bold, Italic, Underline)
+- Font Color and Text Alignment
+- Fill Color (background) and Stroke Color (border)
+- Border Thickness and Opacity
+
+See the sections below for screenshots and details.
+
+#### 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.
+
+#### Edit font family
+
+Edit the font family by selecting a font in the Font Family tool.
+
+
+
+#### Edit font size
+
+Edit the font size by selecting a size in the Font Size tool.
+
+
+
+#### Edit font color
+
+Edit the font color using the color palette in the Font Color tool.
+
+
+
+#### Edit text alignment
+
+Align text by selecting an option from the Text Align tool.
+
+
+
+#### Edit text styles
+
+Edit text styles by selecting options in the Font Style tool.
+
+
+
+#### Edit fill color
+
+Edit the fill color using the color palette in the Edit Color tool.
+
+
+
+#### Edit stroke color
+
+Edit the stroke color using the color palette in the Edit Stroke Color tool.
+
+
+
+#### Edit thickness
+
+Edit border thickness using the range slider in the Edit Thickness tool.
+
+
+
+#### Edit opacity
+
+Edit opacity using the range slider in the Edit Opacity tool.
+
+
+
+### Edit Free Text annotation programmatically
+
+Use editAnnotation to update existing Free Text content.
+
+```html
+
+```
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('changeContent').addEventListener('click', function () {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Text Box') {
+ pdfviewer.annotationCollection[i].dynamicText = 'syncfusion';
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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');
+
+document.getElementById('changeContent').addEventListener('click', function () {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Text Box') {
+ pdfviewer.annotationCollection[i].dynamicText = 'syncfusion';
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% endtabs %}
+
+
+
+
+
+## Default Free Text settings during initialization
+
+Set default Free Text properties before creating the control using freeTextSettings.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.freeTextSettings = { fillColor: 'green', borderColor: 'blue', fontColor: 'yellow' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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.freeTextSettings = { fillColor: 'green', borderColor: 'blue', fontColor: 'yellow' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation 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.
+
+Refer to the following code snippet to set the default FreeText settings.
+
+```html
+
+```
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+//Apply FreeText Settings while adding individual Annotation
+document.getElementById('FreeText')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('FreeText', {
+ offset: { x: 120, y: 80 },
+ fontSize: 16,
+ fontFamily: 'Helvetica',
+ pageNumber: 1,
+ width: 200,
+ height: 40,
+ isLock: false,
+ defaultText: 'Syncfusion',
+ fillColor: 'green',
+ borderColor: 'blue',
+ fontColor: 'yellow'
+ });
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+//Apply FreeText Settings while adding individual Annotation
+document.getElementById('FreeText')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('FreeText', {
+ offset: { x: 120, y: 80 },
+ fontSize: 16,
+ fontFamily: 'Helvetica',
+ pageNumber: 1,
+ width: 200,
+ height: 40,
+ isLock: false,
+ defaultText: 'Syncfusion',
+ fillColor: 'green',
+ borderColor: 'blue',
+ fontColor: 'yellow'
+ });
+});
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../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)
\ No newline at end of file
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
new file mode 100644
index 000000000..4c6b044e6
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/highlight-annotation.md
@@ -0,0 +1,486 @@
+---
+layout: post
+title: Highlight annotation in JavaScript PDF Viewer | Syncfusion
+description: Learn to add, edit, delete, and customize Highlight text markup annotations in Syncfusion JavaScript PDF Viewer, with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Highlight annotation in JavaScript PDF Viewer
+
+The PDF Viewer provides options to add, edit, and delete Highlight annotations on text. You can add highlights via the UI (context menu or annotation toolbar) and programmatically. You can also customize color, opacity, author/subject, and default settings, and use undo/redo, save, print, or disable highlights as needed.
+
+
+
+## Add Highlight Annotation
+
+### Add highlight annotation via UI
+
+You can add highlights in two ways:
+
+1. Using the context menu
+- Select text in the PDF document and right-click it.
+- Choose **Highlight** in the context menu.
+
+
+
+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**.
+
+
+
+N> When pan mode is active and a text markup mode is entered, the PDF Viewer switches to text selection mode to enable selection.
+
+### Switch to Highlight Mode
+
+The PDF Viewer component allows add highlight annotations programmatically after enabling Highlight mode in button clicks.
+
+```html
+
+
+```
+{% tabs %}
+{% highlight js tabtitle="index.js" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.FormFields
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('set').addEventListener('click', function () {
+ pdfviewer.annotationModule.setAnnotationMode('Highlight');
+});
+{% endhighlight %}
+{% endtabs %}
+
+N> To set up the **server-backed PDF Viewer**, add the below `serviceUrl` in the `index.ts` file: `pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';`
+
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es6/text-markup-annotation/highlight-mode-cs1" %}
+
+To switch back to normal mode from highlight mode:
+
+```html
+
+
+
+
+```
+{% tabs %}
+{% highlight js tabtitle="index.js" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.FormFields
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('set').addEventListener('click', function () {
+ pdfviewer.annotationModule.setAnnotationMode('Highlight');
+});
+
+document.getElementById('setNone').addEventListener('click', function () {
+ pdfviewer.annotationModule.setAnnotationMode('None');
+});
+{% endhighlight %}
+{% endtabs %}
+
+N> To set up the **server-backed PDF Viewer**, add the below `serviceUrl` in the `index.ts` file:
+`pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';`
+
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es6/text-markup-annotation/highlight-normal-mode-cs1" %}
+
+### Add highlight annotation programmatically
+
+Programmatically add highlights using the [addAnnotation](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#addannotation) method.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('highlight').addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Highlight', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1
+ });
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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');
+
+document.getElementById('highlight').addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Highlight', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1
+ });
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Edit Highlight Annotation
+
+### Edit highlight annotation in UI
+
+You can 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.
+
+#### 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.
+
+
+
+#### Delete highlight annotation
+- Select the annotation and press Delete (or Backspace), or
+- Click **Delete Annotation** in the annotation toolbar.
+
+
+
+### Edit highlight annotation programmatically
+
+Modify an existing highlight programmatically using `editAnnotation()`.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('editHighlight').addEventListener('click', function () {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ var annot = pdfviewer.annotationCollection[i];
+ if (annot.textMarkupAnnotationType === 'Highlight') {
+ annot.color = '#000fff';
+ annot.opacity = 0.8;
+ pdfviewer.annotation.editAnnotation(annot);
+ break;
+ }
+ }
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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');
+
+document.getElementById('editHighlight').addEventListener('click', function () {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ var annot = pdfviewer.annotationCollection[i];
+ if (annot.textMarkupAnnotationType === 'Highlight') {
+ annot.color = '#000fff';
+ annot.opacity = 0.8;
+ pdfviewer.annotation.editAnnotation(annot);
+ break;
+ }
+ }
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Set default properties during control initialization
+
+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.
+
+Refer to the following code snippet to set the default highlight settings.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.Annotation
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.highlightSettings = { author: 'Guest User', subject: 'Important', color: '#ffff00', opacity: 0.9 };
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.Annotation
+);
+
+var pdfviewer = new ej.pdfviewer.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.highlightSettings = { author: 'Guest User', subject: 'Important', color: '#ffff00', opacity: 0.9 };
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% endtabs %}
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation 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.
+
+Refer to the following code snippet to set the default highlight settings.
+
+```html
+
+```
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+//Apply Highlight Settings while adding individual Annotation
+document.getElementById('highlight')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Highlight', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1,
+ author: 'User 1',
+ color: '#ffff00',
+ opacity: 0.9
+ });
+
+ pdfviewer.annotation.addAnnotation('Highlight', {
+ bounds: [{ x: 107, y: 220, width: 350, height: 14 }],
+ pageNumber: 1,
+ author: 'User 2',
+ color: '#ff1010ff',
+ opacity: 0.9
+ });
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+//Apply Highlight Settings while adding individual Annotation
+document.getElementById('highlight')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Highlight', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1,
+ author: 'User 1',
+ color: '#ffff00',
+ opacity: 0.9
+ });
+
+ pdfviewer.annotation.addAnnotation('Highlight', {
+ bounds: [{ x: 107, y: 220, width: 350, height: 14 }],
+ pageNumber: 1,
+ author: 'User 2',
+ color: '#ff1010ff',
+ opacity: 0.9
+ });
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Disable highlight annotation
+
+Disable text markup annotations (including highlight) using the `enableTextMarkupAnnotation` property.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.Annotation
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.enableTextMarkupAnnotation = false;
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.Annotation
+);
+
+var pdfviewer = new ej.pdfviewer.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.enableTextMarkupAnnotation = false;
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../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)
\ No newline at end of file
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
new file mode 100644
index 000000000..1629a8758
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/ink-annotation.md
@@ -0,0 +1,417 @@
+---
+layout: post
+title: Ink (freehand) annotation in JavaScript PDF Viewer | Syncfusion
+description: Learn to add, edit, delete, and set defaults for Ink (freehand) annotations in Syncfusion JavaScript PDF Viewer with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Ink (freehand) annotation in JavaScript PDF Viewer
+
+Ink is a freehand drawing annotation used to sketch, sign, or mark up content.
+
+
+
+## Add Ink Annotation
+
+### 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.
+- 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.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addInkAnnotation').addEventListener('click', function () {
+ pdfviewer.annotationModule.setAnnotationMode('Ink');
+});
+{% endhighlight %}
+{% endtabs %}
+
+#### Exit ink mode
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Common" %}
+var setNone = document.getElementById('setNone');
+if (setNone) {
+ setNone.addEventListener('click', function () {
+ pdfviewer.annotationModule.setAnnotationMode('None');
+ });
+}
+{% endhighlight %}
+{% endtabs %}
+
+### Add ink annotation programmatically
+
+Use addAnnotation to programmatically create an Ink annotation.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addInkAnnotationProgram').addEventListener('click', function () {
+ pdfviewer.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}]'
+ });
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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');
+
+document.getElementById('addInkAnnotationProgram').addEventListener('click', function () {
+ pdfviewer.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}]'
+ });
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Edit Ink Annotation
+
+### Edit ink annotation in UI
+
+You can 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.
+- Delete or access more options from the context menu.
+
+#### 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.
+
+#### Edit stroke color
+
+Edit 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.
+
+
+
+#### Edit opacity
+
+Edit opacity using the range slider in the Edit Opacity tool.
+
+
+
+### Edit an existing ink annotation programmatically
+
+Use editAnnotation to modify properties and bounds of an existing ink annotation.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('editInkAnnotation').addEventListener('click', function () {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].shapeAnnotationType === 'Ink') {
+ var width = pdfviewer.annotationCollection[i].bounds.width;
+ var height = pdfviewer.annotationCollection[i].bounds.height;
+ pdfviewer.annotationCollection[i].bounds = { x: 100, y: 100, width: width, height: height };
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].annotationSelectorSettings.resizerShape = 'Circle';
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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');
+
+document.getElementById('editInkAnnotation').addEventListener('click', function () {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].shapeAnnotationType === 'Ink') {
+ var width = pdfviewer.annotationCollection[i].bounds.width;
+ var height = pdfviewer.annotationCollection[i].bounds.height;
+ pdfviewer.annotationCollection[i].bounds = { x: 100, y: 100, width: width, height: height };
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].annotationSelectorSettings.resizerShape = 'Circle';
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Default ink settings during initialization
+
+Set defaults using inkAnnotationSettings.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.inkAnnotationSettings = { author: 'Syncfusion', strokeColor: 'green', thickness: 3, opacity: 0.6 };
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.inkAnnotationSettings = { author: 'Syncfusion', strokeColor: 'green', thickness: 3, opacity: 0.6 };
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation 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.
+
+Refer to the following code snippet to set the default Ink settings.
+
+```html
+
+```
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+//Apply Ink Settings while adding individual Annotation
+document.getElementById('Ink')?.addEventListener('click', function () {
+ pdfviewer.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}]',
+ author: 'Syncfusion', strokeColor: 'green', thickness: 3, opacity: 0.6
+ });
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.serviceUrl= 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+
+//Apply Ink Settings while adding individual Annotation
+document.getElementById('Ink')?.addEventListener('click', function () {
+ pdfviewer.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}]',
+ author: 'Syncfusion', strokeColor: 'green', thickness: 3, opacity: 0.6
+ });
+});
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../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)
\ No newline at end of file
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
new file mode 100644
index 000000000..e28beb5ff
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/line-annotation.md
@@ -0,0 +1,451 @@
+---
+layout: post
+title: Line annotation in JavaScript PDF Viewer | Syncfusion
+description: Learn to add, edit, and customize Line annotations in Syncfusion JavaScript PDF Viewer with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Line annotation in JavaScript PDF Viewer
+
+Line is a shape annotation used to mark straight connections or callouts. Common use cases include underline-like rulers, connectors, and measurement guides.
+
+
+
+## Add Line Annotation
+
+### Add line annotation via UI
+
+Use the annotation toolbar:
+- Click the **Edit Annotation** button in the PDF Viewer toolbar.
+- Open the **Shape Annotation** dropdown.
+- Choose **Line**, then draw on the page.
+
+N> When in pan mode, selecting a shape annotation switches the viewer to text select mode.
+
+
+
+### Enable line mode
+
+The PDF Viewer component allows to add line annotations programmatically after enabling line mode in button clicks.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('lineMode').addEventListener('click', function() {
+ pdfviewer.annotationModule.setAnnotationMode('Line');
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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');
+
+document.getElementById('lineMode').addEventListener('click', function() {
+ pdfviewer.annotationModule.setAnnotationMode('Line');
+});
+{% endhighlight %}
+{% endtabs %}
+
+#### Exit line mode
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Common" %}
+document.getElementById('setNone').addEventListener('click', function() {
+ pdfviewer.annotationModule.setAnnotationMode('None');
+});
+{% endhighlight %}
+{% endtabs %}
+
+### Add a line annotation programmatically
+
+Use the addAnnotation method with Line settings.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addLineAnnotation').addEventListener('click', function() {
+ pdfviewer.annotation.addAnnotation('Line', {
+ offset: { x: 200, y: 230 },
+ pageNumber: 1,
+ vertexPoints: [{ x: 200, y: 230 }, { x: 350, y: 230 }]
+ });
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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');
+
+document.getElementById('addLineAnnotation').addEventListener('click', function() {
+ pdfviewer.annotation.addAnnotation('Line', {
+ offset: { x: 200, y: 230 },
+ pageNumber: 1,
+ vertexPoints: [{ x: 200, y: 230 }, { x: 350, y: 230 }]
+ });
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Edit Line Annotation
+
+### 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.
+- 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.
+
+Use the toolbar to change appearance:
+- Edit Color, Edit Stroke Color, Edit Thickness, and Edit Opacity tools.
+
+
+
+#### 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.
+
+#### Editing fill color
+
+The fill color of the annotation can be edited using the color palette provided in the Edit Color tool.
+
+
+
+#### Editing stroke color
+
+The stroke color of the annotation can be edited using the color palette provided in the Edit Stroke Color tool.
+
+
+
+#### Editing thickness
+
+The thickness of the border of the annotation can be edited using the range slider provided in the Edit Thickness tool.
+
+
+
+#### Editing opacity
+
+The opacity of the annotation can be edited using the range slider provided in the Edit Opacity tool.
+
+
+
+#### Editing the line properties
+
+Line 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.
+
+
+
+### Edit an existing line annotation programmatically
+
+To modify an existing line annotation programmatically, use the editAnnotation() method.
+
+Here is an example of using editAnnotation():
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('editLineAnnotation').addEventListener('click', function() {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Line') {
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].annotationSelectorSettings.resizerShape = 'Circle';
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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');
+
+document.getElementById('editLineAnnotation').addEventListener('click', function() {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Line') {
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].annotationSelectorSettings.resizerShape = 'Circle';
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Default line settings during initialization
+
+Set default properties before creating the control using lineSettings.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.lineSettings = { fillColor: 'blue', opacity: 0.6, strokeColor: 'green' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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.lineSettings = { fillColor: 'blue', opacity: 0.6, strokeColor: 'green' };
+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.
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation 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.
+
+Refer to the following code snippet to set the default line settings.
+
+```html
+
+```
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+//Apply line Settings while adding individual Annotation
+document.getElementById('line')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Line', {
+ offset: { x: 200, y: 230 },
+ pageNumber: 1,
+ vertexPoints: [{ x: 200, y: 230 }, { x: 350, y: 230 }],
+ fillColor:'#ff1010ff',
+ strokeColor:'#fff000',
+ opacity:0.9,
+ author: 'User 1',
+ thickness: 1
+ });
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+
+//Apply line Settings while adding individual Annotation
+document.getElementById('line')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Line', {
+ offset: { x: 200, y: 230 },
+ pageNumber: 1,
+ vertexPoints: [{ x: 200, y: 230 }, { x: 350, y: 230 }],
+ fillColor:'#ff1010ff',
+ strokeColor:'#fff000',
+ opacity:0.9,
+ author: 'User 1',
+ thickness: 1
+ });
+});
+{% endhighlight %}
+{% endtabs %}
+
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../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)
\ No newline at end of file
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
new file mode 100644
index 000000000..15afc5e1e
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/perimeter-annotation.md
@@ -0,0 +1,525 @@
+---
+layout: post
+title: Perimeter annotation in JavaScript PDF Viewer | Syncfusion
+description: Learn to add, edit, and customize Perimeter measurement annotations in Syncfusion JavaScript PDF Viewer with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Perimeter annotation in JavaScript PDF Viewer
+
+Perimeter is a measurement annotation used to measure the length around a closed polyline in the PDF.
+
+
+
+## Add Perimeter Annotation
+
+### 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.
+
+N> When in pan mode, selecting a measurement annotation 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.
+
+```html
+
+```
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+var perimeterBtn = document.getElementById('perimeterMode');
+if (perimeterBtn) {
+ perimeterBtn.addEventListener('click', function () {
+ pdfviewer.annotationModule.setAnnotationMode('Perimeter');
+ });
+}
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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');
+
+var perimeterBtn = document.getElementById('perimeterMode');
+if (perimeterBtn) {
+ perimeterBtn.addEventListener('click', function () {
+ pdfviewer.annotationModule.setAnnotationMode('Perimeter');
+ });
+}
+{% endhighlight %}
+{% endtabs %}
+
+### 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.
+
+```html
+
+```
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+
+pdfviewer.appendTo('#PdfViewer');
+
+var addBtn = document.getElementById('addPerimeterAnnotation');
+if (addBtn) {
+ addBtn.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Perimeter', {
+ offset: { x: 200, y: 350 },
+ pageNumber: 1,
+ vertexPoints: [
+ { x: 200, y: 350 },
+ { x: 285, y: 350 },
+ { x: 286, y: 412 }
+ ]
+ });
+ });
+}
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+
+pdfviewer.appendTo('#PdfViewer');
+
+var addBtn = document.getElementById('addPerimeterAnnotation');
+if (addBtn) {
+ addBtn.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Perimeter', {
+ offset: { x: 200, y: 350 },
+ pageNumber: 1,
+ vertexPoints: [
+ { x: 200, y: 350 },
+ { x: 285, y: 350 },
+ { x: 286, y: 412 }
+ ]
+ });
+ });
+}
+{% endhighlight %}
+{% endtabs %}
+
+## Edit Perimeter Annotation
+
+### Edit perimeter annotation in UI
+
+You can select, move, and resize Perimeter annotations directly in the viewer:
+- 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.
+- Delete or access more options from the context menu.
+
+#### Edit the properties of Perimeter 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.
+
+#### 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
+
+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 an existing perimeter annotation programmatically
+
+To modify an existing perimeter annotation programmatically, use the editAnnotation() method.
+
+Here is an example of using editAnnotation():
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+var editPerimeterAnnotation = document.getElementById('editPerimeterAnnotation');
+if (editPerimeterAnnotation) {
+ editPerimeterAnnotation.addEventListener('click', function () {
+ if (pdfviewer) {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === "Perimeter calculation") {
+ pdfviewer.annotationCollection[i].annotationSelectorSettings.resizerShape = "Circle";
+ pdfviewer.annotationCollection[i].strokeColor = "#0000FF";
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].fillColor = "#FFFF00";
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+ }
+ });
+}
+
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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');
+
+var editPerimeterAnnotation = document.getElementById('editPerimeterAnnotation');
+if (editPerimeterAnnotation) {
+ editPerimeterAnnotation.addEventListener('click', function () {
+ if (pdfviewer) {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === "Perimeter calculation") {
+ pdfviewer.annotationCollection[i].annotationSelectorSettings.resizerShape = "Circle";
+ pdfviewer.annotationCollection[i].strokeColor = "#0000FF";
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].fillColor = "#FFFF00";
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+ }
+ });
+}
+
+{% endhighlight %}
+{% endtabs %}
+
+## Default perimeter settings during initialization
+
+Set default perimeterSettings before creating the control.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+
+pdfviewer.perimeterSettings = { fillColor: 'green', opacity: 0.6, strokeColor: 'blue' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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.perimeterSettings = { fillColor: 'green', opacity: 0.6, strokeColor: 'blue' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation 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.
+
+Refer to the following code snippet to set the default Perimeter settings.
+
+```html
+
+```
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+//Apply Perimeter Settings while adding individual Annotation
+document.getElementById('Perimeter')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Perimeter', {
+ offset: { x: 200, y: 350 },
+ pageNumber: 1,
+ vertexPoints: [{ x: 200, y: 350 }, { x: 285, y: 350 }, { x: 286, y: 412 }],
+ fillColor: 'green', opacity: 0.6, strokeColor: 'blue'
+ });
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+=ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+
+//Apply Perimeter Settings while adding individual Annotation
+document.getElementById('Perimeter')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Perimeter', {
+ offset: { x: 200, y: 350 },
+ pageNumber: 1,
+ vertexPoints: [{ x: 200, y: 350 }, { x: 285, y: 350 }, { x: 286, y: 412 }],
+ fillColor: 'green', opacity: 0.6, strokeColor: 'blue'
+ });
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Editing scale ratio and unit of the perimeter measurement annotation
+
+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
+
+- Inch
+- Millimeter
+- Centimeter
+- Point
+- Pica
+- Feet
+
+
+
+## Setting default scale ratio settings during control initialization
+
+The properties of scale ratio for measurement annotation can be set before creating the control using measurementSettings as shown in the following code snippet,
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.measurementSettings = { scaleRatio: 2, conversionUnit: 'cm', displayUnit: 'cm' };
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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.measurementSettings = { scaleRatio: 2, conversionUnit: 'cm', displayUnit: 'cm' };
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../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/javascript-es5/annotations/annotation-types/polygon-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/polygon-annotation.md
new file mode 100644
index 000000000..bdedea053
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/polygon-annotation.md
@@ -0,0 +1,446 @@
+---
+layout: post
+title: Polygon annotation in JavaScript PDF Viewer | Syncfusion
+description: Learn to add, edit, and customize Polygon annotations in Syncfusion JavaScript PDF Viewer with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Polygon annotation in JavaScript PDF Viewer
+
+Polygon is a shape annotation used to outline irregular regions, highlight areas, or create custom callouts.
+
+
+
+## Add Polygon Annotation
+
+### 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.
+
+N> When in pan mode, selecting a shape annotation 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.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('polygonMode') && document.getElementById('polygonMode').addEventListener('click', function () {
+ pdfviewer.annotationModule.setAnnotationMode('Polygon');
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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');
+
+document.getElementById('polygonMode') && document.getElementById('polygonMode').addEventListener('click', function () {
+ pdfviewer.annotationModule.setAnnotationMode('Polygon');
+});
+{% endhighlight %}
+{% endtabs %}
+
+#### Exit polygon mode
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Common" %}
+document.getElementById('setNone') && document.getElementById('setNone').addEventListener('click', function () {
+ pdfviewer.annotationModule.setAnnotationMode('None');
+});
+{% endhighlight %}
+{% endtabs %}
+
+### Add a polygon annotation programmatically
+
+The PDF Viewer library allows adding polygon annotations programmatically using the [addAnnotation()](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#annotation) method.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addPolygonAnnotation') && document.getElementById('addPolygonAnnotation').addEventListener('click', function () {
+ pdfviewer.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 }
+ ]
+ });
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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');
+
+document.getElementById('addPolygonAnnotation') && document.getElementById('addPolygonAnnotation').addEventListener('click', function () {
+ pdfviewer.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 }
+ ]
+ });
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Edit Polygon Annotation
+
+### Edit Polygon Annotation in UI
+
+You can select, move, and resize Polygon annotations directly in the viewer:
+- 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.
+
+See the sections below for details.
+
+#### Edit the properties of area 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.
+
+#### 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
+
+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 an existing polygon annotation programmatically
+
+Use editAnnotation on items from annotationCollection.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('editPolygonAnnotation') && document.getElementById('editPolygonAnnotation').addEventListener('click', function () {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Polygon') {
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].fillColor = '#FFFF00';
+ pdfviewer.annotationCollection[i].annotationSelectorSettings.resizerShape = 'Circle';
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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');
+
+document.getElementById('editPolygonAnnotation') && document.getElementById('editPolygonAnnotation').addEventListener('click', function () {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Polygon') {
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].fillColor = '#FFFF00';
+ pdfviewer.annotationCollection[i].annotationSelectorSettings.resizerShape = 'Circle';
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Default polygon settings during initialization
+
+Set default properties before creating the control using polygonSettings.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.polygonSettings = { fillColor: 'pink', opacity: 0.6, strokeColor: 'yellow' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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.polygonSettings = { fillColor: 'pink', opacity: 0.6, strokeColor: 'yellow' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation 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.
+
+Refer to the following code snippet to set the default Polygon settings.
+
+```html
+
+```
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+//Apply Polygon Settings while adding individual Annotation
+document.getElementById('Polygon')?.addEventListener('click', function () {
+ pdfviewer.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:'#ff000',
+ opacity: 0.9,
+ strokeColor:'##ff000'
+ });
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+
+//Apply Polygon Settings while adding individual Annotation
+document.getElementById('Polygon')?.addEventListener('click', function () {
+ pdfviewer.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:'#ff000',
+ opacity: 0.9,
+ strokeColor:'##ff000'
+ });
+});
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../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)
\ No newline at end of file
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
new file mode 100644
index 000000000..a821ed0eb
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/radius-annotation.md
@@ -0,0 +1,491 @@
+---
+layout: post
+title: Radius annotation in JavaScript PDF Viewer | Syncfusion
+description: Learn to add, edit, and customize Radius measurement annotations in Syncfusion JavaScript PDF Viewer with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Radius annotation in JavaScript PDF Viewer
+
+Radius is a measurement annotation used to measure the radius of a circle in the PDF.
+
+
+
+## Add Radius Annotation
+
+### 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.
+
+N> When in pan mode, selecting a measurement annotation 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.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('radiusMode').addEventListener('click', function() {
+ pdfviewer.annotationModule.setAnnotationMode('Radius');
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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');
+
+document.getElementById('radiusMode').addEventListener('click', function() {
+ pdfviewer.annotationModule.setAnnotationMode('Radius');
+});
+{% endhighlight %}
+{% endtabs %}
+
+#### Exit radius mode
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Common" %}
+document.getElementById('setNone').addEventListener('click', function() {
+ pdfviewer.annotationModule.setAnnotationMode('None');
+});
+{% endhighlight %}
+{% endtabs %}
+
+### Add a radius annotation programmatically
+
+Add measurement annotations programmatically using the [addAnnotation()](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#annotation) method.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addRadiusAnnotation').addEventListener('click', function() {
+ pdfviewer.annotation.addAnnotation('Radius', {
+ offset: { x: 200, y: 630 },
+ pageNumber: 1,
+ width: 90,
+ height: 90
+ });
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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');
+
+document.getElementById('addRadiusAnnotation').addEventListener('click', function() {
+ pdfviewer.annotation.addAnnotation('Radius', {
+ offset: { x: 200, y: 630 },
+ pageNumber: 1,
+ width: 90,
+ height: 90
+ });
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Edit Radius Annotation
+
+### Edit radius annotation in UI
+
+You can select, move, and resize Radius annotations directly in the viewer:
+- 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.
+- Delete or access more options from the context menu.
+
+#### Edit the properties of radius 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.
+
+#### 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
+
+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 an existing radius annotation programmatically
+
+Use editAnnotation on items from annotationCollection.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('editRadiusAnnotation').addEventListener('click', function() {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Radius calculation') {
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].opacity = 0.8;
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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');
+
+document.getElementById('editRadiusAnnotation').addEventListener('click', function() {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Radius calculation') {
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].opacity = 0.8;
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Default radius settings during initialization
+
+Set default [radiusSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#radiussettings) before creating the control.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.radiusSettings = { fillColor: 'orange', opacity: 0.6, strokeColor: 'pink' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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.radiusSettings = { fillColor: 'orange', opacity: 0.6, strokeColor: 'pink' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation 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.
+
+Refer to the following code snippet to set the default Radius settings.
+
+```html
+
+```
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+//Apply Radius Settings while adding individual Annotation
+document.getElementById('Radius')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Radius', {
+ offset: { x: 200, y: 630 },
+ pageNumber: 1,
+ width: 90,
+ height: 90,
+ fillColor: 'orange', opacity: 0.6, strokeColor: 'pink'
+ });
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+
+//Apply Radius Settings while adding individual Annotation
+document.getElementById('Radius')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Radius', {
+ offset: { x: 200, y: 630 },
+ pageNumber: 1,
+ width: 90,
+ height: 90,
+ fillColor: 'orange', opacity: 0.6, strokeColor: 'pink'
+ });
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Scale ratio and units
+
+You can modify scale ratio and units using the Scale Ratio option in the context menu.
+
+
+
+Supported units:
+- Inch, Millimeter, Centimeter, Point, Pica, Feet
+
+
+
+Set defaults via measurementSettings:
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.measurementSettings = { scaleRatio: 2, conversionUnit: 'cm', displayUnit: 'cm' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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.measurementSettings = { scaleRatio: 2, conversionUnit: 'cm', displayUnit: 'cm' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../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/javascript-es5/annotations/annotation-types/rectangle-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/rectangle-annotation.md
new file mode 100644
index 000000000..5e278c37f
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/rectangle-annotation.md
@@ -0,0 +1,430 @@
+---
+layout: post
+title: Rectangle annotation in JavaScript PDF Viewer | Syncfusion
+description: Learn to add, edit, and customize Rectangle annotations in Syncfusion JavaScript PDF Viewer with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Rectangle annotation in JavaScript PDF Viewer
+
+Rectangle is a shape annotation used to highlight regions, group content, or draw callout boxes.
+
+
+
+## Add Rectangle Annotation
+
+### 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.
+
+N> When pan mode is active and a shape tool is selected, the viewer switches to text select mode automatically.
+
+
+
+### Enable rectangle mode
+
+The PDF Viewer library allows drawing shape annotations programmatically after enabling rectangle mode in button clicks.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('rectangleMode') && document.getElementById('rectangleMode').addEventListener('click', function () {
+ pdfviewer.annotationModule.setAnnotationMode('Rectangle');
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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');
+
+document.getElementById('rectangleMode') && document.getElementById('rectangleMode').addEventListener('click', function () {
+ pdfviewer.annotationModule.setAnnotationMode('Rectangle');
+});
+{% endhighlight %}
+{% endtabs %}
+
+#### Exit rectangle mode
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Common" %}
+document.getElementById('setNone') && document.getElementById('setNone').addEventListener('click', function () {
+ pdfviewer.annotationModule.setAnnotationMode('None');
+});
+{% endhighlight %}
+{% endtabs %}
+
+### Add a rectangle annotation programmatically
+
+Use the addAnnotation method with Rectangle settings to add a rectangle annotation programmatically.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addRectangleAnnotation') && document.getElementById('addRectangleAnnotation').addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Rectangle', {
+ offset: { x: 200, y: 480 },
+ pageNumber: 1,
+ width: 150,
+ height: 75
+ });
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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');
+
+document.getElementById('addRectangleAnnotation') && document.getElementById('addRectangleAnnotation').addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Rectangle', {
+ offset: { x: 200, y: 480 },
+ pageNumber: 1,
+ width: 150,
+ height: 75
+ });
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Edit Rectangle Annotation
+
+### Edit Rectangle Annotation in UI
+
+You can select, move, and resize Rectangle annotations directly in the viewer:
+- 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.
+
+#### Edit the properties of area 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.
+
+#### 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
+
+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 an existing rectangle annotation programmatically
+
+Use editAnnotation on items from annotationCollection.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('editRectangleAnnotation') && document.getElementById('editRectangleAnnotation').addEventListener('click', function () {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Rectangle') {
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].fillColor = '#FFFF00';
+ pdfviewer.annotationCollection[i].annotationSelectorSettings.resizerShape = 'Circle';
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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');
+
+document.getElementById('editRectangleAnnotation') && document.getElementById('editRectangleAnnotation').addEventListener('click', function () {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Rectangle') {
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].fillColor = '#FFFF00';
+ pdfviewer.annotationCollection[i].annotationSelectorSettings.resizerShape = 'Circle';
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Default rectangle settings during initialization
+
+Set default properties before creating the control using rectangleSettings.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.rectangleSettings = { fillColor: 'yellow', opacity: 0.6, strokeColor: 'orange' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.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.rectangleSettings = { fillColor: 'yellow', opacity: 0.6, strokeColor: 'orange' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation 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.
+
+Refer to the following code snippet to set the default rectangle settings.
+
+```html
+
+```
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+//Apply Rectangle Settings while adding individual Annotation
+document.getElementById('Rectangle')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Rectangle', {
+ offset: { x: 200, y: 480 },
+ pageNumber: 1,
+ width: 150,
+ height: 75,
+ opacity: 0.5,
+ strokeColor: '#FF0000',
+ fillColor: '#000fff#',
+ author: 'User1'
+ });
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, RectangleSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+//Apply Rectangle Settings while adding individual Annotation
+document.getElementById('Rectangle')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Rectangle', {
+ offset: { x: 200, y: 480 },
+ pageNumber: 1,
+ width: 150,
+ height: 75,
+ opacity: 0.5,
+ strokeColor: '#FF0000',
+ fillColor: '#000fff#',
+ author: 'User1'
+ } as RectangleSettings);
+});
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../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)
\ No newline at end of file
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
new file mode 100644
index 000000000..8007801ea
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/redaction-annotation.md
@@ -0,0 +1,210 @@
+---
+layout: post
+title: Redaction annotation in JavaScript PDF Viewer | Syncfusion
+description: Learn to add, edit, delete, and apply redaction annotations in Syncfusion JavaScript PDF Viewer with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Redaction annotation in JavaScript 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 annotation in UI
+
+- Use the Redaction tool from the toolbar to draw over content to hide.
+- Redaction marks can show overlay text (for example, "Confidential") and can be styled.
+
+
+
+Redaction annotations are interactive:
+- Movable
+
+- Resizable
+
+
+You can also add redaction 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 a redaction annotation programmatically
+
+Use the addAnnotation method with the Redaction type.
+
+```html
+
+```
+```js
+document.getElementById('addRedactAnnot')?.addEventListener('click', () => {
+ 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
+ });
+});
+```
+
+Track additions using the annotationAdd event.
+
+```js
+viewer.annotationAdd = (args) => {
+ console.log('Annotation added:', args);
+};
+```
+
+## Edit Redaction Annotation
+
+### Edit redaction annotation in UI
+
+You can select, move, and resize Redaction annotations directly in the viewer. 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 a redaction annotation programmatically
+
+Use editAnnotation to modify overlay text, colors, fonts, etc.
+
+```html
+
+```
+```js
+document.getElementById('editRedactAnnotation')?.addEventListener('click', () => {
+ for (let i = 0; i < viewer.annotationCollection.length; i++) {
+ if (viewer.annotationCollection[i].subject === 'Redaction') {
+ viewer.annotationCollection[i].overlayText = 'EditedAnnotation';
+ viewer.annotationCollection[i].markerFillColor = '#22FF00';
+ viewer.annotationCollection[i].markerBorderColor = '#000000';
+ viewer.annotationCollection[i].isRepeat = true;
+ viewer.annotationCollection[i].fillColor = '#F8F8F8';
+ viewer.annotationCollection[i].fontColor = '#333333';
+ viewer.annotationCollection[i].fontSize = 14;
+ viewer.annotationCollection[i].fontFamily = 'Symbol';
+ viewer.annotationCollection[i].textAlign = 'Right';
+ viewer.annotationCollection[i].beforeRedactionsApplied = false;
+ viewer.annotation.editAnnotation(viewer.annotationCollection[i]);
+ }
+ }
+});
+```
+
+## Delete redaction annotations
+
+### Delete in UI
+
+- Right-click and select Delete
+
+- Use the Delete button in the toolbar
+
+- Press Delete key
+
+### Delete programmatically
+
+Delete by id using deleteAnnotationById:
+
+```html
+
+```
+```js
+document.getElementById('deleteAnnotationbyId')?.addEventListener('click', () => {
+ viewer.annotationModule.deleteAnnotationById(viewer.annotationCollection[0].annotationId);
+});
+```
+
+## Redact pages
+
+### Redact pages in UI
+
+Use the Redact Pages dialog to mark entire pages:
+
+
+
+Options include Current Page, Odd Pages Only, Even Pages Only, and Specific Pages.
+
+### Add page redactions programmatically
+
+```html
+
+```
+```js
+document.getElementById('addPageRedactions')?.addEventListener('click', () => {
+ viewer.annotation.addPageRedactions([1, 3, 5, 7]);
+});
+```
+
+## 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
+
+```html
+
+```
+```js
+document.getElementById('redact')?.addEventListener('click', () => {
+ viewer.annotation.redact();
+});
+```
+
+N> Applying redaction is irreversible.
+
+## Default redaction settings during initialization
+
+Configure defaults with redactionSettings:
+
+```js
+viewer.redactionSettings = {
+ overlayText: 'Confidential',
+ markerFillColor: '#FF0000',
+ markerBorderColor: '#000000',
+ isRepeat: false,
+ fillColor: '#F8F8F8',
+ fontColor: '#333333',
+ fontSize: 14,
+ fontFamily: 'Symbol',
+ textAlign: 'Right'
+};
+```
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/javascript-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/javascript-es5/annotations/annotation-types/stamp-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/stamp-annotation.md
new file mode 100644
index 000000000..24062226a
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/stamp-annotation.md
@@ -0,0 +1,361 @@
+---
+layout: post
+title: Stamp annotation in JavaScript PDF Viewer | Syncfusion
+description: Learn to add, edit, delete, rotate, and customize Stamp annotations in Syncfusion JavaScript PDF Viewer, with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Stamp annotation in JavaScript PDF Viewer
+
+The PDF Viewer control provides options to add, edit, delete, and rotate the following stamp annotations in PDF documents:
+
+* Dynamic
+* Sign Here
+* Standard Business
+* Custom Stamp
+
+
+
+## Add Stamp Annotation
+
+### Add Stamp Annotation in UI
+
+Use the annotation toolbar:
+- Click the Edit Annotation button.
+- Open the Stamp Annotation dropdown.
+
+- Choose a stamp type and place it on the page.
+
+
+N> When in pan mode and a stamp tool is selected, the viewer switches to text select mode automatically.
+
+### Switch to specific stamp modes
+
+```html
+
+
+
+
+```
+
+{% tabs %}
+{% highlight javascript tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation, ej.pdfviewer.Annotation, ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView, ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner, ej.pdfviewer.PageOrganizer);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('dynamicStamp') && document.getElementById('dynamicStamp').addEventListener('click', function () {
+ pdfviewer.annotationModule.setAnnotationMode('Stamp', ej.pdfviewer.DynamicStampItem.NotApproved);
+});
+
+document.getElementById('signStamp') && document.getElementById('signStamp').addEventListener('click', function () {
+ pdfviewer.annotationModule.setAnnotationMode('Stamp', undefined, ej.pdfviewer.SignStampItem.Witness);
+});
+
+document.getElementById('standardBusinessStamp') && document.getElementById('standardBusinessStamp').addEventListener('click', function () {
+ pdfviewer.annotationModule.setAnnotationMode('Stamp', undefined, undefined, ej.pdfviewer.StandardBusinessStampItem.Approved);
+});
+
+document.getElementById('customStamp') && document.getElementById('customStamp').addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Stamp', {
+ offset: { x: 100, y: 440 },
+ width: 46,
+ height: 100,
+ pageNumber: 1,
+ isLock: true,
+ author: 'Guest',
+ customStamps: [{
+ customStampName: 'Image',
+ customStampImageSource: 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD...'
+ }]
+ });
+});
+{% endhighlight %}
+{% highlight javascript tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation, ej.pdfviewer.Annotation, ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView, ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner, ej.pdfviewer.PageOrganizer);
+
+var pdfviewer = new ej.pdfviewer.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');
+
+document.getElementById('dynamicStamp') && document.getElementById('dynamicStamp').addEventListener('click', function () {
+ pdfviewer.annotationModule.setAnnotationMode('Stamp', ej.pdfviewer.DynamicStampItem.NotApproved);
+});
+
+document.getElementById('signStamp') && document.getElementById('signStamp').addEventListener('click', function () {
+ pdfviewer.annotationModule.setAnnotationMode('Stamp', undefined, ej.pdfviewer.SignStampItem.Witness);
+});
+
+document.getElementById('standardBusinessStamp') && document.getElementById('standardBusinessStamp').addEventListener('click', function () {
+ pdfviewer.annotationModule.setAnnotationMode('Stamp', undefined, undefined, ej.pdfviewer.StandardBusinessStampItem.Approved);
+});
+{% endhighlight %}
+{% endtabs %}
+
+### Add Stamp Annotation programmatically
+
+Create stamps via addAnnotation.
+
+```html
+
+
+
+
+```
+
+{% tabs %}
+{% highlight javascript tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation, ej.pdfviewer.Annotation, ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView, ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner, ej.pdfviewer.PageOrganizer);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addDynamic') && document.getElementById('addDynamic').addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Stamp', {
+ offset: { x: 200, y: 140 }, pageNumber: 1
+ }, ej.pdfviewer.DynamicStampItem.Approved);
+});
+
+document.getElementById('addSign') && document.getElementById('addSign').addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Stamp', {
+ offset: { x: 200, y: 240 }, pageNumber: 1
+ }, undefined, ej.pdfviewer.SignStampItem.Witness);
+});
+
+document.getElementById('addStandard') && document.getElementById('addStandard').addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Stamp', {
+ offset: { x: 200, y: 340 }, pageNumber: 1
+ }, undefined, undefined, ej.pdfviewer.StandardBusinessStampItem.Approved);
+});
+
+document.getElementById('addCustom') && document.getElementById('addCustom').addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Stamp', {
+ offset: { x: 100, y: 440 }, width: 46, height: 100, pageNumber: 1, isLock: true,
+ author: 'Guest',
+ customStamps: [{ customStampName: 'Image', customStampImageSource: 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD...' }]
+ });
+});
+{% endhighlight %}
+{% highlight javascript tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation, ej.pdfviewer.Annotation, ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView, ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner, ej.pdfviewer.PageOrganizer);
+
+var pdfviewer = new ej.pdfviewer.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');
+
+document.getElementById('addDynamic') && document.getElementById('addDynamic').addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Stamp', {
+ offset: { x: 200, y: 140 }, pageNumber: 1
+ }, ej.pdfviewer.DynamicStampItem.Approved);
+});
+
+document.getElementById('addSign') && document.getElementById('addSign').addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Stamp', {
+ offset: { x: 200, y: 240 }, pageNumber: 1
+ }, undefined, ej.pdfviewer.SignStampItem.Witness);
+});
+
+document.getElementById('addStandard') && document.getElementById('addStandard').addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Stamp', {
+ offset: { x: 200, y: 340 }, pageNumber: 1
+ }, undefined, undefined, ej.pdfviewer.StandardBusinessStampItem.Approved);
+});
+
+document.getElementById('addCustom') && document.getElementById('addCustom').addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Stamp', {
+ offset: { x: 100, y: 440 }, width: 46, height: 100, pageNumber: 1, isLock: true,
+ author: 'Guest',
+ customStamps: [{ customStampName: 'Image', customStampImageSource: 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD...' }]
+ });
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Edit Stamp Annotation
+
+### Edit Stamp Annotation in UI
+
+You can select, move, resize, rotate, and delete Stamp annotations directly in the viewer:
+- 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.
+- Rotate: drag the rotation handle to rotate the stamp.
+- Delete or access more options from the context menu.
+
+Use the toolbar to change appearance:
+- Adjust Opacity using the Edit Opacity tool.
+
+### Edit Stamp Annotation programmatically
+
+Use editAnnotation to change bounds or lock state.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight javascript tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation, ej.pdfviewer.Annotation, ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView, ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner, ej.pdfviewer.PageOrganizer);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('editStamp') && document.getElementById('editStamp').addEventListener('click', function () {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].shapeAnnotationType === 'stamp') {
+ var width = pdfviewer.annotationCollection[i].bounds.width;
+ var height = pdfviewer.annotationCollection[i].bounds.height;
+ pdfviewer.annotationCollection[i].bounds = { x: 100, y: 100, width: width, height: height };
+ pdfviewer.annotationCollection[i].annotationSettings.isLock = true;
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% highlight javascript tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation, ej.pdfviewer.Annotation, ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView, ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner, ej.pdfviewer.PageOrganizer);
+
+var pdfviewer = new ej.pdfviewer.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');
+
+document.getElementById('editStamp') && document.getElementById('editStamp').addEventListener('click', function () {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].shapeAnnotationType === 'stamp') {
+ var width = pdfviewer.annotationCollection[i].bounds.width;
+ var height = pdfviewer.annotationCollection[i].bounds.height;
+ pdfviewer.annotationCollection[i].bounds = { x: 100, y: 100, width: width, height: height };
+ pdfviewer.annotationCollection[i].annotationSettings.isLock = true;
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Default stamp settings during initialization
+
+Set defaults using stampSettings.
+
+{% tabs %}
+{% highlight javascript tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation, ej.pdfviewer.Annotation, ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView, ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner, ej.pdfviewer.PageOrganizer);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.stampSettings = { opacity: 0.3, author: 'Guest User' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight javascript tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation, ej.pdfviewer.Annotation, ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView, ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner, ej.pdfviewer.PageOrganizer);
+
+var pdfviewer = new ej.pdfviewer.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.stampSettings = { opacity: 0.3, author: 'Guest User' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples/tree/master)
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation before creating the control using `StampSettings`.
+
+> 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 Stamp settings.
+
+```html
+
+```
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer,
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+//Apply Stamp Settings while adding individual Annotation
+document.getElementById('Stamp')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Stamp', {
+ offset: { x: 200, y: 140 }, pageNumber: 1,
+ opacity: 0.3, author: 'Guest User'
+ } ,'Approved');
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer,
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+
+//Apply Stamp Settings while adding individual Annotation
+document.getElementById('Stamp')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Stamp', {
+ offset: { x: 200, y: 140 }, pageNumber: 1,
+ opacity: 0.3, author: 'Guest User'
+ } ,'Approved');
+});
+{% endhighlight %}
+{% endtabs %}
+
+## See also
+
+- [Annotation Overview](../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)
\ No newline at end of file
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
new file mode 100644
index 000000000..f35f0ff36
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/sticky-notes-annotation.md
@@ -0,0 +1,381 @@
+---
+layout: post
+title: Sticky notes annotation in JavaScript PDF Viewer | Syncfusion
+description: Learn to add, edit, delete, and customize Sticky Notes annotations in Syncfusion JavaScript PDF Viewer, with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Sticky notes annotation in JavaScript PDF Viewer
+
+Sticky Notes are comment annotations used to leave notes, replies, and review statuses anywhere on a page.
+
+
+
+## Add Annotation
+
+### Add Annotation in UI
+
+Use the Comments tool:
+- 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:
+- Select a sticky note, right‑click, and choose Comment.
+- Add comments, replies, and statuses in the panel.
+
+
+
+### Add Annotation programmatically
+
+Use addAnnotation to programmatically create a sticky note.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('stickyNote').addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('StickyNotes', {
+ offset: { x: 100, y: 200 },
+ pageNumber: 1,
+ isLock: false
+ });
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var 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');
+
+document.getElementById('stickyNote').addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('StickyNotes', {
+ offset: { x: 100, y: 200 },
+ pageNumber: 1,
+ isLock: false
+ });
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Edit Annotation
+
+### Edit Annotation in UI
+
+You can select and manage sticky notes directly in the viewer:
+- 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.
+- Open comments: right-click the note and choose Comment, or use the Comment Panel button.
+
+#### Edit the properties of sticky note annotations
+
+#### Editing opacity
+
+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.
+
+* 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.
+
+ 
+
+### Edit Annotation programmatically
+
+Use editAnnotation to update an existing note's bounds.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('editSticky').addEventListener('click', function () {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].shapeAnnotationType === 'sticky') {
+ var width = pdfviewer.annotationCollection[i].bounds.width;
+ var height = pdfviewer.annotationCollection[i].bounds.height;
+ pdfviewer.annotationCollection[i].bounds = { x: 100, y: 100, width: width, height: height };
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var 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');
+
+document.getElementById('editSticky').addEventListener('click', function () {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].shapeAnnotationType === 'sticky') {
+ var width = pdfviewer.annotationCollection[i].bounds.width;
+ var height = pdfviewer.annotationCollection[i].bounds.height;
+ pdfviewer.annotationCollection[i].bounds = { x: 100, y: 100, width: width, height: height };
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Default Sticky Notes settings during initialization
+
+Set defaults using stickyNotesSettings.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.stickyNotesSettings = { author: 'Syncfusion' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var 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.stickyNotesSettings = { author: 'Syncfusion' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation 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.
+
+Refer to the following code snippet to set the default StickyNotes settings.
+
+```html
+
+```
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation, ej.pdfviewer.Annotation, ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView, ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner, ej.pdfviewer.PageOrganizer);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+//Apply StickyNotes Settings while adding individual Annotation
+document.getElementById('StickyNotes')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('StickyNotes', {
+ offset: { x: 100, y: 200 },
+ pageNumber: 1,
+ isLock: false,
+ author: 'Syncfusion'
+ });
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation, ej.pdfviewer.Annotation, ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView, ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner, ej.pdfviewer.PageOrganizer);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+
+//Apply StickyNotes Settings while adding individual Annotation
+document.getElementById('StickyNotes')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('StickyNotes', {
+ offset: { x: 100, y: 200 },
+ pageNumber: 1,
+ isLock: false,
+ author: 'Syncfusion'
+ });
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Disable Sticky Notes
+
+Disable the feature by setting enableStickyNotesAnnotation to false.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.enableStickyNotesAnnotation = false;
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var 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.enableStickyNotesAnnotation = false;
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../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)
\ No newline at end of file
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
new file mode 100644
index 000000000..b9925d52c
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/strikethrough-annotation.md
@@ -0,0 +1,537 @@
+---
+layout: post
+title: Strikethrough annotation in JavaScript PDF Viewer | Syncfusion
+description: Learn to add, edit, delete, and customize Strikethrough text markup annotations in Syncfusion JavaScript PDF Viewer, with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Strikethrough annotation in JavaScript PDF Viewer
+
+The PDF Viewer provides options to add, edit, and delete Strikethrough annotations on text. You can add strikethrough via the UI (context menu or annotation toolbar) and programmatically. You can also customize color, opacity, author/subject, and default settings, and use undo/redo, save, print, or disable them as needed.
+
+
+
+## Add strikethrough annotation
+
+### Add strikethrough annotation via UI
+
+You can add strikethrough in two ways:
+
+1. Using the context menu
+* Select text in the PDF document and right-click it.
+* Choose **Strikethrough** in the context menu.
+
+
+
+
+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**.
+
+
+
+When pan mode is active and a text markup mode is entered, the PDF Viewer switches to text selection mode to enable selection.
+
+### Enable strikethrough mode
+
+Use the following code to switch the viewer into strikethrough mode.
+
+{% tabs %}
+{% highlight js tabtitle="index.js" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.FormFields
+);
+
+var pdfviewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('set').addEventListener('click', function () {
+ pdfviewer.annotation.setAnnotationMode('Strikethrough');
+});
+{% endhighlight %}
+{% highlight html tabtitle="index.html" %}
+
+
+
+ EJ2 PDF Viewer
+
+
+
+
+
+
+
+
+
+
+
Loading....
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+N> To set up the **server-backed PDF Viewer**,
+Add the below `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/strikethrough-mode-cs1" %}
+
+#### Exit strikethrough mode
+
+Use the following code to switch back to normal mode.
+
+{% tabs %}
+{% highlight js tabtitle="index.js" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.FormFields
+);
+
+var pdfviewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('set').addEventListener('click', function () {
+ pdfviewer.annotation.setAnnotationMode('Strikethrough');
+});
+
+document.getElementById('setNone').addEventListener('click', function () {
+ pdfviewer.annotation.setAnnotationMode('None');
+});
+{% endhighlight %}
+{% highlight html tabtitle="index.html" %}
+
+
+
+ EJ2 PDF Viewer
+
+
+
+
+
+
+
+
+
+
+
Loading....
+
+
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+N> To set up the **server-backed PDF Viewer**,
+Add the below `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/strikethrough-normal-mode-cs1" %}
+
+### Add strikethrough annotation programmatically
+
+Programmatically add strikethrough using the [addAnnotation](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#addannotation) method.
+
+Example:
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+var strikethrough = document.getElementById('strikethrough');
+if (strikethrough) {
+ strikethrough.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Strikethrough', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1
+ });
+ });
+}
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var 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');
+
+var strikethrough = document.getElementById('strikethrough');
+if (strikethrough) {
+ strikethrough.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Strikethrough', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1
+ });
+ });
+}
+{% endhighlight %}
+{% endtabs %}
+
+## Edit strikethrough annotation
+
+### Edit strikethrough annotation 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.
+
+#### 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.
+
+
+
+#### Delete strikethrough annotation
+
+- Select the annotation and press Delete, or
+- Click **Delete Annotation** in the annotation toolbar.
+
+
+
+#### 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.
+
+### Edit an existing strikethrough annotation programmatically
+
+To modify an existing strikethrough annotation programmatically, use the editAnnotation() method. Example:
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+var editStrikethroughAnnotation = document.getElementById('editStrikethroughAnnotation');
+if (editStrikethroughAnnotation) {
+ editStrikethroughAnnotation.addEventListener('click', function () {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ // Update the first available Strikethrough annotation
+ if (pdfviewer.annotationCollection[i].textMarkupAnnotationType === 'Strikethrough') {
+ pdfviewer.annotationCollection[i].color = '#ff0000';
+ pdfviewer.annotationCollection[i].opacity = 0.8;
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ break;
+ }
+ }
+ });
+}
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var 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');
+
+var editStrikethroughAnnotation = document.getElementById('editStrikethroughAnnotation');
+if (editStrikethroughAnnotation) {
+ editStrikethroughAnnotation.addEventListener('click', function () {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].textMarkupAnnotationType === 'Strikethrough') {
+ pdfviewer.annotationCollection[i].color = '#ff0000';
+ pdfviewer.annotationCollection[i].opacity = 0.8;
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ break;
+ }
+ }
+ });
+}
+{% endhighlight %}
+{% endtabs %}
+
+## Default strikethrough settings during initialization
+
+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.
+
+Refer to the following code snippet to set the default strikethrough settings.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.Annotation
+);
+
+var pdfviewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.strikethroughSettings = { author: 'Guest User', subject: 'Not Important', color: '#ff00ff', opacity: 0.9 };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.Annotation
+);
+
+var 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.strikethroughSettings = { author: 'Guest User', subject: 'Not Important', color: '#ff00ff', opacity: 0.9 };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation 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.
+
+Refer to the following code snippet to set the default highlight settings.
+
+```html
+
+```
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation, ej.pdfviewer.Annotation, ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView, ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner, ej.pdfviewer.PageOrganizer);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+//Apply Strikethrough Settings while adding individual Annotation
+document.getElementById('Strikethrough')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Strikethrough', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1,
+ author: 'User 1',
+ color: '#ffff00',
+ opacity: 0.9
+ });
+
+ pdfviewer.annotation.addAnnotation('Strikethrough', {
+ bounds: [{ x: 107, y: 220, width: 350, height: 14 }],
+ pageNumber: 1,
+ author: 'User 2',
+ color: '#ff1010ff',
+ opacity: 0.9
+ });
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation, ej.pdfviewer.Annotation, ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView, ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner, ej.pdfviewer.PageOrganizer);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+//Apply Strikethrough Settings while adding individual Annotation
+document.getElementById('Strikethrough')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Strikethrough', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1,
+ author: 'User 1',
+ color: '#ffff00',
+ opacity: 0.9
+ });
+
+ pdfviewer.annotation.addAnnotation('Strikethrough', {
+ bounds: [{ x: 107, y: 220, width: 350, height: 14 }],
+ pageNumber: 1,
+ author: 'User 2',
+ color: '#ff1010ff',
+ opacity: 0.9
+ });
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Disable strikethrough annotation
+
+Disable text markup annotations (including strikethrough) using the `enableTextMarkupAnnotation` property.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.Annotation
+);
+
+var pdfviewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.enableTextMarkupAnnotation = false;
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.Annotation
+);
+
+var 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.enableTextMarkupAnnotation = false;
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../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)
\ No newline at end of file
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
new file mode 100644
index 000000000..fee995225
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/underline-annotation.md
@@ -0,0 +1,533 @@
+---
+layout: post
+title: Underline annotation in JavaScript PDF Viewer | Syncfusion
+description: Learn to add, edit, delete, and customize Underline text markup annotations in Syncfusion JavaScript PDF Viewer, with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Underline annotation in JavaScript PDF Viewer
+
+The PDF Viewer provides options to add, edit, and delete Underline annotations on text. You can add underlines via the UI (context menu or annotation toolbar) and programmatically. You can also customize color, opacity, author/subject, and default settings, and use undo/redo, save, print, or disable them as needed.
+
+
+
+## Add underline annotation
+
+### Add underline annotation via UI
+
+You can add underlines in two ways:
+
+1. Using the context menu
+* Select text in the PDF document and right-click it.
+* Choose **Underline** in the context menu.
+
+
+
+
+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**.
+
+
+
+When pan mode is active and a text markup mode is entered, the PDF Viewer switches to text selection mode to enable selection.
+
+### Enable underline mode
+
+Use the following code to switch the viewer into underline mode.
+
+{% tabs %}
+{% highlight js tabtitle="index.js" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.FormFields
+);
+
+var pdfviewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('set').addEventListener('click', function () {
+ pdfviewer.annotation.setAnnotationMode('Underline');
+});
+{% endhighlight %}
+{% highlight html tabtitle="index.html" %}
+
+
+
+ EJ2 PDF Viewer
+
+
+
+
+
+
+
+
+
+
+
Loading....
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+N> To set up the **server-backed PDF Viewer**,
+Add the below `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/underline-mode-cs1" %}
+
+#### Exit underline mode
+
+Use the following code to switch back to normal mode.
+
+{% tabs %}
+{% highlight js tabtitle="index.js" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.FormFields
+);
+
+var pdfviewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('set').addEventListener('click', function () {
+ pdfviewer.annotation.setAnnotationMode('Underline');
+});
+
+document.getElementById('setNone').addEventListener('click', function () {
+ pdfviewer.annotation.setAnnotationMode('None');
+});
+{% endhighlight %}
+{% highlight html tabtitle="index.html" %}
+
+
+
+ EJ2 PDF Viewer
+
+
+
+
+
+
+
+
+
+
+
Loading....
+
+
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+N> To set up the **server-backed PDF Viewer**,
+Add the below `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/underline-normal-mode-cs1" %}
+
+### Add underline annotation programmatically
+
+Programmatically add underlines using the [addAnnotation](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#addannotation) method.
+
+Example:
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+var underline = document.getElementById('underline');
+if (underline) {
+ underline.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Underline', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1
+ });
+ });
+}
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var 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');
+
+var underline = document.getElementById('underline');
+if (underline) {
+ underline.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Underline', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1
+ });
+ });
+}
+{% endhighlight %}
+{% endtabs %}
+
+## Edit underline annotation
+
+### Edit underline annotation in UI
+
+The color and opacity of the underline annotation 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.
+
+
+
+#### Delete underline annotation
+
+- Select the annotation and press Delete, or
+- Click **Delete Annotation** in the annotation toolbar.
+
+
+
+### Edit an existing underline annotation programmatically
+
+To modify an existing underline annotation programmatically, use the editAnnotation() method. Example:
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+var editUnderlineAnnotation = document.getElementById('editUnderlineAnnotation');
+if (editUnderlineAnnotation) {
+ editUnderlineAnnotation.addEventListener('click', function () {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ // Update the first available Underline annotation
+ if (pdfviewer.annotationCollection[i].textMarkupAnnotationType === 'Underline') {
+ pdfviewer.annotationCollection[i].color = '#00aa00';
+ pdfviewer.annotationCollection[i].opacity = 0.8;
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ break;
+ }
+ }
+ });
+}
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var 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');
+
+var editUnderlineAnnotation = document.getElementById('editUnderlineAnnotation');
+if (editUnderlineAnnotation) {
+ editUnderlineAnnotation.addEventListener('click', function () {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].textMarkupAnnotationType === 'Underline') {
+ pdfviewer.annotationCollection[i].color = '#00aa00';
+ pdfviewer.annotationCollection[i].opacity = 0.8;
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ break;
+ }
+ }
+ });
+}
+{% endhighlight %}
+{% endtabs %}
+
+## Default underline settings during initialization
+
+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.
+
+Refer to the following code snippet to set the default underline settings.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.Annotation
+);
+
+var pdfviewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.underlineSettings = { author: 'Guest User', subject: 'Points to be remembered', color: '#00ffff', opacity: 0.9 };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.Annotation
+);
+
+var 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.underlineSettings = { author: 'Guest User', subject: 'Points to be remembered', color: '#00ffff', opacity: 0.9 };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation 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.
+
+Refer to the following code snippet to set the default highlight settings.
+
+```html
+
+```
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation, ej.pdfviewer.Annotation, ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView, ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner, ej.pdfviewer.PageOrganizer);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+//Apply Underline Settings while adding individual Annotation
+document.getElementById('underline')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Underline', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1,
+ author: 'User 1',
+ color: '#ffff00',
+ opacity: 0.9
+ });
+
+ pdfviewer.annotation.addAnnotation('Underline', {
+ bounds: [{ x: 107, y: 220, width: 350, height: 14 }],
+ pageNumber: 1,
+ author: 'User 2',
+ color: '#ff1010ff',
+ opacity: 0.9
+ });
+});
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation, ej.pdfviewer.Annotation, ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView, ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner, ej.pdfviewer.PageOrganizer);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+//Apply Underline Settings while adding individual Annotation
+document.getElementById('underline')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Underline', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1,
+ author: 'User 1',
+ color: '#ffff00',
+ opacity: 0.9
+ });
+
+ pdfviewer.annotation.addAnnotation('Underline', {
+ bounds: [{ x: 107, y: 220, width: 350, height: 14 }],
+ pageNumber: 1,
+ author: 'User 2',
+ color: '#ff1010ff',
+ opacity: 0.9
+ });
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Disable underline annotation
+
+Disable text markup annotations (including underline) using the `enableTextMarkupAnnotation` property.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.Annotation
+);
+
+var pdfviewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.enableTextMarkupAnnotation = false;
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.Annotation
+);
+
+var 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.enableTextMarkupAnnotation = false;
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../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)
\ No newline at end of file
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
new file mode 100644
index 000000000..7ad2863a1
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotation-types/volume-annotation.md
@@ -0,0 +1,446 @@
+---
+layout: post
+title: Volume annotation in JavaScript PDF Viewer | Syncfusion
+description: Learn to add, edit, and customize Volume measurement annotations in Syncfusion JavaScript PDF Viewer with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Volume annotation in JavaScript PDF Viewer
+
+Volume is a measurement annotation used to calculate the volume of a rectangular prism area in the PDF.
+
+
+
+## Add Volume Annotation
+
+### 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.
+
+N> When in pan mode, selecting a measurement annotation 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.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+var volumeModeBtn = document.getElementById('volumeMode');
+if (volumeModeBtn) {
+ volumeModeBtn.addEventListener('click', function () {
+ pdfviewer.annotation.setAnnotationMode('Volume');
+ });
+}
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var 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');
+
+var volumeModeBtn = document.getElementById('volumeMode');
+if (volumeModeBtn) {
+ volumeModeBtn.addEventListener('click', function () {
+ pdfviewer.annotation.setAnnotationMode('Volume');
+ });
+}
+{% endhighlight %}
+{% endtabs %}
+
+#### Exit volume mode
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Common" %}
+var setNoneBtn = document.getElementById('setNone');
+if (setNoneBtn) {
+ setNoneBtn.addEventListener('click', function () {
+ pdfviewer.annotation.setAnnotationMode('None');
+ });
+}
+{% endhighlight %}
+{% endtabs %}
+
+### Add a volume annotation programmatically
+
+Add measurement annotations programmatically using the [addAnnotation()](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#annotation) method.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+var addVolBtn = document.getElementById('addVolumeAnnotation');
+if (addVolBtn) {
+ addVolBtn.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Volume', {
+ offset: { x: 200, y: 810 },
+ pageNumber: 1,
+ vertexPoints: [
+ { x: 200, y: 810 }, { x: 200, y: 919 }, { x: 320, y: 919 }, { x: 320, y: 809 }, { x: 200, y: 810 }
+ ]
+ });
+ });
+}
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var 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');
+
+var addVolBtn = document.getElementById('addVolumeAnnotation');
+if (addVolBtn) {
+ addVolBtn.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Volume', {
+ offset: { x: 200, y: 810 },
+ pageNumber: 1,
+ vertexPoints: [
+ { x: 200, y: 810 }, { x: 200, y: 919 }, { x: 320, y: 919 }, { x: 320, y: 809 }, { x: 200, y: 810 }
+ ]
+ });
+ });
+}
+{% endhighlight %}
+{% endtabs %}
+
+## Edit Volume Annotation
+
+### Edit volume annotation in UI
+
+You can select, move, and resize Volume annotations directly in the viewer:
+- 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.
+- Delete or access more options from the context menu.
+
+#### Edit the properties of volume 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.
+
+#### 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
+
+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 an existing volume annotation programmatically
+
+Use editAnnotation on items from annotationCollection.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+var editVolBtn = document.getElementById('editVolumeAnnotation');
+if (editVolBtn) {
+ editVolBtn.addEventListener('click', function () {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Volume calculation') {
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].opacity = 0.8;
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+ });
+}
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var 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');
+
+var editVolBtn = document.getElementById('editVolumeAnnotation');
+if (editVolBtn) {
+ editVolBtn.addEventListener('click', function () {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Volume calculation') {
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].opacity = 0.8;
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+ });
+}
+{% endhighlight %}
+{% endtabs %}
+
+## Default volume settings during initialization
+
+Set default [volumeSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#volumesettings) before creating the control.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.volumeSettings = { fillColor: 'pink', opacity: 0.6, strokeColor: 'yellow' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var 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.volumeSettings = { fillColor: 'pink', opacity: 0.6, strokeColor: 'yellow' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## Scale ratio and units
+
+You can modify scale ratio and units using the Scale Ratio option in the context menu.
+
+
+
+Supported units:
+- Inch, Millimeter, Centimeter, Point, Pica, Feet
+
+
+
+Set defaults via measurementSettings:
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.measurementSettings = { scaleRatio: 2, conversionUnit: 'cm', displayUnit: 'cm' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+var PdfViewer = ej.pdfviewer.PdfViewer;
+PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var 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.measurementSettings = { scaleRatio: 2, conversionUnit: 'cm', displayUnit: 'cm' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../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/javascript-es5/annotations/annotations-api.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotations-api.md
new file mode 100644
index 000000000..4c4da1a46
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotations-api.md
@@ -0,0 +1,1344 @@
+---
+layout: post
+title: Annotations API in JavaScript PDF Viewer | Syncfusion
+description: Learn how to read and configure annotations using APIs in the Syncfusion JavaScript PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Annotations API in JavaScript PDF Viewer
+
+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/documentation/api/pdfviewer/index-default#annotationcollection) | Gets the loaded document annotation collection. |
+| [annotationDrawingOptions](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#annotationdrawingoptions) | Options to configure line-type annotation drawing behavior. |
+| [annotationSelectorSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#annotationselectorsettings) | Configures the annotation selector (selection UI). |
+| [annotationSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#annotationsettings) | Global defaults for all annotations. |
+| [areaSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#areasettings) | Defaults for Area annotations. |
+| [arrowSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#arrowsettings) | Defaults for Arrow annotations. |
+| [circleSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#circlesettings) | Defaults for Circle annotations. |
+| [customStamp](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#customstamp) | Defines custom stamp items. |
+| [customStampSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#customstampsettings) | Defaults for Custom Stamp annotations. |
+| [distanceSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#distancesettings) | Defaults for Distance annotations. |
+
+## annotationCollection
+
+Gets the loaded document annotation collection from the viewer instance.
+
+```html
+
+
+```
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+const btn = document.getElementById('logAnnot');
+if (btn) {
+ btn.addEventListener('click', () => {
+ console.log(pdfviewer.annotationCollection);
+ });
+}
+{% endhighlight %}
+{% endtabs %}
+
+## annotationDrawingOptions
+
+Options for configuring line-type annotation drawing behavior.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+
+pdfviewer.annotationDrawingOptions.enableLineAngleConstraints = true;
+pdfviewer.annotationDrawingOptions.restrictLineAngleTo = 90;
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## annotationSelectorSettings
+
+Defines the settings of the annotation selector.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AnnotationResizerLocation, CursorType } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+
+pdfviewer.annotationSelectorSettings = {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'red',
+ resizerFillColor: '#4070ff',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Circle',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,
+ resizerCursorType: CursorType.grab
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## annotationSettings
+
+Defines the global settings of annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+
+pdfviewer.annotationSettings = {
+ author: 'XYZ',
+ minHeight: 10,
+ minWidth: 10,
+ maxWidth: 100,
+ maxHeight: 100,
+ isLock: false,
+ skipPrint: false,
+ skipDownload: false,
+ allowedInteractions: [AllowedInteraction.Resize]
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## areaSettings
+
+Defines the defaults for Area annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+
+pdfviewer.areaSettings = {
+ opacity: 1,
+ fillColor: '#ffffff00',
+ strokeColor: '#ff0000',
+ author: 'XYZ',
+ thickness: 1,
+ minHeight: 10,
+ minWidth: 10,
+ maxWidth: 100,
+ maxHeight: 100,
+ isLock: false,
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'white',
+ resizerFillColor: '#4070ff',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Circle',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,
+ resizerCursorType: CursorType.grab
+ },
+ allowedInteractions: [AllowedInteraction.Resize],
+ isPrint: true
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## arrowSettings
+
+Defines the defaults for Arrow annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+
+pdfviewer.arrowSettings = {
+ opacity: 1,
+ fillColor: '#9c2592',
+ strokeColor: '#ff0000',
+ author: 'XYZ',
+ thickness: 1,
+ borderDashArray: 1,
+ lineHeadStartStyle: 'Closed',
+ lineHeadEndStyle: 'Closed',
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'black',
+ resizerFillColor: '#FF4081',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Square',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,
+ resizerCursorType: CursorType.grab
+ },
+ minHeight: 10,
+ minWidth: 10,
+ maxWidth: 100,
+ maxHeight: 0,
+ isLock: false,
+ allowedInteractions: [AllowedInteraction.Resize],
+ isPrint: true
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## circleSettings
+
+Defines the defaults for Circle annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+
+pdfviewer.circleSettings = {
+ opacity: 1,
+ fillColor: '#9c2592',
+ strokeColor: '#ff0000',
+ author: 'XYZ',
+ thickness: 1,
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'black',
+ resizerFillColor: '#FF4081',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Square',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,
+ resizerCursorType: CursorType.grab
+ },
+ minHeight: 10,
+ minWidth: 10,
+ maxWidth: 100,
+ maxHeight: 100,
+ isLock: false,
+ allowedInteractions: [AllowedInteraction.Resize],
+ isPrint: true
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## customStamp
+
+Defines custom stamp items of the PDF Viewer.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+
+pdfviewer.customStamp = [
+ {
+ customStampName: 'Sample',
+ customStampImageSource: 'data:image/png;base64, Syncfusionpdfviewer'
+ }
+];
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## customStampSettings
+
+Defines the defaults for Custom Stamp annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+
+pdfviewer.customStampSettings = {
+ opacity: 1,
+ author: 'XYZ',
+ width: 100,
+ height: 100,
+ left: 200,
+ top: 200,
+ minHeight: 10,
+ minWidth: 10,
+ maxWidth: 100,
+ maxHeight: 100,
+ isLock: false,
+ enableCustomStamp: true,
+ allowedInteractions: [AllowedInteraction.None],
+ isPrint: true
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## distanceSettings
+
+Defines the defaults for Distance annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+
+pdfviewer.distanceSettings = {
+ opacity: 1,
+ fillColor: '#ffffff00',
+ strokeColor: '#ff0000',
+ author: 'Guest',
+ thickness: 1,
+ borderDashArray: 1,
+ lineHeadStartStyle: 'Closed',
+ lineHeadEndStyle: 'Closed',
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'black',
+ resizerFillColor: '#FF4081',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Square',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,
+ resizerCursorType: CursorType.grab
+ },
+ minHeight: 10,
+ minWidth: 10,
+ maxWidth: 100,
+ maxHeight: 100,
+ isLock: false,
+ leaderLength: 40,
+ resizeCursorType: CursorType.move,
+ allowedInteractions: [AllowedInteraction.Resize],
+ isPrint: true
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## enableAnnotation
+
+Enable or disable the Add/Edit Annotations tool in the toolbar.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.enableAnnotation = false;
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## enableAnnotationToolbar
+
+Show or hide the annotation toolbar when the document loads.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.enableAnnotationToolbar = false;
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## enableFreeText
+
+Enable or disable Free Text annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.enableFreeText = false;
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## enableHandwrittenSignature
+
+Enable or disable the handwritten signature feature.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.enableHandwrittenSignature = false;
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## enableInkAnnotation
+
+Enable or disable Ink annotations (true by default).
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.enableInkAnnotation = false;
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## enableMeasureAnnotation
+
+Enable or disable calibrate/measurement annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.enableMeasureAnnotation = false;
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## enableMultiPageAnnotation
+
+Enable or disable multi-page text markup selection in UI.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+
+pdfviewer.enableMultiPageAnnotation = true;
+
+pdfviewer.appendTo('#PdfViewer');
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/FormDesigner.pdf';
+{% endhighlight %}
+{% endtabs %}
+
+## enableShapeAnnotation
+
+Enable or disable shape annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.enableShapeAnnotation = false;
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## enableShapeLabel
+
+Enable or disable labels for shape annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.enableShapeLabel = true;
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## enableStampAnnotations
+
+Enable or disable stamp annotations at load time.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.enableStampAnnotations = false;
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## enableStickyNotesAnnotation
+
+Enable or disable sticky notes annotations at load time.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.enableStickyNotesAnnotation = false;
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## enableTextMarkupAnnotation
+
+Enable or disable text markup annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.enableTextMarkupAnnotation = false;
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## enableTextMarkupResizer
+
+Enable or disable the text markup resizer to modify bounds in the UI.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+
+pdfviewer.enableTextMarkupResizer = true;
+
+pdfviewer.appendTo('#PdfViewer');
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/FormDesigner.pdf';
+{% endhighlight %}
+{% endtabs %}
+
+## exportAnnotationFileName
+
+Gets or sets the exported annotations JSON file name.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.exportAnnotationFileName = 'Annotation export file_1';
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## freeTextSettings
+
+Defines the defaults for Free Text annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, FontStyle, AnnotationResizerLocation, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.freeTextSettings = {
+ opacity: 1,
+ fillColor: '#ffffff00',
+ borderColor: '#4070ff',
+ author: 'XYZ',
+ borderWidth: 1,
+ width: 151,
+ fontSize: 16,
+ height: 24.6,
+ fontColor: '#000',
+ fontFamily: 'Helvetica',
+ defaultText: 'Type Here',
+ textAlignment: 'Right',
+ fontStyle: FontStyle.Italic,
+ allowTextOnly: false,
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'black',
+ resizerFillColor: '#FF4081',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Circle',
+ selectorLineDashArray: [],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,
+ resizerCursorType: null
+ },
+ minHeight: 10,
+ minWidth: 10,
+ maxWidth: 100,
+ maxHeight: 100,
+ isLock: false,
+ allowedInteractions: [AllowedInteraction.None],
+ isPrint: true,
+ isReadonly: false,
+ enableAutoFit: false
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## handWrittenSignatureSettings
+
+Defines the defaults for handwritten signatures.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, DisplayMode, AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.handWrittenSignatureSettings = {
+ signatureItem: ['Signature', 'Initial'],
+ saveSignatureLimit: 1,
+ saveInitialLimit: 1,
+ opacity: 1,
+ strokeColor: '#000000',
+ width: 150,
+ height: 100,
+ thickness: 1,
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'black',
+ resizerFillColor: '#FF4081',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Circle',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,
+ resizerCursorType: CursorType.grab
+ },
+ allowedInteractions: [AllowedInteraction.Resize],
+ signatureDialogSettings: {
+ displayMode: DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload,
+ hideSaveSignature: false
+ },
+ initialDialogSettings: {
+ displayMode: DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload,
+ hideSaveSignature: false
+ }
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## highlightSettings
+
+Defines the defaults for Highlight annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AnnotationResizerLocation, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.highlightSettings = {
+ opacity: 1,
+ color: '#DAFF56',
+ author: 'XYZ',
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'black',
+ resizerFillColor: '#FF4081',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Square',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges
+ },
+ isLock: false,
+ enableMultiPageAnnotation: false,
+ enableTextMarkupResizer: false,
+ allowedInteractions: [AllowedInteraction.Resize],
+ isPrint: true
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## inkAnnotationSettings
+
+Defines the defaults for Ink annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.inkAnnotationSettings = {
+ author: 'XYZ',
+ opacity: 1,
+ strokeColor: '#ff0000',
+ thickness: 1,
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'black',
+ resizerFillColor: '#FF4081',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Circle',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,
+ resizerCursorType: CursorType.grab
+ },
+ isLock: false,
+ allowedInteractions: [AllowedInteraction.Resize],
+ isPrint: true
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## isAnnotationToolbarVisible
+
+Open the annotation toolbar initially and read its visibility state.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+
+pdfviewer.isAnnotationToolbarVisible = true;
+
+pdfviewer.appendTo('#PdfViewer');
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/FormDesigner.pdf';
+{% endhighlight %}
+{% endtabs %}
+
+## lineSettings
+
+Defines the defaults for Line annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AnnotationResizerLocation, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.lineSettings = {
+ opacity: 1,
+ color: '#9c2592',
+ fillColor: '#ffffff00',
+ strokeColor: '#ff0000',
+ author: 'XYZ',
+ thickness: 1,
+ borderDashArray: 1,
+ lineHeadStartStyle: 'None',
+ lineHeadEndStyle: 'None',
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'black',
+ resizerFillColor: '#FF4081',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Square',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,
+ resizerCursorType: null
+ },
+ minHeight: 10,
+ minWidth: 10,
+ maxWidth: 100,
+ maxHeight: 100,
+ isLock: false,
+ allowedInteractions: [AllowedInteraction.Resize],
+ isPrint: true
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## measurementSettings
+
+Defines the defaults for Measurement annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.measurementSettings = {
+ conversionUnit: 'cm',
+ displayUnit: 'cm',
+ scaleRatio: 1,
+ depth: 96
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## perimeterSettings
+
+Defines the defaults for Perimeter annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.perimeterSettings = {
+ opacity: 1,
+ fillColor: '#ffffff00',
+ strokeColor: '#ff0000',
+ author: 'XYZ',
+ thickness: 1,
+ borderDashArray: 1,
+ lineHeadStartStyle: 'Open',
+ lineHeadEndStyle: 'Open',
+ minHeight: 10,
+ minWidth: 10,
+ maxWidth: 100,
+ maxHeight: 100,
+ isLock: false,
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'black',
+ resizerFillColor: '#4070ff',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Circle',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,
+ resizerCursorType: CursorType.grab
+ },
+ allowedInteractions: [AllowedInteraction.Resize],
+ isPrint: true
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## polygonSettings
+
+Defines the defaults for Polygon annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.polygonSettings = {
+ opacity: 1,
+ fillColor: '#ffffff00',
+ strokeColor: '#ff0000',
+ author: 'XYZ',
+ thickness: 1,
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'black',
+ resizerFillColor: '#FF4081',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Square',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,
+ resizerCursorType: CursorType.grab
+ },
+ minHeight: 10,
+ minWidth: 10,
+ maxWidth: 100,
+ maxHeight: 100,
+ isLock: false,
+ allowedInteractions: [AllowedInteraction.Resize],
+ isPrint: true
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## radiusSettings
+
+Defines the defaults for Radius annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.radiusSettings = {
+ opacity: 1,
+ fillColor: '#ffffff00',
+ strokeColor: '#ff0000',
+ author: 'XYZ',
+ thickness: 1,
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'red',
+ resizerFillColor: '#4070ff',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Circle',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,
+ resizerCursorType: CursorType.grab
+ },
+ minHeight: 10,
+ minWidth: 10,
+ maxWidth: 100,
+ maxHeight: 100,
+ isLock: false,
+ allowedInteractions: [AllowedInteraction.Resize],
+ isPrint: true
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## rectangleSettings
+
+Defines the defaults for Rectangle annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.rectangleSettings = {
+ opacity: 1,
+ fillColor: '#9c2592',
+ strokeColor: '#ff0000',
+ author: 'XYZ',
+ thickness: 1,
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'black',
+ resizerFillColor: '#FF4081',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Square',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,
+ resizerCursorType: CursorType.grab
+ },
+ minHeight: 10,
+ minWidth: 10,
+ maxWidth: 100,
+ maxHeight: 100,
+ isLock: false,
+ allowedInteractions: [AllowedInteraction.Resize],
+ isPrint: true
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## shapeLabelSettings
+
+Defines the defaults for shape labels.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.enableShapeLabel = true;
+pdfviewer.shapeLabelSettings = {
+ opacity: 1,
+ fillColor: '#9c2592',
+ borderColor: '#ff0000',
+ fontColor: '#000',
+ fontSize: 16,
+ labelHeight: 24.6,
+ labelMaxWidth: 151,
+ labelContent: 'XYZ'
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## stampSettings
+
+Defines the defaults for Stamp annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AnnotationResizerLocation, DynamicStampItem, SignStampItem, StandardBusinessStampItem, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.stampSettings = {
+ opacity: 1,
+ author: 'XYZ',
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'red',
+ resizerFillColor: '#FF4081',
+ resizerSize: 8,
+ selectionBorderThickness: 5,
+ resizerShape: 'Circle',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,
+ resizerCursorType: CursorType.grab
+ },
+ minHeight: 10,
+ minWidth: 10,
+ maxWidth: 100,
+ maxHeight: 100,
+ isLock: false,
+ dynamicStamps: [
+ DynamicStampItem.Revised,
+ DynamicStampItem.Reviewed,
+ DynamicStampItem.Received,
+ DynamicStampItem.Confidential,
+ DynamicStampItem.Approved,
+ DynamicStampItem.NotApproved
+ ],
+ signStamps: [
+ SignStampItem.Witness,
+ SignStampItem.InitialHere,
+ SignStampItem.SignHere,
+ SignStampItem.Accepted,
+ SignStampItem.Rejected
+ ],
+ standardBusinessStamps: [
+ StandardBusinessStampItem.Approved,
+ StandardBusinessStampItem.NotApproved,
+ StandardBusinessStampItem.Draft,
+ StandardBusinessStampItem.Final,
+ StandardBusinessStampItem.Completed,
+ StandardBusinessStampItem.Confidential,
+ StandardBusinessStampItem.ForPublicRelease,
+ StandardBusinessStampItem.NotForPublicRelease,
+ StandardBusinessStampItem.ForComment,
+ StandardBusinessStampItem.Void,
+ StandardBusinessStampItem.PreliminaryResults,
+ StandardBusinessStampItem.InformationOnly
+ ],
+ allowedInteractions: [AllowedInteraction.Resize],
+ isPrint: true
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## stickyNotesSettings
+
+Defines the defaults for Sticky Notes annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.stickyNotesSettings = {
+ author: 'XYZ',
+ opacity: 1,
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'red',
+ resizerFillColor: '#4070ff',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Circle',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,
+ resizerCursorType: CursorType.grab
+ },
+ isLock: false,
+ allowedInteractions: [AllowedInteraction.Resize],
+ isPrint: true
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## strikethroughSettings
+
+Defines the defaults for Strikethrough annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AnnotationResizerLocation, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.strikethroughSettings = {
+ opacity: 1,
+ color: '#DAFF56',
+ author: 'XYZ',
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'black',
+ resizerFillColor: '#FF4081',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Square',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges
+ },
+ isLock: false,
+ enableMultiPageAnnotation: false,
+ enableTextMarkupResizer: false,
+ allowedInteractions: [AllowedInteraction.Resize],
+ isPrint: true
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## underlineSettings
+
+Defines the defaults for Underline annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AnnotationResizerLocation, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.underlineSettings = {
+ opacity: 1,
+ color: '#9c2592',
+ author: 'XYZ',
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'black',
+ resizerFillColor: '#FF4081',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Square',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges
+ },
+ isLock: false,
+ enableMultiPageAnnotation: false,
+ enableTextMarkupResizer: false,
+ allowedInteractions: [AllowedInteraction.Resize],
+ isPrint: true
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## volumeSettings
+
+Defines the defaults for Volume annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.volumeSettings = {
+ opacity: 1,
+ fillColor: '#ffffff00',
+ strokeColor: '#ff0000',
+ author: 'XYZ',
+ thickness: 1,
+ minHeight: 10,
+ minWidth: 10,
+ maxWidth: 100,
+ maxHeight: 100,
+ isLock: false,
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'black',
+ resizerFillColor: '#4070ff',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Circle',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,
+ resizerCursorType: CursorType.grab
+ },
+ allowedInteractions: [AllowedInteraction.Resize],
+ isPrint: true
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## 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 in Mobile View](../../annotations/annotations-in-mobile-view)
+- [Annotation Events](../../annotations/annotation-event)
\ No newline at end of file
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
new file mode 100644
index 000000000..f2690c2db
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotations-in-mobile-view.md
@@ -0,0 +1,136 @@
+---
+layout: post
+title: Annotations mobileView in JavaScript PDF Viewer control | Syncfusion
+description: Learn how to use annotations in mobile view with the Syncfusion JavaScript PDF Viewer (Essential JS 2).
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+# Annotations in mobile view in JavaScript PDF Viewer control
+
+## Open the annotation toolbar
+
+**Step 1:** Click Edit Annotation on the toolbar to enable the annotation toolbar.
+
+
+
+**Step 2:** The annotation toolbar appears below the main toolbar.
+
+
+
+## Add sticky note annotations
+
+**Step 1:** Click the Sticky Notes icon, then tap the page where the note should be placed.
+
+
+
+**Step 2:** Tap the page to add the sticky note annotation.
+
+
+
+## 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 2:** The text markup annotation is applied to the selected text.
+
+
+
+## Add shape and measurement annotations
+
+**Step 1:** Tap 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 3:** The annotation appears on the PDF page.
+
+
+
+## Add stamp annotations
+
+**Step 1:** Tap the Stamp icon and select a stamp type from the menu.
+
+
+
+**Step 2:** Tap 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 2:** The signature is added to the page.
+
+
+
+## Add ink annotations
+
+**Step 1:** Tap the Ink tool and draw on the page.
+
+
+
+**Step 2:** The ink annotation appears on the page.
+
+
+
+## Change annotation properties (before adding)
+
+**Step 1:** Change properties before placing the annotation.
+
+**Step 2:** Tap the annotation icon to open the property toolbar, adjust properties, then place the annotation on the page.
+
+
+
+## Change annotation properties (after adding)
+
+**Step 1:** Change annotation properties after adding the annotation.
+
+**Step 2:** Select the annotation to show the property toolbar, then adjust the properties.
+
+
+
+## Delete annotations
+
+**Step 1:** Select the annotation to show the property toolbar, then tap the Delete icon to remove it.
+
+
+
+## Open the comment panel
+
+**Step 1:** Open the comment panel using the icon in the property toolbar or the annotation toolbar.
+
+
+
+**Step 2:** The comment panel appears.
+
+
+
+## Close the comment panel
+
+**Step 1:** Tap the Close button to close the comment panel.
+
+
+
+## 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 Events](../annotations/annotation-event)
+- [Annotation API](../annotations/annotations-api)
\ No newline at end of file
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
new file mode 100644
index 000000000..1cb8f5ae8
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/annotations-undo-redo.md
@@ -0,0 +1,80 @@
+---
+layout: post
+title: Undo and Redo annotation in JavaScript PDF Viewer | Syncfusion
+description: Learn to undo and redo annotations changes in Syncfusion JavaScript PDF Viewer, with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Perform undo and redo in JavaScript
+
+The PDF Viewer supports undo and redo for Annotations.
+
+
+
+Undo and redo actions can be performed in the following ways:
+
+1. Using keyboard shortcuts:
+ After performing a highlight annotation action, press Ctrl+Z to undo and Ctrl+Y 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.
+
+```html
+
+
+
+
+```
+{% tabs %}
+{% highlight js tabtitle="index.js" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.FormFields
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('undo').addEventListener('click', function () {
+ pdfviewer.undo();
+});
+
+document.getElementById('redo').addEventListener('click', function () {
+ pdfviewer.redo();
+});
+{% endhighlight %}
+{% endtabs %}
+
+N> To set up the **server-backed PDF Viewer**,
+Add the below `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" %}
+
+## 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 in Mobile View](../../annotations/annotations-in-mobile-view)
+- [Annotation Events](../../annotations/annotation-event)
+- [Annotations API](../annotations/annotations-api)
\ No newline at end of file
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 68394df40..7c8a99b42 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/comments.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/comments.md
@@ -22,7 +22,7 @@ The PDF Viewer control provides options to add, edit, and delete comments for th

-## Adding a comment to the annotation
+## Adding a comment to the annotation in UI
Annotation comments, replies, and status can be managed in the PDF document using the comment panel.
@@ -109,7 +109,154 @@ Edit comments and replies in the following ways:
>Deleting the root comment from the comment panel also deletes the associated annotation.
-## How to check the comments added by the user
+## Add Comments to the annotation Programmatically
+
+### How to Add Commnets 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.
+
+```html
+
+
+```
+{% tabs %}
+{% highlight html tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation, ej.pdfviewer.Annotation, ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView, ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner, ej.pdfviewer.PageOrganizer);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+//for adding Comments programmatically
+document.getElementById("addComment")?.addEventListener("click", function() {
+ let annot = pdfviewer.annotationCollection[0];
+ if (annot) {
+ annot.commentType = "add";
+ annot.note = "New Comment";
+ pdfviewer.annotation.editAnnotation(annot);
+ console.log(pdfviewer.annotationCollection[0]);
+ }
+ });
+//for adding reply programmatically
+document.getElementById("addReply")?.addEventListener("click", function() {
+ let annot = pdfviewer.annotationCollection[0];
+ if (annot) {
+ annot.commentType = "add";
+ annot.replyComment = ["Reply Comment"];
+ pdfviewer.annotation.editAnnotation(annot);
+ console.log(pdfviewer.annotationCollection[0]);
+ }
+ });
+{% endhighlight %}
+{% highlight html tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation, ej.pdfviewer.Annotation, ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView, ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner, ej.pdfviewer.PageOrganizer);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+
+//for adding Comments programmatically
+document.getElementById("addComment")?.addEventListener("click", function() {
+ let annot = pdfviewer.annotationCollection[0];
+ if (annot) {
+ annot.commentType = "add";
+ annot.note = "New Comment";
+ pdfviewer.annotation.editAnnotation(annot);
+ console.log(pdfviewer.annotationCollection[0]);
+ }
+ });
+//for adding reply programmatically
+document.getElementById("addReply")?.addEventListener("click", function() {
+ let annot = pdfviewer.annotationCollection[0];
+ if (annot) {
+ annot.commentType = "add";
+ annot.replyComment = ["Reply Comment"];
+ pdfviewer.annotation.editAnnotation(annot);
+ console.log(pdfviewer.annotationCollection[0]);
+ }
+ });
+{% endhighlight %}
+{% endtabs %}
+
+### 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.
+
+```html
+
+
+```
+
+{% tabs %}
+{% highlight html tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation, ej.pdfviewer.Annotation, ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView, ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner, ej.pdfviewer.PageOrganizer);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+//for Editing Comments programmatically
+document.getElementById("editComment")?.addEventListener("click", function() {
+ let annot = pdfviewer.annotationCollection[0];
+ if (annot) {
+ annot.commentType = "edit";
+ annot.note = "Edited Comment";
+ pdfviewer.annotation.editAnnotation(annot);
+ console.log(pdfviewer.annotationCollection[0]);
+ }
+ });
+
+//for Editing reply programmatically
+document.getElementById("editReply")?.addEventListener("click", function() {
+ let annot = pdfviewer.annotationCollection[0];
+ if (annot) {
+ annot.commentType = "edit";
+ annot.replyComment = ["Edited Reply Comment"];
+ pdfviewer.annotation.editAnnotation(annot);
+ console.log(pdfviewer.annotationCollection[0]);
+ }
+ });
+{% endhighlight %}
+{% highlight html tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation, ej.pdfviewer.Annotation, ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView, ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner, ej.pdfviewer.PageOrganizer);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+
+//for Editing Comments programmatically
+document.getElementById("editComment")?.addEventListener("click", function() {
+ let annot = pdfviewer.annotationCollection[0];
+ if (annot) {
+ annot.commentType = "edit";
+ annot.note = "Edited Comment";
+ pdfviewer.annotation.editAnnotation(annot);
+ console.log(pdfviewer.annotationCollection[0]);
+ }
+ });
+
+//for Editing reply programmatically
+document.getElementById("editReply")?.addEventListener("click", function() {
+ let annot = pdfviewer.annotationCollection[0];
+ if (annot) {
+ annot.commentType = "edit";
+ annot.replyComment = ["Edited Reply Comment"];
+ pdfviewer.annotation.editAnnotation(annot);
+ console.log(pdfviewer.annotationCollection[0]);
+ }
+ });
+{% endhighlight %}
+{% endtabs %}
+
+### How to check the comments added by the user
Comments added to the PDF document can be read using the annotation's `comments` property.
@@ -162,4 +309,19 @@ document.getElementById('checkComments').addEventListener('click', function () {
}
});
-```
\ No newline at end of file
+```
+
+## 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)
\ No newline at end of file
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
new file mode 100644
index 000000000..feeee94b8
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/create-modify-annotation.md
@@ -0,0 +1,150 @@
+---
+layout: post
+title: Create and modify annotations in JavaScript PDF Viewer | Syncfusion
+description: Learn how to create and modify annotations in Syncfusion JavaScript 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
+
+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.
+
+## 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.
+
+
+
+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.
+
+### Create programmatically
+
+Creation patterns vary slightly by type. Refer to the type pages above for tailored code. Example: creating a Redaction annotation using addAnnotation.
+
+```html
+
+```
+```js
+// Requires a PdfViewer instance named `viewer`
+document.getElementById('addRedactAnnot')?.addEventListener('click', () => {
+ 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
+ });
+});
+```
+
+See the individual annotation pages (links above) 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/line color (shape and line types)
+
+- Edit Thickness: adjust the border/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
+
+```html
+
+```
+```js
+// Example: change color/opacity for matching annotations
+// Requires a PdfViewer instance named `pdfviewer`
+document.getElementById('bulkEdit')?.addEventListener('click', () => {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ const ann = pdfviewer.annotationCollection[i];
+ // Example match: author/subject; customize the condition as needed
+ if (ann.author === 'Guest User' || ann.subject === 'Corrections') {
+ ann.color = '#ff0000';
+ ann.opacity = 0.8;
+ pdfviewer.annotation.editAnnotation(ann);
+ }
+ }
+});
+```
+
+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](../annotations/annotation-types/area-annotation)
+- [Annotation Toolbar](../toolbar-customization/annotation-toolbar)
+- [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/javascript-es5/annotations/custom-data.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/custom-data.md
new file mode 100644
index 000000000..2de082c1e
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/custom-data.md
@@ -0,0 +1,156 @@
+---
+layout: post
+title: Custom Data in annotations in JavaScript PDF Viewer | Syncfusion
+description: Learn how to use add custom Data in annotation in Syncfusion JavaScript PDF Viewer
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+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.).
+
+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 custom data (annotationSettings)
+
+```js
+// Standalone script usage
+// Include the PDF Viewer scripts/styles on the page, then use the global `ej.pdfviewer` namespace
+
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.Print,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner
+);
+
+var viewer = new ej.pdfviewer.PdfViewer();
+viewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+viewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+
+// Default annotation settings applied to annotations created via the UI
+viewer.annotationSettings = {
+ author: 'XYZ',
+ minHeight: 10,
+ minWidth: 10,
+ maxWidth: 100,
+ maxHeight: 100,
+ allowedInteractions: [ej.pdfviewer.AllowedInteraction.Resize],
+ // Custom data applied to all newly created annotations
+ customData: {
+ appId: 'pdf-review',
+ tenant: 'northwind',
+ featureFlags: { allowShare: true, qaStamp: false }
+ }
+};
+
+viewer.appendTo('#pdfViewer');
+```
+
+## Custom data for Individual Annotation
+
+Provide customData inside individual annotation-type settings when you want specific payloads for different tools.
+
+```js
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.FormFields
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib',
+
+ // Text markup
+ highlightSettings: { author: 'QA', subject: 'Review', color: '#ffff00', opacity: 0.6, customData: { tag: 'needs-review', priority: 'high' } },
+ strikethroughSettings: { author: 'QA', subject: 'Remove', color: '#ff0000', opacity: 0.6, customData: { tag: 'remove', priority: 'medium' } },
+ underlineSettings: { author: 'Guest User', subject: 'Notes', color: '#00ffff', opacity: 0.9, customData: { tag: 'note', owner: 'guest' } },
+ squigglySettings: { author: 'Guest User', subject: 'Corrections', color: '#00ff00', opacity: 0.9, customData: { tag: 'typo' } },
+
+ // Shapes
+ lineSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, customData: { id: 'ln-1', category: 'connector' } },
+ arrowSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, customData: { id: 'ar-1', category: 'direction' } },
+ rectangleSettings: { fillColor: '#ffffff00', strokeColor: '#222222', thickness: 1, opacity: 1, customData: { id: 'rect-1', zone: 'content' } },
+ circleSettings: { fillColor: '#ffffff00', strokeColor: '#222222', thickness: 1, opacity: 1, customData: { id: 'circ-1', zone: 'highlight' } },
+ polygonSettings: { fillColor: '#ffffff00', strokeColor: '#222222', thickness: 1, opacity: 1, customData: { id: 'poly-1', group: 'area' } },
+
+ // Measurements
+ distanceSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, customData: { units: 'cm', scale: 1 } },
+ perimeterSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, customData: { units: 'cm', calc: 'perimeter' } },
+ areaSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, fillColor: '#ffffff00', customData: { units: 'cm^2', calc: 'area' } },
+ radiusSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, fillColor: '#ffffff00', customData: { units: 'cm', calc: 'radius' } },
+ volumeSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, fillColor: '#ffffff00', customData: { units: 'cm^3', calc: 'volume' } },
+
+ // Others
+ freeTextSettings: { borderColor: '#222222', opacity: 1, customData: { template: 'comment', mentions: ['qa'] } },
+ inkAnnotationSettings: { strokeColor: '#0000ff', thickness: 3, opacity: 0.8, customData: { tool: 'pen', userId: 12345 } },
+ stampSettings: { opacity: 0.9, customData: { stampType: 'Approved', by: 'Manager' } },
+ stickyNotesSettings: { author: 'QA', subject: 'Review', opacity: 1, customData: { channel: 'inbox', unread: true } }
+});
+
+pdfviewer.appendTo('#PdfViewer');
+```
+
+## 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.
+
+```html
+
+```
+
+```js
+// Assume `pdfviewer` is your PdfViewer instance
+var btn = document.getElementById('CustomData');
+if (btn) {
+ btn.addEventListener('click', function () {
+ var annotations = pdfviewer.annotationCollection;
+ for (var i = 0; i < annotations.length; i++) {
+ var a = annotations[i];
+ console.log('Annotation', a.id, 'customData:', a.customData);
+ }
+ });
+}
+```
+
+### 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.
+
+[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 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/javascript-es5/annotations/custom-tools.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/custom-tools.md
new file mode 100644
index 000000000..f96959c61
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/custom-tools.md
@@ -0,0 +1,180 @@
+---
+layout: post
+title: Custom annotation tools in JavaScript PDF Viewer | Syncfusion
+description: Learn how to build a custom toolbar for Syncfusion JavaScript PDF Viewer and switch annotation tools programmatically using setAnnotationMode.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+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).
+
+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.
+
+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.
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+Step 3: Import and inject modules
+
+Make sure the Annotation module is injected. If you also want text selection/search, include those as needed.
+
+```js
+var PdfViewer = ej.pdfviewer.PdfViewer;
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch
+);
+
+var pdfviewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+pdfviewer.appendTo('#PdfViewer');
+
+// Wire up custom annotation tools using setAnnotationMode
+function bindAnnoTools() {
+ function setMode(mode) { pdfviewer.annotationModule.setAnnotationMode(mode); }
+
+ document.getElementById('toolHighlight').addEventListener('click', function () { setMode('Highlight'); });
+ document.getElementById('toolUnderline').addEventListener('click', function () { setMode('Underline'); });
+ document.getElementById('toolStrike').addEventListener('click', function () { setMode('Strikethrough'); });
+ document.getElementById('toolRectangle').addEventListener('click', function () { setMode('Rectangle'); });
+ document.getElementById('toolCircle').addEventListener('click', function () { setMode('Circle'); });
+ document.getElementById('toolLine').addEventListener('click', function () { setMode('Line'); });
+ document.getElementById('toolArrow').addEventListener('click', function () { setMode('Arrow'); });
+ document.getElementById('toolPolygon').addEventListener('click', function () { setMode('Polygon'); });
+ document.getElementById('toolFreeText').addEventListener('click', function () { setMode('FreeText'); });
+ document.getElementById('toolInk').addEventListener('click', function () { setMode('Ink'); });
+ document.getElementById('toolSticky').addEventListener('click', function () { setMode('StickyNotes'); });
+ // Measurement tools
+ document.getElementById('toolDistance').addEventListener('click', function () { setMode('Distance'); });
+ document.getElementById('toolPerimeter').addEventListener('click', function () { setMode('Perimeter'); });
+ document.getElementById('toolArea').addEventListener('click', function () { setMode('Area'); });
+ document.getElementById('toolRadius').addEventListener('click', function () { setMode('Radius'); });
+
+ // Exit drawing mode
+ document.getElementById('toolNone').addEventListener('click', function () { setMode('None'); });
+}
+
+bindAnnoTools();
+```
+
+## 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.
+
+```js
+// Add built-in icon classes via EJ2 CSS (match your version), for example:
+//
+
+var Tool = ej.navigations.Toolbar;
+
+var items = [
+ { text: 'Highlight', id: 'annHighlight', tooltipText: 'Highlight', prefixIcon: 'e-pv-highlight-icon' },
+ { text: 'Underline', id: 'annUnderline', tooltipText: 'Underline', prefixIcon: 'e-pv-underline-icon' },
+ { text: 'Strike', id: 'annStrike', tooltipText: 'Strikethrough', prefixIcon: 'e-pv-strikethrough-icon' },
+ { type: 'Separator' },
+ { text: 'Rect', id: 'annRect', tooltipText: 'Rectangle', prefixIcon: 'e-pv-shape-rectangle-icon' },
+ { text: 'Circle', id: 'annCircle', tooltipText: 'Circle', prefixIcon: 'e-pv-shape-circle-icon' },
+ { text: 'Line', id: 'annLine', tooltipText: 'Line', prefixIcon: 'e-pv-shape-line-icon' },
+ { text: 'Arrow', id: 'annArrow', tooltipText: 'Arrow', prefixIcon: 'e-pv-shape-arrow-icon' },
+ { text: 'Polygon', id: 'annPolygon', tooltipText: 'Polygon', prefixIcon: 'e-pv-shape-pentagon' },
+ { type: 'Separator' },
+ { text: 'Free Text', id: 'annFreeText', tooltipText: 'Free Text', prefixIcon: 'e-pv-freetext-icon' },
+ { text: 'Ink', id: 'annInk', tooltipText: 'Ink', prefixIcon: 'e-pv-inkannotation-icon' },
+ { text: 'Note', id: 'annSticky', tooltipText: 'Sticky Note', prefixIcon: 'e-pv-sticky-notes' },
+ { type: 'Separator' },
+ { text: 'Distance', id: 'annDistance', tooltipText: 'Distance', prefixIcon: 'e-pv-calibrate-distance-icon' },
+ { text: 'Perimeter', id: 'annPerimeter', tooltipText: 'Perimeter', prefixIcon: 'e-pv-calibrate-perimeter-icon' },
+ { text: 'Area', id: 'annArea', tooltipText: 'Area', prefixIcon: 'e-pv-calibrate-area-icon' },
+ { text: 'Radius', id: 'annRadius', tooltipText: 'Radius', prefixIcon: 'e-pv-calibrate-radius-icon' },
+ { type: 'Separator' },
+ { text: 'Exit', id: 'annNone', tooltipText: 'Exit drawing', align: 'Right' }
+];
+
+var annoToolbar = new Tool({
+ items: items,
+ overflowMode: 'Scrollable',
+ clicked: function (args) {
+ switch (args.item.id) {
+ case 'annHighlight': pdfviewer.annotationModule.setAnnotationMode('Highlight'); break;
+ case 'annUnderline': pdfviewer.annotationModule.setAnnotationMode('Underline'); break;
+ case 'annStrike': pdfviewer.annotationModule.setAnnotationMode('Strikethrough'); break;
+ case 'annRect': pdfviewer.annotationModule.setAnnotationMode('Rectangle'); break;
+ case 'annCircle': pdfviewer.annotationModule.setAnnotationMode('Circle'); break;
+ case 'annLine': pdfviewer.annotationModule.setAnnotationMode('Line'); break;
+ case 'annArrow': pdfviewer.annotationModule.setAnnotationMode('Arrow'); break;
+ case 'annPolygon': pdfviewer.annotationModule.setAnnotationMode('Polygon'); break;
+ case 'annFreeText': pdfviewer.annotationModule.setAnnotationMode('FreeText'); break;
+ case 'annInk': pdfviewer.annotationModule.setAnnotationMode('Ink'); break;
+ case 'annSticky': pdfviewer.annotationModule.setAnnotationMode('StickyNotes'); break;
+ case 'annDistance': pdfviewer.annotationModule.setAnnotationMode('Distance'); break;
+ case 'annPerimeter': pdfviewer.annotationModule.setAnnotationMode('Perimeter'); break;
+ case 'annArea': pdfviewer.annotationModule.setAnnotationMode('Area'); break;
+ case 'annRadius': pdfviewer.annotationModule.setAnnotationMode('Radius'); break;
+ case 'annNone': pdfviewer.annotationModule.setAnnotationMode('None'); break;
+ }
+ }
+});
+annoToolbar.appendTo('#annotationToolbar');
+```
+
+Notes
+
+- 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).
+- 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)
+
+## 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/javascript-es5/annotations/customize-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/customize-annotation.md
new file mode 100644
index 000000000..39388b8d9
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/customize-annotation.md
@@ -0,0 +1,286 @@
+---
+layout: post
+title: Customize annotations in JavaScript PDF Viewer | Syncfusion
+description: Learn how to customize PDF annotations in Syncfusion JavaScript PDF Viewer using UI tools and programmatic settings (defaults and runtime edits).
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+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.
+
+## Customize via UI
+
+Use the annotation toolbar after selecting an annotation:
+- Edit Color: changes the annotation fill/text color
+
+- Edit Stroke Color: changes border/line color (shapes and lines)
+
+- Edit Thickness: adjusts border/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
+
+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.
+
+TextMarkup Annotations:
+
+- 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:
+
+- 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)
+- Polygon: Use [`polygonSettings`](./annotation-types/polygon-annotation/#default-polygon-settings-during-initialization)
+
+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)
+- Area: Use [`areaSettings`](./annotation-types/area-annotation/#default-area-settings-during-initialization)
+- 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:
+
+- 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)
+- 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)
+
+Set defaults for specific annotation types when creating the PdfViewer instance. Below are examples using settings already used in the annotation type pages.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.FormFields
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib',
+ // Text markup defaults
+ highlightSettings: { author: 'QA', subject: 'Review', color: '#ffff00', opacity: 0.6 },
+ strikethroughSettings: { author: 'QA', subject: 'Remove', color: '#ff0000', opacity: 0.6 },
+ underlineSettings: { author: 'Guest User', subject: 'Points to be remembered', color: '#00ffff', opacity: 0.9 },
+ squigglySettings: { author: 'Guest User', subject: 'Corrections', color: '#00ff00', opacity: 0.9 },
+
+ // Shapes
+ lineSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8 },
+ arrowSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8 },
+ rectangleSettings: { fillColor: '#ffffff00', strokeColor: '#222222', thickness: 1, opacity: 1 },
+ circleSettings: { fillColor: '#ffffff00', strokeColor: '#222222', thickness: 1, opacity: 1 },
+ polygonSettings: { fillColor: '#ffffff00', strokeColor: '#222222', thickness: 1, opacity: 1 },
+
+ // Measurements
+ distanceSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8 },
+ perimeterSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8 },
+ areaSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, fillColor: '#ffffff00' },
+ radiusSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, fillColor: '#ffffff00' },
+ volumeSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, fillColor: '#ffffff00' },
+
+ // Others
+ freeTextSettings: { borderColor: '#222222', thickness: 1, opacity: 1 },
+ inkAnnotationSettings: { color: '#0000ff', thickness: 3, opacity: 0.8 },
+ stampSettings: { opacity: 0.9 },
+ stickyNotesSettings: { author: 'QA', subject: 'Review', color: '#ffcc00', opacity: 1 }
+});
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.Annotation
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+
+ highlightSettings: { author: 'QA', subject: 'Review', color: '#ffff00', opacity: 0.6 },
+ strikethroughSettings: { author: 'QA', subject: 'Remove', color: '#ff0000', opacity: 0.6 },
+ underlineSettings: { author: 'Guest User', subject: 'Points to be remembered', color: '#00ffff', opacity: 0.9 },
+ squigglySettings: { author: 'Guest User', subject: 'Corrections', color: '#00ff00', opacity: 0.9 },
+
+ lineSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8 },
+ arrowSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8 },
+ rectangleSettings: { fillColor: '#ffffff00', strokeColor: '#222222', thickness: 1, opacity: 1 },
+ circleSettings: { fillColor: '#ffffff00', strokeColor: '#222222', thickness: 1, opacity: 1 },
+ polygonSettings: { fillColor: '#ffffff00', strokeColor: '#222222', thickness: 1, opacity: 1 },
+
+ distanceSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8 },
+ perimeterSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8 },
+ areaSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, fillColor: '#ffffff00' },
+ radiusSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, fillColor: '#ffffff00' },
+ volumeSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, fillColor: '#ffffff00' },
+
+ freeTextSettings: { borderColor: '#222222', thickness: 1, opacity: 1 },
+ inkAnnotationSettings: { color: '#0000ff', thickness: 3, opacity: 0.8 },
+ stampSettings: { opacity: 0.9 },
+ stickyNotesSettings: { author: 'QA', subject: 'Review', color: '#ffcc00', opacity: 1 }
+});
+
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+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.
+
+## Customize programmatically at runtime
+
+To update an existing annotation from code, modify its properties and call editAnnotation.
+
+Example: bulk‑update matching annotations.
+
+```html
+
+```
+```js
+// Requires a PdfViewer instance named `pdfviewer`
+var btn = document.getElementById('bulkUpdateAnn');
+if (btn) {
+ btn.addEventListener('click', function () {
+ for (var i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ var ann = pdfviewer.annotationCollection[i];
+ // 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;
+ pdfviewer.annotation.editAnnotation(ann);
+ }
+ }
+ });
+}
+```
+
+## Customize Annotation Settings
+
+Defines the settings of the annotations. You can change annotation settings like author name, height, width etc., using [annotationSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#annotationsettings) API
+
+```html
+
+```
+```js
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.Print,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner
+);
+
+var viewer = new ej.pdfviewer.PdfViewer();
+viewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+viewer.documentPath = 'PDF_Succinctly.pdf';
+// Change the annotation settings.
+viewer.annotationSettings = {
+ author: 'XYZ',
+ minHeight: 10,
+ minWidth: 10,
+ maxWidth: 100,
+ maxHeight: 100,
+ isLock: false,
+ skipPrint: false,
+ skipDownload: false,
+ allowedInteractions: [
+ ej.pdfviewer.AllowedInteraction.Select,
+ ej.pdfviewer.AllowedInteraction.Move
+ ]
+};
+viewer.appendTo('#PdfViewer');
+```
+## Customize Annotation SelectorSettings
+
+Defines the settings of annotation selector. You can customize the annotation Selector using [annotationSelectorSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#annotationselectorsettings) API
+
+```html
+
+```
+```js
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.Print,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner
+);
+
+var viewer = new ej.pdfviewer.PdfViewer();
+viewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+viewer.documentPath = 'PDF_Succinctly.pdf';
+// Change the annotation selector settings.
+viewer.annotationSelectorSettings = {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'red',
+ resizerFillColor: '#4070ff',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Circle',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: ej.pdfviewer.AnnotationResizerLocation.Corners | ej.pdfviewer.AnnotationResizerLocation.Edges,
+ resizerCursorType: ej.pdfviewer.CursorType.grab
+};
+viewer.appendTo('#PdfViewer');
+```
+
+[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)
+- [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/javascript-es5/annotations/delete-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/delete-annotation.md
new file mode 100644
index 000000000..e5bbf5922
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/delete-annotation.md
@@ -0,0 +1,95 @@
+---
+layout: post
+title: Remove annotations in JavaScript PDF Viewer | Syncfusion
+description: Learn how to remove/delete PDF annotations in Syncfusion JavaScript 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
+
+You can remove annotations using the built-in UI or programmatically. This page shows the common ways 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.
+
+- Secondary toolbar: Select the annotation and click the Delete button on the annotation toolbar.
+
+- 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.
+
+```html
+
+
+
+
+
+```
+```javascript
+// Inject required modules
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.Print,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner
+);
+
+// Create viewer
+var viewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ // Standalone resources
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+viewer.appendTo('#PdfViewer');
+
+var delBtn = document.getElementById('del');
+if (delBtn) {
+ delBtn.addEventListener('click', function () {
+ // Delete the selected annotation
+ viewer.annotation.deleteAnnotation();
+ });
+}
+
+var delByIdBtn = document.getElementById('delbyId');
+if (delByIdBtn) {
+ delByIdBtn.addEventListener('click', function () {
+ // Delete the first annotation using its id from the annotation collection
+ if (viewer.annotationCollection && viewer.annotationCollection.length > 0) {
+ viewer.annotation.deleteAnnotationById(viewer.annotationCollection[0].id);
+ }
+ });
+}
+```
+
+N> Deleting via 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/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)
+- [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/javascript-es5/annotations/export-import/export-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/export-import/export-annotation.md
new file mode 100644
index 000000000..797aa68a1
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/export-import/export-annotation.md
@@ -0,0 +1,141 @@
+---
+layout: post
+title: Export annotations in JavaScript PDF Viewer | Syncfusion
+description: Learn how to Export annotations in Syncfusion JavaScript PDF Viewer using UI options and programmatic APIs.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Export annotations in JavaScript 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/documentation/api/pdfviewer/index-default#exportannotation) ,[exportAnnotationsAsObject](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#exportannotationsasobject) and [exportAnnotationsAsBase64String](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#exportannotationsasbase64string) APIs.
+
+Use the following end-to-end example to initialize the viewer and export annotations as JSON, XFDF, or as an object.
+
+```html
+
+
+
+
+
+
+
+
+```
+
+```js
+// Ensure you have included the Syncfusion EJ2 PDF Viewer scripts/styles via CDN before this script.
+// Inject required modules for ES5 using the global ej namespace
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.Print,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner
+);
+
+// Initialize the viewer (ES5/JavaScript)
+var viewer = new ej.pdfviewer.PdfViewer();
+viewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+viewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+viewer.appendTo('#pdfViewer');
+
+// Wire up export actions
+
+// Export Annotation as JSON
+var btnJson = document.getElementById('ExportJSON');
+if (btnJson) {
+ btnJson.addEventListener('click', function () {
+ viewer.exportAnnotation(ej.pdfviewer.AnnotationDataFormat.Json);
+ });
+}
+
+// Export Annotation as XFDF
+var btnXfdf = document.getElementById('ExportXfdf');
+if (btnXfdf) {
+ btnXfdf.addEventListener('click', function () {
+ viewer.exportAnnotation(ej.pdfviewer.AnnotationDataFormat.Xfdf);
+ });
+}
+
+// Export Annotation as Object
+var btnObject = document.getElementById('ExportAsObject');
+if (btnObject) {
+ btnObject.addEventListener('click', function () {
+ viewer.exportAnnotationsAsObject().then(function (value) {
+ // Persist or transmit the object as needed (DB/API). Keep for future import.
+ console.log('Exported annotation object:', value);
+ });
+ });
+}
+
+// Export Annotation as Base64
+var exportObject1;
+var btnBase64 = document.getElementById('ExportAsBase64');
+if (btnBase64) {
+ btnBase64.addEventListener('click', function () {
+ viewer.exportAnnotationsAsBase64String(ej.pdfviewer.AnnotationDataFormat.Json).then(function (value) {
+ exportObject1 = value;
+ console.log(exportObject1);
+ });
+ });
+}
+```
+
+## 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/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)
+- [Import Annotation](../export-import/import-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)
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/export-import/export-import-events.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/export-import/export-import-events.md
new file mode 100644
index 000000000..15a21ae1c
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/export-import/export-import-events.md
@@ -0,0 +1,70 @@
+---
+layout: post
+title: Import/Export events for annotations in JavaScript PDF Viewer | Syncfusion
+description: Learn how to handle Import/Export events for annotations in the Syncfusion JavaScript PDF Viewer component.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Import/Export events for annotations
+
+Import/Export events let you track and customize the full lifecycle of annotation data flowing into and out of the PDF Viewer.
+
+Use them to validate inputs, show progress UI, log audit trails, or block operations based on your business rules. Each event exposes typed event-args (ImportStartEventArgs, ImportSuccessEventArgs, ImportFailureEventArgs, ExportStartEventArgs, ExportSuccessEventArgs, ExportFailureEventArgs) describing the operation context.
+
+## Import events
+- [importStart](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#importstart): Triggers when an import operation starts.
+- [importSuccess](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#importsuccess): Triggers when annotations are successfully imported.
+- [importFailed](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#importfailed): Triggers when importing annotations fails.
+
+## Handle import events
+```js
+viewer.importStart = function(args) {
+ console.log('Import started', args);
+};
+viewer.importSuccess = function(args) {
+ console.log('Import success', args);
+};
+viewer.importFailed = function(args) {
+ console.error('Import failed', args);
+};
+```
+
+## Export events
+- [exportStart](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#exportstart): Triggers when an export operation starts.
+- [exportSuccess](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#exportsuccess): Triggers when annotations are successfully exported.
+- [exportFailed](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#exportfailed): Triggers when exporting annotations fails.
+
+## Handle export events
+```js
+viewer.exportStart = function(args) {
+ console.log('Export started', args);
+};
+viewer.exportSuccess = function(args) {
+ console.log('Export success', args);
+};
+viewer.exportFailed = function(args) {
+ console.error('Export failed', args);
+};
+```
+
+Notes:
+- importStart/importSuccess/importFailed cover the lifecycle of annotation imports.
+- exportStart/exportSuccess/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/javascript-es5/annotations/export-import/import-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/export-import/import-annotation.md
new file mode 100644
index 000000000..c302ffdc7
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/export-import/import-annotation.md
@@ -0,0 +1,115 @@
+---
+layout: post
+title: Import annotations in JavaScript PDF Viewer | Syncfusion
+description: Learn how to import annotations in Syncfusion JavaScript PDF Viewer using UI options and programmatic APIs.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Import annotations in JavaScript PDF Viewer
+
+You can import annotations into the PDF Viewer in two ways:
+
+- Using the built-in UI in the Comments panel (import JSON or XFDF files)
+- Programmatically by passing an annotation object exported from 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 Import annotations from JSON file or Import annotations from XFDF file and pick the file.
+
+All annotations in the selected file will be applied to the current document.
+
+
+
+## Import programmatically (from object)
+
+Import annotations from an object previously exported using exportAnnotationsAsObject(). Only objects returned by the viewer can be re-imported using [importAnnotation](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#importannotation) method.
+
+The following end-to-end example initializes the viewer and wires a button to import annotations from a pasted/exported object.
+
+```html
+
+
+
+```
+
+```js
+// Inject required modules (ES5/vanilla JS using global ej namespace)
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.Print,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner
+);
+
+// Initialize the viewer
+var viewer = new ej.pdfviewer.PdfViewer();
+viewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+viewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+viewer.appendTo('#pdfViewer');
+
+// Exported annotation as object
+var exportedObject = null;
+var btnObject = document.getElementById('ExportAsObject');
+if (btnObject) {
+ btnObject.addEventListener('click', function () {
+ viewer.exportAnnotationsAsObject().then(function (value) {
+ // Persist or transmit the object as needed (DB/API). Keep for future import.
+ console.log('Exported annotation object:', value);
+ exportedObject = value; // keep as object
+ });
+ });
+}
+
+// Import from the previously exported object
+var btnImport = document.getElementById('ImportFromObject');
+if (btnImport) {
+ btnImport.addEventListener('click', function () {
+ if (exportedObject) {
+ viewer.importAnnotation(exportedObject);
+ }
+ });
+}
+```
+
+## Common use cases
+
+- Restore annotations saved earlier (e.g., 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/javascript-es5/annotations/line-angle-constraints.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/line-angle-constraints.md
index ebaea69c8..9ae90377b 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/line-angle-constraints.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/line-angle-constraints.md
@@ -12,7 +12,10 @@ domainurl: ##DomainURL##
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.
+
+
## 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:
@@ -30,6 +33,31 @@ ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearc
```
+## 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
+
+Desktop platforms:
+- 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.
+
## Configuration Properties
### enableLineAngleConstraints
@@ -66,31 +94,22 @@ 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
-
-Desktop platforms:
-- 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/javascript-pdf-viewer-examples/tree/master/How%20to)
N> Refer to the JavaScript PDF Viewer [feature tour](https://www.syncfusion.com/pdf-viewer-sdk/javascript-pdf-viewer) for feature highlights. Explore the [JavaScript PDF Viewer examples](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples) to learn how to render and configure the PDF Viewer.
+
+## 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)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/overview.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/overview.md
new file mode 100644
index 000000000..faff72e9c
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/overview.md
@@ -0,0 +1,50 @@
+---
+layout: post
+title: Overview of Annotation in JavaScript PDF Viewer control | Syncfusion
+description: Learn about overview of annotations in the Syncfusion JavaScript PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Annotations overview in JavaScript
+
+Annotations in PDFViewer are interactive elements that allow users to add notes, highlights, or text boxes directly to a PDF document. These annotations can be used to add context or feedback directly to PDF files, simplifying collaboration during document reviews.
+
+The PDF Viewer component provides a complete set of annotation tools for reviewing, measuring, and marking up PDFs in JavaScript (ES5).
+
+## Supported annotations
+
+- Text markup: [Highlight](../annotations/annotation-types/highlight-annotation), [Underline](../annotations/annotation-types/underline-annotation), [Squiggly](../annotations/annotation-types/Squiggly-annotation), [Strikethrough](../annotations/annotation-types/strikethrough-annotation)
+- Shapes: [Line](../annotations/annotation-types/line-annotation), p[Arrow](../annotations/annotation-types/arrow-annotation), [Rectangle](../annotations/annotation-types/rectangle-annotation), [Circle](../annotations/annotation-types/circle-annotation), [Polygon](../annotations/annotation-types/polygon-annotation)
+- Text boxes: [Free Text](../annotations/annotation-types/free-text-annotation)
+- Drawing: [Ink](../annotations/annotation-types/ink-annotation) (freehand)
+- Stamps: [Standard and custom stamps](../annotations/annotation-types/stamp-annotation)
+- Notes: [Sticky Notes](../annotations/annotation-types/sticky-notes-annotation) (comments)
+- Redaction: Mark and apply [redactions](../annotations/annotation-types/redaction-annotation)
+- Measurement: [Distance](../annotations/annotation-types/distance-annotation), [Perimeter](../annotations/annotation-types/perimeter-annotation), [Area](../annotations/annotation-types/area-annotation), [Radius](../annotations/annotation-types/radius-annotation), [Volume](../annotations/annotation-types/volume-annotation)
+
+## Annotation manipulation capabilities
+
+- [Create annotations](../annotations/create-modify-annotation): Use the toolbar, context menu, or APIs to add highlights, notes, shapes, and more directly onto the PDF document.
+- [Edit annotations](../annotations/create-modify-annotation.md): Modify existing annotations by moving, resizing, or updating text and style properties like color, opacity, and thickness.
+- [Customize annotations](../annotations/customize-annotation): Adjust appearance and behavior—such as fonts, fill colors, and opacity—through the UI or configuration options.
+- [Undo and redo annotations](../annotations/annotations-undo-redo): Revert or reapply annotation actions (add, edit, delete) using toolbar buttons or corresponding APIs.
+- [Import and export annotations](../annotations/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](../annotations/annotation-permission): Enable or disable annotation permission, ensuring compliance with document permissions.
+- Add and manage [comments](../annotations/comments): Insert, edit, and delete comments or sticky notes attached to annotations for clearer feedback and collaboration.
+
+## See also
+
+- [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/javascript-es5/annotations/signature-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/signature-annotation.md
index dec244e46..df9e71704 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/signature-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/signature-annotation.md
@@ -12,7 +12,9 @@ domainurl: ##DomainURL##
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.
@@ -74,39 +76,7 @@ if (handWrittenSignature) {
{% 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 ts tabtitle="Standalone" %}
-
-var pdfviewer = new ej.pdfviewer.PdfViewer({
- documentPath: "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf",
- resourceUrl : "https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib",
- enableHandwrittenSignature : false,
- });
-ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.Print, ej.pdfviewer.Navigation, ej.pdfviewer.Toolbar,
- ej.pdfviewer.Magnification, ej.pdfviewer.Annotation, ej.pdfviewer.FormDesigner, ej.pdfviewer.FormFields, ej.pdfviewer.PageOrganizer);
-pdfviewer.appendTo('#PdfViewer');
-
-{% endhighlight %}
-{% highlight ts tabtitle="Server-Backed" %}
-
-var pdfviewer = new ej.pdfviewer.PdfViewer({
- documentPath: "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf",
- serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer',
- enableHandwrittenSignature : false
- });
-ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.Print, ej.pdfviewer.Navigation, ej.pdfviewer.Toolbar,
- ej.pdfviewer.Magnification, ej.pdfviewer.Annotation, ej.pdfviewer.FormDesigner, ej.pdfviewer.FormFields, ej.pdfviewer.PageOrganizer);
-pdfviewer.appendTo('#PdfViewer');
-
-{% 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 a handwritten signature to the PDF Viewer control using the [**addAnnotation()**](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation/#annotation) method.
@@ -233,24 +203,158 @@ if(addHandwrittenSignature){
[View sample in GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples/tree/master/How%20to/Add%20Handwritten%20Signature%20Programmatically)
-## Edit the properties of handwritten signatures
+## Edit Signature Annotation
+
+### 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 to the PDF Viewer control using the **editSignature()** method.
+
+Here is an example of adding a handwritten signature programmatically using editSiganture():
+
+```html
+
+
+```
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation, ej.pdfviewer.Annotation, ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView, ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner, ej.pdfviewer.PageOrganizer);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+//Add Signature annotation
+document.getElementById('Signature')?.addEventListener('click', function () {
+ pdfviewer.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",
+ });
+});
+
+//Edit Signature annotation
+document.getElementById('editSignatureAnnotation')?.addEventListener('click', () => {
+ for (let i = 0; i < pdfviewer.signatureCollection.length; i++) {
+ if (pdfviewer.signatureCollection[i].shapeAnnotationType === 'SignatureText') {
+ pdfviewer.signatureCollection[i].fontSize = 12;
+ pdfviewer.signatureCollection[i].thickness = 2;
+ pdfviewer.signatureCollection[i].strokeColor = '#0000FF';
+ pdfviewer.signatureCollection[i].opacity = 0.8;
+ pdfviewer.annotationModule.editSignature(pdfviewer.signatureCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation, ej.pdfviewer.Annotation, ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView, ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner, ej.pdfviewer.PageOrganizer);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+
+//Add Signature annotation
+document.getElementById('Signature')?.addEventListener('click', function () {
+ pdfviewer.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",
+ });
+});
+
+//Edit Signature annotation
+document.getElementById('editSignatureAnnotation')?.addEventListener('click', () => {
+ for (let i = 0; i < pdfviewer.signatureCollection.length; i++) {
+ if (pdfviewer.signatureCollection[i].shapeAnnotationType === 'SignatureText') {
+ pdfviewer.signatureCollection[i].fontSize = 12;
+ pdfviewer.signatureCollection[i].thickness = 2;
+ pdfviewer.signatureCollection[i].strokeColor = '#0000FF';
+ pdfviewer.signatureCollection[i].opacity = 0.8;
+ pdfviewer.annotationModule.editSignature(pdfviewer.signatureCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Enable/Disable 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" %}
+
+ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation, ej.pdfviewer.Annotation, ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView, ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner, ej.pdfviewer.PageOrganizer);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+pdfviewer.enableHandwrittenSignature = false;
+
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+
+ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation, ej.pdfviewer.Annotation, ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView, ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner, ej.pdfviewer.PageOrganizer);
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+pdfviewer.enableHandwrittenSignature = false;
+
+{% endhighlight %}
+{% endtabs %}
+
+## 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)
+- [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/javascript-es5/annotations/text-markup-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/text-markup-annotation.md
index 4f9df6aea..13005db87 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/text-markup-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/annotations/text-markup-annotation.md
@@ -47,7 +47,7 @@ N> To set up the **server-backed PDF Viewer**,
Add the below [serviceUrl](https://ej2.syncfusion.com/documentation/api/pdfviewer/#serviceurl) in the `index.html` file
`serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer'`
-{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es5/es5-text-markup-annotation/highlight-mode-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es5/es5-text-markup-annotation/highlight-mode-cs1" %}
Refer to the following code snippet to switch back to normal mode from highlight mode.
@@ -61,11 +61,11 @@ N> To set up the **server-backed PDF Viewer**,
Add the below `serviceUrl` in the `index.html` file
`serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer'`
-{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es5/es5-text-markup-annotation/highlight-normal-mode-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es5/es5-text-markup-annotation/highlight-normal-mode-cs1" %}
## Highlight text programmatically
-Programmatically add highlights using the [addAnnotation](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation/#addannotation) method.
+Programmatically add highlights using the [addAnnotation](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#addannotation) method.
Example:
@@ -152,7 +152,7 @@ N> To set up the **server-backed PDF Viewer**,
Add the below `serviceUrl` in the `index.html` file
`serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer'`
-{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es5/es5-text-markup-annotation/underline-mode-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es5/es5-text-markup-annotation/underline-mode-cs1" %}
Refer to the following code snippet to switch back to normal mode from underline mode.
@@ -167,11 +167,11 @@ N> To set up the **server-backed PDF Viewer**,
Add the below `serviceUrl` in the `index.html` file
`serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer'`
-{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es5/es5-text-markup-annotation/underline-normal-mode-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es5/es5-text-markup-annotation/underline-normal-mode-cs1" %}
## Underline text programmatically
-Programmatically add underlines using the [addAnnotation](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation/#addannotation) method.
+Programmatically add underlines using the [addAnnotation](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#addannotation) method.
Example:
@@ -259,7 +259,7 @@ N> To set up the **server-backed PDF Viewer**,
Add the below `serviceUrl` in the `index.html` file
`serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer'`
-{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es5/es5-text-markup-annotation/strikethrough-mode-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es5/es5-text-markup-annotation/strikethrough-mode-cs1" %}
Refer to the following code snippet to switch back to normal mode from strikethrough mode.
@@ -273,11 +273,11 @@ N> To set up the **server-backed PDF Viewer**,
Add the below `serviceUrl` in the `index.html` file
`serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer'`
-{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es5/es5-text-markup-annotation/strikethrough-normal-mode-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es5/es5-text-markup-annotation/strikethrough-normal-mode-cs1" %}
## Strikethrough text programmatically
-Programmatically add strikethrough using the [addAnnotation](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotation/#addannotation) method.
+Programmatically add strikethrough using the [addAnnotation](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotation#addannotation) method.
Example:
@@ -363,7 +363,7 @@ N> To set up the **server-backed PDF Viewer**,
Add the below `serviceUrl` in the `index.html` file
`serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer'`
-{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es5/es5-text-markup-annotation/squiggly-mode-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es5/es5-text-markup-annotation/squiggly-mode-cs1" %}
Refer to the following code snippet to switch back to normal mode from squiggly mode.
@@ -377,11 +377,11 @@ N> To set up the **server-backed PDF Viewer**,
Add the below `serviceUrl` in the `index.html` file
`serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer'`
-{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es5/es5-text-markup-annotation/squiggly-normal-mode-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es5/es5-text-markup-annotation/squiggly-normal-mode-cs1" %}
## Add squiggly to text programmatically
-Programmatically add squiggly using the [addAnnotation](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotation/#addannotation) method.
+Programmatically add squiggly using the [addAnnotation](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotation#addannotation) method.
Example:
@@ -531,7 +531,7 @@ N> To set up the **server-backed PDF Viewer**,
Add the below `serviceUrl` in the `index.html` file
`serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer'`
-{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es5/es5-text-markup-annotation/undo-redo-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es5/es5-text-markup-annotation/undo-redo-cs1" %}
## Save text markup annotations
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/feature-module.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/feature-module.md
index f4d465f5f..90a10b272 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/feature-module.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/feature-module.md
@@ -14,17 +14,17 @@ The PDF Viewer features are segregated into individual feature-wise modules to e
The available PDF Viewer modules are:
-* [**Toolbar**](./toolbar-customization):- Built-in toolbar for better user interaction.
+* [**Toolbar**](./toolbar-customization/primary-toolbar):- Built-in toolbar for better user interaction.
* [**Magnification**](./magnification):- Perform zooming operation for better viewing experience.
-* [**Navigation**](./interactive-pdf-navigation/page-navigation):- Easy navigation across the PDF pages.
-* [**LinkAnnotation**](./interactive-pdf-navigation/table-of-content-navigation):- Easy navigation within and outside of the PDF document.
-* [**ThumbnailView**](./interactive-pdf-navigation/page-thumbnail-navigation):- Easy navigation with in the PDF document.
-* [**BookmarkView**](./interactive-pdf-navigation/bookmark-navigation):- Easy navigation based on the bookmark content of the PDF document.
+* [**Navigation**](./interactive-pdf-navigation/page):- Easy navigation across the PDF pages.
+* [**LinkAnnotation**](./interactive-pdf-navigation/hyperlink):- Easy navigation within and outside of the PDF document.
+* [**ThumbnailView**](./interactive-pdf-navigation/page-thumbnail):- Easy navigation with in the PDF document.
+* [**BookmarkView**](./interactive-pdf-navigation/bookmark):- Easy navigation based on the bookmark content of the PDF document.
* [**TextSelection**](./textselection):- Select and copy text from a PDF file.
-* [**TextSearch**](./text-search):- Search a text easily across the PDF document.
-* [**Print**](./print):- Print the entire document or a specific page directly from the browser.
-* [**Annotation**](./annotations/text-markup-annotation):- Annotations can be added or edited in the PDF document.
-* [**FormFields**](./form-designer/create-programmatically):- Preserve the form fields in the PDF document.
+* [**TextSearch**](./text-search/text-search-features):- Search a text easily across the PDF document.
+* [**Print**](./print/overview):- Print the entire document or a specific page directly from the browser.
+* [**Annotation**](./annotations/overview):- Annotations can be added or edited in the PDF document.
+* [**FormFields**](./form-designer/form-filling):- Preserve the form fields in the PDF document.
* [**FormDesigner**](./form-designer/create-programmatically):- Form fields can be added or edited in the PDF document.
>In addition to injecting the required modules in your application, enable corresponding properties to extend the functionality for a PDF Viewer instance.
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/Create-edit-Style-del-formFields/create-formfields.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/Create-edit-Style-del-formFields/create-formfields.md
new file mode 100644
index 000000000..bda2f87ba
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/Create-edit-Style-del-formFields/create-formfields.md
@@ -0,0 +1,373 @@
+---
+layout: post
+title: Create form fields in the JavaScript 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 JavaScript PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Create form fields in JavaScript 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. You can also create and manage form fields programmatically using the API.
+
+The PDF Viewer supports the following form field types:
+
+- [Textbox](#add-textbox)
+- [Password](#add-password)
+- [CheckBox](#add-checkbox)
+- [RadioButton](#add-radiobutton)
+- [ListBox](#add-listbox)
+- [DropDown](#add-dropdown)
+- [Signature field](#signature-field)
+- [Initial field](#add-initial-field)
+
+## 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.
+
+
+
+## Textbox
+
+### Add Textbox
+
+- Open the Form Designer toolbar.
+- Select Textbox, then click/tap on the page to place it.
+- Resize/move as needed and set properties in the property panel.
+
+
+
+### Add Textbox Programmatically
+
+To add a Textbox programmatically, call addFormField with type 'Textbox' and pass a settings object. The example below adds a textbox when the document loads.
+
+```js
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/form-filling-document.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib'
+});
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation, ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner
+);
+pdfviewer.appendTo('#PdfViewer');
+
+pdfviewer.documentLoad = function() {
+ pdfviewer.formDesignerModule.addFormField('Textbox', {
+ name: 'First Name',
+ bounds: { X: 146, Y: 229, Width: 150, Height: 24 }
+ });
+};
+```
+
+## Password
+
+### Add Password
+
+- Open the Form Designer toolbar.
+- Select Password, then place it on the page.
+- Configure tooltip, required, max length, etc.
+
+
+
+### Add Password Programmatically
+
+To add a Password field programmatically, call addFormField with type 'Password' and pass a settings object. The example below adds the field when the document loads.
+
+```js
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/form-filling-document.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib'
+});
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation, ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner
+);
+pdfviewer.appendTo('#PdfViewer');
+
+pdfviewer.documentLoad = function() {
+ pdfviewer.formDesignerModule.addFormField('Password', {
+ name: 'Account Password',
+ bounds: { X: 148, Y: 270, Width: 180, Height: 24 }
+ });
+};
+```
+
+## CheckBox
+
+### Add CheckBox
+
+- Choose CheckBox in the Form Designer toolbar.
+- Click on the page to place, duplicate for multiple options if needed.
+- Use the property panel to set IsChecked, tooltip, and appearance.
+
+
+
+### Add CheckBox Programmatically
+
+To add a CheckBox programmatically, call addFormField with type 'CheckBox' and pass a settings object. Set isChecked and bounds as needed.
+
+```js
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/form-filling-document.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib'
+});
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation, ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner
+);
+pdfviewer.appendTo('#PdfViewer');
+
+pdfviewer.documentLoad = function() {
+ pdfviewer.formDesignerModule.addFormField('CheckBox', {
+ name: 'Subscribe',
+ isChecked: false,
+ bounds: { X: 56, Y: 664, Width: 20, Height: 20 }
+ });
+};
+```
+
+## RadioButton
+
+### Add RadioButton
+
+- Select RadioButton in the Form Designer toolbar.
+- Place buttons sharing the same Name to create a group (e.g., Gender).
+- Use the property panel to set selection, colors, and tooltip.
+
+
+
+### Add RadioButton Programmatically
+
+To add radio buttons programmatically, call addFormField with type 'RadioButton' and pass a settings object. Use the same name to group buttons.
+
+```js
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/form-filling-document.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib'
+});
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation, ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner
+);
+pdfviewer.appendTo('#PdfViewer');
+
+pdfviewer.documentLoad = function() {
+ // Group by name: 'Gender'
+ pdfviewer.formDesignerModule.addFormField('RadioButton', {
+ name: 'Gender',
+ isSelected: false,
+ bounds: { X: 148, Y: 289, Width: 18, Height: 18 }
+ });
+
+ pdfviewer.formDesignerModule.addFormField('RadioButton', {
+ name: 'Gender',
+ isSelected: false,
+ bounds: { X: 292, Y: 289, Width: 18, Height: 18 }
+ });
+};
+```
+
+## ListBox
+
+### Add ListBox
+
+- Choose ListBox in the Form Designer toolbar.
+- Place the field and add items in the property panel.
+- Configure font, size, and selection behavior.
+
+
+
+### Add ListBox Programmatically
+
+To add a ListBox programmatically, call addFormField with type 'ListBox' and pass a settings object, including an options array for the items.
+
+```js
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/form-filling-document.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib'
+});
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation, ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner
+);
+pdfviewer.appendTo('#PdfViewer');
+
+pdfviewer.documentLoad = function() {
+ var options = [
+ { itemName: 'Item 1', itemValue: 'item1' },
+ { itemName: 'Item 2', itemValue: 'item2' },
+ { itemName: 'Item 3', itemValue: 'item3' }
+ ];
+
+ pdfviewer.formDesignerModule.addFormField('ListBox', {
+ name: 'States',
+ options: options,
+ bounds: { X: 380, Y: 320, Width: 150, Height: 60 }
+ });
+};
+```
+
+## DropDown
+
+### Add DropDown
+
+- Select DropDown in the Form Designer toolbar.
+- Place the field, then add items via the property panel.
+- Adjust appearance and default value.
+
+
+
+### Add DropDown Programmatically
+
+To add a DropDown programmatically, call addFormField with type 'DropDown' and pass a settings object with an options array.
+
+```js
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/form-filling-document.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib'
+});
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation, ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner
+);
+pdfviewer.appendTo('#PdfViewer');
+
+pdfviewer.documentLoad = function() {
+ var options = [
+ { itemName: 'Item 1', itemValue: 'item1' },
+ { itemName: 'Item 2', itemValue: 'item2' },
+ { itemName: 'Item 3', itemValue: 'item3' }
+ ];
+
+ pdfviewer.formDesignerModule.addFormField('DropDown', {
+ name: 'Country',
+ options: options,
+ bounds: { X: 560, Y: 320, Width: 150, Height: 24 }
+ });
+};
+```
+
+## Signature field
+
+### Add Signature field
+
+- Select Signature field in the Form Designer toolbar.
+- Place the field where the signer should sign.
+- Configure indicator text, thickness, tooltip, and required state.
+
+
+
+### Add Signature field Programmatically
+
+To add a Signature field programmatically, call addFormField with type 'SignatureField' and pass a settings object.
+
+```js
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/form-filling-document.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib'
+});
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation, ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner
+);
+pdfviewer.appendTo('#PdfViewer');
+
+pdfviewer.documentLoad = function() {
+ pdfviewer.formDesignerModule.addFormField('SignatureField', {
+ name: 'Sign',
+ bounds: { X: 57, Y: 923, Width: 200, Height: 43 }
+ });
+};
+```
+
+## Initial field
+
+### Add Initial field
+
+- Select Initial field in the Form Designer toolbar.
+- Place the field where initials are required.
+- Configure indicator text, tooltip, and required state.
+
+
+
+### Add Initial field Programmatically
+
+To add an Initial field programmatically, call addFormField with type 'InitialField' and pass a settings object.
+
+```js
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/form-filling-document.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib'
+});
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation, ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner
+);
+pdfviewer.appendTo('#PdfViewer');
+
+pdfviewer.documentLoad = function() {
+ pdfviewer.formDesignerModule.addFormField('InitialField', {
+ name: 'Initial',
+ bounds: { X: 148, Y: 466, Width: 200, Height: 43 }
+ });
+};
+```
+
+## setFormFieldMode programmatically
+
+The setFormFieldMode method enables adding a form field dynamically by specifying the field type. For example, the following adds a Password field when a button is clicked.
+
+```html
+
+```
+
+```js
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib'
+});
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation, ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner
+);
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addPasswordField').addEventListener('click', function () {
+ pdfviewer.formDesignerModule.setFormFieldMode('Password');
+ // In setFormFieldMode, pass the required field to be added like Textbox, Checkbox, etc.
+});
+```
+
+## See Also
+
+- [Form Designer overview](../overview)
+- [Form Designer Toolbar](../../toolbar-customization/form-designer-toolbar)
+- [Edit form fields](./edit-formfields)
+- [Style form fields](./style-formfields)
+- [Remove form fields](./remove-formfields)
+- [Group form fields](../group-formfields)
+- [Form validation](../form-validation)
+- [Form Fields API](../formfields-api)
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/Create-edit-Style-del-formFields/edit-formfields.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/Create-edit-Style-del-formFields/edit-formfields.md
new file mode 100644
index 000000000..ab069cb04
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/Create-edit-Style-del-formFields/edit-formfields.md
@@ -0,0 +1,507 @@
+---
+layout: post
+title: Edit form fields in the JavaScript PDF Viewer | Syncfusion
+description: Learn how to edit PDF form fields using the UI and programmatically with APIs in the Syncfusion JavaScript PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Edit form fields in JavaScript PDF Viewer
+
+The PDF Viewer component allows user to edit PDF form fields using the Form Designer UI and update them programmatically.
+
+The PDF Viewer supports editing these field types:
+
+- [Textbox](#textbox)
+- [Password](#password)
+- [CheckBox](#checkbox)
+- [RadioButton](#radiobutton)
+- [ListBox](#listbox)
+- [DropDown](#dropdown)
+- [Signature field](#signature-field)
+- [Initial field](#initial-field)
+
+## Edit with the UI
+
+- Select a form field and Right-click to open the Properties panel from the context menu to change its settings.
+
+
+
+- Drag to move; use resize handles to resize.
+- Use the toolbar to toggle field mode and add new fields.
+
+## Textbox
+
+### Edit Textbox
+
+- Right-click the textbox Properties.
+- Change value, font, size, colors, border thickness, alignment, max length, multiline.
+
+
+
+### Edit Textbox programmatically
+
+Use updateFormField on a button click for a simple, discoverable flow. The example below retrieves the fields, locates the textbox, and applies value, typography, colors, alignment, and border thickness updates.
+
+```html
+
+```
+
+```js
+// Include the required PDF Viewer modules for ES5
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('editTextbox')?.addEventListener('click', function () {
+ // Retrieve form fields collection
+ var fields = pdfviewer.retrieveFormFields();
+ // Find the textbox field by name (Here field name is First Name)
+ var field = fields.find(function (f) { return f.name === 'First Name'; }) || fields[0]; // Update Name accordingly
+ if (field) {
+ // Update textbox field styling and value
+ pdfviewer.formDesignerModule.updateFormField(field, {
+ value: 'John',
+ fontFamily: 'Courier',
+ fontSize: 12,
+ fontStyle: ej.pdfviewer.FontStyle.None,
+ color: 'black',
+ backgroundColor: 'white',
+ borderColor: 'black',
+ thickness: 2,
+ alignment: 'Left',
+ maxLength: 50
+ });
+ }
+});
+```
+
+## Password
+
+### Edit Password
+
+- Right-click the password field Properties.
+- Change tooltip, required, max length, font, and appearance.
+
+
+
+### Edit Password programmatically
+
+Use updateFormField on a button click for a simple, discoverable flow. The example below retrieves the fields, locates the password field, and applies tooltip, validation flags, typography, colors, alignment, max length, and border thickness updates.
+
+```html
+
+```
+```js
+// Include the required PDF Viewer modules for ES5
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('editPasswordBox')?.addEventListener('click', function () {
+ // Retrieve form fields collection
+ var fields = pdfviewer.retrieveFormFields();
+ // Find the password field by name (Here field name is Password)
+ var field = fields.find(function (f) { return f.name === 'Password'; });
+ if (field) {
+ // Update password field properties
+ pdfviewer.formDesignerModule.updateFormField(field, {
+ tooltip: 'Enter your password',
+ isReadOnly: false,
+ isRequired: true,
+ isPrint: true,
+ fontFamily: 'Courier',
+ fontSize: 10,
+ color: 'black',
+ borderColor: 'black',
+ backgroundColor: 'white',
+ alignment: 'Left',
+ maxLength: 20,
+ thickness: 1
+ });
+ }
+});
+```
+
+## CheckBox
+
+### Edit CheckBox
+
+- Right-click the checkbox Properties.
+- Toggle checked state, change border/background colors and thickness.
+
+
+
+### Edit CheckBox programmatically
+
+Use updateFormField on a button click for a simple, discoverable flow. The example below retrieves the fields, locates the checkbox field, and applies checked state, tooltip, colors, and border thickness updates.
+
+```html
+
+```
+```js
+// Include the required PDF Viewer modules for ES5
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('editCheckbox')?.addEventListener('click', function () {
+ // Retrieve form fields collection
+ var fields = pdfviewer.retrieveFormFields();
+ // Find the checkbox field by name (Here field name is Subscribe)
+ var cb = fields.find(function (f) { return f.name === 'Subscribe'; });
+ if (cb) {
+ // Update checkbox field properties and state
+ pdfviewer.formDesignerModule.updateFormField(cb, {
+ isChecked: true,
+ backgroundColor: 'white',
+ borderColor: 'black',
+ thickness: 2,
+ tooltip: 'Subscribe to newsletter'
+ });
+ }
+});
+```
+
+## RadioButton
+
+### Edit RadioButton
+
+- Right-click a radio button Properties.
+- Set selected state, colors, and thickness. Buttons with the same Name form a group; only one can be selected.
+
+
+
+### Edit RadioButton programmatically
+
+Use updateFormField on a button click for a simple, discoverable flow. The example below retrieves the fields, locates the radio button group, and applies selection state and border appearance updates.
+
+```html
+
+```
+```js
+// Include the required PDF Viewer modules for ES5
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('editRadio')?.addEventListener('click', function () {
+ // Retrieve form fields collection
+ var fields = pdfviewer.retrieveFormFields();
+ // Filter the radio button group by name (Here group name is Gender)
+ var genderRadios = fields.filter(function (f) { return f.name === 'Gender'; });
+ if (genderRadios[1]) {
+ // Update radio button selection and appearance
+ pdfviewer.formDesignerModule.updateFormField(genderRadios[0], { isSelected: false });
+ pdfviewer.formDesignerModule.updateFormField(genderRadios[1], { isSelected: true, thickness: 2, borderColor: 'black' });
+ }
+});
+```
+
+## ListBox
+
+### Edit ListBox
+
+- Right-click the list box Properties.
+- Add/remove items, set selection, and adjust fonts and colors.
+
+
+
+### Edit ListBox programmatically
+
+Use updateFormField on a button click for a simple, discoverable flow. The example below retrieves the fields, locates the list box, and applies options, selection, typography, colors, and border appearance updates.
+
+```html
+
+```
+```js
+// Include the required PDF Viewer modules for ES5
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('editListBox')?.addEventListener('click', function () {
+ // Retrieve form fields collection
+ var fields = pdfviewer.retrieveFormFields();
+ // Find the listbox field by name (Here field name is States)
+ var lb = fields.find(function (f) { return f.name === 'States'; });
+ if (lb) {
+ // Update listbox options, selection, and appearance
+ pdfviewer.formDesignerModule.updateFormField(lb, {
+ options: [
+ { itemName: 'Alabama', itemValue: 'AL' },
+ { itemName: 'Alaska', itemValue: 'AK' },
+ { itemName: 'Arizona', itemValue: 'AZ' }
+ ],
+ value: 'AZ',
+ fontFamily: 'Courier',
+ fontSize: 10,
+ color: 'black',
+ borderColor: 'black',
+ backgroundColor: 'white'
+ });
+ }
+});
+```
+
+## DropDown
+
+### Edit DropDown
+
+- Right-click the dropdown Properties.
+- Add/remove items, set default value, and adjust appearance.
+
+
+
+### Edit DropDown programmatically
+
+Use updateFormField on a button click for a simple, discoverable flow. The example below retrieves the fields, locates the dropdown, and applies items, value, typography, colors, and border appearance updates.
+
+```html
+
+```
+```js
+// Include the required PDF Viewer modules for ES5
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('editDropDown')?.addEventListener('click', function () {
+ // Retrieve form fields collection
+ var fields = pdfviewer.retrieveFormFields();
+ // Find the dropdown field by name (Here field name is Country)
+ var dd = fields.find(function (f) { return f.name === 'Country'; });
+ if (dd) {
+ // Update dropdown items, value, and appearance
+ pdfviewer.formDesignerModule.updateFormField(dd, {
+ options: [
+ { itemName: 'USA', itemValue: 'US' },
+ { itemName: 'Canada', itemValue: 'CA' },
+ { itemName: 'Mexico', itemValue: 'MX' }
+ ],
+ value: 'US',
+ fontFamily: 'Courier',
+ fontSize: 10,
+ color: 'black',
+ borderColor: 'black',
+ backgroundColor: 'white'
+ });
+ }
+});
+```
+
+## Signature field
+
+### Edit Signature field
+
+- Right-click the signature field Properties.
+- Change tooltip, thickness, indicator text, required/visibility states.
+
+
+
+### Edit Signature field programmatically
+
+Use updateFormField on a button click for a simple, discoverable flow. The example below retrieves the fields, locates the signature field, and applies tooltip, required/print flags, colors, and border thickness updates.
+
+```html
+
+```
+```js
+// Include the required PDF Viewer modules for ES5
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('editSignature')?.addEventListener('click', function () {
+ // Retrieve form fields collection
+ var fields = pdfviewer.retrieveFormFields();
+ // Find the signature field by name (Here field name is Sign)
+ var sig = fields.find(function (f) { return f.name === 'Sign'; });
+ if (sig) {
+ // Update signature field properties
+ pdfviewer.formDesignerModule.updateFormField(sig, {
+ tooltip: 'Please sign here',
+ thickness: 3,
+ isRequired: true,
+ isPrint: true,
+ backgroundColor: 'white',
+ borderColor: 'black'
+ });
+ }
+});
+```
+
+## Initial field
+
+### Edit Initial field
+
+- Right-click the initial field Properties.
+- Change tooltip, indicator text, thickness, and required/visibility states.
+
+
+
+### Edit Initial field programmatically
+
+Use updateFormField on a button click for a simple, discoverable flow. The example below retrieves the fields, locates the initial field, and applies tooltip, required/print flags, colors, and border thickness updates.
+
+```html
+
+```
+```js
+// Include the required PDF Viewer modules for ES5
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('editInitial')?.addEventListener('click', function () {
+ // Retrieve form fields collection
+ var fields = pdfviewer.retrieveFormFields();
+ // Find the initial field by name (Here field name is Initial)
+ var init = fields.find(function (f) { return f.name === 'Initial'; });
+ if (init) {
+ // Update initial field properties
+ pdfviewer.formDesignerModule.updateFormField(init, {
+ tooltip: 'Add your initials',
+ thickness: 2,
+ isRequired: true,
+ isPrint: true,
+ backgroundColor: 'white',
+ borderColor: 'black'
+ });
+ }
+});
+```
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples)
+
+## See also
+
+- [Form Designer overview](../overview)
+- [Form Designer Toolbar](../../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./create-formfields)
+- [Remove form Fields](./remove-formfields)
+- [Style form fields](./style-formfields)
+- [Group form fields](../group-formfields)
+- [Form validation](../form-validation)
+- [Form fields API](../formfields-api)
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/Create-edit-Style-del-formFields/remove-formfields.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/Create-edit-Style-del-formFields/remove-formfields.md
new file mode 100644
index 000000000..e529e230a
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/Create-edit-Style-del-formFields/remove-formfields.md
@@ -0,0 +1,112 @@
+---
+layout: post
+title: Remove form fields in the JavaScript PDF Viewer | Syncfusion
+description: Learn how to remove PDF form fields using the UI and programmatically in the Syncfusion JavaScript PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Remove form fields in JavaScript PDF Viewer
+
+The PDF Viewer component allows users to remove PDF form fields using the Form Designer UI and programmatically.
+
+## Remove form fields using the UI
+
+You can remove designed form fields directly from the Form Designer toolbar.
+
+Steps:
+
+- Select the target form field on the page.
+- Click the Delete Form Field icon on the Form Designer toolbar.
+- Alternatively, press the `Delete key` after selecting one or more fields.
+
+
+
+## Remove form fields programmatically
+
+Use the `deleteFormField` method to remove form fields programmatically. Retrieve the target field from the `retrieveFormFields()` API (by object or ID) and pass it to `deleteFormField`.
+
+The following example adds three fields on document load (Textbox, Password, and Signature) and shows two ways to remove them using buttons.
+
+```html
+
+
+
+```
+```js
+// Inject required modules
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.FormFields
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib'
+});
+
+// Optional server-backed
+// pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+
+pdfviewer.appendTo('#PdfViewer');
+
+// Add form fields on document load
+pdfviewer.documentLoad = function () {
+ pdfviewer.formDesignerModule.addFormField('Textbox', {
+ name: 'First Name',
+ bounds: { X: 146, Y: 229, Width: 150, Height: 24 }
+ });
+
+ pdfviewer.formDesignerModule.addFormField('Password', {
+ name: 'Password',
+ bounds: { X: 338, Y: 229, Width: 150, Height: 24 }
+ });
+
+ pdfviewer.formDesignerModule.addFormField('SignatureField', {
+ name: 'Sign Here',
+ bounds: { X: 146, Y: 280, Width: 200, Height: 43 }
+ });
+};
+
+// Delete all added form fields on button click (passing field objects)
+document.getElementById('deleteAllFields') && document.getElementById('deleteAllFields').addEventListener('click', function () {
+ // Clone to avoid mutation while deleting
+ var fields = pdfviewer.retrieveFormFields().slice();
+ fields.forEach(function (field) {
+ pdfviewer.formDesignerModule.deleteFormField(field);
+ });
+});
+
+// Delete by ID on button click (example uses the first field's ID)
+document.getElementById('deleteById') && document.getElementById('deleteById').addEventListener('click', function () {
+ var list = pdfviewer.retrieveFormFields();
+ if (list.length > 0 && list[0].id) {
+ pdfviewer.formDesignerModule.deleteFormField(list[0].id);
+ }
+});
+```
+
+N> To configure the server-backed PDF Viewer, add the following `serviceUrl` in your script:
+`pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';`
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples)
+
+## See also
+
+- [Form Designer overview](../overview)
+- [Form Designer Toolbar](../../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./create-formfields)
+- [Edit form fields](./edit-formfields)
+- [Style form fields](./style-formfields)
+- [Group form fields](../group-formfields)
+- [Form validation](../form-validation)
+- [Form fields API](../formfields-api)
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/Create-edit-Style-del-formFields/style-formfields.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/Create-edit-Style-del-formFields/style-formfields.md
new file mode 100644
index 000000000..d0c717e1e
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/Create-edit-Style-del-formFields/style-formfields.md
@@ -0,0 +1,620 @@
+---
+layout: post
+title: Style form fields in the JavaScript PDF Viewer | Syncfusion
+description: Learn how to configure typography, colors, borders, alignment, and other style settings for PDF form fields using the UI and programmatically in JavaScript.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Style form fields in JavaScript PDF Viewer
+
+The PDF Viewer component allows users to style and customize the appearance of PDF form fields using the Form Designer UI and programmatically. User can also set the default settings applied when fields are added from the Form Designer toolbar.
+
+Supported field types:
+
+- [Textbox](#textbox)
+- [Password](#password)
+- [CheckBox](#checkbox)
+- [RadioButton](#radiobutton)
+- [ListBox](#listbox)
+- [DropDown](#dropdown)
+- [Signature field](#signature-field)
+- [Initial field](#initial-field)
+
+## Textbox
+
+### Style Textbox
+
+Use the Properties panel to adjust the value, font family/size/style, text color, border and background colors, border thickness, text alignment, and maximum length.
+
+
+
+### Style Textbox programmatically
+
+Use updateFormField to modify a textbox’s appearance and behavior on a button click. The example below finds the field by name (or falls back to the first field) and updates value, typography, colors, alignment, and border thickness.
+
+```html
+
+```
+
+```js
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner
+);
+pdfviewer.appendTo('#PdfViewer');
+
+// Update textbox styling on button click
+document.getElementById('updateTextboxStyle') && document.getElementById('updateTextboxStyle').addEventListener('click', function () {
+ // Retrieve form fields collection
+ var fields = pdfviewer.formFieldCollections || [];
+ // Find the textbox field by name
+ var tb = (fields || []).filter(function (f) { return f.name === 'First Name'; })[0] || fields[0];
+ if (tb) {
+ // Update textbox field styling
+ pdfviewer.formDesignerModule.updateFormField(tb, {
+ value: 'John',
+ fontFamily: 'Courier',
+ fontSize: 12,
+ fontStyle: 'None',
+ color: 'black',
+ borderColor: 'black',
+ backgroundColor: 'white',
+ alignment: 'Left',
+ thickness: 2
+ });
+ }
+});
+```
+
+### Default Textbox settings
+
+The PDF Viewer exposes a default settings APIs for form fields. Use the TextFieldSettings to preconfigure TextBox properties applied when adding fields from the Form Designer toolbar.
+
+```js
+// Apply as defaults for Textbox added from toolbar
+pdfviewer.textFieldSettings = {
+ name: 'Textbox',
+ isReadOnly: false,
+ visibility: 'visible',
+ isRequired: false,
+ isPrint: true,
+ tooltip: 'Textbox',
+ thickness: 4,
+ value: 'Textbox',
+ fontFamily: 'Courier',
+ fontSize: 10,
+ fontStyle: 'None',
+ color: 'black',
+ borderColor: 'black',
+ backgroundColor: 'White',
+ alignment: 'Left',
+ maxLength: 0,
+ isMultiline: false
+};
+```
+
+## Password
+
+### Style Password
+
+Use the Properties panel to configure the tooltip, font family and size, masked text color, border and background colors, text alignment, maximum length, and border thickness.
+
+
+
+### Style Password programmatically
+
+```js
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner
+);
+pdfviewer.appendTo('#PdfViewer');
+
+// Retrieve form fields collection and find the password field by name
+var pw = (pdfviewer.formFieldCollections || []).filter(function (f) { return f.name === 'Password'; })[0];
+if (pw) {
+ // Update password field styling
+ pdfviewer.formDesignerModule.updateFormField(pw, {
+ tooltip: 'Enter password',
+ fontFamily: 'Courier',
+ fontSize: 10,
+ color: 'black',
+ borderColor: 'black',
+ backgroundColor: 'white',
+ alignment: 'Left',
+ maxLength: 20,
+ thickness: 1
+ });
+}
+```
+
+### Default Password settings
+
+The PDF Viewer exposes default settings APIs for form fields. Use the PasswordFieldSettings to preconfigure Password properties applied when adding fields from the Form Designer toolbar.
+
+```js
+pdfviewer.passwordFieldSettings = {
+ name: 'Password',
+ isReadOnly: false,
+ visibility: 'visible',
+ isRequired: false,
+ isPrint: true,
+ tooltip: 'Password',
+ thickness: 4,
+ value: 'Password',
+ fontFamily: 'Courier',
+ fontSize: 10,
+ fontStyle: 'None',
+ color: 'black',
+ borderColor: 'black',
+ backgroundColor: 'white',
+ alignment: 'Left',
+ maxLength: 0
+};
+```
+
+## CheckBox
+
+### Style CheckBox
+
+Use the Properties panel to toggle the checked state and customize border and background colors, and border thickness.
+
+
+
+### Style CheckBox programmatically
+
+```js
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner
+);
+pdfviewer.appendTo('#PdfViewer');
+
+// Retrieve form fields collection and find the checkbox field by name
+var cb = (pdfviewer.formFieldCollections || []).filter(function (f) { return f.name === 'Subscribe'; })[0];
+if (cb) {
+ // Update checkbox field styling
+ pdfviewer.formDesignerModule.updateFormField(cb, {
+ isChecked: true,
+ backgroundColor: 'white',
+ borderColor: 'black',
+ thickness: 2,
+ tooltip: 'Subscribe'
+ });
+}
+```
+
+### Default CheckBox settings
+
+The PDF Viewer exposes default settings APIs for form fields. Use the CheckBoxFieldSettings to preconfigure CheckBox properties applied when adding fields from the Form Designer toolbar.
+
+```js
+pdfviewer.checkBoxFieldSettings = {
+ name: 'CheckBox',
+ isReadOnly: false,
+ visibility: 'visible',
+ isRequired: false,
+ isPrint: true,
+ tooltip: 'CheckBox',
+ thickness: 4,
+ isChecked: true,
+ backgroundColor: 'white',
+ borderColor: 'black'
+};
+```
+
+## RadioButton
+
+### Style RadioButton
+
+Use the Properties panel to set the selected state, border and background colors, and border thickness. Radio buttons with the same name are grouped automatically.
+
+
+
+### Style RadioButton programmatically
+
+```js
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner
+);
+pdfviewer.appendTo('#PdfViewer');
+
+// Retrieve all radio buttons by group name
+var radios = (pdfviewer.formFieldCollections || []).filter(function (f) { return f.name === 'Gender'; });
+if (radios.length > 1) {
+ // Deselect first option
+ pdfviewer.formDesignerModule.updateFormField(radios[0], { isSelected: false });
+ // Select second option and style
+ pdfviewer.formDesignerModule.updateFormField(radios[1], { isSelected: true, thickness: 2, borderColor: 'black' });
+}
+```
+
+### Default RadioButton settings
+
+The PDF Viewer exposes default settings APIs for form fields. Use the RadioButtonFieldSettings to preconfigure RadioButton properties applied when adding fields from the Form Designer toolbar.
+
+```js
+pdfviewer.radioButtonFieldSettings = {
+ name: 'RadioButton',
+ isReadOnly: false,
+ visibility: 'visible',
+ isRequired: false,
+ isPrint: true,
+ tooltip: 'RadioButton',
+ thickness: 4,
+ isSelected: true,
+ backgroundColor: 'white',
+ borderColor: 'black',
+ value: 'RadioButton'
+};
+```
+
+## ListBox
+
+### Style ListBox
+
+Use the Properties panel to add or remove items, set the selected value, and adjust typography and colors.
+
+
+
+### Style ListBox programmatically
+
+```js
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner
+);
+pdfviewer.appendTo('#PdfViewer');
+
+// Retrieve form fields collection and find the list box field by name
+var lb = (pdfviewer.formFieldCollections || []).filter(function (f) { return f.name === 'States'; })[0];
+if (lb) {
+ // Update list box items, value, and styling
+ pdfviewer.formDesignerModule.updateFormField(lb, {
+ options: [
+ { itemName: 'Item 1', itemValue: 'item1' },
+ { itemName: 'Item 2', itemValue: 'item2' },
+ { itemName: 'Item 3', itemValue: 'item3' }
+ ],
+ value: 'item2',
+ fontFamily: 'Courier',
+ fontSize: 10,
+ color: 'black',
+ borderColor: 'black',
+ backgroundColor: 'white'
+ });
+}
+```
+
+### Default ListBox settings
+
+The PDF Viewer exposes default settings APIs for form fields. Use the listBoxFieldSettings to preconfigure ListBox properties applied when adding fields from the Form Designer toolbar.
+
+```js
+var customOptions = [
+ { itemName: 'item1', itemValue: 'item1' },
+ { itemName: 'item2', itemValue: 'item2' },
+ { itemName: 'item3', itemValue: 'item3' }
+];
+
+pdfviewer.listBoxFieldSettings = {
+ name: 'ListBox',
+ isReadOnly: false,
+ visibility: 'visible',
+ isRequired: false,
+ isPrint: true,
+ tooltip: 'ListBox',
+ thickness: 4,
+ value: 'ListBox',
+ fontFamily: 'Courier',
+ fontSize: 10,
+ fontStyle: 'None',
+ color: 'black',
+ borderColor: 'black',
+ backgroundColor: 'White',
+ alignment: 'Left',
+ options: customOptions
+};
+```
+
+## DropDown
+
+### Style DropDown
+
+Use the Properties panel to add or remove items, set the default value, and adjust typography and colors.
+
+
+
+### Style DropDown programmatically
+
+```js
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner
+);
+pdfviewer.appendTo('#PdfViewer');
+
+// Retrieve form fields collection and find the dropdown field by name
+var dd = (pdfviewer.formFieldCollections || []).filter(function (f) { return f.name === 'Country'; })[0];
+if (dd) {
+ // Update dropdown items, value, and styling
+ pdfviewer.formDesignerModule.updateFormField(dd, {
+ options: [
+ { itemName: 'USA', itemValue: 'US' },
+ { itemName: 'Canada', itemValue: 'CA' },
+ { itemName: 'Mexico', itemValue: 'MX' }
+ ],
+ value: 'US',
+ fontFamily: 'Courier',
+ fontSize: 10,
+ color: 'black',
+ borderColor: 'black',
+ backgroundColor: 'white'
+ });
+}
+```
+
+### Default DropDown settings
+
+The PDF Viewer exposes default settings APIs for form fields. DropDown uses DropDownFieldSettings to preconfigure properties applied when adding fields from the Form Designer toolbar.
+
+```js
+var ddOptions = [
+ { itemName: 'item1', itemValue: 'item1' },
+ { itemName: 'item2', itemValue: 'item2' },
+ { itemName: 'item3', itemValue: 'item3' }
+];
+
+// DropDown uses listBoxFieldSettings for defaults
+pdfviewer.DropdownFieldSettings = {
+ name: 'DropDown',
+ isReadOnly: false,
+ visibility: 'visible',
+ isRequired: false,
+ isPrint: true,
+ tooltip: 'DropDown',
+ thickness: 4,
+ value: 'DropDown',
+ fontFamily: 'Courier',
+ fontSize: 10,
+ fontStyle: 'None',
+ color: 'black',
+ borderColor: 'black',
+ backgroundColor: 'White',
+ alignment: 'Left',
+ options: ddOptions
+};
+```
+
+## Signature field
+
+### Style Signature field
+
+Use the Properties panel to configure the tooltip, indicator text, dialog display modes, border thickness, required setting, and colors.
+
+
+
+### Style Signature field programmatically
+
+```js
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner
+);
+pdfviewer.appendTo('#PdfViewer');
+
+// Retrieve form fields collection and find the signature field by name
+var sig = (pdfviewer.formFieldCollections || []).filter(function (f) { return f.name === 'Sign'; })[0];
+if (sig) {
+ // Update signature field settings
+ pdfviewer.formDesignerModule.updateFormField(sig, {
+ tooltip: 'Please sign here',
+ thickness: 3,
+ isRequired: true,
+ isPrint: true,
+ backgroundColor: 'white',
+ borderColor: 'black'
+ });
+}
+```
+
+### Default Signature field settings
+
+The PDF Viewer exposes default settings APIs for form fields. Use the SignatureFieldSettings to preconfigure Signature properties applied when adding fields from the Form Designer toolbar.
+
+```js
+pdfviewer.signatureFieldSettings = {
+ name: 'Signature',
+ isReadOnly: false,
+ visibility: 'visible',
+ isRequired: false,
+ isPrint: true,
+ tooltip: 'Signature',
+ thickness: 4,
+ signatureDialogSettings: {
+ displayMode: ej.pdfviewer.DisplayMode.Draw | ej.pdfviewer.DisplayMode.Upload | ej.pdfviewer.DisplayMode.Text,
+ hideSaveSignature: false
+ },
+ signatureIndicatorSettings: {
+ opacity: 1,
+ backgroundColor: '#237ba2',
+ height: 50,
+ fontSize: 15,
+ text: 'Signature Field',
+ color: 'white'
+ }
+};
+```
+
+## Initial field
+
+### Style Initial field
+
+Use the Properties panel to configure the tooltip, indicator text, dialog display modes, border thickness, and colors.
+
+
+
+### Style Initial field programmatically
+
+```js
+var pdfviewer = new ej.pdfviewer.PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner
+);
+pdfviewer.appendTo('#PdfViewer');
+
+// Retrieve form fields collection and find the initial field by name
+var init = (pdfviewer.formFieldCollections || []).filter(function (f) { return f.name === 'Initial'; })[0];
+if (init) {
+ // Update initial field settings
+ pdfviewer.formDesignerModule.updateFormField(init, {
+ tooltip: 'Add your initials',
+ thickness: 2,
+ isRequired: true,
+ isPrint: true,
+ backgroundColor: 'white',
+ borderColor: 'black'
+ });
+}
+```
+
+### Default Initial field settings
+
+The PDF Viewer exposes default settings APIs for form fields. Use the InitialFieldSettings to preconfigure Initial properties applied when adding fields from the Form Designer toolbar.
+
+```js
+pdfviewer.initialFieldSettings = {
+ name: 'Initial',
+ isReadOnly: false,
+ visibility: 'visible',
+ isRequired: false,
+ isPrint: true,
+ tooltip: 'Initial',
+ thickness: 4,
+ initialIndicatorSettings: {
+ opacity: 1,
+ backgroundColor: '#237ba2',
+ height: 50,
+ fontSize: 15,
+ text: 'Initial Field',
+ color: 'white'
+ },
+ initialDialogSettings: {
+ displayMode: ej.pdfviewer.DisplayMode.Draw | ej.pdfviewer.DisplayMode.Upload | ej.pdfviewer.DisplayMode.Text,
+ hideSaveSignature: false
+ }
+};
+```
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples)
+
+## See also
+
+- [Form Designer overview](../overview)
+- [Form Designer Toolbar](../../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./create-formfields)
+- [Edit form fields](./edit-formfields)
+- [Remove form fields](./remove-formfields)
+- [Group form fields](../group-formfields)
+- [Form validation](../form-validation)
+- [Add custom data to form fields](../custom-data)
+- [Form fields API](../formfields-api)
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/create-programmatically.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/create-programmatically.md
index 3a73f2b88..89e79f4c0 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/create-programmatically.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/create-programmatically.md
@@ -37,7 +37,7 @@ Use the addFormField method to add form fields programmatically. Pass the form f
N> To configure the server-backed PDF Viewer, add the following `serviceUrl` in the `index.html` file:
`serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer'`
-{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es5/addformfield-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es5/addformfield-cs1" %}
## Edit/Update form field programmatically
@@ -55,7 +55,7 @@ Use the updateFormField method to modify a form field programmatically. Retrieve
N> To configure the server-backed PDF Viewer, add the following `serviceUrl` in the `index.html` file:
`serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer'`
-{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es5/updateformfield-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es5/updateformfield-cs1" %}
## Delete form field programmatically
@@ -73,7 +73,7 @@ Use the deleteFormField method to remove a form field programmatically. Retrieve
N> To configure the server-backed PDF Viewer, add the following `serviceUrl` in the `index.html` file:
`serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer'`
-{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es5/deleteformfield-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es5/deleteformfield-cs1" %}
## Saving the form fields
@@ -1238,7 +1238,7 @@ pdfviewer.listBoxFieldSettings = {
### DropDown field settings
-Using the [updateFormField](https://ej2.syncfusion.com/documentation/api/pdfviewer/#updateformfields) method, the form fields can be updated programmatically.
+Using the [updateFormField](https://ej2.syncfusion.com/documentation/api/pdfviewer#updateformfields) method, the form fields can be updated programmatically.
The following example updates DropDown field properties on a button click.
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/form-constrain.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/form-constrain.md
new file mode 100644
index 000000000..8bc8572b1
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/form-constrain.md
@@ -0,0 +1,315 @@
+---
+layout: post
+title: Form constraints in the JavaScript PDF Viewer component | Syncfusion
+description: Learn how to configure form field constraints such as isReadOnly, isRequired, and isPrint in the Syncfusion JavaScript PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Form constraints in JavaScript PDF Viewer
+
+The PDF Viewer components provides support to control user interaction and output behavior of form fields using the following constraints:
+
+- [isReadOnly](#make-form-fields-readonly): Prevents users from editing a field.
+- [isRequired](#mark-fields-as-required): Marks a field as mandatory and participates in validation.
+- [isPrint](#control-field-print-behavior): Includes the field appearance when printing or exporting with print.
+
+You can set these properties when you create fields, update them later programmatically, or configure default settings so fields created from the Form Designer toolbar inherit the values.
+
+
+
+## Make Form Fields Read‑Only
+
+Use `isReadOnly` to make a field non-editable in the UI while keeping it modifiable via code. Use the following code-snippets to make form fields read-only.
+
+```js
+// HTML element
+//
+
+// Inject required modules
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection, ej.pdfviewer.Annotation, ej.pdfviewer.FormDesigner, ej.pdfviewer.FormFields
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+pdfviewer.appendTo('#PdfViewer');
+
+// Use this setting to make Read-only as default for new Textbox fields
+// pdfviewer.textFieldSettings = { isReadOnly: true };
+
+pdfviewer.documentLoad = function () {
+ // Read-only Textbox
+ pdfviewer.formDesignerModule.addFormField('Textbox', {
+ name: 'EmployeeId',
+ bounds: { X: 146, Y: 229, Width: 150, Height: 24 },
+ isReadOnly: true,
+ value: 'EMP-0001'
+ });
+
+ // Read-only Signature field
+ pdfviewer.formDesignerModule.addFormField('SignatureField', {
+ name: 'ApplicantSign',
+ bounds: { X: 57, Y: 923, Width: 200, Height: 43 },
+ isReadOnly: true,
+ tooltip: 'Sign to accept the terms'
+ });
+};
+```
+
+## Mark Fields as Required
+
+Use `isRequired` to mark fields as mandatory so they participate in validation during print/download. Turn on validation with enableFormFieldsValidation and handle validateFormFields to block actions if required fields are empty.
+
+```js
+// HTML element
+//
+
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation, ej.pdfviewer.BookmarkView, ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.Print,
+ ej.pdfviewer.Annotation, ej.pdfviewer.FormDesigner, ej.pdfviewer.FormFields
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+
+// 1) Default for new Textbox fields
+pdfviewer.textFieldSettings = { isRequired: true };
+
+// 2) Validation wiring
+pdfviewer.enableFormFieldsValidation = true;
+pdfviewer.validateFormFields = function (args) {
+ // Triggers when required fields are empty on submit/validate
+ if (args && args.formField && args.formField.length > 0) {
+ alert('Please fill all required fields. Missing: ' + args.formField[0].name);
+ }
+};
+
+// 3) Creation (add a Textbox form field once the document is loaded)
+pdfviewer.documentLoad = function () {
+ pdfviewer.formDesignerModule.addFormField('Textbox', {
+ name: 'Email',
+ bounds: { X: 146, Y: 260, Width: 220, Height: 24 },
+ isRequired: true,
+ tooltip: 'Email is required'
+ });
+};
+
+// Mount the viewer
+pdfviewer.appendTo('#pdfViewer'); // Ensure an element with id="pdfViewer" exists in your HTML
+```
+
+## Control Field Print Behavior
+
+Use `isPrint` to control whether a field’s appearance is included when printing the PDF from the viewer.
+
+```js
+// HTML element
+//
+
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation, ej.pdfviewer.BookmarkView, ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.Print,
+ ej.pdfviewer.Annotation, ej.pdfviewer.FormDesigner, ej.pdfviewer.FormFields
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+
+// 1) Default for new signature fields
+pdfviewer.signatureFieldSettings = { isPrint: false };
+
+function getFieldByName(name) {
+ var fields = pdfviewer.formFieldCollections;
+ for (var i = 0; i < fields.length; i++) {
+ if (fields[i].name === name) { return fields[i]; }
+ }
+ return null;
+}
+
+// 2) Creation (do not print a signature field)
+pdfviewer.documentLoad = function () {
+ pdfviewer.formDesignerModule.addFormField('SignatureField', {
+ name: 'ApplicantSign',
+ bounds: { X: 57, Y: 923, Width: 200, Height: 43 },
+ isPrint: false
+ });
+
+ // 3) Update existing field (toggle to print)
+ var sign = getFieldByName('ApplicantSign');
+ if (sign) {
+ pdfviewer.formDesignerModule.updateFormField(sign, { isPrint: true });
+ }
+};
+
+pdfviewer.appendTo('#pdfViewer'); // Ensure exists
+
+// Note: To invoke printing programmatically (fields with isPrint: false are hidden in print output)
+// pdfviewer.print.print();
+```
+
+N> Printing can be invoked programmatically using pdfviewer.print.print(); fields with isPrint: false will not appear in the print output.
+
+## Set constraints when creating a field
+
+Use `addFormField` to create fields and pass the constraint properties in the settings object. The example below adds a Textbox and a Signature field with different constraint combinations.
+
+```js
+// HTML element
+//
+
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection, ej.pdfviewer.Annotation, ej.pdfviewer.FormDesigner, ej.pdfviewer.FormFields
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+pdfviewer.appendTo('#PdfViewer');
+
+pdfviewer.documentLoad = function () {
+ // Read-only Textbox that is printed but not required
+ pdfviewer.formDesignerModule.addFormField('Textbox', {
+ name: 'EmployeeId',
+ bounds: { X: 146, Y: 229, Width: 150, Height: 24 },
+ isReadOnly: true,
+ isRequired: false,
+ isPrint: true,
+ value: 'EMP-0001'
+ });
+
+ // Required Signature field that is not included in print
+ pdfviewer.formDesignerModule.addFormField('SignatureField', {
+ name: 'ApplicantSign',
+ bounds: { X: 57, Y: 923, Width: 200, Height: 43 },
+ isReadOnly: false,
+ isRequired: true,
+ isPrint: false,
+ tooltip: 'Sign to accept the terms'
+ });
+};
+```
+
+N> To configure the server-backed PDF Viewer, add the following serviceUrl in index.js:
+`pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';`
+
+## Update constraints programmatically
+
+Use `updateFormField` to change constraint flags of an existing field. The snippet below toggles isReadOnly, sets a field as required, and controls whether the field should appear when printing.
+
+```js
+// HTML element
+//
+
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection, ej.pdfviewer.Annotation, ej.pdfviewer.FormDesigner, ej.pdfviewer.FormFields
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+pdfviewer.appendTo('#PdfViewer');
+
+function getFieldByName(name) {
+ var fields = pdfviewer.formFieldCollections;
+ for (var i = 0; i < fields.length; i++) {
+ if (fields[i].name === name) { return fields[i]; }
+ }
+ return null;
+}
+
+pdfviewer.documentLoad = function () {
+ // Add a sample textbox
+ pdfviewer.formDesignerModule.addFormField('Textbox', {
+ name: 'Email',
+ bounds: { X: 146, Y: 260, Width: 220, Height: 24 }
+ });
+
+ // Retrieve it and update constraint flags
+ var field = getFieldByName('Email');
+ if (field) {
+ pdfviewer.formDesignerModule.updateFormField(field, {
+ isReadOnly: false,
+ isRequired: true,
+ isPrint: true,
+ tooltip: 'Enter a valid email'
+ });
+ }
+};
+```
+
+## Configure default constraints for newly added fields
+
+Set default settings so all fields created from the Form Designer toolbar inherit the constraint flags.
+
+The example below configures defaults for Textbox and Signature fields.
+
+```js
+// HTML element
+//
+
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation, ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection, ej.pdfviewer.FormDesigner, ej.pdfviewer.FormFields
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+pdfviewer.appendTo('#PdfViewer');
+
+// Textbox fields will be editable, required, and included in print by default
+pdfviewer.textFieldSettings = {
+ isReadOnly: false,
+ isRequired: true,
+ isPrint: true,
+ tooltip: 'Required field'
+};
+
+// Signature fields will be optional and hidden when printing
+pdfviewer.signatureFieldSettings = {
+ isReadOnly: false,
+ isRequired: false,
+ isPrint: false,
+ tooltip: 'Sign if applicable'
+};
+```
+
+## Behavior notes
+
+- Use `isReadOnly` API to only blocks user edits in the UI. You can still update the field programmatically.
+- Use `isRequired` API to participates in the built-in validation flow. Enable validation to enforce before print/download. See Validate form fields for details.
+- Use `isPrint` API controls field appearance in the print output. It does not affect download/export unless printing is triggered.
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples)
+
+## See also
+
+- [Form Designer overview](./overview)
+- [Form Designer Toolbar](../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./Create-edit-Style-del-formFields/create-formfields)
+- [Edit form fields](./Create-edit-Style-del-formFields/edit-formfields)
+- [Group form fields](./group-formfields)
+- [Add custom data to form fields](./custom-data)
+- [Form validation](./form-validation)
+- [Form fields API](./formfields-api)
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/form-designer.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/form-designer.md
new file mode 100644
index 000000000..14f2adb07
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/form-designer.md
@@ -0,0 +1,143 @@
+---
+layout: post
+title: Form Designer and Toolbar Customization in JavaScript | Syncfusion
+description: Learn here all about form designer and toolbar in Syncfusion JavaScript PDF Viewer of Syncfusion Essential JS 2 and more.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Form Designer and Toolbar Customization in JavaScript
+
+## Form Designer
+
+Create and customize interactive fields directly on the PDF page.
+- **Add fields**: textbox, checkbox, radio button, dropdown, list box, signature, and initials
+- **Edit quickly**: move, resize, align, distribute, copy/paste, undo/redo
+- **Configure properties**: name, value, font, color, border, alignment, required/read-only/visibility, tab order
+- **Control interaction**: toggle read-only, show/hide, and manage printing behavior
+- **Manage fields**: select, group/ungroup, reorder, or delete
+- **Save and print**: persist designed fields in the PDF and print with appearances
+- **Tailor the UI**: show/hide or customize the Form Designer toolbar; handle events for add/edit/select/move/resize
+- The form designer toolbar can be customized by showing or hiding default items and by controlling the order in which the items appear.
+
+Use the following Code-snippet to enable Form Designer by injecting `FormDesigner` Module.
+
+```js
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/form-filling-document.pdf',
+ resourceUrl: "https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib",
+});
+ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.Print, ej.pdfviewer.Navigation, ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification, ej.pdfviewer.Annotation, ej.pdfviewer.FormDesigner, ej.pdfviewer.FormFields, ej.pdfviewer.PageOrganizer);
+ pdfviewer.appendTo('#PdfViewer');
+```
+
+
+
+## Show or hide the form designer toolbar
+
+Show or hide the form designer toolbar programmatically during initialization or at runtime.
+
+Use the [EnableFormDesigner](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/pdfViewerModel#enableformdesigner) property or the [showFormDesignerToolbar](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/toolbar#showformdesignertoolbar) method to toggle visibility.
+
+The following code snippet explains how to show or hide the toolbar using the `EnableFormDesigner` property.
+
+{% tabs %}
+{% highlight js tabtitle="index.js" %}
+
+ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation, ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ enableFormDesigner: false,
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/formdesigner.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib'
+});
+
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% highlight html tabtitle="index.html" %}
+
+
+
+
+ Essential JS 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## How to customize the form designer toolbar
+
+Choose which tools appear and control their order in the form designer toolbar.
+
+Use [`PdfViewerToolbarSettings`](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/toolbarSettings) with the [`FormDesignerToolbarItems`](https://ej2.syncfusion.com/javascript/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/javascript/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.
+
+The following example demonstrates how to customize the form designer toolbar by configuring specific tools using `FormDesignerToolbarItem`.
+
+{% tabs %}
+{% highlight js tabtitle="index.js" %}
+
+ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation, ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView, ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/formdesigner.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib'
+});
+
+pdfviewer.toolbarSettings = {
+ formDesignerToolbarItems: [
+ "TextboxTool",
+ "PasswordTool",
+ "CheckBoxTool",
+ "RadioButtonTool",
+ "DropdownTool",
+ "ListboxTool",
+ "DrawSignatureTool",
+ "DeleteTool"
+ ]
+};
+
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% highlight html tabtitle="index.html" %}
+
+
+
+
+ Essential JS 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/form-filling.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/form-filling.md
new file mode 100644
index 000000000..99420fd74
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/form-filling.md
@@ -0,0 +1,133 @@
+---
+layout: post
+title: Form filling in JavaScript PDF Viewer | Syncfusion
+description: Learn to view, fill, export, and import PDF form fields in Syncfusion JavaScript PDF Viewer, including disabling interaction and handling signatures.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Form filling in JavaScript PDF Viewer
+
+The PDF Viewer displays existing form fields in a PDF and enables users to fill, validate, and download the filled data.
+
+## Form Fields
+
+Work with the runtime form fields present in a PDF Form.
+- Render existing fields
+- Fill fields.
+- Import/Export form data as JSON, XFDF, FDF, or as a plain object
+- Inject FormFields to enable form-filling features.
+
+Use the following code-snippet to enable form-filling by injecting `FormFields` Module.
+
+```js
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/form-filling-document.pdf',
+ resourceUrl: "https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib"
+});
+ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.Print, ej.pdfviewer.Navigation, ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification, ej.pdfviewer.Annotation, ej.pdfviewer.FormFields, ej.pdfviewer.PageOrganizer);
+ pdfviewer.appendTo('#PdfViewer');
+```
+
+
+
+The PDF Viewer supports the following form field types:
+
+* [Text box](../form-designer/Create-edit-Style-del-formFields/create-formfields#add-listbox)
+* [Password](../form-designer/Create-edit-Style-del-formFields/create-formfields#add-password)
+* [Check box](../form-designer/Create-edit-Style-del-formFields/create-formfields#add-checkbox)
+* [Radio button](../form-designer/Create-edit-Style-del-formFields/create-formfields#add-radiobutton)
+* [List box](../form-designer/Create-edit-Style-del-formFields/create-formfields#add-listbox)
+* [Dropdown](../form-designer/Create-edit-Style-del-formFields/create-formfields#add-dropdown)
+* [Signature field](../form-designer/Create-edit-Style-del-formFields/create-formfields#add-signature-field)
+* [Initial field](../form-designer/Create-edit-Style-del-formFields/create-formfields#add-initial-field)
+
+
+
+## Disabling form fields
+
+The PDF Viewer provides an option to disable interaction with form fields using the `enableFormDesigner` API. Use the following configuration to disable form fields in the viewer.
+
+```js
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/form-filling-document.pdf',
+ resourceUrl: "https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib",
+ enableFormDesigner: true, //Set 'false' to disable form designer
+});
+ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.Print, ej.pdfviewer.Navigation, ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification, ej.pdfviewer.Annotation, ej.pdfviewer.FormDesigner, ej.pdfviewer.FormFields, ej.pdfviewer.PageOrganizer);
+ pdfviewer.appendTo('#PdfViewer');
+```
+
+## Access interactive form fields
+
+You can access the collection of all interactive form fields in the loaded document using the `formFieldCollection` property. Fetch the collection after the document is loaded.
+
+Add a button to trigger fetching form fields:
+
+```html
+
+```
+```js
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/form-filling-document.pdf',
+ resourceUrl: "https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib",
+ enableFormDesigner: true, //Set 'false' to disable form designer
+});
+ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.Print, ej.pdfviewer.Navigation, ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification, ej.pdfviewer.Annotation, ej.pdfviewer.FormDesigner, ej.pdfviewer.FormFields, ej.pdfviewer.PageOrganizer);
+ pdfviewer.appendTo('#PdfViewer');
+ //Click event to get formfields collection
+document.getElementById('formFieldCollection').addEventListener('click', function() {
+ var fields = pdfviewer.formFieldCollection; // Gets all form fields
+ console.log(fields); // Log the formField Collection
+});
+```
+
+## 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](./import-export-formfields/export-formfields).
+
+## See also
+
+- [Form Designer overview](./overview)
+- [Form Designer Toolbar](../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./Create-edit-Style-del-formFields/create-formfields)
+- [Edit form fields](./Create-edit-Style-del-formFields/edit-formfields)
+- [Group form fields](./group-formfields)
+- [Add custom data to form fields](./custom-data)
+- [Form Constrain](./form-constrain)
+- [Form validation](./form-validation)
+- [Form fields API](./formfields-api)
+
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/group-formfields.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/group-formfields.md
new file mode 100644
index 000000000..e9b1fd01f
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/group-formfields.md
@@ -0,0 +1,132 @@
+---
+layout: post
+title: Group form fields in the JavaScript PDF Viewer component | Syncfusion
+description: Learn how to group PDF form fields in the Syncfusion JavaScript PDF Viewer by assigning the same name to multiple widgets.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Group form fields in JavaScript PDF Viewer
+
+In PDF forms, multiple widgets can represent the same logical form field. The Syncfusion PDF Viewer supports grouping form fields by assigning the same Name to multiple widgets. Grouped widgets mirror their values and states based on the field type.
+
+Key behavior when fields share the same Name:
+
+- **Textbox and Password**: Text entered in one widget appears in all widgets with the same name.
+- **CheckBox**: Checking one widget checks all widgets with the same name (mirrored state).
+- **RadioButton**: Widgets with the same name are grouped; only one radio button in the group can be selected at a time.
+- **ListBox and DropDown**: The selected item is shared across widgets with the same name.
+- **Signature field and Initial field**: The applied signature/initial is mirrored across widgets with the same name.
+
+N> Grouping is driven solely by the Name property. Bounds determine placement; name determines grouping.
+
+## Group with the user interface
+
+Use the Form Designer toolbar and set the same Name for multiple widgets to group them.
+
+Quick steps:
+
+1. Enable the Form Designer toolbar.
+2. Draw the desired fields (e.g., two Textbox widgets or multiple RadioButton widgets).
+3. Right‑click a field > Properties, and set the same Name on each widget you want to group.
+4. Apply and test: editing one grouped widget reflects in the others.
+
+Textboxes and Password fields (shared value)
+- Give both widgets the same Name to mirror the typed value across them.
+
+
+
+Radio buttons (exclusive choice within a group)
+- Add radio buttons that share the same Name to create one group; only one can be selected at a time.
+
+
+
+## Group programmatically
+
+Assign the same name when adding fields via code. The following example shows:
+
+- Two Textbox widgets named EmployeeId that mirror values.
+- A RadioButton group named Gender with exclusive selection.
+- Two CheckBox widgets named Subscribe that mirror checked state.
+
+```js
+// Ensure EJ2 scripts/styles are referenced in your page, e.g.:
+//
+//
+
+// Inject required modules
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.FormFields
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+pdfviewer.appendTo('#PdfViewer');
+
+pdfviewer.documentLoad = function () {
+ // Textbox group: same name => mirrored value
+ pdfviewer.formDesignerModule.addFormField('Textbox', {
+ name: 'EmployeeId',
+ bounds: { X: 146, Y: 229, Width: 150, Height: 24 }
+ });
+
+ pdfviewer.formDesignerModule.addFormField('Textbox', {
+ name: 'EmployeeId', // same name groups the two widgets
+ bounds: { X: 338, Y: 229, Width: 150, Height: 24 }
+ });
+
+ // Radio button group: same name => exclusive selection across the group
+ pdfviewer.formDesignerModule.addFormField('RadioButton', {
+ name: 'Gender',
+ bounds: { X: 148, Y: 289, Width: 18, Height: 18 },
+ isSelected: false
+ });
+
+ pdfviewer.formDesignerModule.addFormField('RadioButton', {
+ name: 'Gender', // grouped with the first
+ bounds: { X: 292, Y: 289, Width: 18, Height: 18 },
+ isSelected: false
+ });
+
+ // CheckBox group: same name => mirrored checked state
+ pdfviewer.formDesignerModule.addFormField('CheckBox', {
+ name: 'Subscribe',
+ bounds: { X: 56, Y: 664, Width: 20, Height: 20 },
+ isChecked: false
+ });
+
+ pdfviewer.formDesignerModule.addFormField('CheckBox', {
+ name: 'Subscribe', // grouped with the first
+ bounds: { X: 242, Y: 664, Width: 20, Height: 20 },
+ isChecked: false
+ });
+};
+```
+
+N> To configure 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/';`
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples)
+
+## See also
+
+- [Form Designer overview](./overview)
+- [Form Designer Toolbar](../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./Create-edit-Style-del-formFields/create-formfields)
+- [Edit form fields](./Create-edit-Style-del-formFields/edit-formfields)
+- [Add custom data to form fields](./custom-data)
+- [Form Constrain](./form-constrain)
+- [Form fields Validation](./form-validation)
+- [Form fields API](./formfields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/import-export-formfields/export-formfields.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/import-export-formfields/export-formfields.md
new file mode 100644
index 000000000..fbc4b38a6
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/import-export-formfields/export-formfields.md
@@ -0,0 +1,196 @@
+---
+layout: post
+title: Export form data in the JavaScript PDF Viewer component | Syncfusion
+description: Learn how to export PDF form field data (FDF, XFDF, JSON, and as an object) using the Syncfusion JavaScript PDF Viewer component.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Export form data from PDF in JavaScript
+
+The PDF Viewer component supports exporting and importing form field data using the importFormFields, exportFormFields, and exportFormFieldsAsObject methods in the following formats:
+
+- [FDF](#export-as-fdf)
+- [XFDF](#export-as-xfdf)
+- [JSON](#export-as-json)
+
+## Export 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.
+
+```html
+
+```
+```js
+// Ensure the EJ2 PDF Viewer scripts are loaded in your page.
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner
+);
+
+var viewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf',
+ // serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/' // Server-backed
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+viewer.appendTo('#pdfViewer');
+
+document.getElementById('exportFdf').addEventListener('click', function () {
+ // Data must be the desired path or file name for the exported document.
+ viewer.exportFormFields('ExportedData', ej.pdfviewer.FormFieldDataFormat.Fdf);
+});
+```
+
+## Export as XFDF
+
+The following example exports form field data as XFDF.
+
+```html
+
+```
+
+```js
+// Ensure the EJ2 PDF Viewer scripts are loaded in your page.
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner
+);
+
+var viewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf',
+ // serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/' // Server-backed
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+viewer.appendTo('#pdfViewer');
+
+document.getElementById('exportXfdf').addEventListener('click', function () {
+ // Data must be the desired path or file name for the exported document.
+ viewer.exportFormFields('FormData', ej.pdfviewer.FormFieldDataFormat.Xfdf);
+});
+```
+
+## Export as JSON
+
+The following example exports form field data as JSON.
+
+```html
+
+```
+
+```js
+// Ensure the EJ2 PDF Viewer scripts are loaded in your page.
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner
+);
+
+var viewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf',
+ // serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/' // Server-backed
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+viewer.appendTo('#pdfViewer');
+
+document.getElementById('exportJson').addEventListener('click', function () {
+ // Data must be the desired path or file name for the exported document.
+ viewer.exportFormFields('FormData', ej.pdfviewer.FormFieldDataFormat.Json);
+});
+```
+
+## Export as Object
+
+Export the form data to a JavaScript object for custom persistence (database, API, or client storage).
+The following example exports and imports form field data as Object.
+
+```html
+
+```
+
+```js
+// Ensure the EJ2 PDF Viewer scripts are loaded in your page.
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner
+);
+
+var viewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf',
+ // serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/' // Server-backed
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+viewer.appendTo('#pdfViewer');
+
+var exportedData;
+document.getElementById('exportObj').addEventListener('click', function () {
+ viewer.exportFormFieldsAsObject(ej.pdfviewer.FormFieldDataFormat.Fdf).then(function (data) {
+ exportedData = data; // Save or send to server
+ console.log('Exported object:', exportedData);
+ });
+
+ // Alternative formats:
+ // viewer.exportFormFieldsAsObject(ej.pdfviewer.FormFieldDataFormat.Xfdf).then(...)
+ // viewer.exportFormFieldsAsObject(ej.pdfviewer.FormFieldDataFormat.Json).then(...)
+});
+```
+
+## Common use cases
+
+- Persist user-entered data to your server without modifying the original PDF.
+- Export as JSON for easy integration with REST APIs.
+- Export as FDF/XFDF for interoperability with other PDF tools.
+- Export as object to combine with your app state and store securely.
+- Automate exports after [validation](../form-validation) using validateFormFields.
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples)
+
+## See also
+
+- [Form Designer overview](../overview)
+- [Form Designer Toolbar](../../toolbar-customization/form-designer-toolbar)
+- [Import form fields](./import-formfields)
+- [Import Export Events](./import-export-events)
+- [Create form fields](../Create-edit-Style-del-formFields/create-formfields)
+- [Edit form fields](../Create-edit-Style-del-formFields//edit-formfields)
+- [Remove form fields](../Create-edit-Style-del-formFields//remove-formfields)
+- [Group form fields](../group-formfields)
+- [Form validation](../form-validation)
+- [Add custom data to form fields](../custom-data)
+- [Form fields API](../formfields-api)
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/import-export-formfields/import-formfields.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/import-export-formfields/import-formfields.md
new file mode 100644
index 000000000..e516b060e
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/import-export-formfields/import-formfields.md
@@ -0,0 +1,200 @@
+---
+layout: post
+title: Import form data in the JavaScript PDF Viewer component | Syncfusion
+description: Learn how to import PDF form field data (FDF, XFDF, JSON, and from an object) using the Syncfusion JavaScript PDF Viewer component.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Import form data into PDF in JavaScript
+
+The PDF Viewer provides APIs to import interactive form field values into the currently loaded PDF. You can import from the following formats:
+
+- [FDF](#import-as-fdf)
+- [XFDF](#import-as-xfdf)
+- [JSON](#import-as-json)
+
+Supported API:
+- importFormFields(sourceOrObject, format)
+
+Note: When using the server-backed viewer, set serviceUrl before importing.
+
+## Import as FDF
+
+```html
+
+
+```
+```js
+// Include the required EJ2 PDF Viewer scripts/styles on the page.
+// Then use the global ej.pdfviewer namespace in ES5.
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner
+);
+
+var viewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf',
+ // serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/' // Server-backed
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+viewer.appendTo('#pdfViewer');
+
+document.getElementById('importFdf').addEventListener('click', function () {
+ // The file for importing should be accessible at the given path or as a file stream depending on your integration
+ viewer.importFormFields('File', ej.pdfviewer.FormFieldDataFormat.Fdf);
+});
+```
+
+## Import as XFDF
+
+```html
+
+
+```
+```js
+// Include the required EJ2 PDF Viewer scripts/styles on the page.
+// Then use the global ej.pdfviewer namespace in ES5.
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner
+);
+
+var viewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf',
+ // serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/' // Server-backed
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+viewer.appendTo('#pdfViewer');
+
+document.getElementById('importXfdf').addEventListener('click', function () {
+ // The file for importing should be accessible at the given path or as a file stream depending on your integration
+ viewer.importFormFields('File', ej.pdfviewer.FormFieldDataFormat.Xfdf);
+});
+```
+
+## Import as JSON
+
+```html
+
+
+```
+```js
+// Include the required EJ2 PDF Viewer scripts/styles on the page.
+// Then use the global ej.pdfviewer namespace in ES5.
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner
+);
+
+var viewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf',
+ // serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/' // Server-backed
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+viewer.appendTo('#pdfViewer');
+
+document.getElementById('importJson').addEventListener('click', function () {
+ // The file for importing should be accessible at the given path or as a file stream depending on your integration
+ viewer.importFormFields('File', ej.pdfviewer.FormFieldDataFormat.Json);
+});
+```
+
+## Import as Object
+
+Import data previously exported with exportFormFieldsAsObject. Useful for client-side roundtrips without writing a file.
+
+```html
+
+
+
+```
+```js
+// Include the required EJ2 PDF Viewer scripts/styles on the page.
+// Then use the global ej.pdfviewer namespace in ES5.
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner
+);
+
+var viewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf',
+ // serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/' // Server-backed
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+viewer.appendTo('#pdfViewer');
+
+var exportedData;
+
+document.getElementById('exportDataAsObject').addEventListener('click', function () {
+ viewer.exportFormFieldsAsObject(ej.pdfviewer.FormFieldDataFormat.Fdf).then(function (value) {
+ exportedData = value;
+ });
+});
+
+document.getElementById('importData').addEventListener('click', function () {
+ if (exportedData) {
+ // Import the previously exported object data
+ viewer.importFormFields(exportedData, ej.pdfviewer.FormFieldDataFormat.Fdf);
+ }
+ // Alternatives:
+ // viewer.importFormFields(exportedData, ej.pdfviewer.FormFieldDataFormat.Xfdf);
+ // viewer.importFormFields(exportedData, ej.pdfviewer.FormFieldDataFormat.Json);
+});
+```
+
+## Common use cases
+
+- Pre-fill application forms from your database using JSON.
+- Migrate data from other PDF tools using FDF/XFDF.
+- Restore user progress stored locally or on the server using object import.
+- Combine with [validation](../form-validation) to block print/download until required fields are filled.
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples)
+
+## See also
+
+- [Form Designer overview](../overview)
+- [Form Designer Toolbar](../../toolbar-customization/form-designer-toolbar)
+- [Export form fields](./export-formfields)
+- [Import Export Events](./import-export-events)
+- [Create form fields](../Create-edit-Style-del-formFields/create-formfields)
+- [Edit form fields](../Create-edit-Style-del-formFields//edit-formfields)
+- [Remove form fields](../Create-edit-Style-del-formFields//remove-formfields)
+- [Group form fields](../group-formfields)
+- [Form validation](../form-validation)
+- [Add custom data to form fields](../custom-data)
+- [Form fields API](../formfields-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/overview.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/overview.md
new file mode 100644
index 000000000..f26713550
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/form-designer/overview.md
@@ -0,0 +1,94 @@
+---
+layout: post
+title: Overview of Forms in JavaScript PDF Viewer Control | Syncfusion
+description: Learn what the Form Designer in Syncfusion JavaScript PDF Viewer offers, supported field types, and how the topics are organized.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Overview of Forms in JavaScript PDF Viewer
+
+Syncfusion TypeScript PDF Viewer provides a complete forms experience. Design new forms or enhance existing PDFs, fill and validate fields, import or export data, and capture signatures — all via an intuitive UI and rich APIs.
+
+The viewer supports both runtime form filling and an interactive Form Designer to create or modify fields.
+
+## Form Fields
+
+Work with the runtime form fields present in a PDF Form.
+- Render existing fields
+- [Fill fields](./form-filling).
+- [Import/Export](./import-export-formfields/export-formfields) form data as JSON, XFDF, FDF, or as a plain object
+- Inject [FormFields](./form-designer) to enable form-filling features.
+
+Use the following code-snippet to enable form-filling by injecting `FormFields` Module.
+
+```js
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/form-filling-document.pdf',
+ resourceUrl: "https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib"
+});
+ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.Print, ej.pdfviewer.Navigation, ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification, ej.pdfviewer.Annotation, ej.pdfviewer.FormFields, ej.pdfviewer.PageOrganizer);
+ pdfviewer.appendTo('#PdfViewer');
+```
+
+
+
+## Form Designer
+
+Create and customize interactive fields directly on the PDF page.
+- [Add fields](../form-designer/Create-edit-Style-del-formFields/create-formfields): textbox, checkbox, radio button, dropdown, list box, signature, and initials
+- [Edit quickly](../form-designer/Create-edit-Style-del-formFields/edit-formfields): move, resize, align, distribute, copy/paste, undo/redo
+- [Configure properties](../form-designer/Create-edit-Style-del-formFields/style-formfields): name, value, font, color, border, alignment, required/read-only/visibility, tab order
+- [Control interaction](../form-designer/form-constrain): toggle read-only, show/hide, and manage printing behavior
+- [Manage fields](../form-designer/group-formfields): select, group/ungroup, reorder, or delete
+- [Save and print](../download): persist designed fields in the PDF and print with appearances
+- [Tailor the UI](./form-designer#how-to-customize-the-form-designer-toolbar): show/hide or customize the Form Designer toolbar; handle events for add/edit/select/move/resize
+
+Use the following Code-snippet to enable Form Designer by injecting `FormDesigner` Module.
+
+```js
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/form-filling-document.pdf',
+ resourceUrl: "https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib"
+});
+ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.Print, ej.pdfviewer.Navigation, ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification, ej.pdfviewer.Annotation, ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner, ej.pdfviewer.PageOrganizer);
+ pdfviewer.appendTo('#PdfViewer');
+```
+
+
+
+## Supported form field types
+
+- [Textbox](../form-designer/Create-edit-Style-del-formFields/create-formfields#add-textbox)
+- [Password](../form-designer/Create-edit-Style-del-formFields/create-formfields#add-password)
+- [CheckBox](../form-designer/Create-edit-Style-del-formFields/create-formfields#add-checkbox)
+- [RadioButton](../form-designer/Create-edit-Style-del-formFields/create-formfields#add-radiobutton)
+- [ListBox](../form-designer/Create-edit-Style-del-formFields/create-formfields#add-listbox)
+- [DropDown](../form-designer/Create-edit-Style-del-formFields/create-formfields#add-dropdown)
+- [Signature field](../form-designer/Create-edit-Style-del-formFields/create-formfields#add-signature-field)
+- [Initial field](../form-designer/Create-edit-Style-del-formFields/create-formfields#add-initial-field)
+
+## Typical workflows
+
+- **Design** → Save → Fill: [create or modify fields](./Create-edit-Style-del-formFields/create-formfields), save them into the PDF, then fill and validate
+- **Fill** → [Export/Import](./import-export-formfields/export-formfields): complete forms and export data to JSON/XFDF/FDF, or import data to fill
+- **Customize** → Integrate: wire up events and business rules; tailor the designer [toolbar](./form-designer#how-to-customize-the-form-designer-toolbar) for your app
+
+## See also
+
+- [Form filling](./form-filling)
+- [Form Designer Toolbar](../toolbar-customization/form-designer-toolbar)
+- [Create form fields](./Create-edit-Style-del-formFields/create-formfields)
+- [Edit form fields](./Create-edit-Style-del-formFields/edit-formfields)
+- [Style form fields](./Create-edit-Style-del-formFields/style-formfields)
+- [Group form fields](./group-formfields)
+- [Form constraints](./form-constrain)
+- [Form validation](./form-validation)
+- [Form Fields API](./formfields-api)
+- [Custom data on form fields](./custom-data)
+- [Import form data](./import-export-formfields/import-formfields)
+- [Export form data](./import-export-formfields/export-formfields)
+- [Import/Export events](./import-export-formfields/import-export-events)
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/getting-started-with-server-backed.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/getting-started-with-server-backed.md
index 8e98b9384..b7d967d48 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/getting-started-with-server-backed.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/getting-started-with-server-backed.md
@@ -37,7 +37,7 @@ This guide explains how to create the PDF Viewer component and configure its fea
{% endhighlight %}
{% endtabs %}
-N> We have provided the support to dynamically change the [serviceURL](https://ej2.syncfusion.com/documentation/api/pdfviewer/#serviceurl). So, after changing the `serviceURL` dynamically, you need invoke the `pdfViewer.dataBind()` method to update the `serviceURL` quickly. This will effectively change the `serviceURL` dynamically. Ensure that this step is performed after version 23.1.36.
+N> We have provided the support to dynamically change the [serviceURL](https://ej2.syncfusion.com/documentation/api/pdfviewer#serviceurl). So, after changing the `serviceURL` dynamically, you need invoke the `pdfViewer.dataBind()` method to update the `serviceURL` quickly. This will effectively change the `serviceURL` dynamically. Ensure that this step is performed after version 23.1.36.
document.getElementById('load').addEventListener('click', function () {
pdfViewer.serviceUrl = "https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer";
pdfViewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
@@ -47,7 +47,7 @@ document.getElementById('load').addEventListener('click', function () {
N> The Web API hosted link https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer utilized in the PDF viewer's serviceUrl property is intended solely for demonstration and evaluation purposes. For production deployment, please host your own web service with your required server configurations. You can refer and reuse the [GitHub Web Service example](https://github.com/SyncfusionExamples/EJ2-PDFViewer-WebServices) or [Docker image](https://hub.docker.com/r/syncfusion/pdfviewer-server) for hosting your own web service and use for the serviceUrl property. **We strongly recommend using the standalone mode.**
-{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es5/es5-getting-started-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es5/es5-getting-started-cs1" %}
## Run the application
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/getting-started.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/getting-started.md
index 6a005580d..090208b99 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/getting-started.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/getting-started.md
@@ -37,7 +37,7 @@ The Essential JS 2 for JavaScript (global script) is an ES5 formatted pure JavaS
{% endhighlight %}
{% endtabs %}
-{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es5/es5-getting-started-cs2/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es5/es5-getting-started-cs2" %}
### Steps to Load PDF Viewer with Local Resources
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/how-to/custom-context-menu-js.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/how-to/custom-context-menu-js.md
index f41cc0c91..84bd74098 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/how-to/custom-context-menu-js.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/how-to/custom-context-menu-js.md
@@ -10,7 +10,7 @@ domainurl: ##DomainURL##
# Customize the context menu in JavaScript PDF Viewer
-PDF Viewer supports adding custom options to the context menu using the [addCustomMenu()](https://ej2.syncfusion.com/documentation/api/pdfviewer/#addcustommenu) method. Define actions for custom items with the [customContextMenuSelect()](https://ej2.syncfusion.com/documentation/api/pdfviewer/#customcontextMenuselect) method.
+PDF Viewer supports adding custom options to the context menu using the [addCustomMenu()](https://ej2.syncfusion.com/documentation/api/pdfviewer#addcustommenu) method. Define actions for custom items with the [customContextMenuSelect()](https://ej2.syncfusion.com/documentation/api/pdfviewer#customcontextMenuselect) method.
### Add a custom option
@@ -106,7 +106,7 @@ pdfviewer.documentLoad = function (args) {
#### Show or hide custom items before opening
-Use [customContextMenuBeforeOpen()](https://ej2.syncfusion.com/documentation/api/pdfviewer/#customcontextmenubeforeopen) to hide or show custom options dynamically.
+Use [customContextMenuBeforeOpen()](https://ej2.syncfusion.com/documentation/api/pdfviewer#customcontextmenubeforeopen) to hide or show custom options dynamically.
```js
var pdfviewer = new ej.pdfviewer.PdfViewer({
@@ -273,9 +273,9 @@ The following is the output of the custom context menu with customization.
{% endtabs %}
N> To set up the **server-backed PDF Viewer**,
-Add the below [serviceUrl](https://ej2.syncfusion.com/documentation/api/pdfviewer/#serviceurl) in the `index.ts` file
+Add the below [serviceUrl](https://ej2.syncfusion.com/documentation/api/pdfviewer#serviceurl) in the `index.ts` file
`pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer';`
-{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es5/custom-context-menu/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es5/custom-context-menu" %}
[View sample in GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples/tree/master/How%20to/Custom%20Context%20Menu)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/how-to/custom-fonts.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/how-to/custom-fonts.md
index 4c9ebed17..f239a24dd 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/how-to/custom-fonts.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/how-to/custom-fonts.md
@@ -20,7 +20,9 @@ To use custom fonts in the Syncfusion PDF Viewer, add the custom TTF files to th
### Steps to add custom fonts
-**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.
+**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](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/javascript-es6/getting-started#add-the-pdf-viewer-component) folder that serves as the resource URL path. Make sure this resource URL points to a local path in your application. You may:
+- Place fonts directly under `ej2-pdfviewer-lib` or under `ej2-pdfviewer-lib/fallback fonts`. Reference them by relative path in `customFonts` (e.g., `"calibri.ttf"`, `"fallback fonts/calibri.ttf"`).
+- Or use a direct absolute URL to the font file if it’s hosted and CORS-accessible.
**Step 2:** Use the following code to configure custom fonts in the PDF Viewer.
@@ -28,21 +30,8 @@ To use custom fonts in the Syncfusion PDF Viewer, add the custom TTF files to th
{% highlight js tabtitle="Standalone" %}
var pdfviewer = new ej.pdfviewer.PdfViewer({
- documentPath:'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
- resourceUrl:'https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib',
- customFonts: ["arialbd.ttf", "arial.ttf", "BKANT.TTF", "calibri.ttf", "GARA.TTF", "GARAIT.TTF", "msgothic.ttc", "trebuc.ttf", "wingding.ttf"]
- });
-ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.Print, ej.pdfviewer.Navigation, ej.pdfviewer.Toolbar,ej.pdfviewer.Magnification, ej.pdfviewer.Annotation, ej.pdfviewer.FormDesigner, ej.pdfviewer.FormFields);
-
-//PDF Viewer control rendering starts
-pdfviewer.appendTo('#PdfViewer');
-
-{% endhighlight %}
-{% highlight js tabtitle="Server-Backed" %}
-
-var pdfviewer = new ej.pdfviewer.PdfViewer({
- documentPath:'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
- serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer',
+ documentPath:window.location.origin +'/resources/pdfsuccinctly.pdf',
+ resourceUrl:window.location.origin +'/resources/ej2-pdfviewer-lib'
customFonts: ["arialbd.ttf", "arial.ttf", "BKANT.TTF", "calibri.ttf", "GARA.TTF", "GARAIT.TTF", "msgothic.ttc", "trebuc.ttf", "wingding.ttf"]
});
ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.Print, ej.pdfviewer.Navigation, ej.pdfviewer.Toolbar,ej.pdfviewer.Magnification, ej.pdfviewer.Annotation, ej.pdfviewer.FormDesigner, ej.pdfviewer.FormFields);
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/how-to/extract-text-completed-js.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/how-to/extract-text-completed-js.md
index f84f36413..5b84d6d53 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/how-to/extract-text-completed-js.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/how-to/extract-text-completed-js.md
@@ -30,4 +30,12 @@ viewer.extractTextCompleted = args => {
```
-Find the sample: [How to extract text](https://stackblitz.com/edit/kzd4jd-dcser9?file=index.js)
\ No newline at end of file
+Find the sample: [How to extract text](https://stackblitz.com/edit/kzd4jd-dcser9?file=index.js)
+
+## See Also
+
+[Find Text](../text-search/find-text)
+[Text Search Events](../text-search/text-search-events)
+[Text Search Features](../text-search/text-search-features)
+[Extract Text](../how-to/extract-text-js)
+[Extract Text Options](../how-to/extract-text-option-js)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/how-to/extract-text-js.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/how-to/extract-text-js.md
index 61c903bef..02588c922 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/how-to/extract-text-js.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/how-to/extract-text-js.md
@@ -12,24 +12,34 @@ documentation: ug
The `extractText` method extracts text from one or more pages and can return plain text or text with bounds for each element.
### extractText method
+
Retrieves text data from one page or a range of pages based on the specified options.
#### Parameters:
-**startIndex:** The starting page index for text extraction (0-based index).
-**endIndex or isOptions:** Either the ending page index (for multiple pages) or an option specifying extraction criteria for a single page.
+- **startIndex:** The starting page index for text extraction (0-based index).
+
+- **endIndex or isOptions:** Either the ending page index (for multiple pages) or an option specifying extraction criteria for a single page.
+
+- **options (optional):** Additional options, such as `TextOnly` for plain text or `TextAndBounds` for detailed text data with bounds.
+
+#### Available Options
-**options (optional):** Additional options, such as `TextOnly` for plain text or `TextAndBounds` for detailed text data with bounds.
+- **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 plain text without bounds.
-- TextAndBounds: Extracts text with bounds (coordinates).
+- **TextOnly:** Extracts only the plain text from the document. This option excludes any layout or positional information.
-#### Returns:
+- **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.
+
+#### 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).
### 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
@@ -66,4 +76,79 @@ document.getElementById('extractTexts').addEventListener('click', function () {
- Single page: Extracts text from page 1 (`startIndex = 1`) using `TextOnly`.
- Multiple pages: Extracts text from pages 0–2 (`startIndex = 0, endIndex = 2`) using `TextOnly`.
-[View sample in GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples/tree/master/How%20to)
\ No newline at end of file
+### Programmatic Examples for Extract Text Option API
+Here is an example that demonstrates how to use the extractText Option along with event handling:
+
+```html
+
+
+
+
+```
+
+```ts
+import { PdfViewer, TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields, PageInfoModel, ExtractTextOption } from '@syncfusion/ej2-pdfviewer';
+
+// Inject required modules
+PdfViewer.Inject(TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields);
+
+const viewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+viewer.appendTo('#PdfViewer');
+
+// None (no text info)
+const btnNone = document.getElementById('extractNoneRange');
+if (btnNone) {
+ btnNone.addEventListener('click', function () {
+ viewer.extractText(0, 2, ExtractTextOption.None).then((val) => {
+ console.log('None (Pages 0–2):', val);
+ });
+ });
+}
+
+// TextOnly
+const btnTextOnly = document.getElementById('extractTextOnlyRange');
+if (btnTextOnly) {
+ btnTextOnly.addEventListener('click', function () {
+ viewer.extractText(0, 2, ExtractTextOption.TextOnly).then((val: any) => {
+ console.log('TextOnly (Pages 0–2):');
+ console.log(val);
+ });
+ });
+}
+
+// BoundsOnly
+const btnBoundsOnly = document.getElementById('extractBoundsOnlyRange');
+if (btnBoundsOnly) {
+ btnBoundsOnly.addEventListener('click', function () {
+ viewer.extractText(0, 2, ExtractTextOption.BoundsOnly).then((val: any) => {
+ // Typically returns val.textData with bounds per page
+ console.log('BoundsOnly (Pages 0–2):');
+ console.log(val);
+ });
+ });
+}
+
+// TextAndBounds
+const btnTextAndBounds = document.getElementById('extractTextAndBoundsRange');
+if (btnTextAndBounds) {
+ btnTextAndBounds.addEventListener('click', function () {
+ viewer.extractText(0, 2, ExtractTextOption.TextAndBounds).then((val: any) => {
+ console.log('TextAndBounds (Pages 0–2):');
+ console.log(val);
+ });
+ });
+}
+```
+
+[View sample in GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples/tree/master/How%20to)
+
+## See Also
+
+[Find Text](../text-search/find-text)
+[Text Search Events](../text-search/text-search-events)
+[Text Search Features](../text-search/text-search-features)
+[Extract Text Options](../how-to/extract-text-option-js)
+[Extract Text Completed](../how-to/extract-text-completed-js)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/how-to/extract-text-option-js.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/how-to/extract-text-option-js.md
index 5a170fc4f..ac8de1885 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/how-to/extract-text-option-js.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/how-to/extract-text-option-js.md
@@ -47,4 +47,12 @@ ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearc
N> Text search: When using the `extractTextOption.TextOnly` or `extractTextOption.None` options, the `findText` method is unavailable. Use the `findTextAsync` method to perform text searches asynchronously.
-[View sample in GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples/tree/master/How%20to)
\ No newline at end of file
+[View sample in GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples/tree/master/How%20to)
+
+## See Also
+
+[Find Text](../text-search/find-text)
+[Text Search Events](../text-search/text-search-events)
+[Text Search Features](../text-search/text-search-features)
+[Extract Text](../how-to/extract-text-js)
+[Extract Text Completed](../how-to/extract-text-completed-js)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/print/enable-print-rotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/print/enable-print-rotation.md
new file mode 100644
index 000000000..2c0357253
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/print/enable-print-rotation.md
@@ -0,0 +1,75 @@
+---
+layout: post
+title: Enable Print Rotation in JavaScript PDF Viewer | Syncfusion
+description: Learn how to enable print rotation for landscape documents in the Syncfusion JavaScript PDF Viewer component.
+platform: document-processing
+control: Print
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Enable print rotation in the JavaScript
+
+Set the `enablePrintRotation` property to control whether landscape pages are rotated automatically to fit the paper orientation. Keep it enabled to minimize clipping, or disable it to preserve the original orientation.
+
+
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+
+// Inject required modules
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.Print,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib',
+ enablePrintRotation: true
+});
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+
+// Inject required modules
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.Print,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/',
+ enablePrintRotation: true
+});
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample in GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples)
+
+## 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/javascript-es5/print/events.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/print/events.md
new file mode 100644
index 000000000..ae2bbac6f
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/print/events.md
@@ -0,0 +1,143 @@
+---
+layout: post
+title: Print Events in JavaScript PDF Viewer | Syncfusion
+description: Learn how to configure print events and track usage and implements workflows in the Syncfusion JavaScript PDF Viewer component.
+platform: document-processing
+control: Print
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Print events in JavaScript PDF Viewer
+
+Subscribe to print life cycle events to track usage and implement custom workflows.
+
+| Name | Description |
+|--------------|-------------|
+| `printStart` | Raised when a print action begins. Use the event to log activity or cancel printing. |
+| `printEnd` | Raised after a print action completes. Use the event to notify users or clean up resources. |
+
+## printStart event
+The [`printStart`](https://ej2.syncfusion.com/documentation/api/pdfviewer#printstart) event runs when printing starts from the toolbar or from code. Use it to validate prerequisites or cancel the action.
+
+### Event arguments
+Review [`PrintStartEventArgs`](https://ej2.syncfusion.com/documentation/api/pdfviewer/printStartEventArgs) for details such as `fileName` and the `cancel` option.
+
+The following example logs the file that is being printed and shows how to cancel the operation.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib',
+ printStart: function(args) {
+ console.log('Print action has started for file: ' + args.fileName);
+ // To cancel the print action
+ // args.cancel = true;
+ }
+});
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/',
+ printStart: function(args) {
+ console.log('Print action has started for file: ' + args.fileName);
+ // To cancel the print action
+ // args.cancel = true;
+ }
+});
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% endtabs %}
+
+## printEnd event
+The [`printEnd`](https://ej2.syncfusion.com/documentation/api/pdfviewer#printend) event triggers after printing completes. Use it to finalize analytics or inform users that printing finished.
+
+### Event arguments
+See [`PrintEndEventArgs`](https://ej2.syncfusion.com/documentation/api/pdfviewer/printEndEventArgs) for available values such as `fileName`.
+
+The following example logs the printed file name.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib',
+ printEnd: function(args) {
+ console.log('Printed File Name: ' + args.fileName);
+ }
+});
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/',
+ printEnd: function(args) {
+ console.log('Printed File Name: ' + args.fileName);
+ }
+});
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% endtabs %}
+
+## 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/javascript-es5/print/overview.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/print/overview.md
new file mode 100644
index 000000000..2cf1ae0e2
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/print/overview.md
@@ -0,0 +1,153 @@
+---
+layout: post
+title: Print Overview in JavaScript PDF Viewer | Syncfusion
+description: Learn how to enable, monitor and customize printing in the Syncfusion JavaScript PDF Viewer component.
+platform: document-processing
+control: Print
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Print Overview in JavaScript PDF Viewer Control
+
+The JavaScript PDF Viewer includes built‑in printing via the toolbar and APIs so you 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 JavaScript PDF Viewer
+
+The Syncfusion JavaScript 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` property.
+
+The following JavaScript examples render the PDF Viewer with printing enabled in standalone and server-backed applications.
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ enablePrint: true,
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib'
+});
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ enablePrint: true,
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/'
+});
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% endtabs %}
+
+## Print programmatically in JavaScript PDF Viewer
+
+To start printing from code, call the `print.print()` method after loading a document. This approach is useful when you need to wire up custom UI or initiate printing automatically.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.Print,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.FormFields
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+pdfviewer.appendTo('#PdfViewer');
+//print on button click
+var printButton = document.getElementById('print');
+if (printButton) {
+ printButton.onclick = function () {
+ pdfviewer.print.print();
+ };
+}
+
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.Print,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.FormFields
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/'
+});
+pdfviewer.appendTo('#PdfViewer');
+//print on button click
+var printButton = document.getElementById('print');
+if (printButton) {
+ printButton.onclick = function () {
+ pdfviewer.print.print();
+ };
+}
+
+{% endhighlight %}
+{% endtabs %}
+
+## Key capabilities
+
+- Enable or disable printing with the enablePrint property
+- Start printing from UI (toolbar Print) or programmatically using print.print()
+- Control output quality with the printScaleFactor property (0.5–5)
+- Auto‑rotate pages during print using enablePrintRotation
+- Choose where printing happens with printMode (Default or NewWindow)
+- Track the life cycle with printStart and printEnd events
+
+[View Sample in GitHub](https://github.com/SyncfusionExamples/javascript-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/javascript-es5/print/print-modes.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/print/print-modes.md
new file mode 100644
index 000000000..cf9e9be6f
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/print/print-modes.md
@@ -0,0 +1,82 @@
+---
+layout: post
+title: Print Modes in JavaScript PDF Viewer | Syncfusion
+description: Learn how to configure print modes for PDF Documents in the Syncfusion JavaScript PDF Viewer component.
+platform: document-processing
+control: Print
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Print modes in the JavaScript PDF Viewer
+
+Use the `printMode` property to choose 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 or tab, which can help with browser pop-up policies.
+
+
+
+N> Browser pop-up blockers must allow new windows or tabs when you use `pdfviewer.printMode ="NewWindow";`.
+
+The following example shows how to set the print mode.
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+
+// Inject required modules
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.Print,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+pdfviewer.printMode = "NewWindow";
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+
+// Inject required modules
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.Print,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/'
+});
+pdfviewer.printMode = "NewWindow";
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample in GitHub](https://github.com/SyncfusionExamples/javascript-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/javascript-es5/print/print-quality.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/print/print-quality.md
new file mode 100644
index 000000000..cc8d0e4a8
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/print/print-quality.md
@@ -0,0 +1,80 @@
+---
+layout: post
+title: Customize Print Quality in JavaScript PDF Viewer | Syncfusion
+description: Learn how to customize print quality for PDF Documents in the Syncfusion JavaScript PDF Viewer component.
+platform: document-processing
+control: Print
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Customize print quality using the printScaleFactor API
+
+The PDF Viewer allows you to adjust the print rendering quality by setting the [printScaleFactor](https://ej2.syncfusion.com/documentation/api/pdfviewer#printScaleFactor) property. Valid values range from 0.5 to 5. Higher values produce sharper output but also increase rendering time.
+
+By default, `printScaleFactor` is set to 1.
+
+N> Values outside the 0.5–5 range revert to the standard print quality (value 1).
+
+The following example demonstrates how to update the scale factor before printing.
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+
+// Inject required modules
+
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.Print,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+pdfviewer.printScaleFactor = 0.5;
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+
+// Inject required modules
+
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.Print,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/'
+});
+pdfviewer.printScaleFactor = 0.5;
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample in GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples)
+
+## 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/javascript-es5/text-search/find-text.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/text-search/find-text.md
new file mode 100644
index 000000000..6746420cb
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/text-search/find-text.md
@@ -0,0 +1,346 @@
+---
+layout: post
+title: Find Text in JavaScript PDF Viewer control | Syncfusion
+description: Learn how to configure text search using find text and run programmatic searches in the Syncfusion JavaScript PDF Viewer.
+platform: document-processing
+control: Text search
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Find text method in JavaScript PDF Viewer
+
+## Find text method
+
+Use the `findText` method to locate a string or an array of strings and return the bounding rectangles for each match. Optional parameters support case-sensitive comparisons and page scoping so you can retrieve coordinates for a single page or the entire document.
+
+### Find and get the bounds of a text
+
+Searches for the specified text within the document and returns the bounding rectangles of the matched text. The search can be case-sensitive based on the provided parameter. It returns the bounding rectangles for all pages in the document where the text was found. The following code snippet shows how to get the bounds of the specified text:
+The following code snippet shows how to get the bounds of the specified text:
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.Print,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.FormFields
+);
+
+var viewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+viewer.appendTo('#pdfViewer');
+document.getElementById('textbounds').addEventListener('click', function () {
+ console.log(viewer.textSearch.findText('pdf', false));
+});
+
+{% endhighlight %}
+{% highlight js tabtitle="Server-backed" %}
+
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.Print,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.FormFields
+);
+
+var viewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer'
+});
+viewer.appendTo('#pdfViewer');
+document.getElementById('textbounds').addEventListener('click', function () {
+ console.log(viewer.textSearch.findText('pdf', false));
+});
+
+{% endhighlight %}
+{% endtabs %}
+
+### Find and get the bounds of a text on the desired page
+
+Searches for the specified text within the document and returns the bounding rectangles of the matched text. The search can be case-sensitive based on the provided parameter. It returns the bounding rectangles for that page in the document where the text was found. The following code snippet shows how to retrieve bounds for the specified text on a selected page:
+The following code snippet shows how to retrieve bounds for the specified text on a selected page:
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.Print,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.FormFields
+);
+
+var viewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+viewer.appendTo('#pdfViewer');
+document.getElementById('textbounds').addEventListener('click', function () {
+ console.log(viewer.textSearch.findText('pdf', false, 7));
+});
+
+{% endhighlight %}
+{% highlight js tabtitle="Server-backed" %}
+
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.Print,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.FormFields
+);
+
+var viewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer'
+});
+viewer.appendTo('#pdfViewer');
+document.getElementById('textbounds').addEventListener('click', function () {
+ console.log(viewer.textSearch.findText('pdf', false, 7));
+});
+
+{% endhighlight %}
+{% endtabs %}
+
+### Find and get the bounds of the list of text
+Searches for 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. It returns the bounding rectangles for all pages in the document where the strings were found.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.Print,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.FormFields
+);
+
+var viewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+viewer.appendTo('#pdfViewer');
+document.getElementById('textbounds').addEventListener('click', function () {
+ console.log(viewer.textSearch.findText(['adobe', 'pdf'], false));
+});
+
+{% endhighlight %}
+{% highlight js tabtitle="Server-backed" %}
+
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.Print,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.FormFields
+);
+
+var viewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer'
+});
+viewer.appendTo('#pdfViewer');
+document.getElementById('textbounds').addEventListener('click', function () {
+ console.log(viewer.textSearch.findText(['adobe', 'pdf'], false));
+});
+
+{% endhighlight %}
+{% endtabs %}
+
+### Find and get the bounds of the list of text on desired page
+
+Searches for 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. It returns the bounding rectangles for these search strings on that particular page where the strings were found.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.Print,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.FormFields
+);
+
+var viewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+viewer.appendTo('#pdfViewer');
+document.getElementById('textbounds').addEventListener('click', function () {
+ console.log(viewer.textSearch.findText(['adobe', 'pdf'], false, 7));
+});
+
+{% endhighlight %}
+{% highlight js tabtitle="Server-backed" %}
+
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.Print,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.FormFields
+);
+
+var viewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer'
+});
+viewer.appendTo('#pdfViewer');
+document.getElementById('textbounds').addEventListener('click', function () {
+ console.log(viewer.textSearch.findText(['adobe', 'pdf'], false, 7));
+});
+
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample in GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples)
+
+## Find text with findTextAsync
+
+The `findTextAsync` method is designed for performing an asynchronous text search within a PDF document. You can use it to search for a single string or multiple strings, with the ability to control case sensitivity. By default, the search is applied to all pages of the document. However, you can adjust this behavior by specifying the page number (pageIndex), which allows you to search only a specific page if needed.
+
+### Find text with findTextAsync in TypeScript 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.
+
+Here is an example of how to use `findTextAsync`:
+
+Example 1: Search for a single string ('pdf') case-insensitively across all pages
+
+```html
+
+
+```
+```ts
+// ...existing code...
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.Print,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var viewer = new ej.pdfviewer.PdfViewer();
+viewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+viewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+viewer.appendTo('#PdfViewer');
+
+var findTextButton = document.getElementById('findText');
+if (findTextButton) {
+ findTextButton.addEventListener('click', function () {
+ viewer.textSearchModule.findTextAsync('pdf', false).then(function (res) {
+ console.log(res); // Logs the search result for the term 'pdf'
+ });
+ });
+}
+```
+Example 2: Search for multiple strings (['pdf', 'the']) case-insensitively across all pages
+```ts
+var findTextButtons = document.getElementById('findTexts');
+if (findTextButtons) {
+ findTextButtons.addEventListener('click', function () {
+ viewer.textSearchModule.findTextAsync(['pdf', 'the'], false).then(function (res) {
+ console.log(res); // Logs the search result for the terms 'pdf' and 'the'
+ });
+ });
+}
+```
+
+### Parameters
+
+**text (string | string[]):** The text or array of texts to search for in the document.
+
+**matchCase (boolean):** Whether the search is case-sensitive. `true` matches exact case; `false` ignores case.
+
+**pageIndex (optional, number):** Zero-based page index to search. If omitted, searches all pages.
+
+### Example workflow
+
+**findTextAsync('pdf', false):**
+This will search for the term "pdf" in a case-insensitive manner across all pages of the document.
+
+**findTextAsync(['pdf', 'the'], false):**
+This will search for the terms "pdf" and "the" in a case-insensitive manner across all pages of the document.
+
+**findTextAsync('pdf', false, 0):**
+This will search for the term "pdf" in a case-insensitive manner only on the first page (page 0).
+
+**findTextAsync(['pdf', 'the'], false, 1):**
+This will search for the terms "pdf" and "the" in a case-insensitive manner only on the second page (page 1).
+
+[View sample in GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples/tree/master/How%20to/)
+
+## See Also
+
+[Text Search Features](./text-search-features)
+[Text Search Events](./text-search-events)
+[Extract Text](../how-to/extract-text-js)
+[Extract Text Options](../how-to/extract-text-option-js)
+[Extract Text Completed](../how-to/extract-text-completed-js)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/text-search/text-search-events.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/text-search/text-search-events.md
new file mode 100644
index 000000000..711f3a2c3
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/text-search/text-search-events.md
@@ -0,0 +1,94 @@
+---
+layout: post
+title: Text search Events in JavaScript PDF Viewer control | Syncfusion
+description: Learn how to handle text search events, and run programmatic searches in the Syncfusion JavaScript PDF Viewer.
+platform: document-processing
+control: Text search
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Text Search Events in JavaScript PDF Viewer
+
+The PDF Viewer triggers events during text search operations, allowing you to customize behavior and respond to different stages of the search process.
+
+## textSearchStart
+
+The [textSearchStart](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer#textsearchstartevent) event fires as soon as a search begins from the toolbar interface or through the `textSearch.searchText` method. Use it to reset UI state, log analytics, or cancel the default search flow before results are processed.
+
+- Event arguments: [TextSearchStartEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/textSearchStartEventArgs) exposes:
+ - `searchText`: the term being searched.
+ - `matchCase`: indicates whether case-sensitive search is enabled.
+ - `isMatchWholeWord`: indicates whether whole-word matching is enabled.
+ - `name`: event name.
+ - `cancel`: set to `true` to stop the default search.
+
+```js
+var viewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ textSearchStart: function(args) {
+ // args.searchText contains the term being searched
+ // args.cancel can be set to true to stop the default search
+ console.log('Text search started for: "' + args.searchText + '"');
+ }
+});
+viewer.appendTo('#pdfViewer');
+```
+
+## textSearchHighlight
+
+The [textSearchHighlight](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer#textsearchhighlightevent) event triggers whenever a search result is brought into view, including navigation between matches. Use it to draw custom overlays or synchronize adjacent UI elements when a match is highlighted.
+
+- Event arguments: [TextSearchHighlightEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/textSearchHighlightEventArgs) exposes:
+ - `bounds`: `RectangleBoundsModel | RectangleBoundsModel[]` representing the highlighted match.
+ - `pageNumber`: page index where the match is highlighted.
+ - `searchText`: the active search term.
+ - `matchCase`: indicates whether case-sensitive search was used.
+ - `name`: event name.
+
+```js
+var viewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ textSearchHighlight: function(args) {
+ // args.bounds provides the rectangle(s) of the current match
+ console.log('Highlighted match bounds:', args.bounds);
+ }
+});
+viewer.appendTo('#pdfViewer');
+```
+
+## textSearchComplete
+
+The [textSearchComplete](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer#textsearchcompleteevent) event runs after the search engine finishes scanning the document for the current query. Use it to update match counts, toggle navigation controls, or notify users when no results were found.
+
+- 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: [TextSearchCompleteEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/textSearchCompleteEventArgs) exposes:
+ - `totalMatches`: total number of occurrences found.
+ - `isMatchFound`: indicates whether at least one match was found.
+ - `searchText`: the searched term.
+ - `matchCase`: indicates whether case-sensitive search was used.
+ - `name`: event name.
+
+```js
+var viewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ textSearchComplete: function(args) {
+ // args.totalMatches may indicate how many results were found (when available)
+ console.log('Text search completed.', args);
+ }
+});
+viewer.appendTo('#pdfViewer');
+```
+
+[View Sample in GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples)
+
+## See Also
+
+[Text Search Features](./text-search-features)
+[Find Text](./find-text)
+[Extract Text](../how-to/extract-text-js)
+[Extract Text Options](../how-to/extract-text-option-js)
+[Extract Text Completed](../how-to/extract-text-completed-js)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/text-search/text-search-features.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/text-search/text-search-features.md
new file mode 100644
index 000000000..0628449b0
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/text-search/text-search-features.md
@@ -0,0 +1,352 @@
+---
+layout: post
+title: Text search Features in JavaScript PDF Viewer control | Syncfusion
+description: Learn how to configure text search and run programmatic searches in the Syncfusion JavaScript PDF Viewer.
+platform: document-processing
+control: Text search
+documentation: ug
+domainurl: ##DomainURL##
+---
+# Text search Features in JavaScript PDF Viewer control
+
+The text search feature in the PDF Viewer locates and highlights matching content within a document. Enable or disable this capability with the following configuration.
+
+
+
+N> The text search functionality requires importing TextSearch and adding it to PdfViewer.Inject(..., TextSearch). Otherwise, the search UI and APIs are not accessible.
+
+## Text search features in UI
+
+### Real-time search suggestions while typing
+Typing in the search box immediately surfaces suggestions that match the entered text. The list refreshes on every keystroke so users can quickly jump to likely results without completing the entire term.
+
+
+
+### Select search suggestions from the popup
+After typing in the search box, the popup lists relevant matches. Selecting an item jumps directly to the corresponding occurrence in the PDF.
+
+
+
+### Dynamic Text Search for Large PDF Documents
+Dynamic text search is enabled during the initial loading of the document when the document text collection has not yet been fully loaded in the background.
+
+
+
+### Search text with the Match Case option
+Enable the Match Case checkbox to limit results to case-sensitive matches. Navigation commands then step through each exact match in sequence.
+
+
+
+### Search text without Match Case
+Leave the Match Case option cleared to highlight every occurrence of the query, regardless of capitalization, and navigate through each result.
+
+
+
+### Search a list of words with Match Any Word
+Enable Match Any Word to split the query into separate words. The popup proposes matches for each word and highlights them throughout the document.
+
+
+
+## Text Search Programmatically
+
+### Enable or Disable Text Search
+
+Use the following code snippet to enable or disable Text Search Features
+
+```html
+
+
+
+
+ Essential JS 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.Pdfviewer.TextSearch
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ enableTextSearch: true,
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+
+
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.Pdfviewer.TextSearch
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ enableTextSearch: true,
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/'
+});
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% endtabs %}
+
+### Programmatic search with settings
+
+While the PDF Viewer toolbar offers an interactive search experience, you can also trigger and customize searches programmatically by calling the `searchText` method with tailored options.
+
+#### Using `searchText`
+
+Use the `searchText` method to start a search with optional filters that control case sensitivity and whole-word behavior.
+
+```js
+// searchText(text: string, isMatchCase?: boolean)
+pdfviewer.textSearch.searchText('search text', false);
+```
+
+- `isMatchCase` (optional boolean): Determines whether the search should be case-sensitive.
+
+#### Match Case
+
+Set the `isMatchCase` parameter to `true` to perform a case-sensitive search that mirrors the Match Case option in the search panel.
+
+```js
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch,
+ ej.pdfviewer.Print,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.FormFields,
+ ej.pdfviewer.FormDesigner,
+ ej.pdfviewer.PageOrganizer
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+pdfviewer.appendTo('#PdfViewer');
+
+// Later, to search programmatically:
+// This will only find instances of "PDF" in uppercase.
+pdfviewer.textSearch.searchText('PDF', true);
+```
+
+### Search Text Programmatically with the SearchText API
+
+The following text search methods are available in the PDF Viewer,
+
+* [**Search text**](https://ej2.syncfusion.com/documentation/api/pdfviewer/textSearch#searchtext): Searches the target text in the PDF document and highlights each occurrence in the pages.
+* [**Search next**](https://ej2.syncfusion.com/documentation/api/pdfviewer/textSearch#searchnext): Searches the next occurrence of the current query from the active match.
+* [**Search previous**](https://ej2.syncfusion.com/documentation/api/pdfviewer/textSearch#searchprevious): Searches the previous occurrence of the current query from the active match.
+* [**Cancel text search**](https://ej2.syncfusion.com/documentation/api/pdfviewer/textSearch#canceltextsearch): Cancels the current text search and removes the highlighted occurrences from the PDF Viewer.
+
+
+
+Use the following code snippet to implement text search using SearchText API's
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+{% tabs %}
+{% highlight js tabtitle="Standalone" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch
+);
+
+var viewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+
+viewer.appendTo('#pdfViewer');
+
+// --- Programmatic Text Search API ---
+
+// Searches the target text in the PDF and highlights all matches.
+function searchText(query, matchCase) {
+ if (!query || !query.trim()) return;
+ viewer.textSearch.searchText(query, !!matchCase);
+}
+
+// Navigates to the next occurrence relative to the current active match.
+function searchNext() {
+ viewer.textSearch.searchNext();
+}
+
+// Navigates to the previous occurrence relative to the current active match.
+function searchPrevious() {
+ viewer.textSearch.searchPrevious();
+}
+
+// Cancels the current search and clears all highlights.
+function cancelTextSearch() {
+ viewer.textSearch.cancelTextSearch();
+}
+
+// Example: wire up to buttons/inputs
+var input = document.getElementById('searchBox');
+var btnSearch = document.getElementById('btnSearch');
+if (btnSearch) {
+ btnSearch.addEventListener('click', function () {
+ var val = input ? input.value : '';
+ searchText(val, false);
+ });
+}
+var btnNext = document.getElementById('btnNext');
+if (btnNext) {
+ btnNext.addEventListener('click', function () { searchNext(); });
+}
+var btnPrev = document.getElementById('btnPrev');
+if (btnPrev) {
+ btnPrev.addEventListener('click', function () { searchPrevious(); });
+}
+var btnCancel = document.getElementById('btnCancel');
+if (btnCancel) {
+ btnCancel.addEventListener('click', function () { cancelTextSearch(); });
+}
+{% endhighlight %}
+{% highlight js tabtitle="Server-Backed" %}
+ej.pdfviewer.PdfViewer.Inject(
+ ej.pdfviewer.Toolbar,
+ ej.pdfviewer.Magnification,
+ ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation,
+ ej.pdfviewer.LinkAnnotation,
+ ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection,
+ ej.pdfviewer.TextSearch
+);
+
+var viewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/'
+});
+
+viewer.appendTo('#pdfViewer');
+
+// --- Programmatic Text Search API ---
+
+// Searches the target text in the PDF and highlights all matches.
+function searchText(query, matchCase) {
+ if (!query || !query.trim()) return;
+ viewer.textSearch.searchText(query, !!matchCase);
+}
+
+// Navigates to the next occurrence relative to the current active match.
+function searchNext() {
+ viewer.textSearch.searchNext();
+}
+
+// Navigates to the previous occurrence relative to the current active match.
+function searchPrevious() {
+ viewer.textSearch.searchPrevious();
+}
+
+// Cancels the current search and clears all highlights.
+function cancelTextSearch() {
+ viewer.textSearch.cancelTextSearch();
+}
+
+// Example: wire up to buttons/inputs
+var input = document.getElementById('searchBox');
+var btnSearch = document.getElementById('btnSearch');
+if (btnSearch) {
+ btnSearch.addEventListener('click', function () {
+ var val = input ? input.value : '';
+ searchText(val, false);
+ });
+}
+var btnNext = document.getElementById('btnNext');
+if (btnNext) {
+ btnNext.addEventListener('click', function () { searchNext(); });
+}
+var btnPrev = document.getElementById('btnPrev');
+if (btnPrev) {
+ btnPrev.addEventListener('click', function () { searchPrevious(); });
+}
+var btnCancel = document.getElementById('btnCancel');
+if (btnCancel) {
+ btnCancel.addEventListener('click', function () { cancelTextSearch(); });
+}
+{% endhighlight %}
+{% endtabs %}
+
+
+[View Sample in GitHub](https://github.com/SyncfusionExamples/javascript-pdf-viewer-examples)
+
+## See Also
+
+[Find Text](./find-text)
+[Text Search Events](./text-search-events)
+[Extract Text](../how-to/extract-text-js)
+[Extract Text Options](../how-to/extract-text-option-js)
+[Extract Text Completed](../how-to/extract-text-completed-js)
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es5/toolbar.md b/Document-Processing/PDF/PDF-Viewer/javascript-es5/toolbar.md
index b534d4eca..8de28377d 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es5/toolbar.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es5/toolbar.md
@@ -8,7 +8,7 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Built-In Toolbar in Javascript Pdfviewer control
+# Built-In Toolbar in JavaScript Pdfviewer control
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.
@@ -63,10 +63,10 @@ The PDF Viewer has an option to show or hide the complete default toolbar. You c
{% endtabs %}
N> To set up the **server-backed PDF Viewer**,
-Add the below [serviceUrl](https://ej2.syncfusion.com/documentation/api/pdfviewer/#serviceurl) in the `index.html` file
+Add the below [serviceUrl](https://ej2.syncfusion.com/documentation/api/pdfviewer#serviceurl) in the `index.html` file
`serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer'`
-{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es5/es5-toolbar/toolbar-hide-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es5/es5-toolbar/toolbar-hide-cs1" %}
* **Show/Hide toolbar using showToolbar as in the following code snippet**
@@ -80,7 +80,7 @@ N> To set up the **server-backed PDF Viewer**,
Add the below `serviceUrl` in the `index.html` file
`serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer'`
-{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es5/es5-toolbar/toolbar-method-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es5/es5-toolbar/toolbar-method-cs1" %}
## Show/Hide the default toolbaritem
@@ -98,7 +98,7 @@ N> To set up the **server-backed PDF Viewer**,
Add the below `serviceUrl` in the `index.html` file
`serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer'`
-{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es5/es5-toolbar/toolbar-items-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es5/es5-toolbar/toolbar-items-cs1" %}
* **Show/Hide toolbaritem using showToolbaritem as in the following code snippet**
@@ -112,17 +112,17 @@ N> To set up the **server-backed PDF Viewer**,
Add the below `serviceUrl` in the `index.html` file
`serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer'`
-{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es5/es5-toolbar/toolbar-items-method-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es5/es5-toolbar/toolbar-items-method-cs1" %}
## 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/javascript/documentation/api/pdfviewer/customToolbarItem/) and with existing items in [**ToolbarSettings**](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/toolbarSettings/) property. Newly added item click action can be defined in [`toolbarclick`](https://ej2.syncfusion.com/javascript/documentation/api/toolbar/clickEventArgs/).
+* Add - New items can defined by [**CustomToolbarItemModel**](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/customToolbarItem) and with existing items in [**ToolbarSettings**](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/toolbarSettings) property. Newly added item click action can be defined in [`toolbarclick`](https://ej2.syncfusion.com/javascript/documentation/api/toolbar/clickEventArgs).
-* Show, Hide - Existing items can be shown or hidden using the [`ToolbarSettings`](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/toolbarSettings/) property. Pre-defined toolbar items are available with [`ToolbarItem`](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/toolbarItem/).
+* Show, Hide - Existing items can be shown or hidden using the [`ToolbarSettings`](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/toolbarSettings) property. Pre-defined toolbar items are available with [`ToolbarItem`](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/toolbarItem).
-* Enable, Disable - Toolbar items can be enabled or disable using [`enabletoolbaritem`](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/toolbar/#enabletoolbaritem)
+* Enable, Disable - Toolbar items can be enabled or disable using [`enabletoolbaritem`](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/toolbar#enabletoolbaritem)
{% tabs %}
{% highlight js tabtitle="Standalone" %}
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/Localization/default-language.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/Localization/default-language.md
new file mode 100644
index 000000000..8277d58aa
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/Localization/default-language.md
@@ -0,0 +1,314 @@
+---
+layout: post
+title: Localization in JavaScript ES6 PDF Viewer | Syncfusion
+description: Learn about the default language culture and localization in Syncfusion JavaScript ES6 PDF Viewer component.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Localization support in Typescript 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.
+
+
+
+## Default language (en-US)
+
+By default, the PDF Viewer uses the en-US culture and requires no additional configuration.
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+import {L10n} from '@syncfusion/ej2-base';
+// Inject required modules
+PdfViewer.Inject(TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields, PageOrganizer);
+
+const pdfviewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib",
+ locale: 'en-US', //Using locale update culture
+});
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+import {L10n} from '@syncfusion/ej2-base';
+// Inject required modules
+PdfViewer.Inject(TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields, PageOrganizer);
+
+const pdfviewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+ locale: 'en-US' //Using locale update culture
+});
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples)
+
+
+## Localization keys reference
+
+The PDF Viewer supports localization using culture-specific string collections. By default, the component uses the "en-US" culture.
+
+The following table lists the default text values used by the PDF Viewer in the "en-US" culture:
+
+|Keywords|Values|
+|---|---|
+|PdfViewer|PDF Viewer|
+|Cancel|Cancel|
+|Download file|Download file|
+|Download|Download|
+|Enter Password|This document is password protected. Please enter a password.|
+|File Corrupted|File corrupted|
+|File Corrupted Content|The file is corrupted and cannot be opened.|
+|Fit Page|Fit page|
+|Fit Width|Fit width|
+|Automatic|Automatic|
+|Go To First Page|Show first page|
+|Invalid Password|Incorrect password. Please try again.|
+|Next Page|Show next page|
+|OK|OK|
+|Open|Open file|
+|Page Number|Current page number|
+|Previous Page|Show previous page|
+|Go To Last Page|Show last page|
+|Zoom|Zoom|
+|Zoom In|Zoom in|
+|Zoom Out|Zoom out|
+|Page Thumbnails|Page thumbnails|
+|Bookmarks|Bookmarks|
+|Print|Print file|
+|Password Protected|Password required|
+|Copy|Copy|
+|Text Selection|Text selection tool|
+|Panning|Pan mode|
+|Text Search|Find text|
+|Find in document|Find in document|
+|Match case|Match case|
+|Apply|Apply|
+|GoToPage|Go to page|
+|No Matches|Viewer has finished searching the document. No more matches were found|
+|No Text Found|No Text Found|
+|Undo|Undo|
+|Redo|Redo|
+|Annotation|Add or Edit annotations|
+|Highlight|Highlight Text|
+|Underline|Underline Text|
+|Strikethrough|Strikethrough Text|
+|Delete|Delete annotation|
+|Opacity|Opacity|
+|Color edit|Change Color|
+|Opacity edit|Change Opacity|
+|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.|
+|Open text|Open|
+|First text|First Page|
+|Previous text|Previous Page|
+|Next text|Next Page|
+|Last text|Last Page|
+|Zoom in text|Zoom In|
+|Zoom out text|Zoom Out|
+|Selection text|Selection|
+|Pan text|Pan|
+|Print text|Print|
+|Search text|Search|
+|Annotation Edit text|Edit Annotation|
+|Line Thickness|Line Thickness|
+|Line Properties|Line Properties|
+|Start Arrow|Start Arrow |
+|End Arrow|End Arrow|
+|Line Style|Line Style|
+|Fill Color|Fill Color|
+|Line Color|Line Color|
+|None|None|
+|Open Arrow|Open Arrow|
+|Closed Arrow|Closed Arrow|
+|Round Arrow|Round Arrow|
+|Square Arrow|Square Arrow|
+|Diamond Arrow|Diamond Arrow|
+|Cut|Cut|
+|Paste|Paste|
+|Delete Context|Delete Context|
+|Properties|Properties|
+|Add Stamp|Add Stamp|
+|Add Shapes|Add Shapes|
+|Stroke edit|Stroke Edit|
+|Change thickness|Change Thickness|
+|Add line|Add Line|
+|Add arrow|Add Arrow|
+|Add rectangle|Add Rectangle|
+|Add circle|Add Circle|
+|Add polygon|Add Polygon|
+|Add Comments|Add Comments|
+|Comments| Comments|
+|No Comments Yet|No Comments Yet|
+|Accepted| Accepted|
+|Completed| Completed|
+|Cancelled| Cancelled|
+|Rejected| Rejected|
+|Leader Length|Leader Length|
+|Scale Ratio|Scale Ratio|
+|Calibrate| Calibrate|
+|Calibrate Distance|Calibrate Distance|
+|Calibrate Perimeter|Calibrate Perimeter|
+|Calibrate Area|Calibrate Area|
+|Calibrate Radius|Calibrate Radius|
+|Calibrate Volume|Calibrate Volume|
+|Depth|Depth|
+|Closed|Closed|
+|Round|Round|
+|Square|Square|
+|Diamond|Diamond|
+|Edit|Edit|
+|Comment|Comment|
+|Comment Panel|Comment Panel|
+|Set Status|Set Status|
+|Post|Post|
+|Page|Page|
+|Add a comment|Add a comment|
+|Add a reply|Add a reply|
+|Import Annotations|Import Annotations|
+|Export Annotations|Export Annotations|
+|Add|Add|
+|Clear|Clear|
+|Bold|Bold|
+|Italic|Italic|
+|Strikethroughs|Strikethroughs|
+|Underlines|Underlines|
+|Superscript|Superscript|
+|Subscript|Subscript|
+|Align left|Align Left|
+|Align right|Align Right|
+|Center|Center|
+|Justify|Justify|
+|Font color|Font Color|
+|Text Align|Text Align|
+|Text Properties|Text Properties|
+|Draw Signature|Draw Signature|
+|Create| Create|
+|Font family|Font Family|
+|Font size|Font Size|
+|Free Text|Free Text|
+|Import Failed|Import Failed|
+|File not found|File Not Found|
+|Export Failed|Export Failed|
+|Dynamic|Dynamic|
+|Standard Business|Standard Business|
+|Sign Here|Sign Here|
+|Custom Stamp|Custom Stamp|
+|InitialFieldDialogHeaderText|Initial Field Dialog Header Text|
+|HandwrittenInitialDialogHeaderText|Handwritten Initial Dialog Header Text|
+|SignatureFieldDialogHeaderText|Signature Field Dialog Header Text|
+|HandwrittenSignatureDialogHeaderText|Handwritten Signature Dialog Header Text|
+|Draw-hand Signature|Draw-hand Signature|
+|Type Signature|Type Signature|
+|Upload Signature|Upload Signature|
+|Browse Signature Image|Browse Signature Image|
+|Save Signature|Save Signature|
+|Save Initial|Save Initial|
+|highlight|highlight|
+|underline|underline|
+|strikethrough|strikethrough|
+|FormDesigner|Form Designer|
+|SubmitForm|Submit Form|
+|Search text|Search Text|
+|Draw Ink|Draw Ink|
+|Revised|Revised|
+|Reviewed|Reviewed|
+|Received|Received|
+|Confidential|Confidential|
+|Approved|Approved|
+|Not Approved|Not Approved|
+|Witness|Witness|
+|Initial Here|Initial Here|
+|Draft|Draft|
+|Final|Final|
+|For Public Release|For Public Release|
+|Not For Public Release|Not For Public Release|
+|For Comment|For Comment|
+|Void|Void|
+|Preliminary Results|Preliminary Results|
+|Information Only|Information Only|
+|Enter Signature as Name|Enter Signature as Name|
+|Textbox|Textbox|
+|Password|Password|
+|Check Box|Check Box|
+|Radio Button|Radio Button|
+|Dropdown|Dropdown|
+|List Box|List Box|
+|Signature|Signature|
+|Delete FormField|Delete FormField|
+|FormDesigner Edit text|Form Designer Edit Text|
+|in|in|
+|m|m|
+|ft_in|ft_in|
+|ft|ft|
+|p|p|
+|cm|cm|
+|mm|mm|
+|pt|pt|
+|cu|cu|
+|sq|sq|
+|General|General|
+|Appearance|Appearance|
+|Options|Options|
+|Textbox Properties|Textbox Properties|
+|Name|Name|
+|Tooltip|Tooltip|
+|Value|Value|
+|Form Field Visibility|Form Field Visibility|
+|Read Only|Read Only|
+|Required|Required|
+|Checked|Checked|
+|Show Printing|Show Printing|
+|Formatting|Formatting|
+|Fill|Fill|
+|Border|Border|
+|Border Color|Border Color|
+|Thickness|Thickness|
+|Max Length|Max Length|
+|List Item|List Item|
+|Export Value|Export Value|
+|Dropdown Item List|Dropdown Item List|
+|List Box Item List|List Box Item List|
+|Delete Item|Delete Item|
+|Up|Up|
+|Down|Down|
+|Multiline|Multiline|
+|Initial|Initial|
+|Export XFDF|Export XFDF|
+|Import XFDF|Import XFDF|
+|Organize Pages|Organize Pages|
+|Insert Right|Insert Right|
+|Insert Left|Insert Left|
+|Total|Total|
+|Pages|Pages|
+|Rotate Right|Rotate Right|
+|Rotate Left|Rotate Left|
+|Delete Page|Delete Page|
+|Delete Pages|Delete Pages|
+|Copy Page|Copy Page|
+|Copy Pages|Copy Pages|
+|Save|Save|
+|Save As|Save As|
+|Select All|Select All|
+|Import Document|Import Document|
+|Match any word|Match any word|
+|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|
+|Cors policy error|Unable to retrieve the document due to an invalid URL or access restrictions. Please check the document URL and try again|
+|No More Matches|Viewer has finished searching the document. No more matches were found|
+|No Search Matches|No matches found|
+|No More Search Matches|No more matches found|
+|Exact Matches|EXACT MATCHES|
+|Total Matches|TOTAL MATCHES|
+
+## See Also
+
+- [New Language](./new-language)
+- [RTL Language Support](./rtl-language-support)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/Localization/new-language.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/Localization/new-language.md
new file mode 100644
index 000000000..bb82a87fd
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/Localization/new-language.md
@@ -0,0 +1,307 @@
+---
+layout: post
+title: Update New Language in JavaScript ES6 PDF Viewer | Syncfusion
+description: Learn how to set and configure new language culture and localization in Syncfusion JavaScript ES6 PDF Viewer component.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Set a new language (localization)
+
+You can localize the PDF Viewer UI by:
+- Registering localized strings for each culture using `L10n.load` at the application level
+- Setting the [`locale`](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#locale) property of the `PdfViewer` instance to the desired culture
+
+
+
+## Example Code-snippet to change language using Locale
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+import {L10n} from '@syncfusion/ej2-base';
+// Inject required modules
+PdfViewer.Inject(TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields, PageOrganizer);
+
+const pdfviewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib',
+ locale: 'de', //Using German locale updates culture
+});
+//Load culutre files here
+ L10n.load({
+ 'de': {
+ 'PdfViewer': {
+ 'PdfViewer': 'PDF-Viewer',
+ 'Cancel': 'Abbrechen',
+ 'Download file': 'Datei herunterladen',
+ 'Download': 'Herunterladen',
+ 'Enter Password': 'Dieses Dokument ist passwortgeschützt. Bitte geben Sie ein Passwort ein.',
+ 'File Corrupted': 'Datei beschädigt',
+ 'File Corrupted Content': 'Die Datei ist beschädigt und kann nicht geöffnet werden.',
+ 'Fit Page': 'Seite anpassen',
+ 'Fit Width': 'Breite anpassen',
+ 'Automatic': 'Automatisch',
+ 'Go To First Page': 'Erste Seite anzeigen',
+ 'Invalid Password': 'Falsches Passwort. Bitte versuchen Sie es erneut.',
+ 'Next Page': 'Nächste Seite anzeigen',
+ 'OK': 'OK',
+ 'Open': 'Datei öffnen',
+ 'Page Number': 'Aktuelle Seitenzahl',
+ 'Previous Page': 'Vorherige Seite anzeigen',
+ 'Go To Last Page': 'Letzte Seite anzeigen',
+ 'Zoom': 'Zoomen',
+ 'Zoom In': 'Hineinzoomen',
+ 'Zoom Out': 'Herauszoomen',
+ 'Page Thumbnails': 'Miniaturansichten der Seiten',
+ 'Bookmarks': 'Lesezeichen',
+ 'Print': 'Druckdatei',
+ 'Organize Pages': 'Seiten organisieren',
+ 'Insert Right': 'Rechts einfügen',
+ 'Insert Left': 'Links einfügen',
+ 'Total': 'Gesamt',
+ 'Pages': 'Seiten',
+ 'Rotate Right': 'Drehe nach rechts',
+ 'Rotate Left': 'Nach links drehen',
+ 'Delete Page': 'Seite löschen',
+ 'Delete Pages': 'Seiten löschen',
+ 'Copy Page': 'Seite kopieren',
+ 'Copy Pages': 'Seiten kopieren',
+ 'Import Document': 'Dokument importieren',
+ 'Save': 'Speichern',
+ 'Save As': 'Speichern als',
+ 'Select All': 'Wählen Sie Alle',
+ 'Change Page Zoom': 'Change Page Zoom',
+ 'Increase Page Zoom': 'Increase Page Zoom',
+ 'Decrease Page Zoom': 'Decrease Page Zoom',
+ 'Password Protected': 'Passwort erforderlich',
+ 'Copy': 'Kopieren',
+ 'Text Selection': 'Textauswahltool',
+ 'Panning': 'Schwenkmodus',
+ 'Text Search': 'Text finden',
+ 'Find in document': 'Im Dokument suchen',
+ 'Match case': 'Gross- / Kleinschreibung',
+ 'Match any word': 'Passen Sie ein beliebiges Wort an',
+ 'Apply': 'Anwenden',
+ 'GoToPage': 'Gehen Sie zur Seite',
+ 'No Matches': 'PDF Viewer hat die Suche im Dokument abgeschlossen. Es wurden keine Übereinstimmungen gefunden.',
+ 'No More Matches': 'PDF Viewer hat die Suche im Dokument abgeschlossen. Es wurden keine weiteren Übereinstimmungen gefunden.',
+ 'No Search Matches': 'Keine Treffer gefunden',
+ 'No More Search Matches': 'Keine weiteren Übereinstimmungen gefunden',
+ 'Exact Matches': 'Genaue Übereinstimmungen',
+ 'Total Matches': 'Gesamtspiele',
+ 'Undo': 'Rückgängig machen',
+ 'Redo': 'Wiederholen',
+ 'Annotation': 'Anmerkungen hinzufügen oder bearbeiten',
+ 'FormDesigner': 'Fügen Sie Formularfelder hinzu und bearbeiten Sie sie',
+ 'Highlight': 'Text hervorheben',
+ 'Underline': 'Text unterstreichen',
+ 'Strikethrough': 'Durchgestrichener Text',
+ 'Squiggly': 'Squiggly Text',
+ 'Delete': 'Anmerkung löschen',
+ 'Opacity': 'Opazität',
+ 'Color edit': 'Farbe ändern',
+ 'Opacity edit': 'Deckkraft ändern',
+ 'Highlight context': 'Markieren',
+ 'Underline context': 'Unterstreichen',
+ 'Strikethrough context': 'Durchschlagen',
+ 'Squiggly context': 'Squiggly',
+ 'Server error': 'Der Webdienst hört nicht zu. ',
+ 'Client error': 'Der Client-Seiten-Fehler wird gefunden. Bitte überprüfen Sie die benutzerdefinierten Header in der Eigenschaft von AjaxRequestSets und Web -Aktion in der Eigenschaftsassettierungseigenschaft.',
+ 'Cors policy error': 'Das Dokument kann aufgrund einer ungültigen URL- oder Zugriffsbeschränkungen nicht abgerufen werden. Bitte überprüfen Sie die Dokument -URL und versuchen Sie es erneut.',
+ 'Open text': 'Offen',
+ 'First text': 'Erste Seite',
+ 'Previous text': 'Vorherige Seite',
+ 'Next text': 'Nächste Seite',
+ 'Last text': 'Letzte Seite',
+ 'Zoom in text': 'Hineinzoomen',
+ 'Zoom out text': 'Rauszoomen',
+ 'Selection text': 'Auswahl',
+ 'Pan text': 'Pfanne',
+ 'Print text': 'Drucken',
+ 'Search text': 'Suchen',
+ 'Annotation Edit text': 'Anmerkung bearbeiten',
+ 'FormDesigner Edit text': 'Fügen Sie Formularfelder hinzu und bearbeiten Sie sie',
+ 'Line Thickness': 'Dicke der Linie',
+ 'Line Properties': 'Linieneigenschaften',
+ 'Start Arrow': 'Pfeil starten',
+ 'End Arrow': 'Endpfeil',
+ 'Line Style': 'Linienstil',
+ 'Fill Color': 'Füllfarbe',
+ 'Line Color': 'Linienfarbe',
+ 'None': 'Keiner',
+ 'Open Arrow': 'Offen',
+ 'Closed Arrow': 'Geschlossen',
+ 'Round Arrow': 'Runden',
+ 'Square Arrow': 'Quadrat',
+ 'Diamond Arrow': 'Diamant',
+ 'Butt': 'Hintern',
+ 'Cut': 'Schneiden',
+ 'Paste': 'Paste',
+ 'Delete Context': 'Löschen',
+ 'Properties': 'Eigenschaften',
+ 'Add Stamp': 'Stempel hinzufügen',
+ 'Add Shapes': 'Formen hinzufügen',
+ 'Stroke edit': 'Ändern Sie die Strichfarbe',
+ 'Change thickness': 'Randstärke ändern',
+ 'Add line': 'Zeile hinzufügen',
+ 'Add arrow': 'Pfeil hinzufügen',
+ 'Add rectangle': 'Rechteck hinzufügen',
+ 'Add circle': 'Kreis hinzufügen',
+ 'Add polygon': 'Polygon hinzufügen',
+ 'Add Comments': 'Füge Kommentare hinzu',
+ 'Comments': 'Kommentare',
+ 'SubmitForm': 'Formular abschicken',
+ 'No Comments Yet': 'Noch keine Kommentare',
+ 'Accepted': 'Akzeptiert',
+ 'Completed': 'Vollendet',
+ 'Cancelled': 'Abgesagt',
+ 'Rejected': 'Abgelehnt',
+ 'Leader Length': 'Führungslänge',
+ 'Scale Ratio': 'Skalenverhältnis',
+ 'Calibrate': 'Kalibrieren',
+ 'Calibrate Distance': 'Distanz kalibrieren',
+ 'Calibrate Perimeter': 'Umfang kalibrieren',
+ 'Calibrate Area': 'Bereich kalibrieren',
+ 'Calibrate Radius': 'Radius kalibrieren',
+ 'Calibrate Volume': 'Lautstärke kalibrieren',
+ 'Depth': 'Tiefe',
+ 'Closed': 'Geschlossen',
+ 'Round': 'Runden',
+ 'Square': 'Quadrat',
+ 'Diamond': 'Diamant',
+ 'Edit': 'Bearbeiten',
+ 'Comment': 'Kommentar',
+ 'Comment Panel': 'Kommentarpanel',
+ 'Set Status': 'Status festlegen',
+ 'Post': 'Post',
+ 'Page': 'Seite',
+ 'Add a comment': 'Einen Kommentar hinzufügen',
+ 'Add a reply': 'Fügen Sie eine Antwort hinzu',
+ 'Import Annotations': 'Importieren Sie Annotationen aus der JSON -Datei',
+ 'Export Annotations': 'Annotation an die JSON -Datei exportieren',
+ 'Export XFDF': 'Annotation in XFDF -Datei exportieren',
+ 'Import XFDF': 'Importieren Sie Annotationen aus der XFDF -Datei',
+ 'Add': 'Hinzufügen',
+ 'Clear': 'Klar',
+ 'Bold': 'Deutlich',
+ 'Italic': 'Kursiv',
+ 'Strikethroughs': 'Durchgestrichen',
+ 'Underlines': 'Unterstreichen',
+ 'Superscript': 'Hochgestellt',
+ 'Subscript': 'Index',
+ 'Align left': 'Linksbündig',
+ 'Align right': 'Rechts ausrichten',
+ 'Center': 'Center',
+ 'Justify': 'Rechtfertigen',
+ 'Font color': 'Schriftfarbe',
+ 'Text Align': 'Textausrichtung',
+ 'Text Properties': 'Schriftstil',
+ 'SignatureFieldDialogHeaderText': 'Signatur hinzufügen',
+ 'HandwrittenSignatureDialogHeaderText': 'Signatur hinzufügen',
+ 'InitialFieldDialogHeaderText': 'Initial hinzufügen',
+ 'HandwrittenInitialDialogHeaderText': 'Initial hinzufügen',
+ 'Draw Ink': 'Tinte zeichnen',
+ 'Create': 'Erstellen',
+ 'Font family': 'Schriftfamilie',
+ 'Font size': 'Schriftgröße',
+ 'Free Text': 'Freier Text',
+ 'Import Failed': 'Ungültiger JSON -Dateityp oder Dateiname; Bitte wählen Sie eine gültige JSON -Datei aus',
+ 'Import PDF Failed': 'Ungültige PDF -Dateityp oder PDF -Datei nicht gefunden. Bitte wählen Sie eine gültige PDF -Datei aus',
+ 'File not found': 'Die importierte JSON -Datei wird nicht am gewünschten Ort gefunden',
+ 'Export Failed': 'Exportanmerkungen sind gescheitert. Bitte stellen Sie sicher, dass Anmerkungen ordnungsgemäß hinzugefügt werden',
+ 'of': 'von ',
+ 'Dynamic': 'Dynamisch',
+ 'Standard Business': 'Standardgeschäft',
+ 'Sign Here': 'Hier unterschreiben',
+ 'Custom Stamp': 'Benutzerdefinierte Stempel',
+ 'Enter Signature as Name': 'Gib deinen Namen ein',
+ 'Draw-hand Signature': 'ZIEHEN',
+ 'Type Signature': 'TYP',
+ 'Upload Signature': 'HOCHLADEN',
+ 'Browse Signature Image': 'DURCHSUCHE',
+ 'Save Signature': 'Signatur speichern',
+ 'Save Initial': 'Initial speichern',
+ 'Textbox': 'Textfeld',
+ 'Password': 'Passwort',
+ 'Check Box': 'Kontrollkästchen',
+ 'Radio Button': 'Radio knopf',
+ 'Dropdown': 'Runterfallen',
+ 'List Box': 'Listenfeld',
+ 'Signature': 'Unterschrift',
+ 'Delete FormField': 'Formular löschen',
+ 'Textbox Properties': 'Textbox -Eigenschaften',
+ 'Name': 'Name',
+ 'Tooltip': 'Tooltip',
+ 'Value': 'Wert',
+ 'Form Field Visibility': 'Sichtbarkeit von Feldwäschen',
+ 'Read Only': 'Schreibgeschützt',
+ 'Required': 'Erforderlich',
+ 'Checked': 'Geprüft',
+ 'Show Printing': 'Drucken zeigen',
+ 'Formatting': 'Format',
+ 'Fill': 'Füllen',
+ 'Border': 'Grenze',
+ 'Border Color': 'Randfarbe',
+ 'Thickness': 'Dicke',
+ 'Max Length': 'Maximale Länge',
+ 'List Item': 'Artikelname',
+ 'Export Value': 'Gegenstandswert',
+ 'Dropdown Item List': 'Dropdown -Elementliste',
+ 'List Box Item List': 'Listenfeldelementliste',
+ 'General': 'ALLGEMEIN',
+ 'Appearance': 'AUSSEHEN',
+ 'Options': 'OPTIONEN',
+ 'Delete Item': 'Löschen',
+ 'Up': 'Hoch',
+ 'Down': 'Runter',
+ 'Multiline': 'Multiline',
+ 'Revised': 'Überarbeitet',
+ 'Reviewed': 'Bewertet',
+ 'Received': 'Erhalten',
+ 'Confidential': 'Vertraulich',
+ 'Approved': 'Genehmigt',
+ 'Not Approved': 'Nicht bestätigt',
+ 'Witness': 'Zeuge',
+ 'Initial Here': 'Anfang hier',
+ 'Draft': 'Entwurf',
+ 'Final': 'Finale',
+ 'For Public Release': 'Für die Veröffentlichung',
+ 'Not For Public Release': 'Nicht für die Veröffentlichung',
+ 'For Comment': 'Für Kommentar',
+ 'Void': 'Leere',
+ 'Preliminary Results': 'Vorläufige Ergebnisse',
+ 'Information Only': 'Nur Informationen',
+ 'in': 'In',
+ 'm': 'M',
+ 'ft_in': 'ft_in',
+ 'ft': 'ft',
+ 'p': 'P',
+ 'cm': 'cm',
+ 'mm': 'mm',
+ 'pt': 'pt',
+ 'cu': 'cu',
+ 'sq': 'Quadrat',
+ 'Initial': 'Initiale',
+ 'Extract Pages': 'Extract Pages',
+ 'Delete Pages After Extracting': 'Delete Pages After Extracting',
+ 'Extract Pages As Separate Files': 'Extract Pages As Separate Files',
+ 'Extract': 'Extract',
+ 'Example: 1,3,5-12': 'Example: 1,3,5-12',
+ 'No matches': 'Der Viewer hat die Suche im Dokument abgeschlossen. ',
+ 'No Text Found': 'Kein Text gefunden'
+ }
+ }
+ });
+pdfviewer.appendTo('#PdfViewer');
+{% 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.
+
+## See Also
+
+- [Default Language](./default-language)
+- [RTL Language Support](./rtl-language-support)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/Localization/rtl-language-support.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/Localization/rtl-language-support.md
new file mode 100644
index 000000000..fff5c44c6
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/Localization/rtl-language-support.md
@@ -0,0 +1,308 @@
+---
+layout: post
+title: RTL Localization in JavaScript ES6 PDF Viewer | Syncfusion
+description: Learn about the Localization and Right to Left Lanugage Support in Syncfusion JavaScript ES6 PDF Viewer component.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# RTL Language Support in Typescript PDF Viewer
+
+RTL support in TypeScript 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.
+
+
+
+## Example Code-snippet to Enable RTL with Arabic Localization
+
+Use the below code-snippet to enable RTL for RTL Languages(Arabic, Hebrew, Persian)
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+import {L10n} from '@syncfusion/ej2-base';
+// Inject required modules
+PdfViewer.Inject(TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields, PageOrganizer);
+
+const pdfviewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib",
+ locale: 'ar-AE', //Using locale updates culture
+ enableRtl: true, //To enbale Right to Left rendering.
+});
+//Load culutre files here
+ L10n.load({
+ 'ar-AE': {
+ 'PdfViewer': {
+ 'PdfViewer': 'قوات الدفاع الشعبي المشاهد',
+ 'Cancel': 'إلغاء',
+ 'Download file': 'تحميل الملف',
+ 'Download': 'تحميل',
+ 'Enter Password': 'هذا المستند محمي بكلمة مرور. يرجى إدخال كلمة مرور.',
+ 'File Corrupted': 'ملف تالف',
+ 'File Corrupted Content': 'الملف تالف ولا يمكن فتحه.',
+ 'Fit Page': 'لائق بدنيا الصفحة',
+ 'Fit Width': 'لائق بدنيا عرض',
+ 'Automatic': 'تلقائي',
+ 'Go To First Page': 'عرض الصفحة الأولى',
+ 'Invalid Password': 'كلمة سر خاطئة. حاول مرة اخرى.',
+ 'Next Page': 'عرض الصفحة التالية',
+ 'OK': 'حسنا',
+ 'Open': 'فتح الملف',
+ 'Page Number': 'رقم الصفحة الحالية',
+ 'Previous Page': 'عرض الصفحة السابقة',
+ 'Go To Last Page': 'عرض الصفحة الأخيرة',
+ 'Zoom': 'تكبير',
+ 'Zoom In': 'تكبير في',
+ 'Zoom Out': 'تكبير خارج',
+ 'Page Thumbnails': 'مصغرات الصفحة',
+ 'Bookmarks': 'المرجعية',
+ 'Print': 'اطبع الملف',
+ 'Password Protected': 'كلمة المرور مطلوبة',
+ 'Copy': 'نسخ',
+ 'Text Selection': 'أداة اختيار النص',
+ 'Panning': 'وضع عموم',
+ 'Text Search': 'بحث عن نص',
+ 'Find in document': 'ابحث في المستند',
+ 'Match case': 'حالة مباراة',
+ 'Apply': 'تطبيق',
+ 'GoToPage': 'انتقل إلى صفحة',
+ 'No Matches': 'انتهى العارض من البحث في المستند. لم يتم العثور على مزيد من التطابقات',
+ 'No Text Found': 'لم يتم العثور على نص',
+ 'Undo': 'فك',
+ 'Redo': 'فعل ثانية',
+ 'Annotation': 'إضافة أو تعديل التعليقات التوضيحية',
+ 'Highlight': 'تسليط الضوء على النص',
+ 'Underline': 'تسطير النص',
+ 'Strikethrough': 'نص يتوسطه خط',
+ 'Delete': 'حذف التعليق التوضيحي',
+ 'Opacity': 'غموض',
+ 'Color edit': 'غير اللون',
+ 'Opacity edit': 'تغيير التعتيم',
+ 'highlight': 'تسليط الضوء',
+ 'underline': 'أكد',
+ 'strikethrough': 'يتوسطه',
+ // tslint:disable-next-line:max-line-length
+ 'Server error': 'خدمة الانترنت لا يستمع. يعتمد قوات الدفاع الشعبي المشاهد على خدمة الويب لجميع ميزاته. يرجى بدء خدمة الويب للمتابعة.',
+ 'Open text': 'افتح',
+ 'First text': 'الصفحة الأولى',
+ 'Previous text': 'الصفحة السابقة',
+ 'Next text': 'الصفحة التالية',
+ 'Last text': 'آخر صفحة',
+ 'Zoom in text': 'تكبير',
+ 'Zoom out text': 'تصغير',
+ 'Selection text': 'اختيار',
+ 'Pan text': 'مقلاة',
+ 'Print text': 'طباعة',
+ 'Search text': 'بحث',
+ 'Annotation Edit text': 'تحرير التعليق التوضيحي',
+ 'Line Thickness': 'سمك الخط',
+ 'Line Properties': 'خط الخصائص',
+ 'Start Arrow': 'ابدأ السهم',
+ 'End Arrow': 'نهاية السهم',
+ 'Line Style': 'أسلوب الخط',
+ 'Fill Color': 'ملء اللون',
+ 'Line Color': ' الخط اللون',
+ 'None': 'لا شيء',
+ 'Open Arrow': 'افتح',
+ 'Closed Arrow': 'مغلق',
+ 'Round Arrow': 'مستدير',
+ 'Square Arrow': 'مربع',
+ 'Diamond Arrow': 'الماس',
+ 'Cut': 'يقطع',
+ 'Paste': 'معجون',
+ 'Delete Context': 'حذف',
+ 'Properties': 'الخصائص',
+ 'Add Stamp': 'إضافة الطوابع',
+ 'Add Shapes': 'أضف الأشكال',
+ 'Stroke edit': 'تغيير لون السكتة الدماغية',
+ 'Change thickness': 'تغيير سمك الحدود',
+ 'Add line': 'إضافة خط',
+ 'Add arrow': 'سهم إضافة',
+ 'Add rectangle': 'أضف مستطيل',
+ 'Add circle': 'إضافة دائرة',
+ 'Add polygon': 'أضف مضلع',
+ 'Add Comments': 'أضف تعليقات',
+ 'Comments': 'تعليقات',
+ 'No Comments Yet': 'لا توجد تعليقات حتى الآن',
+ 'Accepted': 'وافقت',
+ 'Completed': 'منجز',
+ 'Cancelled': 'ألغيت',
+ 'Rejected': 'مرفوض',
+ 'Leader Length': 'زعيم الطول',
+ 'Scale Ratio': 'نسبة مقياس',
+ 'Calibrate': 'عاير',
+ 'Calibrate Distance': 'معايرة المسافة',
+ 'Calibrate Perimeter': 'معايرة محيط',
+ 'Calibrate Area': 'عاير منطقة',
+ 'Calibrate Radius': 'معايرة نصف القطر',
+ 'Calibrate Volume': 'معايرة الحجم',
+ 'Depth': 'عمق',
+ 'Closed': 'مغلق',
+ 'Round': 'مستدير',
+ 'Square': 'ميدان',
+ 'Diamond': 'الماس',
+ 'Edit': 'تصحيح',
+ 'Comment': 'تعليقات',
+ 'Comment Panel': 'لوحة التعليقات',
+ 'Set Status': 'تعيين الحالة',
+ 'Post': 'بريد',
+ 'Page': 'صفحة',
+ 'Add a comment': 'أضف تعليق',
+ 'Add a reply': 'أضف رد',
+ 'Import Annotations': 'استيراد التعليقات التوضيحية',
+ 'Export Annotations': 'شروح التصدير',
+ 'Add': 'أضف',
+ 'Clear': 'واضح',
+ 'Bold': 'بالخط العريض',
+ 'Italic': 'مائل',
+ 'Strikethroughs': 'يتوسطه',
+ 'Underlines': 'تحت الخط',
+ 'Superscript': 'حرف فوقي',
+ 'Subscript': 'الفرعية النصي',
+ 'Align left': 'محاذاة اليسار',
+ 'Align right': 'محاذاة اليمين',
+ 'Center': 'مركز',
+ 'Justify': 'برر',
+ 'Font color': 'لون الخط',
+ 'Text Align': 'محاذاة النص',
+ 'Text Properties': 'نوع الخط',
+ 'Draw Signature': 'ارسم التوقيع',
+ 'Create': 'خلق',
+ 'Font family': 'خط العائلة',
+ 'Font size': 'حجم الخط',
+ 'Free Text': 'نص حر',
+ 'Import Failed': 'نوع ملف سلمان أو اسم الملف غير صالح ؛ يرجى تحديد ملف سلمانصالح',
+ 'File not found': 'لم يتم العثور على ملف سلمان المستورد في الموقع المطلوب',
+ 'Export Failed': 'شل إجراء تصدير التعليقات التوضيحية ؛ يرجى التأكد من إضافة التعليقات التوضيحية بشكل صحيح',
+ 'Dynamic': 'متحرك',
+ 'Standard Business': 'الأعمال القياسية',
+ 'Sign Here': 'وقع هنا',
+ 'Custom Stamp': 'ختم مخصص',
+ 'InitialFieldDialogHeaderText': 'إضافة الأولية',
+ 'HandwrittenInitialDialogHeaderText': 'إضافة الأولية',
+ 'SignatureFieldDialogHeaderText': 'أضف التوقيع',
+ 'HandwrittenSignatureDialogHeaderText': 'أضف التوقيع',
+ 'Draw-hand Signature': 'يرسم',
+ 'Type Signature': 'نوع',
+ 'Upload Signature': 'تحميل',
+ 'Browse Signature Image': 'تصفح',
+ 'Save Signature': 'احفظ التوقيع',
+ 'Save Initial': 'حفظ الأولي',
+ 'Highlight context': 'تسليط الضوء',
+ 'Underline context': 'تسطير',
+ 'Strikethrough context': 'يتوسطه خط',
+ 'FormDesigner': 'إضافة وتحرير حقل النموذج',
+ 'SubmitForm': 'تقديم النموذج',
+ 'Search Text': 'بحث',
+ 'Draw Ink': 'ارسم الحبر',
+ 'Revised': 'مراجعة',
+ 'Reviewed': 'تمت المراجعة',
+ 'Received': 'تم الاستلام',
+ 'Confidential': 'مؤتمن',
+ 'Approved': 'وافق',
+ 'Not Approved': 'غير مقبول',
+ 'Witness': 'الشاهد',
+ 'Initial Here': 'المبدئي هنا',
+ 'Draft': 'مشروع',
+ 'Final': 'أخير',
+ 'For Public Release': 'للنشر العام',
+ 'Not For Public Release': 'ليس للنشر العام',
+ 'For Comment': 'للتعليق',
+ 'Void': 'فارغ',
+ 'Preliminary Results': 'نتائج اولية',
+ 'Information Only': 'المعلومات فقط',
+ 'Enter Signature as Name': 'أدخل أسمك',
+ 'Textbox': 'مربع الكتابة',
+ 'Password': 'كلمه السر',
+ 'Check Box': 'خانة اختيار',
+ 'Radio Button': 'زر الراديو',
+ 'Dropdown': 'اسقاط',
+ 'List Box': 'مربع القائمة',
+ 'Signature': 'إمضاء',
+ 'Delete FormField': 'حذف حقل النموذج',
+ 'FormDesigner Edit text': 'إضافة وتحرير حقل النموذج',
+ 'in': 'في',
+ 'm': 'م',
+ 'ft_in': 'قدم',
+ 'ft': 'قدم',
+ 'p': 'ص',
+ 'cm': 'سم',
+ 'mm': 'مم',
+ 'pt': 'نقطة',
+ 'cu': 'مكعب',
+ 'sq': 'قدم مربع',
+ 'General': 'جنرال لواء',
+ 'Appearance': 'مظهر خارجي',
+ 'Options': 'والخيارات',
+ 'Textbox Properties': 'خصائص مربع النص',
+ 'Name': 'اسم',
+ 'Tooltip': 'تلميح',
+ 'Value': 'القيمة',
+ 'Form Field Visibility': 'رؤية حقل النموذج',
+ 'Read Only': 'يقرأ فقط',
+ 'Required': 'مطلوب',
+ 'Checked': 'التحقق',
+ 'Show Printing': 'عرض الطباعة',
+ 'Formatting': 'صيغة',
+ 'Fill': 'يملأ',
+ 'Border': 'الحدود',
+ 'Border Color': 'لون الحدود',
+ 'Thickness': 'السماكة',
+ 'Max Length': 'الحد الاقصى للطول',
+ 'List Item': 'اسم العنصر',
+ 'Export Value': 'قيمة البند',
+ 'Dropdown Item List': 'قائمة العناصر المنسدلة',
+ 'List Box Item List': 'قائمة عناصر مربع القائمة',
+ 'Delete Item': 'حذف',
+ 'Up': 'فوق',
+ 'Down': 'تحت',
+ 'Multiline': 'متعدد الأسطر',
+ 'Initial': 'أولي',
+ 'Export XFDF': 'تصدير التعليق التوضيحي إلى ملف XFDF',
+ 'Import XFDF': 'استيراد التعليقات التوضيحية من ملف XFDF',
+ 'Organize Pages': 'تنظيم الصفحات',
+ 'Insert Right': 'أدخل الحق',
+ 'Insert Left': 'أدخل اليسار',
+ 'Total': 'المجموع',
+ 'Pages': 'الصفحات',
+ 'Rotate Right': 'تدوير لليمين',
+ 'Rotate Left': 'استدر يسارا',
+ 'Delete Page': 'حذف الصفحة',
+ 'Delete Pages': 'حذف الصفحات',
+ 'Copy Page': 'انسخ الصفحة',
+ 'Copy Pages': 'نسخ الصفحات',
+ 'Save': 'يحفظ',
+ 'Save As': 'حفظ باسم',
+ 'Select All': 'اختر الكل',
+ 'Import Document': 'استيراد المستند',
+ 'Match any word': 'تطابق أي كلمة',
+ 'Client error': 'تم العثور على خطأ في جانب العميل. يرجى التحقق من رؤوس Ajax المخصصة في خاصية AjaxRequestSettings وطرق الويب في خاصية ServerActionSettings',
+ 'Cors policy error': 'تعذر استرداد المستند بسبب عنوان URL غير صالح أو قيود على الوصول. يرجى التحقق من عنوان URL للمستند والمحاولة مرة أخرى',
+ 'No More Matches': 'انتهى العارض من البحث في المستند. لم يتم العثور على تطابقات أخرى',
+ 'No Search Matches': 'لم يتم العثور على تطابقات',
+ 'No More Search Matches': 'لم يتم العثور على تطابقات أخرى',
+ 'Exact Matches': 'تطابقات دقيقة',
+ 'Total Matches': 'إجمالي التطابقات'
+
+ }
+ }
+ });
+pdfviewer.appendTo('#PdfViewer');
+{% 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.
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples)
+
+## See Also
+
+- [Default Language](./default-language)
+- [New Language](./new-language)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-event.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-event.md
index acdb64e69..0f0762010 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-event.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-event.md
@@ -36,11 +36,11 @@ The PDF Viewer component triggers various events based on user interactions and
### annotationAdd
-The [annotationAdd](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/#annotationaddevent) event is triggered when an annotation is added to a PDF document's page.
+The [annotationAdd](https://ej2.syncfusion.com/javascript/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/javascript/documentation/api/pdfviewer/annotationAddEventArgs/). It provides properties such as `annotationId`, `pageNumber`, `annotationType`, and `bounds`.
+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.
@@ -90,11 +90,11 @@ viewer.appendTo('#pdfViewer');
### annotationDoubleClick
-The [annotationDoubleClick](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/#annotationdoubleclickevent) event is triggered when an annotation is double-clicked.
+The [annotationDoubleClick](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer#annotationdoubleclickevent) event is triggered when an annotation is double-clicked.
#### Event Arguments
-For event data, see [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.
@@ -142,11 +142,11 @@ viewer.appendTo('#pdfViewer');
### annotationMouseLeave
-The [annotationMouseLeave](https://ej2.syncfusion.com/javascript/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/javascript/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/javascript/documentation/api/pdfviewer/annotationMouseLeaveEventArgs/).
+For event data, see [AnnotationMouseLeaveEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationMouseLeaveEventArgs).
The following example illustrates how to handle the `annotationMouseLeave` event.
@@ -194,11 +194,11 @@ viewer.appendTo('#pdfViewer');
### annotationMouseover
-The [annotationMouseover](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/#annotationmouseoverevent) event is triggered when the mouse is moved over an annotation object.
+The [annotationMouseover](https://ej2.syncfusion.com/javascript/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/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.
@@ -247,11 +247,11 @@ viewer.appendTo('#pdfViewer');
### annotationMove
-The [annotationMove](https://ej2.syncfusion.com/javascript/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/javascript/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/javascript/documentation/api/pdfviewer/annotationMoveEventArgs/).
+For event data, see [AnnotationMoveEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationMoveEventArgs).
The following example illustrates how to handle the `annotationMove` event.
@@ -300,11 +300,11 @@ viewer.appendTo('#pdfViewer');
### annotationMoving
-The [annotationMoving](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/#annotationmovingevent) event is triggered while an annotation is being moved.
+The [annotationMoving](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer#annotationmovingevent) event is triggered while an annotation is being moved.
#### Event Arguments
-For event data, see [AnnotationMovingEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationMovingEventArgs/).
+For event data, see [AnnotationMovingEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationMovingEventArgs).
The following example illustrates how to handle the `annotationMoving` event.
@@ -353,11 +353,11 @@ viewer.appendTo('#pdfViewer');
### annotationPropertiesChange
-The [annotationPropertiesChange](https://ej2.syncfusion.com/javascript/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/javascript/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/javascript/documentation/api/pdfviewer/annotationPropertiesChangeEventArgs/). It provides properties such as `annotationId`, `pageNumber`, and `action`.
+For event data, see [AnnotationPropertiesChangeEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationPropertiesChangeEventArgs). It provides properties such as `annotationId`, `pageNumber`, and `action`.
The following example illustrates how to handle the `annotationPropertiesChange` event.
@@ -406,11 +406,11 @@ viewer.appendTo('#pdfViewer');
### annotationRemove
-The [annotationRemove](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/#annotationremoveevent) event is triggered when an annotation is removed from a PDF document's page.
+The [annotationRemove](https://ej2.syncfusion.com/javascript/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/javascript/documentation/api/pdfviewer/annotationRemoveEventArgs/). It provides properties such as `annotationId` and `pageNumber`.
+For event data, see [AnnotationRemoveEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationRemoveEventArgs). It provides properties such as `annotationId` and `pageNumber`.
The following example illustrates how to handle the `annotationRemove` event.
@@ -459,11 +459,11 @@ viewer.appendTo('#pdfViewer');
### annotationResize
-The [annotationResize](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/#annotationresizeevent) event is triggered when an annotation is resized on a PDF document page.
+The [annotationResize](https://ej2.syncfusion.com/javascript/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/javascript/documentation/api/pdfviewer/annotationResizeEventArgs/).
+For event data, see [AnnotationResizeEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationResizeEventArgs).
The following example illustrates how to handle the `annotationResize` event.
@@ -512,11 +512,11 @@ viewer.appendTo('#pdfViewer');
### annotationSelect
-The [annotationSelect](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/#annotationselectevent) event is triggered when an annotation is selected on a PDF document's page.
+The [annotationSelect](https://ej2.syncfusion.com/javascript/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/javascript/documentation/api/pdfviewer/annotationSelectEventArgs/).
+For event data, see [AnnotationSelectEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationSelectEventArgs).
The following example illustrates how to handle the `annotationSelect` event.
@@ -565,11 +565,11 @@ viewer.appendTo('#pdfViewer');
### annotationUnselect
-The [annotationUnselect](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/#annotationunselectevent) event is triggered when an annotation is unselected from the PDF document's page.
+The [annotationUnselect](https://ej2.syncfusion.com/javascript/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/javascript/documentation/api/pdfviewer/annotationUnSelectEventArgs/).
+For event data, see [AnnotationUnSelectEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/annotationUnSelectEventArgs).
The following example illustrates how to handle the `annotationUnselect` event.
@@ -618,11 +618,11 @@ viewer.appendTo('#pdfViewer');
### beforeAddFreeText
-The [beforeAddFreeText](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/#beforeaddfreetextevent) event is triggered before adding a text in the freeText annotation.
+The [beforeAddFreeText](https://ej2.syncfusion.com/javascript/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/javascript/documentation/api/pdfviewer/beforeAddFreeTextEventArgs/).
+For event data, see [BeforeAddFreeTextEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/beforeAddFreeTextEventArgs).
The following example illustrates how to handle the `beforeAddFreeText` event.
@@ -675,11 +675,11 @@ viewer.appendTo('#pdfViewer');
### addSignature
-The [addSignature](https://ej2.syncfusion.com/javascript/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/javascript/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/javascript/documentation/api/pdfviewer/addSignatureEventArgs/). It provides properties such as `pageNumber`.
+For event data, see [AddSignatureEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/addSignatureEventArgs). It provides properties such as `pageNumber`.
The following example illustrates how to handle the `addSignature` event.
@@ -728,11 +728,11 @@ viewer.appendTo('#pdfViewer');
### removeSignature
-The [removeSignature](https://ej2.syncfusion.com/javascript/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/javascript/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/javascript/documentation/api/pdfviewer/removeSignatureEventArgs/). It provides properties such as `pageNumber`.
+For event data, see [RemoveSignatureEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/removeSignatureEventArgs). It provides properties such as `pageNumber`.
The following example illustrates how to handle the `removeSignature` event.
@@ -781,11 +781,11 @@ viewer.appendTo('#pdfViewer');
### resizeSignature
-The [resizeSignature](https://ej2.syncfusion.com/javascript/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/javascript/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/javascript/documentation/api/pdfviewer/resizeSignatureEventArgs/).
+For event data, see [ResizeSignatureEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/resizeSignatureEventArgs).
The following example illustrates how to handle the `resizeSignature` event.
@@ -834,11 +834,11 @@ viewer.appendTo('#pdfViewer');
### signaturePropertiesChange
-The [signaturePropertiesChange](https://ej2.syncfusion.com/javascript/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/javascript/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/javascript/documentation/api/pdfviewer/signaturePropertiesChangeEventArgs/).
+For event data, see [SignaturePropertiesChangeEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/signaturePropertiesChangeEventArgs).
The following example illustrates how to handle the `signaturePropertiesChange` event.
@@ -887,11 +887,11 @@ viewer.appendTo('#pdfViewer');
### signatureSelect
-The [signatureSelect](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/#signatureselectevent) event is triggered when signature is selected over the page of the PDF document.
+The [signatureSelect](https://ej2.syncfusion.com/javascript/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/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.
@@ -940,11 +940,11 @@ viewer.appendTo('#pdfViewer');
### signatureUnselect
-The [signatureUnselect](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/#signatureunselectevent) event is triggered when signature is unselected over the page of the PDF document.
+The [signatureUnselect](https://ej2.syncfusion.com/javascript/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/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.
@@ -989,4 +989,18 @@ let viewer: PdfViewer = new PdfViewer({
}
});
viewer.appendTo('#pdfViewer');
-```
\ No newline at end of file
+```
+
+## 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 API](../annotations/annotations-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/annotation-undo-redo.png b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/annotation-undo-redo.png
new file mode 100644
index 000000000..fe93c32f7
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/annotation-undo-redo.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/area-annot.png b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/area-annot.png
new file mode 100644
index 000000000..5974cf3bc
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/area-annot.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/arrow-annot.png b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/arrow-annot.png
new file mode 100644
index 000000000..c85e14482
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/arrow-annot.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/circle-annot.png b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/circle-annot.png
new file mode 100644
index 000000000..25eb71e63
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/circle-annot.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/delete-annot-context-menu.png b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/delete-annot-context-menu.png
new file mode 100644
index 000000000..7a622d4ac
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/delete-annot-context-menu.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/delete-annot.png b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/delete-annot.png
new file mode 100644
index 000000000..11a148f2f
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/delete-annot.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/distance-annot.png b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/distance-annot.png
new file mode 100644
index 000000000..9adddffc2
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/distance-annot.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/export-annot.png b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/export-annot.png
new file mode 100644
index 000000000..9ad0f027e
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/export-annot.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/free-text-annot.png b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/free-text-annot.png
new file mode 100644
index 000000000..9b5ab0fb6
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/free-text-annot.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/highlight-context.gif b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/highlight-context.gif
new file mode 100644
index 000000000..205b0ec3b
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/highlight-context.gif differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/highlight-tool.gif b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/highlight-tool.gif
new file mode 100644
index 000000000..bb780e81e
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/highlight-tool.gif differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/import-annot.png b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/import-annot.png
new file mode 100644
index 000000000..8921a81c3
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/import-annot.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/line-angle-constraint.gif b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/line-angle-constraint.gif
new file mode 100644
index 000000000..12ca903df
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/line-angle-constraint.gif differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/line-annot.png b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/line-annot.png
new file mode 100644
index 000000000..691212636
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/line-annot.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/perimeter-annot.png b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/perimeter-annot.png
new file mode 100644
index 000000000..6f97c31e0
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/perimeter-annot.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/polygon-annot.png b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/polygon-annot.png
new file mode 100644
index 000000000..38318eaf6
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/polygon-annot.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/radius-annot.png b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/radius-annot.png
new file mode 100644
index 000000000..b04dcfbee
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/radius-annot.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/rect-annot.png b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/rect-annot.png
new file mode 100644
index 000000000..36e5305f9
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/rect-annot.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/squiggle-context.gif b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/squiggle-context.gif
new file mode 100644
index 000000000..cc1d2ea21
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/squiggle-context.gif differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/squiggle-tool.gif b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/squiggle-tool.gif
new file mode 100644
index 000000000..bc5e01966
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/squiggle-tool.gif differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/strikethrough-context.gif b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/strikethrough-context.gif
new file mode 100644
index 000000000..a1bc4f77d
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/strikethrough-context.gif differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/strikethrough-tool.gif b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/strikethrough-tool.gif
new file mode 100644
index 000000000..bd482b495
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/strikethrough-tool.gif differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/underline-context.gif b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/underline-context.gif
new file mode 100644
index 000000000..e06278e5b
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/underline-context.gif differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/underline-tool.gif b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/underline-tool.gif
new file mode 100644
index 000000000..f274f11bb
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/underline-tool.gif differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/volume-annot.png b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/volume-annot.png
new file mode 100644
index 000000000..21387faca
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-images/volume-annot.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-permission.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-permission.md
new file mode 100644
index 000000000..3796243ec
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-permission.md
@@ -0,0 +1,112 @@
+---
+layout: post
+title: Annotations Permission in TypeScript PDF Viewer | Syncfusion
+description: Learn how to use annotation permissions in Syncfusion TypeScript PDF Viewer using programmatic APIs.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Annotation permissions
+
+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.
+
+## 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.
+
+```ts
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView,
+ TextSelection, TextSearch, Print, Annotation, FormFields, FormDesigner,
+ AllowedInteraction} from '@syncfusion/ej2-pdfviewer';
+
+ PdfViewer.Inject(Toolbar,Magnification,Navigation, LinkAnnotation,ThumbnailView,BookmarkView,
+ TextSelection, TextSearch, Print, Annotation,FormFields, FormDesigner);
+
+let viewer: PdfViewer = new PdfViewer();
+viewer.resourceUrl= 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+viewer.documentPath= 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+
+// Default annotation settings applied to annotations created via the UI
+viewer.annotationSettings = {
+ author: 'XYZ',
+ minHeight: 10,
+ minWidth: 10,
+ maxWidth: 100,
+ maxHeight: 100,
+ isLock: false, // allow moving/resizing/editing by default
+ skipPrint: false, // include annotations when printing the document
+ skipDownload: false, // include annotations when downloading/exporting the document
+ allowedInteractions: [AllowedInteraction.Resize],
+};
+
+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.
+
+```ts
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields);
+
+const pdfviewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib",
+ // Text markup defaults
+ highlightSettings: { author: 'QA', subject: 'Review', color: '#ffff00', opacity: 0.6 },
+ strikethroughSettings: { author: 'QA', subject: 'Remove', color: '#ff0000', opacity: 0.6 },
+ underlineSettings: { author: 'Guest User', subject: 'Points to be remembered', color: '#00ffff', opacity: 0.9 },
+ squigglySettings: { author: 'Guest User', subject: 'Corrections', color: '#00ff00', opacity: 0.9 },
+
+ // Shapes
+ lineSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, isLock: false, isPrint: true },
+ arrowSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, isLock: false, isPrint: true },
+ rectangleSettings: { fillColor: '#ffffff00', strokeColor: '#222222', thickness: 1, opacity: 1, isLock: false, isPrint: true },
+ circleSettings: { fillColor: '#ffffff00', strokeColor: '#222222', thickness: 1, opacity: 1, isLock: false, isPrint: true },
+ polygonSettings: { fillColor: '#ffffff00', strokeColor: '#222222', thickness: 1, opacity: 1, isLock: false, isPrint: true },
+
+ // Measurements
+ distanceSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, isLock: false, isPrint: true },
+ perimeterSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, isLock: false, isPrint: true },
+ areaSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, fillColor: '#ffffff00', isLock: false, isPrint: true },
+ radiusSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, fillColor: '#ffffff00', isLock: false, isPrint: true },
+ volumeSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, fillColor: '#ffffff00', isLock: false, isPrint: true },
+
+ // Others
+ freeTextSettings: { borderColor: '#222222', opacity: 1, isLock: false, isPrint: true },
+ inkAnnotationSettings: { strokeColor: '#0000ff', thickness: 3, opacity: 0.8, isLock: false, isPrint: true },
+ stampSettings: { opacity: 0.9, isLock: false, isPrint: true },
+ stickyNotesSettings: { author: 'QA', subject: 'Review', opacity: 1, isLock: false, isPrint: true }
+});
+
+pdfviewer.appendTo('#PdfViewer');
+```
+
+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/typescript-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 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)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/Squiggly-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/Squiggly-annotation.md
new file mode 100644
index 000000000..07725db7b
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/Squiggly-annotation.md
@@ -0,0 +1,352 @@
+---
+layout: post
+title: Squiggly annotation in TypeScript PDF Viewer | Syncfusion
+description: Learn to add, edit, delete, and customize Squiggly text markup annotations in Syncfusion TypeScript PDF Viewer, with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Squiggly annotation in TypeScript PDF Viewer
+
+The PDF Viewer provides options to add, edit, and delete Squiggly text markup annotations on text. You can add squiggles via the UI (context menu or annotation toolbar) and programmatically. You can also customize color, opacity, author/subject, and default settings, and use undo/redo, save, print, or disable them as needed.
+
+
+
+## Add Squiggly Annotation
+
+### Add squiggly annotation in UI
+
+You can add squiggly annotations in two ways:
+
+1. Using the context menu
+* Select text in the PDF document and right-click it.
+* Choose **Squiggly** in the context menu.
+
+
+
+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**.
+
+
+
+N> When in pan mode, selecting a text markup annotation switches the PDF Viewer to text select mode.
+
+### Enable Squiggly Mode
+
+Enable/exit squiggly mode using the following code:
+
+```html
+
+
+```
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('squigglyMode')?.addEventListener('click', () => {
+ pdfviewer.annotation.setAnnotationMode('Squiggly');
+});
+
+document.getElementById('setNone')?.addEventListener('click', () => {
+ pdfviewer.annotation.setAnnotationMode('None');
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('squigglyMode')?.addEventListener('click', () => {
+ pdfviewer.annotation.setAnnotationMode('Squiggly');
+});
+
+document.getElementById('setNone')?.addEventListener('click', () => {
+ pdfviewer.annotation.setAnnotationMode('None');
+});
+{% endhighlight %}
+{% endtabs %}
+
+### Add squiggly annotation programmatically
+
+Add squiggly annotations programmatically using the [addAnnotation](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#addannotation) method.
+
+```html
+
+```
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, SquigglySettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addSquiggly')?.addEventListener('click', () => {
+ pdfviewer.annotation.addAnnotation('Squiggly', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1
+ } as SquigglySettings);
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, SquigglySettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('addSquiggly')?.addEventListener('click', () => {
+ pdfviewer.annotation.addAnnotation('Squiggly', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1
+ } as SquigglySettings);
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Edit Squiggly Annotation
+
+### Edit Squiggly annotation 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.
+
+#### 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.
+
+
+
+#### Delete Squiggly annotation
+
+- Select the annotation and press Delete, or
+- Click **Delete Annotation** in the annotation toolbar.
+
+
+
+### Edit a squiggly annotation programmatically
+
+To modify an existing squiggly annotation programmatically, use the editAnnotation() method.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('editSquiggly')?.addEventListener('click', () => {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ const ann = pdfviewer.annotationCollection[i];
+ if (ann.author === 'Guest User' || ann.subject === 'Corrections') {
+ ann.color = '#ff0000';
+ ann.opacity = 0.8;
+ pdfviewer.annotation.editAnnotation(ann);
+ }
+ }
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('editSquiggly')?.addEventListener('click', () => {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ const ann = pdfviewer.annotationCollection[i];
+ if (ann.author === 'Guest User' || ann.subject === 'Corrections') {
+ ann.color = '#ff0000';
+ ann.opacity = 0.8;
+ pdfviewer.annotation.editAnnotation(ann);
+ }
+ }
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Set default properties during control initialization
+
+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.
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation);
+
+let pdfviewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ squigglySettings: { author: 'Guest User', subject: 'Corrections', color: '#00ff00', opacity: 0.9}
+});
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation);
+
+let pdfviewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ squigglySettings: { author: 'Guest User', subject: 'Corrections', color: '#00ff00', opacity: 0.9}
+});
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation 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.
+
+Refer to the following code snippet to set the default highlight settings.
+
+```html
+
+```
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, SquigglySettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+//Apply Squiggly Settings while adding individual Annotation
+document.getElementById('squiggly')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Squiggly', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1,
+ author: 'User 1',
+ color: '#ffff00',
+ opacity: 0.9
+ } as SquigglySettings);
+
+ pdfviewer.annotation.addAnnotation('Squiggly', {
+ bounds: [{ x: 107, y: 220, width: 350, height: 14 }],
+ pageNumber: 1,
+ author: 'User 2',
+ color: '#ff1010ff',
+ opacity: 0.9
+ } as SquigglySettings);
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, SquigglySettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+
+//Apply Squiggly Settings while adding individual Annotation
+document.getElementById('squiggly')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Squiggly', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1,
+ author: 'User 1',
+ color: '#ffff00',
+ opacity: 0.9
+ } as SquigglySettings);
+
+ pdfviewer.annotation.addAnnotation('Squiggly', {
+ bounds: [{ x: 107, y: 220, width: 350, height: 14 }],
+ pageNumber: 1,
+ author: 'User 2',
+ color: '#ff1010ff',
+ opacity: 0.9
+ } as SquigglySettings);
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Disable squiggly annotation
+
+Disable text markup annotations (including squiggly) using the `enableTextMarkupAnnotation` property.
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath= 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.enableTextMarkupAnnotation= false;
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath='https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.enableTextMarkupAnnotation= false;
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../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/javascript-es6/annotations/annotation-types/area-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/area-annotation.md
new file mode 100644
index 000000000..cc5b05a7c
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/area-annotation.md
@@ -0,0 +1,384 @@
+---
+layout: post
+title: Area annotation in TypeScript PDF Viewer | Syncfusion
+description: Learn to add, edit, and customize Area measurement annotations in Syncfusion TypeScript PDF Viewer with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Area annotation in TypeScript PDF Viewer
+
+Area is a measurement annotation used to measure the surface of a closed region in the PDF.
+
+
+
+## Add Area Annotation
+
+### Add area annotation via UI
+
+Use the annotation toolbar:
+- Click the **Edit Annotation** button in the PDF Viewer toolbar.
+- Click the **Measurement Annotation** dropdown.
+- Choose **Area**, then draw the region on the page.
+
+N> When in pan mode, selecting a measurement annotation switches the viewer to text select mode.
+
+
+
+### Enable area mode
+
+The PDF Viewer library allows drawing measurement annotations programmatically after enabling area mode in button clicks.
+
+```html
+
+```
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('areaMode')?.addEventListener('click', function () {
+ pdfviewer.annotationModule.setAnnotationMode('Area');
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('areaMode')?.addEventListener('click', function () {
+ pdfviewer.annotationModule.setAnnotationMode('Area');
+});
+{% endhighlight %}
+{% endtabs %}
+
+### Add an area annotation programmatically
+
+The PDF Viewer library allows adding measurement annotations programmatically using the [addAnnotation()](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#annotation) method.
+
+```html
+
+```
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, AreaSettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addAreaAnnotation')?.addEventListener('click', function () {
+ pdfviewer.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 }
+ ]
+ } as AreaSettings);
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, AreaSettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addAreaAnnotation')?.addEventListener('click', function () {
+ pdfviewer.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 }
+ ]
+ } as AreaSettings);
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Edit Area Annotation
+
+### Edit Area Annotation in UI
+
+You can select, move, and resize Area annotations directly in the viewer:
+- Select an Area 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.
+
+See the sections below for screenshots and details.
+
+#### Edit the properties of area 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.
+
+#### 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
+
+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 an existing area annotation programmatically
+
+To modify an existing area annotation programmatically, use the editAnnotation() method.
+
+Here is an example of using editAnnotation():
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+let editAreaAnnotation = document.getElementById('editAreaAnnotation');
+if (editAreaAnnotation) {
+ editAreaAnnotation.addEventListener('click', function () {
+ if (pdfviewer) {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === "Area calculation") {
+ pdfviewer.annotationCollection[i].annotationSelectorSettings.resizerShape = "Circle";
+ pdfviewer.annotationCollection[i].strokeColor = "#0000FF";
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].fillColor = "#FFFF00";
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+ }
+ });
+}
+
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+let editAreaAnnotation = document.getElementById('editAreaAnnotation');
+if (editAreaAnnotation) {
+ editAreaAnnotation.addEventListener('click', function () {
+ if (pdfviewer) {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === "Area calculation") {
+ pdfviewer.annotationCollection[i].annotationSelectorSettings.resizerShape = "Circle";
+ pdfviewer.annotationCollection[i].strokeColor = "#0000FF";
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].fillColor = "#FFFF00";
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+ }
+ });
+}
+
+{% endhighlight %}
+{% endtabs %}
+
+## Default area settings during initialization
+
+Set default [areaSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#areasettings) before creating the control.
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+
+pdfviewer.areaSettings = { fillColor: 'yellow', opacity: 0.6, strokeColor: 'orange' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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.areaSettings = { fillColor: 'yellow', opacity: 0.6, strokeColor: 'orange' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation 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.
+
+Refer to the following code snippet to set the default Area settings.
+
+```html
+
+```
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AreaSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+//Apply Area Settings while adding individual Annotation
+document.getElementById('Area')?.addEventListener('click', function () {
+ pdfviewer.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 }
+ ],
+ fillColor: 'yellow', opacity: 0.6, strokeColor: 'orange'
+ } as AreaSettings);
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AreaSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+//Apply Area Settings while adding individual Annotation
+document.getElementById('Area')?.addEventListener('click', function () {
+ pdfviewer.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 }
+ ],
+ fillColor: 'yellow', opacity: 0.6, strokeColor: 'orange'
+ } as AreaSettings);
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Editing scale ratio and unit of the area measurement annotation
+
+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
+
+* Inch
+* Millimeter
+* Centimeter
+* Point
+* Pica
+* Feet
+
+
+
+## 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,
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.measurementSettings={scaleRatio: 2, conversionUnit: 'cm', displayUnit: 'cm'};
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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.measurementSettings={scaleRatio: 2, conversionUnit: 'cm', displayUnit: 'cm'};
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../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)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/arrow-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/arrow-annotation.md
new file mode 100644
index 000000000..b12978f33
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/arrow-annotation.md
@@ -0,0 +1,323 @@
+---
+layout: post
+title: Arrow annotation in TypeScript PDF Viewer | Syncfusion
+description: Learn to add, edit, and customize Arrow annotations in Syncfusion TypeScript PDF Viewer with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Arrow annotation in TypeScript PDF Viewer
+
+Arrow is a shape annotation used to point, direct attention, or indicate flow. Common use cases include callouts, direction markers, and connectors in technical reviews.
+
+
+
+## Add Arrow Annotation
+
+### Add arrow annotation via UI
+
+Use the annotation toolbar:
+- Click the **Edit Annotation** button in the PDF Viewer toolbar.
+- 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.
+
+
+
+### Enable arrow mode
+
+The PDF Viewer library allows drawing shape annotations programmatically after enabling arrow mode in button clicks.
+
+```html
+
+```
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('arrowMode')?.addEventListener('click', () => {
+ pdfviewer.annotationModule.setAnnotationMode('Arrow');
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('arrowMode')?.addEventListener('click', () => {
+ pdfviewer.annotationModule.setAnnotationMode('Arrow');
+});
+{% endhighlight %}
+{% endtabs %}
+
+### Add an arrow annotation programmatically
+
+The PDF Viewer library allows adding shape annotations programmatically using the [addAnnotation()](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#annotation) method.
+
+```html
+
+```
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, ArrowSettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addArrowAnnotation')?.addEventListener('click', () => {
+ pdfviewer.annotation.addAnnotation('Arrow', {
+ offset: { x: 200, y: 370 },
+ pageNumber: 1,
+ vertexPoints: [{ x: 200, y: 370 }, { x: 350, y: 370 }]
+ } as ArrowSettings);
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, ArrowSettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addArrowAnnotation')?.addEventListener('click', () => {
+ pdfviewer.annotation.addAnnotation('Arrow', {
+ offset: { x: 200, y: 370 },
+ pageNumber: 1,
+ vertexPoints: [{ x: 200, y: 370 }, { x: 350, y: 370 }]
+ } as ArrowSettings);
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Edit Arrow Annotation
+
+### Edit arrow annotation in UI
+
+You can select, move, and resize Arrow annotations directly in the viewer:
+- Select an Arrow to show its handles.
+- Move: drag inside the shape to reposition it on the page.
+- Resize/reshape: drag start/end handles to adjust its length and direction.
+- Delete or access more options from the context menu.
+
+#### Editing the properties of the arrow annotation
+
+The fill color, stroke color, thickness, and opacity of arrow shape annotations can be edited using the Edit Color, Edit Stroke Color, Edit Thickness, and Edit Opacity tools in the annotation toolbar.
+
+##### Editing fill color
+
+The fill color of the annotation can be edited using the color palette provided in the Edit Color tool.
+
+
+
+#### Editing stroke color
+
+The stroke color of the annotation can be edited using the color palette provided in the Edit Stroke Color tool.
+
+
+
+#### Editing thickness
+
+The thickness of the border of the annotation can be edited using the range slider provided in the Edit Thickness tool.
+
+
+
+#### Editing opacity
+
+The opacity of the annotation can be edited using the range slider provided in the Edit Opacity tool.
+
+
+
+#### Editing the line properties
+
+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.
+
+
+
+### Edit an existing arrow annotation programmatically
+
+To modify an existing arrow annotation programmatically, use the editAnnotation() method.
+
+Here is an example of using editAnnotation():
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('editArrowAnnotation')?.addEventListener('click', () => {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Arrow') {
+ pdfviewer.annotationCollection[i].annotationSelectorSettings.resizerShape = 'Circle';
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].fillColor = '#FFFF00';
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('editArrowAnnotation')?.addEventListener('click', () => {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Arrow') {
+ pdfviewer.annotationCollection[i].annotationSelectorSettings.resizerShape = 'Circle';
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].fillColor = '#FFFF00';
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Default arrow settings during initialization
+
+Set default [arrowSettings](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/index-default#arrowsettings) before creating the control.
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+
+pdfviewer.arrowSettings = { fillColor: 'green', opacity: 0.6, strokeColor: 'blue' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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.arrowSettings = { fillColor: 'green', opacity: 0.6, strokeColor: 'blue' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation 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.
+
+Refer to the following code snippet to set the default arrow settings.
+
+```html
+
+```
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, ArrowSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+//Apply Arrow Settings while adding individual Annotation
+document.getElementById('arrow')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Arrow', {
+ offset: { x: 200, y: 230 },
+ pageNumber: 1,
+ vertexPoints: [{ x: 200, y: 230 }, { x: 350, y: 230 }],
+ fillColor:'#ff1010ff',
+ strokeColor:'#fff000',
+ opacity:0.9,
+ author: 'User 1',
+ thickness: 1
+ } as ArrowSettings);
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, ArrowSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+//Apply Arrow Settings while adding individual Annotation
+document.getElementById('arrow')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Arrow', {
+ offset: { x: 200, y: 230 },
+ pageNumber: 1,
+ vertexPoints: [{ x: 200, y: 230 }, { x: 350, y: 230 }],
+ fillColor:'#ff1010ff',
+ strokeColor:'#fff000',
+ opacity:0.9,
+ author: 'User 1',
+ thickness: 1
+ } as ArrowSettings);
+});
+{% 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.
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../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)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/circle-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/circle-annotation.md
new file mode 100644
index 000000000..3b584f945
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/circle-annotation.md
@@ -0,0 +1,327 @@
+---
+layout: post
+title: Circle annotation in TypeScript PDF Viewer | Syncfusion
+description: Learn to add, edit, and customize Circle annotations in Syncfusion TypeScript PDF Viewer with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Circle annotation in TypeScript PDF Viewer
+
+Circle is a shape annotation used to highlight circular regions or draw emphasis bubbles.
+
+
+
+## Add Circle Annotation
+
+### Add circle annotation via UI
+
+Use the annotation toolbar:
+- Click the **Edit Annotation** button in the PDF Viewer toolbar.
+- Open the **Shape Annotation** dropdown.
+- Choose **Circle**, then draw on the page.
+
+N> When in pan mode, selecting a shape annotation switches the viewer to text select mode.
+
+
+
+### Enable circle mode
+
+The PDF Viewer library allows drawing Circle annotations programmatically after enabling Circle mode in button clicks.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('circleMode')?.addEventListener('click', () => {
+ pdfviewer.annotationModule.setAnnotationMode('Circle');
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('circleMode')?.addEventListener('click', () => {
+ pdfviewer.annotationModule.setAnnotationMode('Circle');
+});
+{% endhighlight %}
+{% endtabs %}
+
+#### Exit circle mode
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Common" %}
+document.getElementById('setNone')?.addEventListener('click', () => {
+ pdfviewer.annotationModule.setAnnotationMode('None');
+});
+{% endhighlight %}
+{% endtabs %}
+
+### Add a circle annotation programmatically
+
+Add shape annotations programmatically using the [addAnnotation()](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#annotation) method.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, CircleSettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addCircleAnnotation')?.addEventListener('click', () => {
+ pdfviewer.annotation.addAnnotation('Circle', {
+ offset: { x: 200, y: 620 },
+ pageNumber: 1,
+ width: 90,
+ height: 90
+ } as CircleSettings);
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, CircleSettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('addCircleAnnotation')?.addEventListener('click', () => {
+ pdfviewer.annotation.addAnnotation('Circle', {
+ offset: { x: 200, y: 620 },
+ pageNumber: 1,
+ width: 90,
+ height: 90
+ } as CircleSettings);
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Edit Circle Annotation
+
+### Edit circle annotation in UI
+
+You can select, move, and resize Circle annotations directly in the viewer:
+- Select a Circle to show its handles.
+- Move: drag inside the shape to reposition it on the page.
+- Resize: drag the corner handles to adjust its diameter.
+- Delete or access more options from the context menu.
+
+#### Editing the properties of the circle annotation
+
+The fill color, stroke color, thickness, and opacity of circle shape annotations can be edited using the Edit Color, Edit Stroke Color, Edit Thickness, and Edit Opacity tools in the annotation toolbar.
+
+##### Editing fill color
+
+The fill color of the annotation can be edited using the color palette provided in the Edit Color tool.
+
+
+
+##### Editing stroke color
+
+The stroke color of the annotation can be edited using the color palette provided in the Edit Stroke Color tool.
+
+
+
+##### Editing thickness
+
+The thickness of the border of the annotation can be edited using the range slider provided in the Edit Thickness tool.
+
+
+
+##### Editing opacity
+
+The opacity of the annotation can be edited using the range slider provided in the Edit Opacity tool.
+
+
+
+### Edit an existing circle annotation programmatically
+
+Use editAnnotation on items from annotationCollection.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('editCircleAnnotation')?.addEventListener('click', () => {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Circle') {
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].fillColor = '#FFFF00';
+ pdfviewer.annotationCollection[i].annotationSelectorSettings.resizerShape = 'Circle';
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('editCircleAnnotation')?.addEventListener('click', () => {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Circle') {
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].fillColor = '#FFFF00';
+ pdfviewer.annotationCollection[i].annotationSelectorSettings.resizerShape = 'Circle';
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Default circle settings during initialization
+
+Set default [circleSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#circlesettings) before creating the control.
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.circleSettings = { fillColor: 'orange', opacity: 0.6, strokeColor: 'pink' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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.circleSettings = { fillColor: 'orange', opacity: 0.6, strokeColor: 'pink' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation 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.
+
+Refer to the following code snippet to set the default Circle settings.
+
+```html
+
+```
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, CircleSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+//Apply Circle Settings while adding individual Annotation
+document.getElementById('Circle')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Circle', {
+ offset: { x: 200, y: 480 },
+ pageNumber: 1,
+ width: 150,
+ height: 75,
+ opacity: 0.5,
+ strokeColor: '#FF0000',
+ fillColor: '#000fff#',
+ author: 'User1'
+ } as CircleSettings);
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, CircleSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+//Apply Circle Settings while adding individual Annotation
+document.getElementById('Circle')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Circle', {
+ offset: { x: 200, y: 480 },
+ pageNumber: 1,
+ width: 150,
+ height: 75,
+ opacity: 0.5,
+ strokeColor: '#FF0000',
+ fillColor: '#000fff#',
+ author: 'User1'
+ } as CircleSettings);
+});
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../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)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/distance-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/distance-annotation.md
new file mode 100644
index 000000000..a73c23028
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/distance-annotation.md
@@ -0,0 +1,353 @@
+---
+layout: post
+title: Distance annotation in TypeScript PDF Viewer | Syncfusion
+description: Learn to add, edit, and customize Distance measurement annotations in Syncfusion TypeScript PDF Viewer with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Distance annotation in TypeScript PDF Viewer
+
+Distance is a measurement annotation used to measure the length between two points in the PDF.
+
+
+
+## Add Distance Annotation
+
+### Add distance annotation via UI
+
+Use the annotation toolbar:
+- Click the **Edit Annotation** button in the PDF Viewer toolbar.
+- Open the **Measurement Annotation** dropdown.
+- Choose **Distance**, then draw on the page.
+
+N> When in pan mode, selecting a measurement annotation switches the viewer to text select mode.
+
+
+
+### Enable distance mode
+
+The PDF Viewer component allows drawing Distance annotations programmatically after enabling Distance mode in button clicks.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('distanceMode')?.addEventListener('click', () => {
+ pdfviewer.annotationModule.setAnnotationMode('Distance');
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('distanceMode')?.addEventListener('click', () => {
+ pdfviewer.annotationModule.setAnnotationMode('Distance');
+});
+{% endhighlight %}
+{% endtabs %}
+
+#### Exit distance mode
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Common" %}
+document.getElementById('setNone')?.addEventListener('click', () => {
+ pdfviewer.annotationModule.setAnnotationMode('None');
+});
+{% endhighlight %}
+{% endtabs %}
+
+### Add a distance annotation programmatically
+
+Add measurement annotations programmatically using the [addAnnotation()](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#annotation) method.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, DistanceSettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addDistanceAnnotation')?.addEventListener('click', () => {
+ pdfviewer.annotation.addAnnotation('Distance', {
+ offset: { x: 200, y: 230 },
+ pageNumber: 1,
+ vertexPoints: [{ x: 200, y: 230 }, { x: 350, y: 230 }]
+ } as DistanceSettings);
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, DistanceSettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('addDistanceAnnotation')?.addEventListener('click', () => {
+ pdfviewer.annotation.addAnnotation('Distance', {
+ offset: { x: 200, y: 230 },
+ pageNumber: 1,
+ vertexPoints: [{ x: 200, y: 230 }, { x: 350, y: 230 }]
+ } as DistanceSettings);
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Edit Distance Annotation
+
+### Edit distance annotation in UI
+
+You can select, move, and resize Distance annotations directly in the viewer:
+- Select a Distance measurement to show its handles.
+- Move: drag the line to reposition it on the page.
+- Resize: drag the end handles to adjust its length.
+- Delete or access more options from the context menu.
+
+#### Edit the properties of area 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.
+
+#### 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
+
+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 an existing distance annotation programmatically
+
+Use editAnnotation on items from annotationCollection.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('editDistanceAnnotation')?.addEventListener('click', () => {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Distance calculation') {
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].opacity = 0.8;
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('editDistanceAnnotation')?.addEventListener('click', () => {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Distance calculation') {
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].opacity = 0.8;
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Default distance settings during initialization
+
+Set default [distanceSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#distancesettings) before creating the control.
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.distanceSettings = { fillColor: 'blue', opacity: 0.6, strokeColor: 'green' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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.distanceSettings = { fillColor: 'blue', opacity: 0.6, strokeColor: 'green' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation 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.
+
+Refer to the following code snippet to set the default Distance settings.
+
+```html
+
+```
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, DistanceSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+//Apply Distance Settings while adding individual Annotation
+document.getElementById('Ink')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Distance', {
+ offset: { x: 200, y: 230 },
+ pageNumber: 1,
+ vertexPoints: [{ x: 200, y: 230 }, { x: 350, y: 230 }],
+ fillColor: 'blue', opacity: 0.6, strokeColor: 'green'
+ } as DistanceSettings);
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, DistanceSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+//Apply Distance Settings while adding individual Annotation
+document.getElementById('Ink')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Distance', {
+ offset: { x: 200, y: 230 },
+ pageNumber: 1,
+ vertexPoints: [{ x: 200, y: 230 }, { x: 350, y: 230 }],
+ fillColor: 'blue', opacity: 0.6, strokeColor: 'green'
+ } as DistanceSettings);
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Scale ratio and units
+
+You can modify scale ratio and units using the Scale Ratio option in the context menu.
+
+
+
+Supported units:
+- Inch, Millimeter, Centimeter, Point, Pica, Feet
+
+
+
+Set defaults via measurementSettings:
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.measurementSettings = { scaleRatio: 2, conversionUnit: 'cm', displayUnit: 'cm' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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.measurementSettings = { scaleRatio: 2, conversionUnit: 'cm', displayUnit: 'cm' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../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)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/free-text-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/free-text-annotation.md
new file mode 100644
index 000000000..082b2013d
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/free-text-annotation.md
@@ -0,0 +1,366 @@
+---
+layout: post
+title: Free text annotation in TypeScript PDF Viewer | Syncfusion
+description: Learn to add, edit, delete, and customize Free Text annotations in Syncfusion TypeScript PDF Viewer, with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Free text annotation in TypeScript PDF Viewer
+
+Free Text is a text box annotation used to place formatted text anywhere on the page for notes, labels, or callouts.
+
+
+
+## Add Free Text annotation
+
+### Add Free Text annotation via UI
+
+Use the annotation toolbar:
+- 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.
+
+
+
+### Switch to Free Text mode
+
+The PDF Viewer component allows drawing Distance annotations programmatically after enabling Distance mode in button clicks.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addFreeTextAnnotation')?.addEventListener('click', () => {
+ pdfviewer.annotationModule.setAnnotationMode('FreeText');
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('addFreeTextAnnotation')?.addEventListener('click', () => {
+ pdfviewer.annotationModule.setAnnotationMode('FreeText');
+});
+{% endhighlight %}
+{% endtabs %}
+
+### Add Free Text annotation programmatically
+
+Use [addAnnotation()](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#annotation) to programmatically create Free Text.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, FreeTextSettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addFreeTextProgram')?.addEventListener('click', () => {
+ pdfviewer.annotation.addAnnotation('FreeText', {
+ offset: { x: 120, y: 80 },
+ fontSize: 16,
+ fontFamily: 'Helvetica',
+ pageNumber: 1,
+ width: 200,
+ height: 40,
+ isLock: false,
+ defaultText: 'Syncfusion'
+ } as FreeTextSettings);
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, FreeTextSettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('addFreeTextProgram')?.addEventListener('click', () => {
+ pdfviewer.annotation.addAnnotation('FreeText', {
+ offset: { x: 120, y: 80 },
+ fontSize: 16,
+ fontFamily: 'Helvetica',
+ pageNumber: 1,
+ width: 200,
+ height: 40,
+ isLock: false,
+ defaultText: 'Syncfusion'
+ } as FreeTextSettings);
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Edit Free Text annotation
+
+### Edit Free Text Annotation in UI
+
+You can select, move, and resize FreeText annotations directly in the viewer:
+- Select a Free Text annotation to display its bounding box and resize handles.
+- Move: drag the annotation box to reposition it on the page.
+- Resize: drag any corner or edge handle to adjust its size.
+- Delete: press the Delete key or use the context menu to remove the annotation.
+
+Use the toolbar to change the appearance of the selected Free Text annotation:
+- Font Family, Font Size, Font Style (Bold, Italic, Underline)
+- Font Color and Text Alignment
+- Fill Color (background) and Stroke Color (border)
+- Border Thickness and Opacity
+
+See the sections below for screenshots and details.
+
+#### 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.
+
+#### Edit font family
+
+Edit the font family by selecting a font in the Font Family tool.
+
+
+
+#### Edit font size
+
+Edit the font size by selecting a size in the Font Size tool.
+
+
+
+#### Edit font color
+
+Edit the font color using the color palette in the Font Color tool.
+
+
+
+#### Edit text alignment
+
+Align text by selecting an option from the Text Align tool.
+
+
+
+#### Edit text styles
+
+Edit text styles by selecting options in the Font Style tool.
+
+
+
+#### Edit fill color
+
+Edit the fill color using the color palette in the Edit Color tool.
+
+
+
+#### Edit stroke color
+
+Edit the stroke color using the color palette in the Edit Stroke Color tool.
+
+
+
+#### Edit thickness
+
+Edit border thickness using the range slider in the Edit Thickness tool.
+
+
+
+#### Edit opacity
+
+Edit opacity using the range slider in the Edit Opacity tool.
+
+
+
+### Edit Free Text annotation programmatically
+
+Use editAnnotation to update existing Free Text content.
+
+```html
+
+```
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('changeContent')?.addEventListener('click', () => {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Text Box') {
+ pdfviewer.annotationCollection[i].dynamicText = 'syncfusion';
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('changeContent')?.addEventListener('click', () => {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Text Box') {
+ pdfviewer.annotationCollection[i].dynamicText = 'syncfusion';
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% endtabs %}
+
+
+
+
+
+## Default Free Text settings during initialization
+
+Set default Free Text properties before creating the control using freeTextSettings.
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.freeTextSettings = { fillColor: 'green', borderColor: 'blue', fontColor: 'yellow' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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.freeTextSettings = { fillColor: 'green', borderColor: 'blue', fontColor: 'yellow' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation 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.
+
+Refer to the following code snippet to set the default FreeText settings.
+
+```html
+
+```
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, FreeTextSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+//Apply FreeText Settings while adding individual Annotation
+document.getElementById('FreeText')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('FreeText', {
+ offset: { x: 120, y: 80 },
+ fontSize: 16,
+ fontFamily: 'Helvetica',
+ pageNumber: 1,
+ width: 200,
+ height: 40,
+ isLock: false,
+ defaultText: 'Syncfusion',
+ fillColor: 'green',
+ borderColor: 'blue',
+ fontColor: 'yellow'
+ } as FreeTextSettings);
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, FreeTextSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+//Apply FreeText Settings while adding individual Annotation
+document.getElementById('FreeText')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('FreeText', {
+ offset: { x: 120, y: 80 },
+ fontSize: 16,
+ fontFamily: 'Helvetica',
+ pageNumber: 1,
+ width: 200,
+ height: 40,
+ isLock: false,
+ defaultText: 'Syncfusion',
+ fillColor: 'green',
+ borderColor: 'blue',
+ fontColor: 'yellow'
+ } as FreeTextSettings);
+});
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../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)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/highlight-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/highlight-annotation.md
new file mode 100644
index 000000000..b3ff3d697
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/highlight-annotation.md
@@ -0,0 +1,393 @@
+---
+layout: post
+title: Highlight annotation in TypeScript PDF Viewer | Syncfusion
+description: Learn to add, edit, delete, and customize Highlight text markup annotations in Syncfusion TypeScript PDF Viewer, with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Highlight annotation in TypeScript PDF Viewer
+
+The PDF Viewer provides options to add, edit, and delete Highlight annotations on text. You can add highlights via the UI (context menu or annotation toolbar) and programmatically. You can also customize color, opacity, author/subject, and default settings, and use undo/redo, save, print, or disable highlights as needed.
+
+
+
+## Add Highlight Annotation
+
+### Add highlight annotation via UI
+
+You can add highlights in two ways:
+
+1. Using the context menu
+- Select text in the PDF document and right-click it.
+- Choose **Highlight** in the context menu.
+
+
+
+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**.
+
+
+
+N> When pan mode is active and a text markup mode is entered, the PDF Viewer switches to text selection mode to enable selection.
+
+### Enable Highlight Mode
+
+The PDF Viewer component allows add highlight annotations programmatically after enabling Highlight mode in button clicks.
+
+```html
+
+
+```
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation,ThumbnailView, BookmarkView,
+ TextSelection, Annotation, FormDesigner, FormFields } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject( Toolbar,Magnification, Navigation, LinkAnnotation,ThumbnailView,
+ BookmarkView, TextSelection, Annotation, FormDesigner, FormFields);
+
+let pdfviewer: PdfViewer = new PdfViewer({
+ documentPath:'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl:"https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib"
+});
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('set').addEventListener('click', ()=> {
+ pdfviewer.annotation.setAnnotationMode('Highlight');
+});
+{% endhighlight %}
+{% endtabs %}
+
+N> To set up the **server-backed PDF Viewer**, add the below `serviceUrl` in the `index.ts` file: `pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';`
+
+{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es6/text-markup-annotation/highlight-mode-cs1/index.html" %}
+
+#### Exit Highlight mode
+
+To switch back to normal mode from highlight mode:
+
+```html
+
+
+
+
+```
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation,ThumbnailView, BookmarkView,
+ TextSelection, Annotation, FormDesigner, FormFields } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject( Toolbar,Magnification, Navigation, LinkAnnotation,ThumbnailView,
+ BookmarkView, TextSelection, Annotation, FormDesigner, FormFields);
+
+let pdfviewer: PdfViewer = new PdfViewer({
+ documentPath:'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl:"https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib"
+});
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('set').addEventListener('click', ()=> {
+ pdfviewer.annotation.setAnnotationMode('Highlight');
+});
+
+document.getElementById('setNone').addEventListener('click', ()=> {
+ pdfviewer.annotation.setAnnotationMode('None');
+});
+{% endhighlight %}
+{% endtabs %}
+
+N> To set up the **server-backed PDF Viewer**, add the below `serviceUrl` in the `index.ts` file:
+`pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';`
+
+{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es6/text-markup-annotation/highlight-normal-mode-cs1/index.html" %}
+
+### Add highlight annotation programmatically
+
+Programmatically add highlights using the [addAnnotation](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#addannotation) method.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, HighlightSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('highlight')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Highlight', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1
+ } as HighlightSettings);
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, HighlightSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('highlight')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Highlight', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1
+ } as HighlightSettings);
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Edit Highlight Annotation
+
+### Edit highlight annotation in UI
+
+You can 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.
+
+#### 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.
+
+
+
+#### Delete highlight annotation
+- Select the annotation and press Delete, or
+- Click **Delete Annotation** in the annotation toolbar.
+
+
+
+### Edit highlight annotation programmatically
+
+Modify an existing highlight programmatically using `editAnnotation()`.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('editHighlight')?.addEventListener('click', () => {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ const annot = pdfviewer.annotationCollection[i];
+ if (annot.textMarkupAnnotationType === 'Highlight') {
+ annot.color = '#000fff';
+ annot.opacity = 0.8;
+ pdfviewer.annotation.editAnnotation(annot);
+ break;
+ }
+ }
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('editHighlight')?.addEventListener('click', () => {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ const annot = pdfviewer.annotationCollection[i];
+ if (annot.textMarkupAnnotationType === 'Highlight') {
+ annot.color = '#000fff';
+ annot.opacity = 0.8;
+ pdfviewer.annotation.editAnnotation(annot);
+ break;
+ }
+ }
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Set default properties during control initialization
+
+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.
+
+Refer to the following code snippet to set the default highlight settings.
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation,ThumbnailView,BookmarkView,
+TextSelection, Annotation} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar,Magnification,Navigation, LinkAnnotation,ThumbnailView,BookmarkView,
+TextSelection, Annotation);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.highlightSettings= {author: 'Guest User', subject: 'Important', color: '#ffff00', opacity: 0.9};
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation,ThumbnailView,BookmarkView,
+TextSelection, Annotation} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar,Magnification,Navigation, LinkAnnotation,ThumbnailView,BookmarkView,
+TextSelection, Annotation);
+
+let pdfviewer: PdfViewer = new PdfViewer({ documentPath:'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ });
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.highlightSettings= {author: 'Guest User', subject: 'Important', color: '#ffff00', opacity: 0.9};
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% endtabs %}
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation 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.
+
+Refer to the following code snippet to set the default highlight settings.
+
+```html
+
+```
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, HighlightSettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+//Apply Highlight Settings while adding individual Annotation
+document.getElementById('highlight')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Highlight', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1,
+ author: 'User 1',
+ color: '#ffff00',
+ opacity: 0.9
+ } as HighlightSettings);
+
+ pdfviewer.annotation.addAnnotation('Highlight', {
+ bounds: [{ x: 107, y: 220, width: 350, height: 14 }],
+ pageNumber: 1,
+ author: 'User 2',
+ color: '#ff1010ff',
+ opacity: 0.9
+ } as HighlightSettings);
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, HighlightSettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+
+//Apply Highlight Settings while adding individual Annotation
+document.getElementById('highlight')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Highlight', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1,
+ author: 'User 1',
+ color: '#ffff00',
+ opacity: 0.9
+ } as HighlightSettings);
+
+ pdfviewer.annotation.addAnnotation('Highlight', {
+ bounds: [{ x: 107, y: 220, width: 350, height: 14 }],
+ pageNumber: 1,
+ author: 'User 2',
+ color: '#ff1010ff',
+ opacity: 0.9
+ } as HighlightSettings);
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Disable highlight annotation
+
+Disable text markup annotations (including highlight) using the `enableTextMarkupAnnotation` property.
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation,ThumbnailView,BookmarkView,
+TextSelection, Annotation} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar,Magnification,Navigation, LinkAnnotation,ThumbnailView,BookmarkView,
+TextSelection, Annotation);
+
+let pdfviewer: PdfViewer = new PdfViewer({ documentPath:'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf'});
+pdfviewer.enableTextMarkupAnnotation= false;
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation,ThumbnailView,BookmarkView,
+TextSelection, Annotation} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar,Magnification,Navigation, LinkAnnotation,ThumbnailView,BookmarkView,
+TextSelection, Annotation);
+
+let pdfviewer: PdfViewer = new PdfViewer({ documentPath:'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf'});
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.enableTextMarkupAnnotation= false;
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../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)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/ink-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/ink-annotation.md
new file mode 100644
index 000000000..3efd32218
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/ink-annotation.md
@@ -0,0 +1,320 @@
+---
+layout: post
+title: Ink (freehand) annotation in TypeScript PDF Viewer | Syncfusion
+description: Learn to add, edit, delete, and set defaults for Ink (freehand) annotations in Syncfusion TypeScript PDF Viewer with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Ink (freehand) annotation in TypeScript PDF Viewer
+
+Ink is a freehand drawing annotation used to sketch, sign, or mark up content.
+
+
+
+## Add Ink Annotation
+
+### 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.
+- 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.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, InkAnnotationSettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+const pdfviewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+});
+
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addInkAnnotation')?.addEventListener('click', () => {
+ pdfviewer.annotationModule.setAnnotationMode('Ink');
+});
+{% endhighlight %}
+{% endtabs %}
+
+#### Exit ink mode
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Common" %}
+document.getElementById('setNone')?.addEventListener('click', () => {
+ pdfviewer.annotationModule.setAnnotationMode('None');
+});
+{% endhighlight %}
+{% endtabs %}
+
+### Add ink annotation programmatically
+
+Use addAnnotation to programmatically create an Ink annotation.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, InkAnnotationSettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addInkAnnotationProgram')?.addEventListener('click', function () {
+ pdfviewer.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}]'
+ } as InkAnnotationSettings);
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, InkAnnotationSettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('addInkAnnotationProgram')?.addEventListener('click', function () {
+ pdfviewer.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}]'
+ } as InkAnnotationSettings);
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Edit Ink Annotation
+
+### Edit ink annotation in UI
+
+You can 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.
+- Delete or access more options from the context menu.
+
+#### 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.
+
+#### Edit stroke color
+
+Edit 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.
+
+
+
+#### Edit opacity
+
+Edit opacity using the range slider in the Edit Opacity tool.
+
+
+
+### Edit an existing ink annotation programmatically
+
+Use editAnnotation to modify properties and bounds of an existing ink annotation.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('editInkAnnotation')?.addEventListener('click', function () {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].shapeAnnotationType === 'Ink') {
+ const width = pdfviewer.annotationCollection[i].bounds.width;
+ const height = pdfviewer.annotationCollection[i].bounds.height;
+ pdfviewer.annotationCollection[i].bounds = { x: 100, y: 100, width, height };
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].annotationSelectorSettings.resizerShape = 'Circle';
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('editInkAnnotation')?.addEventListener('click', function () {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].shapeAnnotationType === 'Ink') {
+ const width = pdfviewer.annotationCollection[i].bounds.width;
+ const height = pdfviewer.annotationCollection[i].bounds.height;
+ pdfviewer.annotationCollection[i].bounds = { x: 100, y: 100, width, height };
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].annotationSelectorSettings.resizerShape = 'Circle';
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% endtabs %}
+
+
+
+## Default ink settings during initialization
+
+Set defaults using inkAnnotationSettings.
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib',
+ inkAnnotationSettings: { author: 'Syncfusion', strokeColor: 'green', thickness: 3, opacity: 0.6 }
+});
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/',
+ inkAnnotationSettings: { author: 'Syncfusion', strokeColor: 'green', thickness: 3, opacity: 0.6 }
+});
+
+pdfviewer.appendTo('#PdfViewer');
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation 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.
+
+Refer to the following code snippet to set the default Ink settings.
+
+```html
+
+```
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, InkAnnotationSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+//Apply Ink Settings while adding individual Annotation
+document.getElementById('Ink')?.addEventListener('click', function () {
+ pdfviewer.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}]',
+ author: 'Syncfusion', strokeColor: 'green', thickness: 3, opacity: 0.6
+ } as InkAnnotationSettings);
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, InkAnnotationSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.serviceUrl= 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/',
+pdfviewer.appendTo('#PdfViewer');
+//Apply Ink Settings while adding individual Annotation
+document.getElementById('Ink')?.addEventListener('click', function () {
+ pdfviewer.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}]',
+ author: 'Syncfusion', strokeColor: 'green', thickness: 3, opacity: 0.6
+ } as InkAnnotationSettings);
+});
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../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)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/line-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/line-annotation.md
new file mode 100644
index 000000000..8cd036cc5
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/line-annotation.md
@@ -0,0 +1,340 @@
+---
+layout: post
+title: Line annotation in TypeScript PDF Viewer | Syncfusion
+description: Learn to add, edit, and customize Line annotations in Syncfusion TypeScript PDF Viewer with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Line annotation in TypeScript PDF Viewer
+
+Line is a shape annotation used to mark straight connections or callouts. Common use cases include underline-like rulers, connectors, and measurement guides.
+
+
+
+## Add Line Annotation
+
+### Add line annotation via UI
+
+Use the annotation toolbar:
+- Click the **Edit Annotation** button in the PDF Viewer toolbar.
+- Open the **Shape Annotation** dropdown.
+- Choose **Line**, then draw on the page.
+
+N> When in pan mode, selecting a shape annotation switches the viewer to text select mode.
+
+
+
+### Enable line mode
+
+The PDF Viewer component allows to add line annotations programmatically after enabling line mode in button clicks.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('lineMode')?.addEventListener('click', () => {
+ pdfviewer.annotationModule.setAnnotationMode('Line');
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('lineMode')?.addEventListener('click', () => {
+ pdfviewer.annotationModule.setAnnotationMode('Line');
+});
+{% endhighlight %}
+{% endtabs %}
+
+#### Exit line mode
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Common" %}
+document.getElementById('setNone')?.addEventListener('click', () => {
+ pdfviewer.annotationModule.setAnnotationMode('None');
+});
+{% endhighlight %}
+{% endtabs %}
+
+### Add a line annotation programmatically
+
+Use the addAnnotation method with Line settings.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, LineSettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addLineAnnotation')?.addEventListener('click', () => {
+ pdfviewer.annotation.addAnnotation('Line', {
+ offset: { x: 200, y: 230 },
+ pageNumber: 1,
+ vertexPoints: [{ x: 200, y: 230 }, { x: 350, y: 230 }]
+ } as LineSettings);
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, LineSettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('addLineAnnotation')?.addEventListener('click', () => {
+ pdfviewer.annotation.addAnnotation('Line', {
+ offset: { x: 200, y: 230 },
+ pageNumber: 1,
+ vertexPoints: [{ x: 200, y: 230 }, { x: 350, y: 230 }]
+ } as LineSettings);
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Edit Line Annotation
+
+### 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.
+- 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.
+
+Use the toolbar to change appearance:
+- Edit Color, Edit Stroke Color, Edit Thickness, and Edit Opacity tools.
+
+
+
+#### 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.
+
+#### Editing fill color
+
+The fill color of the annotation can be edited using the color palette provided in the Edit Color tool.
+
+
+
+#### Editing stroke color
+
+The stroke color of the annotation can be edited using the color palette provided in the Edit Stroke Color tool.
+
+
+
+#### Editing thickness
+
+The thickness of the border of the annotation can be edited using the range slider provided in the Edit Thickness tool.
+
+
+
+#### Editing opacity
+
+The opacity of the annotation can be edited using the range slider provided in the Edit Opacity tool.
+
+
+
+#### Editing the line properties
+
+Line 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.
+
+
+
+### Edit an existing line annotation programmatically
+
+To modify an existing line annotation programmatically, use the editAnnotation() method.
+
+Here is an example of using editAnnotation():
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('editLineAnnotation')?.addEventListener('click', () => {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Line') {
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].annotationSelectorSettings.resizerShape = 'Circle';
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('editLineAnnotation')?.addEventListener('click', () => {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Line') {
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].annotationSelectorSettings.resizerShape = 'Circle';
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Default line settings during initialization
+
+Set default properties before creating the control using lineSettings.
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.lineSettings = { fillColor: 'blue', opacity: 0.6, strokeColor: 'green' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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.lineSettings = { fillColor: 'blue', opacity: 0.6, strokeColor: 'green' };
+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.
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples/tree/master)
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation 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.
+
+Refer to the following code snippet to set the default line settings.
+
+```html
+
+```
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, LineSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+pdfviewer.lineSettings={opacity:0.5};
+//Apply line Settings while adding individual Annotation
+document.getElementById('line')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Line', {
+ offset: { x: 200, y: 230 },
+ pageNumber: 1,
+ vertexPoints: [{ x: 200, y: 230 }, { x: 350, y: 230 }],
+ fillColor:'#ff1010ff',
+ strokeColor:'#fff000',
+ opacity:0.9,
+ author: 'User 1',
+ thickness: 1
+ } as LineSettings);
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, LineSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+
+//Apply line Settings while adding individual Annotation
+document.getElementById('line')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Line', {
+ offset: { x: 200, y: 230 },
+ pageNumber: 1,
+ vertexPoints: [{ x: 200, y: 230 }, { x: 350, y: 230 }],
+ fillColor:'#ff1010ff',
+ strokeColor:'#fff000',
+ opacity:0.9,
+ author: 'User 1',
+ thickness: 1
+ } as LineSettings);
+});
+{% endhighlight %}
+{% endtabs %}
+
+## See also
+
+- [Annotation Overview](../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)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/perimeter-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/perimeter-annotation.md
new file mode 100644
index 000000000..a7263ccef
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/perimeter-annotation.md
@@ -0,0 +1,371 @@
+---
+layout: post
+title: Perimeter annotation in TypeScript PDF Viewer | Syncfusion
+description: Learn to add, edit, and customize Perimeter measurement annotations in Syncfusion TypeScript PDF Viewer with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Perimeter annotation in TypeScript PDF Viewer
+
+Perimeter is a measurement annotation used to measure the length around a closed polyline in the PDF.
+
+
+
+## Add Perimeter Annotation
+
+### 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.
+
+N> When in pan mode, selecting a measurement annotation 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.
+
+```html
+
+```
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('perimeterMode')?.addEventListener('click', function () {
+ pdfviewer.annotationModule.setAnnotationMode('Perimeter');
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('perimeterMode')?.addEventListener('click', function () {
+ pdfviewer.annotationModule.setAnnotationMode('Perimeter');
+});
+{% endhighlight %}
+{% endtabs %}
+
+### 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.
+
+```html
+
+```
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, PerimeterSettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addPerimeterAnnotation')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Perimeter', {
+ offset: { x: 200, y: 350 },
+ pageNumber: 1,
+ vertexPoints: [{ x: 200, y: 350 }, { x: 285, y: 350 }, { x: 286, y: 412 }]
+ } as PerimeterSettings);
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, PerimeterSettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addPerimeterAnnotation')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Perimeter', {
+ offset: { x: 200, y: 350 },
+ pageNumber: 1,
+ vertexPoints: [{ x: 200, y: 350 }, { x: 285, y: 350 }, { x: 286, y: 412 }]
+ } as PerimeterSettings);
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Edit Perimeter Annotation
+
+### Edit perimeter annotation in UI
+
+You can select, move, and resize Perimeter annotations directly in the viewer:
+- 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.
+- Delete or access more options from the context menu.
+
+#### Edit the properties of Perimeter 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.
+
+#### 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
+
+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 an existing perimeter annotation programmatically
+
+To modify an existing perimeter annotation programmatically, use the editAnnotation() method.
+
+Here is an example of using editAnnotation():
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+let editPerimeterAnnotation = document.getElementById('editPerimeterAnnotation');
+if (editPerimeterAnnotation) {
+ editPerimeterAnnotation.addEventListener('click', function () {
+ if (pdfviewer) {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === "Perimeter calculation") {
+ pdfviewer.annotationCollection[i].annotationSelectorSettings.resizerShape = "Circle";
+ pdfviewer.annotationCollection[i].strokeColor = "#0000FF";
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].fillColor = "#FFFF00";
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+ }
+ });
+}
+
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+let editPerimeterAnnotation = document.getElementById('editPerimeterAnnotation');
+if (editPerimeterAnnotation) {
+ editPerimeterAnnotation.addEventListener('click', function () {
+ if (pdfviewer) {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === "Perimeter calculation") {
+ pdfviewer.annotationCollection[i].annotationSelectorSettings.resizerShape = "Circle";
+ pdfviewer.annotationCollection[i].strokeColor = "#0000FF";
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].fillColor = "#FFFF00";
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+ }
+ });
+}
+
+{% endhighlight %}
+{% endtabs %}
+
+## Default perimeter settings during initialization
+
+Set default perimeterSettings before creating the control.
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+
+pdfviewer.perimeterSettings = { fillColor: 'green', opacity: 0.6, strokeColor: 'blue' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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.perimeterSettings = { fillColor: 'green', opacity: 0.6, strokeColor: 'blue' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation 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.
+
+Refer to the following code snippet to set the default Perimeter settings.
+
+```html
+
+```
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PerimeterSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+//Apply Perimeter Settings while adding individual Annotation
+document.getElementById('Perimeter')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Perimeter', {
+ offset: { x: 200, y: 350 },
+ pageNumber: 1,
+ vertexPoints: [{ x: 200, y: 350 }, { x: 285, y: 350 }, { x: 286, y: 412 }],
+ fillColor: 'green', opacity: 0.6, strokeColor: 'blue'
+ } as PerimeterSettings);
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PerimeterSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+//Apply Perimeter Settings while adding individual Annotation
+document.getElementById('Perimeter')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Perimeter', {
+ offset: { x: 200, y: 350 },
+ pageNumber: 1,
+ vertexPoints: [{ x: 200, y: 350 }, { x: 285, y: 350 }, { x: 286, y: 412 }],
+ fillColor: 'green', opacity: 0.6, strokeColor: 'blue'
+ } as PerimeterSettings);
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Editing scale ratio and unit of the perimeter measurement annotation
+
+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
+
+- Inch
+- Millimeter
+- Centimeter
+- Point
+- Pica
+- Feet
+
+
+
+## Setting default scale ratio settings during control initialization
+
+The properties of scale ratio for measurement annotation can be set before creating the control using measurementSettings as shown in the following code snippet,
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.measurementSettings={scaleRatio: 2, conversionUnit: 'cm', displayUnit: 'cm'};
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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.measurementSettings={scaleRatio: 2, conversionUnit: 'cm', displayUnit: 'cm'};
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../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/javascript-es6/annotations/annotation-types/polygon-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/polygon-annotation.md
new file mode 100644
index 000000000..a63e9503a
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/polygon-annotation.md
@@ -0,0 +1,335 @@
+---
+layout: post
+title: Polygon annotation in TypeScript PDF Viewer | Syncfusion
+description: Learn to add, edit, and customize Polygon annotations in Syncfusion TypeScript PDF Viewer with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Polygon annotation in TypeScript PDF Viewer
+
+Polygon is a shape annotation used to outline irregular regions, highlight areas, or create custom callouts.
+
+
+
+## Add Polygon Annotation
+
+### 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.
+
+N> When in pan mode, selecting a shape annotation 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.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('polygonMode')?.addEventListener('click', () => {
+ pdfviewer.annotationModule.setAnnotationMode('Polygon');
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('polygonMode')?.addEventListener('click', () => {
+ pdfviewer.annotationModule.setAnnotationMode('Polygon');
+});
+{% endhighlight %}
+{% endtabs %}
+
+#### Exit polygon mode
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Common" %}
+document.getElementById('setNone')?.addEventListener('click', () => {
+ pdfviewer.annotationModule.setAnnotationMode('None');
+});
+{% endhighlight %}
+{% endtabs %}
+
+### Add a polygon annotation programmatically
+
+The PDF Viewer library allows adding polygon annotations programmatically using the [addAnnotation()](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#annotation) method.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, PolygonSettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addPolygonAnnotation')?.addEventListener('click', () => {
+ pdfviewer.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 }
+ ]
+ } as PolygonSettings);
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, PolygonSettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('addPolygonAnnotation')?.addEventListener('click', () => {
+ pdfviewer.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 }
+ ]
+ } as PolygonSettings);
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Edit Polygon Annotation
+
+### Edit Polygon Annotation in UI
+
+You can select, move, and resize Polygon annotations directly in the viewer:
+- 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.
+
+See the sections below for details.
+
+#### Edit the properties of area 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.
+
+#### 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
+
+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 an existing polygon annotation programmatically
+
+Use editAnnotation on items from annotationCollection.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('editPolygonAnnotation')?.addEventListener('click', () => {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Polygon') {
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].fillColor = '#FFFF00';
+ pdfviewer.annotationCollection[i].annotationSelectorSettings.resizerShape = 'Circle';
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('editPolygonAnnotation')?.addEventListener('click', () => {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Polygon') {
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].fillColor = '#FFFF00';
+ pdfviewer.annotationCollection[i].annotationSelectorSettings.resizerShape = 'Circle';
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Default polygon settings during initialization
+
+Set default properties before creating the control using polygonSettings.
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.polygonSettings = { fillColor: 'pink', opacity: 0.6, strokeColor: 'yellow' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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.polygonSettings = { fillColor: 'pink', opacity: 0.6, strokeColor: 'yellow' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation 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.
+
+Refer to the following code snippet to set the default Polygon settings.
+
+```html
+
+```
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PolygonSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+//Apply Polygon Settings while adding individual Annotation
+document.getElementById('Polygon')?.addEventListener('click', function () {
+ pdfviewer.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:'#ff000',
+ opacity: 0.9,
+ strokeColor:'##ff000'
+ } as PolygonSettings);
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PolygonSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+//Apply Polygon Settings while adding individual Annotation
+document.getElementById('Polygon')?.addEventListener('click', function () {
+ pdfviewer.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:'#ff000',
+ opacity: 0.9,
+ strokeColor:'##ff000'
+ } as PolygonSettings);
+});
+{% endhighlight %}
+{% endtabs %}
+
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../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)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/radius-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/radius-annotation.md
new file mode 100644
index 000000000..fce21b5d7
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/radius-annotation.md
@@ -0,0 +1,357 @@
+---
+layout: post
+title: Radius annotation in TypeScript PDF Viewer | Syncfusion
+description: Learn to add, edit, and customize Radius measurement annotations in Syncfusion TypeScript PDF Viewer with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Radius annotation in TypeScript PDF Viewer
+
+Radius is a measurement annotation used to measure the radius of a circle in the PDF.
+
+
+
+## Add Radius Annotation
+
+### 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.
+
+N> When in pan mode, selecting a measurement annotation 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.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('radiusMode')?.addEventListener('click', () => {
+ pdfviewer.annotationModule.setAnnotationMode('Radius');
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('radiusMode')?.addEventListener('click', () => {
+ pdfviewer.annotationModule.setAnnotationMode('Radius');
+});
+{% endhighlight %}
+{% endtabs %}
+
+#### Exit radius mode
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Common" %}
+document.getElementById('setNone')?.addEventListener('click', () => {
+ pdfviewer.annotationModule.setAnnotationMode('None');
+});
+{% endhighlight %}
+{% endtabs %}
+
+### Add a radius annotation programmatically
+
+Add measurement annotations programmatically using the [addAnnotation()](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#annotation) method.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, RadiusSettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addRadiusAnnotation')?.addEventListener('click', () => {
+ pdfviewer.annotation.addAnnotation('Radius', {
+ offset: { x: 200, y: 630 },
+ pageNumber: 1,
+ width: 90,
+ height: 90
+ } as RadiusSettings);
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, RadiusSettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('addRadiusAnnotation')?.addEventListener('click', () => {
+ pdfviewer.annotation.addAnnotation('Radius', {
+ offset: { x: 200, y: 630 },
+ pageNumber: 1,
+ width: 90,
+ height: 90
+ } as RadiusSettings);
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Edit Radius Annotation
+
+### Edit radius annotation in UI
+
+You can select, move, and resize Radius annotations directly in the viewer:
+- 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.
+- Delete or access more options from the context menu.
+
+#### Edit the properties of radius 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.
+
+#### 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
+
+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 an existing radius annotation programmatically
+
+Use editAnnotation on items from annotationCollection.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('editRadiusAnnotation')?.addEventListener('click', () => {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Radius calculation') {
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].opacity = 0.8;
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('editRadiusAnnotation')?.addEventListener('click', () => {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Radius calculation') {
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].opacity = 0.8;
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Default radius settings during initialization
+
+Set default [radiusSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#radiussettings) before creating the control.
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.radiusSettings = { fillColor: 'orange', opacity: 0.6, strokeColor: 'pink' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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.radiusSettings = { fillColor: 'orange', opacity: 0.6, strokeColor: 'pink' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation 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.
+
+Refer to the following code snippet to set the default Radius settings.
+
+```html
+
+```
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, RadiusSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+//Apply Radius Settings while adding individual Annotation
+document.getElementById('Radius')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Radius', {
+ offset: { x: 200, y: 630 },
+ pageNumber: 1,
+ width: 90,
+ height: 90,
+ fillColor: 'orange', opacity: 0.6, strokeColor: 'pink'
+ } as RadiusSettings);
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, RadiusSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+//Apply Radius Settings while adding individual Annotation
+document.getElementById('Radius')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Radius', {
+ offset: { x: 200, y: 630 },
+ pageNumber: 1,
+ width: 90,
+ height: 90,
+ fillColor: 'orange', opacity: 0.6, strokeColor: 'pink'
+ } as RadiusSettings);
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Scale ratio and units
+
+You can modify scale ratio and units using the Scale Ratio option in the context menu.
+
+
+
+Supported units:
+- Inch, Millimeter, Centimeter, Point, Pica, Feet
+
+
+
+Set defaults via measurementSettings:
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.measurementSettings = { scaleRatio: 2, conversionUnit: 'cm', displayUnit: 'cm' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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.measurementSettings = { scaleRatio: 2, conversionUnit: 'cm', displayUnit: 'cm' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../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/javascript-es6/annotations/annotation-types/rectangle-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/rectangle-annotation.md
new file mode 100644
index 000000000..5ba3a62b2
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/rectangle-annotation.md
@@ -0,0 +1,330 @@
+---
+layout: post
+title: Rectangle annotation in TypeScript PDF Viewer | Syncfusion
+description: Learn to add, edit, and customize Rectangle annotations in Syncfusion TypeScript PDF Viewer with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Rectangle annotation in TypeScript PDF Viewer
+
+Rectangle is a shape annotation used to highlight regions, group content, or draw callout boxes.
+
+
+
+## Add Rectangle Annotation
+
+### 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.
+
+N> When pan mode is active and a shape tool is selected, the viewer switches to text select mode automatically.
+
+
+
+### Enable rectangle mode
+
+The PDF Viewer library allows drawing shape annotations programmatically after enabling rectangle mode in button clicks.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('rectangleMode')?.addEventListener('click', () => {
+ pdfviewer.annotationModule.setAnnotationMode('Rectangle');
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('rectangleMode')?.addEventListener('click', () => {
+ pdfviewer.annotationModule.setAnnotationMode('Rectangle');
+});
+{% endhighlight %}
+{% endtabs %}
+
+#### Exit rectangle mode
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Common" %}
+document.getElementById('setNone')?.addEventListener('click', () => {
+ pdfviewer.annotationModule.setAnnotationMode('None');
+});
+{% endhighlight %}
+{% endtabs %}
+
+### Add a rectangle annotation programmatically
+
+Use the addAnnotation method with Rectangle settings to add a rectangle annotation programmatically.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, RectangleSettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addRectangleAnnotation')?.addEventListener('click', () => {
+ pdfviewer.annotation.addAnnotation('Rectangle', {
+ offset: { x: 200, y: 480 },
+ pageNumber: 1,
+ width: 150,
+ height: 75
+ } as RectangleSettings);
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, RectangleSettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('addRectangleAnnotation')?.addEventListener('click', () => {
+ pdfviewer.annotation.addAnnotation('Rectangle', {
+ offset: { x: 200, y: 480 },
+ pageNumber: 1,
+ width: 150,
+ height: 75
+ } as RectangleSettings);
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Edit Rectangle Annotation
+
+### Edit Rectangle Annotation in UI
+
+You can select, move, and resize Rectangle annotations directly in the viewer:
+- 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.
+
+#### Edit the properties of area 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.
+
+#### 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
+
+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 an existing rectangle annotation programmatically
+
+Use editAnnotation on items from annotationCollection.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('editRectangleAnnotation')?.addEventListener('click', () => {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Rectangle') {
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].fillColor = '#FFFF00';
+ pdfviewer.annotationCollection[i].annotationSelectorSettings.resizerShape = 'Circle';
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('editRectangleAnnotation')?.addEventListener('click', () => {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Rectangle') {
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].fillColor = '#FFFF00';
+ pdfviewer.annotationCollection[i].annotationSelectorSettings.resizerShape = 'Circle';
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Default rectangle settings during initialization
+
+Set default properties before creating the control using rectangleSettings.
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.rectangleSettings = { fillColor: 'yellow', opacity: 0.6, strokeColor: 'orange' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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.rectangleSettings = { fillColor: 'yellow', opacity: 0.6, strokeColor: 'orange' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation 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.
+
+Refer to the following code snippet to set the default rectangle settings.
+
+```html
+
+```
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, RectangleSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+//Apply Rectangle Settings while adding individual Annotation
+document.getElementById('Rectangle')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Rectangle', {
+ offset: { x: 200, y: 480 },
+ pageNumber: 1,
+ width: 150,
+ height: 75,
+ opacity: 0.5,
+ strokeColor: '#FF0000',
+ fillColor: '#000fff#',
+ author: 'User1'
+ } as RectangleSettings);
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, RectangleSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+//Apply Rectangle Settings while adding individual Annotation
+document.getElementById('Rectangle')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Rectangle', {
+ offset: { x: 200, y: 480 },
+ pageNumber: 1,
+ width: 150,
+ height: 75,
+ opacity: 0.5,
+ strokeColor: '#FF0000',
+ fillColor: '#000fff#',
+ author: 'User1'
+ } as RectangleSettings);
+});
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../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)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/redaction-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/redaction-annotation.md
new file mode 100644
index 000000000..eec1f902b
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/redaction-annotation.md
@@ -0,0 +1,210 @@
+---
+layout: post
+title: Overview of Redaction in TypeScript PDF Viewer | Syncfusion
+description: Learn to add, edit, delete, and apply redaction annotations in Syncfusion TypeScript PDF Viewer with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Redaction annotation in TypeScript 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 annotation in UI
+
+- Use the Redaction tool from the toolbar to draw over content to hide.
+- Redaction marks can show overlay text (for example, "Confidential") and can be styled.
+
+
+
+Redaction annotations are interactive:
+- Movable
+
+- Resizable
+
+
+You can also add redaction 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 a redaction annotation programmatically
+
+Use the addAnnotation method with the Redaction type.
+
+```html
+
+```
+```ts
+document.getElementById('addRedactAnnot')?.addEventListener('click', () => {
+ 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
+ });
+});
+```
+
+Track additions using the annotationAdd event.
+
+```ts
+viewer.annotationAdd = (args) => {
+ console.log('Annotation added:', args);
+};
+```
+
+## Edit Redaction Annotation
+
+### Edit redaction annotation in UI
+
+You can select, move, and resize Redaction annotations directly in the viewer. 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 a redaction annotation programmatically
+
+Use editAnnotation to modify overlay text, colors, fonts, etc.
+
+```html
+
+```
+```ts
+document.getElementById('editRedactAnnotation')?.addEventListener('click', () => {
+ for (let i = 0; i < viewer.annotationCollection.length; i++) {
+ if (viewer.annotationCollection[i].subject === 'Redaction') {
+ viewer.annotationCollection[i].overlayText = 'EditedAnnotation';
+ viewer.annotationCollection[i].markerFillColor = '#22FF00';
+ viewer.annotationCollection[i].markerBorderColor = '#000000';
+ viewer.annotationCollection[i].isRepeat = true;
+ viewer.annotationCollection[i].fillColor = '#F8F8F8';
+ viewer.annotationCollection[i].fontColor = '#333333';
+ viewer.annotationCollection[i].fontSize = 14;
+ viewer.annotationCollection[i].fontFamily = 'Symbol';
+ viewer.annotationCollection[i].textAlign = 'Right';
+ viewer.annotationCollection[i].beforeRedactionsApplied = false;
+ viewer.annotation.editAnnotation(viewer.annotationCollection[i]);
+ }
+ }
+});
+```
+
+## Delete redaction annotations
+
+### Delete in UI
+
+- Right-click and select Delete
+
+- Use the Delete button in the toolbar
+
+- Press Delete key
+
+### Delete programmatically
+
+Delete by id using deleteAnnotationById:
+
+```html
+
+```
+```ts
+document.getElementById('deleteAnnotationbyId')?.addEventListener('click', () => {
+ viewer.annotationModule.deleteAnnotationById(viewer.annotationCollection[0].annotationId);
+});
+```
+
+## Redact pages
+
+### Redact pages in UI
+
+Use the Redact Pages dialog to mark entire pages:
+
+
+
+Options include Current Page, Odd Pages Only, Even Pages Only, and Specific Pages.
+
+### Add page redactions programmatically
+
+```html
+
+```
+```ts
+document.getElementById('addPageRedactions')?.addEventListener('click', () => {
+ viewer.annotation.addPageRedactions([1, 3, 5, 7]);
+});
+```
+
+## 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
+
+```html
+
+```
+```ts
+document.getElementById('redact')?.addEventListener('click', () => {
+ viewer.annotation.redact();
+});
+```
+
+N> Applying redaction is irreversible.
+
+## Default redaction settings during initialization
+
+Configure defaults with redactionSettings:
+
+```ts
+viewer.redactionSettings = {
+ overlayText: 'Confidential',
+ markerFillColor: '#FF0000',
+ markerBorderColor: '#000000',
+ isRepeat: false,
+ fillColor: '#F8F8F8',
+ fontColor: '#333333',
+ fontSize: 14,
+ fontFamily: 'Symbol',
+ textAlign: 'Right'
+};
+```
+
+[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/javascript-es6/annotations/annotation-types/stamp-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/stamp-annotation.md
new file mode 100644
index 000000000..df48b865d
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/stamp-annotation.md
@@ -0,0 +1,353 @@
+---
+layout: post
+title: Stamp annotation in TypeScript PDF Viewer | Syncfusion
+description: Learn to add, edit, delete, rotate, and customize Stamp annotations in Syncfusion TypeScript PDF Viewer, with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Stamp annotation in TypeScript PDF Viewer
+
+The PDF Viewer control provides options to add, edit, delete, and rotate the following stamp annotations in PDF documents:
+
+* Dynamic
+* Sign Here
+* Standard Business
+* Custom Stamp
+
+
+
+## Add Stamp Annotation
+
+### Add Stamp Annotation in UI
+
+Use the annotation toolbar:
+- Click the Edit Annotation button.
+- Open the Stamp Annotation dropdown.
+
+- Choose a stamp type and place it on the page.
+
+
+N> When in pan mode and a stamp tool is selected, the viewer switches to text select mode automatically.
+
+### Switch to specific stamp modes
+
+```html
+
+
+
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, SignStampItem, StandardBusinessStampItem, DynamicStampItem, StampSettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('dynamicStamp')?.addEventListener('click', () => {
+ pdfviewer.annotationModule.setAnnotationMode('Stamp', DynamicStampItem.NotApproved);
+});
+
+document.getElementById('signStamp')?.addEventListener('click', () => {
+ pdfviewer.annotationModule.setAnnotationMode('Stamp', undefined, SignStampItem.Witness);
+});
+
+document.getElementById('standardBusinessStamp')?.addEventListener('click', () => {
+ pdfviewer.annotationModule.setAnnotationMode('Stamp', undefined, undefined, StandardBusinessStampItem.Approved);
+});
+
+document.getElementById('customStamp')?.addEventListener('click', () => {
+ pdfviewer.annotation.addAnnotation('Stamp', {
+ offset: { x: 100, y: 440 },
+ width: 46,
+ height: 100,
+ pageNumber: 1,
+ isLock: true,
+ author: 'Guest',
+ customStamps: [{
+ customStampName: 'Image',
+ customStampImageSource: 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD...'
+ }]
+ } as unknown as StampSettings);
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, SignStampItem, StandardBusinessStampItem, DynamicStampItem, StampSettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('dynamicStamp')?.addEventListener('click', () => {
+ pdfviewer.annotationModule.setAnnotationMode('Stamp', DynamicStampItem.NotApproved);
+});
+
+document.getElementById('signStamp')?.addEventListener('click', () => {
+ pdfviewer.annotationModule.setAnnotationMode('Stamp', undefined, SignStampItem.Witness);
+});
+
+document.getElementById('standardBusinessStamp')?.addEventListener('click', () => {
+ pdfviewer.annotationModule.setAnnotationMode('Stamp', undefined, undefined, StandardBusinessStampItem.Approved);
+});
+{% endhighlight %}
+{% endtabs %}
+
+### Add Stamp Annotation programmatically
+
+Create stamps via addAnnotation.
+
+```html
+
+
+
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, StampSettings, DynamicStampItem, SignStampItem, StandardBusinessStampItem } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addDynamic')?.addEventListener('click', () => {
+ pdfviewer.annotation.addAnnotation('Stamp', {
+ offset: { x: 200, y: 140 }, pageNumber: 1
+ } as StampSettings, DynamicStampItem.Approved);
+});
+
+document.getElementById('addSign')?.addEventListener('click', () => {
+ pdfviewer.annotation.addAnnotation('Stamp', {
+ offset: { x: 200, y: 240 }, pageNumber: 1
+ } as StampSettings, undefined, SignStampItem.Witness);
+});
+
+document.getElementById('addStandard')?.addEventListener('click', () => {
+ pdfviewer.annotation.addAnnotation('Stamp', {
+ offset: { x: 200, y: 340 }, pageNumber: 1
+ } as StampSettings, undefined, undefined, StandardBusinessStampItem.Approved);
+});
+
+document.getElementById('addCustom')?.addEventListener('click', () => {
+ pdfviewer.annotation.addAnnotation('Stamp', {
+ offset: { x: 100, y: 440 }, width: 46, height: 100, pageNumber: 1, isLock: true,
+ author: 'Guest',
+ customStamps: [{ customStampName: 'Image', customStampImageSource: 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD...' }]
+ } as unknown as StampSettings);
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, StampSettings, DynamicStampItem, SignStampItem, StandardBusinessStampItem } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('addDynamic')?.addEventListener('click', () => {
+ pdfviewer.annotation.addAnnotation('Stamp', {
+ offset: { x: 200, y: 140 }, pageNumber: 1
+ } as StampSettings, DynamicStampItem.Approved);
+});
+
+document.getElementById('addSign')?.addEventListener('click', () => {
+ pdfviewer.annotation.addAnnotation('Stamp', {
+ offset: { x: 200, y: 240 }, pageNumber: 1
+ } as StampSettings, undefined, SignStampItem.Witness);
+});
+
+document.getElementById('addStandard')?.addEventListener('click', () => {
+ pdfviewer.annotation.addAnnotation('Stamp', {
+ offset: { x: 200, y: 340 }, pageNumber: 1
+ } as StampSettings, undefined, undefined, StandardBusinessStampItem.Approved);
+});
+
+document.getElementById('addCustom')?.addEventListener('click', () => {
+ pdfviewer.annotation.addAnnotation('Stamp', {
+ offset: { x: 100, y: 440 }, width: 46, height: 100, pageNumber: 1, isLock: true,
+ author: 'Guest',
+ customStamps: [{ customStampName: 'Image', customStampImageSource: 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD...' }]
+ } as StampSettings);
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Edit Stamp Annotation
+
+### Edit Stamp Annotation in UI
+
+You can select, move, resize, rotate, and delete Stamp annotations directly in the viewer:
+- 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.
+- Rotate: drag the rotation handle to rotate the stamp.
+- Delete or access more options from the context menu.
+
+Use the toolbar to change appearance:
+- Adjust Opacity using the Edit Opacity tool.
+
+### Edit Stamp Annotation programmatically
+
+Use editAnnotation to change bounds or lock state.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('editStamp')?.addEventListener('click', () => {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].shapeAnnotationType === 'stamp') {
+ const width = pdfviewer.annotationCollection[i].bounds.width;
+ const height = pdfviewer.annotationCollection[i].bounds.height;
+ pdfviewer.annotationCollection[i].bounds = { x: 100, y: 100, width, height };
+ pdfviewer.annotationCollection[i].annotationSettings.isLock = true;
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('editStamp')?.addEventListener('click', () => {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].shapeAnnotationType === 'stamp') {
+ const width = pdfviewer.annotationCollection[i].bounds.width;
+ const height = pdfviewer.annotationCollection[i].bounds.height;
+ pdfviewer.annotationCollection[i].bounds = { x: 100, y: 100, width, height };
+ pdfviewer.annotationCollection[i].annotationSettings.isLock = true;
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Default stamp settings during initialization
+
+Set defaults using stampSettings.
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.stampSettings = { opacity: 0.3, author: 'Guest User' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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.stampSettings = { opacity: 0.3, author: 'Guest User' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation before creating the control using `StampSettings`.
+
+> 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 Stamp settings.
+
+```html
+
+```
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, DynamicStampItem, StampSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+//Apply Stamp Settings while adding individual Annotation
+document.getElementById('Stamp')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Stamp', {
+ offset: { x: 200, y: 140 }, pageNumber: 1,
+ opacity: 0.3, author: 'Guest User'
+ } as StampSettings, DynamicStampItem.Approved);
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, DynamicStampItem, StampSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+//Apply Stamp Settings while adding individual Annotation
+document.getElementById('Stamp')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Stamp', {
+ offset: { x: 200, y: 140 }, pageNumber: 1,
+ opacity: 0.3, author: 'Guest User'
+ } as StampSettings, DynamicStampItem.Approved);
+});
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../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)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/sticky-notes-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/sticky-notes-annotation.md
new file mode 100644
index 000000000..e8e6c1f6a
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/sticky-notes-annotation.md
@@ -0,0 +1,287 @@
+---
+layout: post
+title: Sticky notes annotation in TypeScript PDF Viewer | Syncfusion
+description: Learn to add, edit, delete, and customize Sticky Notes annotations in Syncfusion TypeScript PDF Viewer, with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Sticky notes annotation in TypeScript PDF Viewer
+
+Sticky Notes are comment annotations used to leave notes, replies, and review statuses anywhere on a page.
+
+
+
+## Add Annotation
+
+### Add Annotation in UI
+
+Use the Comments tool:
+- 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:
+- Select a sticky note, right‑click, and choose Comment.
+- Add comments, replies, and statuses in the panel.
+
+
+
+### Add Annotation programmatically
+
+Use addAnnotation to programmatically create a sticky note.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, StickyNotesSettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('stickyNote')?.addEventListener('click', () => {
+ pdfviewer.annotation.addAnnotation('StickyNotes', {
+ offset: { x: 100, y: 200 },
+ pageNumber: 1,
+ isLock: false
+ } as StickyNotesSettings);
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, StickyNotesSettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('stickyNote')?.addEventListener('click', () => {
+ pdfviewer.annotation.addAnnotation('StickyNotes', {
+ offset: { x: 100, y: 200 },
+ pageNumber: 1,
+ isLock: false
+ } as StickyNotesSettings);
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Edit Annotation
+
+### Edit Annotation in UI
+
+You can select and manage sticky notes directly in the viewer:
+- 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.
+- Open comments: right-click the note and choose Comment, or use the Comment Panel button.
+
+#### Edit the properties of sticky note annotations
+
+#### Editing opacity
+
+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.
+
+* 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.
+
+ 
+
+### Edit Annotation programmatically
+
+Use editAnnotation to update an existing note's bounds.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('editSticky')?.addEventListener('click', () => {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].shapeAnnotationType === 'sticky') {
+ const width = pdfviewer.annotationCollection[i].bounds.width;
+ const height = pdfviewer.annotationCollection[i].bounds.height;
+ pdfviewer.annotationCollection[i].bounds = { x: 100, y: 100, width, height };
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('editSticky')?.addEventListener('click', () => {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].shapeAnnotationType === 'sticky') {
+ const width = pdfviewer.annotationCollection[i].bounds.width;
+ const height = pdfviewer.annotationCollection[i].bounds.height;
+ pdfviewer.annotationCollection[i].bounds = { x: 100, y: 100, width, height };
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Default Sticky Notes settings during initialization
+
+Set defaults using stickyNotesSettings.
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.stickyNotesSettings = { author: 'Syncfusion' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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.stickyNotesSettings = { author: 'Syncfusion' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation 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.
+
+Refer to the following code snippet to set the default StickyNotes settings.
+
+```html
+
+```
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, StickyNotesSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+//Apply StickyNotes Settings while adding individual Annotation
+document.getElementById('StickyNotes')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('StickyNotes', {
+ offset: { x: 100, y: 200 },
+ pageNumber: 1,
+ isLock: false,
+ author: 'Syncfusion'
+ } as StickyNotesSettings);
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, StickyNotesSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+//Apply StickyNotes Settings while adding individual Annotation
+document.getElementById('StickyNotes')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('StickyNotes', {
+ offset: { x: 100, y: 200 },
+ pageNumber: 1,
+ isLock: false,
+ author: 'Syncfusion'
+ } as StickyNotesSettings);
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Disable Sticky Notes
+
+Disable the feature by setting enableStickyNotesAnnotation to false.
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.enableStickyNotesAnnotation = false;
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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.enableStickyNotesAnnotation = false;
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../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)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/strikethrough-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/strikethrough-annotation.md
new file mode 100644
index 000000000..9f3673841
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/strikethrough-annotation.md
@@ -0,0 +1,464 @@
+---
+layout: post
+title: Strikethrough annotation in TypeScript PDF Viewer | Syncfusion
+description: Learn to add, edit, delete, and customize Strikethrough text markup annotations in Syncfusion TypeScript PDF Viewer, with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Strikethrough annotation in TypeScript PDF Viewer
+
+The PDF Viewer provides options to add, edit, and delete Strikethrough annotations on text. You can add strikethrough via the UI (context menu or annotation toolbar) and programmatically. You can also customize color, opacity, author/subject, and default settings, and use undo/redo, save, print, or disable them as needed.
+
+
+
+## Add strikethrough annotation
+
+### Add strikethrough annotation via UI
+
+You can add strikethrough in two ways:
+
+1. Using the context menu
+* Select text in the PDF document and right-click it.
+* Choose **Strikethrough** in the context menu.
+
+
+
+
+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**.
+
+
+
+When pan mode is active and a text markup mode is entered, the PDF Viewer switches to text selection mode to enable selection.
+
+### Enable strikethrough mode
+
+Use the following code to switch the viewer into strikethrough mode.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView,
+ TextSelection, Annotation, FormDesigner, FormFields } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView,
+ BookmarkView, TextSelection, Annotation, FormDesigner, FormFields);
+
+let pdfviewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('set')?.addEventListener('click', () => {
+ pdfviewer.annotation.setAnnotationMode('Strikethrough');
+});
+{% endhighlight %}
+{% highlight html tabtitle="index.html" %}
+
+
+
+ EJ2 PDF Viewer
+
+
+
+
+
+
+
+
+
+
+
Loading....
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+N> To set up the **server-backed PDF Viewer**,
+Add the below `serviceUrl` in the `index.ts` file
+`pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';`
+
+{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es6/text-markup-annotation/strikethrough-mode-cs1/index.html" %}
+
+#### Exit strikethrough mode
+
+Use the following code to switch back to normal mode.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView,
+ TextSelection, Annotation, FormDesigner, FormFields } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView,
+ BookmarkView, TextSelection, Annotation, FormDesigner, FormFields);
+
+let pdfviewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('set')?.addEventListener('click', () => {
+ pdfviewer.annotation.setAnnotationMode('Strikethrough');
+});
+
+document.getElementById('setNone')?.addEventListener('click', () => {
+ pdfviewer.annotation.setAnnotationMode('None');
+});
+{% endhighlight %}
+{% highlight html tabtitle="index.html" %}
+
+
+
+ EJ2 PDF Viewer
+
+
+
+
+
+
+
+
+
+
+
Loading....
+
+
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+N> To set up the **server-backed PDF Viewer**,
+Add the below `serviceUrl` in the `index.ts` file
+`pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';`
+
+{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es6/text-markup-annotation/strikethrough-normal-mode-cs1/index.html" %}
+
+### Add strikethrough annotation programmatically
+
+Programmatically add strikethrough using the [addAnnotation](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation/#addannotation) method.
+
+Example:
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, StrikethroughSettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+let strikethrough = document.getElementById('strikethrough');
+if (strikethrough) {
+ strikethrough.addEventListener('click', function () {
+ if (pdfviewer) {
+ pdfviewer.annotation.addAnnotation('Strikethrough', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1
+ } as StrikethroughSettings);
+ }
+ });
+}
+
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, StrikethroughSettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+let strikethrough = document.getElementById('strikethrough');
+if (strikethrough) {
+ strikethrough.addEventListener('click', function () {
+ if (pdfviewer) {
+ pdfviewer.annotation.addAnnotation('Strikethrough', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1
+ } as StrikethroughSettings);
+ }
+ });
+}
+
+{% endhighlight %}
+{% endtabs %}
+
+## Edit strikethrough annotation
+
+### Edit strikethrough annotation 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.
+
+#### 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.
+
+
+
+#### Delete strikethrough annotation
+
+- Select the annotation and press Delete, or
+- Click **Delete Annotation** in the annotation toolbar.
+
+
+
+### Edit an existing strikethrough annotation programmatically
+
+To modify an existing strikethrough annotation programmatically, use the editAnnotation() method. Example:
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+let editStrikethroughAnnotation = document.getElementById('editStrikethroughAnnotation');
+if (editStrikethroughAnnotation) {
+ editStrikethroughAnnotation.addEventListener('click', function () {
+ if (pdfviewer) {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ // Update the first available Strikethrough annotation
+ if (pdfviewer.annotationCollection[i].textMarkupAnnotationType === 'Strikethrough') {
+ pdfviewer.annotationCollection[i].color = '#ff0000';
+ pdfviewer.annotationCollection[i].opacity = 0.8;
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ break;
+ }
+ }
+ }
+ });
+}
+
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+let editStrikethroughAnnotation = document.getElementById('editStrikethroughAnnotation');
+if (editStrikethroughAnnotation) {
+ editStrikethroughAnnotation.addEventListener('click', function () {
+ if (pdfviewer) {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].textMarkupAnnotationType === 'Strikethrough') {
+ pdfviewer.annotationCollection[i].color = '#ff0000';
+ pdfviewer.annotationCollection[i].opacity = 0.8;
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ break;
+ }
+ }
+ }
+ });
+}
+
+{% endhighlight %}
+{% endtabs %}
+
+## Default strikethrough settings during initialization
+
+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.
+
+Refer to the following code snippet to set the default strikethrough settings.
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation);
+
+let pdfviewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ strikethroughSettings: { author: 'Guest User', subject: 'Not Important', color: '#ff00ff', opacity: 0.9}
+});
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation);
+
+let pdfviewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ strikethroughSettings: { author: 'Guest User', subject: 'Not Important', color: '#ff00ff', opacity: 0.9}
+});
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% endtabs %}
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation 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.
+
+Refer to the following code snippet to set the default highlight settings.
+
+```html
+
+```
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, StrikethroughSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+//Apply Strikethrough Settings while adding individual Annotation
+document.getElementById('Strikethrough')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Strikethrough', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1,
+ author: 'User 1',
+ color: '#ffff00',
+ opacity: 0.9
+ } as StrikethroughSettings);
+
+ pdfviewer.annotation.addAnnotation('Strikethrough', {
+ bounds: [{ x: 107, y: 220, width: 350, height: 14 }],
+ pageNumber: 1,
+ author: 'User 2',
+ color: '#ff1010ff',
+ opacity: 0.9
+ } as StrikethroughSettings);
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, StrikethroughSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+
+//Apply Strikethrough Settings while adding individual Annotation
+document.getElementById('Strikethrough')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Strikethrough', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1,
+ author: 'User 1',
+ color: '#ffff00',
+ opacity: 0.9
+ } as StrikethroughSettings);
+
+ pdfviewer.annotation.addAnnotation('Strikethrough', {
+ bounds: [{ x: 107, y: 220, width: 350, height: 14 }],
+ pageNumber: 1,
+ author: 'User 2',
+ color: '#ff1010ff',
+ opacity: 0.9
+ } as StrikethroughSettings);
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Disable strikethrough annotation
+
+Disable text markup annotations (including strikethrough) using the `enableTextMarkupAnnotation` property.
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.enableTextMarkupAnnotation= false;
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.enableTextMarkupAnnotation= false;
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../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)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/underline-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/underline-annotation.md
new file mode 100644
index 000000000..eab5bc21f
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/underline-annotation.md
@@ -0,0 +1,463 @@
+---
+layout: post
+title: Underline annotation in TypeScript PDF Viewer | Syncfusion
+description: Learn to add, edit, delete, and customize Underline text markup annotations in Syncfusion TypeScript PDF Viewer, with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Underline annotation in TypeScript PDF Viewer
+
+The PDF Viewer provides options to add, edit, and delete Underline annotations on text. You can add underlines via the UI (context menu or annotation toolbar) and programmatically. You can also customize color, opacity, author/subject, and default settings, and use undo/redo, save, print, or disable them as needed.
+
+
+
+## Add underline annotation
+
+### Add underline annotation via UI
+
+You can add underlines in two ways:
+
+1. Using the context menu
+* Select text in the PDF document and right-click it.
+* Choose **Underline** in the context menu.
+
+
+
+
+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**.
+
+
+
+When pan mode is active and a text markup mode is entered, the PDF Viewer switches to text selection mode to enable selection.
+
+### Enable underline mode
+
+Use the following code to switch the viewer into underline mode.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView,
+ TextSelection, Annotation, FormDesigner, FormFields } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView,
+ BookmarkView, TextSelection, Annotation, FormDesigner, FormFields);
+
+let pdfviewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('set')?.addEventListener('click', () => {
+ pdfviewer.annotation.setAnnotationMode('Underline');
+});
+{% endhighlight %}
+{% highlight html tabtitle="index.html" %}
+
+
+
+ EJ2 PDF Viewer
+
+
+
+
+
+
+
+
+
+
+
Loading....
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+N> To set up the **server-backed PDF Viewer**,
+Add the below `serviceUrl` in the `index.ts` file
+`pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';`
+
+{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es6/text-markup-annotation/underline-mode-cs1/index.html" %}
+
+#### Exit underline mode
+
+Use the following code to switch back to normal mode.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView,
+ TextSelection, Annotation, FormDesigner, FormFields } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView,
+ BookmarkView, TextSelection, Annotation, FormDesigner, FormFields);
+
+let pdfviewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('set')?.addEventListener('click', () => {
+ pdfviewer.annotation.setAnnotationMode('Underline');
+});
+
+document.getElementById('setNone')?.addEventListener('click', () => {
+ pdfviewer.annotation.setAnnotationMode('None');
+});
+{% endhighlight %}
+{% highlight html tabtitle="index.html" %}
+
+
+
+ EJ2 PDF Viewer
+
+
+
+
+
+
+
+
+
+
+
Loading....
+
+
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+N> To set up the **server-backed PDF Viewer**,
+Add the below `serviceUrl` in the `index.ts` file
+`pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';`
+
+{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es6/text-markup-annotation/underline-normal-mode-cs1/index.html" %}
+
+### Add underline annotation programmatically
+
+Programmatically add underlines using the [addAnnotation](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation/#addannotation) method.
+
+Example:
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, UnderlineSettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+let underline = document.getElementById('underline');
+if (underline) {
+ underline.addEventListener('click', function () {
+ if (pdfviewer) {
+ pdfviewer.annotation.addAnnotation('Underline', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1
+ } as UnderlineSettings);
+ }
+ });
+}
+
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, UnderlineSettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+let underline = document.getElementById('underline');
+if (underline) {
+ underline.addEventListener('click', function () {
+ if (pdfviewer) {
+ pdfviewer.annotation.addAnnotation('Underline', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1
+ } as UnderlineSettings);
+ }
+ });
+}
+
+{% endhighlight %}
+{% endtabs %}
+
+## Edit underline annotation
+
+### Edit underline annotation in UI
+
+The color and opacity of the underline annotation 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.
+
+
+
+#### Delete underline annotation
+
+- Select the annotation and press Delete, or
+- Click **Delete Annotation** in the annotation toolbar.
+
+
+
+### Edit an existing underline annotation programmatically
+
+To modify an existing underline annotation programmatically, use the editAnnotation() method. Example:
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+let editUnderlineAnnotation = document.getElementById('editUnderlineAnnotation');
+if (editUnderlineAnnotation) {
+ editUnderlineAnnotation.addEventListener('click', function () {
+ if (pdfviewer) {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ // Update the first available Underline annotation
+ if (pdfviewer.annotationCollection[i].textMarkupAnnotationType === 'Underline') {
+ pdfviewer.annotationCollection[i].color = '#00aa00';
+ pdfviewer.annotationCollection[i].opacity = 0.8;
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ break;
+ }
+ }
+ }
+ });
+}
+
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+let editUnderlineAnnotation = document.getElementById('editUnderlineAnnotation');
+if (editUnderlineAnnotation) {
+ editUnderlineAnnotation.addEventListener('click', function () {
+ if (pdfviewer) {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].textMarkupAnnotationType === 'Underline') {
+ pdfviewer.annotationCollection[i].color = '#00aa00';
+ pdfviewer.annotationCollection[i].opacity = 0.8;
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ break;
+ }
+ }
+ }
+ });
+}
+
+{% endhighlight %}
+{% endtabs %}
+
+## Default underline settings during initialization
+
+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.
+
+Refer to the following code snippet to set the default underline settings.
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.underlineSettings= { author: 'Guest User', subject: 'Points to be remembered', color: '#00ffff', opacity: 0.9};
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath= 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.underlineSettings= { author: 'Guest User', subject: 'Points to be remembered', color: '#00ffff', opacity: 0.9};
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% endtabs %}
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation 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.
+
+Refer to the following code snippet to set the default highlight settings.
+
+```html
+
+```
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, UnderlineSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+//Apply Underline Settings while adding individual Annotation
+document.getElementById('underline')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Underline', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1,
+ author: 'User 1',
+ color: '#ffff00',
+ opacity: 0.9
+ } as UnderlineSettings);
+
+ pdfviewer.annotation.addAnnotation('Underline', {
+ bounds: [{ x: 107, y: 220, width: 350, height: 14 }],
+ pageNumber: 1,
+ author: 'User 2',
+ color: '#ff1010ff',
+ opacity: 0.9
+ } as UnderlineSettings);
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, UnderlineSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+
+//Apply Underline Settings while adding individual Annotation
+document.getElementById('underline')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Underline', {
+ bounds: [{ x: 97, y: 110, width: 350, height: 14 }],
+ pageNumber: 1,
+ author: 'User 1',
+ color: '#ffff00',
+ opacity: 0.9
+ } as UnderlineSettings);
+
+ pdfviewer.annotation.addAnnotation('Underline', {
+ bounds: [{ x: 107, y: 220, width: 350, height: 14 }],
+ pageNumber: 1,
+ author: 'User 2',
+ color: '#ff1010ff',
+ opacity: 0.9
+ } as UnderlineSettings);
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Disable underline annotation
+
+Disable text markup annotations (including underline) using the `enableTextMarkupAnnotation` property.
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.enableTextMarkupAnnotation: false;
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.enableTextMarkupAnnotation: false;
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../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)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/volume-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/volume-annotation.md
new file mode 100644
index 000000000..b84f6f1ec
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotation-types/volume-annotation.md
@@ -0,0 +1,361 @@
+---
+layout: post
+title: Volume annotation in TypeScript PDF Viewer | Syncfusion
+description: Learn to add, edit, and customize Volume measurement annotations in Syncfusion TypeScript PDF Viewer with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Volume annotation in TypeScript PDF Viewer
+
+Volume is a measurement annotation used to calculate the volume of a rectangular prism area in the PDF.
+
+
+
+## Add Volume Annotation
+
+### 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.
+
+N> When in pan mode, selecting a measurement annotation 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.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('volumeMode')?.addEventListener('click', () => {
+ pdfviewer.annotationModule.setAnnotationMode('Volume');
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('volumeMode')?.addEventListener('click', () => {
+ pdfviewer.annotationModule.setAnnotationMode('Volume');
+});
+{% endhighlight %}
+{% endtabs %}
+
+#### Exit volume mode
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Common" %}
+document.getElementById('setNone')?.addEventListener('click', () => {
+ pdfviewer.annotationModule.setAnnotationMode('None');
+});
+{% endhighlight %}
+{% endtabs %}
+
+### Add a volume annotation programmatically
+
+Add measurement annotations programmatically using the [addAnnotation()](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#annotation) method.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, VolumeSettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('addVolumeAnnotation')?.addEventListener('click', () => {
+ pdfviewer.annotation.addAnnotation('Volume', {
+ offset: { x: 200, y: 810 },
+ pageNumber: 1,
+ vertexPoints: [
+ { x: 200, y: 810 }, { x: 200, y: 919 }, { x: 320, y: 919 }, { x: 320, y: 809 }, { x: 200, y: 810 }
+ ]
+ } as VolumeSettings);
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer, VolumeSettings } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('addVolumeAnnotation')?.addEventListener('click', () => {
+ pdfviewer.annotation.addAnnotation('Volume', {
+ offset: { x: 200, y: 810 },
+ pageNumber: 1,
+ vertexPoints: [
+ { x: 200, y: 810 }, { x: 200, y: 919 }, { x: 320, y: 919 }, { x: 320, y: 809 }, { x: 200, y: 810 }
+ ]
+ } as VolumeSettings);
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Edit Volume Annotation
+
+### Edit volume annotation in UI
+
+You can select, move, and resize Volume annotations directly in the viewer:
+- 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.
+- Delete or access more options from the context menu.
+
+#### Edit the properties of volume 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.
+
+#### 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
+
+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 an existing volume annotation programmatically
+
+Use editAnnotation on items from annotationCollection.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('editVolumeAnnotation')?.addEventListener('click', () => {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Volume calculation') {
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].opacity = 0.8;
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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');
+
+document.getElementById('editVolumeAnnotation')?.addEventListener('click', () => {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ if (pdfviewer.annotationCollection[i].subject === 'Volume calculation') {
+ pdfviewer.annotationCollection[i].strokeColor = '#0000FF';
+ pdfviewer.annotationCollection[i].thickness = 2;
+ pdfviewer.annotationCollection[i].opacity = 0.8;
+ pdfviewer.annotation.editAnnotation(pdfviewer.annotationCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Default volume settings during initialization
+
+Set default [volumeSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#volumesettings) before creating the control.
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.volumeSettings = { fillColor: 'pink', opacity: 0.6, strokeColor: 'yellow' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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.volumeSettings = { fillColor: 'pink', opacity: 0.6, strokeColor: 'yellow' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## Set properties while adding Individual Annotation
+
+Set properties for individual annotation before creating the control using `VolumeSettings`.
+
+> 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 Volume settings.
+
+```html
+
+```
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, VolumeSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+//Apply Volume Settings while adding individual Annotation
+document.getElementById('Volume')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Volume', {
+ offset: { x: 200, y: 810 },
+ pageNumber: 1,
+ vertexPoints: [
+ { x: 200, y: 810 }, { x: 200, y: 919 }, { x: 320, y: 919 }, { x: 320, y: 809 }, { x: 200, y: 810 }
+ ],
+ fillColor: 'pink', opacity: 0.6, strokeColor: 'yellow'
+ } as VolumeSettings);
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, VolumeSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+//Apply Volume Settings while adding individual Annotation
+document.getElementById('Volume')?.addEventListener('click', function () {
+ pdfviewer.annotation.addAnnotation('Volume', {
+ offset: { x: 200, y: 810 },
+ pageNumber: 1,
+ vertexPoints: [
+ { x: 200, y: 810 }, { x: 200, y: 919 }, { x: 320, y: 919 }, { x: 320, y: 809 }, { x: 200, y: 810 }
+ ],
+ fillColor: 'pink', opacity: 0.6, strokeColor: 'yellow'
+ } as VolumeSettings);
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Scale ratio and units
+
+You can modify scale ratio and units using the Scale Ratio option in the context menu.
+
+
+
+Supported units:
+- Inch, Millimeter, Centimeter, Point, Pica, Feet
+
+
+
+Set defaults via measurementSettings:
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.measurementSettings = { scaleRatio: 2, conversionUnit: 'cm', displayUnit: 'cm' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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.measurementSettings = { scaleRatio: 2, conversionUnit: 'cm', displayUnit: 'cm' };
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples/tree/master)
+
+## See also
+
+- [Annotation Overview](../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/javascript-es6/annotations/annotations-api.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotations-api.md
new file mode 100644
index 000000000..3b0c442ef
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotations-api.md
@@ -0,0 +1,1344 @@
+---
+layout: post
+title: Annotations API in TypeScript PDF Viewer | Syncfusion
+description: Learn how to read and configure annotations using APIs in the Syncfusion TypeScript PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Annotations API in TypeScript PDF Viewer
+
+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/documentation/api/pdfviewer/index-default#annotationcollection) | Gets the loaded document annotation collection. |
+| [annotationDrawingOptions](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#annotationdrawingoptions) | Options to configure line-type annotation drawing behavior. |
+| [annotationSelectorSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#annotationselectorsettings) | Configures the annotation selector (selection UI). |
+| [annotationSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#annotationsettings) | Global defaults for all annotations. |
+| [areaSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#areasettings) | Defaults for Area annotations. |
+| [arrowSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#arrowsettings) | Defaults for Arrow annotations. |
+| [circleSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#circlesettings) | Defaults for Circle annotations. |
+| [customStamp](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#customstamp) | Defines custom stamp items. |
+| [customStampSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#customstampsettings) | Defaults for Custom Stamp annotations. |
+| [distanceSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#distancesettings) | Defaults for Distance annotations. |
+
+## annotationCollection
+
+Gets the loaded document annotation collection from the viewer instance.
+
+```html
+
+
+```
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+
+const btn = document.getElementById('logAnnot');
+if (btn) {
+ btn.addEventListener('click', () => {
+ console.log(pdfviewer.annotationCollection);
+ });
+}
+{% endhighlight %}
+{% endtabs %}
+
+## annotationDrawingOptions
+
+Options for configuring line-type annotation drawing behavior.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+
+pdfviewer.annotationDrawingOptions.enableLineAngleConstraints = true;
+pdfviewer.annotationDrawingOptions.restrictLineAngleTo = 90;
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## annotationSelectorSettings
+
+Defines the settings of the annotation selector.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AnnotationResizerLocation, CursorType } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+
+pdfviewer.annotationSelectorSettings = {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'red',
+ resizerFillColor: '#4070ff',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Circle',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,
+ resizerCursorType: CursorType.grab
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## annotationSettings
+
+Defines the global settings of annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+
+pdfviewer.annotationSettings = {
+ author: 'XYZ',
+ minHeight: 10,
+ minWidth: 10,
+ maxWidth: 100,
+ maxHeight: 100,
+ isLock: false,
+ skipPrint: false,
+ skipDownload: false,
+ allowedInteractions: [AllowedInteraction.Resize]
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## areaSettings
+
+Defines the defaults for Area annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+
+pdfviewer.areaSettings = {
+ opacity: 1,
+ fillColor: '#ffffff00',
+ strokeColor: '#ff0000',
+ author: 'XYZ',
+ thickness: 1,
+ minHeight: 10,
+ minWidth: 10,
+ maxWidth: 100,
+ maxHeight: 100,
+ isLock: false,
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'white',
+ resizerFillColor: '#4070ff',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Circle',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,
+ resizerCursorType: CursorType.grab
+ },
+ allowedInteractions: [AllowedInteraction.Resize],
+ isPrint: true
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## arrowSettings
+
+Defines the defaults for Arrow annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+
+pdfviewer.arrowSettings = {
+ opacity: 1,
+ fillColor: '#9c2592',
+ strokeColor: '#ff0000',
+ author: 'XYZ',
+ thickness: 1,
+ borderDashArray: 1,
+ lineHeadStartStyle: 'Closed',
+ lineHeadEndStyle: 'Closed',
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'black',
+ resizerFillColor: '#FF4081',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Square',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,
+ resizerCursorType: CursorType.grab
+ },
+ minHeight: 10,
+ minWidth: 10,
+ maxWidth: 100,
+ maxHeight: 0,
+ isLock: false,
+ allowedInteractions: [AllowedInteraction.Resize],
+ isPrint: true
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## circleSettings
+
+Defines the defaults for Circle annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+
+pdfviewer.circleSettings = {
+ opacity: 1,
+ fillColor: '#9c2592',
+ strokeColor: '#ff0000',
+ author: 'XYZ',
+ thickness: 1,
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'black',
+ resizerFillColor: '#FF4081',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Square',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,
+ resizerCursorType: CursorType.grab
+ },
+ minHeight: 10,
+ minWidth: 10,
+ maxWidth: 100,
+ maxHeight: 100,
+ isLock: false,
+ allowedInteractions: [AllowedInteraction.Resize],
+ isPrint: true
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## customStamp
+
+Defines custom stamp items of the PDF Viewer.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+
+pdfviewer.customStamp = [
+ {
+ customStampName: 'Sample',
+ customStampImageSource: 'data:image/png;base64, Syncfusionpdfviewer'
+ }
+];
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## customStampSettings
+
+Defines the defaults for Custom Stamp annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+
+pdfviewer.customStampSettings = {
+ opacity: 1,
+ author: 'XYZ',
+ width: 100,
+ height: 100,
+ left: 200,
+ top: 200,
+ minHeight: 10,
+ minWidth: 10,
+ maxWidth: 100,
+ maxHeight: 100,
+ isLock: false,
+ enableCustomStamp: true,
+ allowedInteractions: [AllowedInteraction.None],
+ isPrint: true
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## distanceSettings
+
+Defines the defaults for Distance annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+
+pdfviewer.distanceSettings = {
+ opacity: 1,
+ fillColor: '#ffffff00',
+ strokeColor: '#ff0000',
+ author: 'Guest',
+ thickness: 1,
+ borderDashArray: 1,
+ lineHeadStartStyle: 'Closed',
+ lineHeadEndStyle: 'Closed',
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'black',
+ resizerFillColor: '#FF4081',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Square',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,
+ resizerCursorType: CursorType.grab
+ },
+ minHeight: 10,
+ minWidth: 10,
+ maxWidth: 100,
+ maxHeight: 100,
+ isLock: false,
+ leaderLength: 40,
+ resizeCursorType: CursorType.move,
+ allowedInteractions: [AllowedInteraction.Resize],
+ isPrint: true
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## enableAnnotation
+
+Enable or disable the Add/Edit Annotations tool in the toolbar.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.enableAnnotation = false;
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## enableAnnotationToolbar
+
+Show or hide the annotation toolbar when the document loads.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.enableAnnotationToolbar = false;
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## enableFreeText
+
+Enable or disable Free Text annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.enableFreeText = false;
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## enableHandwrittenSignature
+
+Enable or disable the handwritten signature feature.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.enableHandwrittenSignature = false;
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## enableInkAnnotation
+
+Enable or disable Ink annotations (true by default).
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.enableInkAnnotation = false;
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## enableMeasureAnnotation
+
+Enable or disable calibrate/measurement annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.enableMeasureAnnotation = false;
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## enableMultiPageAnnotation
+
+Enable or disable multi-page text markup selection in UI.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+
+pdfviewer.enableMultiPageAnnotation = true;
+
+pdfviewer.appendTo('#PdfViewer');
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/FormDesigner.pdf';
+{% endhighlight %}
+{% endtabs %}
+
+## enableShapeAnnotation
+
+Enable or disable shape annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.enableShapeAnnotation = false;
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## enableShapeLabel
+
+Enable or disable labels for shape annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.enableShapeLabel = true;
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## enableStampAnnotations
+
+Enable or disable stamp annotations at load time.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.enableStampAnnotations = false;
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## enableStickyNotesAnnotation
+
+Enable or disable sticky notes annotations at load time.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.enableStickyNotesAnnotation = false;
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## enableTextMarkupAnnotation
+
+Enable or disable text markup annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.enableTextMarkupAnnotation = false;
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## enableTextMarkupResizer
+
+Enable or disable the text markup resizer to modify bounds in the UI.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+
+pdfviewer.enableTextMarkupResizer = true;
+
+pdfviewer.appendTo('#PdfViewer');
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/FormDesigner.pdf';
+{% endhighlight %}
+{% endtabs %}
+
+## exportAnnotationFileName
+
+Gets or sets the exported annotations JSON file name.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.exportAnnotationFileName = 'Annotation export file_1';
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## freeTextSettings
+
+Defines the defaults for Free Text annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, FontStyle, AnnotationResizerLocation, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.freeTextSettings = {
+ opacity: 1,
+ fillColor: '#ffffff00',
+ borderColor: '#4070ff',
+ author: 'XYZ',
+ borderWidth: 1,
+ width: 151,
+ fontSize: 16,
+ height: 24.6,
+ fontColor: '#000',
+ fontFamily: 'Helvetica',
+ defaultText: 'Type Here',
+ textAlignment: 'Right',
+ fontStyle: FontStyle.Italic,
+ allowTextOnly: false,
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'black',
+ resizerFillColor: '#FF4081',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Circle',
+ selectorLineDashArray: [],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,
+ resizerCursorType: null
+ },
+ minHeight: 10,
+ minWidth: 10,
+ maxWidth: 100,
+ maxHeight: 100,
+ isLock: false,
+ allowedInteractions: [AllowedInteraction.None],
+ isPrint: true,
+ isReadonly: false,
+ enableAutoFit: false
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## handWrittenSignatureSettings
+
+Defines the defaults for handwritten signatures.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, DisplayMode, AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.handWrittenSignatureSettings = {
+ signatureItem: ['Signature', 'Initial'],
+ saveSignatureLimit: 1,
+ saveInitialLimit: 1,
+ opacity: 1,
+ strokeColor: '#000000',
+ width: 150,
+ height: 100,
+ thickness: 1,
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'black',
+ resizerFillColor: '#FF4081',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Circle',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,
+ resizerCursorType: CursorType.grab
+ },
+ allowedInteractions: [AllowedInteraction.Resize],
+ signatureDialogSettings: {
+ displayMode: DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload,
+ hideSaveSignature: false
+ },
+ initialDialogSettings: {
+ displayMode: DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload,
+ hideSaveSignature: false
+ }
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## highlightSettings
+
+Defines the defaults for Highlight annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AnnotationResizerLocation, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.highlightSettings = {
+ opacity: 1,
+ color: '#DAFF56',
+ author: 'XYZ',
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'black',
+ resizerFillColor: '#FF4081',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Square',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges
+ },
+ isLock: false,
+ enableMultiPageAnnotation: false,
+ enableTextMarkupResizer: false,
+ allowedInteractions: [AllowedInteraction.Resize],
+ isPrint: true
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## inkAnnotationSettings
+
+Defines the defaults for Ink annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.inkAnnotationSettings = {
+ author: 'XYZ',
+ opacity: 1,
+ strokeColor: '#ff0000',
+ thickness: 1,
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'black',
+ resizerFillColor: '#FF4081',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Circle',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,
+ resizerCursorType: CursorType.grab
+ },
+ isLock: false,
+ allowedInteractions: [AllowedInteraction.Resize],
+ isPrint: true
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## isAnnotationToolbarVisible
+
+Open the annotation toolbar initially and read its visibility state.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+
+pdfviewer.isAnnotationToolbarVisible = true;
+
+pdfviewer.appendTo('#PdfViewer');
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/FormDesigner.pdf';
+{% endhighlight %}
+{% endtabs %}
+
+## lineSettings
+
+Defines the defaults for Line annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AnnotationResizerLocation, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.lineSettings = {
+ opacity: 1,
+ color: '#9c2592',
+ fillColor: '#ffffff00',
+ strokeColor: '#ff0000',
+ author: 'XYZ',
+ thickness: 1,
+ borderDashArray: 1,
+ lineHeadStartStyle: 'None',
+ lineHeadEndStyle: 'None',
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'black',
+ resizerFillColor: '#FF4081',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Square',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,
+ resizerCursorType: null
+ },
+ minHeight: 10,
+ minWidth: 10,
+ maxWidth: 100,
+ maxHeight: 100,
+ isLock: false,
+ allowedInteractions: [AllowedInteraction.Resize],
+ isPrint: true
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## measurementSettings
+
+Defines the defaults for Measurement annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.measurementSettings = {
+ conversionUnit: 'cm',
+ displayUnit: 'cm',
+ scaleRatio: 1,
+ depth: 96
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## perimeterSettings
+
+Defines the defaults for Perimeter annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.perimeterSettings = {
+ opacity: 1,
+ fillColor: '#ffffff00',
+ strokeColor: '#ff0000',
+ author: 'XYZ',
+ thickness: 1,
+ borderDashArray: 1,
+ lineHeadStartStyle: 'Open',
+ lineHeadEndStyle: 'Open',
+ minHeight: 10,
+ minWidth: 10,
+ maxWidth: 100,
+ maxHeight: 100,
+ isLock: false,
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'black',
+ resizerFillColor: '#4070ff',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Circle',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,
+ resizerCursorType: CursorType.grab
+ },
+ allowedInteractions: [AllowedInteraction.Resize],
+ isPrint: true
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## polygonSettings
+
+Defines the defaults for Polygon annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.polygonSettings = {
+ opacity: 1,
+ fillColor: '#ffffff00',
+ strokeColor: '#ff0000',
+ author: 'XYZ',
+ thickness: 1,
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'black',
+ resizerFillColor: '#FF4081',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Square',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,
+ resizerCursorType: CursorType.grab
+ },
+ minHeight: 10,
+ minWidth: 10,
+ maxWidth: 100,
+ maxHeight: 100,
+ isLock: false,
+ allowedInteractions: [AllowedInteraction.Resize],
+ isPrint: true
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## radiusSettings
+
+Defines the defaults for Radius annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.radiusSettings = {
+ opacity: 1,
+ fillColor: '#ffffff00',
+ strokeColor: '#ff0000',
+ author: 'XYZ',
+ thickness: 1,
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'red',
+ resizerFillColor: '#4070ff',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Circle',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,
+ resizerCursorType: CursorType.grab
+ },
+ minHeight: 10,
+ minWidth: 10,
+ maxWidth: 100,
+ maxHeight: 100,
+ isLock: false,
+ allowedInteractions: [AllowedInteraction.Resize],
+ isPrint: true
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## rectangleSettings
+
+Defines the defaults for Rectangle annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.rectangleSettings = {
+ opacity: 1,
+ fillColor: '#9c2592',
+ strokeColor: '#ff0000',
+ author: 'XYZ',
+ thickness: 1,
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'black',
+ resizerFillColor: '#FF4081',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Square',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,
+ resizerCursorType: CursorType.grab
+ },
+ minHeight: 10,
+ minWidth: 10,
+ maxWidth: 100,
+ maxHeight: 100,
+ isLock: false,
+ allowedInteractions: [AllowedInteraction.Resize],
+ isPrint: true
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## shapeLabelSettings
+
+Defines the defaults for shape labels.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.enableShapeLabel = true;
+pdfviewer.shapeLabelSettings = {
+ opacity: 1,
+ fillColor: '#9c2592',
+ borderColor: '#ff0000',
+ fontColor: '#000',
+ fontSize: 16,
+ labelHeight: 24.6,
+ labelMaxWidth: 151,
+ labelContent: 'XYZ'
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## stampSettings
+
+Defines the defaults for Stamp annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AnnotationResizerLocation, DynamicStampItem, SignStampItem, StandardBusinessStampItem, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.stampSettings = {
+ opacity: 1,
+ author: 'XYZ',
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'red',
+ resizerFillColor: '#FF4081',
+ resizerSize: 8,
+ selectionBorderThickness: 5,
+ resizerShape: 'Circle',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,
+ resizerCursorType: CursorType.grab
+ },
+ minHeight: 10,
+ minWidth: 10,
+ maxWidth: 100,
+ maxHeight: 100,
+ isLock: false,
+ dynamicStamps: [
+ DynamicStampItem.Revised,
+ DynamicStampItem.Reviewed,
+ DynamicStampItem.Received,
+ DynamicStampItem.Confidential,
+ DynamicStampItem.Approved,
+ DynamicStampItem.NotApproved
+ ],
+ signStamps: [
+ SignStampItem.Witness,
+ SignStampItem.InitialHere,
+ SignStampItem.SignHere,
+ SignStampItem.Accepted,
+ SignStampItem.Rejected
+ ],
+ standardBusinessStamps: [
+ StandardBusinessStampItem.Approved,
+ StandardBusinessStampItem.NotApproved,
+ StandardBusinessStampItem.Draft,
+ StandardBusinessStampItem.Final,
+ StandardBusinessStampItem.Completed,
+ StandardBusinessStampItem.Confidential,
+ StandardBusinessStampItem.ForPublicRelease,
+ StandardBusinessStampItem.NotForPublicRelease,
+ StandardBusinessStampItem.ForComment,
+ StandardBusinessStampItem.Void,
+ StandardBusinessStampItem.PreliminaryResults,
+ StandardBusinessStampItem.InformationOnly
+ ],
+ allowedInteractions: [AllowedInteraction.Resize],
+ isPrint: true
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## stickyNotesSettings
+
+Defines the defaults for Sticky Notes annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.stickyNotesSettings = {
+ author: 'XYZ',
+ opacity: 1,
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'red',
+ resizerFillColor: '#4070ff',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Circle',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,
+ resizerCursorType: CursorType.grab
+ },
+ isLock: false,
+ allowedInteractions: [AllowedInteraction.Resize],
+ isPrint: true
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## strikethroughSettings
+
+Defines the defaults for Strikethrough annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AnnotationResizerLocation, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.strikethroughSettings = {
+ opacity: 1,
+ color: '#DAFF56',
+ author: 'XYZ',
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'black',
+ resizerFillColor: '#FF4081',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Square',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges
+ },
+ isLock: false,
+ enableMultiPageAnnotation: false,
+ enableTextMarkupResizer: false,
+ allowedInteractions: [AllowedInteraction.Resize],
+ isPrint: true
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## underlineSettings
+
+Defines the defaults for Underline annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AnnotationResizerLocation, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.underlineSettings = {
+ opacity: 1,
+ color: '#9c2592',
+ author: 'XYZ',
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'black',
+ resizerFillColor: '#FF4081',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Square',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges
+ },
+ isLock: false,
+ enableMultiPageAnnotation: false,
+ enableTextMarkupResizer: false,
+ allowedInteractions: [AllowedInteraction.Resize],
+ isPrint: true
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## volumeSettings
+
+Defines the defaults for Volume annotations.
+
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, AnnotationResizerLocation, CursorType, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/PDF_Succinctly.pdf';
+
+pdfviewer.volumeSettings = {
+ opacity: 1,
+ fillColor: '#ffffff00',
+ strokeColor: '#ff0000',
+ author: 'XYZ',
+ thickness: 1,
+ minHeight: 10,
+ minWidth: 10,
+ maxWidth: 100,
+ maxHeight: 100,
+ isLock: false,
+ annotationSelectorSettings: {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'black',
+ resizerFillColor: '#4070ff',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Circle',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,
+ resizerCursorType: CursorType.grab
+ },
+ allowedInteractions: [AllowedInteraction.Resize],
+ isPrint: true
+};
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% endtabs %}
+
+## 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 in Mobile View](../../annotations/annotations-in-mobile-view)
+- [Annotation Events](../../annotations/annotation-event)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotations-in-mobile-view.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotations-in-mobile-view.md
index 66596a462..6a9b862c3 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotations-in-mobile-view.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotations-in-mobile-view.md
@@ -120,3 +120,17 @@ domainurl: ##DomainURL##
**Step 1:** Tap the Close button to close the comment panel.

+
+## 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 Events](../annotations/annotation-event)
+- [Annotation API](../annotations/annotations-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotations-undo-redo.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotations-undo-redo.md
new file mode 100644
index 000000000..cf5960132
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/annotations-undo-redo.md
@@ -0,0 +1,74 @@
+---
+layout: post
+title: Undo and Redo annotation in TypeScript PDF Viewer | Syncfusion
+description: Learn to undo and redo annotations changes in Syncfusion TypeScript PDF Viewer, with UI and programmatic examples.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Perform undo and redo in TypeScript
+
+The PDF Viewer supports undo and redo for Annotations.
+
+
+
+Undo and redo actions can be performed in the following ways:
+
+1. Using keyboard shortcuts:
+ After performing a highlight annotation action, press Ctrl+Z to undo and Ctrl+Y 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.
+
+```html
+
+
+
+
+```
+{% tabs %}
+{% highlight ts tabtitle="index.ts" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation,ThumbnailView, BookmarkView,
+ TextSelection, Annotation, FormDesigner, FormFields } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject( Toolbar,Magnification, Navigation, LinkAnnotation,ThumbnailView,
+ BookmarkView, TextSelection, Annotation, FormDesigner, FormFields);
+
+let pdfviewer: PdfViewer = new PdfViewer({
+ documentPath:'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl:"https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib"
+});
+pdfviewer.appendTo('#PdfViewer');
+
+document.getElementById('undo').addEventListener('click', ()=> {
+ pdfviewer.undo();
+});
+
+document.getElementById('redo').addEventListener('click', ()=> {
+ pdfviewer.redo();
+});
+{% endhighlight %}
+{% endtabs %}
+
+N> To set up the **server-backed PDF Viewer**,
+Add the below `serviceUrl` in the `index.ts` 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" %}
+
+## 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 in Mobile View](../../annotations/annotations-in-mobile-view)
+- [Annotation Events](../../annotations/annotation-event)
+- [Annotations API](../annotations/annotations-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/comments.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/comments.md
index 13e97f838..85e6a0860 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/comments.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/comments.md
@@ -22,7 +22,7 @@ The PDF Viewer control provides options to add, edit, and delete comments for th

-## Adding a comment to the annotation
+## Adding a comment to the annotation in UI
Annotation comments, replies, and status can be managed in the PDF document using the comment panel.
@@ -109,7 +109,190 @@ Edit comments and replies in the following ways:
>Deleting the root comment from the comment panel also deletes the associated annotation.
-## How to check the comments added by the user
+## Add Comments to the annotation Programmatically
+
+### How to Add Commnets 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.
+
+```html
+
+
+```
+{% tabs %}
+{% highlight html tabtitle="Standalone" %}
+import {
+ PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
+ ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer
+} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(
+ Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
+ ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer
+);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+//for adding Comments programmatically
+document.getElementById("addComment")?.addEventListener("click", function() {
+ let annot = pdfviewer.annotationCollection[0];
+ if (annot) {
+ annot.commentType = "add";
+ annot.note = "New Comment";
+ pdfviewer.annotation.editAnnotation(annot);
+ console.log(pdfviewer.annotationCollection[0]);
+ }
+ });
+//for adding reply programmatically
+document.getElementById("addReply")?.addEventListener("click", function() {
+ let annot = pdfviewer.annotationCollection[0];
+ if (annot) {
+ annot.commentType = "add";
+ annot.replyComment = ["Reply Comment"];
+ pdfviewer.annotation.editAnnotation(annot);
+ console.log(pdfviewer.annotationCollection[0]);
+ }
+ });
+{% endhighlight %}
+{% highlight html tabtitle="Server-Backed" %}
+import {
+ PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
+ ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer
+} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(
+ Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
+ ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer
+);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+
+//for adding Comments programmatically
+document.getElementById("addComment")?.addEventListener("click", function() {
+ let annot = pdfviewer.annotationCollection[0];
+ if (annot) {
+ annot.commentType = "add";
+ annot.note = "New Comment";
+ pdfviewer.annotation.editAnnotation(annot);
+ console.log(pdfviewer.annotationCollection[0]);
+ }
+ });
+//for adding reply programmatically
+document.getElementById("addReply")?.addEventListener("click", function() {
+ let annot = pdfviewer.annotationCollection[0];
+ if (annot) {
+ annot.commentType = "add";
+ annot.replyComment = ["Reply Comment"];
+ pdfviewer.annotation.editAnnotation(annot);
+ console.log(pdfviewer.annotationCollection[0]);
+ }
+ });
+{% endhighlight %}
+{% endtabs %}
+
+### 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.
+
+```html
+
+
+```
+
+{% tabs %}
+{% highlight html tabtitle="Standalone" %}
+import {
+ PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
+ ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer
+} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(
+ Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
+ ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer
+);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+
+//for Editing Comments programmatically
+document.getElementById("editComment")?.addEventListener("click", function() {
+ let annot = pdfviewer.annotationCollection[0];
+ if (annot) {
+ annot.commentType = "edit";
+ annot.note = "Edited Comment";
+ pdfviewer.annotation.editAnnotation(annot);
+ console.log(pdfviewer.annotationCollection[0]);
+ }
+ });
+
+//for Editing reply programmatically
+document.getElementById("editReply")?.addEventListener("click", function() {
+ let annot = pdfviewer.annotationCollection[0];
+ if (annot) {
+ annot.commentType = "edit";
+ annot.replyComment = ["Edited Reply Comment"];
+ pdfviewer.annotation.editAnnotation(annot);
+ console.log(pdfviewer.annotationCollection[0]);
+ }
+ });
+
+{% endhighlight %}
+{% highlight html tabtitle="Server-Backed" %}
+import {
+ PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
+ ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer
+} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(
+ Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,
+ ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer
+);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+pdfviewer.appendTo('#PdfViewer');
+
+//for Editing Comments programmatically
+document.getElementById("editComment")?.addEventListener("click", function() {
+ let annot = pdfviewer.annotationCollection[0];
+ if (annot) {
+ annot.commentType = "edit";
+ annot.note = "Edited Comment";
+ pdfviewer.annotation.editAnnotation(annot);
+ console.log(pdfviewer.annotationCollection[0]);
+ }
+ });
+
+//for Editing reply programmatically
+document.getElementById("editReply")?.addEventListener("click", function() {
+ let annot = pdfviewer.annotationCollection[0];
+ if (annot) {
+ annot.commentType = "edit";
+ annot.replyComment = ["Edited Reply Comment"];
+ pdfviewer.annotation.editAnnotation(annot);
+ console.log(pdfviewer.annotationCollection[0]);
+ }
+ });
+
+{% endhighlight %}
+{% endtabs %}
+
+
+
+### How to check the comments added by the user
Comments added to the PDF document can be read using the annotation's `comments` property.
@@ -165,4 +348,19 @@ document.getElementById('checkComments').addEventListener('click', function () {
}
});
-```
\ No newline at end of file
+```
+
+## 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)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/create-modify-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/create-modify-annotation.md
new file mode 100644
index 000000000..26c9757bb
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/create-modify-annotation.md
@@ -0,0 +1,150 @@
+---
+layout: post
+title: Create and modify annotations in TypeScript PDF Viewer | Syncfusion
+description: Learn how to create and modify annotations in Syncfusion TypeScript 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
+
+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.
+
+## 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.
+
+
+
+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.
+
+### Create programmatically
+
+Creation patterns vary slightly by type. Refer to the type pages above for tailored code. Example: creating a Redaction annotation using addAnnotation.
+
+```html
+
+```
+```ts
+// Requires a PdfViewer instance named `viewer`
+document.getElementById('addRedactAnnot')?.addEventListener('click', () => {
+ 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
+ });
+});
+```
+
+See the individual annotation pages (links above) 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/line color (shape and line types)
+
+- Edit Thickness: adjust the border/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
+
+```html
+
+```
+```ts
+// Example: change color/opacity for matching annotations
+// Requires a PdfViewer instance named `pdfviewer`
+document.getElementById('bulkEdit')?.addEventListener('click', () => {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ const ann = pdfviewer.annotationCollection[i];
+ // Example match: author/subject; customize the condition as needed
+ if (ann.author === 'Guest User' || ann.subject === 'Corrections') {
+ ann.color = '#ff0000';
+ ann.opacity = 0.8;
+ pdfviewer.annotation.editAnnotation(ann);
+ }
+ }
+});
+```
+
+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](../annotations/annotation-types/area-annotation)
+- [Annotation Toolbar](../toolbar-customization/annotation-toolbar)
+- [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/javascript-es6/annotations/custom-data.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/custom-data.md
new file mode 100644
index 000000000..baa43508e
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/custom-data.md
@@ -0,0 +1,143 @@
+---
+layout: post
+title: Custom Data in annotations in TypeScript PDF Viewer | Syncfusion
+description: Learn how to use add custom Data in annotation in Syncfusion TypeScript PDF Viewer
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+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.).
+
+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 custom data (annotationSettings)
+
+```ts
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView,
+ TextSelection, TextSearch, Print, Annotation, FormFields, FormDesigner, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(
+ Toolbar,
+ Magnification,
+ Navigation,
+ LinkAnnotation,
+ ThumbnailView,
+ BookmarkView,
+ TextSelection,
+ TextSearch,
+ Print,
+ Annotation,
+ FormFields,
+ FormDesigner
+);
+
+const viewer: PdfViewer = new PdfViewer();
+viewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+viewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+
+// Default annotation settings applied to annotations created via the UI
+viewer.annotationSettings = {
+ author: 'XYZ',
+ minHeight: 10,
+ minWidth: 10,
+ maxWidth: 100,
+ maxHeight: 100,
+ allowedInteractions: [AllowedInteraction.Resize],
+ // Custom data applied to all newly created annotations
+ customData: {
+ appId: 'pdf-review',
+ tenant: 'northwind',
+ featureFlags: { allowShare: true, qaStamp: false }
+ }
+};
+
+viewer.appendTo('#pdfViewer');
+```
+
+## Custom data for Individual Annotation
+
+Provide customData inside individual annotation-type settings when you want specific payloads for different tools.
+
+```ts
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields);
+
+const pdfviewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib',
+
+ // Text markup
+ highlightSettings: { author: 'QA', subject: 'Review', color: '#ffff00', opacity: 0.6, customData: { tag: 'needs-review', priority: 'high' } },
+ strikethroughSettings: { author: 'QA', subject: 'Remove', color: '#ff0000', opacity: 0.6, customData: { tag: 'remove', priority: 'medium' } },
+ underlineSettings: { author: 'Guest User', subject: 'Notes', color: '#00ffff', opacity: 0.9, customData: { tag: 'note', owner: 'guest' } },
+ squigglySettings: { author: 'Guest User', subject: 'Corrections', color: '#00ff00', opacity: 0.9, customData: { tag: 'typo' } },
+
+ // Shapes
+ lineSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, customData: { id: 'ln-1', category: 'connector' } },
+ arrowSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, customData: { id: 'ar-1', category: 'direction' } },
+ rectangleSettings: { fillColor: '#ffffff00', strokeColor: '#222222', thickness: 1, opacity: 1, customData: { id: 'rect-1', zone: 'content' } },
+ circleSettings: { fillColor: '#ffffff00', strokeColor: '#222222', thickness: 1, opacity: 1, customData: { id: 'circ-1', zone: 'highlight' } },
+ polygonSettings: { fillColor: '#ffffff00', strokeColor: '#222222', thickness: 1, opacity: 1, customData: { id: 'poly-1', group: 'area' } },
+
+ // Measurements
+ distanceSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, customData: { units: 'cm', scale: 1 } },
+ perimeterSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, customData: { units: 'cm', calc: 'perimeter' } },
+ areaSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, fillColor: '#ffffff00', customData: { units: 'cm^2', calc: 'area' } },
+ radiusSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, fillColor: '#ffffff00', customData: { units: 'cm', calc: 'radius' } },
+ volumeSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, fillColor: '#ffffff00', customData: { units: 'cm^3', calc: 'volume' } },
+
+ // Others
+ freeTextSettings: { borderColor: '#222222', opacity: 1, customData: { template: 'comment', mentions: ['qa'] } },
+ inkAnnotationSettings: { strokeColor: '#0000ff', thickness: 3, opacity: 0.8, customData: { tool: 'pen', userId: 12345 } },
+ stampSettings: { opacity: 0.9, customData: { stampType: 'Approved', by: 'Manager' } },
+ stickyNotesSettings: { author: 'QA', subject: 'Review', opacity: 1, customData: { channel: 'inbox', unread: true } }
+});
+
+pdfviewer.appendTo('#PdfViewer');
+```
+
+## 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.
+
+```html
+
+```
+
+```ts
+// Assume `pdfviewer` is your PdfViewer instance
+document.getElementById('CustomData')?.addEventListener('click', () => {
+ const annotations = pdfviewer.annotationCollection;
+ annotations.forEach((a: any) => {
+ console.log('Annotation', a.id, 'customData:', a.customData);
+ });
+});
+```
+
+### 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.
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/typescript-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 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/javascript-es6/annotations/custom-tools.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/custom-tools.md
new file mode 100644
index 000000000..b017ee98b
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/custom-tools.md
@@ -0,0 +1,171 @@
+---
+layout: post
+title: Custom annotation tools in TypeScript PDF Viewer | Syncfusion
+description: Learn how to build a custom toolbar for Syncfusion TypeScript PDF Viewer and switch annotation tools programmatically using setAnnotationMode.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Custom annotation tools in TypeScript 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).
+
+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-es6/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.
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+Step 3: Import and inject modules
+
+Make sure the Annotation module is injected. If you also want text selection/search, include those as needed.
+
+```ts
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch);
+
+let pdfviewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+pdfviewer.appendTo('#PdfViewer');
+
+// Wire up custom annotation tools using setAnnotationMode
+const bindAnnoTools = () => {
+ const setMode = (mode: string) => pdfviewer.annotationModule.setAnnotationMode(mode as any);
+
+ document.getElementById('toolHighlight')?.addEventListener('click', () => setMode('Highlight'));
+ document.getElementById('toolUnderline')?.addEventListener('click', () => setMode('Underline'));
+ document.getElementById('toolStrike')?.addEventListener('click', () => setMode('Strikethrough'));
+ document.getElementById('toolRectangle')?.addEventListener('click', () => setMode('Rectangle'));
+ document.getElementById('toolCircle')?.addEventListener('click', () => setMode('Circle'));
+ document.getElementById('toolLine')?.addEventListener('click', () => setMode('Line'));
+ document.getElementById('toolArrow')?.addEventListener('click', () => setMode('Arrow'));
+ document.getElementById('toolPolygon')?.addEventListener('click', () => setMode('Polygon'));
+ document.getElementById('toolFreeText')?.addEventListener('click', () => setMode('FreeText'));
+ document.getElementById('toolInk')?.addEventListener('click', () => setMode('Ink'));
+ document.getElementById('toolSticky')?.addEventListener('click', () => setMode('StickyNotes'));
+ // Measurement tools
+ document.getElementById('toolDistance')?.addEventListener('click', () => setMode('Distance'));
+ document.getElementById('toolPerimeter')?.addEventListener('click', () => setMode('Perimeter'));
+ document.getElementById('toolArea')?.addEventListener('click', () => setMode('Area'));
+ document.getElementById('toolRadius')?.addEventListener('click', () => setMode('Radius'));
+
+ // Exit drawing mode
+ document.getElementById('toolNone')?.addEventListener('click', () => setMode('None'));
+};
+
+bindAnnoTools();
+```
+
+## 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.
+
+```ts
+import { Toolbar as Tool, ClickEventArgs, ItemModel } from '@syncfusion/ej2-navigations';
+
+// Add built-in icon classes via EJ2 CSS (match your version), for example:
+//
+
+const items: ItemModel[] = [
+ { text: 'Highlight', id: 'annHighlight', tooltipText: 'Highlight', prefixIcon: 'e-pv-highlight-icon' },
+ { text: 'Underline', id: 'annUnderline', tooltipText: 'Underline', prefixIcon: 'e-pv-underline-icon' },
+ { text: 'Strike', id: 'annStrike', tooltipText: 'Strikethrough', prefixIcon: 'e-pv-strikethrough-icon' },
+ { type: 'Separator' },
+ { text: 'Rect', id: 'annRect', tooltipText: 'Rectangle', prefixIcon: 'e-pv-shape-rectangle-icon' },
+ { text: 'Circle', id: 'annCircle', tooltipText: 'Circle', prefixIcon: 'e-pv-shape-circle-icon' },
+ { text: 'Line', id: 'annLine', tooltipText: 'Line', prefixIcon: 'e-pv-shape-line-icon' },
+ { text: 'Arrow', id: 'annArrow', tooltipText: 'Arrow', prefixIcon: 'e-pv-shape-arrow-icon' },
+ { text: 'Polygon', id: 'annPolygon', tooltipText: 'Polygon', prefixIcon: 'e-pv-shape-pentagon' },
+ { type: 'Separator' },
+ { text: 'Free Text', id: 'annFreeText', tooltipText: 'Free Text', prefixIcon: 'e-pv-freetext-icon' },
+ { text: 'Ink', id: 'annInk', tooltipText: 'Ink', prefixIcon: 'e-pv-inkannotation-icon' },
+ { text: 'Note', id: 'annSticky', tooltipText: 'Sticky Note', prefixIcon: 'e-pv-sticky-notes' },
+ { type: 'Separator' },
+ { text: 'Distance', id: 'annDistance', tooltipText: 'Distance', prefixIcon: 'e-pv-calibrate-distance-icon' },
+ { text: 'Perimeter', id: 'annPerimeter', tooltipText: 'Perimeter', prefixIcon: 'e-pv-calibrate-perimeter-icon' },
+ { text: 'Area', id: 'annArea', tooltipText: 'Area', prefixIcon: 'e-pv-calibrate-area-icon' },
+ { text: 'Radius', id: 'annRadius', tooltipText: 'Radius', prefixIcon: 'e-pv-calibrate-radius-icon' },
+ { type: 'Separator' },
+ { text: 'Exit', id: 'annNone', tooltipText: 'Exit drawing', align: 'Right' }
+];
+
+const annoToolbar = new Tool({
+ items,
+ overflowMode: 'Scrollable',
+ clicked: (args: ClickEventArgs) => {
+ switch (args.item.id) {
+ case 'annHighlight': pdfviewer.annotationModule.setAnnotationMode('Highlight'); break;
+ case 'annUnderline': pdfviewer.annotationModule.setAnnotationMode('Underline'); break;
+ case 'annStrike': pdfviewer.annotationModule.setAnnotationMode('Strikethrough'); break;
+ case 'annRect': pdfviewer.annotationModule.setAnnotationMode('Rectangle'); break;
+ case 'annCircle': pdfviewer.annotationModule.setAnnotationMode('Circle'); break;
+ case 'annLine': pdfviewer.annotationModule.setAnnotationMode('Line'); break;
+ case 'annArrow': pdfviewer.annotationModule.setAnnotationMode('Arrow'); break;
+ case 'annPolygon': pdfviewer.annotationModule.setAnnotationMode('Polygon'); break;
+ case 'annFreeText': pdfviewer.annotationModule.setAnnotationMode('FreeText'); break;
+ case 'annInk': pdfviewer.annotationModule.setAnnotationMode('Ink'); break;
+ case 'annSticky': pdfviewer.annotationModule.setAnnotationMode('StickyNotes'); break;
+ case 'annDistance': pdfviewer.annotationModule.setAnnotationMode('Distance'); break;
+ case 'annPerimeter': pdfviewer.annotationModule.setAnnotationMode('Perimeter'); break;
+ case 'annArea': pdfviewer.annotationModule.setAnnotationMode('Area'); break;
+ case 'annRadius': pdfviewer.annotationModule.setAnnotationMode('Radius'); break;
+ case 'annNone': pdfviewer.annotationModule.setAnnotationMode('None'); break;
+ }
+ }
+});
+annoToolbar.appendTo('#annotationToolbar');
+```
+
+Notes
+
+- 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).
+- To combine with a fully custom viewer toolbar, see Custom Toolbar in TypeScript PDF Viewer.
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/typescript-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 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/javascript-es6/annotations/customize-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/customize-annotation.md
new file mode 100644
index 000000000..96facef2b
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/customize-annotation.md
@@ -0,0 +1,246 @@
+---
+layout: post
+title: Customize annotations in TypeScript PDF Viewer | Syncfusion
+description: Learn how to customize PDF annotations in Syncfusion TypeScript PDF Viewer using UI tools and programmatic settings (defaults and runtime edits).
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+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.
+
+## Customize via UI
+
+Use the annotation toolbar after selecting an annotation:
+- Edit Color: changes the annotation fill/text color
+
+- Edit Stroke Color: changes border/line color (shapes and lines)
+
+- Edit Thickness: adjusts border/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
+
+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.
+
+TextMarkup Annotations:
+
+- 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:
+
+- 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)
+- Polygon: Use [`polygonSettings`](./annotation-types/polygon-annotation/#default-polygon-settings-during-initialization)
+
+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)
+- Area: Use [`areaSettings`](./annotation-types/area-annotation/#default-area-settings-during-initialization)
+- 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:
+
+- 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)
+- 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)
+
+Set defaults for specific annotation types when creating the PdfViewer instance. Below are examples using settings already used in the annotation type pages.
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation, FormDesigner, FormFields);
+
+const pdfviewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib",
+ // Text markup defaults
+ highlightSettings: { author: 'QA', subject: 'Review', color: '#ffff00', opacity: 0.6 },
+ strikethroughSettings: { author: 'QA', subject: 'Remove', color: '#ff0000', opacity: 0.6 },
+ underlineSettings: { author: 'Guest User', subject: 'Points to be remembered', color: '#00ffff', opacity: 0.9 },
+ squigglySettings: { author: 'Guest User', subject: 'Corrections', color: '#00ff00', opacity: 0.9 },
+
+ // Shapes
+ lineSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8 },
+ arrowSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8 },
+ rectangleSettings: { fillColor: '#ffffff00', strokeColor: '#222222', thickness: 1, opacity: 1 },
+ circleSettings: { fillColor: '#ffffff00', strokeColor: '#222222', thickness: 1, opacity: 1 },
+ polygonSettings: { fillColor: '#ffffff00', strokeColor: '#222222', thickness: 1, opacity: 1 },
+
+ // Measurements
+ distanceSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8 },
+ perimeterSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8 },
+ areaSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, fillColor: '#ffffff00' },
+ radiusSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, fillColor: '#ffffff00' },
+ volumeSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, fillColor: '#ffffff00' },
+
+ // Others
+ freeTextSettings: { borderColor: '#222222', thickness: 1, opacity: 1 },
+ inkAnnotationSettings: { color: '#0000ff', thickness: 3, opacity: 0.8 },
+ stampSettings: { opacity: 0.9 },
+ stickyNotesSettings: { author: 'QA', subject: 'Review', color: '#ffcc00', opacity: 1 }
+});
+
+pdfviewer.appendTo('#PdfViewer');
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, Annotation);
+
+const pdfviewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+
+ highlightSettings: { author: 'QA', subject: 'Review', color: '#ffff00', opacity: 0.6 },
+ strikethroughSettings: { author: 'QA', subject: 'Remove', color: '#ff0000', opacity: 0.6 },
+ underlineSettings: { author: 'Guest User', subject: 'Points to be remembered', color: '#00ffff', opacity: 0.9 },
+ squigglySettings: { author: 'Guest User', subject: 'Corrections', color: '#00ff00', opacity: 0.9 },
+
+ lineSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8 },
+ arrowSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8 },
+ rectangleSettings: { fillColor: '#ffffff00', strokeColor: '#222222', thickness: 1, opacity: 1 },
+ circleSettings: { fillColor: '#ffffff00', strokeColor: '#222222', thickness: 1, opacity: 1 },
+ polygonSettings: { fillColor: '#ffffff00', strokeColor: '#222222', thickness: 1, opacity: 1 },
+
+ distanceSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8 },
+ perimeterSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8 },
+ areaSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, fillColor: '#ffffff00' },
+ radiusSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, fillColor: '#ffffff00' },
+ volumeSettings: { strokeColor: '#0066ff', thickness: 2, opacity: 0.8, fillColor: '#ffffff00' },
+
+ freeTextSettings: { borderColor: '#222222', thickness: 1, opacity: 1 },
+ inkAnnotationSettings: { color: '#0000ff', thickness: 3, opacity: 0.8 },
+ stampSettings: { opacity: 0.9 },
+ stickyNotesSettings: { author: 'QA', subject: 'Review', color: '#ffcc00', opacity: 1 }
+});
+
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+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.
+
+## Customize programmatically at runtime
+
+To update an existing annotation from code, modify its properties and call editAnnotation.
+
+Example: bulk‑update matching annotations.
+
+```html
+
+```
+```ts
+// Requires a PdfViewer instance named `pdfviewer`
+document.getElementById('bulkUpdateAnn')?.addEventListener('click', () => {
+ for (let i = 0; i < pdfviewer.annotationCollection.length; i++) {
+ const ann = pdfviewer.annotationCollection[i];
+ // 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;
+ pdfviewer.annotation.editAnnotation(ann);
+ }
+ }
+});
+```
+
+## Customize Annotation Settings
+
+Defines the settings of the annotations. You can change annotation settings like author name, height, width etc., using [annotationSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#annotationsettings) API
+
+```html
+
+```
+```ts
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView,
+ TextSelection, TextSearch, Print, Annotation, FormFields, FormDesigner } from '@syncfusion/ej2-pdfviewer';
+
+ PdfViewer.Inject(Toolbar,Magnification,Navigation, LinkAnnotation,ThumbnailView,BookmarkView,
+ TextSelection, TextSearch, Print, Annotation,FormFields, FormDesigner);
+
+ let viewer: PdfViewer = new PdfViewer();
+ viewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+ viewer.documentPath = "PDF_Succinctly.pdf";
+ // Change the annotation settings.
+ viewer.annotationSettings = {
+ author: 'XYZ',
+ minHeight: 10,
+ minWidth: 10,
+ maxWidth: 100,
+ maxHeight: 100,
+ isLock: false,
+ skipPrint: false,
+ skipDownload: false,
+ allowedInteractions: [AllowedInteraction.Select, AllowedInteraction.Move]
+ };
+ viewer.appendTo('#PdfViewer');
+```
+## Customize Annotation SelectorSettings
+
+Defines the settings of annotation selector. You can customize the annotation Selector using [annotationSelectorSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#annotationselectorsettings) API
+
+```html
+
+```
+```ts
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView,
+ TextSelection, TextSearch, Print, Annotation, FormFields, FormDesigner, AnnotationResizerLocation, CursorType } from '@syncfusion/ej2-pdfviewer';
+
+ PdfViewer.Inject(Toolbar,Magnification,Navigation, LinkAnnotation,ThumbnailView,BookmarkView,
+ TextSelection, TextSearch, Print, Annotation,FormFields,FormDesigner);
+
+ let viewer: PdfViewer = new PdfViewer();
+ viewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+ viewer.documentPath = "PDF_Succinctly.pdf";
+ // Change the annotation selector settings.
+ viewer.annotationSelectorSettings = {
+ selectionBorderColor: 'blue',
+ resizerBorderColor: 'red',
+ resizerFillColor: '#4070ff',
+ resizerSize: 8,
+ selectionBorderThickness: 1,
+ resizerShape: 'Circle',
+ selectorLineDashArray: [5, 6],
+ resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,
+ resizerCursorType: CursorType.grab
+ };
+ viewer.appendTo('#PdfViewer');
+```
+
+[View Sample on GitHub](https://github.com/SyncfusionExamples/typescript-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)
+- [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/javascript-es6/annotations/delete-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/delete-annotation.md
new file mode 100644
index 000000000..617070b2b
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/delete-annotation.md
@@ -0,0 +1,104 @@
+---
+layout: post
+title: Remove annotations in TypeScript PDF Viewer | Syncfusion
+description: Learn how to remove/delete PDF annotations in Syncfusion TypeScript 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
+
+You can remove annotations using the built-in UI or programmatically. This page shows the common ways 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.
+
+- Secondary toolbar: Select the annotation and click the Delete button on the annotation toolbar.
+
+- 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.
+
+```html
+
+
+
+
+
+```
+```ts
+import {
+ PdfViewer,
+ Toolbar,
+ Magnification,
+ Navigation,
+ LinkAnnotation,
+ ThumbnailView,
+ BookmarkView,
+ TextSelection,
+ TextSearch,
+ Print,
+ Annotation,
+ FormFields,
+ FormDesigner
+} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(
+ Toolbar,
+ Magnification,
+ Navigation,
+ LinkAnnotation,
+ ThumbnailView,
+ BookmarkView,
+ TextSelection,
+ TextSearch,
+ Print,
+ Annotation,
+ FormFields,
+ FormDesigner
+);
+
+// Create viewer
+const viewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ // Standalone resources
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib',
+});
+viewer.appendTo('#PdfViewer');
+
+document.getElementById('del')?.addEventListener('click', () => {
+ // Delete the selected annotation
+ viewer.annotation.deleteAnnotation();
+});
+
+document.getElementById('delbyId')?.addEventListener('click', () => {
+ // Delete the first annotation using its id from the annotation collection
+ if (viewer.annotationCollection.length > 0) {
+ viewer.annotation.deleteAnnotationById(viewer.annotationCollection[0].id);
+ }
+});
+```
+
+N> Deleting via 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/typescript-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)
+- [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/javascript-es6/annotations/export-import/export-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/export-import/export-annotation.md
new file mode 100644
index 000000000..23305a126
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/export-import/export-annotation.md
@@ -0,0 +1,134 @@
+---
+layout: post
+title: Export annotations in TypeScript PDF Viewer | Syncfusion
+description: Learn how to Export annotations in Syncfusion TypeScript PDF Viewer using UI options and programmatic APIs.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Export annotations in TypeScript 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/documentation/api/pdfviewer/index-default#exportannotation) ,[exportAnnotationsAsObject](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#exportannotationsasobject) and [exportAnnotationsAsBase64String](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#exportannotationsasbase64string) APIs.
+
+Use the following end-to-end example to initialize the viewer and export annotations as JSON, XFDF, or as an object.
+
+```html
+
+
+
+
+
+
+
+
+```
+
+```ts
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView,
+ TextSelection, TextSearch, Print, Annotation, FormFields, FormDesigner, AllowedInteraction, AnnotationDataFormat } from '@syncfusion/ej2-pdfviewer';
+
+// Inject required modules
+PdfViewer.Inject(
+ Toolbar,
+ Magnification,
+ Navigation,
+ LinkAnnotation,
+ ThumbnailView,
+ BookmarkView,
+ TextSelection,
+ TextSearch,
+ Print,
+ Annotation,
+ FormFields,
+ FormDesigner
+);
+
+// Initialize the viewer
+let viewer: PdfViewer = new PdfViewer();
+viewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+viewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+viewer.appendTo('#pdfViewer');
+
+// Wire up export actions
+
+//Export Annotation as JSON
+const btnJson = document.getElementById('ExportJSON');
+btnJson?.addEventListener('click', () => {
+ viewer.exportAnnotation(AnnotationDataFormat.Json);
+});
+
+//Export Annotation As XFDF
+const btnXfdf = document.getElementById('ExportXfdf');
+btnXfdf?.addEventListener('click', () => {
+ viewer.exportAnnotation(AnnotationDataFormat.Xfdf);
+});
+
+//Export Annotation As Object
+const btnObject = document.getElementById('ExportAsObject');
+btnObject?.addEventListener('click', () => {
+ viewer.exportAnnotationsAsObject().then((value: any) => {
+ // Persist or transmit the object as needed (DB/API). Keep for future import.
+ console.log('Exported annotation object:', value);
+ });
+});
+
+//Export Annotation as Base 64
+var exportObject1;
+document.getElementById('ExportAsBase64')?.addEventListener('click', function () {
+viewer.exportAnnotationsAsBase64String(AnnotationDataFormat.Json).then(function (value: any) {
+ exportObject1 = value;
+ console.log(exportObject1);
+ })
+ });
+```
+
+## 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](../../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)
+- [Import Annotation](../export-import/import-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)
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/export-import/export-import-events.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/export-import/export-import-events.md
new file mode 100644
index 000000000..bb51559a7
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/export-import/export-import-events.md
@@ -0,0 +1,70 @@
+---
+layout: post
+title: Import/Export events for annotations in TypeScript PDF Viewer | Syncfusion
+description: Learn how to handle Import/Export events for annotations in the Syncfusion TypeScript PDF Viewer component.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Import/Export events for annotations
+
+Import/Export events let you track and customize the full lifecycle of annotation data flowing into and out of the PDF Viewer.
+
+Use them to validate inputs, show progress UI, log audit trails, or block operations based on your business rules. Each event exposes typed event-args (ImportStartEventArgs, ImportSuccessEventArgs, ImportFailureEventArgs, ExportStartEventArgs, ExportSuccessEventArgs, ExportFailureEventArgs) describing the operation context.
+
+## Import events
+- [importStart](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#importstart): Triggers when an import operation starts.
+- [importSuccess](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#importsuccess): Triggers when annotations are successfully imported.
+- [importFailed](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#importfailed): Triggers when importing annotations fails.
+
+## Handle import events
+```ts
+viewer.importStart = (args: any) => {
+ console.log('Import started', args);
+};
+viewer.importSuccess = (args: any) => {
+ console.log('Import success', args);
+};
+viewer.importFailed = (args: any) => {
+ console.error('Import failed', args);
+};
+```
+
+## Export events
+- [exportStart](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#exportstart): Triggers when an export operation starts.
+- [exportSuccess](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#exportsuccess): Triggers when annotations are successfully exported.
+- [exportFailed](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#exportfailed): Triggers when exporting annotations fails.
+
+## Handle export events
+```ts
+viewer.exportStart = (args: any) => {
+ console.log('Export started', args);
+};
+viewer.exportSuccess = (args: any) => {
+ console.log('Export success', args);
+};
+viewer.exportFailed = (args: any) => {
+ console.error('Export failed', args);
+};
+```
+
+Notes:
+- importStart/importSuccess/importFailed cover the lifecycle of annotation imports.
+- exportStart/exportSuccess/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/javascript-es6/annotations/export-import/import-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/export-import/import-annotation.md
new file mode 100644
index 000000000..dcb08ec8e
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/export-import/import-annotation.md
@@ -0,0 +1,112 @@
+---
+layout: post
+title: Import annotations in TypeScript PDF Viewer | Syncfusion
+description: Learn how to import annotations in Syncfusion TypeScript PDF Viewer using UI options and programmatic APIs.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+---
+
+# Import annotations in TypeScript PDF Viewer
+
+You can import annotations into the PDF Viewer in two ways:
+
+- Using the built-in UI in the Comments panel (import JSON or XFDF files)
+- Programmatically by passing an annotation object exported from 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 Import annotations from JSON file or Import annotations from XFDF file and pick the file.
+
+All annotations in the selected file will be applied to the current document.
+
+
+
+## Import programmatically (from object)
+
+Import annotations from an object previously exported using exportAnnotationsAsObject(). Only objects returned by the viewer can be re-imported using [importAnnotation](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#importannotation) method.
+
+The following end-to-end example initializes the viewer and wires a button to import annotations from a pasted/exported object.
+
+```html
+
+
+
+```
+
+```ts
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView,
+ TextSelection, TextSearch, Print, Annotation, FormFields, FormDesigner, AllowedInteraction } from '@syncfusion/ej2-pdfviewer';
+
+// Inject required modules
+PdfViewer.Inject(
+ Toolbar,
+ Magnification,
+ Navigation,
+ LinkAnnotation,
+ ThumbnailView,
+ BookmarkView,
+ TextSelection,
+ TextSearch,
+ Print,
+ Annotation,
+ FormFields,
+ FormDesigner
+);
+
+// Initialize the viewer
+let viewer: PdfViewer = new PdfViewer();
+viewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+viewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+viewer.appendTo('#pdfViewer');
+
+//Exported Annotation as Object
+var exportedObject: string;
+const btnObject = document.getElementById('ExportAsObject');
+btnObject?.addEventListener('click', () => {
+ viewer.exportAnnotationsAsObject().then((value: any) => {
+ // Persist or transmit the object as needed (DB/API). Keep for future import.
+ console.log('Exported annotation object:', value);
+ exportedObject=value;
+ });
+});
+
+// Import from an exported object pasted in the textarea
+const btnImport = document.getElementById('ImportFromObject');
+btnImport?.addEventListener('click', () => {
+ viewer.importAnnotation(JSON.parse(exportedObject));
+});
+```
+
+## Common use cases
+
+- Restore annotations saved earlier (e.g., 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/typescript-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/javascript-es6/annotations/line-angle-constraints.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/line-angle-constraints.md
index b0bdf6c63..bebe9c212 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/line-angle-constraints.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/line-angle-constraints.md
@@ -12,7 +12,10 @@ domainurl: ##DomainURL##
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.
+
+
## 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:
@@ -26,6 +29,33 @@ The following code demonstrates how to enable line angle constraints:
viewer.appendTo("#PdfViewer");
```
+## 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
+
+Desktop platforms:
+- 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/typescript-pdf-viewer-examples/tree/master/How%20to)
+
## Configuration Properties
### enableLineAngleConstraints
@@ -62,31 +92,20 @@ 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
-
-Desktop platforms:
-- 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/typescript-pdf-viewer-examples/tree/master/How%20to)
N> Refer to the TypeScript PDF Viewer [feature tour](https://www.syncfusion.com/pdf-viewer-sdk/javascript-pdf-viewer) for feature highlights. Explore the [TypeScript PDF Viewer examples](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples) to learn how to render and configure the PDF Viewer.
+
+## 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)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/overview.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/overview.md
new file mode 100644
index 000000000..fc8b40e1d
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/overview.md
@@ -0,0 +1,51 @@
+---
+layout: post
+title: Overview of Annotation in TypeScript PDF Viewer control | Syncfusion
+description: Learn about Annotations and how to add, edit, delete, and configure Annotations in the Syncfusion TypeScript PDF Viewer.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Annotations overview
+
+Annotations in PDFViewer are interactive elements that allow users to add notes, highlights, or text boxes directly to a PDF document. These annotations can be used to add context or feedback directly to PDF files, simplifying collaboration during document reviews.
+
+The PDF Viewer component provides a complete set of annotation tools for reviewing, measuring, and marking up PDFs in JavaScript (ES6).
+
+## Supported annotations
+
+- Text markup: [Highlight](../annotations/annotation-types/highlight-annotation), [Underline](../annotations/annotation-types/underline-annotation), [Squiggly](../annotations/annotation-types/Squiggly-annotation), [Strikethrough](../annotations/annotation-types/strikethrough-annotation)
+- Shapes: [Line](../annotations/annotation-types/line-annotation), p[Arrow](../annotations/annotation-types/arrow-annotation), [Rectangle](../annotations/annotation-types/rectangle-annotation), [Circle](../annotations/annotation-types/circle-annotation), [Polygon](../annotations/annotation-types/polygon-annotation)
+- Text boxes: [Free Text](../annotations/annotation-types/free-text-annotation)
+- Drawing: [Ink](../annotations/annotation-types/ink-annotation) (freehand)
+- Stamps: [Standard and custom stamps](../annotations/annotation-types/stamp-annotation)
+- Notes: [Sticky Notes](../annotations/annotation-types/sticky-notes-annotation) (comments)
+- Redaction: Mark and apply [redactions](../annotations/annotation-types/redaction-annotation)
+- Measurement: [Distance](../annotations/annotation-types/distance-annotation), [Perimeter](../annotations/annotation-types/perimeter-annotation), [Area](../annotations/annotation-types/area-annotation), [Radius](../annotations/annotation-types/radius-annotation), [Volume](../annotations/annotation-types/volume-annotation)
+
+## Annotation manipulation capabilities
+
+- [Create annotations](../annotations/create-modify-annotation): Use the toolbar, context menu, or APIs to add highlights, notes, shapes, and more directly onto the PDF document.
+- [Edit annotations](../annotations/create-modify-annotation.md): Modify existing annotations by moving, resizing, or updating text and style properties like color, opacity, and thickness.
+- [Customize annotations](../annotations/customize-annotation): Adjust appearance and behavior—such as fonts, fill colors, and opacity—through the UI or configuration options.
+- [Undo and redo annotations](../annotations/annotations-undo-redo): Revert or reapply annotation actions (add, edit, delete) using toolbar buttons or corresponding APIs.
+- [Import and export annotations](../annotations/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](../annotations/annotation-permission): Enable or disable annotation permission, ensuring compliance with document permissions.
+- Add and manage [comments](../annotations/comments): Insert, edit, and delete comments or sticky notes attached to annotations for clearer feedback and collaboration.
+
+## See also
+
+- [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 Undo Redo](../annotations/annotations-undo-redo)
+- [Annotation API](../annotations/annotations-api)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/signature-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/signature-annotation.md
index fdb3465c5..84c6b61da 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/signature-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/signature-annotation.md
@@ -12,7 +12,9 @@ domainurl: ##DomainURL##
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.
@@ -78,43 +80,7 @@ if (handWrittenSignature) {
{% 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 ts tabtitle="Standalone" %}
-
-import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer} from '@syncfusion/ej2-pdfviewer';
-
-PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
-
-let pdfviewer: PdfViewer = new PdfViewer();
-pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
-pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
-pdfviewer.enableHandwrittenSignature = false
-
-pdfviewer.appendTo('#PdfViewer');
-
-{% endhighlight %}
-{% highlight ts tabtitle="Server-Backed" %}
-
-import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer} from '@syncfusion/ej2-pdfviewer';
-
-PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
-
-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.enableHandwrittenSignature = false
-
-pdfviewer.appendTo('#PdfViewer');
-
-{% 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 a handwritten signature to the PDF Viewer control using the [**addAnnotation()**](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation/#annotation) method.
@@ -243,24 +209,166 @@ if(addHandwrittenSignature){
[View sample in GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples/tree/master/How%20to/Add%20Handwritten%20Signature%20Programmatically)
-## Edit the properties of handwritten signatures
+## Edit Signature Annotation
+
+### 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.

+
+### Edit Signature Annotation Programmatically
+
+With the PDF Viewer library, you can programmatically edit a handwritten signature to the PDF Viewer control using the **editSignature()** method.
+
+Here is an example of adding a handwritten signature programmatically using editSiganture():
+
+```html
+
+
+```
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, DisplayMode, HandWrittenSignatureSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+//Add Signature annotation
+document.getElementById('Signature')?.addEventListener('click', function () {
+ pdfviewer.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",
+ } as HandWrittenSignatureSettings);
+});
+
+//Edit Signature annotation
+document.getElementById('editSignatureAnnotation')?.addEventListener('click', () => {
+ for (let i = 0; i < pdfviewer.signatureCollection.length; i++) {
+ if (pdfviewer.signatureCollection[i].shapeAnnotationType === 'SignatureText') {
+ pdfviewer.signatureCollection[i].fontSize = 12;
+ pdfviewer.signatureCollection[i].thickness = 2;
+ pdfviewer.signatureCollection[i].strokeColor = '#0000FF';
+ pdfviewer.signatureCollection[i].opacity = 0.8;
+ pdfviewer.annotationModule.editSignature(pdfviewer.signatureCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, DisplayMode, HandWrittenSignatureSettings} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+
+const pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf';
+pdfviewer.resourceUrl = 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+pdfviewer.appendTo('#PdfViewer');
+//Add Signature annotation
+document.getElementById('Signature')?.addEventListener('click', function () {
+ pdfviewer.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",
+ } as HandWrittenSignatureSettings);
+});
+
+//Edit Signature annotation
+document.getElementById('editSignatureAnnotation')?.addEventListener('click', () => {
+ for (let i = 0; i < pdfviewer.signatureCollection.length; i++) {
+ if (pdfviewer.signatureCollection[i].shapeAnnotationType === 'SignatureText') {
+ pdfviewer.signatureCollection[i].fontSize = 12;
+ pdfviewer.signatureCollection[i].thickness = 2;
+ pdfviewer.signatureCollection[i].strokeColor = '#0000FF';
+ pdfviewer.signatureCollection[i].opacity = 0.8;
+ pdfviewer.annotationModule.editSignature(pdfviewer.signatureCollection[i]);
+ }
+ }
+});
+{% endhighlight %}
+{% endtabs %}
+
+## Enable/Disable 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 ts tabtitle="Standalone" %}
+
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.enableHandwrittenSignature = false
+
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
+
+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.enableHandwrittenSignature = false
+
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% endtabs %}
+
+## 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)
+- [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/javascript-es6/annotations/text-markup-annotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/text-markup-annotation.md
index 075d2d54a..3d352e368 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/text-markup-annotation.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/annotations/text-markup-annotation.md
@@ -91,7 +91,7 @@ N> To set up the **server-backed PDF Viewer**,
Add the below `serviceUrl` in the `index.ts` file
`pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';`
-{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es6/text-markup-annotation/highlight-mode-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es6/text-markup-annotation/highlight-mode-cs1" %}
Refer to the following code snippet to switch back to normal mode from highlight mode.
@@ -152,12 +152,12 @@ N> To set up the **server-backed PDF Viewer**,
Add the below `serviceUrl` in the `index.ts` file
`pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';`
-{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es6/text-markup-annotation/highlight-normal-mode-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es6/text-markup-annotation/highlight-normal-mode-cs1" %}
## Highlight text programmatically
-Programmatically add highlights using the [addAnnotation](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation/#addannotation) method.
+Programmatically add highlights using the [addAnnotation](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#addannotation) method.
Example:
@@ -291,7 +291,7 @@ N> To set up the **server-backed PDF Viewer**,
Add the below `serviceUrl` in the `index.ts` file
`pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';`
-{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es6/text-markup-annotation/underline-mode-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es6/text-markup-annotation/underline-mode-cs1" %}
Refer to the following code snippet to switch back to normal mode from underline mode.
@@ -352,11 +352,11 @@ N> To set up the **server-backed PDF Viewer**,
Add the below `serviceUrl` in the `index.ts` file
`pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';`
-{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es6/text-markup-annotation/underline-normal-mode-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es6/text-markup-annotation/underline-normal-mode-cs1" %}
## Underline text programmatically
-Programmatically add underlines using the [addAnnotation](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation/#addannotation) method.
+Programmatically add underlines using the [addAnnotation](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#addannotation) method.
Example:
@@ -489,7 +489,7 @@ N> To set up the **server-backed PDF Viewer**,
Add the below `serviceUrl` in the `index.ts` file
`pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';`
-{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es6/text-markup-annotation/strikethrough-mode-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es6/text-markup-annotation/strikethrough-mode-cs1" %}
Refer to the following code snippet to switch back to normal mode from strikethrough mode.
@@ -552,11 +552,11 @@ N> To set up the **server-backed PDF Viewer**,
Add the below `serviceUrl` in the `index.ts` file
`pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';`
-{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es6/text-markup-annotation/strikethrough-normal-mode-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es6/text-markup-annotation/strikethrough-normal-mode-cs1" %}
## Strikethrough text programmatically
-Programmatically add strikethrough using the [addAnnotation](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation/#addannotation) method.
+Programmatically add strikethrough using the [addAnnotation](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#addannotation) method.
Example:
@@ -688,7 +688,7 @@ N> To set up the **server-backed PDF Viewer**,
Add the below `serviceUrl` in the `index.ts` file
`pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';`
-{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es6/text-markup-annotation/squiggly-mode-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es6/text-markup-annotation/squiggly-mode-cs1" %}
Refer to the following code snippet to switch back to normal mode from squiggly mode.
@@ -751,11 +751,11 @@ N> To set up the **server-backed PDF Viewer**,
Add the below `serviceUrl` in the `index.ts` file
`pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';`
-{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es6/text-markup-annotation/squiggly-normal-mode-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es6/text-markup-annotation/squiggly-normal-mode-cs1" %}
## Add squiggly to text programmatically
-Programmatically add squiggly using the [addAnnotation](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation/#addannotation) method.
+Programmatically add squiggly using the [addAnnotation](https://ej2.syncfusion.com/documentation/api/pdfviewer/annotation#addannotation) method.
Example:
@@ -961,7 +961,7 @@ N> To set up the **server-backed PDF Viewer**,
Add the below `serviceUrl` in the `index.ts` 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/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es6/text-markup-annotation/undo-redo-cs1" %}
## Save text markup annotations
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/feature-module.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/feature-module.md
index 91806dbf7..f81645f1f 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es6/feature-module.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/feature-module.md
@@ -14,18 +14,18 @@ The PDF Viewer features are provided as individual modules, allowing application
Available PDF Viewer modules:
-* [**Toolbar**](./toolbar-customization): Built-in toolbar for user interaction.
+* [**Toolbar**](./toolbar-customization/primary-toolbar): 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.
+* [**Navigation**](./interactive-pdf-navigation/page): 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).
+* [**ThumbnailView**](./interactive-pdf-navigation/page-thumbnail): Navigate within the document using page thumbnails.
+* [**BookmarkView**](./interactive-pdf-navigation/bookmark): 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.
+* [**TextSearch**](./text-search/find-text): Search for text across the document.
+* [**Print**](./print/overview): Print the entire document or specific pages directly from the browser.
+* [**Annotation**](./annotations/overview): Add and edit annotations.
+* [**FormFields**](./form-designer/form-filling): Work with form fields in the document.
+* [**FormDesigner**](./form-designer/Create-edit-Style-del-formFields/create-formfields): 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:
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/Create-edit-Style-del-formFields/create-formfields.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/Create-edit-Style-del-formFields/create-formfields.md
index a8b45ca05..3884ad3e4 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/Create-edit-Style-del-formFields/create-formfields.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/Create-edit-Style-del-formFields/create-formfields.md
@@ -13,14 +13,14 @@ The PDF Viewer component supports interactive form field design, including drawi
The PDF Viewer supports the following form field types:
-- Textbox
-- Password
-- CheckBox
-- RadioButton
-- ListBox
-- DropDown
-- Signature field
-- Initial field
+- [Textbox](#add-textbox)
+- [Password](#add-password)
+- [CheckBox](#add-checkbox)
+- [RadioButton](#add-radiobutton)
+- [ListBox](#add-listbox)
+- [DropDown](#add-dropdown)
+- [Signature field](#signature-field)
+- [Initial field](#add-initial-field)
## Add the form field dynamically
@@ -44,9 +44,9 @@ Resize the selected form field using the resize handles on the field boundary. S
### Add Textbox
-1) Open the Form Designer toolbar.
-2) Select Textbox, then click/tap on the page to place it.
-3) Resize/move as needed and set properties in the property panel.
+- Open the Form Designer toolbar.
+- Select Textbox, then click/tap on the page to place it.
+- Resize/move as needed and set properties in the property panel.

@@ -77,9 +77,9 @@ pdfviewer.documentLoad = () => {
### Add Password
-1) Open the Form Designer toolbar.
-2) Select Password, then place it on the page.
-3) Configure tooltip, required, max length, etc.
+- Open the Form Designer toolbar.
+- Select Password, then place it on the page.
+- Configure tooltip, required, max length, etc.

@@ -110,9 +110,9 @@ pdfviewer.documentLoad = () => {
### Add CheckBox
-1) Choose CheckBox in the Form Designer toolbar.
-2) Click on the page to place, duplicate for multiple options if needed.
-3) Use property panel to set IsChecked, tooltip, and appearance.
+- Choose CheckBox in the Form Designer toolbar.
+- Click on the page to place, duplicate for multiple options if needed.
+- Use property panel to set IsChecked, tooltip, and appearance.

@@ -144,9 +144,9 @@ pdfviewer.documentLoad = () => {
### Add RadioButton
-1) Select RadioButton in the Form Designer toolbar.
-2) Place buttons sharing the same Name to create a group (e.g., Gender).
-3) Use property panel to set selection, colors, and tooltip.
+- Select RadioButton in the Form Designer toolbar.
+- Place buttons sharing the same Name to create a group (e.g., Gender).
+- Use property panel to set selection, colors, and tooltip.

@@ -185,9 +185,9 @@ pdfviewer.documentLoad = () => {
### Add ListBox
-1) Choose ListBox in the Form Designer toolbar.
-2) Place the field and add items in the property panel.
-3) Configure font, size, and selection behavior.
+- Choose ListBox in the Form Designer toolbar.
+- Place the field and add items in the property panel.
+- Configure font, size, and selection behavior.

@@ -225,9 +225,9 @@ pdfviewer.documentLoad = () => {
### Add DropDown
-1) Select DropDown in the Form Designer toolbar.
-2) Place the field, then add items via the property panel.
-3) Adjust appearance and default value.
+- Select DropDown in the Form Designer toolbar.
+- Place the field, then add items via the property panel.
+- Adjust appearance and default value.

@@ -265,9 +265,9 @@ pdfviewer.documentLoad = () => {
### Add Signature field
-1) Select Signature field in the Form Designer toolbar.
-2) Place the field where the signer should sign.
-3) Configure indicator text, thickness, tooltip, and required state.
+- Select Signature field in the Form Designer toolbar.
+- Place the field where the signer should sign.
+- Configure indicator text, thickness, tooltip, and required state.

@@ -298,9 +298,9 @@ pdfviewer.documentLoad = () => {
### Add Initial field
-1) Select Initial field in the Form Designer toolbar.
-2) Place the field where initials are required.
-3) Configure indicator text, tooltip, and required state.
+- Select Initial field in the Form Designer toolbar.
+- Place the field where initials are required.
+- Configure indicator text, tooltip, and required state.

diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/Create-edit-Style-del-formFields/edit-formfields.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/Create-edit-Style-del-formFields/edit-formfields.md
index 11e778591..79e5641c4 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/Create-edit-Style-del-formFields/edit-formfields.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/Create-edit-Style-del-formFields/edit-formfields.md
@@ -13,14 +13,14 @@ The PDF Viewer component allows user to edit PDF form fields using the Form Desi
The PDF Viewer supports editing these field types:
-- Textbox
-- Password
-- CheckBox
-- RadioButton
-- ListBox
-- DropDown
-- Signature field
-- Initial field
+- [Textbox](#textbox)
+- [Password](#password)
+- [CheckBox](#checkbox)
+- [RadioButton](#radiobutton)
+- [ListBox](#listbox)
+- [DropDown](#dropdown)
+- [Signature field](#signature-field)
+- [Initial field](#initial-field)
## Edit with the UI
@@ -35,8 +35,8 @@ The PDF Viewer supports editing these field types:
### Edit Textbox
-1) Right-click the textbox → Properties.
-2) Change value, font, size, colors, border thickness, alignment, max length, multiline.
+- Right-click the textbox → Properties.
+- Change value, font, size, colors, border thickness, alignment, max length, multiline.

@@ -85,8 +85,8 @@ pdfviewer.appendTo('#PdfViewer');
### Edit Password
-1) Right-click the password field → Properties.
-2) Change tooltip, required, max length, font, and appearance.
+- Right-click the password field → Properties.
+- Change tooltip, required, max length, font, and appearance.

@@ -136,8 +136,8 @@ pdfviewer.appendTo('#PdfViewer');
### Edit CheckBox
-1) Right-click the checkbox → Properties.
-2) Toggle checked state, change border/background colors and thickness.
+- Right-click the checkbox → Properties.
+- Enable checked state.

@@ -180,8 +180,8 @@ pdfviewer.appendTo('#PdfViewer');
### Edit RadioButton
-1) Right-click a radio button → Properties.
-2) Set selected state, colors, and thickness. Buttons with the same Name form a group; only one can be selected.
+- Right-click a radio button → Properties.
+- Set selected state. Buttons with the same Name form a group; only one can be selected.

@@ -219,8 +219,8 @@ pdfviewer.appendTo('#PdfViewer');
### Edit ListBox
-1) Right-click the list box → Properties.
-2) Add/remove items, set selection, and adjust fonts and colors.
+- Right-click the list box → Properties.
+- Add/remove items, set selection, and adjust fonts and colors.

@@ -269,8 +269,8 @@ pdfviewer.appendTo('#PdfViewer');
### Edit DropDown
-1) Right-click the dropdown → Properties.
-2) Add/remove items, set default value, and adjust appearance.
+- Right-click the dropdown → Properties.
+- Add/remove items, set default value, and adjust appearance.

@@ -319,8 +319,8 @@ pdfviewer.appendTo('#PdfViewer');
### Edit Signature field
-1) Right-click the signature field → Properties.
-2) Change tooltip, thickness, indicator text, required/visibility states.
+- Right-click the signature field → Properties.
+- Change tooltip, thickness, indicator text, required/visibility states.

@@ -364,8 +364,8 @@ pdfviewer.appendTo('#PdfViewer');
### Edit Initial field
-1) Right-click the initial field → Properties.
-2) Change tooltip, indicator text, thickness, and required/visibility states.
+- Right-click the initial field → Properties.
+- Change tooltip, indicator text, thickness, and required/visibility states.

diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/Create-edit-Style-del-formFields/remove-formfields.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/Create-edit-Style-del-formFields/remove-formfields.md
index 388659e91..667789153 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/Create-edit-Style-del-formFields/remove-formfields.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/Create-edit-Style-del-formFields/remove-formfields.md
@@ -17,9 +17,9 @@ You can remove designed form fields directly from the Form Designer toolbar.
Steps:
-1) Select the target form field on the page.
-2) Click the Delete Form Field icon on the Form Designer toolbar.
-3) Alternatively, press the `Delete key` after selecting one or more fields.
+- Select the target form field on the page.
+- Click the Delete Form Field icon on the Form Designer toolbar.
+- Alternatively, press the `Delete key` after selecting one or more fields.

diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/Create-edit-Style-del-formFields/style-formfields.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/Create-edit-Style-del-formFields/style-formfields.md
index 8899c1edc..529aff90b 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/Create-edit-Style-del-formFields/style-formfields.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/Create-edit-Style-del-formFields/style-formfields.md
@@ -13,14 +13,14 @@ The PDF Viewer component allows users to style and customize the appearance of P
Supported field types:
-- Textbox
-- Password
-- CheckBox
-- RadioButton
-- ListBox
-- DropDown
-- Signature field
-- Initial field
+- [Textbox](#textbox)
+- [Password](#password)
+- [CheckBox](#checkbox)
+- [RadioButton](#radiobutton)
+- [ListBox](#listbox)
+- [DropDown](#dropdown)
+- [Signature field](#signature-field)
+- [Initial field](#initial-field)
## Textbox
@@ -73,7 +73,7 @@ pdfviewer.appendTo('#PdfViewer');
### Default Textbox settings
-The PDF Viewer exposes a default settings APIs for form fields. Use the [TextFieldSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#textfieldsettings) to preconfigure TextBox properties applied when adding fields from the Form Designer toolbar.
+The PDF Viewer exposes a default settings APIs for form fields. Use the [TextFieldSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#textfieldsettings) to pre configure TextBox properties applied when adding fields from the Form Designer toolbar.
```ts
// Apply as defaults for Textbox added from toolbar
@@ -138,7 +138,7 @@ if (pw) {
### Default Password settings
-The PDF Viewer exposes default settings APIs for form fields. Use the [PasswordFieldSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#passwordfieldsettings) to preconfigure Password properties applied when adding fields from the Form Designer toolbar.
+The PDF Viewer exposes default settings APIs for form fields. Use the [PasswordFieldSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#passwordfieldsettings) to pre configure Password properties applied when adding fields from the Form Designer toolbar.
```ts
pdfviewer.passwordFieldSettings = {
@@ -197,7 +197,7 @@ if (cb) {
### Default CheckBox settings
-The PDF Viewer exposes default settings APIs for form fields. Use the [CheckBoxFieldSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#checkboxfieldsettings) to preconfigure CheckBox properties applied when adding fields from the Form Designer toolbar.
+The PDF Viewer exposes default settings APIs for form fields. Use the [CheckBoxFieldSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#checkboxfieldsettings) to pre configure CheckBox properties applied when adding fields from the Form Designer toolbar.
```ts
pdfviewer.checkBoxFieldSettings = {
@@ -246,7 +246,7 @@ if (radios.length > 1) {
### Default RadioButton settings
-The PDF Viewer exposes default settings APIs for form fields. Use the [RadioButtonFieldSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#radiobuttonfieldsettings) to preconfigure RadioButton properties applied when adding fields from the Form Designer toolbar.
+The PDF Viewer exposes default settings APIs for form fields. Use the [RadioButtonFieldSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#radiobuttonfieldsettings) to pre configure RadioButton properties applied when adding fields from the Form Designer toolbar.
```ts
pdfviewer.radioButtonFieldSettings = {
@@ -306,7 +306,7 @@ if (lb) {
### Default ListBox settings
-The PDF Viewer exposes default settings APIs for form fields. Use the [listBoxFieldSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#listboxfieldsettings) to preconfigure ListBox properties applied when adding fields from the Form Designer toolbar.
+The PDF Viewer exposes default settings APIs for form fields. Use the [listBoxFieldSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#listboxfieldsettings) to pre configure ListBox properties applied when adding fields from the Form Designer toolbar.
```ts
const customOptions = [
@@ -377,7 +377,7 @@ if (dd) {
### Default DropDown settings
-The PDF Viewer exposes default settings APIs for form fields. DropDown uses [DropDownFieldSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#DropDownfieldsettings) to preconfigure properties applied when adding fields from the Form Designer toolbar.
+The PDF Viewer exposes default settings APIs for form fields. DropDown uses [DropDownFieldSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#DropDownfieldsettings) to pre configure properties applied when adding fields from the Form Designer toolbar.
```ts
const ddOptions = [
@@ -444,7 +444,7 @@ if (sig) {
### Default Signature field settings
-The PDF Viewer exposes default settings APIs for form fields. Use the [SignatureFieldSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#signaturefieldsettings) to preconfigure Signature properties applied when adding fields from the Form Designer toolbar.
+The PDF Viewer exposes default settings APIs for form fields. Use the [SignatureFieldSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#signaturefieldsettings) to pre configure Signature properties applied when adding fields from the Form Designer toolbar.
```ts
pdfviewer.signatureFieldSettings = {
@@ -507,7 +507,7 @@ if (init) {
### Default Initial field settings
-The PDF Viewer exposes default settings APIs for form fields. Use the [InitialFieldSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#initialfieldsettings) to preconfigure Initial properties applied when adding fields from the Form Designer toolbar.
+The PDF Viewer exposes default settings APIs for form fields. Use the [InitialFieldSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/index-default#initialfieldsettings) to pre configure Initial properties applied when adding fields from the Form Designer toolbar.
```ts
pdfviewer.initialFieldSettings = {
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/form-constrain.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/form-constrain.md
index ac25f2b1d..524edf9e8 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/form-constrain.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/form-constrain.md
@@ -11,91 +11,143 @@ documentation: ug
The PDF Viewer components provides support to control user interaction and output behavior of form fields using the following constraints:
-- isReadOnly: Prevents users from editing a field.
-- isRequired: Marks a field as mandatory and participates in validation.
-- isPrint: Includes the field appearance when printing or exporting with print.
+- [isReadOnly](#make-form-fields-readonly): Prevents users from editing a field.
+- [isRequired](#mark-fields-as-required): Marks a field as mandatory and participates in validation.
+- [isPrint](#control-field-print-behavior): Includes the field appearance when printing or exporting with print.
You can set these properties when you create fields, update them later programmatically, or configure default settings so fields created from the Form Designer toolbar inherit the values.
-## isReadOnly
+
-Use `isReadOnly` to make a field non-editable in the UI while keeping it modifiable via code.
+## Make Form Fields Read‑Only
-- Creation
-```ts
-pdfviewer.formDesignerModule.addFormField('Textbox', {
- name: 'EmployeeId',
- bounds: { X: 146, Y: 229, Width: 150, Height: 24 },
- isReadOnly: true,
- value: 'EMP-0001'
-} as TextFieldSettings);
-```
+Use `isReadOnly` to make a field non-editable in the UI while keeping it modifiable via code. Use the following code-snippets to make form fields read-only.
-- Update existing field
```ts
-const field = pdfviewer.formFieldCollections.find(f => f.name === 'EmployeeId');
-if (field) {
- pdfviewer.formDesignerModule.updateFormField(field, { isReadOnly: false } as TextFieldSettings);
-}
-```
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView,
+ TextSelection, Annotation, FormDesigner, FormFields, TextFieldSettings, SignatureFieldSettings } from '@syncfusion/ej2-pdfviewer';
-- Default for new Textbox fields
-```ts
-pdfviewer.textFieldSettings = { isReadOnly: true };
+PdfViewer.Inject(Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView,
+ TextSelection, Annotation, FormDesigner, FormFields);
+
+let pdfviewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+pdfviewer.appendTo('#PdfViewer');
+
+//Use this setting to make Read-only as Default for new Textbox fields
+//pdfviewer.textFieldSettings = { isReadOnly: true };
+
+pdfviewer.documentLoad = () => {
+ // Read-only Textbox
+ pdfviewer.formDesignerModule.addFormField('Textbox', {
+ name: 'EmployeeId',
+ bounds: { X: 146, Y: 229, Width: 150, Height: 24 },
+ isReadOnly: true,
+ value: 'EMP-0001'
+ } as TextFieldSettings);
+
+ // Read-only Signature field
+ pdfviewer.formDesignerModule.addFormField('SignatureField', {
+ name: 'ApplicantSign',
+ bounds: { X: 57, Y: 923, Width: 200, Height: 43 },
+ isReadOnly: true,
+ tooltip: 'Sign to accept the terms'
+ } as SignatureFieldSettings);
+};
```
-## isRequired
+## Mark Fields as Required
Use `isRequired` to mark fields as mandatory so they participate in validation during print/download. Turn on validation with enableFormFieldsValidation and handle validateFormFields to block actions if required fields are empty.
-- Creation
```ts
-pdfviewer.formDesignerModule.addFormField('Textbox', {
- name: 'Email',
- bounds: { X: 146, Y: 260, Width: 220, Height: 24 },
- isRequired: true,
- tooltip: 'Email is required'
-} as TextFieldSettings);
-```
+import {
+ PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView, ThumbnailView,
+ TextSelection, TextSearch, Print, Annotation, FormDesigner, FormFields,
+ TextFieldSettings
+} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(
+ Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView, ThumbnailView,
+ TextSelection, TextSearch, Print, Annotation, FormDesigner, FormFields
+);
+
+// Create and configure the viewer
+let pdfviewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+// 1) Default for new Textbox fields
+pdfviewer.textFieldSettings = { isRequired: true };
-- Validation wiring
-```ts
+// 2) Validation wiring
pdfviewer.enableFormFieldsValidation = true;
pdfviewer.validateFormFields = (args: any) => {
- //validateFormFields event triggers when fields are empty.
- alert("Please fill all required fields. Missing: "+args.formField[0].name);
+ // Triggers when required fields are empty on submit/validate
+ if (args && args.formField && args.formField.length > 0) {
+ alert('Please fill all required fields. Missing: ' + args.formField[0].name);
+ }
};
-```
-- Default for new Textbox fields
-```ts
-pdfviewer.textFieldSettings = { isRequired: true };
+// 3) Creation (add a Textbox form field once the document is loaded)
+pdfviewer.documentLoad = () => {
+ pdfviewer.formDesignerModule.addFormField('Textbox', {
+ name: 'Email',
+ bounds: { X: 146, Y: 260, Width: 220, Height: 24 },
+ isRequired: true,
+ tooltip: 'Email is required'
+ } as TextFieldSettings);
+};
+
+// Mount the viewer
+pdfviewer.appendTo('#pdfViewer'); // Ensure an element with id="pdfViewer" exists in your HTML
```
-## isPrint
+## Control Field Print Behavior
Use `isPrint` to control whether a field’s appearance is included when printing the PDF from the viewer.
-- Creation (do not print a signature field)
```ts
-pdfviewer.formDesignerModule.addFormField('SignatureField', {
- name: 'ApplicantSign',
- bounds: { X: 57, Y: 923, Width: 200, Height: 43 },
- isPrint: false
-} as SignatureFieldSettings);
-```
+// npm install @syncfusion/ej2-pdfviewer
-- Update existing field
-```ts
-const sign = pdfviewer.formFieldCollections.find(f => f.name === 'ApplicantSign');
-if (sign) {
- pdfviewer.formDesignerModule.updateFormField(sign, { isPrint: true } as SignatureFieldSettings);
-}
-```
+import {
+ PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView, ThumbnailView,
+ TextSelection, TextSearch, Print, Annotation, FormDesigner, FormFields,
+ SignatureFieldSettings
+} from '@syncfusion/ej2-pdfviewer';
-- Default for new signature fields
-```ts
+PdfViewer.Inject(
+ Toolbar, Magnification, Navigation, LinkAnnotation, BookmarkView, ThumbnailView,
+ TextSelection, TextSearch, Print, Annotation, FormDesigner, FormFields
+);
+
+// Create and configure the viewer
+let pdfviewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/form-designer.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+
+// 1) Default for new signature fields
pdfviewer.signatureFieldSettings = { isPrint: false };
+
+// 2) Creation (do not print a signature field)
+pdfviewer.documentLoad = () => {
+ pdfviewer.formDesignerModule.addFormField('SignatureField', {
+ name: 'ApplicantSign',
+ bounds: { X: 57, Y: 923, Width: 200, Height: 43 },
+ isPrint: false
+ } as SignatureFieldSettings);
+
+ // 3) Update existing field (toggle to print)
+ const sign = pdfviewer.formFieldCollections.find(f => f.name === 'ApplicantSign');
+ if (sign) {
+ pdfviewer.formDesignerModule.updateFormField(sign, { isPrint: true } as SignatureFieldSettings);
+ }
+};
+
+pdfviewer.appendTo('#pdfViewer'); // Ensure exists
```
N> Printing can be invoked programmatically using pdfviewer.print.print(); fields with isPrint: false will not appear in the print output.
@@ -215,9 +267,9 @@ pdfviewer.signatureFieldSettings = {
## Behavior notes
-- isReadOnly only blocks user edits in the UI. You can still update the field programmatically.
-- isRequired participates in the built-in validation flow. Enable validation to enforce before print/download. See Validate form fields for details.
-- isPrint controls field appearance in the print output. It does not affect download/export unless printing is triggered.
+- Use `isReadOnly` API to only blocks user edits in the UI. You can still update the field programmatically.
+- Use `isRequired` API to participates in the built-in validation flow. Enable validation to enforce before print/download. See Validate form fields for details.
+- Use `isPrint` API controls field appearance in the print output. It does not affect download/export unless printing is triggered.
[View Sample on GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples)
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/form-designer.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/form-designer.md
new file mode 100644
index 000000000..b472abc13
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/form-designer.md
@@ -0,0 +1,142 @@
+---
+layout: post
+title: Form Designer and Toolbar Customization in TypeScript | Syncfusion
+description: Learn here all about form designer and toolbar in Syncfusion TypeScript PDF Viewer of Syncfusion Essential JS 2 and more.
+platform: document-processing
+control: PDF Viewer
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Form Designer and Toolbar Customization in TypeScript
+
+## Form Designer
+
+Create and customize interactive fields directly on the PDF page.
+- **Add fields**: textbox, checkbox, radio button, dropdown, list box, signature, and initials
+- **Edit quickly**: move, resize, align, distribute, copy/paste, undo/redo
+- **Configure properties**: name, value, font, color, border, alignment, required/read-only/visibility, tab order
+- **Control interaction**: toggle read-only, show/hide, and manage printing behavior
+- **Manage fields**: select, group/ungroup, reorder, or delete
+- **Save and print**: persist designed fields in the PDF and print with appearances
+- **Tailor the UI**: show/hide or customize the Form Designer toolbar; handle events for add/edit/select/move/resize
+- The form designer toolbar can be customized by showing or hiding default items and by controlling the order in which the items appear.
+
+Use the following Code-snippet to enable Form Designer by injecting `FormDesigner` Module.
+
+```ts
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, TextFieldSettings } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/form-filling-document.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+```
+
+
+
+## Show or hide the form designer toolbar
+
+Show or hide the form designer toolbar programmatically during initialization or at runtime.
+
+Use the [EnableFormDesigner](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/pdfViewerModel#enableformdesigner) property or the [showFormDesignerToolbar](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/toolbar#showformdesignertoolbar) method to toggle visibility.
+
+The following code snippet explains how to show or hide the toolbar using the `EnableFormDesigner` property.
+
+{% tabs %}
+{% highlight js tabtitle="index.js" %}
+
+ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation, ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView, ej.pdfviewer.BookmarkView,
+ ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner
+);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ enableFormDesigner: false,
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/formdesigner.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib'
+});
+
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% highlight html tabtitle="index.html" %}
+
+
+
+
+ Essential JS 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+## How to customize the form designer toolbar
+
+Choose which tools appear and control their order in the form designer toolbar.
+
+Use [`PdfViewerToolbarSettings`](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/toolbarSettings) with the [`FormDesignerToolbarItems`](https://ej2.syncfusion.com/javascript/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/javascript/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.
+
+The following example demonstrates how to customize the form designer toolbar by configuring specific tools using `FormDesignerToolbarItem`.
+
+{% tabs %}
+{% highlight js tabtitle="index.js" %}
+
+ej.pdfviewer.PdfViewer.Inject(ej.pdfviewer.Toolbar, ej.pdfviewer.Magnification, ej.pdfviewer.Navigation,
+ ej.pdfviewer.Annotation, ej.pdfviewer.LinkAnnotation, ej.pdfviewer.ThumbnailView,
+ ej.pdfviewer.BookmarkView, ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch,
+ ej.pdfviewer.FormFields, ej.pdfviewer.FormDesigner);
+
+var pdfviewer = new ej.pdfviewer.PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/formdesigner.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib'
+});
+
+pdfviewer.toolbarSettings = {
+ formDesignerToolbarItems: [
+ "TextboxTool",
+ "PasswordTool",
+ "CheckBoxTool",
+ "RadioButtonTool",
+ "DropdownTool",
+ "ListboxTool",
+ "DrawSignatureTool",
+ "DeleteTool"
+ ]
+};
+
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% highlight html tabtitle="index.html" %}
+
+
+
+
+ Essential JS 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/form-filling.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/form-filling.md
index 58e17880e..3487c9b29 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/form-filling.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/form-filling.md
@@ -12,20 +12,41 @@ domainurl: ##DomainURL##
The PDF Viewer displays existing form fields in a PDF and enables users to fill, validate, and download the filled data.
+## Form Fields
+
+Work with the runtime form fields present in a PDF Form.
+- Render existing fields
+- Fill fields.
+- Import/Export form data as JSON, XFDF, FDF, or as a plain object
+- Inject FormFields to enable form-filling features.
+
+Use the following code-snippet to enable form-filling by injecting `FormFields` Module.
+
+```ts
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields} from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields);
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/form-filling-document.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+```
+
+
+
The PDF Viewer supports the following form field types:
-* Text box
-* Password
-* Check box
-* Radio button
-* List box
-* Dropdown
-* Signature field
-* Initial field
+* [Text box](../form-designer/Create-edit-Style-del-formFields/create-formfields#add-listbox)
+* [Password](../form-designer/Create-edit-Style-del-formFields/create-formfields#add-password)
+* [Check box](../form-designer/Create-edit-Style-del-formFields/create-formfields#add-checkbox)
+* [Radio button](../form-designer/Create-edit-Style-del-formFields/create-formfields#add-radiobutton)
+* [List box](../form-designer/Create-edit-Style-del-formFields/create-formfields#add-listbox)
+* [Dropdown](../form-designer/Create-edit-Style-del-formFields/create-formfields#add-dropdown)
+* [Signature field](../form-designer/Create-edit-Style-del-formFields/create-formfields#add-signature-field)
+* [Initial field](../form-designer/Create-edit-Style-del-formFields/create-formfields#add-initial-field)
-
+
-## Disabling form fields
+## Disabling form filling
The PDF Viewer provides an option to disable interaction with form fields using `enableFormDesigner` API. Use the following configuration to disable form fields in the viewer.
@@ -42,7 +63,7 @@ pdfviewer.enableFormDesigner = false; //To disable Form Desinger
pdfviewer.appendTo('#PdfViewer');
```
-## Access interactive form fields
+## Access form fields
You can access the collection of all interactive form fields in the loaded document using the `formFieldCollection` property. Fetch the collection after the document is loaded.
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/group-formfields.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/group-formfields.md
index 4730922d4..eb518a163 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/group-formfields.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/group-formfields.md
@@ -13,11 +13,11 @@ In PDF forms, multiple widgets can represent the same logical form field. The Sy
Key behavior when fields share the same Name:
-- Textbox and Password: Text entered in one widget appears in all widgets with the same name.
-- CheckBox: Checking one widget checks all widgets with the same name (mirrored state).
-- RadioButton: Widgets with the same name are grouped; only one radio button in the group can be selected at a time.
-- ListBox and DropDown: The selected item is shared across widgets with the same name.
-- Signature field and Initial field: The applied signature/initial is mirrored 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 checks all widgets with the same name (mirrored state).
+- **RadioButton**: Widgets with the same name are grouped; only one radio button in the group can be selected at a time.
+- **ListBox and DropDown**: The selected item is shared across widgets with the same name.
+- **Signature field and Initial field**: The applied signature/initial is mirrored across widgets with the same name.
N> Grouping is driven solely by the Name property. Bounds determine placement; name determines grouping.
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/import-export-formfields/export-formfields.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/import-export-formfields/export-formfields.md
index 2250de7dd..ac00a3e49 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/import-export-formfields/export-formfields.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/import-export-formfields/export-formfields.md
@@ -11,9 +11,9 @@ documentation: ug
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
+- [FDF](#export-as-fdf)
+- [XFDF](#export-as-xfdf)
+- [JSON](#export-as-json)
## Export as FDF
@@ -137,7 +137,7 @@ document.getElementById('exportObj')!.addEventListener('click', () => {
- Export as JSON for easy integration with REST APIs.
- Export as FDF/XFDF for interoperability with other PDF tools.
- Export as object to combine with your app state and store securely.
-- Automate exports after validation using validateFormFields.
+- Automate exports after [validation](../form-validation) using validateFormFields.
[View Sample on GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples)
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/import-export-formfields/import-formfields.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/import-export-formfields/import-formfields.md
index 2f20c84c0..0bd3344a7 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/import-export-formfields/import-formfields.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/import-export-formfields/import-formfields.md
@@ -11,9 +11,9 @@ documentation: ug
The PDF Viewer provides APIs to import interactive form field values into the currently loaded PDF. You can import from the following formats:
-- FDF
-- XFDF
-- JSON
+- [FDF](#import-as-fdf)
+- [XFDF](#import-as-xfdf)
+- [JSON](#import-as-json)
Supported API:
- importFormFields(sourceOrObject, format)
@@ -94,7 +94,7 @@ document.getElementById('importJson')!.addEventListener('click', () => {
## Import as Object
-Import data previously exported with exportFormFieldsAsObject. Useful for client-side roundtrips without writing a file.
+Import data previously exported with exportFormFieldsAsObject. Useful for client-side round trips without writing a file.
```html
@@ -137,7 +137,7 @@ document.getElementById('importData')!.addEventListener('click', () => {
- Pre-fill application forms from your database using JSON.
- Migrate data from other PDF tools using FDF/XFDF.
- Restore user progress stored locally or on the server using object import.
-- Combine with validation to block print/download until required fields are filled.
+- Combine with [validation](../form-validation) to block print/download until required fields are filled.
[View Sample on GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples)
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/overview.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/overview.md
index 4866709a1..78e68fe2d 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/overview.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/form-designer/overview.md
@@ -11,40 +11,69 @@ documentation: ug
Syncfusion TypeScript PDF Viewer provides a complete forms experience. Design new forms or enhance existing PDFs, fill and validate fields, import or export data, and capture signatures — all via an intuitive UI and rich APIs.
+The viewer supports both runtime form filling and an interactive Form Designer to create or modify fields.
+
+## Form Fields
+
+Work with the runtime form fields present in a PDF Form.
+- Render existing fields
+- [Fill fields](./form-filling).
+- [Import/Export](./import-export-formfields/export-formfields) form data as JSON, XFDF, FDF, or as a plain object
+- Inject [FormFields](./form-designer) to enable form-filling features.
+
+Use the following code-snippet to enable form-filling by injecting `FormFields` Module.
+
+```ts
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields} from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields);
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/form-filling-document.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+```
+
+
+
## Form Designer
Create and customize interactive fields directly on the PDF page.
-- Add fields: textbox, checkbox, radio button, dropdown, list box, signature, and initials
-- Edit quickly: move, resize, align, distribute, copy/paste, undo/redo
-- Configure properties: name, value, font, color, border, alignment, required/read-only/visibility, tab order
-- Manage fields: select, group/ungroup, reorder, or delete
-- Save and print: persist designed fields in the PDF and print with appearances
-- Tailor the UI: show/hide or customize the Form Designer toolbar, and handle events for add/edit/select/move/resize
+- [Add fields](../form-designer/Create-edit-Style-del-formFields/create-formfields): textbox, checkbox, radio button, dropdown, list box, signature, and initials
+- [Edit quickly](../form-designer/Create-edit-Style-del-formFields/edit-formfields): move, resize, align, distribute, copy/paste, undo/redo
+- [Configure properties](../form-designer/Create-edit-Style-del-formFields/style-formfields): name, value, font, color, border, alignment, required/read-only/visibility, tab order
+- [Control interaction](../form-designer/form-constrain): toggle read-only, show/hide, and manage printing behavior
+- [Manage fields](../form-designer/group-formfields): select, group/ungroup, reorder, or delete
+- [Save and print](../download): persist designed fields in the PDF and print with appearances
+- [Tailor the UI](./form-designer#how-to-customize-the-form-designer-toolbar): show/hide or customize the Form Designer toolbar; handle events for add/edit/select/move/resize
-## Form Fields
+Use the following Code-snippet to enable Form Designer by injecting `FormDesigner` Module.
+
+```ts
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, TextFieldSettings } from '@syncfusion/ej2-pdfviewer';
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner);
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/form-filling-document.pdf";
+pdfviewer.resourceUrl = "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+pdfviewer.appendTo('#PdfViewer');
+```
-Work with the runtime form fields present in a PDF (AcroForm).
-- Parse and render existing fields
-- Fill fields and validate input (required, read-only, print visibility)
-- Import/Export form data as JSON, XFDF, FDF, or as a plain object
-- Control interaction: toggle read-only, show/hide, and manage printing behavior
+
## Supported form field types
-- Textbox
-- Password
-- CheckBox
-- RadioButton
-- ListBox
-- DropDown
-- Signature field
-- Initial field
+- [Textbox](../form-designer/Create-edit-Style-del-formFields/create-formfields#add-textbox)
+- [Password](../form-designer/Create-edit-Style-del-formFields/create-formfields#add-password)
+- [CheckBox](../form-designer/Create-edit-Style-del-formFields/create-formfields#add-checkbox)
+- [RadioButton](../form-designer/Create-edit-Style-del-formFields/create-formfields#add-radiobutton)
+- [ListBox](../form-designer/Create-edit-Style-del-formFields/create-formfields#add-listbox)
+- [DropDown](../form-designer/Create-edit-Style-del-formFields/create-formfields#add-dropdown)
+- [Signature field](../form-designer/Create-edit-Style-del-formFields/create-formfields#add-signature-field)
+- [Initial field](../form-designer/Create-edit-Style-del-formFields/create-formfields#add-initial-field)
## Typical workflows
-- Design → Save → Fill: create or modify fields, save them into the PDF, then fill and validate
-- Fill → Export/Import: complete forms and export data to JSON/XFDF/FDF, or import data to prefill
-- Customize → Integrate: wire up events and business rules; tailor the designer toolbar for your app
+- **Design** → Save → Fill: [create or modify fields](./Create-edit-Style-del-formFields/create-formfields), save them into the PDF, then fill and validate
+- **Fill** → [Export/Import](./import-export-formfields/export-formfields): complete forms and export data to JSON/XFDF/FDF, or import data to fill
+- **Customize** → Integrate: wire up events and business rules; tailor the designer [toolbar](./form-designer#how-to-customize-the-form-designer-toolbar) for your app
## See also
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/getting-started-with-server-backed.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/getting-started-with-server-backed.md
index dcbab9ccb..b73a5b5ef 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es6/getting-started-with-server-backed.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/getting-started-with-server-backed.md
@@ -1,7 +1,7 @@
---
layout: post
-title: Getting started with TypeScript PDF Viewer (server-backed) | Syncfusion
-description: Learn how to set up and use the Syncfusion TypeScript PDF Viewer in server-backed mode using the EJ2 quickstart, including module injection and web service configuration.
+title: Getting started with server-backed TypeScript PDF Viewer | Syncfusion
+description: Learn how to set up and use the Syncfusion TypeScript PDF Viewer in server-backed mode, including module injection and web service configuration.
platform: document-processing
control: PDF Viewer
documentation: ug
@@ -10,13 +10,13 @@ domainurl: ##DomainURL##
# Getting started with TypeScript PDF Viewer (server-backed)
-This guide explains how to create the PDF Viewer component and configure its features in TypeScript using the Essential JS 2 [quickstart](https://github.com/SyncfusionExamples/ej2-quickstart-webpack-) seed repository in server-backed mode.
+This guide explains how to create the PDF Viewer component and configure its features in TypeScript using the Essential JS 2 [quickstart](https://github.com/SyncfusionExamples/ej2-quickstart-webpack) seed repository in server-backed mode.
-> This application is integrated with a webpack configuration (`webpack.config.js`) and uses the latest version of the [webpack-cli](https://webpack.js.org/api/cli/#commands). It requires Node.js `v14.15.0` or higher. For more information, refer to the [webpack getting started guide](https://webpack.js.org/guides/getting-started/).
+> This application is integrated with a webpack configuration (`webpack.config.js`) and uses the latest version of the [webpack-cli](https://webpack.js.org/api/cli#commands). It requires Node.js `v14.15.0` or higher. For more information, refer to the [webpack getting started guide](https://webpack.js.org/guides/getting-started).
## Set up the development environment
-Open a command prompt in the target directory and run the following command to clone the Syncfusion JavaScript (Essential JS 2) quickstart project from [GitHub](https://github.com/SyncfusionExamples/ej2-quickstart-webpack-).
+Open a command prompt in the target directory and run the following command to clone the Syncfusion JavaScript (Essential JS 2) quickstart project from [GitHub](https://github.com/SyncfusionExamples/ej2-quickstart-webpack).
{% tabs %}
{% highlight bash tabtitle="CMD" %}
@@ -152,7 +152,7 @@ document.getElementById('load').addEventListener('click', function () {
N> The Web API link https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/ used in the `serviceUrl` property is intended for demonstration and evaluation only. For production, host your own web service with the required server configuration. You can reuse the [GitHub web service example](https://github.com/SyncfusionExamples/EJ2-PDFViewer-WebServices) or [Docker image](https://hub.docker.com/r/syncfusion/pdfviewer-server). **Standalone mode is strongly recommended.**
-{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es6/getting-started-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es6/getting-started-cs1" %}
## Module injection
@@ -198,7 +198,7 @@ Inject modules using the `PdfViewer.Inject` method.
dotnet run
```
-6. The PDF Viewer server instance runs at `https://localhost:5001`. Navigate to `https://localhost:5001/pdfviewer` to see the default GET response. Bind this URL to the [serviceUrl](https://ej2.syncfusion.com/documentation/api/pdfviewer/#serviceurl) property of the PDF Viewer as shown below.
+6. The PDF Viewer server instance runs at `https://localhost:5001`. Navigate to `https://localhost:5001/pdfviewer` to see the default GET response. Bind this URL to the [serviceUrl](https://ej2.syncfusion.com/documentation/api/pdfviewer#serviceurl) property of the PDF Viewer as shown below.
{% tabs %}
{% highlight ts tabtitle="app.ts" %}
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/getting-started.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/getting-started.md
index f9882a5ff..2f26ca11b 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es6/getting-started.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/getting-started.md
@@ -1,7 +1,7 @@
---
layout: post
-title: Getting started with TypeScript PDF Viewer (standalone) | Syncfusion
-description: Learn how to set up and use the Syncfusion TypeScript PDF Viewer in standalone mode using the EJ2 quickstart, including local resource configuration and module injection.
+title: Getting started with standalone TypeScript PDF Viewer | Syncfusion
+description: Learn how to set up and use the Syncfusion TypeScript PDF Viewer in standalone mode, including local resource configuration and module injection.
platform: document-processing
control: PDF Viewer
documentation: ug
@@ -10,13 +10,13 @@ domainurl: ##DomainURL##
# Getting started with TypeScript PDF Viewer (standalone)
-This guide explains how to create the PDF Viewer component and configure its features in TypeScript using the Essential JS 2 [quickstart](https://github.com/SyncfusionExamples/ej2-quickstart-webpack-) seed repository.
+This guide explains how to create the PDF Viewer component and configure its features in TypeScript using the Essential JS 2 [quickstart](https://github.com/SyncfusionExamples/ej2-quickstart-webpack) seed repository.
-> This application is integrated with a webpack configuration (`webpack.config.js`) and uses the latest version of the [webpack-cli](https://webpack.js.org/api/cli/#commands). It requires Node.js `v14.15.0` or higher. For more information, refer to the [webpack getting started guide](https://webpack.js.org/guides/getting-started/).
+> This application is integrated with a webpack configuration (`webpack.config.js`) and uses the latest version of the [webpack-cli](https://webpack.js.org/api/cli#commands). It requires Node.js `v14.15.0` or higher. For more information, refer to the [webpack getting started guide](https://webpack.js.org/guides/getting-started).
## Set up the development environment
-Open a command prompt in the target directory and run the following command to clone the Syncfusion JavaScript (Essential JS 2) quickstart project from [GitHub](https://github.com/SyncfusionExamples/ej2-quickstart-webpack-).
+Open a command prompt in the target directory and run the following command to clone the Syncfusion JavaScript (Essential JS 2) quickstart project from [GitHub](https://github.com/SyncfusionExamples/ej2-quickstart-webpack).
{% tabs %}
{% highlight bash tabtitle="CMD" %}
@@ -187,7 +187,7 @@ pdfviewer.appendTo('#PdfViewer');
{% endhighlight %}
{% endtabs %}
-{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es6/getting-started-cs2/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es6/getting-started-cs2" %}
## Module injection
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/how-to/custom-context-menu.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/how-to/custom-context-menu.md
index e7afdf532..e4fa8aa2b 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es6/how-to/custom-context-menu.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/how-to/custom-context-menu.md
@@ -10,7 +10,7 @@ domainurl: ##DomainURL##
# Customize the context menu in PDF Viewer
-PDF Viewer supports adding custom options to the context menu using the [addCustomMenu()](https://ej2.syncfusion.com/documentation/api/pdfviewer/#addcustommenu) method. Define actions for custom items with the [customContextMenuSelect()](https://ej2.syncfusion.com/documentation/api/pdfviewer/#customcontextMenuselect) method.
+PDF Viewer supports adding custom options to the context menu using the [addCustomMenu()](https://ej2.syncfusion.com/documentation/api/pdfviewer#addcustommenu) method. Define actions for custom items with the [customContextMenuSelect()](https://ej2.syncfusion.com/documentation/api/pdfviewer#customcontextMenuselect) method.
### Add a custom option
@@ -127,7 +127,7 @@ Toggle the display of the default context menu. When the addCustomMenu parameter
#### Show or hide custom items before opening
-Use [customContextMenuBeforeOpen()](https://ej2.syncfusion.com/documentation/api/pdfviewer/#customcontextMenubeforeopen) to hide or show custom options dynamically.
+Use [customContextMenuBeforeOpen()](https://ej2.syncfusion.com/documentation/api/pdfviewer#customcontextMenubeforeopen) to hide or show custom options dynamically.
```ts
@@ -290,7 +290,7 @@ The following is the output of the custom context menu with customization.
{% endtabs %}
N> To set up the **server-backed PDF Viewer**,
-Add the below [serviceUrl](https://ej2.syncfusion.com/documentation/api/pdfviewer/#serviceurl) in the `index.ts` file
+Add the below [serviceUrl](https://ej2.syncfusion.com/documentation/api/pdfviewer#serviceurl) in the `index.ts` file
`viewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';`
-{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es5/custom-context-menu/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es5/custom-context-menu" %}
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/how-to/custom-fonts-ts.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/how-to/custom-fonts-ts.md
index 5d39df28d..10330a098 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es6/how-to/custom-fonts-ts.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/how-to/custom-fonts-ts.md
@@ -8,7 +8,7 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Add custom fonts in PDF Viewer
+# Add custom fonts in TypeScript PDF Viewer
The TypeScript PDF Viewer supports loading, editing, and saving custom fonts in form fields such as text boxes, list boxes, and drop-downs by using the customFonts property. Add the required TTF files to the resource URL directory used by the viewer so they can be loaded at runtime and used in forms.
@@ -20,35 +20,26 @@ To use custom fonts in the Syncfusion PDF Viewer, add the custom TTF files to th
Steps to add custom fonts
-**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.
+**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](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/javascript-es6/getting-started#add-the-pdf-viewer-component) folder that serves as the resource URL path. Make sure this resource URL points to a local path in your application. You may:
+- Place fonts directly under `ej2-pdfviewer-lib` or under `ej2-pdfviewer-lib/fallback fonts`. Reference them by relative path in `customFonts` (e.g., `"calibri.ttf"`, `"fallback fonts/calibri.ttf"`).
+- Or use a direct absolute URL to the font file if it’s hosted and CORS-accessible.
**Step 2:** Use the following code to configure custom fonts in the PDF Viewer.
{% tabs %}
-{% highlight js tabtitle="Standalone" %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer} from '@syncfusion/ej2-pdfviewer';
-let viewer: PdfViewer = new PdfViewer();
-PdfViewer.Inject(ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.Print, ej.pdfviewer.Navigation, ej.pdfviewer.Toolbar,ej.pdfviewer.Magnification, ej.pdfviewer.Annotation, ej.pdfviewer.FormDesigner, ej.pdfviewer.FormFields);
-viewer.documentPath= 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
-viewer.resourceUrl:'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
-viewer.customFonts: ["arialbd.ttf", "arial.ttf", "BKANT.TTF", "calibri.ttf", "GARA.TTF", "GARAIT.TTF", "msgothic.ttc", "trebuc.ttf", "wingding.ttf"];
+PdfViewer.Inject(Toolbar, Magnification, Navigation, Annotation, LinkAnnotation, ThumbnailView, BookmarkView, TextSelection, TextSearch, FormFields, FormDesigner, PageOrganizer);
-//PDF Viewer control rendering starts
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
+pdfviewer.resourceUrl = window.location.origin + "/resources/ej2-pdfviewer-lib";
+pdfviewer.customFonts = ["simsun.ttc", "sumsinb.ttf", "arial/arialbd.ttf", "arial/arial.ttf", "BKANT.TTF", "calibri.ttf", "GARA.TTF", "GARAIT.TTF", "msgothic.ttc", "trebuc.ttf", "wingding.ttf"];
pdfviewer.appendTo('#PdfViewer');
-{% endhighlight %}
-{% highlight js tabtitle="Server-Backed" %}
-
-let viewer: PdfViewer = new PdfViewer();
-PdfViewer.Inject(ej.pdfviewer.TextSelection, ej.pdfviewer.TextSearch, ej.pdfviewer.Print, ej.pdfviewer.Navigation, ej.pdfviewer.Toolbar,ej.pdfviewer.Magnification, ej.pdfviewer.Annotation, ej.pdfviewer.FormDesigner, ej.pdfviewer.FormFields);
-viewer.documentPath= 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
-viewer.serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
-viewer.customFonts: ["arialbd.ttf", "arial.ttf", "BKANT.TTF", "calibri.ttf", "GARA.TTF", "GARAIT.TTF", "msgothic.ttc", "trebuc.ttf", "wingding.ttf"];
-
-
//PDF Viewer control rendering starts
pdfviewer.appendTo('#PdfViewer');
-
{% endhighlight %}
{% endtabs %}
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/how-to/extract-text-option-ts.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/how-to/extract-text-option-ts.md
index 622501c8a..6864ed9b4 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es6/how-to/extract-text-option-ts.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/how-to/extract-text-option-ts.md
@@ -50,4 +50,12 @@ viewer.appendTo("#PdfViewer");
N> Text search: When using the `extractTextOption.TextOnly` or `extractTextOption.None` options, the `findText` method is unavailable. Use the `findTextAsync` method to perform text searches asynchronously.
-[View sample in GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples/tree/master/How%20to/)
\ No newline at end of file
+[View sample in GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples/tree/master/How%20to/Extract%20Text%20Option)
+
+## See Also
+
+[Text Search Features](../text-search/text-search-features)
+[Find Text](../text-search/find-text)
+[Text Search Events](../text-search/text-search-events)
+[Extract Text](../how-to/extract-text-ts.md)
+[Extract Text Completed](./extract-text-completed-ts)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/how-to/extract-text-ts.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/how-to/extract-text-ts.md
index b5f851f03..3af26f91c 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es6/how-to/extract-text-ts.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/how-to/extract-text-ts.md
@@ -12,19 +12,28 @@ documentation: ug
The `extractText` method extracts text from one or more pages and can return plain text or text with bounds for each element.
### extractText method
+
Retrieves text data from one page or a range of pages based on the specified options.
#### Parameters:
-**startIndex:** The starting page index for text extraction (0-based index).
-**endIndex or isOptions:** Either the ending page index (for multiple pages) or an option specifying extraction criteria for a single page.
+- **startIndex:** The starting page index for text extraction (0-based index).
+
+- **endIndex or isOptions:** Either the ending page index (for multiple pages) or an option specifying extraction criteria for a single page.
+
+- **options (optional):** Additional options, such as `TextOnly` for plain text or `TextAndBounds` for detailed text data with bounds.
+
+#### Available Options
-**options (optional):** Additional options, such as `TextOnly` for plain text or `TextAndBounds` for detailed text data with bounds.
+- **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 plain text without bounds.
-- TextAndBounds: Extracts text with bounds (coordinates).
+- **TextOnly:** Extracts only the plain text from the document. This option excludes any layout or positional information.
-#### Returns:
+- **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.
+
+#### 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).
@@ -75,4 +84,78 @@ extractTextButtons.addEventListener('click', function () {
- Single page: Extracts text from page 1 (`startIndex = 1`) using `TextOnly`.
- Multiple pages: Extracts text from pages 0–2 (`startIndex = 0, endIndex = 2`) using `TextOnly`.
-[View sample in GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples/tree/master/How%20to/)
\ No newline at end of file
+### Programmatic Examples for Extract Text Option API
+Here is an example that demonstrates how to use the extractText Option along with event handling:
+
+```html
+
+
+
+
+```
+
+```ts
+import { PdfViewer, TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields, PageInfoModel, ExtractTextOption } from '@syncfusion/ej2-pdfviewer';
+
+// Inject required modules
+PdfViewer.Inject(TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields);
+
+const viewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib'
+});
+viewer.appendTo('#PdfViewer');
+
+// None (no text info)
+const btnNone = document.getElementById('extractNoneRange');
+if (btnNone) {
+ btnNone.addEventListener('click', function () {
+ viewer.extractText(0, 2, ExtractTextOption.None).then((val) => {
+ console.log('None (Pages 0–2):', val);
+ });
+ });
+}
+
+// TextOnly
+const btnTextOnly = document.getElementById('extractTextOnlyRange');
+if (btnTextOnly) {
+ btnTextOnly.addEventListener('click', function () {
+ viewer.extractText(0, 2, ExtractTextOption.TextOnly).then((val: any) => {
+ console.log('TextOnly (Pages 0–2):');
+ console.log(val);
+ });
+ });
+}
+
+// BoundsOnly
+const btnBoundsOnly = document.getElementById('extractBoundsOnlyRange');
+if (btnBoundsOnly) {
+ btnBoundsOnly.addEventListener('click', function () {
+ viewer.extractText(0, 2, ExtractTextOption.BoundsOnly).then((val: any) => {
+ // Typically returns val.textData with bounds per page
+ console.log('BoundsOnly (Pages 0–2):');
+ console.log(val);
+ });
+ });
+}
+
+// TextAndBounds
+const btnTextAndBounds = document.getElementById('extractTextAndBoundsRange');
+if (btnTextAndBounds) {
+ btnTextAndBounds.addEventListener('click', function () {
+ viewer.extractText(0, 2, ExtractTextOption.TextAndBounds).then((val: any) => {
+ console.log('TextAndBounds (Pages 0–2):');
+ console.log(val);
+ });
+ });
+}
+```
+
+[View sample in GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples/tree/master/How%20to/Extract%20Text)
+
+## See Also
+
+[Extract Text Options](./extract-text-option-ts)
+[Find Text](../text-search/find-text)
+[Text Search Features](../text-search/text-search-events)
+[Text Search Events](../text-search/text-search-events)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/FormDesigner.gif b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/FormDesigner.gif
new file mode 100644
index 000000000..317055993
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/FormDesigner.gif differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/FormDesigner.png b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/FormDesigner.png
new file mode 100644
index 000000000..70ac22677
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/FormDesigner.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/FormFields.gif b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/FormFields.gif
new file mode 100644
index 000000000..39f0f46e9
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/FormFields.gif differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/FormFill.png b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/FormFill.png
new file mode 100644
index 000000000..e28aacb85
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/FormFill.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/addformfield.gif b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/addformfield.gif
index 88f70cbb4..4f3f9f563 100644
Binary files a/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/addformfield.gif and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/addformfield.gif differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/delete_button.png b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/delete_button.png
index 3642d2e50..96bea516a 100644
Binary files a/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/delete_button.png and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/delete_button.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/dragformfield.gif b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/dragformfield.gif
index 97666468f..e7259a8ba 100644
Binary files a/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/dragformfield.gif and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/dragformfield.gif differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/dynamic-textSearch.gif b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/dynamic-textSearch.gif
new file mode 100644
index 000000000..92003b85b
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/dynamic-textSearch.gif differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/edit_color.png b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/edit_color.png
index 1c335dd0b..37de4a877 100644
Binary files a/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/edit_color.png and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/edit_color.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/edit_opacity.png b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/edit_opacity.png
index 1c813aca2..662f7d748 100644
Binary files a/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/edit_opacity.png and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/edit_opacity.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/locale-ar.gif b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/locale-ar.gif
new file mode 100644
index 000000000..e3de1affe
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/locale-ar.gif differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/locale-de.gif b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/locale-de.gif
new file mode 100644
index 000000000..a1a1a68a1
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/locale-de.gif differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/locale-us.gif b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/locale-us.gif
new file mode 100644
index 000000000..3e4a73016
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/locale-us.gif differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/print-newwindow.gif b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/print-newwindow.gif
new file mode 100644
index 000000000..a45dd03f4
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/print-newwindow.gif differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/print-rotate.gif b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/print-rotate.gif
new file mode 100644
index 000000000..a007fac41
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/print-rotate.gif differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/print.gif b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/print.gif
new file mode 100644
index 000000000..d212e4f3e
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/print.gif differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/resizeformfield.gif b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/resizeformfield.gif
index 06d97cf67..f462bf216 100644
Binary files a/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/resizeformfield.gif and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/resizeformfield.gif differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/shape_fillColor.png b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/shape_fillColor.png
index 3f7a2519e..ecacc143a 100644
Binary files a/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/shape_fillColor.png and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/shape_fillColor.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/shape_opacity.png b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/shape_opacity.png
index 70cf57c03..91e287d92 100644
Binary files a/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/shape_opacity.png and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/shape_opacity.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/shape_strokecolor.png b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/shape_strokecolor.png
index 366b7e763..fd808900b 100644
Binary files a/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/shape_strokecolor.png and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/shape_strokecolor.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/shape_thickness.png b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/shape_thickness.png
index 7d3545d5f..15165be65 100644
Binary files a/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/shape_thickness.png and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/shape_thickness.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/textSearch.gif b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/textSearch.gif
new file mode 100644
index 000000000..656596f82
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/textSearch.gif differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/ui-checkbox-edit.png b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/ui-checkbox-edit.png
index 41130691e..cc5753272 100644
Binary files a/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/ui-checkbox-edit.png and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/ui-checkbox-edit.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/ui-form-constraint.png b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/ui-form-constraint.png
new file mode 100644
index 000000000..53e4169bb
Binary files /dev/null and b/Document-Processing/PDF/PDF-Viewer/javascript-es6/images/ui-form-constraint.png differ
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/print/enable-print-rotation.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/print/enable-print-rotation.md
new file mode 100644
index 000000000..956623aed
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/print/enable-print-rotation.md
@@ -0,0 +1,57 @@
+---
+layout: post
+title: Enable Print Rotation in TypeScript PDF Viewer | Syncfusion
+description: Learn how to enable print rotation for landscape documents in the Syncfusion TypeScript PDF Viewer component.
+platform: document-processing
+control: Print
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Enable print rotation in the PDF Viewer
+
+Set the `enablePrintRotation` property to control whether landscape pages are rotated automatically to fit the paper orientation. Keep it enabled to minimize clipping, or disable it to preserve the original orientation.
+
+
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+
+import { PdfViewer, TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+// Inject required modules
+PdfViewer.Inject(TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields, PageOrganizer);
+
+const pdfviewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib",
+ enablePrintRotation: true,
+});
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+
+import { PdfViewer, TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields, PageOrganizer } from '@syncfusion/ej2-pdfviewer';
+
+// Inject required modules
+PdfViewer.Inject(TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields, PageOrganizer);
+
+const pdfviewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/',
+ enablePrintRotation: true,
+});
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample in GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples)
+
+## 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/javascript-es6/print/events.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/print/events.md
new file mode 100644
index 000000000..553fefadf
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/print/events.md
@@ -0,0 +1,115 @@
+---
+layout: post
+title: Print Events in TypeScript PDF Viewer | Syncfusion
+description: Learn how to configure print events and track usage and implements workflows in the Syncfusion TypeScript PDF Viewer component.
+platform: document-processing
+control: Print
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Print events in Typescript PDF Viewer
+
+Subscribe to print life cycle events to track usage and implement custom workflows.
+
+| Name | Description |
+|--------------|-------------|
+| `printStart` | Raised when a print action begins. Use the event to log activity or cancel printing. |
+| `printEnd` | Raised after a print action completes. Use the event to notify users or clean up resources. |
+
+## printStart event
+The [`printStart`](https://ej2.syncfusion.com/documentation/api/pdfviewer#printstart) event runs when printing starts from the toolbar or from code. Use it to validate prerequisites or cancel the action.
+
+### Event arguments
+Review [`PrintStartEventArgs`](https://ej2.syncfusion.com/documentation/api/pdfviewer/printStartEventArgs) for details such as `fileName` and the `cancel` option.
+
+The following example logs the file that is being printed and shows how to cancel the operation.
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+
+import { PdfViewer, PrintStartEventArgs, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,ThumbnailView,BookmarkView, TextSelection } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar,Magnification,Navigation, Annotation, LinkAnnotation,ThumbnailView,BookmarkView, TextSelection);
+
+let pdfviewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib",
+ printStart: (args: PrintStartEventArgs) => {
+ console.log('Print action has started for file: ' + args.fileName);
+ // To cancel the print action
+ // args.cancel = true;
+ }
+});
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+
+import { PdfViewer, PrintStartEventArgs, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,ThumbnailView,BookmarkView, TextSelection } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar,Magnification,Navigation, Annotation, LinkAnnotation,ThumbnailView,BookmarkView, TextSelection);
+
+let pdfviewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/',
+ printStart: (args: PrintStartEventArgs) => {
+ console.log('Print action has started for file: ' + args.fileName);
+ // To cancel the print action
+ // args.cancel = true;
+ }
+});
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% endtabs %}
+
+## printEnd event
+The [`printEnd`](https://ej2.syncfusion.com/documentation/api/pdfviewer#printend) event triggers after printing completes. Use it to finalize analytics or inform users that printing finished.
+
+### Event arguments
+See [`PrintEndEventArgs`](https://ej2.syncfusion.com/documentation/api/pdfviewer/printEndEventArgs) for available values such as `fileName`.
+
+The following example logs the printed file name.
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+
+import { PdfViewer, PrintEndEventArgs, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,ThumbnailView,BookmarkView, TextSelection } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar,Magnification,Navigation, Annotation, LinkAnnotation,ThumbnailView,BookmarkView, TextSelection);
+
+let pdfviewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib",
+ printEnd: (args: PrintEndEventArgs) => {
+ console.log('Printed File Name: ' + args.fileName);
+ }
+});
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+
+import { PdfViewer, PrintEndEventArgs, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,ThumbnailView,BookmarkView, TextSelection } from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar,Magnification,Navigation, Annotation, LinkAnnotation,ThumbnailView,BookmarkView, TextSelection);
+
+let pdfviewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/',
+ printEnd: (args: PrintEndEventArgs) => {
+ console.log('Printed File Name: ' + args.fileName);
+ }
+});
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% endtabs %}
+
+## 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/javascript-es6/print/overview.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/print/overview.md
new file mode 100644
index 000000000..81d26f2a2
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/print/overview.md
@@ -0,0 +1,125 @@
+---
+layout: post
+title: Print Overview in TypeScript PDF Viewer | Syncfusion
+description: Learn how to enable, monitor and customize printing in the Syncfusion TypeScript PDF Viewer component.
+platform: document-processing
+control: Print
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Print Overview in TypeScript PDF Viewer Control
+
+The TypeScript PDF Viewer includes built‑in printing via the toolbar and APIs so you 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 TypeScript PDF Viewer
+
+The Syncfusion TypeScript 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` property.
+
+The following TypeScript examples render the PDF Viewer with printing enabled in standalone and server-backed applications.
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,ThumbnailView,BookmarkView, TextSelection} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar,Magnification,Navigation, Annotation, LinkAnnotation,ThumbnailView,BookmarkView, TextSelection);
+
+let pdfviewer: PdfViewer = new PdfViewer({enablePrint: true, documentPath:'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',resourceUrl: "https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib"});
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,ThumbnailView,BookmarkView, TextSelection} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar,Magnification,Navigation, Annotation, LinkAnnotation,ThumbnailView,BookmarkView, TextSelection);
+
+let pdfviewer: PdfViewer = new PdfViewer({enablePrint: true, documentPath:'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/'});
+pdfviewer.appendTo('#PdfViewer');
+
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,ThumbnailView,BookmarkView, TextSelection} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar,Magnification,Navigation, Annotation, LinkAnnotation,ThumbnailView,BookmarkView, TextSelection);
+
+let pdfviewer: PdfViewer = new PdfViewer({enablePrint: true, documentPath:'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf'});
+
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% endtabs %}
+
+## Print programmatically in Typescript PDF Viewer
+
+To start printing from code, call the `print.print()` method after loading a document. This approach is useful when you need to wire up custom UI or initiate printing automatically.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+
+import { PdfViewer, TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields, PageInfoModel } from '@syncfusion/ej2-pdfviewer';
+
+// Inject required modules
+PdfViewer.Inject(TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields);
+
+const pdfviewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib"
+});
+pdfviewer.appendTo('#PdfViewer');
+//print on button click
+const printButton = document.getElementById('print');
+if (printButton) {
+ printButton.onclick = function () {
+ pdfviewer.print.print();
+ }
+}
+
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+
+import { PdfViewer, TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields, PageInfoModel } from '@syncfusion/ej2-pdfviewer';
+
+// Inject required modules
+PdfViewer.Inject(TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields);
+
+const pdfviewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/'
+});
+pdfviewer.appendTo('#PdfViewer');
+//print on button click
+const printButton = document.getElementById('print');
+if (printButton) {
+ printButton.onclick = function () {
+ pdfviewer.print.print();
+ }
+}
+
+{% endhighlight %}
+{% endtabs %}
+
+## Key capabilities
+
+- Enable or disable printing with the enablePrint property
+- Start printing from UI (toolbar Print) or programmatically using print.print()
+- Control output quality with the printScaleFactor property (0.5–5)
+- Auto‑rotate pages during print using enablePrintRotation
+- Choose where printing happens with printMode (Default or NewWindow)
+- Track the life cycle with printStart and printEnd events
+
+[View Sample in GitHub](https://github.com/SyncfusionExamples/typescript-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/javascript-es6/print/print-modes.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/print/print-modes.md
new file mode 100644
index 000000000..3dff4b665
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/print/print-modes.md
@@ -0,0 +1,64 @@
+---
+layout: post
+title: Print Modes in TypeScript PDF Viewer | Syncfusion
+description: Learn how to configure print modes for PDF Documents in the Syncfusion TypeScript PDF Viewer component.
+platform: document-processing
+control: Print
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Print modes in the PDF Viewer
+
+Use the `printMode` property to choose 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 or tab, which can help with browser pop-up policies.
+
+
+
+N> Browser pop-up blockers must allow new windows or tabs when you use `pdfviewer.printMode ="NewWindow";`.
+
+The following example shows how to set the print mode.
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+
+import { PdfViewer, TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields, PageOrganizer, PrintMode } from '@syncfusion/ej2-pdfviewer';
+
+// Inject required modules
+PdfViewer.Inject(TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields, PageOrganizer);
+
+const pdfviewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib",
+});
+pdfviewer.printMode ="NewWindow";
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+
+import { PdfViewer, TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields, PageOrganizer, PrintMode } from '@syncfusion/ej2-pdfviewer';
+
+// Inject required modules
+PdfViewer.Inject(TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields, PageOrganizer);
+
+const pdfviewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/',
+});
+pdfviewer.printMode ="NewWindow";
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample in GitHub](https://github.com/SyncfusionExamples/typescript-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/javascript-es6/print/print-quality.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/print/print-quality.md
new file mode 100644
index 000000000..ec0df6c44
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/print/print-quality.md
@@ -0,0 +1,60 @@
+---
+layout: post
+title: Customize Print Quality in TypeScript PDF Viewer | Syncfusion
+description: Learn how to customize print quality for PDF Documents in the Syncfusion TypeScript PDF Viewer component.
+platform: document-processing
+control: Print
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Customize print quality using the printScaleFactor API
+
+The PDF Viewer allows you to adjust the print rendering quality by setting the [printScaleFactor](https://ej2.syncfusion.com/documentation/api/pdfviewer#printScaleFactor) property. Valid values range from 0.5 to 5. Higher values produce sharper output but also increase rendering time.
+
+By default, `printScaleFactor` is set to 1.
+
+N> Values outside the 0.5–5 range revert to the standard print quality (value 1).
+
+The following example demonstrates how to update the scale factor before printing.
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+
+import { PdfViewer, TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields } from '@syncfusion/ej2-pdfviewer';
+
+// Inject required modules
+PdfViewer.Inject(TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields);
+
+const pdfviewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib",
+});
+pdfviewer.printScaleFactor = 0.5;
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+
+import { PdfViewer, TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields } from '@syncfusion/ej2-pdfviewer';
+
+// Inject required modules
+PdfViewer.Inject(TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields);
+
+const pdfviewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/',
+});
+pdfviewer.printScaleFactor = 0.5;
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% endtabs %}
+
+[View sample in GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples/tree/master/How%20to/Customization%20%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/javascript-es6/text-search.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/text-search.md
deleted file mode 100644
index 23aa2e17d..000000000
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es6/text-search.md
+++ /dev/null
@@ -1,413 +0,0 @@
----
-layout: post
-title: Text search in TypeScript PDF Viewer control | Syncfusion
-description: Learn how to configure text search, handle search events, and run programmatic searches in the Syncfusion TypeScript PDF Viewer.
-platform: document-processing
-control: Text search
-documentation: ug
-domainurl: ##DomainURL##
----
-# Text search in TypeScript PDF Viewer control
-
-The text search feature in the PDF Viewer locates and highlights matching content within a document. Enable or disable this capability with the following configuration.
-
-```html
-
-
-
-
- Essential JS 2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
-{% tabs %}
-{% highlight ts tabtitle="Standalone" %}
-
-import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,ThumbnailView,BookmarkView, TextSelection} from '@syncfusion/ej2-pdfviewer';
-
-PdfViewer.Inject(Toolbar,Magnification,Navigation, Annotation, LinkAnnotation,ThumbnailView,BookmarkView, TextSelection);
-
-let pdfviewer: PdfViewer = new PdfViewer({enableTextSearch: true, documentPath:'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf'});
-pdfviewer.appendTo('#PdfViewer');
-
-{% endhighlight %}
-{% highlight ts tabtitle="Server-Backed" %}
-
-
-import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,ThumbnailView,BookmarkView, TextSelection} from '@syncfusion/ej2-pdfviewer';
-
-PdfViewer.Inject(Toolbar,Magnification,Navigation, Annotation, LinkAnnotation,ThumbnailView,BookmarkView, TextSelection);
-
-let pdfviewer: PdfViewer = new PdfViewer({enableTextSearch: true, documentPath:'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf'});
-pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
-pdfviewer.appendTo('#PdfViewer');
-
-{% endhighlight %}
-{% endtabs %}
-
-## Text search features
-
-### Real-time search suggestions while typing
-Typing in the search box immediately surfaces suggestions that match the entered text. The list refreshes on every keystroke so users can quickly jump to likely results without completing the entire term.
-
-
-
-### Select search suggestions from the popup
-After typing in the search box, the popup lists relevant matches. Selecting an item jumps directly to the corresponding occurrence in the PDF.
-
-
-
-### Search text with the Match Case option
-Enable the Match Case checkbox to limit results to case-sensitive matches. Navigation commands then step through each exact match in sequence.
-
-
-
-### Search text without Match Case
-Leave the Match Case option cleared to highlight every occurrence of the query, regardless of capitalization, and navigate through each result.
-
-
-
-### Search a list of words with Match Any Word
-Enable Match Any Word to split the query into separate words. The popup proposes matches for each word and highlights them throughout the document.
-
-
-
-### Programmatic search with settings
-
-While the PDF Viewer toolbar offers an interactive search experience, you can also trigger and customize searches programmatically by calling the `searchText` method with tailored options.
-
-#### Using `searchText`
-
-Use the `searchText` method to start a search with optional filters that control case sensitivity and whole-word behavior.
-
-```typescript
-// searchText(text: string, isMatchCase?: boolean, isMatchWholeWord?: boolean)
-pdfviewer.textSearch.searchText('search text', false, false);
-```
-
-- `isMatchCase` (optional boolean): Determines whether the search should be case-sensitive.
-- `isMatchWholeWord` (optional boolean): Ensures the entire string is matched as a standalone word.
-
-#### Match Case
-
-Set the `isMatchCase` parameter to `true` to perform a case-sensitive search that mirrors the Match Case option in the search panel.
-
-```typescript
-import { PdfViewer } from '@syncfusion/ej2-pdfviewer';
-
-let pdfviewer: PdfViewer = new PdfViewer({
- documentPath:'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf'
-});
-pdfviewer.appendTo('#PdfViewer');
-
-// Later, to search programmatically:
-// This will only find instances of "PDF" in uppercase.
-pdfviewer.textSearch.searchText('PDF', true);
-```
-
-#### Match Whole Word
-
-Set the `isMatchWholeWord` parameter to `true` to restrict results to whole-word matches. For example, a search for "view" will not match "viewer".
-
-```typescript
-import { PdfViewer } from '@syncfusion/ej2-pdfviewer';
-
-let pdfviewer: PdfViewer = new PdfViewer({
- documentPath:'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf'
-});
-pdfviewer.appendTo('#PdfViewer');
-
-// Later, to search programmatically:
-// This will find "pdf" but not "pdf-succinctly"
-pdfviewer.textSearch.searchText('pdf', false, true);
-```
-
-**Note on Match Any Word:** The Match Any Word checkbox in the toolbar splits the input into multiple words and searches for each term individually. This differs from the `isMatchWholeWord` parameter, which enforces a whole-word match on the entire query string.
-
-The following text search methods are available in the PDF Viewer,
-
-* [**Search text**](https://ej2.syncfusion.com/documentation/api/pdfviewer/textSearch/#searchtext): Searches the target text in the PDF document and highlights each occurrence in the pages.
-* [**Search next**](https://ej2.syncfusion.com/documentation/api/pdfviewer/textSearch/#searchnext): Searches the next occurrence of the current query from the active match.
-* [**Search previous**](https://ej2.syncfusion.com/documentation/api/pdfviewer/textSearch/#searchprevious): Searches the previous occurrence of the current query from the active match.
-* [**Cancel text search**](https://ej2.syncfusion.com/documentation/api/pdfviewer/textSearch/#canceltextsearch): Cancels the current text search and removes the highlighted occurrences from the PDF Viewer.
-
-
-
-## Find text method
-Use the `findText` method to locate a string or an array of strings and return the bounding rectangles for each match. Optional parameters support case-sensitive comparisons and page scoping so you can retrieve coordinates for a single page or the entire document.
-
-### Find and get the bounds of a text
-Searches for the specified text within the document and returns the bounding rectangles of the matched text. The search can be case-sensitive based on the provided parameter. It returns the bounding rectangles for all pages in the document where the text was found. The following code snippet shows how to get the bounds of the specified text:
-The following code snippet shows how to get the bounds of the specified text:
-
-```html
-
-```
-
-{% tabs %}
-{% highlight ts tabtitle="Standalone" %}
-
-import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation,ThumbnailView,BookmarkView,
- TextSelection, TextSearch, Print, Annotation,FormFields,FormDesigner, PageOrganizer} from "../src/index";
-
- PdfViewer.Inject(Toolbar,Magnification,Navigation, LinkAnnotation,ThumbnailView,BookmarkView,
- TextSelection, TextSearch, Print, Annotation,FormFields,FormDesigner, PageOrganizer);
-
- let viewer: PdfViewer = new PdfViewer();
- viewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
- document.getElementById('textbounds').addEventListener('click', function() {
- console.log(viewer.textSearch.findText('pdf', false));
- });
- viewer.appendTo("#pdfViewer");
-
-{% endhighlight %}
-{% highlight ts tabtitle="Server-backed" %}
-
-import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation,ThumbnailView,BookmarkView,
- TextSelection, TextSearch, Print, Annotation,FormFields,FormDesigner, PageOrganizer} from "../src/index";
-
- PdfViewer.Inject(Toolbar,Magnification,Navigation, LinkAnnotation,ThumbnailView,BookmarkView,
- TextSelection, TextSearch, Print, Annotation,FormFields,FormDesigner, PageOrganizer);
-
- let viewer: PdfViewer = new PdfViewer();
- viewer.serviceUrl = "https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer";
- viewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
- document.getElementById('textbounds').addEventListener('click', function() {
- console.log(viewer.textSearch.findText('pdf', false));
- });
- viewer.appendTo("#pdfViewer");
-
-{% endhighlight %}
-{% endtabs %}
-
-### Find and get the bounds of a text on the desired page
-Searches for the specified text within the document and returns the bounding rectangles of the matched text. The search can be case-sensitive based on the provided parameter. It returns the bounding rectangles for that page in the document where the text was found. The following code snippet shows how to retrieve bounds for the specified text on a selected page:
-The following code snippet shows how to retrieve bounds for the specified text on a selected page:
-
-```html
-
-```
-
-{% tabs %}
-{% highlight ts tabtitle="Standalone" %}
-
-import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation,ThumbnailView,BookmarkView,
- TextSelection, TextSearch, Print, Annotation,FormFields,FormDesigner, PageOrganizer} from "../src/index";
-
- PdfViewer.Inject(Toolbar,Magnification,Navigation, LinkAnnotation,ThumbnailView,BookmarkView,
- TextSelection, TextSearch, Print, Annotation,FormFields,FormDesigner, PageOrganizer);
-
- let viewer: PdfViewer = new PdfViewer();
- viewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
- document.getElementById('textbounds').addEventListener('click', function() {
- console.log(viewer.textSearch.findText('pdf', false, 7));
- });
- viewer.appendTo("#pdfViewer");
-
-{% endhighlight %}
-{% highlight ts tabtitle="Server-backed" %}
-
-import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation,ThumbnailView,BookmarkView,
- TextSelection, TextSearch, Print, Annotation,FormFields,FormDesigner, PageOrganizer} from "../src/index";
-
- PdfViewer.Inject(Toolbar,Magnification,Navigation, LinkAnnotation,ThumbnailView,BookmarkView,
- TextSelection, TextSearch, Print, Annotation,FormFields,FormDesigner, PageOrganizer);
-
- let viewer: PdfViewer = new PdfViewer();
- viewer.serviceUrl = "https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer";
- viewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
- document.getElementById('textbounds').addEventListener('click', function() {
- console.log(viewer.textSearch.findText('pdf', false, 7));
- });
- viewer.appendTo("#pdfViewer");
-
-{% endhighlight %}
-{% endtabs %}
-
-### Find and get the bounds of the list of text
-Searches for 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. It returns the bounding rectangles for all pages in the document where the strings were found.
-
-```html
-
-```
-
-{% tabs %}
-{% highlight ts tabtitle="Standalone" %}
-
-import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation,ThumbnailView,BookmarkView,
- TextSelection, TextSearch, Print, Annotation,FormFields,FormDesigner, PageOrganizer} from "../src/index";
-
- PdfViewer.Inject(Toolbar,Magnification,Navigation, LinkAnnotation,ThumbnailView,BookmarkView,
- TextSelection, TextSearch, Print, Annotation,FormFields,FormDesigner, PageOrganizer);
-
- let viewer: PdfViewer = new PdfViewer();
- viewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
- document.getElementById('textbounds').addEventListener('click', function() {
- console.log(viewer.textSearch.findText(['adobe', 'pdf'], false));
- });
- viewer.appendTo("#pdfViewer");
-
-{% endhighlight %}
-{% highlight ts tabtitle="Server-backed" %}
-
-import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation,ThumbnailView,BookmarkView,
- TextSelection, TextSearch, Print, Annotation,FormFields,FormDesigner, PageOrganizer} from "../src/index";
-
- PdfViewer.Inject(Toolbar,Magnification,Navigation, LinkAnnotation,ThumbnailView,BookmarkView,
- TextSelection, TextSearch, Print, Annotation,FormFields,FormDesigner, PageOrganizer);
-
- let viewer: PdfViewer = new PdfViewer();
- viewer.serviceUrl = "https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer";
- viewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
- document.getElementById('listTextbounds').addEventListener('click', function() {
- console.log(viewer.textSearch.findText(['adobe', 'pdf'], false));
- });
- viewer.appendTo("#pdfViewer");
-
-{% endhighlight %}
-{% endtabs %}
-
-### Find and get the bounds of the list of text on desired page
-Searches for 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. It returns the bounding rectangles for these search strings on that particular page where the strings were found.
-
-```html
-
-```
-
-{% tabs %}
-{% highlight ts tabtitle="Standalone" %}
-
-import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation,ThumbnailView,BookmarkView,
- TextSelection, TextSearch, Print, Annotation,FormFields,FormDesigner, PageOrganizer} from "../src/index";
-
- PdfViewer.Inject(Toolbar,Magnification,Navigation, LinkAnnotation,ThumbnailView,BookmarkView,
- TextSelection, TextSearch, Print, Annotation,FormFields,FormDesigner, PageOrganizer);
-
- let viewer: PdfViewer = new PdfViewer();
- viewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
- document.getElementById('textbounds').addEventListener('click', function() {
- console.log(viewer.textSearch.findText(['adobe', 'pdf'], false, 7));
- });
- viewer.appendTo("#pdfViewer");
-
-{% endhighlight %}
-{% highlight ts tabtitle="Server-backed" %}
-
-import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation,ThumbnailView,BookmarkView,
- TextSelection, TextSearch, Print, Annotation,FormFields,FormDesigner, PageOrganizer} from "../src/index";
-
- PdfViewer.Inject(Toolbar,Magnification,Navigation, LinkAnnotation,ThumbnailView,BookmarkView,
- TextSelection, TextSearch, Print, Annotation,FormFields,FormDesigner, PageOrganizer);
-
- let viewer: PdfViewer = new PdfViewer();
- viewer.serviceUrl = "https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer";
- viewer.documentPath = "https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf";
- document.getElementById('listTextbounds').addEventListener('click', function() {
- console.log(viewer.textSearch.findText(['adobe', 'pdf'], false, 7));
- });
- viewer.appendTo("#pdfViewer");
-
-{% endhighlight %}
-{% endtabs %}
-
-## Text Search Events
-
-The PDF Viewer triggers events during text search operations, allowing you to customize behavior and respond to different stages of the search process.
-
-### textSearchStart
-
-The [textSearchStart](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/#textsearchstartevent) event fires as soon as a search begins from the toolbar interface or through the `textSearch.searchText` method. Use it to reset UI state, log analytics, or cancel the default search flow before results are processed.
-
-- Event arguments: [TextSearchStartEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/textSearchStartEventArgs/) exposes:
- - `searchText`: the term being searched.
- - `matchCase`: indicates whether case-sensitive search is enabled.
- - `isMatchWholeWord`: indicates whether whole-word matching is enabled.
- - `name`: event name.
- - `cancel`: set to `true` to stop the default search.
-
-```typescript
-const viewer: PdfViewer = new PdfViewer({
- documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
- textSearchStart: function (args: any) {
- // args.searchText contains the term being searched
- // args.cancel can be set to true to stop the default search
- console.log(`Text search started for: "${args.searchText}"`);
- }
-});
-viewer.appendTo('#pdfViewer');
-```
-
-### textSearchHighlight
-
-The [textSearchHighlight](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/#textsearchhighlightevent) event triggers whenever a search result is brought into view, including navigation between matches. Use it to draw custom overlays or synchronize adjacent UI elements when a match is highlighted.
-
-- Event arguments: [TextSearchHighlightEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/textSearchHighlightEventArgs/) exposes:
- - `bounds`: `RectangleBoundsModel | RectangleBoundsModel[]` representing the highlighted match.
- - `pageNumber`: page index where the match is highlighted.
- - `searchText`: the active search term.
- - `matchCase`: indicates whether case-sensitive search was used.
- - `name`: event name.
-
-```typescript
-const viewer: PdfViewer = new PdfViewer({
- documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
- textSearchHighlight: function (args: any) {
- // args.bounds provides the rectangle(s) of the current match
- console.log('Highlighted match bounds:', args.bounds);
- }
-});
-viewer.appendTo('#pdfViewer');
-```
-
-### textSearchComplete
-
-The [textSearchComplete](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/#textsearchcompleteevent) event runs after the search engine finishes scanning the document for the current query. Use it to update match counts, toggle navigation controls, or notify users when no results were found.
-
-- 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: [TextSearchCompleteEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/textSearchCompleteEventArgs/) exposes:
- - `totalMatches`: total number of occurrences found.
- - `isMatchFound`: indicates whether at least one match was found.
- - `searchText`: the searched term.
- - `matchCase`: indicates whether case-sensitive search was used.
- - `name`: event name.
-
-```typescript
-const viewer: PdfViewer = new PdfViewer({
- documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
- textSearchComplete: (args: any) => {
- // args.totalMatches may indicate how many results were found (when available)
- console.log('Text search completed.', args);
- }
-});
-viewer.appendTo('#pdfViewer');
-```
-
-## See also
-
-* [Toolbar items](./toolbar)
-* [Feature modules](./feature-module)
-* [Text selection](./textselection)
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/text-search/find-text.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/text-search/find-text.md
new file mode 100644
index 000000000..3d24e30e3
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/text-search/find-text.md
@@ -0,0 +1,281 @@
+---
+layout: post
+title: Find Text in TypeScript PDF Viewer control | Syncfusion
+description: Learn how to configure text search using find text and run programmatic searches in the Syncfusion TypeScript PDF Viewer.
+platform: document-processing
+control: Text search
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Find Text in TypeScript PDF Viewer
+
+## Find text method
+
+Use the `findText` method to locate a string or an array of strings and return the bounding rectangles for each match. Optional parameters support case-sensitive comparisons and page scoping so you can retrieve coordinates for a single page or the entire document.
+
+### Find and get the bounds of a text
+
+Searches for the specified text within the document and returns the bounding rectangles of the matched text. The search can be case-sensitive based on the provided parameter. It returns the bounding rectangles for all pages in the document where the text was found. The following code snippet shows how to get the bounds of the specified text:
+The following code snippet shows how to get the bounds of the specified text:
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+
+import { PdfViewer, TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields, PageInfoModel } from '@syncfusion/ej2-pdfviewer';
+
+// Inject required modules
+PdfViewer.Inject(TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields);
+
+const viewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib",
+});
+viewer.appendTo("#pdfViewer");
+document.getElementById('textbounds')?.addEventListener('click', function() {
+ console.log(viewer.textSearch.findText('pdf', false));
+});
+
+{% endhighlight %}
+{% highlight ts tabtitle="Server-backed" %}
+
+import { PdfViewer, TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields, PageInfoModel } from '@syncfusion/ej2-pdfviewer';
+
+// Inject required modules
+PdfViewer.Inject(TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields);
+
+const viewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ serviceUrl: "https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer",
+});
+viewer.appendTo("#pdfViewer");
+document.getElementById('textbounds')?.addEventListener('click', function() {
+ console.log(viewer.textSearch.findText('pdf', false));
+});
+
+{% endhighlight %}
+{% endtabs %}
+
+### Find and get the bounds of a text on the desired page
+
+Searches for the specified text within the document and returns the bounding rectangles of the matched text. The search can be case-sensitive based on the provided parameter. It returns the bounding rectangles for that page in the document where the text was found. The following code snippet shows how to retrieve bounds for the specified text on a selected page:
+The following code snippet shows how to retrieve bounds for the specified text on a selected page:
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+
+import { PdfViewer, TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields, PageInfoModel } from '@syncfusion/ej2-pdfviewer';
+
+// Inject required modules
+PdfViewer.Inject(TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields);
+
+const viewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib",
+});
+viewer.appendTo("#pdfViewer");
+document.getElementById('textbounds')?.addEventListener('click', function() {
+ console.log(viewer.textSearch.findText('pdf', false, 7));
+});
+
+{% endhighlight %}
+{% highlight ts tabtitle="Server-backed" %}
+
+import { PdfViewer, TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields, PageInfoModel } from '@syncfusion/ej2-pdfviewer';
+
+// Inject required modules
+PdfViewer.Inject(TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields);
+
+const viewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ serviceUrl: "https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer",
+});
+viewer.appendTo("#pdfViewer");
+document.getElementById('textbounds')?.addEventListener('click', function() {
+ console.log(viewer.textSearch.findText('pdf', false, 7));
+});
+
+{% endhighlight %}
+{% endtabs %}
+
+### Find and get the bounds of the list of text
+Searches for 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. It returns the bounding rectangles for all pages in the document where the strings were found.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+
+import { PdfViewer, TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields, PageInfoModel } from '@syncfusion/ej2-pdfviewer';
+
+// Inject required modules
+PdfViewer.Inject(TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields);
+
+const viewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib",
+});
+viewer.appendTo("#pdfViewer");
+document.getElementById('textbounds')?.addEventListener('click', function() {
+ console.log(viewer.textSearch.findText(['adobe', 'pdf'], false));
+});
+
+{% endhighlight %}
+{% highlight ts tabtitle="Server-backed" %}
+
+import { PdfViewer, TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields, PageInfoModel } from '@syncfusion/ej2-pdfviewer';
+
+// Inject required modules
+PdfViewer.Inject(TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields);
+
+const viewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ serviceUrl: "https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer",
+});
+viewer.appendTo("#pdfViewer");
+document.getElementById('textbounds')?.addEventListener('click', function() {
+ console.log(viewer.textSearch.findText(['adobe', 'pdf'], false));
+});
+
+{% endhighlight %}
+{% endtabs %}
+
+### Find and get the bounds of the list of text on desired page
+
+Searches for 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. It returns the bounding rectangles for these search strings on that particular page where the strings were found.
+
+```html
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+
+import { PdfViewer, TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields, PageInfoModel } from '@syncfusion/ej2-pdfviewer';
+
+// Inject required modules
+PdfViewer.Inject(TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields);
+
+const viewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib",
+});
+viewer.appendTo("#pdfViewer");
+document.getElementById('textbounds')?.addEventListener('click', function() {
+ console.log(viewer.textSearch.findText(['adobe', 'pdf'], false, 7));
+ });
+
+{% endhighlight %}
+{% highlight ts tabtitle="Server-backed" %}
+
+import { PdfViewer, TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields, PageInfoModel } from '@syncfusion/ej2-pdfviewer';
+
+// Inject required modules
+PdfViewer.Inject(TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields);
+
+const viewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ serviceUrl: "https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer",
+});
+viewer.appendTo("#pdfViewer");
+document.getElementById('textbounds')?.addEventListener('click', function() {
+ console.log(viewer.textSearch.findText(['adobe', 'pdf'], false, 7));
+ });
+
+{% endhighlight %}
+{% endtabs %}
+
+[View Sample in GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples)
+
+## Find text with findTextAsync
+
+The `findTextAsync` method is designed for performing an asynchronous text search within a PDF document. You can use it to search for a single string or multiple strings, with the ability to control case sensitivity. By default, the search is applied to all pages of the document. However, you can adjust this behavior by specifying the page number (pageIndex), which allows you to search only a specific page if needed.
+
+### Find text with findTextAsync in TypeScript 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.
+
+Here is an example of how to use `findTextAsync`:
+
+Example 1: Search for a single string ('pdf') case-insensitively across all pages
+
+```html
+
+
+```
+```ts
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView,
+ TextSelection, TextSearch, Print, Annotation, FormFields, FormDesigner, PageOrganizer,
+ ExtractTextOption} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar, Magnification, Navigation, LinkAnnotation, ThumbnailView, BookmarkView,
+ TextSelection, TextSearch, Print, Annotation, FormFields, FormDesigner, PageOrganizer);
+
+let viewer: PdfViewer = new PdfViewer();
+viewer.documentPath= 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+viewer.resourceUrl= "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib";
+viewer.appendTo("#PdfViewer");
+
+
+const findTextButton = document.getElementById('findText');
+if (findTextButton) {
+ findTextButton.addEventListener('click', function () {
+ viewer.textSearchModule.findTextAsync('pdf', false).then(res => {
+ console.log(res); // Logs the search result for the term 'pdf'
+ });
+ });
+}
+```
+Example 2: Search for multiple strings (['pdf', 'the']) case-insensitively across all pages
+```ts
+const findTextButtons = document.getElementById('findTexts');
+if(findTextButtons){
+ findTextButtons.addEventListener('click', function () {
+ viewer.textSearchModule.findTextAsync(['pdf', 'the'], false).then(res => {
+ console.log(res); // Logs the search result for the terms 'pdf' and 'the'
+ });
+ });
+}
+```
+
+### Parameters
+
+**text (string | string[]):** The text or array of texts to search for in the document.
+
+**matchCase (boolean):** Whether the search is case-sensitive. `true` matches exact case; `false` ignores case.
+
+**pageIndex (optional, number):** Zero-based page index to search. If omitted, searches all pages.
+
+### Example workflow
+
+**findTextAsync('pdf', false):**
+This will search for the term "pdf" in a case-insensitive manner across all pages of the document.
+
+**findTextAsync(['pdf', 'the'], false):**
+This will search for the terms "pdf" and "the" in a case-insensitive manner across all pages of the document.
+
+**findTextAsync('pdf', false, 0):**
+This will search for the term "pdf" in a case-insensitive manner only on the first page (page 0).
+
+**findTextAsync(['pdf', 'the'], false, 1):**
+This will search for the terms "pdf" and "the" in a case-insensitive manner only on the second page (page 1).
+
+[View sample in GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples/tree/master/How%20to/)
+
+## See Also
+
+[Text Search Features](./text-search-features)
+[Text Search Events](./text-search-events)
+[Extract Text](../how-to/extract-text-ts)
+[Extract Text Options](../how-to/extract-text-option-ts)
+[Extract Text Completed](../how-to/extract-text-completed-ts)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/text-search/text-search-events.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/text-search/text-search-events.md
new file mode 100644
index 000000000..3632adfe0
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/text-search/text-search-events.md
@@ -0,0 +1,94 @@
+---
+layout: post
+title: Text search Events in TypeScript PDF Viewer control | Syncfusion
+description: Learn how to handle text search events, and run programmatic searches in the Syncfusion TypeScript PDF Viewer.
+platform: document-processing
+control: Text search
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Text Search Events in TypeScript PDF Viewer
+
+The PDF Viewer triggers events during text search operations, allowing you to customize behavior and respond to different stages of the search process.
+
+## textSearchStart
+
+The [textSearchStart](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer#textsearchstartevent) event fires as soon as a search begins from the toolbar interface or through the `textSearch.searchText` method. Use it to reset UI state, log analytics, or cancel the default search flow before results are processed.
+
+- Event arguments: [TextSearchStartEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/textSearchStartEventArgs) exposes:
+ - `searchText`: the term being searched.
+ - `matchCase`: indicates whether case-sensitive search is enabled.
+ - `isMatchWholeWord`: indicates whether whole-word matching is enabled.
+ - `name`: event name.
+ - `cancel`: set to `true` to stop the default search.
+
+```typescript
+const viewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ textSearchStart: function (args: any) {
+ // args.searchText contains the term being searched
+ // args.cancel can be set to true to stop the default search
+ console.log(`Text search started for: "${args.searchText}"`);
+ }
+});
+viewer.appendTo('#pdfViewer');
+```
+
+## textSearchHighlight
+
+The [textSearchHighlight](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer#textsearchhighlightevent) event triggers whenever a search result is brought into view, including navigation between matches. Use it to draw custom overlays or synchronize adjacent UI elements when a match is highlighted.
+
+- Event arguments: [TextSearchHighlightEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/textSearchHighlightEventArgs) exposes:
+ - `bounds`: `RectangleBoundsModel | RectangleBoundsModel[]` representing the highlighted match.
+ - `pageNumber`: page index where the match is highlighted.
+ - `searchText`: the active search term.
+ - `matchCase`: indicates whether case-sensitive search was used.
+ - `name`: event name.
+
+```typescript
+const viewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ textSearchHighlight: function (args: any) {
+ // args.bounds provides the rectangle(s) of the current match
+ console.log('Highlighted match bounds:', args.bounds);
+ }
+});
+viewer.appendTo('#pdfViewer');
+```
+
+## textSearchComplete
+
+The [textSearchComplete](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer#textsearchcompleteevent) event runs after the search engine finishes scanning the document for the current query. Use it to update match counts, toggle navigation controls, or notify users when no results were found.
+
+- 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: [TextSearchCompleteEventArgs](https://ej2.syncfusion.com/javascript/documentation/api/pdfviewer/textSearchCompleteEventArgs) exposes:
+ - `totalMatches`: total number of occurrences found.
+ - `isMatchFound`: indicates whether at least one match was found.
+ - `searchText`: the searched term.
+ - `matchCase`: indicates whether case-sensitive search was used.
+ - `name`: event name.
+
+```typescript
+const viewer: PdfViewer = new PdfViewer({
+ documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ textSearchComplete: (args: any) => {
+ // args.totalMatches may indicate how many results were found (when available)
+ console.log('Text search completed.', args);
+ }
+});
+viewer.appendTo('#pdfViewer');
+```
+
+[View Sample in GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples)
+
+## See Also
+
+[Text Search Features](./text-search-features)
+[Find Text](./find-text)
+[Extract Text](../how-to/extract-text-ts)
+[Extract Text Options](../how-to/extract-text-option-ts)
+[Extract Text Completed](../how-to/extract-text-completed-ts)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/text-search/text-search-features.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/text-search/text-search-features.md
new file mode 100644
index 000000000..38c611b69
--- /dev/null
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/text-search/text-search-features.md
@@ -0,0 +1,305 @@
+---
+layout: post
+title: Text search Features in TypeScript PDF Viewer control | Syncfusion
+description: Learn how to configure text search and run programmatic searches in the Syncfusion TypeScript PDF Viewer.
+platform: document-processing
+control: Text search
+documentation: ug
+domainurl: ##DomainURL##
+---
+# Text search Features in TypeScript PDF Viewer control
+
+The text search feature in the PDF Viewer locates and highlights matching content within a document. Enable or disable this capability with the following configuration.
+
+
+
+N> The text search functionality requires importing TextSearch and adding it to PdfViewer.Inject(..., TextSearch). Otherwise, the search UI and APIs are not accessible.
+
+## Text search features in UI
+
+### Real-time search suggestions while typing
+Typing in the search box immediately surfaces suggestions that match the entered text. The list refreshes on every keystroke so users can quickly jump to likely results without completing the entire term.
+
+
+
+### Select search suggestions from the popup
+After typing in the search box, the popup lists relevant matches. Selecting an item jumps directly to the corresponding occurrence in the PDF.
+
+
+
+### Dynamic Text Search for Large PDF Documents
+Dynamic text search is enabled during the initial loading of the document when the document text collection has not yet been fully loaded in the background.
+
+
+
+### Search text with the Match Case option
+Enable the Match Case checkbox to limit results to case-sensitive matches. Navigation commands then step through each exact match in sequence.
+
+
+
+### Search text without Match Case
+Leave the Match Case option cleared to highlight every occurrence of the query, regardless of capitalization, and navigate through each result.
+
+
+
+### Search a list of words with Match Any Word
+Enable Match Any Word to split the query into separate words. The popup proposes matches for each word and highlights them throughout the document.
+
+
+
+## Text Search Programmatically
+
+### Enable or Disable Text Search
+
+Use the following code snippet to enable or disable Text Search Features
+
+```html
+
+
+
+
+ Essential JS 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,ThumbnailView,BookmarkView, TextSelection, TextSearch} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar,Magnification,Navigation, Annotation, LinkAnnotation,ThumbnailView,BookmarkView, TextSelection, TextSearch);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath='https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.resourceUrl= 'https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib';
+// Enable text search
+pdfviewer.enableTextSearch = true;
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,ThumbnailView,BookmarkView, TextSelection, TextSearch} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar,Magnification,Navigation, Annotation, LinkAnnotation,ThumbnailView,BookmarkView, TextSelection, TextSearch);
+
+let pdfviewer: PdfViewer = new PdfViewer();
+pdfviewer.documentPath='https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
+pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';
+// Enable text search
+pdfviewer.enableTextSearch = true;
+pdfviewer.appendTo('#PdfViewer');
+
+{% endhighlight %}
+{% endtabs %}
+
+### Programmatic search with settings
+
+While the PDF Viewer toolbar offers an interactive search experience, you can also trigger and customize searches programmatically by calling the `searchText` method with tailored options.
+
+#### Using `searchText`
+
+Use the `searchText` method to start a search with optional filters that control case sensitivity and whole-word behavior.
+
+```typescript
+// searchText(text: string, isMatchCase?: boolean)
+pdfviewer.textSearch.searchText('search text', false);
+```
+
+- `isMatchCase` (optional boolean): Determines whether the search should be case-sensitive.
+
+#### Match Case
+
+Set the `isMatchCase` parameter to `true` to perform a case-sensitive search that mirrors the Match Case option in the search panel.
+
+```typescript
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation,ThumbnailView,BookmarkView, TextSelection, TextSearch, Print, Annotation,FormFields,FormDesigner, PageOrganizer} from "@syncfusion/ej2-pdfviewer";
+
+PdfViewer.Inject(Toolbar,Magnification,Navigation, LinkAnnotation,ThumbnailView,BookmarkView, TextSelection, TextSearch, Print, Annotation,FormFields,FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer({
+ documentPath:'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib",
+});
+pdfviewer.appendTo('#PdfViewer');
+
+// Later, to search programmatically:
+// This will only find instances of "PDF" in uppercase.
+pdfviewer.textSearch.searchText('PDF', true);
+```
+
+#### Match Whole Word
+
+Set the `isMatchWholeWord` parameter to `true` to restrict results to whole-word matches. For example, a search for "view" will not match "viewer".
+
+```typescript
+import { PdfViewer, Toolbar, Magnification, Navigation, LinkAnnotation,ThumbnailView,BookmarkView, TextSelection, TextSearch, Print, Annotation,FormFields,FormDesigner, PageOrganizer} from "@syncfusion/ej2-pdfviewer";
+
+PdfViewer.Inject(Toolbar,Magnification,Navigation, LinkAnnotation,ThumbnailView,BookmarkView, TextSelection, TextSearch, Print, Annotation,FormFields,FormDesigner, PageOrganizer);
+
+let pdfviewer: PdfViewer = new PdfViewer({
+ documentPath:'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib",
+});
+pdfviewer.appendTo('#PdfViewer');
+
+// Later, to search programmatically:
+// This will find "pdf" but not "pdf-succinctly"
+pdfviewer.textSearch.searchText('pdf', false, true);
+```
+
+### Search Text Programmatically with the SearchText API
+
+* [**Search text**](https://ej2.syncfusion.com/documentation/api/pdfviewer/textSearch#searchtext): Searches the target text in the PDF document and highlights each occurrence in the pages.
+* [**Search next**](https://ej2.syncfusion.com/documentation/api/pdfviewer/textSearch#searchnext): Searches the next occurrence of the current query from the active match.
+* [**Search previous**](https://ej2.syncfusion.com/documentation/api/pdfviewer/textSearch#searchprevious): Searches the previous occurrence of the current query from the active match.
+* [**Cancel text search**](https://ej2.syncfusion.com/documentation/api/pdfviewer/textSearch#canceltextsearch): Cancels the current text search and removes the highlighted occurrences from the PDF Viewer.
+
+
+
+Use the following code snippet to implement text search using SearchText API's
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+{% tabs %}
+{% highlight ts tabtitle="Standalone" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,ThumbnailView,BookmarkView, TextSelection, TextSearch} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar,Magnification,Navigation, Annotation, LinkAnnotation,ThumbnailView,BookmarkView, TextSelection, TextSearch);
+
+
+let viewer: PdfViewer = new PdfViewer({
+ documentPath:'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ resourceUrl: "https://cdn.syncfusion.com/ej2/31.1.23/dist/ej2-pdfviewer-lib",
+});
+
+viewer.appendTo('#pdfViewer'); // Ensure your HTML has
+
+// --- Programmatic Text Search API ---
+
+// Searches the target text in the PDF and highlights all matches.
+function searchText(query: string, matchCase = false): void {
+ if (!query || !query.trim()) return;
+ viewer.textSearch.searchText(query, matchCase);
+}
+
+// Navigates to the next occurrence relative to the current active match.
+function searchNext(): void {
+ viewer.textSearch.searchNext();
+}
+
+// Navigates to the previous occurrence relative to the current active match.
+
+function searchPrevious(): void {
+ viewer.textSearch.searchPrevious();
+}
+
+
+//Cancels the current search and clears all highlights.
+function cancelTextSearch(): void {
+ viewer.textSearch.cancelTextSearch();
+}
+
+// Example: wire up to buttons/inputs
+const input = document.getElementById('searchBox') as HTMLInputElement | null;
+document.getElementById('btnSearch')?.addEventListener('click', () => {
+ searchText(input?.value ?? '', false);
+});
+document.getElementById('btnNext')?.addEventListener('click', () => searchNext());
+document.getElementById('btnPrev')?.addEventListener('click', () => searchPrevious());
+document.getElementById('btnCancel')?.addEventListener('click', () => cancelTextSearch());
+{% endhighlight %}
+{% highlight ts tabtitle="Server-Backed" %}
+import { PdfViewer, Toolbar, Magnification, Navigation, Annotation, LinkAnnotation,ThumbnailView,BookmarkView, TextSelection, TextSearch} from '@syncfusion/ej2-pdfviewer';
+
+PdfViewer.Inject(Toolbar,Magnification,Navigation, Annotation, LinkAnnotation,ThumbnailView,BookmarkView, TextSelection, TextSearch);
+
+
+let viewer: PdfViewer = new PdfViewer({
+ documentPath:'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
+ serviceUrl: 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/'
+});
+
+viewer.appendTo('#pdfViewer'); // Ensure your HTML has
+
+// --- Programmatic Text Search API ---
+
+// Searches the target text in the PDF and highlights all matches.
+function searchText(query: string, matchCase = false): void {
+ if (!query || !query.trim()) return;
+ viewer.textSearch.searchText(query, matchCase);
+}
+
+// Navigates to the next occurrence relative to the current active match.
+function searchNext(): void {
+ viewer.textSearch.searchNext();
+}
+
+// Navigates to the previous occurrence relative to the current active match.
+
+function searchPrevious(): void {
+ viewer.textSearch.searchPrevious();
+}
+
+
+//Cancels the current search and clears all highlights.
+function cancelTextSearch(): void {
+ viewer.textSearch.cancelTextSearch();
+}
+
+// Example: wire up to buttons/inputs
+const input = document.getElementById('searchBox') as HTMLInputElement | null;
+document.getElementById('btnSearch')?.addEventListener('click', () => {
+ searchText(input?.value ?? '', false);
+});
+document.getElementById('btnNext')?.addEventListener('click', () => searchNext());
+document.getElementById('btnPrev')?.addEventListener('click', () => searchPrevious());
+document.getElementById('btnCancel')?.addEventListener('click', () => cancelTextSearch());
+{% endhighlight %}
+{% endtabs %}
+
+
+[View Sample in GitHub](https://github.com/SyncfusionExamples/typescript-pdf-viewer-examples)
+
+## See Also
+
+[Find Text](./find-text)
+[Text Search Events](./text-search-events)
+[Extract Text](../how-to/extract-text-ts)
+[Extract Text Options](../how-to/extract-text-option-ts)
+[Extract Text Completed](../how-to/extract-text-completed-ts)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/javascript-es6/toolbar.md b/Document-Processing/PDF/PDF-Viewer/javascript-es6/toolbar.md
index 1bcf9061d..2dc5736ee 100644
--- a/Document-Processing/PDF/PDF-Viewer/javascript-es6/toolbar.md
+++ b/Document-Processing/PDF/PDF-Viewer/javascript-es6/toolbar.md
@@ -118,7 +118,7 @@ N> To set up the **server-backed PDF Viewer**,
Add the below `serviceUrl` in the `index.ts` file
`pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';`
-{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es6/toolbar/toolbar-hide-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es6/toolbar/toolbar-hide-cs1" %}
* **Show/Hide toolbar using showToolbar as in the following code snippet**
@@ -177,10 +177,10 @@ document.getElementById('set').addEventListener('click', ()=> {
{% endtabs %}
N> To set up the **server-backed PDF Viewer**,
-Add the below [serviceUrl](https://ej2.syncfusion.com/documentation/api/pdfviewer/#serviceurl) in the `index.ts` file
+Add the below [serviceUrl](https://ej2.syncfusion.com/documentation/api/pdfviewer#serviceurl) in the `index.ts` file
`pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer';`
-{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es6/toolbar/toolbar-method-cs1/index.html" %}
+{% previewsample "/document-Processing/code-snippet/pdfviewer/javascript-es6/toolbar/toolbar-method-cs1" %}
## Show/Hide the default toolbaritem
@@ -243,7 +243,7 @@ N> To set up the **server-backed PDF Viewer**,
Add the below `serviceUrl` in the `index.ts` file
`pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';`
-{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es6/toolbar/toolbar-items-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es6/toolbar/toolbar-items-cs1" %}
* **Show/Hide toolbaritem using showToolbaritem as in the following code snippet**
@@ -305,17 +305,17 @@ N> To set up the **server-backed PDF Viewer**,
Add the below `serviceUrl` in the `index.ts` file
`pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';`
-{% previewsample "Document-Processing/code-snippet/pdfviewer/javascript-es6/toolbar/toolbar-items-method-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/javascript-es6/toolbar/toolbar-items-method-cs1" %}
## 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/documentation/api/pdfviewer/customToolbarItemModel/) and with existing items in [**ToolbarSettings**](https://ej2.syncfusion.com/documentation/api/pdfviewer/toolbarSettings/) property. Newly added item click action can be defined in [`toolbarclick`](https://ej2.syncfusion.com/documentation/api/toolbar/clickEventArgs/).
+* Add - New items can defined by [**CustomToolbarItemModel**](https://ej2.syncfusion.com/documentation/api/pdfviewer/customToolbarItemModel) and with existing items in [**ToolbarSettings**](https://ej2.syncfusion.com/documentation/api/pdfviewer/toolbarSettings) property. Newly added item click action can be defined in [`toolbarclick`](https://ej2.syncfusion.com/documentation/api/toolbar/clickEventArgs).
-* Show, Hide - Existing items can be shown or hidden using the [`ToolbarSettings`](https://ej2.syncfusion.com/documentation/api/pdfviewer/toolbarSettings/) property. Pre-defined toolbar items are available with [`ToolbarItem`](https://ej2.syncfusion.com/documentation/api/pdfviewer/toolbarItem/).
+* Show, Hide - Existing items can be shown or hidden using the [`ToolbarSettings`](https://ej2.syncfusion.com/documentation/api/pdfviewer/toolbarSettings) property. Pre-defined toolbar items are available with [`ToolbarItem`](https://ej2.syncfusion.com/documentation/api/pdfviewer/toolbarItem).
-* Enable, Disable - Toolbar items can be enabled or disable using [`enabletoolbaritem`](https://ej2.syncfusion.com/documentation/api/pdfviewer/toolbar/#enabletoolbaritem)
+* Enable, Disable - Toolbar items can be enabled or disable using [`enabletoolbaritem`](https://ej2.syncfusion.com/documentation/api/pdfviewer/toolbar#enabletoolbaritem)
{% tabs %}
{% highlight js tabtitle="Standalone" %}
@@ -1527,7 +1527,7 @@ Sample :
## How to customize the default toolbar with desired tools
-Customize the default toolbar with the required tools by using the [toolbarSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer/#toolbarsettings) class of the PDF viewer.
+Customize the default toolbar with the required tools by using the [toolbarSettings](https://ej2.syncfusion.com/documentation/api/pdfviewer#toolbarsettings) class of the PDF viewer.
The following code illustrates how to render the default toolbar with specific tools.
diff --git a/Document-Processing/PDF/PDF-Viewer/react/form-designer/create-programmatically.md b/Document-Processing/PDF/PDF-Viewer/react/form-designer/create-programmatically.md
index e8bd923b0..66d675074 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/form-designer/create-programmatically.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/form-designer/create-programmatically.md
@@ -20,6 +20,9 @@ The PDF Viewer component provides options to add, edit, and delete form fields.
- Signature field
- Initial field
+Check the following video to learn how to work with form Designer in React PDF Viewer.
+{% youtube "https://www.youtube.com/watch?v=MUWTCg1MoAE" %}
+
## 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.
@@ -135,7 +138,7 @@ root.render();
N> To configure the server-backed PDF Viewer, add the following `serviceUrl` in the `index.ts` file:
`pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';`
-{% previewsample "Document-Processing/code-snippet/pdfviewer/react/addformfield-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/react/addformfield-cs1" %}
## Edit/Update form field programmatically
@@ -253,7 +256,7 @@ root.render();
N> To configure the server-backed PDF Viewer, add the following `serviceUrl` in the `index.ts` file:
`pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';`
-{% previewsample "Document-Processing/code-snippet/pdfviewer/react/updateformfield-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/react/updateformfield-cs1" %}
## Delete form field programmatically
@@ -371,7 +374,7 @@ root.render();
N> To configure the server-backed PDF Viewer, add the following `serviceUrl` in the `index.ts` file:
`pdfviewer.serviceUrl = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer/';`
-{% previewsample "Document-Processing/code-snippet/pdfviewer/react/deleteformfield-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/react/deleteformfield-cs1" %}
## setFormFieldMode programmatically
diff --git a/Document-Processing/PDF/PDF-Viewer/react/form-designer/create-with-user-interface-interaction.md b/Document-Processing/PDF/PDF-Viewer/react/form-designer/create-with-user-interface-interaction.md
index a3068725c..cdfca17ec 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/form-designer/create-with-user-interface-interaction.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/form-designer/create-with-user-interface-interaction.md
@@ -20,6 +20,9 @@ The PDF Viewer component supports interactive form field design, including drawi
- Signature field
- Initial field
+Check the following video to learn how to work with form Designer in React PDF Viewer.
+{% youtube "https://www.youtube.com/watch?v=MUWTCg1MoAE" %}
+
## 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.
diff --git a/Document-Processing/PDF/PDF-Viewer/react/form-filling.md b/Document-Processing/PDF/PDF-Viewer/react/form-filling.md
index c50071a9d..428c5e4b4 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/form-filling.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/form-filling.md
@@ -12,6 +12,9 @@ domainurl: ##DomainURL##
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
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 5fae8f75f..d9fd3e5f4 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
@@ -184,7 +184,7 @@ Output will be appears as follows.
{% endhighlight %}
{% endtabs %}
-{% previewsample "Document-Processing/code-snippet/pdfviewer/react/base-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/react/base-cs1" %}
> For PDF Viewer serviceUrl creation, follow the steps provided in the [link](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/javascript-es6/how-to/create-pdfviewer-service)
diff --git a/Document-Processing/PDF/PDF-Viewer/react/getting-started.md b/Document-Processing/PDF/PDF-Viewer/react/getting-started.md
index f4724c498..2bda29aea 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/getting-started.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/getting-started.md
@@ -301,6 +301,6 @@ root.render();
{% endhighlight %}
{% endtabs %}
-{% previewsample "Document-Processing/code-snippet/pdfviewer/react/base-cs1-standalone/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/react/base-cs1-standalone" %}
> You can refer to our [React PDF Viewer](https://www.syncfusion.com/pdf-viewer-sdk) feature tour page for its groundbreaking feature representations. You can also explore our [React PDF Viewer example](https://document.syncfusion.com/demos/pdf-viewer/react/#/tailwind3/pdfviewer/default) to understand how to explains core features of PDF Viewer.
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
index 8178ae2f4..9b9277925 100644
--- 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
@@ -10,7 +10,7 @@ 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.
+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
@@ -76,7 +76,7 @@ root.render();
#### Show or hide custom items before opening
-Use [customContextMenuBeforeOpen()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer/#customcontextMenubeforeopen) to hide or show custom options dynamically.
+Use [customContextMenuBeforeOpen()](https://ej2.syncfusion.com/react/documentation/api/pdfviewer#customcontextMenubeforeopen) to hide or show custom options dynamically.
```js
export function App() {
@@ -324,6 +324,6 @@ The following is the output of the custom context menu with customization.
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/index.html" %}
+{% 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/toolbar.md b/Document-Processing/PDF/PDF-Viewer/react/toolbar.md
index 4bfb68eb2..1a32f0977 100644
--- a/Document-Processing/PDF/PDF-Viewer/react/toolbar.md
+++ b/Document-Processing/PDF/PDF-Viewer/react/toolbar.md
@@ -98,7 +98,7 @@ root.render();
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/index.html" %}
+{% 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)
@@ -178,7 +178,7 @@ root.render();
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/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/react/base-cs3" %}
## Show/Hide the built-in toolbaritem
@@ -250,7 +250,7 @@ root.render();
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/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/react/base-cs4" %}
* **Show/Hide toolbaritem using showToolbaritem as in the following code snippet**
@@ -326,17 +326,17 @@ root.render();
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/index.html" %}
+{% 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/).
+* 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/).
+* 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)
+* 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" %}
@@ -529,7 +529,7 @@ N> When customizing toolbar items, you have the flexibility to include either ic
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 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.
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
index af6032b7d..db2c1a9e7 100644
--- a/Document-Processing/PDF/PDF-Viewer/vue/form-designer/create-programmatically.md
+++ b/Document-Processing/PDF/PDF-Viewer/vue/form-designer/create-programmatically.md
@@ -149,7 +149,7 @@ N> To set up the **server-backed PDF Viewer** in the app.vue file, include the f
**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/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/vue/addformfield-cs1" %}
## Edit or update form field programmatically
@@ -282,7 +282,7 @@ N> To set up the **server-backed PDF Viewer** in the app.vue file, include the f
**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/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/vue/updateformfield-cs1" %}
## Delete form field programmatically
@@ -414,7 +414,7 @@ N> To set up the **server-backed PDF Viewer** in the app.vue file, include the f
**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/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/vue/deleteformfield-cs1" %}
## Saving the form fields
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/getting-started-with-server-backed.md b/Document-Processing/PDF/PDF-Viewer/vue/getting-started-with-server-backed.md
index f4a4c317f..ec743fd23 100644
--- a/Document-Processing/PDF/PDF-Viewer/vue/getting-started-with-server-backed.md
+++ b/Document-Processing/PDF/PDF-Viewer/vue/getting-started-with-server-backed.md
@@ -107,7 +107,7 @@ import { PdfViewerComponent, Toolbar, Magnification, Navigation, LinkAnnotation,
{% endhighlight %}
{% endtabs %}
-2. In the `template` section, define the PDF Viewer component and bind the [documentPath](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#documentpath) and [serviceUrl](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#serviceurl) properties.
+2. In the `template` section, define the PDF Viewer component and bind the [documentPath](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#documentpath) and [serviceUrl](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#serviceurl) properties.
{% tabs %}
{% highlight html tabtitle="~/src/App.vue" %}
@@ -291,7 +291,7 @@ or
yarn run serve
```
-{% previewsample "Document-Processing/code-snippet/pdfviewer/vue/getting-started-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/vue/getting-started-cs1" %}
## Module injection
@@ -337,7 +337,7 @@ These modules are registered with the component by providing them through the `p
dotnet run
```
-6.You can see that the PDF Viewer server instance runs in the localhost with the port number `localhost:5001`. Navigate to the PDF Viewer web control `localhost:5001/pdfviewer`, which returns the default GET response. Bind the link to the [serviceUrl](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/#serviceurl) property of the PDF Viewer as shown below.
+6.You can see that the PDF Viewer server instance runs in the localhost with the port number `localhost:5001`. Navigate to the PDF Viewer web control `localhost:5001/pdfviewer`, which returns the default GET response. Bind the link to the [serviceUrl](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer#serviceurl) property of the PDF Viewer as shown below.
```js
export default {
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/getting-started.md b/Document-Processing/PDF/PDF-Viewer/vue/getting-started.md
index c4262ec9a..c234df8e9 100644
--- a/Document-Processing/PDF/PDF-Viewer/vue/getting-started.md
+++ b/Document-Processing/PDF/PDF-Viewer/vue/getting-started.md
@@ -292,7 +292,7 @@ export default {
{% endhighlight %}
{% endtabs %}
-{% previewsample "Document-Processing/code-snippet/pdfviewer/vue/getting-started-cs2/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/vue/getting-started-cs2" %}
[View sample in GitHub](https://github.com/SyncfusionExamples/vue-pdf-viewer-examples/tree/master/Getting%20Started%20-%20Standalone)
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/how-to/custom-context-menu.md b/Document-Processing/PDF/PDF-Viewer/vue/how-to/custom-context-menu.md
index 00859e9d5..05e1adbc3 100644
--- a/Document-Processing/PDF/PDF-Viewer/vue/how-to/custom-context-menu.md
+++ b/Document-Processing/PDF/PDF-Viewer/vue/how-to/custom-context-menu.md
@@ -10,7 +10,7 @@ domainurl: ##DomainURL##
# Customize the context menu in PDF Viewer
-PDF Viewer supports adding custom options to the context menu using the [addCustomMenu()](https://ej2.syncfusion.com/documentation/api/pdfviewer/#addcustommenu) method. Define actions for custom items with the [customContextMenuSelect()](https://ej2.syncfusion.com/documentation/api/pdfviewer/#customcontextMenuselect) method.
+PDF Viewer supports adding custom options to the context menu using the [addCustomMenu()](https://ej2.syncfusion.com/documentation/api/pdfviewer#addcustommenu) method. Define actions for custom items with the [customContextMenuSelect()](https://ej2.syncfusion.com/documentation/api/pdfviewer#customcontextMenuselect) method.
### Add a custom option
@@ -248,7 +248,7 @@ export default {
#### Show or hide custom items before opening
-Use [customContextMenuBeforeOpen()](https://ej2.syncfusion.com/documentation/api/pdfviewer/#customcontextMenubeforeopen) to hide or show custom options dynamically.
+Use [customContextMenuBeforeOpen()](https://ej2.syncfusion.com/documentation/api/pdfviewer#customcontextMenubeforeopen) to hide or show custom options dynamically.
{% tabs %}
{% highlight html tabtitle="Composition API (Standalone)" %}
@@ -849,6 +849,6 @@ N> To set up the **server-backed PDF Viewer** in the app.Vue file, include the f
**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/custom-context-menu/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/vue/custom-context-menu" %}
[View sample in GitHub](https://github.com/SyncfusionExamples/vue-pdf-viewer-examples/tree/master/How%20to/Customize%20context%20menu)
\ No newline at end of file
diff --git a/Document-Processing/PDF/PDF-Viewer/vue/toolbar.md b/Document-Processing/PDF/PDF-Viewer/vue/toolbar.md
index c1d9cebe9..221e613d7 100644
--- a/Document-Processing/PDF/PDF-Viewer/vue/toolbar.md
+++ b/Document-Processing/PDF/PDF-Viewer/vue/toolbar.md
@@ -102,7 +102,7 @@ N> To set up the **server-backed PDF Viewer** in the app.vue file, include the f
**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/toolbar/toolbar-hide-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/vue/toolbar/toolbar-hide-cs1" %}
* **Show/Hide toolbar using showToolbar as in the following code snippet**
@@ -181,7 +181,7 @@ N> To set up the **server-backed PDF Viewer** in the app.vue file, include the f
**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/toolbar/toolbar-method-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/vue/toolbar/toolbar-method-cs1" %}
## Show/Hide the built-in toolbaritem
@@ -261,7 +261,7 @@ N> To set up the **server-backed PDF Viewer** in the app.vue file, include the f
**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/toolbar/toolbar-items-cs1/index.html" %}
+{% previewsample "/document-processing/code-snippet/pdfviewer/vue/toolbar/toolbar-items-cs1" %}
* **Show/Hide toolbaritem using showToolbaritem as in the following code snippet**
@@ -346,18 +346,18 @@ N> To set up the **server-backed PDF Viewer** in the app.vue file, include the f
**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/toolbar/toolbar-items-method-cs1/index.html" %}
+ {% previewsample "/document-processing/code-snippet/pdfviewer/vue/toolbar/toolbar-items-method-cs1" %}
## 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/vue/documentation/api/pdfviewer/customToolbarItemModel/) and with existing items in [**ToolbarSettings**](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/toolbarSettings/) property. Newly added item click action can be defined in [`toolbarclick`](https://ej2.syncfusion.com/vue/documentation/api/toolbar/clickEventArgs/).
+* Add - New items can defined by [**CustomToolbarItemModel**](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/customToolbarItemModel) and with existing items in [**ToolbarSettings**](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/toolbarSettings) property. Newly added item click action can be defined in [`toolbarclick`](https://ej2.syncfusion.com/vue/documentation/api/toolbar/clickEventArgs).
-* Show, Hide - Existing items can be shown or hidden using the [`ToolbarSettings`](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/toolbarSettings/) property. Pre-defined toolbar items are available with [`ToolbarItem`](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/toolbarItem/).
+* Show, Hide - Existing items can be shown or hidden using the [`ToolbarSettings`](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/toolbarSettings) property. Pre-defined toolbar items are available with [`ToolbarItem`](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/toolbarItem).
-* Enable, Disable - Toolbar items can be enabled or disable using [`enabletoolbaritem`](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/toolbar/#enabletoolbaritem)
+* Enable, Disable - Toolbar items can be enabled or disable using [`enabletoolbaritem`](https://ej2.syncfusion.com/vue/documentation/api/pdfviewer/toolbar#enabletoolbaritem)
{% tabs %}
{% highlight html tabtitle="Composition API (Standalone)" %}
diff --git a/Document-Processing/Release-Notes/v32.1.20.md b/Document-Processing/Release-Notes/v32.1.20.md
new file mode 100644
index 000000000..49843b92a
--- /dev/null
+++ b/Document-Processing/Release-Notes/v32.1.20.md
@@ -0,0 +1,38 @@
+---
+title : Essential Studio® for Document Processing Release Notes - v32.1.20
+description : Learn here about the controls in the Essential Studio® for Document Processing Weekly Nuget Release - Release Notes - v32.1.20
+platform : document-processing
+documentation: ug
+---
+
+# Essential Studio® for Document Processing - v32.1.20 Release Notes
+
+{% include release-info.html date="December 23, 2025" version="v32.1.20" passed="226408" failed="0" %}
+
+{% directory path: _includes/release-notes/v32.1.20 %}
+
+{% include {{file.url}} %}
+
+{% enddirectory %}
+
+## Test Results
+
+| Component Name | Platform | Test Cases | Passed | Failed | Remarks |
+|----------------|----------|------------|--------|--------|---------|
+| Calculate Library | .NET | 145 | 145 | 0 | All Passed |
+| DOCX Editor | Blazor | 1944 | 1944 | 0 | All Passed |
+| DOCX Editor | Web(Javascript, Angular, React, Vue, ASP.NET Core & MVC) | 5023 | 5023 | 0 | All Passed |
+| Excel Library | .NET | 37900 | 37900 | 0 | All Passed |
+| Metafile Renderer | .NET | 863 | 863 | 0 | All Passed |
+| PDF Library | .NET | 13712 | 13712 | 0 | All Passed |
+| PDF Viewer | Blazor | 14722 | 14722 | 0 | All Passed |
+| PDF Viewer | Web(Javascript, Angular, React, Vue, ASP.NET Core & MVC) | 19374 | 19374 | 0 | All Passed |
+| PDF Viewer | Windows Forms | 207 | 207 | 0 | All Passed |
+| PDF Viewer | WPF | 2998 | 2998 | 0 | All Passed |
+| PDF Viewer | .NET MAUI | 14684 | 14684 | 0 | All Passed |
+| PowerPoint Library | .NET | 54516 | 54516 | 0 | All Passed |
+| Spreadsheet | Blazor | 2870 | 2870 | 0 | All Passed |
+| Spreadsheet | Web(Javascript, Angular, React, Vue, ASP.NET Core & MVC) | 10411 | 10411 | 0 | All Passed |
+| Spreadsheet | WPF | 2697 | 2697 | 0 | All Passed |
+| Word Library | .NET | 40263 | 40263 | 0 | All Passed |
+| Word Library | Java | 4079 | 4079 | 0 | All Passed |
\ No newline at end of file
diff --git a/Document-Processing/Release-Notes/v32.1.21.md b/Document-Processing/Release-Notes/v32.1.21.md
new file mode 100644
index 000000000..4cd3e36ce
--- /dev/null
+++ b/Document-Processing/Release-Notes/v32.1.21.md
@@ -0,0 +1,38 @@
+---
+title : Essential Studio® for Document Processing Release Notes - v32.1.21
+description : Learn here about the controls in the Essential Studio® for Document Processing Weekly Nuget Release - Release Notes - v32.1.21
+platform : document-processing
+documentation: ug
+---
+
+# Essential Studio® for Document Processing - v32.1.21 Release Notes
+
+{% include release-info.html date="December 30, 2025" version="v32.1.21" passed="226,592" failed="0" %}
+
+{% directory path: _includes/release-notes/v32.1.21 %}
+
+{% include {{file.url}} %}
+
+{% enddirectory %}
+
+## Test Results
+
+| Component Name | Platform | Test Cases | Passed | Failed | Remarks |
+|----------------|----------|------------|--------|--------|---------|
+| Calculate Library | .NET | 145 | 145 | 0 | All Passed |
+| DOCX Editor | Blazor | 1975 | 1975 | 0 | All Passed |
+| DOCX Editor | Web(Javascript, Angular, React, Vue, ASP.NET Core & MVC) | 5023 | 5023 | 0 | All Passed |
+| Excel Library | .NET | 37869 | 37869 | 0 | All Passed |
+| Metafile Renderer | .NET | 863 | 863 | 0 | All Passed |
+| PDF Library | .NET | 13737 | 13737 | 0 | All Passed |
+| PDF Viewer | Blazor | 14837 | 14837 | 0 | All Passed |
+| PDF Viewer | Web(Javascript, Angular, React, Vue, ASP.NET Core & MVC) | 19374 | 19374 | 0 | All Passed |
+| PDF Viewer | .NET MAUI | 14684 | 14684 | 0 | All Passed |
+| PDF Viewer | Windows Forms | 207 | 207 | 0 | All Passed |
+| PDF Viewer | WPF | 2998 | 2998 | 0 | All Passed |
+| PowerPoint Library | .NET | 54520 | 54520 | 0 | All Passed |
+| Spreadsheet | Blazor | 2868 | 2868 | 0 | All Passed |
+| Spreadsheet | Web(Javascript, Angular, React, Vue, ASP.NET Core & MVC) | 10446 | 10446 | 0 | All Passed |
+| Spreadsheet | WPF | 2697 | 2697 | 0 | All Passed |
+| Word Library | .NET | 40270 | 40270 | 0 | All Passed |
+| Word Library | Java | 4079 | 4079 | 0 | All Passed |
\ No newline at end of file
diff --git a/Document-Processing/Release-Notes/v32.1.22.md b/Document-Processing/Release-Notes/v32.1.22.md
new file mode 100644
index 000000000..66ec3f209
--- /dev/null
+++ b/Document-Processing/Release-Notes/v32.1.22.md
@@ -0,0 +1,38 @@
+---
+title : Essential Studio® for Document Processing Release Notes - v32.1.22
+description : Learn here about the controls in the Essential Studio® for Document Processing Weekly Nuget Release - Release Notes - v32.1.22
+platform : document-processing
+documentation: ug
+---
+
+# Essential Studio® for Document Processing - v32.1.22 Release Notes
+
+{% include release-info.html date="January 06, 2026" version="v32.1.22" passed="226995" failed="0" %}
+
+{% directory path: _includes/release-notes/v32.1.22 %}
+
+{% include {{file.url}} %}
+
+{% enddirectory %}
+
+## Test Results
+
+| Component Name | Platform | Test Cases | Passed | Failed | Remarks |
+|----------------|----------|------------|--------|--------|---------|
+| Calculate Library | .NET | 145 | 145 | 0 | All Passed |
+| DOCX Editor | Blazor | 1975 | 1975 | 0 | All Passed |
+| DOCX Editor | Web(Javascript, Angular, React, Vue, ASP.NET Core & MVC) | 5023 | 5023 | 0 | All Passed |
+| Excel Library | .NET | 37875 | 37875 | 0 | All Passed |
+| Metafile Renderer | .NET | 897 | 897 | 0 | All Passed |
+| PDF Library | .NET | 13745 | 13745 | 0 | All Passed |
+| PDF Viewer | .NET MAUI | 14684 | 14684 | 0 | All Passed |
+| PDF Viewer | Windows Forms | 207 | 207 | 0 | All Passed |
+| PDF Viewer | WPF | 2998 | 2998 | 0 | All Passed |
+| PDF Viewer | Blazor | 14837 | 14837 | 0 | All Passed |
+| PDF Viewer | Web(Javascript, Angular, React, Vue, ASP.NET Core & MVC) | 19374 | 19374 | 0 | All Passed |
+| PowerPoint Library | .NET | 54530 | 54530 | 0 | All Passed |
+| Spreadsheet | Blazor | 3012 | 3012 | 0 | All Passed |
+| Spreadsheet | Web(Javascript, Angular, React, Vue, ASP.NET Core & MVC) | 10633 | 10633 | 0 | All Passed |
+| Spreadsheet | WPF | 2710 | 2710 | 0 | All Passed |
+| Word Library | .NET | 40271 | 40271 | 0 | All Passed |
+| Word Library | Java | 4079 | 4079 | 0 | All Passed |
\ No newline at end of file
diff --git a/Document-Processing/Release-Notes/v32.1.23.md b/Document-Processing/Release-Notes/v32.1.23.md
new file mode 100644
index 000000000..fb77d7d1d
--- /dev/null
+++ b/Document-Processing/Release-Notes/v32.1.23.md
@@ -0,0 +1,38 @@
+---
+title : Essential Studio® for Document Processing Release Notes - v32.1.23
+description : Learn here about the controls in the Essential Studio® for Document Processing Weekly Nuget Release - Release Notes - v32.1.23
+platform : document-processing
+documentation: ug
+---
+
+# Essential Studio® for Document Processing - v32.1.23 Release Notes
+
+{% include release-info.html date="January 13, 2026" version="v32.1.23" passed="227248" failed="0" %}
+
+{% directory path: _includes/release-notes/v32.1.23 %}
+
+{% include {{file.url}} %}
+
+{% enddirectory %}
+
+## Test Results
+
+| Component Name | Platform | Test Cases | Passed | Failed | Remarks |
+|----------------|----------|------------|--------|--------|---------|
+| Calculate Library | .NET | 145 | 145 | 0 | All Passed |
+| DOCX Editor | Blazor | 1975 | 1975 | 0 | All Passed |
+| DOCX Editor | Web(Javascript, Angular, React, Vue, ASP.NET Core & MVC) | 5023 | 5023 | 0 | All Passed |
+| Excel Library | .NET | 37875 | 37875 | 0 | All Passed |
+| Metafile Renderer | .NET | 897 | 897 | 0 | All Passed |
+| PDF Library | .NET | 13759 | 13759 | 0 | All Passed |
+| PDF Viewer | .NET MAUI | 14684 | 14684 | 0 | All Passed |
+| PDF Viewer | Blazor | 14879 | 14879 | 0 | All Passed |
+| PDF Viewer | Web(Javascript, Angular, React, Vue, ASP.NET Core & MVC) | 19556 | 19556 | 0 | All Passed |
+| PDF Viewer | Windows Forms | 207 | 207 | 0 | All Passed |
+| PDF Viewer | WPF | 2998 | 2998 | 0 | All Passed |
+| PowerPoint Library | .NET | 54538 | 54538 | 0 | All Passed |
+| Spreadsheet | Blazor | 3012 | 3012 | 0 | All Passed |
+| Spreadsheet | Web(Javascript, Angular, React, Vue, ASP.NET Core & MVC) | 10633 | 10633 | 0 | All Passed |
+| Spreadsheet | WPF | 2710 | 2710 | 0 | All Passed |
+| Word Library | .NET | 40278 | 40278 | 0 | All Passed |
+| Word Library | Java | 4079 | 4079 | 0 | All Passed |
\ No newline at end of file
diff --git a/Document-Processing/Release-Notes/v32.1.24.md b/Document-Processing/Release-Notes/v32.1.24.md
new file mode 100644
index 000000000..e4ca3abf8
--- /dev/null
+++ b/Document-Processing/Release-Notes/v32.1.24.md
@@ -0,0 +1,38 @@
+---
+title : Essential Studio® for Document Processing Release Notes - v32.1.24
+description : Learn here about the controls in the Essential Studio® for Document Processing Weekly Nuget Release - Release Notes - v32.1.24
+platform : document-processing
+documentation: ug
+---
+
+# Essential Studio® for Document Processing - v32.1.24 Release Notes
+
+{% include release-info.html date="January 20, 2026" version="v32.1.24" passed="227811" failed="0" %}
+
+{% directory path: _includes/release-notes/v32.1.24 %}
+
+{% include {{file.url}} %}
+
+{% enddirectory %}
+
+## Test Results
+
+| Component Name | Platform | Test Cases | Passed | Failed | Remarks |
+|----------------|----------|------------|--------|--------|---------|
+| Calculate Library | .NET | 145 | 145 | 0 | All Passed |
+| DOCX Editor | Blazor | 1975 | 1975 | 0 | All Passed |
+| DOCX Editor | Web(Javascript, Angular, React, Vue, ASP.NET Core & MVC) | 5023 | 5023 | 0 | All Passed |
+| Excel Library | .NET | 37875 | 37875 | 0 | All Passed |
+| Metafile Renderer | .NET | 897 | 897 | 0 | All Passed |
+| PDF Library | .NET | 13763 | 13763 | 0 | All Passed |
+| PDF Viewer | Windows Forms | 209 | 209 | 0 | All Passed |
+| PDF Viewer | WPF | 3036 | 3036 | 0 | All Passed |
+| PDF Viewer | .NET MAUI | 14684 | 14684 | 0 | All Passed |
+| PDF Viewer | Blazor | 14985 | 14985 | 0 | All Passed |
+| PDF Viewer | Web(Javascript, Angular, React, Vue, ASP.NET Core & MVC) | 19805 | 19805 | 0 | All Passed |
+| PowerPoint Library | .NET | 54538 | 54538 | 0 | All Passed |
+| Spreadsheet | Blazor | 3012 | 3012 | 0 | All Passed |
+| Spreadsheet | Web(Javascript, Angular, React, Vue, ASP.NET Core & MVC) | 10773 | 10773 | 0 | All Passed |
+| Spreadsheet | WPF | 2710 | 2710 | 0 | All Passed |
+| Word Library | .NET | 40302 | 40302 | 0 | All Passed |
+| Word Library | Java | 4079 | 4079 | 0 | All Passed |
\ No newline at end of file
diff --git a/Document-Processing/Word/Word-Library/NET/FAQ.md b/Document-Processing/Word/Word-Library/NET/FAQ.md
index 83f92e0ff..c0da49cfb 100644
--- a/Document-Processing/Word/Word-Library/NET/FAQ.md
+++ b/Document-Processing/Word/Word-Library/NET/FAQ.md
@@ -5,7 +5,7 @@ platform: document-processing
control: DocIO
documentation: UG
---
-# Frequently Asked Questions
+# Frequently Asked Questions in Word Library
The frequently asked questions under each category in Essential® DocIO are listed below.
@@ -28,7 +28,6 @@ The frequently asked questions under each category in Essential®
* [Why does the item index in a Word document differ from the DocIO library?](https://help.syncfusion.com/document-processing/word/word-library/net/faqs/word-document-faqs#why-does-the-item-index-in-a-word-document-differ-from-the-docio-library)
* [How to view Word documents in my .NET MAUI application using DocIO?](https://help.syncfusion.com/document-processing/word/word-library/net/faqs/word-document-faqs#how-to-view-word-documents-in-my-net-maui-application-using-docio)
* [How to identify if a Word document is in portrait or landscape?](https://help.syncfusion.com/document-processing/word/word-library/net/faqs/word-document-faqs#how-to-identify-if-a-word-document-is-in-portrait-or-landscape)
-* [How to save the Word document with same compatibility using DocIO?](https://help.syncfusion.com/document-processing/word/word-library/net/word-file-formats#saving-word-document-with-compatibility)
* [How to create a Word document using DocIO in a python wrapper-based web API using .NET Core Word library?](https://support.syncfusion.com/kb/article/20139/how-to-create-a-word-document-using-docio-in-aspnet-core)
* [How to integrate DocIO functionality in Node.js using ASP.NET Core Web API?](https://support.syncfusion.com/kb/article/20317/how-to-integrate-docio-functionality-in-nodejs-using-aspnet-core-web-api)
* [Is it possible to fetch the page number of Word document elements using DocIO?](https://help.syncfusion.com/document-processing/word/word-library/net/faqs/word-document-faqs#is-it-possible-to-fetch-the-page-number-of-word-document-elements-using-docio)
@@ -36,6 +35,8 @@ The frequently asked questions under each category in Essential®
* [Can DocIO open or process MPIP-protected Word documents?](https://help.syncfusion.com/document-processing/word/word-library/net/faqs/word-document-faqs#can-docio-open-or-process-mpip-protected-word-documents)
* [Why does content imported from one Word document to another start on a new page, even without a section break?](https://help.syncfusion.com/document-processing/word/word-library/net/faqs/word-document-faqs#why-does-content-imported-from-one-word-document-to-another-start-on-a-new-page-even-without-a-section-break)
* [Does DocIO process corrupted Word documents?](https://help.syncfusion.com/document-processing/word/word-library/net/faqs/word-document-faqs#does-docio-process-corrupted-word-documents)
+* [Does DocIO support sensitivity labels?](https://help.syncfusion.com/document-processing/word/word-library/net/faqs/word-document-faqs#does-docio-support-sensitivity-labels)
+* [Can DocIO Open a Document with Sensitivity Labels Applied?](https://help.syncfusion.com/document-processing/word/word-library/net/faqs/word-document-faqs#can-docio-open-a-document-with-sensitivity-labels-applied)
## Sections
diff --git a/Document-Processing/Word/Word-Library/NET/Supported-and-Unsupported-Features.md b/Document-Processing/Word/Word-Library/NET/Supported-and-Unsupported-Features.md
index 3a102073b..752807be3 100644
--- a/Document-Processing/Word/Word-Library/NET/Supported-and-Unsupported-Features.md
+++ b/Document-Processing/Word/Word-Library/NET/Supported-and-Unsupported-Features.md
@@ -46,7 +46,7 @@ Yes
Yes
Yes
Yes
-No
+Yes
No
@@ -61,7 +61,7 @@ Yes
Encryption and Decryption
No
-No
+Yes
Yes—limited [except Word 2013]
Yes—limited [except Word 2013]
N/A
@@ -242,8 +242,8 @@ Yes
Yes
Yes
Yes
-No
-No
+Yes
+Yes
Vertical alignment
@@ -294,7 +294,7 @@ Yes
Yes
Yes
Yes
-No
+Yes
Yes
@@ -373,8 +373,8 @@ No
Equation
No
No
-No
-No
+Yes
+Yes
No
No
@@ -400,8 +400,8 @@ No
WordArt
No
No
-No
-No
+Yes VML - No
+Yes VML - No
No
No
@@ -522,12 +522,12 @@ Yes
Suppress hyphenation
-No
-No
-No
-No
-No
-No
+Yes
+Yes
+Yes
+Yes
+Yes
+Yes
Indents – left, right, first line & hanging
@@ -1107,6 +1107,106 @@ Yes
+## Supported Fields
+
+
+
Field
+
Supports Update
+
+
+
= (Formula) field
+
Yes
+ Known Limitation:
+ All formula fields are supported except formulas that evaluate an entire column or row (for example, =SUM(ABOVE)), which are not supported
+
+
+
Advance field
Not Applicable
+
Ask field
No
+
Author field
Yes
+
AutoNum field
Not Applicable
+
AutoNumLGL field
Not Applicable
+
AutoNumOut field
Not Applicable
+
AutoText field
No
+
AutoTextList field
No
+
Comments field
Yes
+
Compare field
Yes
+
CreateDate field
No
+
Date field
Yes
+
DocProperty field
Yes
+
DocVariable field
Yes
+
FileName field
No
+
FileSize field
No
+
Fill-In field
No
+
GoToButton field
Not Applicable
+
Hyperlink field
Not Applicable
+
If field
Yes
+
IncludePicture field
Not Applicable
+
IncludeText field
No
+
Index field
No
+
Info field
No
+
Keywords field
No
+
LastSavedBy field
No
+
ListNum field
Not Applicable
+
MacroButton field
Not Applicable
+
MergeField field
Yes
+
MergeRec field
Yes
+
MergeSeq field
Yes
+
Next field
Yes
+
NextIf field
Yes
+
NoteRef field
No
+
NumChars field
No
+
+
NumPages field
+
+ Yes
+ Known Limitation:
+ Not supported on Silverlight/WinRT platforms. PDF layout limitations may cause incorrect page counts.
+ Requires UpdateDocumentFields() and PDF assemblies in .NET Core/MAUI.
+
+
+
NumWords field
No
+
+
Page field
+
+ Yes
+ Known Limitation:
+ Not supported on Silverlight/WinRT platforms. PDF layout limitations may cause incorrect page counts.
+ Requires UpdateDocumentFields() and PDF assemblies in .NET Core/MAUI.
+
+
+
PageRef field
+
+ Yes
+ Known Limitation:
+ Not supported on Silverlight/WinRT platforms. PDF layout limitations may cause incorrect page counts.
+ Requires UpdateDocumentFields() and PDF assemblies in .NET Core/MAUI.
+
+
+
PrintDate field
No
+
Quote field
No
+
Ref field
Yes
+
RevNum field
No
+
SaveDate field
No
+
Section field
Yes
+
SectionPages field
No
+
Seq (Sequence) field
Yes
+
Set field
Yes
+
SkipIf field
No
+
StyleRef field
No
+
Subject field
Yes
+
Symbol field
Not Applicable
+
Template field
No
+
Time field
Yes
+
Title field
Yes
+
TOA
No
+
TOC (Table of Contents) field
Yes
+
UserAddress field
No
+
UserInitials field
No
+
UserName field
No
+
+
+
+
## Blazor supported features
diff --git a/Document-Processing/Word/Word-Library/NET/Working-with-Fields.md b/Document-Processing/Word/Word-Library/NET/Working-with-Fields.md
index f4a652e66..2d35d5d45 100644
--- a/Document-Processing/Word/Word-Library/NET/Working-with-Fields.md
+++ b/Document-Processing/Word/Word-Library/NET/Working-with-Fields.md
@@ -246,6 +246,7 @@ Field updating engine calculates the resultant value based on the field code inf
* DOCPROPERTY
* COMPARE
* IF
+* NEXT
* NEXTIF
* MERGEREC
* MERGESEQ
@@ -258,7 +259,6 @@ Field updating engine calculates the resultant value based on the field code inf
The following are the known limitations:
* Updating of NUMPAGES field and Cross Reference field with Page number and Paragraph number options are not supported in Silverlight, WinRT, Universal, and Windows Phone applications.
-* Currently group shapes, drawing canvas, and table auto resizing are not supported in Word to PDF layouting, and this may lead to update incorrect page number and total number of pages.
N> In ASP.NET Core, Blazor, Xamarin, WinUI and .NET MAUI platforms, to update fields like Page and NumPages in a Word document, pass true to the UpdateDocumentFields() method and reference the Word to PDF [assemblies](https://help.syncfusion.com/document-processing/word/word-library/net/assemblies-required#converting-word-document-to-pdf) or [NuGet](https://help.syncfusion.com/document-processing/word/word-library/net/nuget-packages-required#converting-word-document-to-pdf) packages in your application.
@@ -1813,6 +1813,8 @@ document.Close()
{% endtabs %}
+N> For more information about the fields supported by Essential®DocIO, click [here](https://help.syncfusion.com/document-processing/word/word-library/net/supported-and-unsupported-features#supported-fields).
+
## Online Demo
* Explore how to update fields in a Word document using the .NET Word Library (DocIO) in a live demo [here](https://document.syncfusion.com/demos/word/updatefields#/tailwind).
diff --git a/Document-Processing/Word/Word-Library/NET/Working-with-Tables.md b/Document-Processing/Word/Word-Library/NET/Working-with-Tables.md
index 62d492ded..863caa493 100644
--- a/Document-Processing/Word/Word-Library/NET/Working-with-Tables.md
+++ b/Document-Processing/Word/Word-Library/NET/Working-with-Tables.md
@@ -1515,6 +1515,8 @@ End Using
You can download a complete working sample from [GitHub](https://github.com/SyncfusionExamples/DocIO-Examples/tree/main/Tables/Apply-base-style-for-table).
+To know more about the Built‑in table styles supported by Essential® DocIO, refer the [documentation](https://help.syncfusion.com/cr/document-processing/Syncfusion.DocIO.DLS.BuiltInTableStyle.html#fields), which also includes the visual appearance of each Built‑in table style.
+
## Merging cells vertically and horizontally
You can combine two or more table cells located in the same row or column into a single cell.
@@ -2159,7 +2161,7 @@ You can download a complete working sample from [GitHub](https://github.com/Sync
* [How to extract tables and add to a new Document in ASP.NETCore Word?](https://support.syncfusion.com/kb/article/19585/how-to-extract-tables-and-add-to-a-new-document-in-aspnetcore-word?)
* [How to remove multiple rows from a table in a Word Document?](https://support.syncfusion.com/kb/article/19642/how-to-remove-multiple-rows-from-a-table-in-a-word-document)
* [How to set table row height in a Word document?](https://support.syncfusion.com/kb/article/19688/how-to-set-table-row-height-in-a-word-document)
-* [How to Find and Remove a Table by Title in .Net Core Word document?](https://support.syncfusion.com/kb/article/19677/how-to-find-and-remove-a-table-by-title-in-a-word-document)
+* [How to Find and Remove a Table by Title in .NET Core Word document?](https://support.syncfusion.com/kb/article/19677/how-to-find-and-remove-a-table-by-title-in-a-word-document)
* [How to adjust the first column to fill remaining space in a Word table?](https://support.syncfusion.com/kb/article/19652/how-to-adjust-the-first-column-to-fill-remaining-space-in-a-word-table)
* [How to Keep Paragraphs Inside a Table in ASP.NET Core Word?](https://support.syncfusion.com/kb/article/19678/how-to-keep-paragraphs-inside-a-table-in-aspnet-core-word)
* [How to copy rows from one table to another while preserving formatting in a Word document?](https://support.syncfusion.com/kb/article/20307/how-to-copy-rows-from-one-table-to-another-while-preserving-formatting-in-a-word-document)
diff --git a/Document-Processing/Word/Word-Library/NET/faqs/word-document-faqs.md b/Document-Processing/Word/Word-Library/NET/faqs/word-document-faqs.md
index 27d397db4..594269ab9 100644
--- a/Document-Processing/Word/Word-Library/NET/faqs/word-document-faqs.md
+++ b/Document-Processing/Word/Word-Library/NET/faqs/word-document-faqs.md
@@ -293,8 +293,6 @@ DocIO is a non-UI component that provides a comprehensive document object model
If you encounter a **Wrong signature** exception while attempting to open an XML file using DocIO, it likely indicates that the XML file is not in the supported Word Processing 2007 or 2003 format. DocIO specifically supports these XML formats. To resolve this issue, please verify that the input XML file adheres to the Word Processing 2007 or 2003 format.
-For more information on Word Processing XML, refer to the documentation [here](https://help.syncfusion.com/document-processing/word/word-library/net/word-file-formats#word-processing-xml-xml).
-
## How to set the current culture while running the .NET application?
If you notice that certain content in a Word document, such as dates or other culture-sensitive fields, is displayed in the wrong language or format, it could be due to the culture settings of your application. To ensure that the application displays content according to a specific culture, you can set the current culture programmatically.
@@ -673,3 +671,9 @@ No, it's not possible to get the exact position (like X, Y coordinates or page n
This is because a Word document is a flow-based document, where contents are not preserved page by page. Instead, the contents are preserved sequentially, section by section. Each section may extend across multiple pages based on its contents, such as tables, text, images, and more. Position information of elements is not maintained at the file level in a Word document.
DocIO is a non-UI component that provides a full-fledged document object model to manipulate the Word document contents based on file-level information. Hence, it is not feasible to retrieve the position of an element within a Word document using DocIO.
+
+## Does DocIO support sensitivity labels?
+No, Sensitivity labels are organization-level settings and are not stored within the word document itself. Therefore, DocIO does not support applying or preserving sensitivity labels.
+
+## Can DocIO Open a Document with Sensitivity Labels Applied?
+If a document is encrypted due to its sensitivity label configuration, DocIO cannot open it because the content is stored in an encrypted format and requires an authorized Microsoft account for access.
diff --git a/Document-Processing/Word/Word-Library/NET/html.md b/Document-Processing/Word/Word-Library/NET/html.md
index 811e713f1..11e022b5c 100644
--- a/Document-Processing/Word/Word-Library/NET/html.md
+++ b/Document-Processing/Word/Word-Library/NET/html.md
@@ -248,6 +248,86 @@ N> Calling the above event is mandatory in ASP.NET Core, UWP, and Xamarin platfo
* [How to get image from URL while opening HTML in .NET Core targeting applications?](https://www.syncfusion.com/kb/13053/how-to-get-image-from-url-while-opening-html-in-asp-net-core)
+### Supported CSS Selector in DocIO
+
+CSS selectors are used to select the HTML elements you want to style and apply a set of CSS rules.
+
+
+
+You can download a complete working sample that includes all these CSS selectors from [GitHub](https://github.com/SyncfusionExamples/DocIO-Examples/tree/main/HTML-conversions/Convert-HTML-with-CSS-Selctor-to-Word)
+
+N> DocIO supports only internally defined CSS selectors during HTML conversion and does not support external CSS selectors referenced in the HTML file.
+
## Convert Word to HTML
The following code example shows how to convert the Word document into HTML.
diff --git a/Document-Processing/Word/Word-Library/NET/text.md b/Document-Processing/Word/Word-Library/NET/text.md
index 2b686ba6b..3e5b64701 100644
--- a/Document-Processing/Word/Word-Library/NET/text.md
+++ b/Document-Processing/Word/Word-Library/NET/text.md
@@ -10,6 +10,9 @@ documentation: UG
The Essential® DocIO converts the Word document into Text file and vice versa.
+To quickly start converting a Word document to Text and vice versa, please check out this video:
+{% youtube "https://www.youtube.com/watch?v=sK71TfWEtk8" %}
+
## Convert Word to Text
The following code example shows how to convert the Word document into text file.
diff --git a/Document-Processing/Word/Word-Processor/angular/ribbon.md b/Document-Processing/Word/Word-Processor/angular/ribbon.md
index bab06b7ae..981471763 100644
--- a/Document-Processing/Word/Word-Processor/angular/ribbon.md
+++ b/Document-Processing/Word/Word-Processor/angular/ribbon.md
@@ -16,13 +16,28 @@ You can switch between the classic **Toolbar** and the new **Ribbon** UI, and yo
## Enable Ribbon Mode
-To enable Ribbon in Angular Document Editor, use the [`toolbarMode`](https://ej2.syncfusion.com/angular/documentation/api/document-editor-container/#toolbarmode) property of `DocumentEditorContainer`. The available toolbar modes are:
+To enable Ribbon in Angular Document Editor, use the [`toolbarMode`](https://ej2.syncfusion.com/angular/documentation/api/document-editor-container/index-default#toolbarmode) property of `DocumentEditorContainer`. The available toolbar modes are:
- **'Toolbar'** - The traditional toolbar UI.
- **'Ribbon'** - The Ribbon UI, which provides a tabbed interface with grouped commands.
By default, `toolbarMode` is `Toolbar`.
+To use Ribbon mode in the Document Editor, include the necessary CSS files from the **../node_modules/@syncfusion** package folder. This can be referenced in [src/styles.css] using following code.
+
+```css
+@import '../node_modules/@syncfusion/ej2-base/styles/material.css';
+@import '../node_modules/@syncfusion/ej2-buttons/styles/material.css';
+@import '../node_modules/@syncfusion/ej2-inputs/styles/material.css';
+@import '../node_modules/@syncfusion/ej2-popups/styles/material.css';
+@import '../node_modules/@syncfusion/ej2-lists/styles/material.css';
+@import '../node_modules/@syncfusion/ej2-navigations/styles/material.css';
+@import '../node_modules/@syncfusion/ej2-splitbuttons/styles/material.css';
+@import '../node_modules/@syncfusion/ej2-dropdowns/styles/material.css';
+@import '../node_modules/@syncfusion/ej2-angular-documenteditor/styles/material.css';
+@import '../node_modules/@syncfusion/ej2-ribbon/styles/material.css';/* Required for Ribbon */
+```
+
The following code shows the how to enable the `Ribbon` in Document Editor.
```typescript
diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/aws-s3-bucket.md b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/aws-s3-bucket.md
new file mode 100644
index 000000000..58b209e0a
--- /dev/null
+++ b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/aws-s3-bucket.md
@@ -0,0 +1,127 @@
+---
+layout: post
+title: Open document from AWS S3 in ASP.NET Core Document editor | Syncfusion
+description: Learn about how to Open document from AWS S3 in ASP.NET Core Document editor control of Syncfusion Essential JS 2 and more details.
+platform: document-processing
+control: Open document from AWS S3
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Open document from AWS S3
+
+To load a document from AWS S3 in a Document Editor, you can follow the steps below
+
+
+**Step 1:** Create a Simple Document Editor Sample in ASP.NET Core
+
+Start by following the steps provided in this [link](../../document-editor/getting-started-core) to create a simple Document Editor sample in ASP.NET Core. This will give you a basic setup of the Document Editor component.
+
+
+
+**Step 2:** Modify the `DocumentEditorController.cs` File in the Web Service Project
+
+* Open the `DocumentEditorController.cs` file in your web service project.
+
+* Import the required namespaces at the top of the file:
+
+```csharp
+using System.IO;
+using Amazon;
+using Amazon.S3;
+using Amazon.S3.Model;
+```
+
+* Add the following private fields and constructor parameters to the `DocumentEditorController` class, In the constructor, assign the values from the configuration to the corresponding fields
+
+```csharp
+private IConfiguration _configuration;
+public readonly string _accessKey;
+public readonly string _secretKey;
+public readonly string _bucketName;
+
+public DocumentEditorController(IWebHostEnvironment hostingEnvironment, IMemoryCache cache, IConfiguration configuration)
+{
+ _hostingEnvironment = hostingEnvironment;
+ _cache = cache;
+ _configuration = configuration;
+ _accessKey = _configuration.GetValue("AccessKey");
+ _secretKey = _configuration.GetValue("SecretKey");
+ _bucketName = _configuration.GetValue("BucketName");
+}
+```
+
+* Create the `LoadFromS3()` method to load the document from AWS S3.
+
+```csharp
+
+[AcceptVerbs("Post")]
+[HttpPost]
+[EnableCors("AllowAllOrigins")]
+[Route("LoadFromS3")]
+//Post action for Loading the documents
+
+public async Task LoadFromS3([FromBody] Dictionary onObject)
+{
+ MemoryStream stream = new MemoryStream();
+
+ if (jsonObject == null && !jsonObject.ContainsKey("documentName"))
+ {
+ return null;
+ }
+ RegionEndpoint bucketRegion = RegionEndpoint.USEast1;
+
+ // Configure the AWS SDK with your access credentials and other settings
+ var s3Client = new AmazonS3Client(_accessKey, _secretKey, bucketRegion);
+
+ string documentName = jsonObject["documentName"];
+
+ // Specify the document name or retrieve it from a different source
+ var response = await s3Client.GetObjectAsync(_bucketName, documentName);
+
+ Stream responseStream = response.ResponseStream;
+ responseStream.CopyTo(stream);
+ stream.Seek(0, SeekOrigin.Begin);
+ WordDocument document = WordDocument.Load(stream, FormatType.Docx);
+ string json = Newtonsoft.Json.JsonConvert.SerializeObject(document);
+ document.Dispose();
+ stream.Close();
+ return json;
+}
+```
+
+* 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": "*",
+ "AccessKey": "Your Access Key from AWS S3",
+ "SecretKey": "Your Secret Key from AWS S3",
+ "BucketName": "Your Bucket name from AWS S3"
+}
+```
+
+N> Replace **Your Access Key from AWS S3**, **Your Secret Key from AWS S3**, and **Your Bucket name from AWS S3** with your actual AWS access key, secret key and bucket name
+
+**Step 3:** Modify the Index.cshtml File in the Document Editor sample
+
+In the client-side, the document is returned from the web service is opening using `open` method.
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+{% include code-snippet/document-editor/asp-net-core/document-editor-container/open-aws-s3/tagHelper %}
+{% endhighlight %}
+{% highlight c# tabtitle="Document-editor.cs" %}
+{% include code-snippet/document-editor/asp-net-core/document-editor-container/open-aws-s3/document-editor.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+
+
+N> The **AWSSDK.S3** NuGet package must be installed in your application to use the previous code example.
diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/azure-blob-storage.md b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/azure-blob-storage.md
new file mode 100644
index 000000000..892fb0676
--- /dev/null
+++ b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/azure-blob-storage.md
@@ -0,0 +1,111 @@
+---
+layout: post
+title: Open Azure Blob Files in ASP.NET Core Document editor | Syncfusion
+description: Learn about how to Open document from Azure Blob Storage in ASP.NET Core Document editor control of Syncfusion Essential JS 2 and more details.
+platform: document-processing
+control: Open document from Azure Blob Storage
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Open document from Azure Blob Storage
+
+To load document from Azure Blob Storage in a Document Editor, you can follow the steps below
+
+
+**Step 1:** Create a Simple Document Editor Sample in ASP.NET Core
+
+Start by following the steps provided in this [link](../../document-editor/getting-started-core) to create a simple Document Editor sample in ASP.NET Core. This will give you a basic setup of the Document Editor component.
+
+
+**Step 2:** Modify the `DocumentEditorController.cs` File in the Web Service Project
+
+* Open the `DocumentEditorController.cs` file in your web service project.
+
+* Import the required namespaces at the top of the file:
+
+```csharp
+using System.IO;
+using Azure.Storage.Blobs;
+using Azure.Storage.Blobs.Specialized;
+```
+
+* Add the following private fields and constructor parameters to the `DocumentEditorController` class, In the constructor, assign the values from the configuration to the corresponding fields
+
+
+```csharp
+private readonly string _storageConnectionString;
+private readonly string _storageContainerName;
+private readonly ILogger _logger;
+
+public DocumentEditorController(IConfiguration configuration, ILogger logger)
+{
+ _storageConnectionString = configuration.GetValue("connectionString");
+ _storageContainerName = configuration.GetValue("containerName");
+ _logger = logger;
+}
+```
+
+* Modify the `LoadFromAzure()` method to load the document from Azure Blob Storage
+
+```csharp
+
+[HttpPost("LoadFromAzure")]
+[Microsoft.AspNetCore.Cors.EnableCors("MyPolicy")]
+[Route("[controller]/LoadFromAzure")]
+//Post action for Loading the PDF documents
+
+public IActionResult LoadFromAzure([FromBody] Dictionary jsonObject)
+{
+ MemoryStream stream = new MemoryStream();
+
+ if (jsonObject == null && !jsonObject.ContainsKey("documentName"))
+ {
+ return null
+ }
+ BlobServiceClient blobServiceClient = new BlobServiceClient(_storageConnectionString);
+ string fileName = jsonObject["documentName"];
+ BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(_storageContainerName);
+ BlockBlobClient blockBlobClient = containerClient.GetBlockBlobClient(fileName);
+ blockBlobClient.DownloadTo(stream);
+ WordDocument document = WordDocument.Load(stream, FormatType.Docx);
+ string json = Newtonsoft.Json.JsonConvert.SerializeObject(document);
+ document.Dispose();
+ stream.Close();
+ return json;
+}
+```
+
+* 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 from Azure*",
+ "containerName": "*Your container name in Azure*"
+}
+```
+
+N> Replace **Your Connection string from Azure** with the actual connection string for your Azure Blob Storage account and **Your container name in Azure** with the actual container name
+
+**Step 3:** Modify the Index.cshtml File in the Document Editor sample
+
+In the client-side, the document is returned from the web service is opening using `open` method.
+
+
+{% tabs %}
+{% highlight razor tabtitle="CSHTML" %}
+{% include code-snippet/document-editor/asp-net-core/document-editor-container/open-azure-blob/razor %}
+{% endhighlight %}
+{% highlight c# tabtitle="Document-editor.cs" %}
+{% include code-snippet/document-editor/asp-net-core/document-editor-container/open-azure-blob/document-editor.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+N> The **Azure.Storage.Blobs** NuGet package must be installed in your application to use the previous code example.
diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/box-cloud-file-storage.md b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/box-cloud-file-storage.md
new file mode 100644
index 000000000..e10c16d7c
--- /dev/null
+++ b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/box-cloud-file-storage.md
@@ -0,0 +1,137 @@
+---
+layout: post
+title: Open Box Cloud Files in ASP.NET Core Document Editor | Syncfusion
+description: Learn here to open a document from Box cloud file storage in Syncfusion ASP.NET Core Document editor control of Syncfusion Essential JS 2 and more.
+platform: document-processing
+control: Opening from Box cloud file storage
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Open document from Box cloud file storage
+
+To load a document from Box cloud file storage in a document Editor, you can follow the steps below
+
+**Step 1:** Set up a Box developer account and create a Box application
+
+To access Box storage programmatically, you'll need a developer account with Box. Go to the [Box Developer Console](https://developer.box.com/guides), sign in or create a new account, and then create a new Box application. This application will provide you with the necessary credentials Client ID and Client Secret to authenticate and access Box APIs. Before accessing files, you need to authenticate your application to access your Box account. Box API supports `OAuth 2.0 authentication` for this purpose.
+
+
+**Step 2:** Create a Simple Document Editor Sample in ASP.NET Core
+
+Start by following the steps provided in this [link](../../document-editor/getting-started-core) to create a simple Document Editor sample in ASP.NET Core. This will give you a basic setup of the Document Editor component.
+
+
+**Step 3:** Modify the `DocumentEditorController.cs` File in the Web Service Project
+
+* Open the `DocumentEditorController.cs` file in your web service project.
+
+* Import the required namespaces at the top of the file:
+
+```csharp
+using Box.V2;
+using Box.V2.Auth;
+using Box.V2.Config;
+using Box.V2.Models;
+```
+
+* Add the following private fields and constructor parameters to the `DocumentEditorController` class, In the constructor, assign the values from the configuration to the corresponding fields
+
+```csharp
+private IConfiguration _configuration;
+public readonly string _accessToken;
+public readonly string _clientID;
+public readonly string _clientSecret;
+public readonly string _folderID;
+
+public DocumentEditorController(IWebHostEnvironment hostingEnvironment, IMemoryCache cache, IConfiguration configuration)
+{
+ _hostingEnvironment = hostingEnvironment;
+ _cache = cache;
+ _configuration = configuration;
+ _accessToken = _configuration.GetValue("AccessToken");
+ _clientID = _configuration.GetValue("ClientID");
+ _clientSecret = _configuration.GetValue("ClientSecret");
+ _folderID = _configuration.GetValue("FolderID");
+}
+```
+
+* Create the `LoadFromBoxCloud()` method to load the document from Box cloud file storage.
+
+```csharp
+[AcceptVerbs("Post")]
+[HttpPost]
+[EnableCors("AllowAllOrigins")]
+[Route("LoadFromBoxCloud")]
+//Post action for Loading the documents
+
+public async Task LoadFromBoxCloud([FromBody] Dictionary jsonObject)
+{
+ if (jsonObject == null && !jsonObject.ContainsKey("documentName"))
+ {
+ return null
+ }
+ MemoryStream stream = new MemoryStream();
+ // Initialize the Box API client with your authentication credentials
+ var auth = new OAuthSession(_accessToken, "YOUR_REFRESH_TOKEN", 3600, "bearer");
+ var config = new BoxConfigBuilder(_clientID, _clientSecret, new Uri("http://boxsdk")).Build();
+ var client = new BoxClient(config, auth);
+
+ // Download the file from Box storage
+ var items = await client.FoldersManager.GetFolderItemsAsync(_folderID, 1000, autoPaginate: true);
+ var files = items.Entries.Where(i => i.Type == "file");
+
+ // Filter the files based on the objectName
+ var matchingFile = files.FirstOrDefault(file => file.Name == objectName);
+
+ // Fetch the file from Box storage by its name
+ var fileStream = await client.FilesManager.DownloadAsync(matchingFile.Id);
+ stream = new MemoryStream();
+ await fileStream.CopyToAsync(stream);
+
+ // Reset the position to the beginning of the stream
+ stream.Position = 0;
+
+ WordDocument document = WordDocument.Load(stream, FormatType.Docx);
+ string json = Newtonsoft.Json.JsonConvert.SerializeObject(document);
+ document.Dispose();
+ stream.Close();
+ return json;
+}
+```
+
+* 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": "*",
+ "AccessToken": "Your_Box_Storage_Access_Token",
+ "FolderID": "Your_Folder_ID",
+ "ClientID": "Your_Box_Storage_ClientID",
+ "ClientSecret": "Your_Box_Storage_ClientSecret"
+}
+```
+
+N> replace **Your_Box_Storage_Access_Token** with your actual box access token, and **Your_Folder_ID** with the ID of the folder in your box storage where you want to perform specific operations. Remember to use your valid box API credentials, as **Your_Box_Storage_ClientID** and **Your_Box_Storage_ClientSecret"** are placeholders for your application's API key and secret.
+
+**Step 4:** Modify the Index.cshtml File in the Document Editor sample
+
+In the client-side, the document is returned from the web service is opening using `open` method.
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+{% include code-snippet/document-editor/asp-net-core/document-editor-container/open-box-cloud-file-storage/tagHelper %}
+{% endhighlight %}
+{% highlight c# tabtitle="Document-editor.cs" %}
+{% include code-snippet/document-editor/asp-net-core/document-editor-container/open-box-cloud-file-storage/document-editor.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+
+N> The **Box.V2.Core** NuGet package must be installed in your application to use the previous code example.
diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/dropbox-cloud-file-storage.md b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/dropbox-cloud-file-storage.md
new file mode 100644
index 000000000..de9086d2d
--- /dev/null
+++ b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/dropbox-cloud-file-storage.md
@@ -0,0 +1,119 @@
+---
+layout: post
+title: Open Dropbox Files in ASP.NET Core Document Editor | Syncfusion
+description: Learn about how to Open document from Dropbox cloud file storage in ASP.NET Core Document editor control of Syncfusion Essential JS 2 and more details.
+platform: document-processing
+control: Open document from Dropbox cloud file storage
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Open document from Dropbox cloud file storage in Document Editor
+
+To load a document from Dropbox cloud file storage in a Document editor, you can follow the steps below
+
+**Step 1:** Create a Dropbox API
+
+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.
+
+
+**Step 2:** Create a Simple Document Editor Sample in ASP.NET Core
+
+Start by following the steps provided in this [link](../../document-editor/getting-started-core) to create a simple Document Editor sample in ASP.NET Core. This will give you a basic setup of the Document Editor component.
+
+
+**Step 3:** Modify the `DocumentEditorController.cs` File in the Web Service Project
+
+* Open the `DocumentEditorController.cs` file in your web service project.
+
+* Import the required namespaces at the top of the file:
+
+```csharp
+using System.IO;
+using Dropbox.Api;
+using Dropbox.Api.Files;
+```
+
+* Add the following private fields and constructor parameters to the `DocumentEditorController` class, In the constructor, assign the values from the configuration to the corresponding fields
+
+```csharp
+private IConfiguration _configuration;
+public readonly string _accessToken;
+public readonly string _folderName;
+
+public DocumentEditorController(IWebHostEnvironment hostingEnvironment, IMemoryCache cache, IConfiguration configuration)
+{
+ _hostingEnvironment = hostingEnvironment;
+ _cache = cache;
+ _configuration = configuration;
+ _accessToken = _configuration.GetValue("AccessToken");
+ _folderName = _configuration.GetValue("FolderName");
+}
+```
+
+* Create the `LoadFromDropBox()` method to load the document from Dropbox cloud file storage.
+
+```csharp
+
+[AcceptVerbs("Post")]
+[HttpPost]
+[EnableCors("AllowAllOrigins")]
+[Route("LoadFromBoxCloud")]
+//Post action for Loading the documents
+
+public async Task LoadFromDropBox([FromBody] Dictionary jsonObject)
+{
+ if (jsonObject == null && !jsonObject.ContainsKey("documentName"))
+ {
+ return null
+ }
+ MemoryStream stream = new MemoryStream();
+
+ using (var dropBox = new DropboxClient(_accessToken))
+ {
+ using (var response = await dropBox.Files.DownloadAsync(_folderName + "/" + fileName))
+ {
+ var byteArray = await response.GetContentAsByteArrayAsync();
+ stream = new MemoryStream(byteArray);
+ }
+ }
+ WordDocument document = WordDocument.Load(stream, FormatType.Docx);
+ string json = Newtonsoft.Json.JsonConvert.SerializeObject(document);
+ document.Dispose();
+ stream.Close();
+ return json;
+}
+```
+
+* 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": "*",
+ "AccessToken": "Your_Dropbox_Access_Token",
+ "FolderName": "Your_Folder_Name"
+}
+```
+
+N> Replace **Your_Dropbox_Access_Token** with your actual Dropbox access token and **Your_Folder_Name** with your folder name.
+
+**Step 4:** Modify the Index.cshtml File in the Document Editor sample
+
+In the client-side, the document is returned from the web service is opening using `open` method.
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+{% include code-snippet/document-editor/asp-net-core/document-editor-container/open-dropbox-cloud-file-storage/tagHelper %}
+{% endhighlight %}
+{% highlight c# tabtitle="Document-editor.cs" %}
+{% include code-snippet/document-editor/asp-net-core/document-editor-container/open-dropbox-cloud-file-storage/document-editor.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+N> The **Dropbox.Api** NuGet package must be installed in your application to use the previous code example.
diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/google-cloud-storage.md b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/google-cloud-storage.md
new file mode 100644
index 000000000..bf9baec78
--- /dev/null
+++ b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/google-cloud-storage.md
@@ -0,0 +1,127 @@
+---
+layout: post
+title: Open Google Cloud Files in ASP.NET Core Document Editor | Syncfusion
+description: Learn about how to Open document from Google Cloud Storage in ASP.NET Core Document editor control of Syncfusion Essential JS 2 and more details.
+platform: document-processing
+control: Open document from Google Cloud Storage
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Open document from Google Cloud Storage
+
+To load a document from Google Cloud Storage in a Document editor, you can follow the steps below
+
+
+**Step 1:** Create a Simple Document Editor Sample in ASP.NET Core
+
+Start by following the steps provided in this [link](../../document-editor/getting-started-core) to create a simple Document Editor sample in ASP.NET Core. This will give you a basic setup of the Document Editor component.
+
+
+**Step 2:** Modify the `DocumentEditorController.cs` File in the Web Service Project
+
+* Open the `DocumentEditorController.cs` file in your web service project.
+
+* Import the required namespaces at the top of the file:
+
+```csharp
+using System.IO;
+using Google.Cloud.Storage.V1;
+using Google.Apis.Auth.OAuth2;
+```
+
+* Add the following private fields and constructor parameters to the `DocumentEditorController` class, In the constructor, assign the values from the configuration to the corresponding fields
+
+```csharp
+// Private readonly object _storageClient
+private readonly StorageClient _storageClient;
+
+private IConfiguration _configuration;
+
+public readonly string _bucketName;
+
+public DocumentEditorController(IWebHostEnvironment hostingEnvironment, IMemoryCache cache, IConfiguration configuration)
+{
+ _hostingEnvironment = hostingEnvironment;
+ _cache = cache;
+
+ // The key file is used to authenticate with Google Cloud Storage.
+ string keyFilePath = "path/to/service-account-key.json";
+
+ // Load the service account credentials from the key file.
+ var credentials = GoogleCredential.FromFile(keyFilePath);
+
+ // Create a storage client with Application Default Credentials
+ _storageClient = StorageClient.Create(credentials);
+
+ _configuration = configuration;
+
+ _bucketName = _configuration.GetValue("BucketName");
+}
+```
+
+* Create the `LoadFromGoogleCloud()` method to load the document from Google Cloud Storage.
+
+```csharp
+[AcceptVerbs("Post")]
+[HttpPost]
+[EnableCors("AllowAllOrigins")]
+[Route("LoadFromGoogleCloud")]
+//Post action for Loading the documents
+
+public async Task LoadFromGoogleCloud([FromBody] Dictionary jsonObject)
+{
+ if (jsonObject == null && !jsonObject.ContainsKey("documentName"))
+ {
+ return null
+ }
+ MemoryStream stream = new MemoryStream();
+
+ string bucketName = _bucketName;
+ string objectName = jsonObject["document"];
+ _storageClient.DownloadObject(bucketName, objectName, stream);
+ stream.Position = 0;
+
+ WordDocument document = WordDocument.Load(stream, FormatType.Docx);
+ string json = Newtonsoft.Json.JsonConvert.SerializeObject(document);
+ document.Dispose();
+ stream.Close();
+ return json;
+}
+```
+
+* 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": "*",
+ "BucketName": "Your Bucket name from Google Cloud Storage"
+}
+```
+
+N> Replace **Your Bucket name from Google Cloud Storage** with the actual name of your Google Cloud Storage bucket
+
+N> Replace **path/to/service-account-key.json** with the actual file path to your service account key JSON file. Make sure to provide the correct path and filename.
+
+**Step 3:** Modify the Index.cshtml File in the Document Editor sample
+
+In the client-side, the document is returned from the web service is opening using `open` method.
+
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+{% include code-snippet/document-editor/asp-net-core/document-editor-container/open-google-cloud-storage/tagHelper %}
+{% endhighlight %}
+{% highlight c# tabtitle="Document-editor.cs" %}
+{% include code-snippet/document-editor/asp-net-core/document-editor-container/open-google-cloud-storage/document-editor.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+
+N> The **Google.Cloud.Storage.V1** NuGet package must be installed in your application to use the previous code example.
diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/google-drive.md b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/google-drive.md
new file mode 100644
index 000000000..94c06b497
--- /dev/null
+++ b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/google-drive.md
@@ -0,0 +1,152 @@
+---
+layout: post
+title: Open Google Drive Files in ASP.NET Core Document Editor | Syncfusion
+description: Learn about how to Open document from Google Drive in ASP.NET Core Document editor control of Syncfusion Essential JS 2 and more details.
+platform: document-processing
+control: Open document from Google Drive
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Open document from Google Drive
+
+To load a document from Google Drive in a Document editor, you can follow the steps below
+
+**Step 1:** Set up 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).
+
+
+**Step 2:** Create a Simple Document Editor Sample in ASP.NET Core
+
+Start by following the steps provided in this [link](../../document-editor/getting-started-core) to create a simple Document Editor sample in ASP.NET Core. This will give you a basic setup of the Document Editor component.
+
+
+**Step 3:** Modify the `DocumentEditorController.cs` File in the Web Service Project
+
+* Open the `DocumentEditorController.cs` file in your web service project.
+
+* Import the required namespaces at the top of the file:
+
+```csharp
+using System.IO;
+using Google.Apis.Drive.v3;
+using Google.Apis.Util.Store;
+```
+
+* Add the following private fields and constructor parameters to the `DocumentEditorController` class, In the constructor, assign the values from the configuration to the corresponding fields
+
+```csharp
+private IConfiguration _configuration;
+public readonly string folderId;
+public readonly string applicationName;
+public readonly string credentialPath;
+private static readonly string[] Scopes = { DriveService.Scope.DriveFile, DriveService.Scope.DriveReadonly};
+
+public DocumentEditorController(IWebHostEnvironment hostingEnvironment, IMemoryCache cache, IConfiguration configuration)
+{
+ _hostingEnvironment = hostingEnvironment;
+ _cache = cache;
+ _configuration = configuration;
+ folderId = _configuration.GetValue("FolderId");
+ credentialPath = _configuration.GetValue("CredentialPath");
+ applicationName = _configuration.GetValue("ApplicationName");
+}
+```
+
+* Create the `LoadFromGoogleDrive()` method to load the document from Google Drive.
+
+```csharp
+[AcceptVerbs("Post")]
+[HttpPost]
+[EnableCors("AllowAllOrigins")]
+[Route("LoadFromGoogleDrive")]
+//Post action for Loading the documents
+public async Task LoadFromGoogleDrive([FromBody] Dictionary jsonObject)
+{
+
+ MemoryStream stream = new MemoryStream();
+ UserCredential credential;
+ using (var stream1 = new FileStream(credentialPath, FileMode.Open, FileAccess.Read))
+ {
+ string credPath = "token.json";
+ credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
+ GoogleClientSecrets.Load(stream1).Secrets,
+ Scopes,
+ "user",
+ CancellationToken.None,
+ new FileDataStore(credPath, true));
+ }
+
+ // Create Google Drive API service.
+ var service = new DriveService(new BaseClientService.Initializer()
+ {
+ HttpClientInitializer = credential,
+ ApplicationName = applicationName,
+ });
+ // List DOCX files in Google Drive
+ listRequest.Q = "mimeType='application/vnd.openxmlformats-officedocument.wordprocessingml.document' and '" + folderId + "' in parents and trashed=false";
+ listRequest.Fields = "files(id, name)";
+ var files = await listRequest.ExecuteAsync();
+ string fileIdToDownload = string.Empty;
+ foreach (var file in files.Files)
+ {
+ string fileId = file.Id;
+ string fileName = file.Name;
+ if (fileName == objectName)
+ {
+ // Save the matching fileId
+ fileIdToDownload = fileId;
+ break;
+ }
+ }
+ string fileIds = fileIdToDownload;
+ var request = service.Files.Get(fileIds);
+ await request.DownloadAsync(stream);
+ stream.Position = 0;
+
+ WordDocument document = WordDocument.Load(stream, FormatType.Docx);
+ string json = Newtonsoft.Json.JsonConvert.SerializeObject(document);
+ document.Dispose();
+ stream.Close();
+ return json;
+}
+```
+
+* 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": "*",
+ "FolderId": "Your Google Drive Folder ID",
+ "CredentialPath": "Your Path to the OAuth 2.0 Client IDs json file",
+ "ApplicationName": "Your Application name"
+}
+```
+
+N> Replace **Your Google Drive Folder ID**, **Your Application name**, and **Your Path to the OAuth 2.0 Client IDs json file** with your actual Google drive folder ID , Your name for your application and the path for the JSON file.
+
+N> The **FolderId** part is the unique identifier for the folder. For example, if your folder URL is: `https://drive.google.com/drive/folders/abc123xyz456`, then the folder ID is `abc123xyz456`.
+
+**Step 4:** Modify the Index.cshtml File in the Document Editor sample
+
+In the client-side, the document is returned from the web service is opening using `open` method.
+
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+{% include code-snippet/document-editor/asp-net-core/document-editor-container/open-google-drive/tagHelper %}
+{% endhighlight %}
+{% highlight c# tabtitle="Document-editor.cs" %}
+{% include code-snippet/document-editor/asp-net-core/document-editor-container/open-google-drive/document-editor.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+
+N> The **Google.Apis.Drive.v3** NuGet package must be installed in your application to use the previous code example.
diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/one-drive.md b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/one-drive.md
new file mode 100644
index 000000000..9fec98920
--- /dev/null
+++ b/Document-Processing/Word/Word-Processor/asp-net-core/opening-documents/one-drive.md
@@ -0,0 +1,156 @@
+---
+layout: post
+title: Open OneDrive Files in ASP.NET Core Document editor | Syncfusion
+description: Learn about how to Open document from One Drive in ASP.NET Core Document editor control of Syncfusion Essential JS 2 and more details.
+platform: document-processing
+control: Open document from One Drive
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Open document from One Drive
+
+To load a document from One Drive in a Document editor, you can follow the steps below
+
+**Step 1:** Create the Microsoft graph API.
+
+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.
+
+
+**Step 2:** Create a Simple Document Editor Sample in ASP.NET Core
+
+Start by following the steps provided in this [link](../../document-editor/getting-started-core) to create a simple Document Editor sample in ASP.NET Core. This will give you a basic setup of the Document Editor component.
+
+
+**Step 3:** Modify the `DocumentEditorController.cs` File in the Web Service Project
+
+* Open the `DocumentEditorController.cs` file in your web service project.
+
+* Import the required namespaces at the top of the file:
+
+```csharp
+using System.IO;
+using Microsoft.Graph;
+using Microsoft.Identity.Client;
+using Helpers;
+```
+
+* Add the following private fields and constructor parameters to the `DocumentEditorController` class, In the constructor, assign the values from the configuration to the corresponding fields
+
+```csharp
+private IConfiguration _configuration;
+public readonly string folderName;
+public readonly string applicationId;
+public readonly string tenantId;
+
+public DocumentEditorController(IWebHostEnvironment hostingEnvironment, IMemoryCache cache, IConfiguration configuration)
+{
+ _hostingEnvironment = hostingEnvironment;
+ _cache = cache;
+ _configuration = configuration;
+ folderName = _configuration.GetValue("FolderName");
+ tenantId = _configuration.GetValue("TenantId");
+ applicationId = _configuration.GetValue("ApplicationId");
+}
+```
+
+* Create the `LoadFromOneDrive()` method to load the document from One Drive.
+
+```csharp
+[AcceptVerbs("Post")]
+[HttpPost]
+[EnableCors("AllowAllOrigins")]
+[Route("LoadFromBoxCloud")]
+//Post action for Loading the documents
+
+public async Task LoadFromOneDrive([FromBody] Dictionary jsonObject)
+{
+ MemoryStream stream = new MemoryStream();
+
+ var config = LoadAppSettings();
+ var client = GetAuthenticatedGraphClient(config);
+
+ var request = client.Me.Drive.Root.Children.Request();
+ string folderIdToSearch = string.Empty;
+ var results = await request.GetAsync();
+
+ var folder = results.FirstOrDefault(f => f.Name == folderName && f.Folder != null);
+ if (folder != null)
+ {
+ // Save the matching folderId
+ folderIdToSearch = folder.Id;
+ }
+
+ var folderRequest = client.Me.Drive.Items[folderIdToSearch].Children.Request();
+ var folderContents = await folderRequest.GetAsync();
+
+ string fileIdToDownload = string.Empty;
+ var file = folderContents.FirstOrDefault(f => f.File != null && f.Name == objectName);
+ if (file != null)
+ {
+ // Save the matching fileId
+ fileIdToDownload = file.Id;
+ }
+
+ string fileIds = fileIdToDownload;
+ var fileRequest = client.Me.Drive.Items[fileIdToDownload].Content.Request();
+
+ using (var streamResponse = await fileRequest.GetAsync())
+ {
+ if (streamResponse != null)
+ {
+ streamResponse.Seek(0, SeekOrigin.Begin);
+ await streamResponse.CopyToAsync(stream);
+ }
+ }
+ WordDocument document = WordDocument.Load(stream, FormatType.Docx);
+ string json = Newtonsoft.Json.JsonConvert.SerializeObject(document);
+ document.Dispose();
+ stream.Close();
+ return json;
+}
+```
+
+* 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": "*",
+ "TenantId": "Your_Tenant_ID",
+ "applApplicationIdicationId": "Your_Application_ID",
+ "FolderName": "Your_Folder_Name_To_Access_The_Files_In_Onedrive"
+}
+
+```
+
+N> Replace **Your_Tenant_ID**, **Your_Application_ID**, and **Your_Folder_Name_To_Access_The_Files_In_OneDrive** with your actual tenant ID, application ID, and folder name.
+
+**Step 4:** Modify the Index.cshtml File in the Document Editor sample
+
+In the client-side, the document is returned from the web service is opening using `open` method.
+
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+{% include code-snippet/document-editor/asp-net-core/document-editor-container/open-one-drive/tagHelper %}
+{% endhighlight %}
+{% highlight c# tabtitle="Document-editor.cs" %}
+{% include code-snippet/document-editor/asp-net-core/document-editor-container/open-one-drive/document-editor.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+
+N> The following NuGet packages are required to use the previous code example
+* **Microsoft.Identity.Client**
+* **Microsoft.Graph**
+* **Microsoft.Extensions.Configuration**
+* **Microsoft.Extensions.Configuration.FileExtensions**
+* **Microsoft.Extensions.Configuration.Json**
+
+You can install these packages using the NuGet Package Manager in Visual Studio or Visual Studio Code.
diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/aws-s3-bucket.md b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/aws-s3-bucket.md
new file mode 100644
index 000000000..1c8b551f6
--- /dev/null
+++ b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/aws-s3-bucket.md
@@ -0,0 +1,134 @@
+---
+layout: post
+title: Save document to AWS S3 in Document editor | Syncfusion
+description: Learn about how to Save document to AWS S3 in ASP.NET Core Document editor of Syncfusion Essential JS 2 and more details.
+platform: document-processing
+control: Save document to AWS S3
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Save document to AWS S3 in Document editor Component
+
+To save a document to AWS S3, you can follow the steps below
+
+
+**Step 1:** Create a Simple Document Editor Sample in ASP.NET Core
+
+Start by following the steps provided in this [link](../../document-editor/getting-started-core) to create a simple Document Editor sample in ASP.NET Core. This will give you a basic setup of the Document Editor component.
+
+
+**Step 2:** Modify the `DocumentEditorController.cs` File in the Web Service Project
+
+* Open the `DocumentEditorController.cs` file in your web service project.
+
+* Import the required namespaces at the top of the file:
+
+```csharp
+using System.IO;
+using Amazon;
+using Amazon.S3;
+using Amazon.S3.Model;
+```
+
+* Add the following private fields and constructor parameters to the `DocumentEditorController` class, In the constructor, assign the values from the configuration to the corresponding fields
+
+```csharp
+private IConfiguration _configuration;
+public readonly string _accessKey;
+public readonly string _secretKey;
+public readonly string _bucketName;
+
+public DocumentEditorController(IWebHostEnvironment hostingEnvironment, IMemoryCache cache, IConfiguration configuration)
+{
+ _hostingEnvironment = hostingEnvironment;
+ _cache = cache;
+ _configuration = configuration;
+ _accessKey = _configuration.GetValue("AccessKey");
+ _secretKey = _configuration.GetValue("SecretKey");
+ _bucketName = _configuration.GetValue("BucketName");
+}
+```
+
+* Create the `SaveToS3()` method to save the document to AWS S3 bucket
+
+```csharp
+
+[AcceptVerbs("Post")]
+[HttpPost]
+[EnableCors("AllowAllOrigins")]
+[Route("SaveToS3")]
+//Post action for save the document to AWS S3
+
+public void SaveToS3(IFormCollection data)
+{
+ if (data.Files.Count == 0)
+ return;
+ RegionEndpoint bucketRegion = RegionEndpoint.USEast1;
+ // Configure the AWS SDK with your access credentials and other settings
+ var s3Client = new AmazonS3Client(_accessKey, _secretKey, bucketRegion);
+ string bucketName = _bucketName;
+ IFormFile file = data.Files[0];
+ string documentName = this.GetValue(data, "documentName");
+ string result = Path.GetFileNameWithoutExtension(documentName);
+ Stream stream = new MemoryStream();
+ file.CopyTo(stream);
+ var request = new PutObjectRequest
+ {
+ BucketName = bucketName,
+ Key = result + "_downloaded.docx",
+ InputStream = stream,
+ };
+ // Upload the document to AWS S3
+ var response = s3Client.PutObjectAsync(request).Result;
+}
+
+private string GetValue(IFormCollection data, string key)
+{
+ if (data.ContainsKey(key))
+ {
+ string[] values = data[key];
+ if (values.Length > 0)
+ {
+ return values[0];
+ }
+ }
+ return "";
+}
+```
+
+* 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": "*",
+ "AccessKey": "Your Access Key from AWS S3",
+ "SecretKey": "Your Secret Key from AWS S3",
+ "BucketName": "Your Bucket name from AWS S3"
+}
+```
+
+N> Replace **Your Access Key from AWS S3**, **Your Secret Key from AWS S3**, and **Your Bucket name from AWS S3** with your actual AWS access key, secret key and bucket name
+
+**Step 3:** Modify the Index.cshtml File in the Document Editor sample
+
+In the client-side, to export the document into blob the document using `saveAsBlob` and sent to server-side for saving in AWS S3 Bucket.
+
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+{% include code-snippet/document-editor/asp-net-core/document-editor-container/save-aws-s3/tagHelper %}
+{% endhighlight %}
+{% highlight c# tabtitle="Document-editor.cs" %}
+{% include code-snippet/document-editor/asp-net-core/document-editor-container/save-aws-s3/document-editor.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+
+N> The **AWSSDK.S3** NuGet package must be installed in your application to use the previous code example.
diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/azure-blob-storage.md b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/azure-blob-storage.md
new file mode 100644
index 000000000..52b37402c
--- /dev/null
+++ b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/azure-blob-storage.md
@@ -0,0 +1,129 @@
+---
+layout: post
+title: Save to Azure Blob in Document editor | Syncfusion
+description: Learn about how to Save document to Azure Blob Storage in ASP.NET Core Document editor control of Syncfusion Essential JS 2 and more details.
+platform: document-processing
+control: Save document to Azure Blob Storage
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Save document to Azure Blob Storage in ASP.NET Core
+
+To save a document to Azure Blob Storage, you can follow the steps below
+
+
+**Step 1:** Create a Simple Document Editor Sample in ASP.NET Core
+
+Start by following the steps provided in this [link](../../document-editor/getting-started-core) to create a simple Document Editor sample in ASP.NET Core. This will give you a basic setup of the Document Editor component.
+
+
+**Step 2:** Modify the `DocumentEditorController.cs` File in the Web Service Project
+
+* Create a web service project in .NET Core 3.0 or above. You can refer to this [link](../../document-editor/web-services-overview) for instructions on how to create a web service project.
+
+* Open the `DocumentEditorController.cs` file in your web service project.
+
+* Import the required namespaces at the top of the file:
+
+```csharp
+using System.IO;
+using Azure.Storage.Blobs;
+using Azure.Storage.Blobs.Specialized;
+```
+
+* Add the following private fields and constructor parameters to the `DocumentEditorController` class, In the constructor, assign the values from the configuration to the corresponding fields
+
+```csharp
+private readonly string _storageConnectionString;
+private readonly string _storageContainerName;
+private readonly ILogger _logger;
+
+public DocumentEditorController(IConfiguration configuration, ILogger logger)
+{
+ _storageConnectionString = configuration.GetValue("connectionString");
+ _storageContainerName = configuration.GetValue("containerName");
+ _logger = logger;
+}
+```
+
+* Create then 'SaveToAzure' method to save the downloaded documents to Azure Blob Storage container
+
+```csharp
+
+[HttpPost("SaveToAzure")]
+[Microsoft.AspNetCore.Cors.EnableCors("MyPolicy")]
+[Route("[controller]/SaveToAzure")]
+//Post action for downloading the documents
+
+public void Download(IFormCollection data)
+{
+ if (data.Files.Count == 0)
+ return;
+
+ BlobServiceClient blobServiceClient = new BlobServiceClient(_storageConnectionString);
+ BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(_storageContainerName);
+
+ IFormFile file = data.Files[0];
+ string documentName = this.GetValue(data, "documentName");
+ string result = Path.GetFileNameWithoutExtension(documentName);
+
+ // Get a reference to the blob
+ BlobClient blobClient = containerClient.GetBlobClient(result + "_downloaded.docx");
+
+ Stream stream = new MemoryStream();
+ file.CopyTo(stream);
+
+ // Upload the document to Azure Blob Storage
+ blobClient.Upload(stream, true);
+}
+
+private string GetValue(IFormCollection data, string key)
+{
+ if (data.ContainsKey(key))
+ {
+ string[] values = data[key];
+ if (values.Length > 0)
+ {
+ return values[0];
+ }
+ }
+ return "";
+}
+
+```
+
+* 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 from Azure*",
+ "containerName": "*Your container name in Azure*"
+}
+```
+
+N> Replace **Your Connection string from Azure** with the actual connection string for your Azure Blob Storage account and **Your container name in Azure** with the actual container name
+
+**Step 3:** Modify the Index.cshtml File in the Document Editor sample
+
+In the client-side, to export the document into blob the document using `saveAsBlob` and sent to server-side for saving in Azure Blob Storage container.
+
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+{% include code-snippet/document-editor/asp-net-core/document-editor-container/save-azure-blob/tagHelper %}
+{% endhighlight %}
+{% highlight c# tabtitle="Document-editor.cs" %}
+{% include code-snippet/document-editor/asp-net-core/document-editor-container/save-azure-blob/document-editor.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+
+N> The **Azure.Storage.Blobs** NuGet package must be installed in your application to use the previous code example.
diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/box-cloud-file-storage.md b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/box-cloud-file-storage.md
new file mode 100644
index 000000000..95ee60141
--- /dev/null
+++ b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/box-cloud-file-storage.md
@@ -0,0 +1,143 @@
+---
+layout: post
+title: Save to Box cloud file Document editor | Syncfusion
+description: Learn about how to Save document to Box cloud file storage in ASP.NET Core Document editor control of Syncfusion Essential JS 2 and more details.
+platform: document-processing
+control: Save document to Box cloud file storage
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Save document to Box cloud file storage in ASP.NET Core
+
+To save a document to Box cloud file storage, you can follow the steps below
+
+**Step 1:** Set up a Box developer account and create a Box application
+
+To access Box storage programmatically, you'll need a developer account with Box. Go to the [Box Developer Console](https://developer.box.com/guides), sign in or create a new account, and then create a new Box application. This application will provide you with the necessary credentials Client ID and Client Secret to authenticate and access Box APIs. Before accessing files, you need to authenticate your application to access your Box account. Box API supports `OAuth 2.0 authentication` for this purpose.
+
+
+**Step 2:** Create a Simple Document Editor Sample in ASP.NET Core
+
+Start by following the steps provided in this [link](../../document-editor/getting-started-core) to create a simple Document Editor sample in ASP.NET Core. This will give you a basic setup of the Document Editor component.
+
+
+**Step 3:** Modify the `DocumentEditorController.cs` File in the Web Service Project
+
+* Open the `DocumentEditorController.cs` file in your web service project.
+
+* Import the required namespaces at the top of the file:
+
+```csharp
+using Box.V2;
+using Box.V2.Auth;
+using Box.V2.Config;
+using Box.V2.Models;
+```
+
+* Add the following private fields and constructor parameters to the `DocumentEditorController` class, In the constructor, assign the values from the configuration to the corresponding fields
+
+```csharp
+private IConfiguration _configuration;
+public readonly string _accessToken;
+public readonly string _clientID;
+public readonly string _clientSecret;
+public readonly string _folderID;
+
+public DocumentEditorController(IWebHostEnvironment hostingEnvironment, IMemoryCache cache, IConfiguration configuration)
+{
+ _hostingEnvironment = hostingEnvironment;
+ _cache = cache;
+ _configuration = configuration;
+ _accessToken = _configuration.GetValue("AccessToken");
+ _clientID = _configuration.GetValue("ClientID");
+ _clientSecret = _configuration.GetValue("ClientSecret");
+ _folderID = _configuration.GetValue("FolderID");
+}
+```
+
+* Create the `SaveToBoxCloud()` method to save the downloaded document to Box cloud file storage bucket
+
+```csharp
+[AcceptVerbs("Post")]
+[HttpPost]
+[EnableCors("AllowAllOrigins")]
+[Route("SaveToBoxCloud")]
+//Post action for downloading the document
+
+public void SaveToBoxCloud(IFormCollection data)
+{
+ if (data.Files.Count == 0)
+ return;
+
+ IFormFile file = data.Files[0];
+ string documentName = this.GetValue(data, "documentName");
+ string result = Path.GetFileNameWithoutExtension(documentName);
+
+ // Initialize the Box API client with your authentication credentials
+ var auth = new OAuthSession(_accessToken, "YOUR_REFRESH_TOKEN", 3600, "bearer");
+ var config = new BoxConfigBuilder(_clientID, _clientSecret, new Uri("http://boxsdk")).Build();
+ var client = new BoxClient(config, auth);
+
+ var fileRequest = new BoxFileRequest
+ {
+ Name = result + "_downloaded.docx",
+ Parent = new BoxFolderRequest { Id = _folderID },
+ };
+
+ Stream stream = new MemoryStream();
+ file.CopyTo(stream);
+
+ var boxFile = await client.FilesManager.UploadAsync(fileRequest, stream);
+}
+
+private string GetValue(IFormCollection data, string key)
+{
+ if (data.ContainsKey(key))
+ {
+ string[] values = data[key];
+ if (values.Length > 0)
+ {
+ return values[0];
+ }
+ }
+ return "";
+}
+```
+
+* 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": "*",
+ "AccessToken": "Your_Box_Storage_Access_Token",
+ "FolderID": "Your_Folder_ID",
+ "ClientID": "Your_Box_Storage_ClientID",
+ "ClientSecret": "Your_Box_Storage_ClientSecret"
+}
+```
+
+N> replace **Your_Box_Storage_Access_Token** with your actual box access token, and **Your_Folder_ID** with the ID of the folder in your box storage where you want to perform specific operations. Remember to use your valid box API credentials, as **Your_Box_Storage_ClientID** and **Your_Box_Storage_ClientSecret"** are placeholders for your application's API key and secret.
+
+**Step 4:** Modify the Index.cshtml File in the Document Editor sample
+
+In the client-side, to export the document into blob the document using `saveAsBlob` and sent to server-side for saving in Box cloud file storage.
+
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+{% include code-snippet/document-editor/asp-net-core/document-editor-container/save-box-cloud-file-storage/tagHelper %}
+{% endhighlight %}
+{% highlight c# tabtitle="Document-editor.cs" %}
+{% include code-snippet/document-editor/asp-net-core/document-editor-container/save-box-cloud-file-storage/document-editor.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+
+N> The **Box.V2.Core** NuGet package must be installed in your application to use the previous code example.
diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/dropbox-cloud-file-storage.md b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/dropbox-cloud-file-storage.md
new file mode 100644
index 000000000..1fae8b810
--- /dev/null
+++ b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/dropbox-cloud-file-storage.md
@@ -0,0 +1,135 @@
+---
+layout: post
+title: Save document to Dropbox cloud in Document editor | Syncfusion
+description: Learn about how to Save document to Dropbox cloud file storage in ASP.NET Core Document editor control of Syncfusion Essential JS 2 and more details.
+platform: document-processing
+control: Save document to Dropbox cloud file storage
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Save document to Dropbox cloud file storage in ASP.NET Core
+
+To save a document to Dropbox cloud file storage, you can follow the steps below
+
+**Step 1:** Create a Dropbox API
+
+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.
+
+
+**Step 2:** Create a Simple Document Editor Sample in ASP.NET Core
+
+Start by following the steps provided in this [link](../../document-editor/getting-started-core) to create a simple Document Editor sample in ASP.NET Core. This will give you a basic setup of the Document Editor component.
+
+
+**Step 3:** Modify the `DocumentEditorController.cs` File in the Web Service Project
+
+* Open the `DocumentEditorController.cs` file in your web service project.
+
+* Import the required namespaces at the top of the file:
+
+```csharp
+using System.IO;
+using Dropbox.Api;
+using Dropbox.Api.Files;
+```
+
+* Add the following private fields and constructor parameters to the `DocumentEditorController` class, In the constructor, assign the values from the configuration to the corresponding fields
+
+```csharp
+private IConfiguration _configuration;
+public readonly string _accessToken;
+public readonly string _folderName;
+
+public DocumentEditorController(IWebHostEnvironment hostingEnvironment, IMemoryCache cache, IConfiguration configuration)
+{
+ _hostingEnvironment = hostingEnvironment;
+ _cache = cache;
+ _configuration = configuration;
+ _accessToken = _configuration.GetValue("AccessToken");
+ _folderName = _configuration.GetValue("FolderName");
+}
+```
+
+* Create the `SaveToDropBox()` method to save the downloaded document to Dropbox cloud file storage bucket
+
+```csharp
+
+[AcceptVerbs("Post")]
+[HttpPost]
+[EnableCors("AllowAllOrigins")]
+[Route("SaveToDropBox")]
+//Post action for downloading the document
+
+public void SaveToDropBox(IFormCollection data)
+{
+ if (data.Files.Count == 0)
+ return;
+
+ IFormFile file = data.Files[0];
+ string documentName = this.GetValue(data, "documentName");
+ string result = Path.GetFileNameWithoutExtension(documentName);
+ string fileName = result + "_downloaded.docx";
+
+ using (var dropBox = new DropboxClient(_accessToken))
+ {
+ Stream stream = new MemoryStream();
+ file.CopyTo(stream);
+
+ // Upload the document to Dropbox
+ var uploadedFile = await dropBox.Files.UploadAsync(
+ _folderName + "/" + fileName,
+ WriteMode.Overwrite.Instance,
+ body: stream
+ );
+ }
+}
+
+private string GetValue(IFormCollection data, string key)
+{
+ if (data.ContainsKey(key))
+ {
+ string[] values = data[key];
+ if (values.Length > 0)
+ {
+ return values[0];
+ }
+ }
+ return "";
+}
+```
+
+* 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": "*",
+ "AccessToken": "Your_Dropbox_Access_Token",
+ "FolderName": "Your_Folder_Name"
+}
+```
+
+N> Replace **Your_Dropbox_Access_Token** with your actual Dropbox access token and **Your_Folder_Name** with your folder name.
+
+**Step 4:** Modify the Index.cshtml File in the Document Editor sample
+
+In the client-side, to export the document into blob the document using `saveAsBlob` and sent to server-side for saving in Dropbox cloud file storage.
+
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+{% include code-snippet/document-editor/asp-net-core/document-editor-container/save-dropbox-cloud-file-storage/tagHelper %}
+{% endhighlight %}
+{% highlight c# tabtitle="Document-editor.cs" %}
+{% include code-snippet/document-editor/asp-net-core/document-editor-container/save-dropbox-cloud-file-storage/document-editor.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+
+N> The **Dropbox.Api** NuGet package must be installed in your application to use the previous code example.
diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/google-cloud-storage.md b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/google-cloud-storage.md
new file mode 100644
index 000000000..6b5039e55
--- /dev/null
+++ b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/google-cloud-storage.md
@@ -0,0 +1,137 @@
+---
+layout: post
+title: Save to Google Cloud Storage Document editor | Syncfusion
+description: Learn about how to Save document to Google Cloud Storage in ASP.NET Core Document editor control of Syncfusion Essential JS 2 and more details.
+platform: document-processing
+control: Save document to Google Cloud Storage
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Save document to Google Cloud Storage in ASP.NET Core
+
+To save a document to Google Cloud Storage, you can follow the steps below
+
+**Step 1:** Create a Simple Document Editor Sample in ASP.NET Core
+
+Start by following the steps provided in this [link](../../document-editor/getting-started-core) to create a simple Document Editor sample in ASP.NET Core. This will give you a basic setup of the Document Editor component.
+
+
+**Step 2:** Create the `DocumentEditorController.cs` File in the Web Service Project
+
+* Open the `DocumentEditorController.cs` file in your web service project.
+
+* Import the required namespaces at the top of the file:
+
+```csharp
+using System.IO;
+using Google.Cloud.Storage.V1;
+using Google.Apis.Auth.OAuth2;
+```
+
+* Add the following private fields and constructor parameters to the `DocumentEditorController` class, In the constructor, assign the values from the configuration to the corresponding fields
+
+```csharp
+// Private readonly object _storageClient
+private readonly StorageClient _storageClient;
+
+private IConfiguration _configuration;
+
+public readonly string _bucketName;
+
+public DocumentEditorController(IWebHostEnvironment hostingEnvironment, IMemoryCache cache, IConfiguration configuration)
+{
+ _hostingEnvironment = hostingEnvironment;
+ _cache = cache;
+
+ // The key file is used to authenticate with Google Cloud Storage.
+ string keyFilePath = "path/to/service-account-key.json";
+
+ // Load the service account credentials from the key file.
+ var credentials = GoogleCredential.FromFile(keyFilePath);
+
+ // Create a storage client with Application Default Credentials
+ _storageClient = StorageClient.Create(credentials);
+
+ _configuration = configuration;
+
+ _bucketName = _configuration.GetValue("BucketName");
+}
+```
+
+* Create the `SaveToGoogleCloud()` method to save the downloaded document to Google Cloud Storage bucket
+
+```csharp
+[AcceptVerbs("Post")]
+[HttpPost]
+[EnableCors("AllowAllOrigins")]
+[Route("SaveToGoogleCloud")]
+//Post action for downloading the document
+public void SaveToGoogleCloud(IFormCollection data)
+{
+ if (data.Files.Count == 0)
+ return;
+
+ IFormFile file = data.Files[0];
+ string documentName = this.GetValue(data, "documentName");
+ string result = Path.GetFileNameWithoutExtension(documentName);
+
+ string bucketName = _bucketName;
+
+ Stream stream = new MemoryStream();
+ file.CopyTo(stream);
+
+ // Upload the document to Google Cloud Storage
+ _storageClient.UploadObject(bucketName, result + "_downloaded.docx", null, stream);
+
+}
+
+private string GetValue(IFormCollection data, string key)
+{
+ if (data.ContainsKey(key))
+ {
+ string[] values = data[key];
+ if (values.Length > 0)
+ {
+ return values[0];
+ }
+ }
+ return "";
+}
+```
+
+* 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": "*",
+ "BucketName": "Your Bucket name from Google Cloud Storage"
+}
+```
+
+N> Replace **Your Bucket name from Google Cloud Storage** with the actual name of your Google Cloud Storage bucket
+
+N> Replace **path/to/service-account-key.json** with the actual file path to your service account key JSON file. Make sure to provide the correct path and filename.
+
+**Step 4:** Modify the Index.cshtml File in the Document Editor sample
+
+In the client-side, to export the document into blob the document using `saveAsBlob` and sent to server-side for saving in Google Cloud Storage.
+
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+{% include code-snippet/document-editor/asp-net-core/document-editor-container/save-google-cloud-storage/tagHelper %}
+{% endhighlight %}
+{% highlight c# tabtitle="Document-editor.cs" %}
+{% include code-snippet/document-editor/asp-net-core/document-editor-container/save-google-cloud-storage/document-editor.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+
+N> The **Google.Cloud.Storage.V1** NuGet package must be installed in your application to use the previous code example.
diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/google-drive.md b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/google-drive.md
new file mode 100644
index 000000000..75740a65b
--- /dev/null
+++ b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/google-drive.md
@@ -0,0 +1,163 @@
+---
+layout: post
+title: Save document to Google Drive in Document editor | Syncfusion
+description: Learn about how to Save document to Google Drive in ASP.NET Core Document editor control of Syncfusion Essential JS 2 and more details.
+platform: document-processing
+control: Save document to Google Drive
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Save document to Google Drive in ASP.NET Core
+
+To save a document to Google Drive, you can follow the steps below
+
+**Step 1:** Set up 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).
+
+
+**Step 2:** Create a Simple Document Editor Sample in ASP.NET Core
+
+Start by following the steps provided in this [link](../../document-editor/getting-started-core) to create a simple Document Editor sample in ASP.NET Core. This will give you a basic setup of the Document Editor component.
+
+
+**Step 3:** Modify the `DocumentEditorController.cs` File in the Web Service Project
+
+* Open the `DocumentEditorController.cs` file in your web service project.
+
+* Import the required namespaces at the top of the file:
+
+```csharp
+using System.IO;
+using Google.Apis.Drive.v3;
+using Google.Apis.Util.Store;
+```
+
+* Add the following private fields and constructor parameters to the `DocumentEditorController` class, In the constructor, assign the values from the configuration to the corresponding fields
+
+```csharp
+private IConfiguration _configuration;
+public readonly string folderId;
+public readonly string applicationName;
+public readonly string credentialPath;
+private static readonly string[] Scopes = { DriveService.Scope.DriveFile, DriveService.Scope.DriveReadonly};
+
+public DocumentEditorController(IWebHostEnvironment hostingEnvironment, IMemoryCache cache, IConfiguration configuration)
+{
+ _hostingEnvironment = hostingEnvironment;
+ _cache = cache;
+ _configuration = configuration;
+ folderId = _configuration.GetValue("FolderId");
+ credentialPath = _configuration.GetValue("CredentialPath");
+ applicationName = _configuration.GetValue("ApplicationName");
+}
+```
+
+* Create the `SaveToGoogleDrive()` method to save the downloaded document to Google Drive bucket
+
+```csharp
+[AcceptVerbs("Post")]
+[HttpPost]
+[EnableCors("AllowAllOrigins")]
+[Route("SaveToGoogleDrive")]
+//Post action for downloading the document
+
+public void SaveToGoogleDrive(IFormCollection data)
+{
+ if (data.Files.Count == 0)
+ return;
+
+ IFormFile file = data.Files[0];
+ string documentName = this.GetValue(data, "documentName");
+ string result = Path.GetFileNameWithoutExtension(documentName);
+ string fileName = result + "_downloaded.docx";
+
+ UserCredential credential;
+
+ using (var memStream = new FileStream(credentialPath, FileMode.Open, FileAccess.Read))
+ {
+ string credPath = "token.json";
+ credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
+ GoogleClientSecrets.Load(memStream).Secrets,
+ Scopes,
+ "user",
+ CancellationToken.None,
+ new FileDataStore(credPath, true));
+ }
+
+ // Create the Drive API service.
+ var service = new DriveService(new BaseClientService.Initializer()
+ {
+ HttpClientInitializer = credential,
+ ApplicationName = applicationName,
+ });
+
+ var fileMetadata = new Google.Apis.Drive.v3.Data.File()
+ {
+ Name = fileName,
+ Parents = new List { folderId }
+ };
+
+ Stream stream = new MemoryStream();
+ file.CopyTo(stream);
+
+ FilesResource.CreateMediaUpload request;
+ request = service.Files.Create(fileMetadata, stream, "application/pdf");
+ request.Fields = "id";
+ object value = await request.UploadAsync();
+}
+
+private string GetValue(IFormCollection data, string key)
+{
+ if (data.ContainsKey(key))
+ {
+ string[] values = data[key];
+ if (values.Length > 0)
+ {
+ return values[0];
+ }
+ }
+ return "";
+}
+```
+
+* 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": "*",
+ "FolderId": "Your Google Drive Folder ID",
+ "CredentialPath": "Your Path to the OAuth 2.0 Client IDs json file",
+ "ApplicationName": "Your Application name"
+}
+```
+
+N> Replace **Your Google Drive Folder ID**, **Your Application name**, and **Your Path to the OAuth 2.0 Client IDs json file** with your actual Google drive folder ID , Your name for your application and the path for the JSON file.
+
+N> The **FolderId** part is the unique identifier for the folder. For example, if your folder URL is: `https://drive.google.com/drive/folders/abc123xyz456`, then the folder ID is `abc123xyz456`.
+
+N> You must use a unique `Client_ID` from json file to interface your application with the Google Drive API in order to save document directly to Google Drive. This Client_ID will serve as the authentication key, allowing you to save files securely.
+
+**Step 4:** Modify the Index.cshtml File in the Document Editor sample
+
+In the client-side, to export the document into blob the document using `saveAsBlob` and sent to server-side for saving in Google Drive.
+
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+{% include code-snippet/document-editor/asp-net-core/document-editor-container/save-google-drive/tagHelper %}
+{% endhighlight %}
+{% highlight c# tabtitle="Document-editor.cs" %}
+{% include code-snippet/document-editor/asp-net-core/document-editor-container/save-google-drive/document-editor.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+
+N> The **Google.Apis.Drive.v3** NuGet package must be installed in your application to use the previous code example.
diff --git a/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/one-drive.md b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/one-drive.md
new file mode 100644
index 000000000..85ab807fc
--- /dev/null
+++ b/Document-Processing/Word/Word-Processor/asp-net-core/saving-documents/one-drive.md
@@ -0,0 +1,160 @@
+---
+layout: post
+title: Save document to One Drive Document editor | Syncfusion
+description: Learn about how to Save document to One Drive in ASP.NET Core Document editor control of Syncfusion Essential JS 2 and more details.
+platform: document-processing
+control: Save document to One Drive
+documentation: ug
+domainurl: ##DomainURL##
+---
+
+# Save document to One Drive in ASP.NET Core
+
+To save a document to One Drive, you can follow the steps below
+
+**Step 1:** Create the Microsoft graph API.
+
+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.
+
+
+**Step 2:** Create a Simple Document Editor Sample in ASP.NET Core
+
+Start by following the steps provided in this [link](../../document-editor/getting-started-core) to create a simple Document Editor sample in ASP.NET Core. This will give you a basic setup of the Document Editor component.
+
+
+**Step 3:** Modify the `DocumentEditorController.cs` File in the Web Service Project
+
+* Open the `DocumentEditorController.cs` file in your web service project.
+
+* Import the required namespaces at the top of the file:
+
+```csharp
+using System.IO;
+using Microsoft.Graph;
+using Microsoft.Identity.Client;
+using Helpers;
+```
+
+* Add the following private fields and constructor parameters to the `DocumentEditorController` class, In the constructor, assign the values from the configuration to the corresponding fields
+
+```csharp
+private IConfiguration _configuration;
+public readonly string folderName;
+public readonly string applicationId;
+public readonly string tenantId;
+
+public DocumentEditorController(IWebHostEnvironment hostingEnvironment, IMemoryCache cache, IConfiguration configuration)
+{
+ _hostingEnvironment = hostingEnvironment;
+ _cache = cache;
+ _configuration = configuration;
+ folderName = _configuration.GetValue("FolderName");
+ tenantId = _configuration.GetValue("TenantId");
+ applicationId = _configuration.GetValue("ApplicationId");
+}
+```
+
+* Create the `SaveToOneDrive()` method to save the downloaded document to One Drive bucket
+
+```csharp
+[AcceptVerbs("Post")]
+[HttpPost]
+[EnableCors("AllowAllOrigins")]
+[Route("SaveToOneDrive")]
+//Post action for downloading the document
+
+public void SaveToOneDrive(IFormCollection data)
+{
+
+ if (data.Files.Count == 0)
+ return;
+
+ IFormFile file = data.Files[0];
+ string documentName = this.GetValue(data, "documentName");
+ string result = Path.GetFileNameWithoutExtension(documentName);
+ string fileName = result + "_downloaded.docx";
+
+ Stream stream = new MemoryStream();
+ file.CopyTo(stream);
+
+
+ var config = LoadAppSettings();
+ var client = GetAuthenticatedGraphClient(config);
+
+ var request = client.Me.Drive.Root.Children.Request();
+ string folderId = string.Empty;
+ var results = await request.GetAsync();
+
+ var folder = results.FirstOrDefault(f => f.Name == folderName && f.Folder != null);
+ if (folder != null)
+ {
+ // Save the matching folderId
+ folderId = folder.Id;
+ }
+
+ var uploadedFile = client.Me.Drive.Items[folderId]
+ .ItemWithPath(fileName)
+ .Content
+ .Request()
+ .PutAsync(stream)
+ .Result;
+
+}
+
+private string GetValue(IFormCollection data, string key)
+{
+ if (data.ContainsKey(key))
+ {
+ string[] values = data[key];
+ if (values.Length > 0)
+ {
+ return values[0];
+ }
+ }
+ return "";
+}
+```
+
+* 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": "*",
+ "TenantId": "Your_Tenant_ID",
+ "applApplicationIdicationId": "Your_Application_ID",
+ "FolderName": "Your_Folder_Name_To_Access_The_Files_In_Onedrive"
+}
+
+```
+
+N> Replace **Your_Tenant_ID**, **Your_Application_ID**, and **Your_Folder_Name_To_Access_The_Files_In_OneDrive** with your actual tenant ID, application ID, and folder name.
+
+**Step 4:** Modify the Index.cshtml File in the Document Editor sample
+
+In the client-side, to export the document into blob the document using `saveAsBlob` and sent to server-side for saving in One Drive.
+
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+{% include code-snippet/document-editor/asp-net-core/document-editor-container/save-one-drive/tagHelper %}
+{% endhighlight %}
+{% highlight c# tabtitle="Document-editor.cs" %}
+{% include code-snippet/document-editor/asp-net-core/document-editor-container/save-one-drive/document-editor.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+
+N> The following NuGet packages are required to use the previous code example
+* **Microsoft.Identity.Client**
+* **Microsoft.Graph**
+* **Microsoft.Extensions.Configuration**
+* **Microsoft.Extensions.Configuration.FileExtensions**
+* **Microsoft.Extensions.Configuration.Json**
+
+You can install these packages using the NuGet Package Manager in Visual Studio or Visual Studio Code.
diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/aws-s3-bucket.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/aws-s3-bucket.md
index 32e8047b2..d2392c86c 100644
--- a/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/aws-s3-bucket.md
+++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/aws-s3-bucket.md
@@ -110,7 +110,7 @@ N> Replace **Your Access Key from AWS S3**, **Your Secret Key from AWS S3**, and
**Step 3:** Modify the Index.cshtml File in the Document Editor sample
-In the client-side, the document is returned from the web service is opening using [`open`](https://ej2.syncfusion.com/aspnetmvc/documentation/api/document-editor/#open) method.
+In the client-side, the document is returned from the web service is opening using `open` method.
{% tabs %}
diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/azure-blob-storage.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/azure-blob-storage.md
index e3c3b921a..661f7716d 100644
--- a/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/azure-blob-storage.md
+++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/azure-blob-storage.md
@@ -97,7 +97,7 @@ N> Replace **Your Connection string from Azure** with the actual connection stri
**Step 3:** Modify the Index.cshtml File in the Document Editor sample
-In the client-side, the document is returned from the web service is opening using [`open`](https://ej2.syncfusion.com/aspnetmvc/documentation/api/document-editor/#open) method.
+In the client-side, the document is returned from the web service is opening using `open` method.
{% tabs %}
diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/box-cloud-file-storage.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/box-cloud-file-storage.md
index bf50e9dec..da826c016 100644
--- a/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/box-cloud-file-storage.md
+++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/box-cloud-file-storage.md
@@ -14,7 +14,7 @@ To load a document from Box cloud file storage in a document Editor, you can fol
**Step 1:** Set up a Box developer account and create a Box application
-To access Box storage programmatically, you'll need a developer account with Box. Go to the [Box Developer Console](https://developer.box.com/), sign in or create a new account, and then create a new Box application. This application will provide you with the necessary credentials Client ID and Client Secret to authenticate and access Box APIs. Before accessing files, you need to authenticate your application to access your Box account. Box API supports `OAuth 2.0 authentication` for this purpose.
+To access Box storage programmatically, you'll need a developer account with Box. Go to the [Box Developer Console](https://developer.box.com/guides), sign in or create a new account, and then create a new Box application. This application will provide you with the necessary credentials Client ID and Client Secret to authenticate and access Box APIs. Before accessing files, you need to authenticate your application to access your Box account. Box API supports `OAuth 2.0 authentication` for this purpose.
**Step 2:** Create a Simple Document Editor Sample in ASP.NET MVC
@@ -122,7 +122,7 @@ N> replace **Your_Box_Storage_Access_Token** with your actual box access token,
**Step 4:** Modify the Index.cshtml File in the Document Editor sample
-In the client-side, the document is returned from the web service is opening using [`open`](https://ej2.syncfusion.com/aspnetmvc/documentation/api/document-editor/#open) method.
+In the client-side, the document is returned from the web service is opening using `open` method.
{% tabs %}
diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/dropbox-cloud-file-storage.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/dropbox-cloud-file-storage.md
index 49151701c..9e3388e47 100644
--- a/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/dropbox-cloud-file-storage.md
+++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/dropbox-cloud-file-storage.md
@@ -105,7 +105,7 @@ N> Replace **Your_Dropbox_Access_Token** with your actual Dropbox access token a
**Step 4:** Modify the Index.cshtml File in the Document Editor sample
-In the client-side, the document is returned from the web service is opening using [`open`](https://ej2.syncfusion.com/aspnetmvc/documentation/api/document-editor/#open) method.
+In the client-side, the document is returned from the web service is opening using `open` method.
{% tabs %}
diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/google-cloud-storage.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/google-cloud-storage.md
index f044c5040..81be458cf 100644
--- a/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/google-cloud-storage.md
+++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/google-cloud-storage.md
@@ -111,7 +111,7 @@ N> Replace **path/to/service-account-key.json** with the actual file path to you
**Step 3:** Modify the Index.cshtml File in the Document Editor sample
-In the client-side, the document is returned from the web service is opening using [`open`](https://ej2.syncfusion.com/aspnetmvc/documentation/api/document-editor/#open) method.
+In the client-side, the document is returned from the web service is opening using `open` method.
{% tabs %}
diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/google-drive.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/google-drive.md
index a07ee391e..3c88f06a0 100644
--- a/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/google-drive.md
+++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/google-drive.md
@@ -136,7 +136,7 @@ N> The **FolderId** part is the unique identifier for the folder. For example, i
**Step 4:** Modify the Index.cshtml File in the Document Editor sample
-In the client-side, the document is returned from the web service is opening using [`open`](https://ej2.syncfusion.com/aspnetmvc/documentation/api/document-editor/#open) method.
+In the client-side, the document is returned from the web service is opening using `open` method.
{% tabs %}
diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/one-drive.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/one-drive.md
index fa54d2d77..5cb35a6d2 100644
--- a/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/one-drive.md
+++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/opening-documents/one-drive.md
@@ -133,7 +133,7 @@ N> Replace **Your_Tenant_ID**, **Your_Application_ID**, and **Your_Folder_Name_T
**Step 4:** Modify the Index.cshtml File in the Document Editor sample
-In the client-side, the document is returned from the web service is opening using [`open`](https://ej2.syncfusion.com/aspnetmvc/documentation/api/document-editor/#open) method.
+In the client-side, the document is returned from the web service is opening using `open` method.
{% tabs %}
diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/aws-s3-bucket.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/aws-s3-bucket.md
index b7ca18d04..f3a2720b3 100644
--- a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/aws-s3-bucket.md
+++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/aws-s3-bucket.md
@@ -1,6 +1,6 @@
---
layout: post
-title: Save document to AWS S3 in ASP.NET MVC Document editor control | Syncfusion
+title: Save document to AWS S3 in ASP.NET MVC Document editor | Syncfusion
description: Learn about how to Save document to AWS S3 in ASP.NET MVC Document editor of Syncfusion Essential JS 2 and more details.
platform: document-processing
control: Save document to AWS S3
@@ -8,7 +8,7 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Save document to AWS S3
+# Save document to AWS S3 in ASP.NET MVC
To save a document to AWS S3, you can follow the steps below
@@ -118,7 +118,7 @@ N> Replace **Your Access Key from AWS S3**, **Your Secret Key from AWS S3**, and
**Step 3:** Modify the Index.cshtml File in the Document Editor sample
-In the client-side, to export the document into blob the document using [`saveAsBlob`](https://ej2.syncfusion.com/aspnetmvc/documentation/api/document-editor#saveAsBlob) and sent to server-side for saving in AWS S3 Bucket.
+In the client-side, to export the document into blob the document using `saveAsBlob` and sent to server-side for saving in AWS S3 Bucket.
{% tabs %}
diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/azure-blob-storage.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/azure-blob-storage.md
index 817675bf1..b3c66b852 100644
--- a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/azure-blob-storage.md
+++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/azure-blob-storage.md
@@ -1,6 +1,6 @@
---
layout: post
-title: Save document to Azure Blob Storage in ASP.NET MVC Document editor control | Syncfusion
+title: Save to Azure Blob Storage in ASP.NET MVC Document editor | Syncfusion
description: Learn about how to Save document to Azure Blob Storage in ASP.NET MVC Document editor control of Syncfusion Essential JS 2 and more details.
platform: document-processing
control: Save document to Azure Blob Storage
@@ -8,7 +8,7 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Save document to Azure Blob Storage
+# Save document to Azure Blob Storage in ASP.NET MVC
To save a document to Azure Blob Storage, you can follow the steps below
@@ -113,7 +113,7 @@ N> Replace **Your Connection string from Azure** with the actual connection stri
**Step 3:** Modify the Index.cshtml File in the Document Editor sample
-In the client-side, to export the document into blob the document using [`saveAsBlob`](https://ej2.syncfusion.com/aspnetmvc/documentation/api/document-editor#saveAsBlob) and sent to server-side for saving in Azure Blob Storage container.
+In the client-side, to export the document into blob the document using `saveAsBlob` and sent to server-side for saving in Azure Blob Storage container.
{% tabs %}
diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/box-cloud-file-storage.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/box-cloud-file-storage.md
index 3c20b3227..efb6d7f36 100644
--- a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/box-cloud-file-storage.md
+++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/box-cloud-file-storage.md
@@ -1,6 +1,6 @@
---
layout: post
-title: Save document to Box cloud file storage in ASP.NET MVC Document editor control | Syncfusion
+title: Save to Box cloud file storage in Document editor | Syncfusion
description: Learn about how to Save document to Box cloud file storage in ASP.NET MVC Document editor control of Syncfusion Essential JS 2 and more details.
platform: document-processing
control: Save document to Box cloud file storage
@@ -8,13 +8,13 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Save document to Box cloud file storage
+# Save document to Box cloud file storage in ASP.NET MVC
To save a document to Box cloud file storage, you can follow the steps below
**Step 1:** Set up a Box developer account and create a Box application
-To access Box storage programmatically, you'll need a developer account with Box. Go to the [Box Developer Console](https://developer.box.com/), sign in or create a new account, and then create a new Box application. This application will provide you with the necessary credentials Client ID and Client Secret to authenticate and access Box APIs. Before accessing files, you need to authenticate your application to access your Box account. Box API supports `OAuth 2.0 authentication` for this purpose.
+To access Box storage programmatically, you'll need a developer account with Box. Go to the [Box Developer Console](https://developer.box.com/guides), sign in or create a new account, and then create a new Box application. This application will provide you with the necessary credentials Client ID and Client Secret to authenticate and access Box APIs. Before accessing files, you need to authenticate your application to access your Box account. Box API supports `OAuth 2.0 authentication` for this purpose.
**Step 2:** Create a Simple Document Editor Sample in ASP.NET MVC
@@ -127,7 +127,7 @@ N> replace **Your_Box_Storage_Access_Token** with your actual box access token,
**Step 4:** Modify the Index.cshtml File in the Document Editor sample
-In the client-side, to export the document into blob the document using [`saveAsBlob`](https://ej2.syncfusion.com/aspnetmvc/documentation/api/document-editor#saveAsBlob) and sent to server-side for saving in Box cloud file storage.
+In the client-side, to export the document into blob the document using `saveAsBlob` and sent to server-side for saving in Box cloud file storage.
{% tabs %}
diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/dropbox-cloud-file-storage.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/dropbox-cloud-file-storage.md
index e7489b4aa..e011cd57c 100644
--- a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/dropbox-cloud-file-storage.md
+++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/dropbox-cloud-file-storage.md
@@ -1,6 +1,6 @@
---
layout: post
-title: Save document to Dropbox cloud file storage in ASP.NET MVC Document editor control | Syncfusion
+title: Save to Dropbox cloud file storage in Document editor | Syncfusion
description: Learn about how to Save document to Dropbox cloud file storage in ASP.NET MVC Document editor control of Syncfusion Essential JS 2 and more details.
platform: document-processing
control: Save document to Dropbox cloud file storage
@@ -8,7 +8,7 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Save document to Dropbox cloud file storage
+# Save document to Dropbox cloud file storage in ASP.NET MVC
To save a document to Dropbox cloud file storage, you can follow the steps below
@@ -119,7 +119,7 @@ N> Replace **Your_Dropbox_Access_Token** with your actual Dropbox access token a
**Step 4:** Modify the Index.cshtml File in the Document Editor sample
-In the client-side, to export the document into blob the document using [`saveAsBlob`](https://ej2.syncfusion.com/aspnetmvc/documentation/api/document-editor#saveAsBlob) and sent to server-side for saving in Dropbox cloud file storage.
+In the client-side, to export the document into blob the document using `saveAsBlob` and sent to server-side for saving in Dropbox cloud file storage.
{% tabs %}
diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/google-cloud-storage.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/google-cloud-storage.md
index 27ceafbad..55dcb2881 100644
--- a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/google-cloud-storage.md
+++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/google-cloud-storage.md
@@ -1,6 +1,6 @@
---
layout: post
-title: Save document to Google Cloud Storage in ASP.NET MVC Document editor control | Syncfusion
+title: Save to Google Cloud in ASP.NET MVC Document editor | Syncfusion
description: Learn about how to Save document to Google Cloud Storage in ASP.NET MVC Document editor control of Syncfusion Essential JS 2 and more details.
platform: document-processing
control: Save document to Google Cloud Storage
@@ -8,7 +8,7 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Save document to Google Cloud Storage
+# Save document to Google Cloud Storage in ASP.NET MVC
To save a document to Google Cloud Storage, you can follow the steps below
@@ -122,7 +122,7 @@ N> Replace **path/to/service-account-key.json** with the actual file path to you
**Step 4:** Modify the Index.cshtml File in the Document Editor sample
-In the client-side, to export the document into blob the document using [`saveAsBlob`](https://ej2.syncfusion.com/aspnetmvc/documentation/api/document-editor#saveAsBlob) and sent to server-side for saving in Google Cloud Storage.
+In the client-side, to export the document into blob the document using `saveAsBlob` and sent to server-side for saving in Google Cloud Storage.
{% tabs %}
diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/google-drive.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/google-drive.md
index afb53b912..2186e4745 100644
--- a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/google-drive.md
+++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/google-drive.md
@@ -1,6 +1,6 @@
---
layout: post
-title: Save document to Google Drive in ASP.NET MVC Document editor control | Syncfusion
+title: Save to Google Drive in ASP.NET MVC Document editor | Syncfusion
description: Learn about how to Save document to Google Drive in ASP.NET MVC Document editor control of Syncfusion Essential JS 2 and more details.
platform: document-processing
control: Save document to Google Drive
@@ -8,7 +8,7 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Save document to Google Drive
+# Save document to Google Drive in ASP.NET MVC
To save a document to Google Drive, you can follow the steps below
@@ -147,7 +147,7 @@ N> You must use a unique `Client_ID` from json file to interface your applicatio
**Step 4:** Modify the Index.cshtml File in the Document Editor sample
-In the client-side, to export the document into blob the document using [`saveAsBlob`](https://ej2.syncfusion.com/aspnetmvc/documentation/api/document-editor#saveAsBlob) and sent to server-side for saving in Google Drive.
+In the client-side, to export the document into blob the document using `saveAsBlob` and sent to server-side for saving in Google Drive.
{% tabs %}
diff --git a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/one-drive.md b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/one-drive.md
index 44b407ac1..ec4d9c757 100644
--- a/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/one-drive.md
+++ b/Document-Processing/Word/Word-Processor/asp-net-mvc/saving-documents/one-drive.md
@@ -1,6 +1,6 @@
---
layout: post
-title: Save document to One Drive in ASP.NET MVC Document editor control | Syncfusion
+title: Save to One Drive in ASP.NET MVC Document editor | Syncfusion
description: Learn about how to Save document to One Drive in ASP.NET MVC Document editor control of Syncfusion Essential JS 2 and more details.
platform: document-processing
control: Save document to One Drive
@@ -8,7 +8,7 @@ documentation: ug
domainurl: ##DomainURL##
---
-# Save document to One Drive
+# Save document to One Drive in ASP.NET MVC
To save a document to One Drive, you can follow the steps below
@@ -133,11 +133,11 @@ private string GetValue(IFormCollection data, string key)
```
-N> Replace **Your_Tenant_ID**, **Your_Application_ID**, and **Your_Folder_Name_To_Access_The_Files_In_Onedrive** with your actual tenant ID, application ID, and folder name.
+N> Replace **Your_Tenant_ID**, **Your_Application_ID**, and **Your_Folder_Name_To_Access_The_Files_In_OneDrive** with your actual tenant ID, application ID, and folder name.
**Step 4:** Modify the Index.cshtml File in the Document Editor sample
-In the client-side, to export the document into blob the document using [`saveAsBlob`](https://ej2.syncfusion.com/aspnetmvc/documentation/api/document-editor#saveAsBlob) and sent to server-side for saving in One Drive.
+In the client-side, to export the document into blob the document using `saveAsBlob` and sent to server-side for saving in One Drive.
{% tabs %}
diff --git a/Document-Processing/Word/Word-Processor/react/ribbon.md b/Document-Processing/Word/Word-Processor/react/ribbon.md
index cd24a00b7..e16bb9215 100644
--- a/Document-Processing/Word/Word-Processor/react/ribbon.md
+++ b/Document-Processing/Word/Word-Processor/react/ribbon.md
@@ -23,6 +23,21 @@ To enable Ribbon in React Document Editor, use the [`toolbarMode`](https://ej2.s
By default, `toolbarMode` is `Toolbar`.
+To use Ribbon mode, add Document Editor component and its dependent component styles available in **../node_modules/@syncfusion** package folder. This can be added as reference in **src/App.css**.
+
+```css
+@import '../node_modules/@syncfusion/ej2-base/styles/material.css';
+@import '../node_modules/@syncfusion/ej2-buttons/styles/material.css';
+@import '../node_modules/@syncfusion/ej2-inputs/styles/material.css';
+@import '../node_modules/@syncfusion/ej2-popups/styles/material.css';
+@import '../node_modules/@syncfusion/ej2-lists/styles/material.css';
+@import '../node_modules/@syncfusion/ej2-navigations/styles/material.css';
+@import '../node_modules/@syncfusion/ej2-splitbuttons/styles/material.css';
+@import '../node_modules/@syncfusion/ej2-dropdowns/styles/material.css';
+@import "../node_modules/@syncfusion/ej2-documenteditor/styles/material.css";
+@import '../node_modules/@syncfusion/ej2-ribbon/styles/material.css';/* Required for Ribbon */
+```
+
The following code shows the how to enable the `Ribbon` in Document Editor.
{% raw %}
diff --git a/Document-Processing/Word/Word-Processor/vue/ribbon.md b/Document-Processing/Word/Word-Processor/vue/ribbon.md
index b27af72cd..73dfa5799 100644
--- a/Document-Processing/Word/Word-Processor/vue/ribbon.md
+++ b/Document-Processing/Word/Word-Processor/vue/ribbon.md
@@ -23,6 +23,21 @@ To enable Ribbon in Document Editor, use the [`toolbarMode`](https://ej2.syncfus
By default, `toolbarMode` is `Toolbar`.
+To use Ribbon mode, add Document Editor component and its dependent component styles available in **../node_modules/@syncfusion** package folder. This can be added as reference in **src/App.vue**.
+
+```css
+@import '../node_modules/@syncfusion/ej2-base/styles/material.css';
+@import '../node_modules/@syncfusion/ej2-buttons/styles/material.css';
+@import '../node_modules/@syncfusion/ej2-inputs/styles/material.css';
+@import '../node_modules/@syncfusion/ej2-popups/styles/material.css';
+@import '../node_modules/@syncfusion/ej2-lists/styles/material.css';
+@import '../node_modules/@syncfusion/ej2-navigations/styles/material.css';
+@import '../node_modules/@syncfusion/ej2-splitbuttons/styles/material.css';
+@import '../node_modules/@syncfusion/ej2-dropdowns/styles/material.css';
+@import "../node_modules/@syncfusion/ej2-documenteditor/styles/material.css";
+@import '../node_modules/@syncfusion/ej2-ribbon/styles/material.css';/* Required for Ribbon */
+```
+
The following code shows the how to enable the `Ribbon` in Document Editor.
{% tabs %}
diff --git a/Document-Processing/ai-coding-assistant/mcp-server.md b/Document-Processing/ai-coding-assistant/mcp-server.md
index dca89023a..baf82dbe7 100644
--- a/Document-Processing/ai-coding-assistant/mcp-server.md
+++ b/Document-Processing/ai-coding-assistant/mcp-server.md
@@ -55,11 +55,30 @@ Before you can invoke the ```SyncfusionDocumentSDKAssistant``` MCP server, you n
* **Arguments**: -y
* **Server name**: syncfusionDocumentSDKAssistant
-You need to add your [Syncfusion API key](https://syncfusion.com/account/api-key) as an env parameter in the configuration file:
+#### API Key Configuration
+Login to your [Syncfusion account](http://syncfusion.com/account/) and generate an API Key from the [API Key page](https://www.syncfusion.com/account/api-key). Replace `YOUR_API_KEY_FILE_PATH` or `YOUR_API_KEY` in the configuration files with your generated key.
+
+There are two options:
+
+* **Using an API Key File (Recommended)**
+
+ Store your API key in a separate file and reference its path in the `Syncfusion_API_Key_Path` environment parameter. This approach is more secure as you don't expose the key directly in configuration files.
+
+ **Supported file formats:** `.txt` or `.key` file
+
+~~~json
+ "env": {
+ "Syncfusion_API_Key_Path": "YOUR_API_KEY_FILE_PATH" // "D:\\syncfusion-key.txt" (or) "D:\\syncfusion-key.key"
+ }
~~~
- "env": {
- "Syncfusion_API_Key": "YOUR_API_KEY"
+* **Direct API Key**
+
+ Paste your `Syncfusion_API_Key` directly in the configuration file's environment parameter.
+
+~~~json
+ "env": {
+ "Syncfusion_API_Key": "YOUR_API_KEY"
}
~~~
@@ -89,6 +108,8 @@ For additional details, see the Code Studio [documentation](https://help.syncfus
"@syncfusion/documentsdk-assistant@latest"
],
"env": {
+ "Syncfusion_API_Key_Path": "YOUR_API_KEY_FILE_PATH",
+ // or
"Syncfusion_API_Key": "YOUR_API_KEY"
}
}
@@ -96,7 +117,7 @@ For additional details, see the Code Studio [documentation](https://help.syncfus
}
~~~
- * After updating the configuration in settings.json, you’ll notice a “Start” option at the top of the config. This allows you to easily start the SyncfusionDocumentSDKAssistant server directly from the settings interface without additional commands.
+ * After updating the configuration in mcp.json, you’ll notice a “Start” option at the top of the config. This allows you to easily start the SyncfusionDocumentSDKAssistant server directly from the settings interface without additional commands.
* Confirm that SyncfusionDocumentSDKAssistant is being used (this does not happen automatically). Look for a statement in the output, which is similar to:
@@ -118,6 +139,8 @@ To configure an MCP server for a specific workspace, you can create a .cursor/mc
"@syncfusion/documentsdk-assistant@latest"
],
"env": {
+ "Syncfusion_API_Key_Path": "YOUR_API_KEY_FILE_PATH",
+ // or
"Syncfusion_API_Key": "YOUR_API_KEY"
}
}
@@ -142,6 +165,8 @@ For more details, refer to the data = new List