diff --git a/_config.yml b/_config.yml index a508439b..1949327b 100644 --- a/_config.yml +++ b/_config.yml @@ -91,6 +91,12 @@ navigation: libraries/radwordsprocessing/editing/gen-ai-powered-document-insights: title: GenAI-powered Document Insights position: 7 + libraries/radwordsprocessing/features/gen-ai-powered-document-insights/partial-context-question-processor: + title: PartialContextQuestionProcessor + position: 5 + libraries/radwordsprocessing/features/gen-ai-powered-document-insights/custom-partialcontextquestionprocessor: + title: Custom PartialContextQuestionProcessor + position: 6 libraries/radwordsprocessing/concepts: title: Concepts position: 6 @@ -187,6 +193,15 @@ navigation: libraries/radspreadprocessing/formats-and-conversion/data-table: title: DataTable position: 6 + libraries/radspreadprocessing/formats-and-conversion/json: + title: Json + position: 7 + libraries/radspreadprocessing/formats-and-conversion/json/jsonformatprovider: + title: JsonFormatProvider + position: 1 + libraries/radspreadprocessing/formats-and-conversion/json/jsonexportsettings: + title: JsonExportSettings + position: 2 libraries/radspreadprocessing/features/charts: title: Charts @@ -227,6 +242,12 @@ navigation: libraries/radpdfprocessing/features/gen-ai-powered-document-insights: title: GenAI-powered Document Insights position: 6 + libraries/radpdfprocessing/features/gen-ai-powered-document-insights/partial-context-question-processor: + title: PartialContextQuestionProcessor + position: 5 + libraries/radpdfprocessing/features/gen-ai-powered-document-insights/custom-partialcontextquestionprocessor: + title: Custom PartialContextQuestionProcessor + position: 6 libraries/radpdfprocessing/model/interactive-forms: title: Interactive Forms libraries/radpdfprocessing/model/interactive-forms/form-fields: @@ -387,7 +408,9 @@ defaults: mindotnetversion: "8" maxdotnetversion: "9" dotnetversions: ".NET 8 and .NET 9" -skiasharpversion: "3.116.1" +skiasharpversion: "3.119.1" +harfbuzzsharp: "8.3.1.2" +cryptographypkcs: "9.0.9" # Feedback Form Product Code productCode: TDP diff --git a/ai-coding-assistant/mcp-server.md b/ai-coding-assistant/mcp-server.md index 5e087541..e354a43e 100644 --- a/ai-coding-assistant/mcp-server.md +++ b/ai-coding-assistant/mcp-server.md @@ -20,6 +20,10 @@ The Telerik Document Processing [MCP (Model Context Protocol) Server](https://mo ## Supported Libraries * [RadPdfProcessing]({%slug radpdfprocessing-overview%}) +* [RadSpreadProcessing]({%slug radspreadprocessing-overview%}) +* [RadSpreadStreamProcessing]({%slug radspreadstreamprocessing-overview%}) +* [RadWordsProcessing]({%slug radwordsprocessing-overview%}) +* [RadZipLibrary]({%slug radziplibrary-overview%}) ## Prerequisites for the MCP Server diff --git a/ai-coding-assistant/prompt-library.md b/ai-coding-assistant/prompt-library.md index 6dfca2d8..5326a0ee 100644 --- a/ai-coding-assistant/prompt-library.md +++ b/ai-coding-assistant/prompt-library.md @@ -34,7 +34,7 @@ Quick Start Guide: ## General Prompts -The section provides examples of general questions related to RadPdfProcessing. +The section provides examples of general questions related to [RadPdfProcessing]({%slug radpdfprocessing-overview%}). @@ -131,6 +131,170 @@ The section provides examples of general questions related to RadPdfProcessing.
+## SpreadProcessing Prompts + +The section provides examples of general questions related to [RadSpreadProcessing]({%slug radspreadprocessing-overview%}). + + + + + + + + + + + + + + + + + + +
Create a Spreadsheet with random dataImport a Spreadsheet and read the content
+

+#telerik-dpl-assistant create a new spreadsheet file with random data inside.
+			  
+
+

+#telerik-dpl-assistant import an excel file and read the content of row 1 and column 1, and how to change the value on row 1 and column 2 to 5
+			  
+
Import a Spreadsheet and color cellsImport a Spreadsheet and format a cell
+

+#telerik-dpl-assistant import an excel document and change the background color of the first 5 cells on the first 2 rows.
+			  
+
+

+#telerik-dpl-assistant import an excel document and change the number format for cell A1.
+			  
+
+ +## SpreadStreamProcessing Prompts + +The section provides examples of general questions related to [RadSpreadStreamProcessing]({%slug radspreadstreamprocessing-overview%}). + + + + + + + + + + + + + + + + + + +
Create a Spreadsheet with random dataImport an existing Spreadsheet
+

+#telerik-dpl-assistant create a new excel file using spreadstreamprocessing with random data.
+			  
+
+

+#telerik-dpl-assistant import an excel file using spreadstreamprocessing.
+			  
+
Import an Excel document and color cells Import a Spreadsheet and format a cell
+

+#telerik-dpl-assistant open an excel file using spreadstreamprocessing and change the background color of the first 5 cells on the first 2 rows.
+			  
+
+

+#telerik-dpl-assistant open an excel file using spreadstreamprocessing and change the number format for cell A1.
+			  
+
+ +## WordsProcessing Prompts + +The section provides examples of general questions related to [RadWordsProcessing]({%slug radwordsprocessing-overview%}). + + + + + + + + + + + + + + + + + + + + + + +
Create a Word documentImport a Word document
+

+#telerik-dpl-assistant  create a new Word document with text "Test".
+			  
+
+

+#telerik-dpl-assistant import an existing word document.
+			  
+
MailMerge a Word documentConvert DOCX to PDF
+

+#telerik-dpl-assistant perform a mail merge with a word document.
+			  
+
+

+#telerik-dpl-assistant open a docx document and export it to a pdf file.
+			  
+
+ +## ZipLibrary Prompts + +The section provides examples of general questions related to [RadZipLibrary]({%slug radziplibrary-overview%}). + + + + + + + + + + + + + + + + + + + + + + +
Create a new zip archiveOpen an existing zip archive
+

+#telerik-dpl-assistant create a new zip archive.
+			  
+
+

+#telerik-dpl-assistant open a zip archive.
+			  
+
Add a file to a zip archiveProtect a zip archive
+

+#telerik-dpl-assistant add a new file into a zip archive.
+			  
+
+

+#telerik-dpl-assistant protect a zip archive.
+			  
+
+ ## See Also * [AI Coding Assistant Overview]({%slug ai-coding-assistant%}) diff --git a/distribution-and-licensing/license-key/images/download-license-key.png b/distribution-and-licensing/license-key/images/download-license-key.png index 2d1f7878..3bdc6684 100644 Binary files a/distribution-and-licensing/license-key/images/download-license-key.png and b/distribution-and-licensing/license-key/images/download-license-key.png differ diff --git a/distribution-and-licensing/trial-license-limitations.md b/distribution-and-licensing/trial-license-limitations.md index 4006f0c8..369e9374 100644 --- a/distribution-and-licensing/trial-license-limitations.md +++ b/distribution-and-licensing/trial-license-limitations.md @@ -11,7 +11,7 @@ position: 3 The free trial license of Telerik Document Processing is fully functional and will work for an unlimited time. -The only difference between the developer and trial versions of the assemblies is that trial assemblies add a copyright message to the produced documents. +The only difference between the developer and trial versions of the packages is that trial packages add a copyright message to the produced documents. In PDF and flow formats, this is a message at the top of the document, whereas for XLSX documents the message is added to a separate sheet. diff --git a/getting-started/Installation/install-nuget-packages.md b/getting-started/Installation/install-nuget-packages.md index 9d5fafe6..51da14d6 100644 --- a/getting-started/Installation/install-nuget-packages.md +++ b/getting-started/Installation/install-nuget-packages.md @@ -45,7 +45,7 @@ This approach allows you to setup a local NuGet package source, so you can insta > >* A version for __.Net Standard 2.0__ > ->Both versions are available as NuGet packages but with different names. The assemblies for __.NET Standard__ do __not__ contain the word __Windows__ in their name. +>Both versions are available as NuGet packages but with different names. The packages for __.NET Standard__ do __not__ contain the word __Windows__ in their name. ## Download from the NuGet server diff --git a/getting-started/Installation/installing-on-your-computer.md b/getting-started/Installation/installing-on-your-computer.md index a2fb3037..cebcaf82 100644 --- a/getting-started/Installation/installing-on-your-computer.md +++ b/getting-started/Installation/installing-on-your-computer.md @@ -14,9 +14,9 @@ position: 5 Telerik Document Processing is part of several Telerik bundles and is installed following the steps for installing the suite with which you've obtained the product. ->Starting from Q1 2016, the Document Processing assemblies have an assembly version which may differ from the assembly version of the other assemblies in the particular suite. +>Starting from Q1 2016, the Document Processing packages have a package version which may differ from the package version of the other packages in the particular suite. > ->Starting from R3 2016, only assemblies with a version number ending with .40 suffix are distributed. The libraries don't contain code specific for .NET Framework 4.5, thus an additional version is not needed. +>Starting from R3 2016, only packages with a version number ending with .40 suffix are distributed. The libraries don't contain code specific for .NET Framework 4.5, thus an additional version is not needed. > >The changes are synced between the controls that have a dependency on Telerik Document Processing and while the referenced files are from the same release, they should work as expected regardless of the version distinction. @@ -30,13 +30,13 @@ The libraries can be used through the available NuGet packages. [Installing Telerik UI for ASP.NET AJAX](http://docs.telerik.com/devtools/aspnet-ajax/installation/which-file-do-i-need-to-install) -When the installation completes, the Telerik Document Processing assemblies will be available in the *AdditionalLibraries* sub-folder. +When the installation completes, the Telerik Document Processing packages will be available in the *AdditionalLibraries* sub-folder. ## UI for ASP.NET MVC [Installing Telerik UI for ASP.NET MVC](https://docs.telerik.com/aspnet-mvc/getting-started/installation/overview) -When the installation completes, the Telerik Document Processing assemblies will be available in the *spreadsheet* sub-folder. +When the installation completes, the Telerik Document Processing packages will be available in the *spreadsheet* sub-folder. ## UI for Blazor diff --git a/getting-started/Installation/nuget-packages.md b/getting-started/Installation/nuget-packages.md index b14eb5dc..748c6304 100644 --- a/getting-started/Installation/nuget-packages.md +++ b/getting-started/Installation/nuget-packages.md @@ -3,7 +3,7 @@ title: Available NuGet Packages page_title: Available NuGet Packages description: Learn how you can use the Telerik Document Processing libraries through NuGet. slug: available-nuget-packages -tags: nuget, document, processing, assembly +tags: nuget, document, processing, assembly, package published: True position: 6 --- @@ -27,7 +27,7 @@ If your workflow relies on NuGet for package management, you can take advantage > >* A version for __.Net Standard 2.0__ > ->Both versions are available as NuGet packages but with different names. The assemblies for __.NET Standard__ do __not__ contain the word __Windows__ in their name. +>Both versions are available as NuGet packages but with different names. The packages for __.NET Standard__ do __not__ contain the word __Windows__ in their name. >caption Package lists to use with .NET Standard (left) and .NET Framework (right) @@ -43,8 +43,8 @@ The following list represents the available NuGet packages for the Document Proc * __Telerik.Windows.Documents.Core:__ The main NuGet package for the Telerik Document Processing libraries. Required when you plan to use the library. * __Telerik.Windows.Documents.Fixed:__ The package is required when processing `PDF` documents. -* __Telerik.Windows.Documents.Fixed.FormatProviders.Ocr:__ This assembly is needed for the [Optical Character Recognition (OCR)]({%slug radpdfprocessing-formats-and-conversion-ocr-ocrformatprovider%}) functionality. -* __Telerik.Windows.Documents.Tesseract.Ocr:__ This assembly is needed for the [Optical Character Recognition (OCR)]({%slug radpdfprocessing-formats-and-conversion-ocr-ocrformatprovider%}) functionality. +* __Telerik.Windows.Documents.Fixed.FormatProviders.Ocr:__ This package is needed for the [Optical Character Recognition (OCR)]({%slug radpdfprocessing-formats-and-conversion-ocr-ocrformatprovider%}) functionality. +* __Telerik.Windows.Documents.Tesseract.Ocr:__ This package is needed for the [Optical Character Recognition (OCR)]({%slug radpdfprocessing-formats-and-conversion-ocr-ocrformatprovider%}) functionality. * __Telerik.Windows.Documents.CMapUtils:__ Provides a default implementation for getting the data of a predefined CMap table by a given name. * __Telerik.Windows.Documents.Flow:__ The package is part of the WordsProcessing library. Required for processing `HTML`, `DOCX`, `RTF`, and `TXT` documents. * __Telerik.Windows.Documents.DrawingML:__ Part of the WordsProcessing library. It is needed for working with shapes inside the documents. @@ -63,8 +63,8 @@ The following list represents the available NuGet packages for the Document Proc * __Telerik.Documents.Core:__ The main NuGet package from the Telerik Document Processing libraries. Required when you plan to use the library. * __Telerik.Documents.Fixed:__ The package is required when processing `PDF` documents. -* __Telerik.Documents.Fixed.FormatProviders.Ocr:__ This assembly is needed for the [Optical Character Recognition (OCR)]({%slug radpdfprocessing-formats-and-conversion-ocr-ocrformatprovider%}) functionality. -* __Telerik.Documents.Tesseract.Ocr:__ This assembly is needed for the [Optical Character Recognition (OCR)]({%slug radpdfprocessing-formats-and-conversion-ocr-ocrformatprovider%}) functionality. +* __Telerik.Documents.Fixed.FormatProviders.Ocr:__ This package is needed for the [Optical Character Recognition (OCR)]({%slug radpdfprocessing-formats-and-conversion-ocr-ocrformatprovider%}) functionality. +* __Telerik.Documents.Tesseract.Ocr:__ This package is needed for the [Optical Character Recognition (OCR)]({%slug radpdfprocessing-formats-and-conversion-ocr-ocrformatprovider%}) functionality. * __Telerik.Documents.ImageUtils:__ This package is required when exporting to `PDF` format a document containing images different than Jpeg and Jpeg2000 or ImageQuality different than High. For more information check the [PdfProcessing`s Cross-Platform Support]({%slug radpdfprocessing-cross-platform%}) article. * __Telerik.Documents.CMapUtils:__ Provides a default implementation for getting the data of a predefined CMap table by a given name. * __Telerik.Documents.Flow:__ The package is part of the Words Processing Library. Required for processing `HTML`, `DOCX`, `RTF`, and `TXT` documents. diff --git a/getting-started/Installation/pdf-export.md b/getting-started/Installation/pdf-export.md index 3ff638c8..e3b5d4df 100644 --- a/getting-started/Installation/pdf-export.md +++ b/getting-started/Installation/pdf-export.md @@ -24,7 +24,7 @@ Depending on the scenario, you could take advantage of the different functionali ## Create a PDF Document From Scratch -**RadPdfProcessing** is intended to work with fixed documents and provides a convenient API to create, modify and export PDF documents. To use its import and export functionalities, you will need to add a reference to the **Telerik.Windows.Documents.Fixed** assembly. +**RadPdfProcessing** is intended to work with fixed documents and provides a convenient API to create, modify and export PDF documents. To use its import and export functionalities, you will need to add a reference to the **Telerik.Windows.Documents.Fixed** package. You can import and export a document through the respective methods of the **PdfFormatProvider** class. @@ -34,7 +34,7 @@ You can import and export a document through the respective methods of the **Pdf In scenarios where you need to convert a document from another file format to PDF, you could take advantage of the capabilities of **RadWordsProcessing**. This library allows you to import documents from the most common rich text formats (Docx, HTML, RTF) as well as plain text and export them to PDF. All the supported document formats and the corresponding format providers are listed in the [Formats and Conversion section]({%slug radwordsprocessing-formats-and-conversion%}). -In order to use the **PdfFormatProvider** of **RadWordsProcessing**, you should add a reference to the **Telerik.Windows.Documents.Flow.FormatProviders.Pdf** assembly. +In order to use the **PdfFormatProvider** of **RadWordsProcessing**, you should add a reference to the **Telerik.Windows.Documents.Flow.FormatProviders.Pdf** package. >The **PdfFormatProvider** class of RadWordsProcessing resides in the **Telerik.Windows.Documents.Flow.FormatProviders.Pdf namespace**. For more information on how to work with this provider, please read [this topic]({%slug radwordsprocessing-formats-and-conversion-pdf-pdfformatprovider%}). @@ -63,7 +63,7 @@ In order to use the **PdfFormatProvider** of **RadWordsProcessing**, you should While the so far discussed libraries allow working with text documents, with RadSpreadProcessing you can create, import and export tabular data. This library supports the most common file formats for storing spreadsheet documents - Xlsx, CSV. All format providers are listed and described in the corresponding [Formats and Conversion section]({%slug radspreadprocessing-formats-and-conversion-pdf-pdfformatprovider%}). -In order to enable the export to PDF in RadSpreadProcessing, you will need to add a reference to the **Telerik.Windows.Documents.Spreadsheet.FormatProviders.Pdf** assembly. +In order to enable the export to PDF in RadSpreadProcessing, you will need to add a reference to the **Telerik.Windows.Documents.Spreadsheet.FormatProviders.Pdf** package. >The **PdfFormatProvider** class of RadSpreadProcessing resides in the **Telerik.Windows.Documents.Spreadsheet.FormatProviders.Pdf namespace**. For more information on how to work with this provider, please read [this topic]({%slug radspreadprocessing-formats-and-conversion-pdf-pdfformatprovider%}). diff --git a/getting-started/first-steps.md b/getting-started/first-steps.md index a226e655..e35c97c3 100644 --- a/getting-started/first-steps.md +++ b/getting-started/first-steps.md @@ -17,11 +17,11 @@ The Telerik Document Processing libraries that we use in this guide are UI-indep >important Please install **<PackageReference Include="Telerik.Licensing" Version="1.*" />**. -Since we distribute Telerik Document Processing libraries as an addition to several Telerik UI component bundles, chances are that the libraries are already installed on your system. In this case, all you need is to locate them. The table below provides links to the installation instructions for each of the Telerik UI component suites that give you access to the Telerik Document Processing libraries. If the standard installation of your Telerik UI component suite includes the Document Processing assemblies, the table also shows their default location. +Since we distribute Telerik Document Processing libraries as an addition to several Telerik UI component bundles, chances are that the libraries are already installed on your system. In this case, all you need is to locate them. The table below provides links to the installation instructions for each of the Telerik UI component suites that give you access to the Telerik Document Processing libraries. If the standard installation of your Telerik UI component suite includes the Document Processing packages, the table also shows their default location. ->tipRegardless of the Telerik UI components suite that you use, you can always get the Document Processing assemblies as NuGet packages from the [Telerik NuGet server]({%slug installation-nuget-packages%}). +>tipRegardless of the Telerik UI components suite that you use, you can always get the Document Processing packages as NuGet packages from the [Telerik NuGet server]({%slug installation-nuget-packages%}). -| UI Components suite | Installation instructions | Default location of the Document Processing assemblies | +| UI Components suite | Installation instructions | Default location of the Document Processing packages | |--------------------|---------------------------|------------------------------------------------| | UI for ASP.NET AJAX | [Installing Telerik UI for ASP.NET AJAX](http://docs.telerik.com/devtools/aspnet-ajax/installation/which-file-do-i-need-to-install) | | | UI for ASP.NET MVC | [Installing Telerik UI for ASP.NET MVC](http://docs.telerik.com/kendo-ui/aspnet-mvc/introduction#installation) | | @@ -46,29 +46,29 @@ As we are going to create a UI-Independent example, we will use a console projec ## Step 3: Add a Telerik Document Processing Library to a Project -This sample application will use [RadWordsProcessing]({%slug radwordsprocessing-overview%}). In this step, we must add the required assemblies. +This sample application will use [RadWordsProcessing]({%slug radwordsprocessing-overview%}). In this step, we must add the required packages. -1. Reference the assemblies that provide the __RadWordsProcessing__ functionality: +1. Reference the packages that provide the __RadWordsProcessing__ functionality: For .NET Framework project: - * __Telerik.Windows.Documents.Core.dll__ - * __Telerik.Windows.Documents.Flow.dll__ + * __Telerik.Windows.Documents.Core__ + * __Telerik.Windows.Documents.Flow__ For .NET Standard ({{site.dotnetversions}}) project: - * __Telerik.Documents.Core.dll__ - * __Telerik.Documents.Flow.dll__ + * __Telerik.Documents.Core__ + * __Telerik.Documents.Flow__ >note As of **Q2 2025** the Zip Library will no longer be used as an internal dependency in the rest of the Document Processing Libraries - PdfProcessing, WordsProcessing, SpreadProcessing, SpreadStreamProcessing. It will be replaced by the System.IO.Compression. We will continue to ship the Telerik Zip Library as a standalone library so clients can still use it separately. -1. Reference the assembly that allows you to export the content as a PDF file: +1. Reference the package that allows you to export the content as a PDF file: For .NET Framework project: - * __Telerik.Windows.Documents.Flow.FormatProviders.Pdf.dll__ + * __Telerik.Windows.Documents.Flow.FormatProviders.Pdf__ For .NET Standard ({{site.dotnetversions}}) project: - * __Telerik.Documents.Flow.FormatProviders.Pdf.dll__ + * __Telerik.Documents.Flow.FormatProviders.Pdf__ -> The Document Processing assemblies for {{site.dotnetversions}} don't contain "Windows" in their names. +> The Document Processing packages for {{site.dotnetversions}} don't contain "Windows" in their names. ## Step 4: Create a Document diff --git a/getting-started/getting-started.md b/getting-started/getting-started.md index 35c9081a..84db3e59 100644 --- a/getting-started/getting-started.md +++ b/getting-started/getting-started.md @@ -9,61 +9,61 @@ position: 0 # Getting Started with Telerik Document Processing -**Telerik Document Processing** includes a set of cross-platform libraries that let you import and export content between different document formats and work with archive files. The needed assemblies come with the installation files of several Telerik suites. They are also available in the internal builds of the same Telerik suites. Learn which products include Telerik Document Processing in the [Product Bundles](https://www.telerik.com/purchase.aspx?filter=web). +**Telerik Document Processing** includes a set of cross-platform libraries that let you import and export content between different document formats and work with archive files. The required references come with the installation files of several Telerik suites. They are also available in the internal builds of the same Telerik suites. Learn which products include Telerik Document Processing in the [Product Bundles](https://www.telerik.com/purchase.aspx?filter=web). >tipMore information about the suites that include Telerik Document Processing and how to install them is available in the [Installing on Your Computer]({%slug installation-installing-on-your-computer%}) article. >important Please install **<PackageReference Include="Telerik.Licensing" Version="1.*" />**. -The following tables list all Telerik Document Processing assemblies for the different platforms and their roles: +The following tables list all Telerik Document Processing packages for the different platforms and their roles: ->important The .NET Standard assemblies are compatible with any .NET version (e.g .NET 9), even if there are no assemblies explicitly available for the specific versions. The same applies to the .NET Framework assemblies. +>important The .NET Standard packages are compatible with any .NET version (e.g .NET 9), even if there are no packages explicitly available for the specific versions. The same applies to the .NET Framework packages. -### Assemblies for .NET Standard (Support for {{site.dotnetversions}}) +### Packages for .NET Standard (Support for {{site.dotnetversions}}) -| Assembly Name| Description | +| Packagea Name| Description | |-------|----------------| -| **Telerik.Documents.Core.dll** | The main assembly from the Telerik document processing libraries. You always need it when you intend to use the library. | -| **Telerik.Documents.Flow.dll** | Part of the words (text) processing library. It is needed for processing HTML, DOCX, RTF and TXT documents. | -| **Telerik.Documents.DrawingML.dll** | Part of the words (text) processing library. It is needed for working with shapes inside the documents. | -| **Telerik.Documents.Flow.FormatProviders.Doc.dll** | Allows importing of DOC and DOT document. | -| **Telerik.Documents.Flow.FormatProviders.Pdf.dll** | Allows exporting of flow documents (DOCX, DOC, DOT, RTF, and HTML) to PDF. | -| **Telerik.Documents.Fixed.dll** | Part of the PDF processing library. It is needed for working with PDF documents. | -| **Telerik.Documents.Fixed.FormatProviders.Ocr.dll** | This assembly is needed for the [Optical Character Recognition (OCR)]({%slug radpdfprocessing-formats-and-conversion-ocr-ocrformatprovider%}) functionality. | -| **Telerik.Documents.Tesseract.Ocr.dll** | This assembly is needed for the [Optical Character Recognition (OCR)]({%slug radpdfprocessing-formats-and-conversion-ocr-ocrformatprovider%}) functionality. | -| **Telerik.Documents.ImageUtils.dll** | This assembly is required when exporting to `PDF` format a document containing images different than Jpeg and Jpeg2000 or ImageQuality different than High. For more information check the [PdfProcessing`s Cross-Platform Support]({%slug radpdfprocessing-cross-platform%}) article. -| **Telerik.Documents.CMapUtils.dll** | Provides a default implementation for getting the data of a predefined CMap table by a given name. The assembly is optional and you will need to include a reference to it only if you need to process documents with [CMap tables]({%slug radpdfprocessing-concepts-cmap-tables%}). | -| **Telerik.Documents.Spreadsheet.dll** | The main assembly for the spreadsheet processing. It is needed for processing XLSX, CSV, TXT documents. | -| **Telerik.Documents.Spreadsheet.FormatProviders.OpenXml.dll** | This assembly is needed for processing XLSX documents. | -| **Telerik.Documents.Spreadsheet.FormatProviders.Pdf.dll** | This assembly is needed for exporting to PDF documents. | -| **Telerik.Documents.Spreadsheet.FormatProviders.Xls.dll** | This assembly is needed for processing XLS documents. | -| **Telerik.Documents.SpreadsheetStreaming.dll** | The main assembly for generating huge spreadsheet files using minimum resources. | -| **Telerik.Zip.dll** |It is the main assembly of the [Telerik Zip Library]({%slug radziplibrary-overview%}). | +| **Telerik.Documents.Core** | The main package from the Telerik document processing libraries. You always need it when you intend to use the library. | +| **Telerik.Documents.Flow** | Part of the words (text) processing library. It is needed for processing HTML, DOCX, RTF and TXT documents. | +| **Telerik.Documents.DrawingML** | Part of the words (text) processing library. It is needed for working with shapes inside the documents. | +| **Telerik.Documents.Flow.FormatProviders.Doc** | Allows importing of DOC and DOT document. | +| **Telerik.Documents.Flow.FormatProviders.Pdf** | Allows exporting of flow documents (DOCX, DOC, DOT, RTF, and HTML) to PDF. | +| **Telerik.Documents.Fixed** | Part of the PDF processing library. It is needed for working with PDF documents. | +| **Telerik.Documents.Fixed.FormatProviders.Ocr** | This package is needed for the [Optical Character Recognition (OCR)]({%slug radpdfprocessing-formats-and-conversion-ocr-ocrformatprovider%}) functionality. | +| **Telerik.Documents.Tesseract.Ocr** | This package is needed for the [Optical Character Recognition (OCR)]({%slug radpdfprocessing-formats-and-conversion-ocr-ocrformatprovider%}) functionality. | +| **Telerik.Documents.ImageUtils** | This package is required when exporting to `PDF` format a document containing images different than Jpeg and Jpeg2000 or ImageQuality different than High. For more information check the [PdfProcessing`s Cross-Platform Support]({%slug radpdfprocessing-cross-platform%}) article. +| **Telerik.Documents.CMapUtils** | Provides a default implementation for getting the data of a predefined CMap table by a given name. The package is optional and you will need to include a reference to it only if you need to process documents with [CMap tables]({%slug radpdfprocessing-concepts-cmap-tables%}). | +| **Telerik.Documents.Spreadsheet** | The main package for the spreadsheet processing. It is needed for processing XLSX, CSV, TXT documents. | +| **Telerik.Documents.Spreadsheet.FormatProviders.OpenXml** | This package is needed for processing XLSX documents. | +| **Telerik.Documents.Spreadsheet.FormatProviders.Pdf** | This package is needed for exporting to PDF documents. | +| **Telerik.Documents.Spreadsheet.FormatProviders.Xls** | This package is needed for processing XLS documents. | +| **Telerik.Documents.SpreadsheetStreaming** | The main package for generating huge spreadsheet files using minimum resources. | +| **Telerik.Zip** |It is the main package of the [Telerik Zip Library]({%slug radziplibrary-overview%}). | ### Assemblies for .NET Framework -| Assembly Name| Description | +| package Name| Description | |-------|----------------| -| **Telerik.Windows.Documents.Core.dll** | The main assembly from the Telerik document processing libraries. You always need it when you intend to use the library. | -| **Telerik.Windows.Documents.Flow.dll** | Part of the words (text) processing library. It is needed for processing HTML, DOCX, RTF and TXT documents. | -| **Telerik.Windows.Documents.DrawingML.dll** | Part of the words (text) processing library. It is needed for working with shapes inside the documents. | -| **Telerik.Windows.Documents.Flow.FormatProviders.Doc.dll** | Allows importing of DOC and DOT document. | -| **Telerik.Windows.Documents.Flow.FormatProviders.Pdf.dll** | Allows exporting of flow documents (DOCX, DOC, DOT, RTF, and HTML) to PDF. | -| **Telerik.Documents.SpreadsheetStreaming.dll** | The main assembly for generating huge spreadsheet files using minimum resources. | -| **Telerik.Windows.Documents.Spreadsheet.dll** | The main assembly for the spreadsheet processing. It is needed for processing XLSX, CSV, TXT documents. | -| **Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml.dll** | This assembly is needed for processing XLSX documents. | -| **Telerik.Windows.Documents.Spreadsheet.FormatProviders.Xls.dll** | This assembly is needed for processing XLS documents. | -| **Telerik.Windows.Documents.Spreadsheet.FormatProviders.Pdf.dll** | This assembly is needed for processing PDF documents. | -| **Telerik.Windows.Documents.Fixed.dll** | Part of the PDF processing library. It is needed for working with PDF documents. | -| **Telerik.Windows.Documents.Fixed.FormatProviders.Ocr.dll** | This assembly is needed for the [Optical Character Recognition (OCR)]({%slug radpdfprocessing-formats-and-conversion-ocr-ocrformatprovider%}) functionality. | -| **Telerik.Windows.Documents.Tesseract.Ocr.dll** | This assembly is needed for the [Optical Character Recognition (OCR)]({%slug radpdfprocessing-formats-and-conversion-ocr-ocrformatprovider%}) functionality. | -| **Telerik.Windows.Documents.CMapUtils.dll** | Provides a default implementation for getting the data of a predefined CMap table by a given name. The assembly is optional and you will need to include a reference to it only if you need to process documents with [CMap tables]({%slug radpdfprocessing-concepts-cmap-tables%}). | -| **Telerik.Windows.Zip.dll** |It is the main assembly of the [Telerik Zip Library]({%slug radziplibrary-overview%}). | -| **Telerik.Windows.Zip.Extensions.dll** | Extends **Telerik.Windows.Zip** assembly with additional helper methods ([Zip Extensions]({%slug radziplibrary-zipextensions%})). | - - ->The libraries support .NET 4.6.2 and later. .NET Standard-compatible binaries are available as well. The assemblies for .NET Standard don't include 'Windows' in their names. +| **Telerik.Windows.Documents.Core** | The main package from the Telerik document processing libraries. You always need it when you intend to use the library. | +| **Telerik.Windows.Documents.Flow** | Part of the words (text) processing library. It is needed for processing HTML, DOCX, RTF and TXT documents. | +| **Telerik.Windows.Documents.DrawingML** | Part of the words (text) processing library. It is needed for working with shapes inside the documents. | +| **Telerik.Windows.Documents.Flow.FormatProviders.Doc** | Allows importing of DOC and DOT document. | +| **Telerik.Windows.Documents.Flow.FormatProviders.Pdf** | Allows exporting of flow documents (DOCX, DOC, DOT, RTF, and HTML) to PDF. | +| **Telerik.Documents.SpreadsheetStreaming** | The main package for generating huge spreadsheet files using minimum resources. | +| **Telerik.Windows.Documents.Spreadsheet** | The main package for the spreadsheet processing. It is needed for processing XLSX, CSV, TXT documents. | +| **Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml** | This package is needed for processing XLSX documents. | +| **Telerik.Windows.Documents.Spreadsheet.FormatProviders.Xls** | This package is needed for processing XLS documents. | +| **Telerik.Windows.Documents.Spreadsheet.FormatProviders.Pdf** | This package is needed for processing PDF documents. | +| **Telerik.Windows.Documents.Fixed** | Part of the PDF processing library. It is needed for working with PDF documents. | +| **Telerik.Windows.Documents.Fixed.FormatProviders.Ocr** | This package is needed for the [Optical Character Recognition (OCR)]({%slug radpdfprocessing-formats-and-conversion-ocr-ocrformatprovider%}) functionality. | +| **Telerik.Windows.Documents.Tesseract.Ocr** | This package is needed for the [Optical Character Recognition (OCR)]({%slug radpdfprocessing-formats-and-conversion-ocr-ocrformatprovider%}) functionality. | +| **Telerik.Windows.Documents.CMapUtils** | Provides a default implementation for getting the data of a predefined CMap table by a given name. The package is optional and you will need to include a reference to it only if you need to process documents with [CMap tables]({%slug radpdfprocessing-concepts-cmap-tables%}). | +| **Telerik.Windows.Zip** |It is the main package of the [Telerik Zip Library]({%slug radziplibrary-overview%}). | +| **Telerik.Windows.Zip.Extensions** | Extends **Telerik.Windows.Zip** package with additional helper methods ([Zip Extensions]({%slug radziplibrary-zipextensions%})). | + + +>The libraries support .NET 4.6.2 and later. .NET Standard-compatible packages are available as well. The packages for .NET Standard don't include 'Windows' in their names. ## Getting Started Resources by Library diff --git a/integration/integration-with-visual-studio.md b/integration/integration-with-visual-studio.md index 9ae2047e..b4fcdf83 100644 --- a/integration/integration-with-visual-studio.md +++ b/integration/integration-with-visual-studio.md @@ -27,13 +27,13 @@ The Telerik Document Processing Configuration wizard allows you to select which ![DPL Configure Wizard Main Page](../images/dpl_configure_wizard.png) -Assemblies are pre-selected based on the component you have launched the wizard through. Following is a list of the assemblies that will be selected for each library. +Packages are pre-selected based on the component you have launched the wizard through. Following is a list of the packages that will be selected for each library. -|Component |Selected assemblies | +|Component |Selected packages | |---------|---------| |RadPdfProcessing |Documents.Core
Documents.Fixed
Zip | |RadSpreadProcessing | Documents.Core
Documents.Fixed
Documents.Spreadsheet
Documents.SpreadSheet.FormatProviders.OpenXml
Documents.SpreadSheet.FormatProviders.Pdf
Zip | |RadSpreadStreamProcessing | Documents.SpreadSheetStreaming
Zip | |RadWordsProcessing | Documents.Core
Documents.Fixed
Documents.Flow
Documents.Flow.FormatProviders.Pdf
Zip | -When you click the **Finish** button, the selected assembly references are added to you project. +When you click the **Finish** button, the selected package references are added to you project. diff --git a/integration/integration-with-vs-code.md b/integration/integration-with-vs-code.md index 36cb230b..b4bdb266 100644 --- a/integration/integration-with-vs-code.md +++ b/integration/integration-with-vs-code.md @@ -47,7 +47,7 @@ After executing one of the options the wizard must appear like this: ![Configure Document Processing Wizard](images/Configure_Document_Processing_Wizard_MAUI.png) -The **Telerik Document Processing Configuration wizard** allows you to select which libraries your project would use. It allows you to use the license and selection of the `.csproj` file, in which you want the installation to be provided. This option is useful in cases when the user has many opened projects in the workspace. If a library you selected has any dependencies, they are automatically checked. In the table below there is a list of the assemblies that will be selected for each library: +The **Telerik Document Processing Configuration wizard** allows you to select which libraries your project would use. It allows you to use the license and selection of the `.csproj` file, in which you want the installation to be provided. This option is useful in cases when the user has many opened projects in the workspace. If a library you selected has any dependencies, they are automatically checked. In the table below there is a list of the packages that will be selected for each library: |Library |Packages | |---------|---------| diff --git a/introduction.md b/introduction.md index 81b3a64e..641ebcab 100644 --- a/introduction.md +++ b/introduction.md @@ -85,9 +85,9 @@ The Telerik Document Processing libraries support the following file formats: ![DPL Ninja](images/dpl-formats.png) -## Available Assemblies +## Required References ->The Telerik Document Processing libraries are available in **.NET Framework**, **{{site.dotnetversions}}** (or newer) for Windows and **.NET Standard** compatible versions. You can download the assemblies of these libraries from the following products: +>The Telerik Document Processing libraries are available in **.NET Framework**, **{{site.dotnetversions}}** (or newer) for Windows and **.NET Standard** compatible versions. You can download the references for these libraries from the following products: > |.NET Framework Products|{{site.dotnetversions}} *for Windows*|.NET Standard| @@ -98,7 +98,7 @@ The Telerik Document Processing libraries support the following file formats: |[UI for WinForms](https://www.telerik.com/products/winforms.aspx)|[UI for WinForms](https://www.telerik.com/products/winforms.aspx)|[UI for WinUI](https://www.telerik.com/winui)| |[UI for Silverlight (discontinued)](https://www.telerik.com/products/silverlight/overview.aspx)||[UI for .NET MAUI](https://www.telerik.com/maui-ui)| -All versions are available as [NuGet packages]({%slug installation-nuget-packages%}). The assemblies/packages for .NET Standard do not contain the word *Windows* in their name. Learn [What Versions of Document Processing Libraries are Distributed with the Telerik Products]({%slug distribute-telerik-document-processing-libraries-net-versions%}) +All versions are available as [NuGet packages]({%slug installation-nuget-packages%}). The packages for .NET Standard do not contain the word *Windows* in their name. Learn [What Versions of Document Processing Libraries are Distributed with the Telerik Products]({%slug distribute-telerik-document-processing-libraries-net-versions%}) ## Getting Started @@ -108,7 +108,7 @@ To start using the libraries right away, see the [First Steps]({%slug getting-st Telerik Document Processing is a commercial library. You are welcome to explore its full functionality and get technical support from the team when you register for a free 30-day trial. To use it commercially, you need to [purchase a license](https://www.telerik.com/purchase.aspx). Feel free to review the Telerik [License Agreement](https://www.telerik.com/purchase/license-agreement/devcraft-complete-dlw-s) to get acquainted with the full terms of use. ->Telerik Document Processing is available as part of **DevCraft**, **UI for ASP.NET Core**, **UI for ASP.NET MVC**, **UI for ASP.NET AJAX**, **UI for Blazor**, **UI for .NET MAUI**, **UI for Xamarin**, **UI for WPF**, **UI for WinForms**, **UI for Silverlight***. The libraries are subject to the license under which you've obtained the assemblies. ( * [Learn about Telerik UI for Silverlight discontinuation, end user options and alternatives.](https://www.telerik.com/products/silverlight/overview.aspx)). +>Telerik Document Processing is available as part of **DevCraft**, **UI for ASP.NET Core**, **UI for ASP.NET MVC**, **UI for ASP.NET AJAX**, **UI for Blazor**, **UI for .NET MAUI**, **UI for Xamarin**, **UI for WPF**, **UI for WinForms**, **UI for Silverlight***. The libraries are subject to the license under which you've obtained the packages. ( * [Learn about Telerik UI for Silverlight discontinuation, end user options and alternatives.](https://www.telerik.com/products/silverlight/overview.aspx)). ## Support Options diff --git a/knowledge-base/fit-multiline-text-stamp-annotation-radpdfprocessing.md b/knowledge-base/fit-multiline-text-stamp-annotation-radpdfprocessing.md new file mode 100644 index 00000000..c586652e --- /dev/null +++ b/knowledge-base/fit-multiline-text-stamp-annotation-radpdfprocessing.md @@ -0,0 +1,148 @@ +--- +title: Fit Multiline Text Inside a Custom Stamp Annotation in PDFs with RadPdfProcessing +description: Learn how to measure and fit multiline text inside the fixed rectangle of a custom StampAnnotation by calculating the optimal font size. +type: how-to +page_title: Fit Multiline Text Inside a Custom Stamp Annotation in PDFs with RadPdfProcessing +meta_title: Fit Multiline Text Inside a Custom Stamp Annotation in PDFs with RadPdfProcessing +slug: fit-multiline-text-stamp-annotation-radpdfprocessing +tags: pdf, stamp, annotation, font, size, multiline, measure, text, appearance, autosize, fit, aouto, fixed, editor, auto +res_type: kb +--- + +## Environment + +| Version | Product | Author | +| ---- | ---- | ---- | +| 2025.3.806 | RadPdfProcessing | [Yoan Karamanov](https://www.telerik.com/blogs/author/yoan-karamanov) | + +## Description + +This article shows how to render multiple lines of text so they fit inside the fixed rectangle of a custom [StampAnnotation]({%slug radpdfprocessing-model-annotations-stamp%}) by dynamically determining the maximum usable font size. Unlike predefined stamp names, a custom stamp appearance requires supplying a visual form (a **FormSource**) that draws both background styling and text content. + +>important When using a custom name (not one of the predefined **StampAnnotationPredefinedNames**), it is recommended to prefix the name with **#** (e.g., **#CustomStamp**) so external PDF viewers (like Adobe Acrobat) don't overwrite the custom appearance if the stamp is moved. + +## Solution + +To fit multiline text inside a stamp rectangle: + +1. Create a **StampAnnotation** with a fixed **Rect** on a page. +2. Build a custom **FormSource** that will serve as the annotation's appearance (**Content.NormalContentSource**). +3. Measure each line by incrementally increasing the font size in a **Block** until the rendered dimensions exceed the available width/height and keep the maximum size that fits. +4. Use the minimum of all line-specific maximum sizes so every line fits within the rectangle. +5. Draw a decorative background (border, fill, dash pattern) and then render each line vertically stacked. +6. Export the document to PDF. + +![Stamp With Auto-Fitted Multiline Text](images/stamp-auto-fitted-multiline-text.png) + +Below is a complete example demonstrating these steps. + +#### [C#] Measure and Fit Multiline Text in a StampAnnotation + +```csharp +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using Telerik.Documents.Primitives; +using Telerik.Windows.Documents.Fixed.FormatProviders.Pdf; +using Telerik.Windows.Documents.Fixed.Model; +using Telerik.Windows.Documents.Fixed.Model.Annotations; +using Telerik.Windows.Documents.Fixed.Model.ColorSpaces; +using Telerik.Windows.Documents.Fixed.Model.Editing; +using Telerik.Windows.Documents.Fixed.Model.Resources; + +List lines = new List() { "1st line", "second line", "3rd line",}; +RadFixedDocument document = CreateTextAnnotation(lines); + +string exportFileName = "StampAnnotation.pdf"; +File.Delete(exportFileName); +using (Stream output = File.OpenWrite(exportFileName)) +{ + PdfFormatProvider provider = new PdfFormatProvider(); + provider.Export(document, output, TimeSpan.FromSeconds(20)); +} + +Process.Start(new ProcessStartInfo +{ + FileName = exportFileName, + UseShellExecute = true +}); + +RadFixedDocument CreateTextAnnotation(List lines) +{ + RadFixedDocument radFixedDocument = new RadFixedDocument(); + RadFixedPage page = radFixedDocument.Pages.AddPage(); + + StampAnnotation stampAnnotation = page.Annotations.AddStamp(new Rect(100, 100, 100, 100)); + stampAnnotation.Name = "#Test"; + + FormSource annotationForm = CreateContentFormWithText(stampAnnotation.Rect, lines); + stampAnnotation.Content.NormalContentSource = annotationForm; + + return radFixedDocument; +} + +static FormSource CreateContentFormWithText(Rect stampRectangle, List lines) +{ + FormSource textForm = new FormSource(); + textForm.Size = new Size(stampRectangle.Width, stampRectangle.Height); + + FixedContentEditor textFormEditor = new FixedContentEditor(textForm); + + using (textFormEditor.SaveProperties()) + { + textFormEditor.GraphicProperties.IsFilled = true; + textFormEditor.GraphicProperties.IsStroked = true; + textFormEditor.GraphicProperties.StrokeThickness = 2; + textFormEditor.GraphicProperties.StrokeColor = new RgbColor(92, 229, 0); + textFormEditor.GraphicProperties.FillColor = new RgbColor(213, 222, 226); + textFormEditor.GraphicProperties.StrokeDashArray = new double[] { 17, 4 }; + textFormEditor.DrawRectangle(new Rect(textFormEditor.Position.Matrix.OffsetX, textFormEditor.Position.Matrix.OffsetY, stampRectangle.Width, stampRectangle.Height)); + } + + double calculatedFontSize = MeasureFontSize(textForm, textFormEditor, lines); + textFormEditor.TextProperties.FontSize = calculatedFontSize; + + double offset = 0; + foreach (string line in lines) + { + textFormEditor.Position.Translate(0, offset); + textFormEditor.DrawText(line); + offset += calculatedFontSize; + } + + return textForm; +} + +static double MeasureFontSize(FormSource textForm, FixedContentEditor formEditor, List lines) +{ + List fontSizes = new List(); + + foreach (string line in lines) + { + double fontSize = 0; + Size textSize = Size.Empty; + Block block = new Block(); + block.TextProperties.Font = formEditor.TextProperties.Font; + while (textSize.Width < textForm.Size.Width && textSize.Height < textForm.Size.Height) + { + block.TextProperties.FontSize = ++fontSize; + block.InsertText(line); + textSize = block.Measure(); + block.Clear(); + } + + fontSizes.Add(fontSize); + } + + return fontSizes.Min(); +} +``` + +## See Also + +- [Stamp Annotation]({%slug radpdfprocessing-model-annotations-stamp%}) +- [FixedContentEditor]({%slug radpdfprocessing-editing-fixedcontenteditor%}) +- [FormSource Overview]({%slug radpdfprocessing-model-formsource-overview%}) +- [PdfProcessing Overview]({%slug radpdfprocessing-overview%}) diff --git a/knowledge-base/images/stamp-auto-fitted-multiline-text.png b/knowledge-base/images/stamp-auto-fitted-multiline-text.png new file mode 100644 index 00000000..84392e9f Binary files /dev/null and b/knowledge-base/images/stamp-auto-fitted-multiline-text.png differ diff --git a/knowledge-base/runtime-licensing-diagnostics.md b/knowledge-base/runtime-licensing-diagnostics.md new file mode 100644 index 00000000..f90711ed --- /dev/null +++ b/knowledge-base/runtime-licensing-diagnostics.md @@ -0,0 +1,77 @@ +--- +title: Runtime Licensing Diagnostics +description: Step-by-step walkthrough of using Telerik.Licensing runtime diagnostics to investigate unexpected watermarks across web, plugin, and desktop scenarios. +type: how-to +page_title: Runtime Licensing Diagnostics +meta_title: Runtime Licensing Diagnostics +slug: runtime-licensing-diagnostics +tags: licensing, diagnostics, runtime, watermark, plugins, webforms, aspnet, blazor, wpf, winforms, license, key, register +ticketid: 1697496 +res_type: kb +--- + +## Environment + +| Version | Product(s) | Author | +| ---- | ---- | ---- | +| 2025.3.806 | Document Processing & Telerik UI |[Yoan Karamanov](https://www.telerik.com/blogs/author/yoan-karamanov)| + +## Description + +In certain environments an application may still show a trial watermark (or trial sheet) **at runtime** even though everything looked correct at **build time**: + +* Valid **telerik-license.txt** file is present. +* Build logs indicate Telerik products detected (class library and executable). +* No licensing build errors are reported. + +Yet the rendered UI (document, control, page) contains a watermark. + +These issues surface mainly in two categories: + +1. **Web products (ASP.NET AJAX, MVC, Core, Blazor)** – Incorrect script load order or duplicate script imports where one import overrides a previously applied license. +2. **.NET applications with extensibility / plugins (WPF, WinForms, class libraries, host wrappers)** - The entry assembly at runtime differs (e.g. a host like **SentinelDotNetFx.dll**), changing the licensing evaluation path. + +Runtime diagnostics in **Telerik.Licensing** help correlate what the licensing engine sees (entry assembly, loaded assemblies, product metadata, license evidences) with the final **IsLicenseValid** result. + +## Solution + +### 1. Enable Diagnostics Early +Call **Telerik.Licensing.TelerikLicensing.EnableDiagnostics();** **as early as possible**, before any Telerik UI controls or Document Processing code is first reached/loaded. + +### 2. Plugin / Non-Standard Entry Scenarios +If the code runs as a plugin or a dynamically loaded context (no traditional entry assembly, or an unexpected wrapper assembly), call **TelerikLicensing.Register()** **after** enabling diagnostics to provision runtime script keys. + +### 3. Execute +Trigger the Telerik code so the licensing pipeline executes. + +### 4. Collect the Log +Read the accumulated diagnostics text from **Telerik.Licensing.TelerikLicensing.Diagnostics** and persist it (file, console). The log grows for the life of the process (restart to clear). + +### 5. Analyze Key Sections +Look for: +- Entry assembly (**Assembly.GetEntryAssembly()**) +- Product metadata extraction (**ProductMetadataForAssembly ...**) +- License evidences (subscription / perpetual tokens) +- Final resolution line (**Resolved: IsLicenseValid: ...**) + +### 6. Disable When Done +Diagnostics add overhead and should not remain enabled indefinitely in production. + +### Performance & Operational Notes +- Diagnostics add measurable overhead. Use only during investigation. +- Log size grows monotonically until process restart. +- Capture the log after reproducing the watermark; then disable diagnostics. + +## See Also + +* [License Activation Errors and Warnings]({%slug activation-errors-and-warnings%}) +* [Adding the License Key to CI Services]({%slug adding-license-key-ci-cd-services%}) +* [License Key FAQ]({%slug frequently-asked-questions%}) +* [License Agreement]({%slug license-agreement%}) +* [Redistributing Telerik Document Processing]({%slug installation-deploying-telerik-document-processing%}) +* [Unable to find package Telerik.Licensing]({%slug dpl-package-update-failure-license%}) +* [Handling License Key File Name and Environment Variable Name Changes in the 2025 Q1 Release]({%slug handling-license-file-name-changes%}) +* [Telerik.Licensing NuGet package is not available on the Telerik NuGet feed]({%slug dpl-telerik-licensing-nuget-feed%}) +* [Diagnostic Options for Telerik Licensing]({%slug telerik-trial-version-message-diagnostic-options%}) +* [Resolving License Validation Issues in Telerik Document Processing Libraries]({%slug license-not-recognized-telerik-document-processing-libraries%}) +* [Telerik License Approaches](https://github.com/LanceMcCarthy/DevOpsExamples?tab=readme-ov-file#telerik-license-approaches) diff --git a/knowledge-base/troubleshooting-windowsbase-error.md b/knowledge-base/troubleshooting-windowsbase-error.md index ad1db8c0..d2aad0c3 100644 --- a/knowledge-base/troubleshooting-windowsbase-error.md +++ b/knowledge-base/troubleshooting-windowsbase-error.md @@ -31,7 +31,7 @@ res_type: kb ## Description -This exception is thrown when the binaries for .NET Framework are used in a project targeting .NET Core. +This exception is thrown when the packages for .NET Framework are used in a project targeting .NET Core. ## Error Message diff --git a/libraries/radpdfprocessing/concepts/cmaps.md b/libraries/radpdfprocessing/concepts/cmaps.md index 443c928b..6216cf61 100644 --- a/libraries/radpdfprocessing/concepts/cmaps.md +++ b/libraries/radpdfprocessing/concepts/cmaps.md @@ -19,9 +19,9 @@ PdfProcessing enables you to use a default implementation for the known predefin ## Default Implementation -The **Telerik[.Windows].Documents.CMapUtils.dll** assembly provides a default implementation for obtaining the data of a predefined CMap table by a given name. The class that contains implementations for all the CMap tables defined by the PDF Format Specification is called **PredefinedCMapsProvider**. In order to register an instance of the default implementation, the **FixedExtensibilityManager** class should be used. +The **Telerik[.Windows].Documents.CMapUtils** package provides a default implementation for obtaining the data of a predefined CMap table by a given name. The class that contains implementations for all the CMap tables defined by the PDF Format Specification is called **PredefinedCMapsProvider**. In order to register an instance of the default implementation, the **FixedExtensibilityManager** class should be used. ->To use this functionality, you must add a reference to the **Telerik[.Windows].Documents.CMapUtils.dll**. +>To use this functionality, you must add a reference to the **Telerik[.Windows].Documents.CMapUtils package**. #### [C#] Example 1: Register default CMapsProvider diff --git a/libraries/radpdfprocessing/cross-platform/images.md b/libraries/radpdfprocessing/cross-platform/images.md index 65425c53..6df3da05 100644 --- a/libraries/radpdfprocessing/cross-platform/images.md +++ b/libraries/radpdfprocessing/cross-platform/images.md @@ -22,11 +22,11 @@ To reduce file size, PDF supports only a number of compression filters like Jpeg ## Requirements -To export images different than Jpeg and Jpeg2000 or ImageQuality different than High you will need to add references to the following .Net Standard assemblies: +To export images different than Jpeg and Jpeg2000 or ImageQuality different than High you will need to add references to the following .Net Standard packages: -|Assembly/ NuGet package|Description| +|NuGet package|Description| |----|----| -|**Telerik.Documents.ImageUtils**|This assembly is currently not available in UI for Xamarin.| +|**Telerik.Documents.ImageUtils**|This package is currently not available in UI for Xamarin.| |**SkiaSharp.NativeAssets.*** (version {{site.skiasharpversion}})|May differ according to the used platform. For **Linux** use SkiaSharp.NativeAssets.Linux.NoDependencies| |**SkiaSharp.Views.Blazor** and **wasm-tools**|For Blazor Web Assembly.| @@ -64,7 +64,7 @@ The `JpegImageConverter` property uses an implementation of the `JpegImageConver ### Default Implementation for JpegImageConverter -The **Telerik.Documents.ImageUtils** assembly provides a default implementation of the JpegImageConverter class that could be used when exporting a document. The default implementation depends on the [SkiaSharp](https://www.nuget.org/packages/SkiaSharp/) library to convert images to Jpeg format. +The **Telerik.Documents.ImageUtils** package provides a default implementation of the JpegImageConverter class that could be used when exporting a document. The default implementation depends on the [SkiaSharp](https://www.nuget.org/packages/SkiaSharp/) library to convert images to Jpeg format. >note View Implementation [Requirements](#requirements). diff --git a/libraries/radpdfprocessing/cross-platform/overview.md b/libraries/radpdfprocessing/cross-platform/overview.md index 7d613daf..ed11529d 100644 --- a/libraries/radpdfprocessing/cross-platform/overview.md +++ b/libraries/radpdfprocessing/cross-platform/overview.md @@ -11,25 +11,25 @@ position: 0 # Cross-Platform Support -The [Telerik Document Processing]({%slug introduction%}) libraries are compatible across different .NET implementations, including .NET Standard, {{site.dotnetversions}} (Target OS: *None*), and newer versions. There is a set of binaries built against the .NET Standard version which you can reference in an application. +The [Telerik Document Processing]({%slug introduction%}) libraries are compatible across different .NET implementations, including .NET Standard, {{site.dotnetversions}} (Target OS: *None*), and newer versions. There is a set of packages built against the .NET Standard version which you can reference in an application. ->note The binaries compatible with .NET Standard, {{site.dotnetversions}} (Target OS: *None*) are distributed with the packages targeting .NET Standard. You can obtain the assemblies through the **UI for ASP.NET Core**, **UI for Blazor**, **UI for Xamarin**, and **UI for WinUI** suites. There are **NuGet** packages as well that you can access if you have a license for one of the above mentioned suites. +>note The binaries compatible with .NET Standard, {{site.dotnetversions}} (Target OS: *None*) are distributed with the packages targeting .NET Standard. You can obtain the packages through the **UI for ASP.NET Core**, **UI for Blazor**, **UI for Xamarin**, and **UI for WinUI** suites. There are **NuGet** packages as well that you can access if you have a license for one of the above mentioned suites. -## Assembly References +## Package References -In order to use the model of the **RadPdfProcessing** library in your cross-platform project, you need to add references to the following **.Net Standard** assemblies/ NuGet packages: +In order to use the model of the **RadPdfProcessing** library in your cross-platform project, you need to add references to the following **.Net Standard** NuGet packages: -* **Telerik.Documents.Core.dll** -* **Telerik.Documents.Fixed.dll** +* **Telerik.Documents.Core** +* **Telerik.Documents.Fixed** >note As of [Q2 2025](https://www.telerik.com/support/whats-new/telerik-document-processing/release-history/progress-telerik-document-processing-2025-2-520-changelog) the Zip Library will no longer be used as an internal dependency in the rest of the Document Processing Libraries - PdfProcessing, WordsProcessing, SpreadProcessing, SpreadStreamProcessing. It will be replaced by the System.IO.Compression. We will continue to ship the Telerik Zip Library as a standalone library so clients can still use it separately. -To export images different than Jpeg and Jpeg2000 or ImageQuality different than High you will need to add references to the following **.Net Standard** assembly: +To export images different than Jpeg and Jpeg2000 or ImageQuality different than High you will need to add references to the following **.Net Standard** package: -* **Telerik.Documents.ImageUtils.dll** -
_This assembly is not available in UI for Xamarin._ +* **Telerik.Documents.ImageUtils** +
_This package is not available in UI for Xamarin._ -> Note that for .NET Framework, {{site.dotnetversions}} with Windows Compatibility Pack projects, the references contain "Windows" in their names (e.g. **Telerik.Windows.Documents.Core.dll**) +> Note that for .NET Framework, {{site.dotnetversions}} with Windows Compatibility Pack projects, the references contain "Windows" in their names (e.g. **Telerik.Windows.Documents.Core**) ## Fonts and Images diff --git a/libraries/radpdfprocessing/features/digital-signature/external-digital-signing.md b/libraries/radpdfprocessing/features/digital-signature/external-digital-signing.md new file mode 100644 index 00000000..d2f2a8c2 --- /dev/null +++ b/libraries/radpdfprocessing/features/digital-signature/external-digital-signing.md @@ -0,0 +1,54 @@ +--- +title: Externally Sign a PDF Document +description: Learn how to sign externally a PDF document using PdfProcessing. +page_title: Externally Sign a PDF Document +slug: external-digital-signing +tags: pdf, sign, document, external, hash, telerik, processing +published: True +position: 3 +--- + + +# Externally Sign a PDF Document + +|Minimum Version|Q4 2025| +|----|----| + +RadPdfProcessing provides support for creating a **Signature** instance configured for external signing. The external signing handler performs the actual signing operation. The private key is managed outside the PDF library (e.g., HSMs, smart cards, remote signing services) and it allows integration without exposing private key material to the library. + +>note [PdfProcessing Add Digital Signature External Demo](https://demos.telerik.com/document-processing/pdfprocessing/external_digitally_sign_document) + +## Using IExternalSigner + +When you digitally sign a PDF, the signature data is typically embedded in the PDF file using **CMS** (Cryptographic Message Syntax). It is a standard used to digitally sign, encrypt, and authenticate data. CMS encapsulates the signature and it contains the signed hash of the document, the signer's certificate, and optionally a timestamp and other metadata. + +The supported digest (hash) algorithms for producing CMS (PKCS #7) PDF signature values are **Sha256**, **Sha384** and **Sha512** specified by the **DigestAlgorithm** property of the [SignatureSettings]({%slug radpdfprocessing-features-digital-signature-getting-started%}#signature-settings). + +The following example demonstrates how to implement the **IExternalSigner** interface producing an external CMS (PKCS #7) detached signature over a PDF byte range: + +#### [C#] CMS External Signer + + + +Then, initialize a Signature instance using the CMS External Signer: + + + +## Using ExternalSignerBase + +The PdfProcessing library allows creating a base helper implementation for building external (client supplied) digital signatures. + +The following example implements external RSA-based digital signing for PDF documents deriving the ExternalSignerBase class. +**RSA** (Rivest–Shamir–Adleman) algorithm is a widely used asymmetric cryptographic algorithm. RSA generates a **private key** and a **public key** where the private key is used to sign the PDF and the public key is used to verify the signature. During the signing process a hash (digest) of the PDF content is created (e.g., using SHA-512). This hash is then encrypted with the RSA private key to create the digital signature. The signature is embedded in the PDF file, typically in a signature field. + +#### [C#] RSA External Signer + + + +Now, create a Signature that uses the above implementation: + + + +## See Also + + * [Using a TimeStamp Server]({%slug pdf-sign-timestamp-server%}) diff --git a/libraries/radpdfprocessing/features/digital-signature/getting-started.md b/libraries/radpdfprocessing/features/digital-signature/getting-started.md index 97bf322e..eac22f41 100644 --- a/libraries/radpdfprocessing/features/digital-signature/getting-started.md +++ b/libraries/radpdfprocessing/features/digital-signature/getting-started.md @@ -7,7 +7,7 @@ tags: digital, signature, getting, started position: 1 --- -# Getting Started +# Getting Started with Digital Signature RadPdfProcessing allows adding a digital signature while editing a created from scratch document (or importing an existing one). @@ -39,6 +39,14 @@ The following example shows a full code snippet for a simple signing of a newly >important When signing an existing document (after the import) we must be sure the AcroForm's ViewersShouldRecalculateWidgetAppearances property is set to false, otherwise, the exported and signed PDF document could not be shown as a signed. +## Signature Settings + +The **SignatureSettings** class (*introduced in Q4 2025*) provides configurable options for producing digital signatures in PDF documents. It allows developers to specify the digest (hash) algorithm used during certificate-based signing. The SignatureSettings are accessed by the Signature.**Settings** public property and it offers the following settings to be specified: + +* **DigestAlgorithm**: Gets or sets the digest (hash) algorithm used when producing the CMS (PKCS#7) signature. The default is *DigestAlgorithmType.Sha256* to provide a modern, interoperable baseline (SHA-256). The supported digest (hash) algorithms for producing CMS (PKCS#7) PDF signature values are:
  • **Sha256**: SHA-256 (256-bit). Recommended default: strong, widely supported, and efficient.
  • **Sha384**: SHA-384 (384-bit). Use when organizational policy or key size (e.g. P-384) mandates higher strength.
  • **Sha512**: SHA-512 (512-bit). Use for highest SHA-2 family strength or long‑term archival policies; may have slightly higher computational cost.
+ +* **TimeStampServer**: Gets or sets the [timestamp server]({%slug pdf-sign-timestamp-server%}) settings used to obtain a trusted timestamp for the signature. + ## Signature Encodings RadPdfProcessing enables you to sign and validate signature fields using standard signature encodings: diff --git a/libraries/radpdfprocessing/features/digital-signature/images/radpdfprocessing-features-digital-signature-timestamp.png b/libraries/radpdfprocessing/features/digital-signature/images/radpdfprocessing-features-digital-signature-timestamp.png new file mode 100644 index 00000000..52782e2a Binary files /dev/null and b/libraries/radpdfprocessing/features/digital-signature/images/radpdfprocessing-features-digital-signature-timestamp.png differ diff --git a/libraries/radpdfprocessing/features/digital-signature/images/radpdfprocessing-features-digital-signature.png b/libraries/radpdfprocessing/features/digital-signature/images/radpdfprocessing-features-digital-signature.png index f4b247a2..3bb73004 100644 Binary files a/libraries/radpdfprocessing/features/digital-signature/images/radpdfprocessing-features-digital-signature.png and b/libraries/radpdfprocessing/features/digital-signature/images/radpdfprocessing-features-digital-signature.png differ diff --git a/libraries/radpdfprocessing/features/digital-signature/limitations.md b/libraries/radpdfprocessing/features/digital-signature/limitations.md index 4033d8da..9924f60e 100644 --- a/libraries/radpdfprocessing/features/digital-signature/limitations.md +++ b/libraries/radpdfprocessing/features/digital-signature/limitations.md @@ -4,7 +4,7 @@ description: Learn what are the limitations related to the usage of digital sign page_title: Limitations slug: radpdfprocessing-features-signature-validation tags: digital, signature, limitations -position: 3 +position: 5 --- # Limitations diff --git a/libraries/radpdfprocessing/features/digital-signature/pdf-sign-timestamp-server.md b/libraries/radpdfprocessing/features/digital-signature/pdf-sign-timestamp-server.md new file mode 100644 index 00000000..7ce790fc --- /dev/null +++ b/libraries/radpdfprocessing/features/digital-signature/pdf-sign-timestamp-server.md @@ -0,0 +1,37 @@ +--- +title: Using a TimeStamp Server +description: Learn how to sign a PDF document using a TimeStamp server. +page_title: Signing a PDF using a TimeStamp Server +slug: pdf-sign-timestamp-server +tags: pdf, sign, document, timestamp, time, stamp, server, telerik, processing +published: True +position: 2 +--- + + +# Signing a PDF using a TimeStamp Server + +|Minimum Version|Q4 2025| +|----|----| + +The **TimeStampServer** class encapsulates the necessary details to communicate with an external Timestamp Authority (TSA), including the endpoint URL, optional authentication credentials and timeout for requests. The TimeStampServer can be set via the [SignatureSettings]({%slug radpdfprocessing-features-digital-signature-getting-started%}#signature-settings). + +>note [PdfProcessing Add Digital Signature External Demo](https://demos.telerik.com/document-processing/pdfprocessing/external_digitally_sign_document) + + + +The produced result document indicates a valid embedded timestamp: + +![Signed PDF with a TimeStamp Server ><](images/radpdfprocessing-features-digital-signature-timestamp.png) + +## Creating TimeStampServer with Credentials + +The following example shows how to initialize a new instance of the TimeStampServer class with the specified URL, credentials, and timeout: + + + +## See Also + + * [Digital Signature]({%slug radpdfprocessing-features-digital-signature%}) + * [Signature Field]({%slug radpdfprocessing-model-interactive-forms-form-fields-signaturefield%}) + * [Multiple Digital Signatures Demo](https://demos.telerik.com/document-processing/pdfprocessing/multiple_digital_signatures) diff --git a/libraries/radpdfprocessing/features/digital-signature/pdfstreamsigner.md b/libraries/radpdfprocessing/features/digital-signature/pdfstreamsigner.md index 01565325..0144ea89 100644 --- a/libraries/radpdfprocessing/features/digital-signature/pdfstreamsigner.md +++ b/libraries/radpdfprocessing/features/digital-signature/pdfstreamsigner.md @@ -5,7 +5,7 @@ page_title: Multiple Digital Signatures slug: radpdfprocessing-features-digital-signature-pdfstreamsigner tags: pdfprocessing, document, processing, pdf, digital, signature, stream, writer, multiple, sign published: True -position: 1 +position: 3 --- # Multiple Digital Signing with PdfStreamSigner diff --git a/libraries/radpdfprocessing/features/digital-signature/signature-validation.md b/libraries/radpdfprocessing/features/digital-signature/signature-validation.md index 85196053..31318f29 100644 --- a/libraries/radpdfprocessing/features/digital-signature/signature-validation.md +++ b/libraries/radpdfprocessing/features/digital-signature/signature-validation.md @@ -4,7 +4,7 @@ description: The digital signature feature enables you to sign and validate a PD page_title: Signature Validation slug: radpdfprocessing-features-signature-validation tags: digital, signature, validate -position: 2 +position: 4 --- ## Validating a Signature diff --git a/libraries/radpdfprocessing/features/embedded-file-streams/embedded-file-streams.md b/libraries/radpdfprocessing/features/embedded-file-streams/embedded-file-streams.md index 8f6f470a..5bbe2ef3 100644 --- a/libraries/radpdfprocessing/features/embedded-file-streams/embedded-file-streams.md +++ b/libraries/radpdfprocessing/features/embedded-file-streams/embedded-file-streams.md @@ -31,19 +31,7 @@ RadFixedDocument stores the integrated files in an **EmbeddedFilesCollection** a ### Creating an Embedded Electronic (ZUGFeRD) Invoice -RadPdfProcessing provides support for embedding of [ZUGFeRD](https://de.wikipedia.org/wiki/ZUGFeRD) (acronym for Zentraler User Guide des Forums elektronische Rechnung Deutschland) invoices. - -#### **[C#] Add ZUGFeRD invoice** - - - ->note Only a single XML invoice attachment is allowed according to ZUGFeRD standard. - ->important The PDF/A standard requires all fonts used in a document to be embedded. Prior to **Q3 2025**, the [14 standard fonts]({%slug radpdfprocessing-concepts-fonts%}#standard-fonts) were not embedded in the file, which caused the document to be non-compliant. As of **Q3 2025**, these standard fonts are automatically embedded when PDF/A compliance is enabled. More information about font embedding is available in the [Fonts]({%slug radpdfprocessing-concepts-fonts%}) article. - -#### **[C#] Remove ZUGFeRD invoice** - - +RadPdfProcessing provides support for embedding [ZUGFeRD invoices]({%slug radpdfprocessing-embedded-file-streams-zugferd-invoices%}). ### Using the MergedEmbeddedFileNameResolving event diff --git a/libraries/radpdfprocessing/features/embedded-file-streams/zugferd-invoices.md b/libraries/radpdfprocessing/features/embedded-file-streams/zugferd-invoices.md new file mode 100644 index 00000000..bfcb7bbf --- /dev/null +++ b/libraries/radpdfprocessing/features/embedded-file-streams/zugferd-invoices.md @@ -0,0 +1,47 @@ +--- +title: ZUGFeRD invoices +description: Learn how to embed a ZUGFeRD invoice into a PDF document utilizing the Telerik PdfProcessing library. +page_title: ZUGFeRD invoices +slug: radpdfprocessing-embedded-file-streams-zugferd-invoices +tags: pdf, file, stream, embedded, zugferd, invoice +position: 1 +--- + +# ZUGFeRD invoices + +|Minimum Version|Q4 2025| +|----|----| + +[ZUGFeRD](https://de.wikipedia.org/wiki/ZUGFeRD) (acronym for Zentraler User Guide des Forums elektronische Rechnung Deutschland) is a specification for the electronic invoice format of the same name. **RadPdfProcessing** provides support for embedding of ZUGFeRD invoices. + +### Creating an Embedded Electronic (ZUGFeRD) Invoice + +#### **[C#] Add ZUGFeRD invoice** + + + +>note Only a single XML invoice attachment is allowed according to the ZUGFeRD standard. + +>important To comply with the PDF/A-3B standard all the fonts in the documents should be embedded, so please avoid using [Standard Fonts]({%slug radpdfprocessing-concepts-fonts%}) because they are not being embedded in the document. In **.NET Standard/.NET (Target OS: None)** environments, fonts beyond the [14 standard ones]({%slug radpdfprocessing-concepts-fonts%}#standard-fonts) require a [FontsProvider implementation]({%slug pdfprocessing-implement-fontsprovider%}) to be resolved correctly. + +#### **[C#] Remove ZUGFeRD invoice** + + + +## ZugferdConformanceLevel + +As of **Q4 2025** RadPdfProcessing provides support for specifying the ZUGFeRD (Factur-X) **conformance level** to use when exporting PDF invoices. Higher levels generally include all requirements of the lower levels and add more structured data to support automated processing and validation scenarios. + +RadPdfProcessing offers the functionality to specify the **ZugferdConformanceLevel** when embedding the invoice. The available options are: + +* **Minimum**: The minimal profile providing only the essential data needed for a compliant e-invoice. Suitable for simple use cases with limited automation. +* **Basic**: The basic profile providing core structured data for improved interoperability and basic automated processing between trading partners. This is the default value. +* **Comfort**: The comfort profile with richer structured content, typically aligned with common business requirements to enable advanced automation. +* **Extended**: The most comprehensive profile including extended data elements to cover advanced or industry-specific scenarios beyond the comfort profile. + + + +## See Also + +* [Embedded File Streams]({%slug radpdfprocessing-embedded-file-streams-overview%}) + diff --git a/libraries/radpdfprocessing/features/gen-ai-powered-document-insights/complete-context-question-processor.md b/libraries/radpdfprocessing/features/gen-ai-powered-document-insights/complete-context-question-processor.md index da475724..8b7589f9 100644 --- a/libraries/radpdfprocessing/features/gen-ai-powered-document-insights/complete-context-question-processor.md +++ b/libraries/radpdfprocessing/features/gen-ai-powered-document-insights/complete-context-question-processor.md @@ -39,19 +39,18 @@ However, if you're working with larger documents or want to optimize token usage |Method|Description| |---|---| -|**public Task AnswerQuestion(ISimpleTextDocument document, string question)**|Answers a question using the provided document. Parameters: **document** - The document containing the text to process, **question** - The question to answer. Returns a task that represents the asynchronous operation. The task result contains the answer to the question.| +|**public Task AnswerQuestion(SimpleTextDocument document, string question)**|Answers a question using the provided document. Parameters: **document** - The document containing the text to process, **question** - The question to answer. Returns a task that represents the asynchronous operation. The task result contains the answer to the question.| >caution **Security Warning:** The output produced by this API is generated by a Large Language Model (LLM). As such, the content should be considered untrusted and may include unexpected or unsafe data. It is strongly recommended to properly sanitize or encode all output before displaying it in a user interface, logging, or using it in any security-sensitive context. ## CompleteContextProcessorSettings -The **CompleteContextProcessorSettings** class provides configuration options for the question-answering process. +The **CompleteContextProcessorSettings** class defines configuration options for the question-answering process. The following read-only properties can be set only through the constructor: -### Settings Properties - -* **ModelMaxInputTokenLimit**: Gets or sets the maximum input token limit the model allows. -* **TokenizationEncoding**: Gets or sets the tokenization encoding. -* **ModelId**: Gets or sets the ID of the model. +* **ModelMaxInputTokenLimit**: The maximum input token limit the model allows. +* **ModelId**: The ID of the model. +* **TokenizationEncoding**: The tokenization encoding. +* **ProduceJsonFormattedContext**: Determines whether the context sent to the model is in JSON or plain text format, if json format is applicable (dafault is *false*). ## Usage Example diff --git a/libraries/radpdfprocessing/features/gen-ai-powered-document-insights/custom-partialcontextquestionprocessor.md b/libraries/radpdfprocessing/features/gen-ai-powered-document-insights/custom-partialcontextquestionprocessor.md new file mode 100644 index 00000000..be0c2b28 --- /dev/null +++ b/libraries/radpdfprocessing/features/gen-ai-powered-document-insights/custom-partialcontextquestionprocessor.md @@ -0,0 +1,59 @@ +--- +title: Custom PartialContextQuestionProcessor +description: Customize the PartialContextQuestionProcessor by providing a custom IContextRetriever and interface implementations for fragmentation, embedding, similarity, token counting, and retrieval. +page_title: Custom PartialContextQuestionProcessor +slug: radpdfprocessing-features-gen-ai-powered-document-insights-custom-partialcontextquestionprocessor +tags: ai, context, retriever, embeddings, customization, pdf, fixed, document, partial, processor, question, insights +published: True +position: 6 +--- + +# Custom PartialContextQuestionProcessor + +This article explains how to create a custom **PartialContextQuestionProcessor** configuration by supplying your own **IContextRetriever** and related interface implementations. You can tailor every step: splitting text, producing embeddings, ranking relevance, enforcing token limits, formatting context, and retrieving it efficiently to optimize performance, cost, accuracy, or compliance. + +When you need full control over fragmentation, embedding, similarity ranking, and retrieval, use the constructor that accepts an **IContextRetriever**: + +```csharp +PartialContextQuestionProcessor( + IChatClient chatClient, + IContextRetriever contextRetriever, + IEmbeddingSettings settings, + SimpleTextDocument document) +``` + +This constructor gives you end‑to‑end control over how document text is fragmented, embedded, stored, and later selected (ranked) as context for a question, forming your custom **PartialContextQuestionProcessor** pipeline. + +## Interfaces + +All extension points live in **Telerik.Documents.AI.Core** (as abstractions) with their default implementations in **Telerik.Documents.AI.RAG**: + +| Interface | Responsibility | Used By | +|---|---|---| +| **IContextFragmentsManager** | Splits raw document text into token-bounded semantic fragments (pages, sections, paragraphs) | Fragmentation stage | +| **IEmbedder** | Converts fragments into embeddings/vectors for similarity comparison | Embedding stage | +| **ISimilarityCalculator** | Scores fragment relevance against a question/prompt | Ranking stage | +| **ITokensCounter** | Counts tokens for limits enforcement (fragment size, total context) | Throughout pipeline | +| **IEmbeddingSettings** | Provides token & size limits + formatting hints | Configuration source | +| **IContextRetriever** | Orchestrates loading text, preparing embeddings, and returning best context | Retrieval stage | +| **ISupportJsonEmbeddings** / **ISupportPlainTextEmbeddings** | Control how context is formatted for the model (JSON vs plain text) | Formatting stage | +| **IFragments** / **IFragment** | Data structures representing chunk collections and individual chunks | Shared across stages | + +### Life Cycle +1. **SetContextAsync(text, embeddingTokenSize)** - Text is fragmented (**IContextFragmentsManager**), tokens checked (**ITokensCounter**), embeddings generated (**IEmbedder**), and stored. +2. Question time (**GetContextAsync(question)**) - Similarity scores computed (**ISimilarityCalculator**), top fragments selected within limits, context formatted (plain or JSON). +3. Processor sends formatted context + question via **IChatClient** and returns model answer. + +## Custom Implementation + +The example below constructs a custom **PartialContextQuestionProcessor** by supplying a **DefaultContextRetriever** that mixes user implementations (custom **IContextFragmentsManager** and **IEmbedder**) with default components (**DefaultSimilarityCalculator**, **DefaultTokensCounter**, and the retriever's own orchestration). This hybrid approach lets you optimize the most impactful stages (fragmentation + embedding) without rewriting the entire retrieval pipeline. + +>note **DefaultEmbedder** is only available on **net8-windows** and higher. On other target frameworks you must supply your own **IEmbedder** (as shown below with [CustomOpenAIEmbedder]({%slug radpdfprocessing-features-gen-ai-powered-document-insights-partial-context-question-processor%}#implementing-custom-iembedder)). + + + +## See Also +* [PartialContextQuestionProcessor]({%slug radpdfprocessing-features-gen-ai-powered-document-insights-partial-context-question-processor%}) +* [SummarizationProcessor]({%slug radpdfprocessing-features-gen-ai-powered-document-insights-summarization-processor%}) +* [CompleteContextQuestionProcessor]({%slug radpdfprocessing-features-gen-ai-powered-document-insights-complete-context-question-processor%}) +* [GenAI-powered Document Insights Overview]({%slug radpdfprocessing-features-gen-ai-powered-document-insights-overview%}) diff --git a/libraries/radpdfprocessing/features/gen-ai-powered-document-insights/getting-started.md b/libraries/radpdfprocessing/features/gen-ai-powered-document-insights/getting-started.md index e914bf8b..bd63f7af 100644 --- a/libraries/radpdfprocessing/features/gen-ai-powered-document-insights/getting-started.md +++ b/libraries/radpdfprocessing/features/gen-ai-powered-document-insights/getting-started.md @@ -14,7 +14,7 @@ The following example demonstrates how to use the GenAI-powered Document Insight >note The following code snippet is valid for Azure Open AI 9.3. The specific **IChatClient** initialization may be different according to the specific version. ->important For .NET {{site.mindotnetversion}}+ (Target OS Windows) with [Packages for .NET {{site.mindotnetversion}} and .NET {{site.maxdotnetversion}} for Windows]({%slug available-nuget-packages%}#packages-for-net-framework-and-net-{{site.mindotnetversion}}-and-net-{{site.maxdotnetversion}}-for-windows), an [IEmbeddingsStorage]({%slug radpdfprocessing-features-gen-ai-powered-document-insights-partial-context-question-processor%}#implementing-custom-iembeddingsstorage) implementation is required for the [PartialContextQuestionProcessor]({%slug radpdfprocessing-features-gen-ai-powered-document-insights-partial-context-question-processor%}). +>important For .NET {{site.mindotnetversion}}+ (Target OS Windows) with [Packages for .NET {{site.mindotnetversion}} and .NET {{site.maxdotnetversion}} for Windows]({%slug available-nuget-packages%}#packages-for-net-framework-and-net-{{site.mindotnetversion}}-and-net-{{site.maxdotnetversion}}-for-windows), an [IEmbedder]({%slug radpdfprocessing-features-gen-ai-powered-document-insights-partial-context-question-processor%}#implementing-custom-iembedder) implementation is required for the [PartialContextQuestionProcessor]({%slug radpdfprocessing-features-gen-ai-powered-document-insights-partial-context-question-processor%}). #### __[C#] Example 1: Using GenAI-powered Document Insights__ @@ -29,5 +29,5 @@ When you run this code, the AI will process your document, generate a summary, a * [Prerequisites]({%slug radpdfprocessing-features-gen-ai-powered-document-insights-prerequisites%}) * [SummarizationProcessor]({%slug radpdfprocessing-features-gen-ai-powered-document-insights-summarization-processor%}) * [PartialContextQuestionProcessor]({%slug radpdfprocessing-features-gen-ai-powered-document-insights-partial-context-question-processor%}) -* [Custom IEmbeddingsStorage Implementation]({%slug radpdfprocessing-features-gen-ai-powered-document-insights-partial-context-question-processor%}#implementing-custom-iembeddingsstorage) +* [Custom IEmbedder Implementation]({%slug radpdfprocessing-features-gen-ai-powered-document-insights-partial-context-question-processor%}#implementing-custom-iembedder) * [CompleteContextQuestionProcessor]({%slug radpdfprocessing-features-gen-ai-powered-document-insights-complete-context-question-processor%}) diff --git a/libraries/radpdfprocessing/features/gen-ai-powered-document-insights/partial-context-question-processor.md b/libraries/radpdfprocessing/features/gen-ai-powered-document-insights/partial-context-question-processor.md index 50562d54..412f30ef 100644 --- a/libraries/radpdfprocessing/features/gen-ai-powered-document-insights/partial-context-question-processor.md +++ b/libraries/radpdfprocessing/features/gen-ai-powered-document-insights/partial-context-question-processor.md @@ -36,69 +36,63 @@ The **PartialContextQuestionProcessor** is ideal for the following scenarios: |Constructor|Platform|Description| |---|---|---| -|**PartialContextQuestionProcessor(IChatClient chatClient, int modelMaxInputTokenLimit, ISimpleTextDocument document)**|_Specific*_ |Creates an instance with built-in embeddings storage| -|**PartialContextQuestionProcessor(IChatClient chatClient, IEmbeddingsStorage embeddingsStorage, int modelMaxInputTokenLimit, ISimpleTextDocument document)**|Any|Creates an instance with custom embeddings storage| +|**PartialContextQuestionProcessor(IChatClient chatClient, IEmbeddingSettings settings, SimpleTextDocument document)**|_Specific*_ |Creates an instance with built-in embeddings storage| +|**PartialContextQuestionProcessor(IChatClient chatClient, IEmbedder embedder, IEmbeddingSettings settings, SimpleTextDocument document)**|Any|Creates an instance with custom embedding| +|**PartialContextQuestionProcessor(IChatClient chatClient, IContextRetriever contextRetriever, IEmbeddingSettings settings, SimpleTextDocument document)**|Any|Allows [custom **PartialContextQuestionProcessor** configuration]({%slug radpdfprocessing-features-gen-ai-powered-document-insights-custom-partialcontextquestionprocessor%})| -> _*Specific_ The .NET {{site.mindotnetversion}}+ (Target OS Windows) + [Packages for .NET {{site.mindotnetversion}} and .NET {{site.maxdotnetversion}} for Windows]({%slug available-nuget-packages%}#packages-for-net-framework-and-net-{{site.mindotnetversion}}-and-net-{{site.maxdotnetversion}}-for-windows) constructor uses **DefaultEmbeddingsStorage** internally, while the cross-platform and .NET Framework constructor requires a custom implementation of **IEmbeddingsStorage** as shown in the [Custom IEmbeddingsStorage Setup]({%slug radpdfprocessing-features-gen-ai-powered-document-insights-partial-context-question-processor%}#implementing-custom-iembeddingsstorage) section. +> _*Specific_ The .NET {{site.mindotnetversion}}+ (Target OS Windows) + [Packages for .NET {{site.mindotnetversion}} and .NET {{site.maxdotnetversion}} for Windows]({%slug available-nuget-packages%}#packages-for-net-framework-and-net-{{site.mindotnetversion}}-and-net-{{site.maxdotnetversion}}-for-windows) constructor uses a default **IEmbedder** internally, while the cross-platform and .NET Framework constructor requires a custom implementation of **IEmbedder** as shown in the [Custom IEmbedder Setup]({%slug radpdfprocessing-features-gen-ai-powered-document-insights-partial-context-question-processor%}#implementing-custom-iembedder) section. ### Properties and Methods |Member|Type|Description| |---|---|---| -|**Settings**|Property|Gets the **PartialContextProcessorSettings** for configuring the AI process| +|**Settings**|Property|Gets the *readonly* [IEmbeddingSettings]({%slug radpdfprocessing-features-gen-ai-powered-document-insights-partial-context-question-processor%}#iembeddingsettings) that configure the AI process| |**AnswerQuestion(string question)**|Method|Returns an answer to the question using relevant document context| >caution **Security Warning:** The output produced by this API is generated by a Large Language Model (LLM). As such, the content should be considered untrusted and may include unexpected or unsafe data. It is strongly recommended to properly sanitize or encode all output before displaying it in a user interface, logging, or using it in any security-sensitive context. -### PartialContextProcessorSettings +### IEmbeddingSettings -The settings class provides configuration options for the question-answering process: +The settings are created only through **EmbeddingSettingsFactory**'s **CreateSettingsForTextDocuments** method and can only be passed to the constructor of the processor. They expose configuration options for the question-answering process through the following properties: * **ModelMaxInputTokenLimit**: Maximum input token limit the model allows -* **TokenizationEncoding**: Tokenization encoding used -* **ModelId**: ID of the AI model -* **MaxNumberOfEmbeddingsSent**: Maximum number of context chunks sent (default: 30) -* **EmbeddingTokenSize**: Size in tokens of each context chunk (default: 300) +* **TokenizationEncoding**: Tokenization encoding used (default: **null**) +* **ModelId**: ID of the AI model (default: **null**) +* **MaxNumberOfEmbeddingsSent**: Maximum number of context chunks sent (default: **null**) +* **EmbeddingTokenSize**: Size in tokens of each context chunk (default: **null**) + + ## Usage Examples -#### Example 1: Using PartialContextQuestionProcessor with default embeddings storage. +#### Example 1: Using PartialContextQuestionProcessor with default embedding -This example demonstrates how to use the **PartialContextQuestionProcessor** with the built-in embeddings storage on .NET {{site.mindotnetversion}}+ (Target OS Windows) + [Packages for .NET {{site.mindotnetversion}} and .NET {{site.maxdotnetversion}} for Windows]({%slug available-nuget-packages%}#packages-for-net-framework-and-net-{{site.mindotnetversion}}-and-net-{{site.maxdotnetversion}}-for-windows). For setting up the AI client, see the [AI Provider Setup]({%slug radpdfprocessing-features-gen-ai-powered-document-insights-prerequisites%}#ai-provider-setup) section: +This example demonstrates how to use the **PartialContextQuestionProcessor** with the built-in embedding on .NET {{site.mindotnetversion}}+ (Target OS Windows) + [Packages for .NET {{site.mindotnetversion}} and .NET {{site.maxdotnetversion}} for Windows]({%slug available-nuget-packages%}#packages-for-net-framework-and-net-{{site.mindotnetversion}}-and-net-{{site.maxdotnetversion}}-for-windows). For setting up the AI client, see the [AI Provider Setup]({%slug radpdfprocessing-features-gen-ai-powered-document-insights-prerequisites%}#ai-provider-setup) section: -#### Example 2: Using PartialContextQuestionProcessor with Custom Embeddings (.NET Standard) +#### Example 2: Using PartialContextQuestionProcessor with Custom IEmbedder -This example demonstrates how to use the **PartialContextQuestionProcessor** with a custom embeddings storage implementation as described in the [Custom IEmbeddingsStorage Setup]({%slug radpdfprocessing-features-gen-ai-powered-document-insights-partial-context-question-processor%}#implementing-custom-iembeddingsstorage) section: +This example demonstrates how to use the **PartialContextQuestionProcessor** with a custom IEmbedder implementation as described in the [Implementing Custom IEmbedder]({%slug radpdfprocessing-features-gen-ai-powered-document-insights-partial-context-question-processor%}#implementing-custom-iembedder) section: - + -### Implementing custom IEmbeddingsStorage +### Implementing Custom IEmbedder -A sample custom implementation for the OllamaEmbeddingsStorage is shown in the below code snippet: +A sample custom CustomOpenAIEmbedder implementation for the IEmbedder is shown in the below code snippet: >note Requires installing the following NuGet packages: -> * **LangChain** -> * **LangChain.Databases.Sqlite** -> * **Microsoft.Extensions.AI.Ollama** +> * **Azure.AI.OpenAI** +> * **Microsoft.Extensions.AI.OpenAI** (v9.3) > * **Telerik.Windows.Documents.AIConnector** > * **Telerik.Windows.Documents.Fixed** -1. Install Ollama from [ollama.com](https://ollama.com/). -2. Pull the model you want to use. -3. Start the Ollama server. - - + #### Example 3: Processing Specific Pages -#### Example 4: Optimizing Embeddings Settings - - - ## See Also * [GenAI-powered Document Insights Overview]({%slug radpdfprocessing-features-gen-ai-powered-document-insights-overview%}) diff --git a/libraries/radpdfprocessing/features/gen-ai-powered-document-insights/prerequisites.md b/libraries/radpdfprocessing/features/gen-ai-powered-document-insights/prerequisites.md index 95e733b7..cd9d8877 100644 --- a/libraries/radpdfprocessing/features/gen-ai-powered-document-insights/prerequisites.md +++ b/libraries/radpdfprocessing/features/gen-ai-powered-document-insights/prerequisites.md @@ -29,16 +29,21 @@ This article explains the requirements for using the GenAI-powered Document Insi ## Required References -In addition to the [standard RadPdfProcessing references]({%slug radpdfprocessing-getting-started%}#assembly-references), you will need to add the following references to use the GenAI-powered Document Insights features: +In addition to the [standard RadPdfProcessing references]({%slug radpdfprocessing-getting-started%}#package-references), you will need to add the following references to use the GenAI-powered Document Insights features: |.NET Framework|.NET Standard-compatible| |---|---| |**Telerik.Windows.Documents.AIConnector** * |**Telerik.Documents.AIConnector** *| -> __*__ The **Documents.AIConnector** NuGet package internally depends on **Microsoft.Extensions.AI.Abstractions** and **SharpToken**. +> __*__ The **Documents.AIConnector** NuGet package internally depends on: > -> * **Microsoft.Extensions.AI.Abstractions** is currently available only in **preview** version. -> * If you are referencing an _assembly/dll_ of **Documents.AIConnector** instead of a NuGet package, you must manually add the **SharpToken** NuGet package. +>* **Telerik.Documents.AI.Core** +>* **Telerik.Documents.AI.RAG** +> * **Microsoft.Extensions.AI.Abstractions** +> * **SharpToken** +> +>**Microsoft.Extensions.AI.Abstractions** is currently available only in **preview** version. +>If you are referencing an _assembly/dll_ of **Documents.AIConnector** instead of a NuGet package, you must manually add the **SharpToken** NuGet package. ## NuGet Packages diff --git a/libraries/radpdfprocessing/features/gen-ai-powered-document-insights/summarization-processor.md b/libraries/radpdfprocessing/features/gen-ai-powered-document-insights/summarization-processor.md index 371d969d..85f6cb8c 100644 --- a/libraries/radpdfprocessing/features/gen-ai-powered-document-insights/summarization-processor.md +++ b/libraries/radpdfprocessing/features/gen-ai-powered-document-insights/summarization-processor.md @@ -27,11 +27,11 @@ The **SummarizationProcessor** class enables you to generate concise summaries o |Property|Description| |---|---| -|**Settings**|Gets or sets the settings that will be used for summarization.| +|**Settings**|Gets the settings that will be used for summarization.| |Method|Description| |---|---| -|**Task Summarize(ISimpleTextDocument document)**|Generates a summary of the provided document. The parameter **document** is an **ISimpleTextDocument** containing the text to be summarized.| +|**Task Summarize(SimpleTextDocument document)**|Generates a summary of the provided document. The parameter **document** is an **ISimpleTextDocument** containing the text to be summarized.| |Event|Description| |---|---| @@ -41,9 +41,10 @@ The **SummarizationProcessor** class enables you to generate concise summaries o ## SummarizationProcessorSettings -The **SummarizationProcessorSettings** class provides configuration options for the summarization process: +The **SummarizationProcessorSettings** class defines configuration options for the summarization process. The following read-only properties can be set only through the constructor: -* **PromptAddition**: Gets or sets an addition for the prompt used for summarization. It can be used for clarification purposes. +* **ModelMaxInputTokenLimit**: The maximum input token limit for the model. +* **PromptAddition**: An addition for the prompt used for summarization. It can be used for clarification purposes. #### __[C#] Example 1: Configuring SummarizationProcessorSettings__ diff --git a/libraries/radpdfprocessing/formats-and-conversion/convert-to-image/using-image-format-provider.md b/libraries/radpdfprocessing/formats-and-conversion/convert-to-image/using-image-format-provider.md index c8aceffe..d04ccece 100644 --- a/libraries/radpdfprocessing/formats-and-conversion/convert-to-image/using-image-format-provider.md +++ b/libraries/radpdfprocessing/formats-and-conversion/convert-to-image/using-image-format-provider.md @@ -20,9 +20,9 @@ Since R3 2022 the __RadPdfProcessing__ library supports converting entire docume To enable the image exporting functionality in your application, you must add references to the following packages: -* The __Telerik.Documents.Fixed.FormatProviders.Image.Skia__ assembly. -* The __SkiaSharp__ Nuget package. -* The __SkiaSharp.NativeAssets.*__ Nuget package. This package may differ according to the used platform. There are versions for Windows, macOS, Linux, WebAssembly, Android, iOS, and others. +* The __Telerik.Documents.Fixed.FormatProviders.Image.Skia__ NuGet package. +* The __SkiaSharp__ NuGet package. +* The __SkiaSharp.NativeAssets.*__ NuGet package. This package may differ according to the used platform. There are versions for Windows, macOS, Linux, WebAssembly, Android, iOS, and others. A [FontsProvider](https://docs.telerik.com/devtools/document-processing/libraries/radpdfprocessing/cross-platform/fonts#setting-and-exporting-fonts) implementation is required to read the document fonts and draw the image. diff --git a/libraries/radpdfprocessing/formats-and-conversion/ocr/custom-ocr-provider.md b/libraries/radpdfprocessing/formats-and-conversion/ocr/custom-ocr-provider.md index 2c2b60c5..e8ad8853 100644 --- a/libraries/radpdfprocessing/formats-and-conversion/ocr/custom-ocr-provider.md +++ b/libraries/radpdfprocessing/formats-and-conversion/ocr/custom-ocr-provider.md @@ -18,7 +18,7 @@ However, it is possible to implement your own **IOcrProvider** that uses the des The [Azure AI Vision](https://learn.microsoft.com/en-us/azure/ai-services/computer-vision/overview) service gives you access to the [Optical Character Recognition](https://learn.microsoft.com/en-us/azure/ai-services/computer-vision/overview-ocr) (OCR) service that extracts text from images. We will use its [OCR engine](https://learn.microsoft.com/en-us/azure/ai-services/computer-vision/overview-ocr#ocr-engine) to implement a custom **IOcrProvider** that our RadPdfProcessing library can use. -1\. Before going further, you can find listed below the **required** assemblies/ NuGet packages that should be added to your project: +1\. Before going further, you can find listed below the **required** NuGet packages that should be added to your project: * [Azure.AI.Vision.ImageAnalysis](https://www.nuget.org/packages/Azure.AI.Vision.ImageAnalysis) * Telerik.Documents.Fixed diff --git a/libraries/radpdfprocessing/formats-and-conversion/ocr/prerequisites.md b/libraries/radpdfprocessing/formats-and-conversion/ocr/prerequisites.md index e5f559ef..331e428d 100644 --- a/libraries/radpdfprocessing/formats-and-conversion/ocr/prerequisites.md +++ b/libraries/radpdfprocessing/formats-and-conversion/ocr/prerequisites.md @@ -18,9 +18,9 @@ This topic describes the requirements needed by the [PdfProcessing]({%slug radpd >note Used images should be **300 DPI** for best results. -## Required Assemblies/ NuGet Packages +## Required Packages -In order to use the **OcrFormatProvider** you need to add the following assemblies: +In order to use the **OcrFormatProvider** you need to add the following packages: diff --git a/libraries/radpdfprocessing/formats-and-conversion/pdf/expandablememorystream.md b/libraries/radpdfprocessing/formats-and-conversion/pdf/expandablememorystream.md index 649eee08..766eb5fd 100644 --- a/libraries/radpdfprocessing/formats-and-conversion/pdf/expandablememorystream.md +++ b/libraries/radpdfprocessing/formats-and-conversion/pdf/expandablememorystream.md @@ -10,7 +10,15 @@ position: 3 # ExpandableMemoryStream -ExpandableMemoryStream is a segmented in-memory stream designed for efficient large or parallel PDF operations. Instead of resizing a single contiguous array like a **MemoryStream**, it grows by adding fixed-size blocks as needed—avoiding costly reallocations and Large Object Heap (LOH) pressure. Each block remains untouched once filled, so data isn’t copied during expansion. This block-based approach keeps allocations small and predictable, reduces GC overhead, and supports very large or bursty workloads. When growing, new cleared blocks are appended. When shrinking, only the visible length changes, allowing future reuse of existing memory without additional allocations. +ExpandableMemoryStream is a specialized in-memory stream built to handle demanding PDF workloads that involve large data volumes or concurrent operations. It provides a scalable alternative to traditional memory buffers by managing data growth in a controlled, efficient way. Instead of relying on a single expanding array, it uses an internal structure that minimizes memory churn and maintains stable performance even under heavy or unpredictable load. + +## Why a Segmented Approach + +Large PDF generation often needs a temporary buffer. A normal contiguous array may reallocate and copy data multiple times as it expands, increasing CPU work, peak memory, and pressure on the Large Object Heap (LOH). Avoiding large contiguous allocations lowers fragmentation, reduces garbage collection pauses, and scales better when size is unpredictable or workloads are bursty. + +## How It Works + +Data lives in equal‑sized blocks held in order. When more space is required a single new block is allocated, earlier blocks stay untouched. A position maps to (block index, offset). Growing exposes cleared bytes ready for writing. Shrinking lowers only the visible length and retains the blocks so later growth can reuse already allocated memory without new large allocations. ## When to Use diff --git a/libraries/radpdfprocessing/formats-and-conversion/pdf/pdfformatprovider/pdfformatprovider.md b/libraries/radpdfprocessing/formats-and-conversion/pdf/pdfformatprovider/pdfformatprovider.md index 5f449186..bc2585bc 100644 --- a/libraries/radpdfprocessing/formats-and-conversion/pdf/pdfformatprovider/pdfformatprovider.md +++ b/libraries/radpdfprocessing/formats-and-conversion/pdf/pdfformatprovider/pdfformatprovider.md @@ -14,10 +14,10 @@ position: 1 __PdfFormatProvider__ makes it easy to import and export a RadFixedDocument from/to PDF format, preserving the entire document structure and formatting. -In order to use the format provider, you need to add references to the following assemblies: +In order to use the format provider, you need to add references to the following packages: -* Telerik.Windows.Documents.Core.dll -* Telerik.Windows.Documents.Fixed.dll +* Telerik.Windows.Documents.Core +* Telerik.Windows.Documents.Fixed >note *As of **Q2 2025** the Zip Library will no longer be used as an internal dependency in the rest of the Document Processing Libraries - PdfProcessing, WordsProcessing, SpreadProcessing, SpreadStreamProcessing. It will be replaced by the System.IO.Compression. We will continue to ship the Telerik Zip Library as a standalone library so clients can still use it separately. diff --git a/libraries/radpdfprocessing/formats-and-conversion/pdf/pdfformatprovider/settings.md b/libraries/radpdfprocessing/formats-and-conversion/pdf/pdfformatprovider/settings.md index e090aef8..b77b15b1 100644 --- a/libraries/radpdfprocessing/formats-and-conversion/pdf/pdfformatprovider/settings.md +++ b/libraries/radpdfprocessing/formats-and-conversion/pdf/pdfformatprovider/settings.md @@ -51,7 +51,8 @@ The **PdfFormatProvider** class offers the **ExportSettings** property which all |**StripStructureTree**|Specifies if the PDF document should strip structure tree on export. *Introduced in Q2 2025*. The default value is **false**.| |**StripJavaScriptActions**|Specifies if the PDF document should strip JavaScript actions on export. *Introduced in Q4 2024*. The default value is **false**.| |**FontEmbeddingType**|The property controls what part of the fonts will be embedded in the file offering the following options:
  • **None**: Does not embed fonts.
  • **Full**: Fully embeds fonts.
  • **Subset**: Embeds only the used characters subset of the fonts. This is the default approach.
The subset export option is currently implemented **only** for TrueType fonts (.ttf).| -|**IsEncrypted**|This property specifies if the document should be encrypted. The default value is *false*. You can specify the encryption algorithm by setting the **EncryptionType** property. The supported values are **AES256** and **RC4**.
**All passwords for revision 6 (AES-256) shall be based on Unicode**. Preprocessing of a user-provided password consists first of normalizing its representation by applying the "SASLPrep" profile (Internet RFC 4013) of the "stringprep" algorithm (Internet RFC 3454) to the supplied password using the Normalize and BiDi options.
This setting is ignored when __ComplianceLevel__ differs from __None__ as PDF/A compliant documents do not allow encryption.| +|**IsEncrypted**|This property specifies if the document should be encrypted. The default value is *false*. You can specify the encryption algorithm by setting the **EncryptionType** property.
**All passwords for revision 6 (AES-256) shall be based on Unicode**. Preprocessing of a user-provided password consists first of normalizing its representation by applying the "SASLPrep" profile (Internet RFC 4013) of the "stringprep" algorithm (Internet RFC 3454) to the supplied password using the Normalize and BiDi options.
This setting is ignored when __ComplianceLevel__ differs from __None__ as PDF/A compliant documents do not allow encryption.| +|**EncryptionType**|Encryption algorithm applied when the **IsEncrypted** property is *true*. The supported values are:
  • **AES256**
  • **AES128** (*introduced in Q4 2025*)
  • **RC4** (default value)
| |**UserPassword**|The password to be used if the document is encrypted. The default password is an empty string.| |**OwnerPassword**|The password that governs permissions for operations such as printing, copying, and modifying the document. The default password is an empty string.| |**UserAccessPermissions**|Gets or sets the user access permissions. These permissions specify which access permissions should be granted when the document is opened with user access. In order to be applied, the **IsEncrypted** property should be set to *true*. This property specifies three types of user access permissions: [Available UserAccessPermissions]({%slug radpdfprocessing-formats-and-conversion-pdf-settings%}#available-useraccesspermissions)| diff --git a/libraries/radpdfprocessing/formats-and-conversion/plain-text/settings.md b/libraries/radpdfprocessing/formats-and-conversion/plain-text/settings.md index b33f4334..a419242f 100644 --- a/libraries/radpdfprocessing/formats-and-conversion/plain-text/settings.md +++ b/libraries/radpdfprocessing/formats-and-conversion/plain-text/settings.md @@ -43,7 +43,6 @@ The __Export()__ method of **TextFormatProvider** allows you to pass a **TextFor - ## See Also * [Using TextFormatProvider]({%slug radpdfprocessing-formats-and-conversion-plain-text-textformatprovider%}) diff --git a/libraries/radpdfprocessing/formats-and-conversion/plain-text/textformatprovider.md b/libraries/radpdfprocessing/formats-and-conversion/plain-text/textformatprovider.md index 5a463d14..d1c9da6b 100644 --- a/libraries/radpdfprocessing/formats-and-conversion/plain-text/textformatprovider.md +++ b/libraries/radpdfprocessing/formats-and-conversion/plain-text/textformatprovider.md @@ -12,11 +12,11 @@ position: 1 __TextFormatProvider__ makes it easy to export __RadFixedDocument__ to plain text format, preserving the document structure. -All you have to do in order to use __TextFormatProvider__ is add references to the assemblies listed below: +All you have to do in order to use __TextFormatProvider__ is add references to the packages listed below: -* Telerik.Windows.Documents.Core.dll -* Telerik.Windows.Documents.Fixed.dll +* Telerik.Windows.Documents.Core +* Telerik.Windows.Documents.Fixed ## Export diff --git a/libraries/radpdfprocessing/getting-started.md b/libraries/radpdfprocessing/getting-started.md index fcf67175..4cf8ee19 100644 --- a/libraries/radpdfprocessing/getting-started.md +++ b/libraries/radpdfprocessing/getting-started.md @@ -15,11 +15,11 @@ This article will get you started in using the __RadPdfProcessing__ library. >noteIf you still don't have **Telerik Document Processing** installed, check the [First Steps]({%slug getting-started-first-steps%}) topic to learn how you can obtain the packages through the different suites. -## Assembly References +## Package References ->The libraries support {{site.dotnetversions}}. .NET Standard-compatible binaries are available as well. The assemblies for .NET Standard don't include 'Windows' in their names (e.g. **Telerik.Documents.Core.dll**). For more information check [**Cross-Platform Support**]({%slug radpdfprocessing-cross-platform%}) article. +>The libraries support {{site.dotnetversions}}. .NET Standard-compatible packages are available as well. The packages for .NET Standard don't include 'Windows' in their names (e.g. **Telerik.Documents.Core**). For more information check [**Cross-Platform Support**]({%slug radpdfprocessing-cross-platform%}) article. -In order to use the __RadPdfProcessing__ library in your project, you need to add references to the following assemblies: +In order to use the __RadPdfProcessing__ library in your project, you need to add references to the following packages:
@@ -29,12 +29,12 @@ In order to use the __RadPdfProcessing__ library in your project, you need to ad - - + + - - + + @@ -57,15 +57,15 @@ In order to use the __RadPdfProcessing__ library in your project, you need to ad - + - - + @@ -102,9 +102,9 @@ In order to use the __RadPdfProcessing__ library in your project, you need to ad
Telerik.Windows.Documents.Core.dllTelerik.Documents.Core.dllTelerik.Windows.Documents.CoreTelerik.Documents.Core
Telerik.Windows.Documents.Fixed.dllTelerik.Documents.Fixed.dllTelerik.Windows.Documents.FixedTelerik.Documents.Fixed
  
To export images different than Jpeg and Jpeg2000 or ImageQuality different than High you will need to add a reference to the following assembly:To export images different than Jpeg and Jpeg2000 or ImageQuality different than High you will need to add a reference to the following package:
-Telerik.Documents.ImageUtils.dll -
This assembly is not available in UI for Xamarin. +
Telerik.Documents.ImageUtils +
This package is not available in UI for Xamarin.
This assembly is required for the Image Exporting functionality. This is only available in the NET Standard version. This package is required for the Image Exporting functionality. This is only available in the NET Standard version.
-
->note The **Telerik.Documents.ImageUtils.dll** assembly depends on **SkiaSharp**. In order to use this assembly, you will need to add a reference to [SkiaSharp](https://www.nuget.org/packages/SkiaSharp/). With the [R2 2023 changes](https://docs.telerik.com/devtools/document-processing/libraries/radpdfprocessing/changes-and-backward-compatibility/backward-compatibility#whats-different-in-2023-r2) SkiaSharp replaced ImageSharp as the required dependency. +>note The **Telerik.Documents.ImageUtils** package depends on **SkiaSharp**. In order to use this package, you will need to add a reference to [SkiaSharp](https://www.nuget.org/packages/SkiaSharp/). With the [R2 2023 changes](https://docs.telerik.com/devtools/document-processing/libraries/radpdfprocessing/changes-and-backward-compatibility/backward-compatibility#whats-different-in-2023-r2) SkiaSharp replaced ImageSharp as the required dependency. ->note The **Telerik.Documents.Fixed.FormatProviders.Image.Skia** assembly depends on **SkiaSharp**. In order to use this assembly, you will need to add a reference to [SkiaSharp](https://www.nuget.org/packages/SkiaSharp/). The **SkiaSharp.NativeAssets.*** Nuget package is required as well. This package may differ according to the used platform. There are version for Windows, MacOs, Linux, WebAssembly, Android, iOS, and others. +>note The **Telerik.Documents.Fixed.FormatProviders.Image.Skia** package depends on **SkiaSharp**. In order to use this package, you will need to add a reference to [SkiaSharp](https://www.nuget.org/packages/SkiaSharp/). The **SkiaSharp.NativeAssets.*** Nuget package is required as well. This package may differ according to the used platform. There are version for Windows, MacOs, Linux, WebAssembly, Android, iOS, and others. ## Creating a Document diff --git a/libraries/radpdfprocessing/model/actions/js-actions/action-collections.md b/libraries/radpdfprocessing/model/actions/js-actions/action-collections.md index f4b52d46..9a555d31 100644 --- a/libraries/radpdfprocessing/model/actions/js-actions/action-collections.md +++ b/libraries/radpdfprocessing/model/actions/js-actions/action-collections.md @@ -83,7 +83,7 @@ Represents a collection of Action objects associated with a [RadFixedPage]({%slu |OnPageOpen|Gets or sets the collection of actions triggered when the page is opened.| |OnPageClose|Gets or sets the collection of actions triggered when the page is closed.| -The following example shows how to utilize the JavaScript Actions functionality showing an alert when the second page in a document is closed +The following example shows how to utilize the JavaScript Actions functionality showing an alert when the second page in a document is closed: diff --git a/libraries/radpdfprocessing/model/annotations/overview.md b/libraries/radpdfprocessing/model/annotations/overview.md index 47640fc4..b7295b8a 100644 --- a/libraries/radpdfprocessing/model/annotations/overview.md +++ b/libraries/radpdfprocessing/model/annotations/overview.md @@ -33,7 +33,7 @@ The abstract **Annotation** element associates an object with a location on a [R |[TextMarkup]({%slug radpdfprocessing-model-annotations-text-markup%})| Text markup annotations appear as **Highlights**, **Underlines**, **Strikeouts** or **Squiggly** underlines in the text of a document. When opened, they display a pop-up window containing the text of the associated note.| |[Popup]({%slug radpdfprocessing-model-annotations-popup%})|A popup annotation is associated with another [markup annotation]({%slug radpdfprocessing-model-annotations-overview%}) and displays its content in a pop-up window for entry and editing. It typically appears as a pop-up note.| -* **Border**: Represents the annotation borders. This property is of type [AnnotationBorder](https://docs.telerik.com/devtools/document-processing/api/Telerik.Windows.Documents.Fixed.Model.Annotations.AnnotationBorder.html). +* **Border**: Represents the annotation borders. This property is of type [AnnotationBorder](https://docs.telerik.com/devtools/document-processing/api/Telerik.Windows.Documents.Fixed.Model.Annotations.AnnotationBorder.html) that uses an [AnnotationBorderStyle](https://docs.telerik.com/devtools/document-processing/api/telerik.windows.documents.fixed.model.annotations.annotationborderstyle). * **IsPrintable**: A boolean value that indicates whether the annotation instance should be visualized when printing the document. When set to *false*, the annotation won't appear when the document is printed. diff --git a/libraries/radpdfprocessing/model/formsource/overview.md b/libraries/radpdfprocessing/model/formsource/overview.md index 67d5ec1f..f7d55f88 100644 --- a/libraries/radpdfprocessing/model/formsource/overview.md +++ b/libraries/radpdfprocessing/model/formsource/overview.md @@ -30,10 +30,11 @@ The FormSource class exposes a default constructor which you can use to create a The snippet from **Example 1** will create an empty FormSource object. To fill this object with content you can use [FixedContentEditor]({%slug radpdfprocessing-editing-fixedcontenteditor%}) as described later in this article. The properties exposed by the **FormSource** class are as follows: -|Property|Description| -|----|----| -|**Size**|Allows getting or setting the size of the form.| -|**Content**|Gets the contents of the form.| + +| Property | Description | +| ---- | ---- | +| **Size** | Allows getting or setting the size of the form. | +| **Content** | Gets the contents of the form. | ## Adding Content to a FormSource Object diff --git a/libraries/radpdfprocessing/model/image.md b/libraries/radpdfprocessing/model/image.md index d553c39f..1bd5ac9d 100644 --- a/libraries/radpdfprocessing/model/image.md +++ b/libraries/radpdfprocessing/model/image.md @@ -52,7 +52,7 @@ __Example 2__ demonstrates how to use one of the factory methods of the __Conten The Image class exposes also the **GetBitmapSource()** method, enabling you to obtain a [BitmapSource](https://docs.microsoft.com/en-us/dotnet/api/system.windows.media.imaging.bitmapsource) instance representing the image. -> The GetBitmapSource() method is not available in the .NET Standard version of the PdfProcessing binaries. +> The GetBitmapSource() method is not available in the .NET Standard version of the PdfProcessing packages. #### __[C#] Example 3: Obtain BitmapSource__ diff --git a/libraries/radpdfprocessing/model/imagesource.md b/libraries/radpdfprocessing/model/imagesource.md index 8f63998e..01b4ec86 100644 --- a/libraries/radpdfprocessing/model/imagesource.md +++ b/libraries/radpdfprocessing/model/imagesource.md @@ -19,9 +19,9 @@ The ImageSource class has several public constructor overloads and can be create * __public ImageSource(Stream stream, FormatProviders.Pdf.Export.ImageQuality imageQuality)__: Creates an __ImageSource__ object from a stream and allows you to specify the image quality through the [ImageQuality enumeration](https://docs.telerik.com/devtools/document-processing/api/Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Export.ImageQuality.html). More information about the ImageQuality and its behavior is available in [this article]({%slug radpdfprocessing-concepts-imagequality%}). This overload might throw an exception if the image format is not supported. -* __public ImageSource(BitmapSource bitmapSource)__: Creates a new __ImageSource__ object from a BitmapSource object. This overload is not available in the .NET Standard version of the PdfProcessing binaries. +* __public ImageSource(BitmapSource bitmapSource)__: Creates a new __ImageSource__ object from a BitmapSource object. This overload is not available in the .NET Standard version of the PdfProcessing packages. -* __public ImageSource(BitmapSource bitmapSource, FormatProviders.Pdf.Export.ImageQuality imageQuality)__: Creates an __ImageSource__ instance from a BitmapSource object and allows you to specify the image quality. This overload is not available in the .NET Standard version of the PdfProcessing binaries. +* __public ImageSource(BitmapSource bitmapSource, FormatProviders.Pdf.Export.ImageQuality imageQuality)__: Creates an __ImageSource__ instance from a BitmapSource object and allows you to specify the image quality. This overload is not available in the .NET Standard version of the PdfProcessing packages. * __public ImageSource(EncodedImageData imageSourceInfo)__: Initializes a new instance of __ImageSource__ using the [EncodedImageData class](https://docs.telerik.com/devtools/document-processing/api/Telerik.Windows.Documents.Fixed.Model.Resources.EncodedImageData.html). @@ -58,7 +58,7 @@ The properties exposed by the **ImageSource** class are as follows: The ImageSource class exposes two methods, which could help you get the data from the ImageSource object. -> These methods are not available in the .NET Standard version of the PdfProcessing binaries. +> These methods are not available in the .NET Standard version of the PdfProcessing packages. * __BitmapSource GetBitmapSource()__: Gets the BitmapSource of the image. * __EncodedImageData GetEncodedImageData()__: Returns the encoded image data. This method can be used if you need to directly export the images from the PDF document. diff --git a/libraries/radpdfprocessing/model/interactive-forms/form-fields/signaturefield.md b/libraries/radpdfprocessing/model/interactive-forms/form-fields/signaturefield.md index f2e89f7b..2c3b81df 100644 --- a/libraries/radpdfprocessing/model/interactive-forms/form-fields/signaturefield.md +++ b/libraries/radpdfprocessing/model/interactive-forms/form-fields/signaturefield.md @@ -19,7 +19,7 @@ This article describes the following topics: This class corresponds to FormFieldType.Signature enum value and represents a placeholder which preserves the digital signature information. ->To use the signing functionality in PdfProcessing for .NET Standard/.NET Core, you must add a reference to the System.Security.Cryptography.Pkcs NuGet package, version 6 or newer (This functionality is available since R1 2022 SP1). +>To use the signing functionality in PdfProcessing for .NET Standard/.NET Core, you must add a reference to the System.Security.Cryptography.Pkcs NuGet package, version {{site.cryptographypkcs}} or newer (This functionality is available since R1 2022 SP1). ## Properties diff --git a/libraries/radpdfprocessing/model/radfixeddocument.md b/libraries/radpdfprocessing/model/radfixeddocument.md index 2d818d94..474f3081 100644 --- a/libraries/radpdfprocessing/model/radfixeddocument.md +++ b/libraries/radpdfprocessing/model/radfixeddocument.md @@ -10,7 +10,7 @@ position: 1 # RadFixedDocument -__RadFixedDocument__ hosts fixed document content and is the root element in the document elements tree. It holds a collection of [RadFixedPage]({%slug radpdfprocessing-model-radfixedpage%}) elements. +**RadFixedDocument** is a core class in the Telerik Document Processing libraries, specifically within the PdfProcessing model. This article will get you familiar with the basics of __RadFixedDocument__. It contains the following sections: @@ -22,7 +22,7 @@ This article will get you familiar with the basics of __RadFixedDocument__. It c ## What Is RadFixedDocument -__RadFixedDocument__ is the root that contains all other elements in the __RadPdfProcessing__ model. It exposes the following public API: +**RadFixedDocument** is the main document unit of the **PdfProcessing** model. It represents the root element of a fixed-layout PDF document and serves as the container for all other document elements. RadFixedDocument holds a collection of [RadFixedPage]({%slug radpdfprocessing-model-radfixedpage%}) elements. It exposes the following public API: |Property Name|Description| |----|----| @@ -54,6 +54,13 @@ __RadFixedDocument__ is the root that contains all other elements in the __RadPd |**MergedEmbeddedFileNameResolving**|Occurs when trying to resolve conflicts between the embedded file names while merging RadFixedDocument instances.| |**MergedJavaScriptNameResolving**|Occurs when trying to resolve conflicts between the JavaScript names while merging RadFixedDocument instances.| + +RadFixedDocument is typically used when: + +* Creating a PDF document from scratch programmatically: a complete example is available in the [PdfProcessing Basic Usage demo](https://demos.telerik.com/document-processing/pdfprocessing). +* Extracting or manipulating content from existing PDF documents: first import any existing PDF documents with the help of the [PdfFormatProvider]({%slug radpdfprocessing-formats-and-conversion-pdf-pdfformatprovider%}). +* Generating structured, fixed-layout documents with precise control over layout and formatting: [FixedContentEditor]({%slug radpdfprocessing-editing-fixedcontenteditor%}) and [RadFixedDocumentEditor]({%slug radpdfprocessing-editing-radfixeddocumenteditor%}) allow you to create a RadFixedDocument either with managing the position or in a flow-like manner and insert all desired elements one after another. + >note A complete SDK example how to generate a document is available [here](https://github.com/telerik/document-processing-sdk/tree/master/PdfProcessing/GenerateDocument). __Example 1__ shows how you can create a new __RadFixedDocument__ instance. diff --git a/libraries/radpdfprocessing/model/radfixedpage.md b/libraries/radpdfprocessing/model/radfixedpage.md index 2b85ab63..3204cda1 100644 --- a/libraries/radpdfprocessing/model/radfixedpage.md +++ b/libraries/radpdfprocessing/model/radfixedpage.md @@ -29,9 +29,15 @@ __RadFixedPage__ exposes the following properties: |__Annotations__|Collection that contains all [Annotations]({%slug radpdfprocessing-model-annotations-overview%}) in the RadFixedPage.| |__MediaBox__|Defines the boundaries of the physical medium on which the page will be printed. Any content falling outside this boundary is discarded without affecting the meaning of the PDF file. | |__CropBox__| Defines the region to which the contents of the page are clipped (cropped) when displayed or printed. This boundary determines the visible page content. The default value is the page’s media box. | -|__Size__|Property of type Size representing the size of the page. Its value is determined by the width and height of the **MediaBox**.| +|__Size__|Property of type Size representing the size of the page. Its value is determined by the width and height of the **MediaBox** in points. It defines the physical dimensions of the page in PDF units - where 1 point = 1/72 inch. So, for example: A page size of Size(612, 792) corresponds to 8.5 x 11 inches (standard US Letter size).|1 |__Rotation__|Property of type [Rotation](https://docs.telerik.com/devtools/document-processing/api/Telerik.Windows.Documents.Fixed.Model.Data.Rotation.html) representing the page rotation.| -|**Actions**|Gets the page [actions]({%slug radpdfprocessing-model-action-collections%}#pageactioncollection) collection.| +|**Actions**|Gets the page [actions]({%slug radpdfprocessing-model-action-collections%}#pageactioncollection) collection.| + +RadFixedPage is typically used when: + +* Creating a PDF document (and its pages) from scratch programmatically: a complete example is available in the [PdfProcessing Basic Usage demo](https://demos.telerik.com/document-processing/pdfprocessing). +* Loading page content from existing PDF documents: you cannot deserialize a RadFixedPage directly from a byte array (memory stream) because pages are part of the document structure. The [PdfFormatProvider]({%slug radpdfprocessing-formats-and-conversion-pdf-pdfformatprovider%}) handles the parsing and conversion from raw PDF bytes to the structured RadFixedDocument object. Once imported, you can manipulate individual pages (RadFixedPage) as needed. +* Generating structured, fixed-layout documents with precise control over layout and formatting: [FixedContentEditor]({%slug radpdfprocessing-editing-fixedcontenteditor%}) and [RadFixedDocumentEditor]({%slug radpdfprocessing-editing-radfixeddocumenteditor%}) allow you to create a RadFixedDocument either with managing the position or in a flow-like manner and insert all desired elements one after another. __Example 1__ demonstrates how to create a new __RadFixedPage__ instance and add it to the __Pages__ collection of __RadFixedDocument__. diff --git a/libraries/radpdfprocessing/overview.md b/libraries/radpdfprocessing/overview.md index 280b8dda..b65de3c3 100644 --- a/libraries/radpdfprocessing/overview.md +++ b/libraries/radpdfprocessing/overview.md @@ -45,7 +45,7 @@ The document model of the library provides support for: | [**Geometries**]({%slug radpdfprocessing-concepts-geometry%}) | Enable you to describe the geometry of a 2D shape. | | [**Form XObjects**]({%slug radpdfprocessing-model-form%}) | The Form XObjects enables you to describe composite objects (consisting of text, images, vector elements, etc.) within a PDF file and reuse this content among the document, for smaller document size and better rendering performance. | | [**Interactive Forms**]({%slug radpdfprocessing-model-interactive-forms-overview%}) | Create and modify PDF files containing textboxes, buttons, list boxes, and other interactive controls making available for the PDF file user to interactively fill some data in the PDF document and/or digitally sign the filled document. You can flatten the fields as well. | -| [**Digital Signature**]({%slug radpdfprocessing-features-digital-signature%}) | The digital signature feature enables you to sign and validate PDF documents. | +| [**Digital Signature**]({%slug radpdfprocessing-features-digital-signature%}) | The digital signature feature enables you to sign and validate PDF documents. It supports signing PDF documents [using a TimeStamp Server]({%slug pdf-sign-timestamp-server%}) or [external signing]({%slug external-digital-signing%}). | |[**Embedded File Streams**]({%slug radpdfprocessing-embedded-file-streams-overview%})|The embed a file stream feature allows adding external files to the PDF document.| | [**Clipping**]({%slug radpdfprocessing-concepts-clipping%}) | You can define the outline of other content elements like images and paths. | | [**Bookmarks (Outlines)**]({%slug radpdfprocessing-features-bookmarks%}) | Add, remove or modify the bookmarks in a PDF document. | @@ -80,6 +80,7 @@ The document model of the library provides support for: |[PdfProcessing Multiple Digital Signatures](https://demos.telerik.com/document-processing/pdfprocessing/multiple_digital_signatures)|This example demonstrates how to digitally sign a PDF without invalidating any existing signatures.| |[PdfProcessing Accessibility](https://demos.telerik.com/document-processing/pdfprocessing/accessibility)|This example demonstrates how to create accessible PDF documents programmatically, ensuring compliance with standards such as PDF/UA by supporting features like tagged content, document structure, and metadata. Downloaded documents will adhere to the selected compliance level.| |[PdfProcessing GenAI Document Insights](https://demos.telerik.com/document-processing/pdfprocessing/genai_document_insights)|This example demonstrates how to use the GenAI-powered Document Insights feature in Telerik RadPdfProcessing to extract meaningful insights from PDF documents.| +|[PdfProcessing Add Digital Signature External](https://demos.telerik.com/document-processing/pdfprocessing/external_digitally_sign_document)|This example demonstrates how to digitally sign a PDF with the option to provide a TimeStamp Server for enhanced security and validation.| diff --git a/libraries/radspreadprocessing/cross-platform-support/cross-platform.md b/libraries/radspreadprocessing/cross-platform-support/cross-platform.md index 5b2212a9..461ef2be 100644 --- a/libraries/radspreadprocessing/cross-platform-support/cross-platform.md +++ b/libraries/radspreadprocessing/cross-platform-support/cross-platform.md @@ -11,31 +11,31 @@ position: 0 # Cross-Platform Support -**Telerik Document Processing** comes with **.NET Core** & **.NET Standard** support. There is a set of binaries built against the .NET Core & .NET Standard which you can reference in an application. +**Telerik Document Processing** comes with **.NET Core** & **.NET Standard** support. There is a set of packages built against the .NET Core & .NET Standard which you can reference in an application. ->note The binaries compatible with .NET Standard are distributed with the packages targeting .NET Standard and .NET Core. You can obtain the assemblies through the **UI for ASP.NET Core**, **UI for Blazor**, **UI for Xamarin**, and **UI for WinUI** suites. There are **NuGet** packages as well that you can access if you have a license for one of the above mentioned suites. +>note The binaries compatible with .NET Standard are distributed with the packages targeting .NET Standard and .NET Core. You can obtain the packages through the **UI for ASP.NET Core**, **UI for Blazor**, **UI for Xamarin**, and **UI for WinUI** suites. There are **NuGet** packages as well that you can access if you have a license for one of the above mentioned suites. -## Assembly References +## Package References -To use the model of **RadSpreadProcessing** in your cross-platform project, you need to add references to the following **.Net Standard** assemblies: +To use the model of **RadSpreadProcessing** in your cross-platform project, you need to add references to the following **.Net Standard** packages: -| Assembly Name | Notes | +| Package Name | Notes | |------------------------------------------|------------------------------------------| -| **Telerik.Documents.Core.dll** | | -| **Telerik.Documents.Spreadsheet.dll** | | -| **Telerik.Documents.Spreadsheet.FormatProviders.OpenXml.dll** | Required for working with XLSX files. | -| **Telerik.Documents.Spreadsheet.FormatProviders.Xls.dll** | Required for working with XLS files. | -| **Telerik.Documents.Fixed.dll** | Required for exporting to PDF files. | -| **Telerik.Documents.Spreadsheet.FormatProviders.Pdf.dll** | Required for exporting to PDF files. | -| ~~Telerik.Zip.dll~~* | ~~Required for working with XSLX, XLS and PDF files.~~ | -| **Telerik.Documents.ImageUtils.dll**
_This assembly is not available in UI for Xamarin._ | Required when you need to export to PDF documents containing images different than **Jpeg** and **Jpeg2000** or **ImageQuality** different than High. | +| **Telerik.Documents.Core** | | +| **Telerik.Documents.Spreadsheet** | | +| **Telerik.Documents.Spreadsheet.FormatProviders.OpenXml** | Required for working with XLSX files. | +| **Telerik.Documents.Spreadsheet.FormatProviders.Xls** | Required for working with XLS files. | +| **Telerik.Documents.Fixed** | Required for exporting to PDF files. | +| **Telerik.Documents.Spreadsheet.FormatProviders.Pdf** | Required for exporting to PDF files. | +| ~~Telerik.Zip~~* | ~~Required for working with XSLX, XLS and PDF files.~~ | +| **Telerik.Documents.ImageUtils**
_This package is not available in UI for Xamarin._ | Required when you need to export to PDF documents containing images different than **Jpeg** and **Jpeg2000** or **ImageQuality** different than High. | >note *As of **Q2 2025** the Zip Library will no longer be used as an internal dependency in the rest of the Document Processing Libraries - PdfProcessing, WordsProcessing, SpreadProcessing, SpreadStreamProcessing. It will be replaced by the System.IO.Compression. We will continue to ship the Telerik Zip Library as a standalone library so clients can still use it separately. ->note The **Telerik.Documents.ImageUtils.dll** assembly depends on **SkiaSharp**. In order to use this assembly, you will need to add a reference to [SkiaSharp](https://www.nuget.org/packages/SkiaSharp/). With the [R2 2023 changes](https://docs.telerik.com/devtools/document-processing/libraries/radpdfprocessing/changes-and-backward-compatibility/backward-compatibility#whats-different-in-2023-r2) SkiaSharp replaced ImageSharp as the required dependency. +>note The **Telerik.Documents.ImageUtils** package depends on **SkiaSharp**. In order to use this package, you will need to add a reference to [SkiaSharp](https://www.nuget.org/packages/SkiaSharp/). With the [R2 2023 changes](https://docs.telerik.com/devtools/document-processing/libraries/radpdfprocessing/changes-and-backward-compatibility/backward-compatibility#whats-different-in-2023-r2) SkiaSharp replaced ImageSharp as the required dependency. -> Note that for .NET Framework, {{site.dotnetversions}} with Windows Compatibility Pack projects, the references contain "Windows" in their names (e.g. **Telerik.Windows.Documents.Core.dll**) +> Note that for .NET Framework, {{site.dotnetversions}} with Windows Compatibility Pack projects, the references contain "Windows" in their names (e.g. **Telerik.Windows.Documents.Core**) ## What's Different Between .NET Framework and .NET Standard versions of SpreadProcessing diff --git a/libraries/radspreadprocessing/cross-platform-support/images.md b/libraries/radspreadprocessing/cross-platform-support/images.md index f2d9d6d7..a5daad6d 100644 --- a/libraries/radspreadprocessing/cross-platform-support/images.md +++ b/libraries/radspreadprocessing/cross-platform-support/images.md @@ -13,7 +13,7 @@ position: 2 .NET Standard specification does not define APIs for getting the image properties. SpreadProcessing needs to have access to GDI+ basic graphics functionality when exporting spreadsheets that contain images. That is why, to allow the library to get the image properties needed for **saving the workbook**, an implementation inheriting the **ImagePropertiesResolverBase** abstract class must be set to the **ImagePropertiesResolver** property of **SpreadExtensibilityManager**. ->note The **Telerik.Documents.ImageUtils** assembly provides a default implementation of the ImagePropertiesResolver class that could be used when exporting the document. +>note The **Telerik.Documents.ImageUtils** package provides a default implementation of the ImagePropertiesResolver class that could be used when exporting the document. #### [C#] Example 1: Set the default implementation of the ImagePropertiesResolver class diff --git a/libraries/radspreadprocessing/cross-platform-support/text-measure.md b/libraries/radspreadprocessing/cross-platform-support/text-measure.md index d4dd9107..495ef8b2 100644 --- a/libraries/radspreadprocessing/cross-platform-support/text-measure.md +++ b/libraries/radspreadprocessing/cross-platform-support/text-measure.md @@ -40,7 +40,7 @@ This implementation uses PdfProcessing to obtain the size of the text and provid >note Due to the [Font Limitations]({%slug radpdfprocessing-cross-platform-fonts%}) of the [PdfProcessing]({%slug radpdfprocessing-overview%}) library in .NET Standard, you should provide a [FontsProvider implementation]({%slug pdfprocessing-implement-fontsprovider%}) as well. ->important To use the **SpreadFixedTextMeasurer** class, you must add a reference to **Telerik.Documents.Fixed.dll**. +>important To use the **SpreadFixedTextMeasurer** class, you must add a reference to **Telerik.Documents.Fixed**. #### [C#] Example 1: Set the SpreadFixedTextMeasurer as a text measurer @@ -66,9 +66,11 @@ To use the **SkiaTextMeasurer** class, you can reference it in one of the follow If you prefer to reference assemblies directly, you need: -- **Telerik.Documents.TextMeasurer.Skia.dll** - Main assembly containing the SkiaTextMeasurer class -- **Telerik.Text.Skia.dll** - Required dependency of Telerik.Documents.TextMeasurer.Skia. -- **SkiaSharp.HarfBuzz.dll** (and all of its dependencies) - Required dependency of Telerik.Text.Skia.dll, along with all its dependencies +|Assembly|Description| +|----|----| +|**Telerik.Documents.TextMeasurer.Skia.dll**|Main assembly containing the SkiaTextMeasurer class| +|**Telerik.Text.Skia.dll**|Required dependency of Telerik.Documents.TextMeasurer.Skia.| +|**SkiaSharp.HarfBuzz.dll** (version {{site.harfbuzzsharp}}) (and all of its dependencies)|Required dependency of Telerik.Text.Skia.dll, along with all its dependencies| #### [C#] Example 2: Set the SkiaTextMeasurer as a text measurer diff --git a/libraries/radspreadprocessing/features/charts/pdf-export.md b/libraries/radspreadprocessing/features/charts/pdf-export.md index 0b32359c..49c9d6d4 100644 --- a/libraries/radspreadprocessing/features/charts/pdf-export.md +++ b/libraries/radspreadprocessing/features/charts/pdf-export.md @@ -14,7 +14,7 @@ platforms: wpf You can export spreadsheet documents in RadSpreadProcessing using the [PdfFormatProvider]({%slug radspreadprocessing-formats-and-conversion-pdf-pdfformatprovider%}) class. The charts functionality relies on a renderer that implements the **IPdfChartRenderer** interface to draw the charts in the PDF document. This topic shows how you can implement this renderer using the built-in class in WPF. ->To use the functionality described in this topic, you will need to add a reference to the **Telerik.Windows.Controls.Spreadsheet.dll** and **Telerik.Windows.Controls.Chart.dll** assemblies of the [Telerik UI for WPF](https://www.telerik.com/products/wpf/overview.aspx) suite. +>To use the functionality described in this topic, you will need to add a reference to the **Telerik.Windows.Controls.Spreadsheet** and **Telerik.Windows.Controls.Chart** packages of the [Telerik UI for WPF](https://www.telerik.com/products/wpf/overview.aspx) suite. ## IPdfChartRenderer diff --git a/libraries/radspreadprocessing/features/shapes-and-images.md b/libraries/radspreadprocessing/features/shapes-and-images.md index 3a69c7f6..69414747 100644 --- a/libraries/radspreadprocessing/features/shapes-and-images.md +++ b/libraries/radspreadprocessing/features/shapes-and-images.md @@ -120,7 +120,7 @@ The next step is to configure the other properties of the image as needed. Insert the image into the collection of shapes of the worksheet. Note that the worksheet needs to be the same as the one passed in the FloatingImage constructor, otherwise an exception is thrown. ->important When using the **.NET Standard** version of the RadSpreadProcessing binaries, in order to **export to PDF** format documents containing images different than Jpeg and Jpeg2000 or ImageQuality different than High, the **JpegImageConverter** property inside the **FixedExtensibilityManager** has to be set. For more information check the FixedExtensibilityManager in the [PdfProcessing`s Cross-Platform Support]({%slug radpdfprocessing-cross-platform%}) +>important When using the **.NET Standard** version of the RadSpreadProcessing packages, in order to **export to PDF** format documents containing images different than Jpeg and Jpeg2000 or ImageQuality different than High, the **JpegImageConverter** property inside the **FixedExtensibilityManager** has to be set. For more information check the FixedExtensibilityManager in the [PdfProcessing`s Cross-Platform Support]({%slug radpdfprocessing-cross-platform%}) #### __[C#] Example 3: Add image to worksheet__ diff --git a/libraries/radspreadprocessing/formats-and-conversion/data-table/using-data-table-format-provider.md b/libraries/radspreadprocessing/formats-and-conversion/data-table/using-data-table-format-provider.md index 30d07e05..ba388fc5 100644 --- a/libraries/radspreadprocessing/formats-and-conversion/data-table/using-data-table-format-provider.md +++ b/libraries/radspreadprocessing/formats-and-conversion/data-table/using-data-table-format-provider.md @@ -12,7 +12,7 @@ position: 1 The __DataTableFormatProvider__ allows you to easily convert existing [DataTable](https://docs.microsoft.com/en-us/dotnet/api/system.data.datatable?view=net-5.0) to a worksheet and vice versa. Below you can see how to use this format provider to import/export data tables. -To use the DataTableFormatProvider you need to reference the __Telerik.Windows.Documents.Spreadsheet__ assembly. +To use the DataTableFormatProvider you need to reference the __Telerik.Windows.Documents.Spreadsheet__ package. ## Import diff --git a/libraries/radspreadprocessing/formats-and-conversion/general-information.md b/libraries/radspreadprocessing/formats-and-conversion/general-information.md index ed51ba42..d3fa9d9b 100644 --- a/libraries/radspreadprocessing/formats-and-conversion/general-information.md +++ b/libraries/radspreadprocessing/formats-and-conversion/general-information.md @@ -9,16 +9,17 @@ position: 0 # General Information -__RadSpreadProcessing__'s document model allows you to easily open and save files of different formats. This article will share more details on the [supported formats](#supported-formats), [available format providers](#format-providers), the [additional assembly references](#additional-assembly-references) each provider requires and the [Format Providers Manager](#format-providers-manager). +__RadSpreadProcessing__'s document model allows you to easily open and save files of different formats. This article will share more details on the [supported formats](#supported-formats), [available format providers](#format-providers), the [additional package references](#additional-package-references) each provider requires and the [Format Providers Manager](#format-providers-manager). ## Supported formats * __Xlsx__: Rich text format, which exports the whole content of a workbook: worksheets, formula values, formatting, hyperlinks etc. * __Xls__: Rich text format, which exports the content of a workbook: worksheets, formula values, formatting, hyperlinks etc. Supported in older applications. This format is not supported in Silverlight. * __Xlsm__: Rich text format, which exports all that is included in the Xlsx format with the addition of macro instructions. -* __Pdf__: Fixed format, which preserves the content of a workbook in independent from software or hardware manner. +* __Pdf__(*export only*): Fixed format, which preserves the content of a workbook in independent from software or hardware manner. * __Csv__(comma separated): Plain text format that saves the content of the cell in the active worksheet. The format strips all formatting and keeps only the result values of cells. These values are separated by a culture dependent delimiter. * __Txt__(tab delimited): Plain text format, which preserves only the content of the cells in the active worksheet. The format does not save any formatting and keeps only the result values of the cells. These values are delimited via tabs. +* __Json__(*export only*): Structured text format that serializes worksheet data and metadata (values, number formats, named ranges, charts, active sheet info, etc.) to JSON. Styling is not preserved fully as in XLSX; * **DataTable**: This allows you to convert the DataTable that is coming form your database to a spreadsheet and vice versa. >note In **Q4 2024** Telerik Document Processing Libraries introduced a new timeout mechanism for importing and exporting documents. The **Import** and **Export** methods of all FormatProviders have a mandatory *TimeSpan?* timeout parameter after which the operation will be cancelled. @@ -30,12 +31,13 @@ The document model exposes separate format providers that work with each of the - [XlsxFormatProvider]({%slug radspreadprocessing-formats-and-conversion-xlsx-xlsxformatprovider %}) for `.xlsx` files - [XlsFormatProvider]({%slug radspreadprocessing-formats-and-conversion-xls-xlsformatprovider %}) for `.xls` files - [XlsmFormatProvider]({%slug radspreadprocessing-formats-and-conversion-xlsm-xlsmformatprovider %}) for `.xlsm` files -- [PdfFormatProvider]({%slug radspreadprocessing-formats-and-conversion-pdf-pdfformatprovider %}) for `.pdf` files +- [PdfFormatProvider]({%slug radspreadprocessing-formats-and-conversion-pdf-pdfformatprovider %}) for `.pdf` files (export only) - [CsvFormatProvider]({%slug radspreadprocessing-formats-and-conversion-csv-csvformatprovider %}) for comma separated `.csv` files - [TxtFormatProvider]({%slug radspreadprocessing-formats-and-conversion-txt-txtformatprovider %}) for tab delimited `.txt` files - [DataTableFormatProvider]({%slug radspreadprocessing-formats-and-conversion-using-data-table-format-provider %}) for `DataTable` objects +- [JsonFormatProvider]({%slug radspreadprocessing-formats-and-conversion-json-jsonformatprovider %}) for `.json` files (export only) -> Some FormatProviders require additional assembly references. Check them out in the [Additional Assemlby References](#additional-assembly-references) section. +> Some FormatProviders require additional package references. Check them out in the [Additional Package References](#additional-package-references) section. ## Import and Export methods @@ -107,21 +109,24 @@ byte[] workbookAsByteArray = formatProvider.Export(workbook, TimeSpan.FromSecond >note For more examples of importing and exporting workbooks check out the [Import/Load and Export/Save RadSpreadProcessing Workbook]({%slug import-export-save-load-workbook%}) knowledge base article. -## Additional assembly references +## Additional package references -Unlike the __CsvFormatProvider__, __TxtFormatProvider__ and __DataTableFormatProvider__ classes, the other RadSpreadProcessing format providers require references to additional assemblies. +Unlike the __CsvFormatProvider__, __TxtFormatProvider__ and __DataTableFormatProvider__ classes, the other RadSpreadProcessing format providers require references to additional packages. -- **XlsxFormatProvider** and **XlsmFormatProvider** additional assembly references - * Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml.dll - * ~~Telerik.Windows.Zip.dll~~* +- **XlsxFormatProvider** and **XlsmFormatProvider** additional package references + * Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml + * ~~Telerik.Windows.Zip~~* >note *As of **Q2 2025** the Zip Library will no longer be used as an internal dependency in the rest of the Document Processing Libraries - PdfProcessing, WordsProcessing, SpreadProcessing, SpreadStreamProcessing. It will be replaced by the System.IO.Compression. We will continue to ship the Telerik Zip Library as a standalone library so clients can still use it separately. -- **PdfFormatProvider** - * Telerik.Windows.Documents.Spreadsheet.FormatProviders.Pdf.dll +- **PdfFormatProvider** (export only) + * Telerik.Windows.Documents.Spreadsheet.FormatProviders.Pdf - **XlsFormatProvider** - * Telerik.Windows.Documents.Spreadsheet.FormatProviders.Xls.dll + * Telerik.Windows.Documents.Spreadsheet.FormatProviders.Xls + +- **JsonFormatProvider** (export only) + * Telerik.Windows.Documents.Spreadsheet.FormatProviders.Json ## Format Providers Manager diff --git a/libraries/radspreadprocessing/formats-and-conversion/import-and-export-to-excel-file-formats/xls/xlsformatprovider.md b/libraries/radspreadprocessing/formats-and-conversion/import-and-export-to-excel-file-formats/xls/xlsformatprovider.md index a9c1afa6..b888331e 100644 --- a/libraries/radspreadprocessing/formats-and-conversion/import-and-export-to-excel-file-formats/xls/xlsformatprovider.md +++ b/libraries/radspreadprocessing/formats-and-conversion/import-and-export-to-excel-file-formats/xls/xlsformatprovider.md @@ -13,12 +13,12 @@ platforms: core, mvc, ajax, blazor, wpf, winforms, xamarin, winui __XlsFormatProvider__ makes it easy to import and export to XLS (Excel 97-2003 Workbook) files. The functionality is available since R3 2020. ->The __XlsFormatProvider__ requires references to the following assembly: +>The __XlsFormatProvider__ requires references to the following packages: ->* Telerik.Windows.Documents.Spreadsheet.FormatProviders.Xls.dll for .NET Framework projects ->* Telerik.Documents.Spreadsheet.FormatProviders.Xls.dll for .NET Standard projects +>* Telerik.Windows.Documents.Spreadsheet.FormatProviders.Xls for .NET Framework projects +>* Telerik.Documents.Spreadsheet.FormatProviders.Xls for .NET Standard projects -Once you reference the aforementioned assemblies, you need to create an instance of the __XlsFormatProvider__ in order to import and export Excel 97-2003 Workbook files. This provider appears in the Telerik.Windows.Documents.Spreadsheet.FormatProviders.Xls namespace. __XlsFormatProvider__ implements the __IWorkbookFormatProvider__ interface, which in turn appears in the Telerik.Windows.Documents.Spreadsheet.FormatProviders. Depending on the whether you would like to work with the concrete class or the interface, you would need to include either the first or both namespaces. +Once you reference the aforementioned packages, you need to create an instance of the __XlsFormatProvider__ in order to import and export Excel 97-2003 Workbook files. This provider appears in the Telerik.Windows.Documents.Spreadsheet.FormatProviders.Xls namespace. __XlsFormatProvider__ implements the __IWorkbookFormatProvider__ interface, which in turn appears in the Telerik.Windows.Documents.Spreadsheet.FormatProviders. Depending on the whether you would like to work with the concrete class or the interface, you would need to include either the first or both namespaces. >note For more examples and application scenarios of Importing and Exporting a Workbook to various formats using a FormatProvider check out the [Import/Load and Export/Save RadSpreadProcessing Workbook]({%slug import-export-save-load-workbook%}) knowledge base article. diff --git a/libraries/radspreadprocessing/formats-and-conversion/import-and-export-to-excel-file-formats/xlsm/xlsmformatprovider.md b/libraries/radspreadprocessing/formats-and-conversion/import-and-export-to-excel-file-formats/xlsm/xlsmformatprovider.md index 4f1bc14a..0e9b973b 100644 --- a/libraries/radspreadprocessing/formats-and-conversion/import-and-export-to-excel-file-formats/xlsm/xlsmformatprovider.md +++ b/libraries/radspreadprocessing/formats-and-conversion/import-and-export-to-excel-file-formats/xlsm/xlsmformatprovider.md @@ -16,13 +16,13 @@ __XlsmFormatProvider__ makes it easy to import and export Xlsm (Excel Workbook t > Currently the Macros are only preserved during import and export. They cannot be executed or changed in the code. ->Unlike the CSV and TXT format providers, the __XlsmFormatProvider__ requires references to the following assemblies: ->* Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml.dll ->* ~~Telerik.Windows.Zip.dll~~* +>Unlike the CSV and TXT format providers, the __XlsmFormatProvider__ requires references to the following packages: +>* Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml. +>* ~~Telerik.Windows.Zip~~* >note *As of **Q2 2025** the Zip Library will no longer be used as an internal dependency in the rest of the Document Processing Libraries - PdfProcessing, WordsProcessing, SpreadProcessing, SpreadStreamProcessing. It will be replaced by the System.IO.Compression. We will continue to ship the Telerik Zip Library as a standalone library so clients can still use it separately. -Once you reference the aforementioned assemblies, you need to create an instance of the __XlsmFormatProvider__ in order to import and export Xlsm (Excel Workbook) files. This provider appears in the Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml.Xlsm namespace. __XlsmFormatProvider__ implements the __IWorkbookFormatProvider__ interface, which in turn appears in the Telerik.Windows.Documents.Spreadsheet.FormatProviders. Depending on the whether you would like to work with the concrete class or the interface, you would need to include either the first or both namespaces. +Once you reference the aforementioned packages, you need to create an instance of the __XlsmFormatProvider__ in order to import and export Xlsm (Excel Workbook) files. This provider appears in the Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml.Xlsm namespace. __XlsmFormatProvider__ implements the __IWorkbookFormatProvider__ interface, which in turn appears in the Telerik.Windows.Documents.Spreadsheet.FormatProviders. Depending on the whether you would like to work with the concrete class or the interface, you would need to include either the first or both namespaces. >note For more examples and application scenarios of Importing and Exporting a Workbook to various formats using a FormatProvider check out the [Import/Load and Export/Save RadSpreadProcessing Workbook]({%slug import-export-save-load-workbook%}) knowledge base article. diff --git a/libraries/radspreadprocessing/formats-and-conversion/import-and-export-to-excel-file-formats/xlsx/xlsxformatprovider.md b/libraries/radspreadprocessing/formats-and-conversion/import-and-export-to-excel-file-formats/xlsx/xlsxformatprovider.md index f542eb8f..9e9ca657 100644 --- a/libraries/radspreadprocessing/formats-and-conversion/import-and-export-to-excel-file-formats/xlsx/xlsxformatprovider.md +++ b/libraries/radspreadprocessing/formats-and-conversion/import-and-export-to-excel-file-formats/xlsx/xlsxformatprovider.md @@ -15,12 +15,12 @@ position: 2 __XlsxFormatProvider__ makes it easy to import and export XLSX (Excel Workbook) files. An XLSX file is a group of zipped files that conform to the Office Open XML schema. That said, the format allows you export all parts of a workbook: worksheets, formula values, formatting, hyperlinks, etc. ->Unlike the CSV and TXT format providers, the __XlsxFormatProvider__ requires references to the following assemblies: ->* Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml.dll +>Unlike the CSV and TXT format providers, the __XlsxFormatProvider__ requires references to the following package: +>* Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml >note *As of **Q2 2025** the Zip Library will no longer be used as an internal dependency in the rest of the Document Processing Libraries - PdfProcessing, WordsProcessing, SpreadProcessing, SpreadStreamProcessing. It will be replaced by the System.IO.Compression. We will continue to ship the Telerik Zip Library as a standalone library so clients can still use it separately. -Once you reference the aforementioned assemblies, you need to create an instance of the __XlsxFormatProvider__ in order to import and export XLSX (Excel Workbook) files. This provider appears in the Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml.Xlsx namespace. __XlsxFormatProvider__ implements the __IWorkbookFormatProvider__ interface, which in turn appears in the Telerik.Windows.Documents.Spreadsheet.FormatProviders. Depending on the whether you would like to work with the concrete class or the interface, you would need to include either the first or both namespaces. +Once you reference the aforementioned packages, you need to create an instance of the __XlsxFormatProvider__ in order to import and export XLSX (Excel Workbook) files. This provider appears in the Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml.Xlsx namespace. __XlsxFormatProvider__ implements the __IWorkbookFormatProvider__ interface, which in turn appears in the Telerik.Windows.Documents.Spreadsheet.FormatProviders. Depending on the whether you would like to work with the concrete class or the interface, you would need to include either the first or both namespaces. >note For more examples and application scenarios of Importing and Exporting a Workbook to various formats using a FormatProvider check out the [Import/Load and Export/Save RadSpreadProcessing Workbook]({%slug import-export-save-load-workbook%}) knowledge base article. diff --git a/libraries/radspreadprocessing/formats-and-conversion/import-export-format-providers-manager.md b/libraries/radspreadprocessing/formats-and-conversion/import-export-format-providers-manager.md index e0465519..c31c621e 100644 --- a/libraries/radspreadprocessing/formats-and-conversion/import-export-format-providers-manager.md +++ b/libraries/radspreadprocessing/formats-and-conversion/import-export-format-providers-manager.md @@ -38,7 +38,7 @@ public class WorkbookFormatProvidersManager The __WorkbookFormatProvidersManager__ class contains two methods that allow you to register and unregister format providers respectively. The manager has the `csv` and `txt` format providers registered by default. The snippet in __Example 1__ illustrates how to register the [XlsxFormatProvider]({%slug radspreadprocessing-formats-and-conversion-xlsx-xlsxformatprovider %}). -> Some Format Providers require additional assembly references. Check the full list of the FormatProviders' additional reference requirements in [Format Providers - Additional assembly references]({%slug radspreadprocessing-formats-and-conversion-general-information%}#additional-assembly-references). +> Some Format Providers require additional package references. Check the full list of the FormatProviders' additional reference requirements in [Format Providers - Additional package references]({%slug radspreadprocessing-formats-and-conversion-general-information%}#additional-package-references). #### __[C#] Example 1: Register provider__ @@ -186,7 +186,7 @@ You can achieve the same result through using the __SaveFile__ command. In fact, ## Retrieve Registered Providers and Supported Extensions -Currently RadSpreadProcessing supports the following extensions: `.xlsx`, `.xls`, `.csv`, `.txt` and `.pdf` (export only). The format providers available for them are respectively [XlsxFormatProvider]({%slug radspreadprocessing-formats-and-conversion-xlsx-xlsxformatprovider%}), [XlsFormatProvider]({%slug radspreadprocessing-formats-and-conversion-xls-xlsformatprovider%}), [CsvFormatProvider]({%slug radspreadprocessing-formats-and-conversion-csv-csvformatprovider%}), [TxtFormatProvider]({%slug radspreadprocessing-formats-and-conversion-txt-txtformatprovider%}) and [PdfFormatProvider]({%slug radspreadprocessing-formats-and-conversion-pdf-pdfformatprovider%}). +Currently RadSpreadProcessing supports the following extensions: `.xlsx`, `.xls`, `.csv`, `.txt`, `.json` (export only) and `.pdf` (export only). The format providers available for them are respectively [XlsxFormatProvider]({%slug radspreadprocessing-formats-and-conversion-xlsx-xlsxformatprovider%}), [XlsFormatProvider]({%slug radspreadprocessing-formats-and-conversion-xls-xlsformatprovider%}), [CsvFormatProvider]({%slug radspreadprocessing-formats-and-conversion-csv-csvformatprovider%}), [TxtFormatProvider]({%slug radspreadprocessing-formats-and-conversion-txt-txtformatprovider%}), [JsonFormatProvider]({%slug radspreadprocessing-formats-and-conversion-json-jsonformatprovider%}) (export only) and [PdfFormatProvider]({%slug radspreadprocessing-formats-and-conversion-pdf-pdfformatprovider%}) (export only). The __WorkbookFormatProvidersManager__ class offers several approaches to retrieve the registered format providers. The class offers the `GetProviderByName()` static method that searches through the registered providers to find a provider with a specific name. Also, the manager exposes the __GetProvderByExtension__ extension. The class also contains a static method __GetSupportedExtensions()__ that returns an `IEnumeable` of the currently supported file extensions. diff --git a/libraries/radspreadprocessing/formats-and-conversion/json/images/spreadprocessing-formats-and-conversion-json.png b/libraries/radspreadprocessing/formats-and-conversion/json/images/spreadprocessing-formats-and-conversion-json.png new file mode 100644 index 00000000..926a41f4 Binary files /dev/null and b/libraries/radspreadprocessing/formats-and-conversion/json/images/spreadprocessing-formats-and-conversion-json.png differ diff --git a/libraries/radspreadprocessing/formats-and-conversion/json/json.md b/libraries/radspreadprocessing/formats-and-conversion/json/json.md new file mode 100644 index 00000000..5c55b778 --- /dev/null +++ b/libraries/radspreadprocessing/formats-and-conversion/json/json.md @@ -0,0 +1,17 @@ +--- +title: Json +page_title: Json +slug: radspreadprocessing-formats-and-conversion-json-json +tags: json +published: True +position: 0 +--- + +# Json + +[JavaScript Object Notation](https://www.json.org/json-en.html) (JSON) is a lightweight, text-based data format used to store and exchange structured information. It represents data as key–value pairs (objects) and ordered lists (arrays). JSON is language-independent but closely resembles JavaScript syntax, making it easy for both humans to read and machines to parse. + +![SpreadProcessing Formats and Converstion JSON](images/spreadprocessing-formats-and-conversion-json.png) + + + diff --git a/libraries/radspreadprocessing/formats-and-conversion/json/jsonexportsettings.md b/libraries/radspreadprocessing/formats-and-conversion/json/jsonexportsettings.md new file mode 100644 index 00000000..9cda888a --- /dev/null +++ b/libraries/radspreadprocessing/formats-and-conversion/json/jsonexportsettings.md @@ -0,0 +1,70 @@ +--- +title: Settings +page_title: Using JsonExportSettings +slug: radspreadprocessing-formats-and-conversion-json-jsonexportsettings +tags: json, export, settings, spread, processing, excel, xlsx, xls +published: True +position: 2 +--- + + + +# JsonExportSettings + +The [JsonFormatProvider]({%slug radspreadprocessing-formats-and-conversion-json-jsonformatprovider%}) exposes an **ExportSettings** property of type **JsonExportSettings**. The settings control the behavior of the [JsonFormatProvider]({%slug radspreadprocessing-formats-and-conversion-json-jsonformatprovider%}) when exporting a [Workbook]({%slug radspreadprocessing-working-with-workbooks-what-is-workbook%}) to JSON. By adjusting the available properties you can tailor the size, richness and focus of the generated JSON payload. + +## Properties + +| Property | Type | Default | Description | +|----------|------|---------|-------------| +| **ExportWhat** | [ExportWhat]({%slug radspreadprocessing-formats-and-conversion-json-jsonexportsettings%}#enum-values) | EntireWorkbook | Portion of the workbook to export (entire workbook, active sheet, or selection). | +| **IncludeHiddenSheets** | bool | false | Include hidden worksheets when exporting the entire workbook. | +| **IncludeDefinedNames** | bool | true | Export defined names (named ranges / constants). | +| **IncludeNumberFormats** | bool | true | Emit number format codes for formatted cells. | +| **IncludeCharts** | bool | true | Serialize chart objects from exported sheets. | +| **ChartDataMode** | [ChartDataMode]({%slug radspreadprocessing-formats-and-conversion-json-jsonexportsettings%}#enum-values) | ReferencesOnly | Control chart data representation: only reference formulas, only resolved literal values, or both. | +| **PrettyPrint** | bool | false | Indent JSON output for readability. Disable to reduce size. | +| **ValueRenderMode** | [ValueRenderMode]({%slug radspreadprocessing-formats-and-conversion-json-jsonexportsettings%}#enum-values) | Display | Export raw underlying values, formatted display values, or both. | +| **IncludeBlankCells** | bool | false | Emit blank cells explicitly within the used range; otherwise they are skipped. | +| **IncludeWorkbookProtectionFlag** | bool | true | Include workbook protection state (Workbook.IsProtected). | +| **IncludeActiveSheet** | bool | true | Emit the name of the active worksheet in metadata. | +| **SelectedRanges** | List | empty | Ranges to export when ExportWhat is Selection. Empty collection falls back to active sheet. | +| **IncludeChartStats** | bool | true | Include min, max, average, sum, stdev and count aggregates for chart series. | +| **IncludeChartSummaries** | bool | true | Include natural language summary strings per chart. | +| **IncludeChartTrends** | bool | true | Include simple trend classification (increasing / decreasing / flat) for eligible series. | + +### Enum Values + +**ExportWhat** +* **ActiveSheet** - Exports only the currently active worksheet. +* **EntireWorkbook** - Exports all worksheets in the workbook. (Default) +* **Selection** - Exports only the currently selected cell ranges. + +**ChartDataMode** +* **ReferencesOnly** - Only formula / reference expressions are exported. (Default) +* **ResolvedValues** - Only resolved literal value arrays are exported. +* **Both** - Both references and resolved value arrays are exported. + +**ValueRenderMode** +* **Raw** - Underlying raw cell value is exported. +* **Display** - Formatted display value is exported. (Default) +* **Both** - Both raw and display representations are exported. + +## Basic Usage + +The following example shows how you can create a **JsonExportSettings** instance with the desired settings while exporting a [Workbook]({%slug radspreadprocessing-working-with-workbooks-what-is-workbook%}) to JSON format: + + + +## See Also + +* [JsonFormatProvider]({%slug radspreadprocessing-formats-and-conversion-json-jsonformatprovider%}) +* [Timeout Mechanism]({%slug timeout-mechanism-in-dpl%}) diff --git a/libraries/radspreadprocessing/formats-and-conversion/json/jsonformatprovider.md b/libraries/radspreadprocessing/formats-and-conversion/json/jsonformatprovider.md new file mode 100644 index 00000000..099fe0b4 --- /dev/null +++ b/libraries/radspreadprocessing/formats-and-conversion/json/jsonformatprovider.md @@ -0,0 +1,30 @@ +--- +title: Using JsonFormatProvider +page_title: Using JsonFormatProvider +slug: radspreadprocessing-formats-and-conversion-json-jsonformatprovider +tags: json, export, settings, spread, processing, excel, xlsx, xls, settings +published: True +position: 1 +--- + +# JsonFormatProvider + +The __JsonFormatProvider__ (introduced in **Q4 2025**) makes it easy to export [Workbook]({%slug radspreadprocessing-working-with-workbooks-what-is-workbook%}) data to a structured JSON representation. Unlike the other text-based providers (CSV / TXT), the JSON export can include richer metadata such as number formats, named ranges, chart data and workbook level flags. Currently the provider is **Export-only**. + +The provider also exposes an [ExportSettings]({%slug radspreadprocessing-formats-and-conversion-json-jsonexportsettings%}) property, that allows you to control the export behavior. + +## Prerequisites + +To use the __JsonFormatProvider__ class you need to reference the following NuGet package: +* Telerik.Windows.Documents.Spreadsheet.FormatProviders.Json + +## Export + +The following example demonstrates how to import an existing [Workbook]({%slug radspreadprocessing-working-with-workbooks-what-is-workbook%}) and export it to a JSON file using the default settings. + + + +## See Also + +* [JsonFormatProvider Settings]({%slug radspreadprocessing-formats-and-conversion-json-jsonexportsettings%}) +* [Timeout Mechanism]({%slug timeout-mechanism-in-dpl%}) diff --git a/libraries/radspreadprocessing/formats-and-conversion/pdf/pdfformatprovider.md b/libraries/radspreadprocessing/formats-and-conversion/pdf/pdfformatprovider.md index ac7eb471..1de8c3f3 100644 --- a/libraries/radspreadprocessing/formats-and-conversion/pdf/pdfformatprovider.md +++ b/libraries/radspreadprocessing/formats-and-conversion/pdf/pdfformatprovider.md @@ -23,13 +23,13 @@ __PdfFormatProvider__ makes it easy to export a Workbook to a PDF format. Each W ## Prerequisites -In order to use __PdfFormatProvider__ you need to add references to the assemblies listed below: +In order to use __PdfFormatProvider__ you need to add references to the packages listed below: -* Telerik.Windows.Documents.Spreadsheet.dll +* Telerik.Windows.Documents.Spreadsheet -* Telerik.Windows.Documents.Spreadsheet.FormatProviders.Pdf.dll +* Telerik.Windows.Documents.Spreadsheet.FormatProviders.Pdf ## Export diff --git a/libraries/radspreadprocessing/getting-started.md b/libraries/radspreadprocessing/getting-started.md index 992e667a..aa43f46a 100644 --- a/libraries/radspreadprocessing/getting-started.md +++ b/libraries/radspreadprocessing/getting-started.md @@ -13,7 +13,7 @@ position: 1 This article will get you started in using the __RadSpreadProcessing__ library. It contains the following sections: -* [Assembly References](#assembly-references) +* [Package References](#package-references) * [Creating a Workbook](#creating-a-workbook) @@ -23,11 +23,11 @@ This article will get you started in using the __RadSpreadProcessing__ library. >noteIf you still don't have **Telerik Document Processing** installed, check the **[First Steps]({%slug getting-started-first-steps%})** topic to learn how you can obtain the packages through the different suites. -## Assembly References +## Package References ->The libraries support {{site.dotnetversions}}. .NET Standard-compatible binaries are available as well. The assemblies for .NET Standard don't include 'Windows' in their names. (e.g. **Telerik.Documents.Core.dll**). For more information check [**Cross-Platform Support**]({%slug radspreadprocessing-cross-platform%}) article. +>The libraries support {{site.dotnetversions}}. .NET Standard-compatible packages are available as well. The packages for .NET Standard don't include 'Windows' in their names. (e.g. **Telerik.Documents.Core**). For more information check [**Cross-Platform Support**]({%slug radspreadprocessing-cross-platform%}) article. -In order to use the model of the __RadSpreadProcessing__ library in your project, you need to add references to the following assemblies: +In order to use the model of the __RadSpreadProcessing__ library in your project, you need to add references to the following packages: @@ -39,40 +39,40 @@ In order to use the model of the __RadSpreadProcessing__ library in your project - - + + - - + + - - + + - - + + - - + + - - + + @@ -100,7 +100,7 @@ In order to use the model of the __RadSpreadProcessing__ library in your project
Telerik.Windows.Documents.Core.dllTelerik.Documents.Core.dllTelerik.Windows.Documents.CoreTelerik.Documents.Core
Telerik.Windows.Documents.Spreadsheet.dllTelerik.Documents.Spreadsheet.dllTelerik.Windows.Documents.SpreadsheetTelerik.Documents.Spreadsheet
Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml.dllTelerik.Documents.Spreadsheet.FormatProviders.OpenXml.dllTelerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXmlTelerik.Documents.Spreadsheet.FormatProviders.OpenXml Required when importing/exporting from/to XLSX or CSV.
Telerik.Windows.Documents.Spreadsheet.FormatProviders.Xls.dllTelerik.Documents.Spreadsheet.FormatProviders.Xls.dllTelerik.Windows.Documents.Spreadsheet.FormatProviders.XlsTelerik.Documents.Spreadsheet.FormatProviders.Xls Required when importing/exporting from/to XLS.
Telerik.Windows.Documents.Spreadsheet.FormatProviders.Pdf.dllTelerik.Documents.Spreadsheet.FormatProviders.Pdf.dllTelerik.Windows.Documents.Spreadsheet.FormatProviders.PdfTelerik.Documents.Spreadsheet.FormatProviders.Pdf Required when exporting to PDF.
Telerik.Windows.Documents.Fixed.dllTelerik.Documents.Fixed.dllTelerik.Windows.Documents.FixedTelerik.Documents.Fixed Required when exporting to PDF.
- - Telerik.Documents.ImageUtils.dll -
This assembly is not available in UI for Xamarin. + Telerik.Documents.ImageUtils +
This package is not available in UI for Xamarin.
*
->note Needed when exporting to PDF format a document containing images different than Jpeg and Jpeg2000 or ImageQuality different than High. The **Telerik.Documents.ImageUtils.dll** assembly depends on **SkiaSharp**. In order to use this assembly, you will need to add a reference to [SkiaSharp](https://www.nuget.org/packages/SkiaSharp/). With the [R2 2023 changes](https://docs.telerik.com/devtools/document-processing/libraries/radpdfprocessing/changes-and-backward-compatibility/backward-compatibility#whats-different-in-2023-r2) SkiaSharp replaced ImageSharp as the required dependency. +>note Needed when exporting to PDF format a document containing images different than Jpeg and Jpeg2000 or ImageQuality different than High. The **Telerik.Documents.ImageUtils** package depends on **SkiaSharp**. In order to use this package, you will need to add а reference to [SkiaSharp](https://www.nuget.org/packages/SkiaSharp/). With the [R2 2023 changes](https://docs.telerik.com/devtools/document-processing/libraries/radpdfprocessing/changes-and-backward-compatibility/backward-compatibility#whats-different-in-2023-r2) SkiaSharp replaced ImageSharp as the required dependency. ## Creating a Workbook diff --git a/libraries/radspreadprocessing/overview.md b/libraries/radspreadprocessing/overview.md index 7e7b02bf..cdb19c90 100644 --- a/libraries/radspreadprocessing/overview.md +++ b/libraries/radspreadprocessing/overview.md @@ -69,7 +69,7 @@ The following table describes the most popular features of the RadSpreadProcessi * Excel formats: [**XLSX**]({%slug radspreadprocessing-formats-and-conversion-xlsx-xlsxformatprovider%}), [**XLS**]({%slug radspreadprocessing-formats-and-conversion-xls-xlsformatprovider%}) -* Text formats: [**CSV**]({%slug radspreadprocessing-formats-and-conversion-csv-csvformatprovider%}), [**Plain text**]({%slug radspreadprocessing-formats-and-conversion-txt-txtformatprovider%}) +* Text formats: [**CSV**]({%slug radspreadprocessing-formats-and-conversion-csv-csvformatprovider%}), [**Plain text**]({%slug radspreadprocessing-formats-and-conversion-txt-txtformatprovider%}), [**JSON**]({%slug radspreadprocessing-formats-and-conversion-json-jsonformatprovider%}) (export only) * Other formats: [**PDF**]({%slug radspreadprocessing-formats-and-conversion-pdf-pdfformatprovider%}) (export only), [__DataTable__]({%slug radspreadprocessing-formats-and-conversion-using-data-table-format-provider%}) diff --git a/libraries/radspreadstreamprocessing/features/text-measuring.md b/libraries/radspreadstreamprocessing/features/text-measuring.md index f3fae634..e4dfb453 100644 --- a/libraries/radspreadstreamprocessing/features/text-measuring.md +++ b/libraries/radspreadstreamprocessing/features/text-measuring.md @@ -21,7 +21,7 @@ SpreadStreamProcessing is designed to directly write the content inside the stre CellContentSizeHelper is a static class and exposes two overloads of the GetCellContentSize method. These overloads allow you to pass the formatting applied to the cell as a SpreadCellFormat or as separate values. ->To use this class, you must add a reference to the **Telerik.Windows.Documents.Spreadsheet.dll** for .NET Framework projects or **Telerik.Documents.Spreadsheet.dll** for .NET Standard projects. +>To use this class, you must add a reference to **Telerik.Windows.Documents.Spreadsheet** for .NET Framework projects or **Telerik.Documents.Spreadsheet** for .NET Standard projects. >tipTo achieve accurate results in .NET Standard, it is suggested to use [SpreadFixedTextMeasurer]({%slug radspreadprocessing-cross-platform-text-measure%}#spreadfixedtextmeasurer). diff --git a/libraries/radspreadstreamprocessing/getting-started.md b/libraries/radspreadstreamprocessing/getting-started.md index a6e0ef9a..68f4088d 100644 --- a/libraries/radspreadstreamprocessing/getting-started.md +++ b/libraries/radspreadstreamprocessing/getting-started.md @@ -11,7 +11,7 @@ position: 1 This article will get you started in using the **RadSpreadStreamProcessing** library. It contains the following sections: -* [Assembly References](#assembly-references) +* [Package References](#package-references) * [Supported Formats](#supported-formats) @@ -19,9 +19,9 @@ This article will get you started in using the **RadSpreadStreamProcessing** lib >noteIf you still don't have **Telerik Document Processing** installed, check the **[First Steps]({%slug getting-started-first-steps%})** topic to learn how you can obtain the packages through the different suites. -## Assembly References +## Package References ->The libraries support {{site.dotnetversions}}. .NET Standard-compatible binaries are available as well. The assemblies for .NET Standard don't include 'Windows' in their names. (e.g. **Telerik.Zip.dll**). +>The libraries support {{site.dotnetversions}}. .NET Standard-compatible packages are available as well. The packages for .NET Standard don't include 'Windows' in their names. (e.g. **Telerik.Zip.**). In order to use **RadSpreadStreamProcessing** in your project, you will need to add the references listed below. @@ -34,8 +34,8 @@ In order to use **RadSpreadStreamProcessing** in your project, you will need to - Telerik.Documents.SpreadsheetStreaming.dll - Telerik.Documents.SpreadsheetStreaming.dll + Telerik.Documents.SpreadsheetStreaming + Telerik.Documents.SpreadsheetStreaming   diff --git a/libraries/radwordsprocessing/concepts/document-themes.md b/libraries/radwordsprocessing/concepts/document-themes.md index 70741a87..8c7aa8fb 100644 --- a/libraries/radwordsprocessing/concepts/document-themes.md +++ b/libraries/radwordsprocessing/concepts/document-themes.md @@ -1,5 +1,6 @@ --- title: Document Themes +description: Learn how to use document themes in Telerik Document Processing to apply consistent colors and fonts across your documents. Explore color schemes, font schemes, ThemableColor and ThemableFontFamily objects, and how to dynamically resolve actual values based on the current theme. page_title: Document Themes slug: radwordsprocessing-concepts-document-themes tags: document,themes @@ -9,11 +10,8 @@ position: 3 # Document Themes - - Document themes enable you to specify colors, fonts and a variety of graphic effects in a document and affect the look and feel of the whole document. Each theme contains a color scheme and a font scheme and is represented by the __DocumentTheme__ class and can be modified by the __Theme__ property of [RadFlowDocument]({%slug radwordsprocessing-model-radflowdocument%}). Document theme contains two parts – color scheme – responsible for the colors, and font scheme – responsible for the fonts. - * [Color Schemes](#color-schemes) * [Font Schemes](#font-schemes) @@ -24,8 +22,7 @@ Document themes enable you to specify colors, fonts and a variety of graphic eff ## Color Schemes -A color scheme has a unique name and contains a number of predefined colors. Its representation in __RadFlowDocument__'s model is the __ThemeColorScheme__ class. A scheme defines twelve colors and each of these is assigned a sole __ThemeColorType__. The following list contains all __ThemeColorType__ values: - +A color scheme has a unique name and contains a number of predefined colors. Its representation in __RadFlowDocument__'s model is the __ThemeColorScheme__ class. A scheme defines twelve colors and each of these is assigned a sole __ThemeColorType__. The following list contains all __ThemeColorType__ values: * background1 * text1 @@ -145,8 +142,7 @@ When you need to create a font that depends on the current document theme, you n ## Document Themes -Now that you have a color and a font schemes, you can create a new __DocumentTheme__. You need to specify a name and pass the already created color and font schemes. - +Now that you have a color and a font schemes, you can create a new __DocumentTheme__. You need to specify a name and pass the already created color and font schemes. #### __[C#] Example 5: Create a DocumentTheme object__ @@ -155,10 +151,7 @@ Now that you have a color and a font schemes, you can create a new __DocumentThe DocumentTheme theme = new DocumentTheme("Mine", colorScheme, fontScheme); {{endregion}} - - -There are a number of predefined color and font schemes. You can find them in a static class called [PredefinedThemeSchemes](https://docs.telerik.com/devtools/document-processing/api/Telerik.Windows.Documents.Spreadsheet.Theming.PredefinedThemeSchemes.html). The class exposes the properties __ColorSchemes__ and __FontSchemes__ that hold all predefined schemes. - +There are a number of predefined color and font schemes. You can find them in a static class called [PredefinedThemeSchemes](https://docs.telerik.com/devtools/document-processing/api/Telerik.Windows.Documents.Spreadsheet.Theming.PredefinedThemeSchemes.html). The class exposes the properties __ColorSchemes__ and __FontSchemes__ that hold all predefined schemes. #### __[C#] Example 6: Using a predefined scheme__ @@ -167,11 +160,8 @@ There are a number of predefined color and font schemes. You can find them in a DocumentTheme theme1 = new DocumentTheme("From Predefined schemes", PredefinedThemeSchemes.ColorSchemes[0], PredefinedThemeSchemes.FontSchemes[5]); {{endregion}} - - Changing the current document theme is as easy as setting a single property. - #### __[C#] Example 7: Change the document theme__ {{region cs-radwordsprocessing-concepts-document-themes_6}} @@ -179,7 +169,106 @@ Changing the current document theme is as easy as setting a single property. document.Theme = theme; {{endregion}} - +## Predefined ThemeColorSchemes + +The table includes all 42 predefined theme color schemes with their corresponding color values for each color category (Background 1, Text 1, Background 2, Text 2, Accent 1-6, Hyperlink, and Followed Hyperlink). + +| Theme Name | Background 1 | Text 1 | Background 2 | Text 2 | Accent 1 | Accent 2 | Accent 3 | Accent 4 | Accent 5 | Accent 6 | Hyperlink | Followed Hyperlink | +|------------|--------------|--------|--------------|--------|----------|----------|----------|----------|----------|----------|-----------|-------------------| +| Office | | | | | | | | | | | | | +| Office 2007 - 2010 | | | | | | | | | | | | | +| Grayscale | | | | | | | | | | | | | +| Adjacency | | | | | | | | | | | | | +| Angels | | | | | | | | | | | | | +| Apex | | | | | | | | | | | | | +| Apothecary | | | | | | | | | | | | | +| Aspect | | | | | | | | | | | | | +| Austin | | | | | | | | | | | | | +| Black Tie | | | | | | | | | | | | | +| Civic | | | | | | | | | | | | | +| Clarity | | | | | | | | | | | | | +| Composite | | | | | | | | | | | | | +| Concourse | | | | | | | | | | | | | +| Couture | | | | | | | | | | | | | +| Elemental | | | | | | | | | | | | | +| Equity | | | | | | | | | | | | | +| Essential | | | | | | | | | | | | | +| Executive | | | | | | | | | | | | | +| Flow | | | | | | | | | | | | | +| Foundry | | | | | | | | | | | | | +| Grid | | | | | | | | | | | | | +| Hardcover | | | | | | | | | | | | | +| Horizon | | | | | | | | | | | | | +| Median | | | | | | | | | | | | | +| Metro | | | | | | | | | | | | | +| Module | | | | | | | | | | | | | +| Newsprint | | | | | | | | | | | | | +| Opulent | | | | | | | | | | | | | +| Oriel | | | | | | | | | | | | | +| Origin | | | | | | | | | | | | | +| Paper | | | | | | | | | | | | | +| Perspective | | | | | | | | | | | | | +| Pushpin | | | | | | | | | | | | | +| Slipstream | | | | | | | | | | | | | +| Solstice | | | | | | | | | | | | | +| Technic | | | | | | | | | | | | | +| Thatch | | | | | | | | | | | | | +| Trek | | | | | | | | | | | | | +| Urban | | | | | | | | | | | | | +| Verve | | | | | | | | | | | | | +| Waveform | | | | | | | | | | | | | + + +### Predefined ThemeFontSchemes + +RadWordsProcessing offers a set of predefined ThemeFontSchemes listed in the table below: + +|Theme Name|Major Font|Minor Font| +|----|----|----| +| Office | Calibri Light | Calibri | +| Office 2007 - 2010 | Cambria | Calibri | +| Office 2 | Calibri | Cambria | +| Office Classic | Arial | Times New Roman | +| Office Classic 2 | Arial | Arial | +| Adjacency | Cambria | Calibri | +| Angels | Franklin Gothic Medium | Franklin Gothic Book | +| Apex | Lucida Sans | Book Antiqua | +| Apothecary | Book Antiqua | Century Gothic | +| Aspect | Verdana | Verdana | +| Austin | Century Gothic | Century Gothic | +| Black Tie | Garamond | Garamond | +| Civic | Georgia | Georgia | +| Clarity | Arial | Arial | +| Composite | Calibri | Calibri | +| Concourse | Lucida Sans Unicode | Lucida Sans Unicode | +| Couture | Garamond | Garamond | +| Elemental | Palatino Linotype | Palatino Linotype | +| Equity | Franklin Gothic Book | Perpetua | +| Essential | Arial Black | Arial | +| Executive | Century Gothic | Palatino Linotype | +| Flow | Calibri | Constantia | +| Foundry | Rockwell | Rockwell | +| Grid | Franklin Gothic Medium | Franklin Gothic Medium | +| Hardcover | Book Antiqua | Book Antiqua | +| Horizon | Arial Narrow | Arial Narrow | +| Median | Tw Cen MT | Tw Cen MT | +| Metro | Consolas | Corbel | +| Module | Corbel | Corbel | +| Newsprint | Impact | Times New Roman | +| Opulent | Trebuchet MS | Trebuchet MS | +| Oriel | Century Schoolbook | Century Schoolbook | +| Origin | Bookman Old Style | Gill Sans MT | +| Paper | Constantia | Constantia | +| Perspective | Arial | Arial | +| Pushpin | Constantia | Franklin Gothic Book | +| Slipstream | Trebuchet MS | Trebuchet MS | +| Solstice | Gill Sans MT | Gill Sans MT | +| Technic | Franklin Gothic Book | Arial | +| Thatch | Tw Cen MT | Tw Cen MT | +| Trek | Franklin Gothic Medium | Franklin Gothic Book | +| Urban | Trebuchet MS | Georgia | +| Verve | Century Gothic | Century Gothic | +| Waveform | Candara | Candara | ## Getting Actual Values @@ -194,7 +283,6 @@ In order to get the actual value from __ThemableColor__ or __ThemableFontFamily_ {{endregion}} - #### __[C#] Example 9: Get actual value from ThemableFont__ {{region cs-radwordsprocessing-concepts-document-themes_8}} @@ -202,8 +290,6 @@ In order to get the actual value from __ThemableColor__ or __ThemableFontFamily_ // The actualFont is the same as the Major font of the fontScheme. {{endregion}} - - ## See Also * [RadFlowDocument]({%slug radwordsprocessing-model-radflowdocument%}) diff --git a/libraries/radwordsprocessing/concepts/fields/fields.md b/libraries/radwordsprocessing/concepts/fields/fields.md index 8d8272d2..014ba065 100644 --- a/libraries/radwordsprocessing/concepts/fields/fields.md +++ b/libraries/radwordsprocessing/concepts/fields/fields.md @@ -160,7 +160,7 @@ All fields in the document can be updated using __UpdateFields()__ of __RadFlowD ### Updating PageRef, Page, NumPages, and SectionPages fields. -In R3 2022 the above fields were introduced. Their evaluation requires calculating the size of the document elements. This is why to update them you need to provide an implementation of a [**NumberingFieldsProvider**]({%slug radpdfprocessing-formats-and-conversion-pdf-numbering-fields-provider%}) which can provide the needed layout logic. In the default implementation we are using the the layout logic from the [RadPdfPRocessing]({%slug radpdfprocessing-overview%}) library. To use it you need to add reference to the following assembly: +In R3 2022 the above fields were introduced. Their evaluation requires calculating the size of the document elements. This is why to update them you need to provide an implementation of a [**NumberingFieldsProvider**]({%slug radpdfprocessing-formats-and-conversion-pdf-numbering-fields-provider%}) which can provide the needed layout logic. In the default implementation we are using the the layout logic from the [RadPdfPRocessing]({%slug radpdfprocessing-overview%}) library. To use it you need to add reference to the following package: * **Telerik.Windows.Documents.Fixed** diff --git a/libraries/radwordsprocessing/concepts/fields/numbering-fields-provider.md b/libraries/radwordsprocessing/concepts/fields/numbering-fields-provider.md index 4053d92b..7ecfbaff 100644 --- a/libraries/radwordsprocessing/concepts/fields/numbering-fields-provider.md +++ b/libraries/radwordsprocessing/concepts/fields/numbering-fields-provider.md @@ -13,7 +13,7 @@ The __NumberingFieldsProvider__ is used for calculating the layout of the docume ### Requirements -To use the default implementation of the __NumberingFieldsProvider__ you need to reference the __**Telerik.Documents.Flow.FormatProviders.Pdf**__ assembly. +To use the default implementation of the __NumberingFieldsProvider__ you need to reference the __**Telerik.Documents.Flow.FormatProviders.Pdf**__ package. ### Setting the default implementation diff --git a/libraries/radwordsprocessing/cross-platform.md b/libraries/radwordsprocessing/cross-platform.md index b897a85a..63a43efb 100644 --- a/libraries/radwordsprocessing/cross-platform.md +++ b/libraries/radwordsprocessing/cross-platform.md @@ -10,13 +10,13 @@ position: 2 # Cross-Platform Support -**Telerik Document Processing** comes with **.NET Core** & **.NET Standard** support. There is a set of binaries built against the .NET Core & .NET Standard which you can reference in an application. +**Telerik Document Processing** comes with **.NET Core** & **.NET Standard** support. There is a set of packages built against the .NET Core & .NET Standard which you can reference in an application. ->note The binaries compatible with .NET Standard are distributed with the packages targeting .NET Standard and .NET Core. You can get the assemblies through the **UI for ASP.NET Core**, **UI for Blazor**, **UI for Xamarin**, and **UI for WinUI** suites. There are **NuGet** packages as well that you can access if you have a license for one of the above mentioned suites. +>note The binaries compatible with .NET Standard are distributed with the packages targeting .NET Standard and .NET Core. You can get the packages through the **UI for ASP.NET Core**, **UI for Blazor**, **UI for Xamarin**, and **UI for WinUI** suites. There are **NuGet** packages as well that you can access if you have a license for one of the above mentioned suites. -## Assembly References +## Package References -To use the model of the **RadWordsProcessing** library in your cross-platform project, you need to add references to the following **.Net Standard** assemblies: +To use the model of the **RadWordsProcessing** library in your cross-platform project, you need to add references to the following **.Net Standard** packages: @@ -27,38 +27,38 @@ To use the model of the **RadWordsProcessing** library in your cross-platform pr - + - + - + - + - +
Telerik.Documents.Core.dllTelerik.Documents.Core
Telerik.Documents.Flow.dllTelerik.Documents.Flow
Telerik.Documents.Flow.FormatProviders.Doc.dllTelerik.Documents.Flow.FormatProviders.Doc Required when importing from DOC or DOT files.
Telerik.Documents.Flow.FormatProviders.Pdf.dllTelerik.Documents.Flow.FormatProviders.Pdf Required when exporting to PDF.
Telerik.Documents.Fixed.dllTelerik.Documents.Fixed Required when exporting to PDF.
- Telerik.Documents.ImageUtils.dll -
This assembly is not available in UI for Xamarin. + Telerik.Documents.ImageUtils +
This pckage is not available in UI for Xamarin.
Required when exporting to PDF format a document containing images different than Jpeg and Jpeg2000 or ImageQuality different than High.
->note The **Telerik.Documents.ImageUtils.dll** assembly depends on **SkiaSharp**. To use this assembly, you will need to add a reference to [SkiaSharp](https://www.nuget.org/packages/SkiaSharp/). With the [R2 2023 changes](https://docs.telerik.com/devtools/document-processing/libraries/radpdfprocessing/changes-and-backward-compatibility/backward-compatibility#whats-different-in-2023-r2) SkiaSharp replaced ImageSharp as the required dependency. +>note The **Telerik.Documents.ImageUtils** package depends on **SkiaSharp**. To use this package, you will need to add a reference to [SkiaSharp](https://www.nuget.org/packages/SkiaSharp/). With the [R2 2023 changes](https://docs.telerik.com/devtools/document-processing/libraries/radpdfprocessing/changes-and-backward-compatibility/backward-compatibility#whats-different-in-2023-r2) SkiaSharp replaced ImageSharp as the required dependency. -> Note that for .NET Framework & .NET Core with Windows Compatibility Pack projects, the references contain "Windows" in their names (e.g. **Telerik.Windows.Documents.Core.dll**) +> Note that for .NET Framework & .NET Core with Windows Compatibility Pack projects, the references contain "Windows" in their names (e.g. **Telerik.Windows.Documents.Core**) ## Limitations in .Net Standard diff --git a/libraries/radwordsprocessing/editing/gen-ai-powered-document-insights/complete-context-question-processor.md b/libraries/radwordsprocessing/editing/gen-ai-powered-document-insights/complete-context-question-processor.md index 0993d6fd..73ed872f 100644 --- a/libraries/radwordsprocessing/editing/gen-ai-powered-document-insights/complete-context-question-processor.md +++ b/libraries/radwordsprocessing/editing/gen-ai-powered-document-insights/complete-context-question-processor.md @@ -39,19 +39,18 @@ However, if you're working with larger documents or want to optimize token usage |Method|Description| |---|---| -|**public Task AnswerQuestion(ISimpleTextDocument document, string question)**|Answers a question using the provided document. Parameters: **document** - The document containing the text to process, **question** - The question to answer. Returns a task that represents the asynchronous operation. The task result contains the answer to the question.| +|**public Task AnswerQuestion(SimpleTextDocument document, string question)**|Answers a question using the provided document. Parameters: **document** - The document containing the text to process, **question** - The question to answer. Returns a task that represents the asynchronous operation. The task result contains the answer to the question.| >caution **Security Warning:** The output produced by this API is generated by a Large Language Model (LLM). As such, the content should be considered untrusted and may include unexpected or unsafe data. It is strongly recommended to properly sanitize or encode all output before displaying it in a user interface, logging, or using it in any security-sensitive context. ## CompleteContextProcessorSettings -The **CompleteContextProcessorSettings** class provides configuration options for the question-answering process. +The **CompleteContextProcessorSettings** class defines configuration options for the question-answering process. The following read-only properties can be set only through the constructor: -### Settings Properties - -* **ModelMaxInputTokenLimit**: Gets or sets the maximum input token limit the model allows. -* **TokenizationEncoding**: Gets or sets the tokenization encoding. -* **ModelId**: Gets or sets the ID of the model. +* **ModelMaxInputTokenLimit**: The maximum input token limit the model allows. +* **ModelId**: The ID of the model. +* **TokenizationEncoding**: The tokenization encoding. +* **ProduceJsonFormattedContext**: Determines whether the context sent to the model is in JSON or plain text format, if json format is applicable (dafault is *false*). ## Usage Example diff --git a/libraries/radwordsprocessing/editing/gen-ai-powered-document-insights/custom-partialcontextquestionprocessor.md b/libraries/radwordsprocessing/editing/gen-ai-powered-document-insights/custom-partialcontextquestionprocessor.md new file mode 100644 index 00000000..c6f824a2 --- /dev/null +++ b/libraries/radwordsprocessing/editing/gen-ai-powered-document-insights/custom-partialcontextquestionprocessor.md @@ -0,0 +1,58 @@ +--- +title: Custom PartialContextQuestionProcessor +description: Customize the PartialContextQuestionProcessor by providing a custom IContextRetriever and interface implementations for fragmentation, embedding, similarity, token counting, and retrieval. +page_title: Custom PartialContextQuestionProcessor +slug: radwordsprocessing-features-gen-ai-powered-document-insights-custom-partialcontextquestionprocessor +tags: ai, context, retriever, embeddings, customization, word, flow, document, partial, processor, question, insights, docx +published: True +position: 6 +--- + +# Custom PartialContextQuestionProcessor + +This article explains how to create a custom **PartialContextQuestionProcessor** configuration by supplying your own **IContextRetriever** and related interface implementations. You can tailor every step: splitting text, producing embeddings, ranking relevance, enforcing token limits, formatting context, and retrieving it efficiently to optimize performance, cost, accuracy, or compliance. + +When you need full control over fragmentation, embedding, similarity ranking, and retrieval, use the constructor that accepts an **IContextRetriever**: + +```csharp +PartialContextQuestionProcessor( + IChatClient chatClient, + IContextRetriever contextRetriever, + IEmbeddingSettings settings, + SimpleTextDocument document) +``` + +This constructor gives you end‑to‑end control over how document text is fragmented, embedded, stored, and later selected (ranked) as context for a question, forming your custom **PartialContextQuestionProcessor** pipeline. + +## Interfaces + +All extension points live in **Telerik.Documents.AI.Core** (as abstractions) with their default implementations in **Telerik.Documents.AI.RAG**: + +| Interface | Responsibility | Used By | +|---|---|---| +| **IContextFragmentsManager** | Splits raw document text into token-bounded semantic fragments (pages, sections, paragraphs) | Fragmentation stage | +| **IEmbedder** | Converts fragments into embeddings/vectors for similarity comparison | Embedding stage | +| **ISimilarityCalculator** | Scores fragment relevance against a question/prompt | Ranking stage | +| **ITokensCounter** | Counts tokens for limits enforcement (fragment size, total context) | Throughout pipeline | +| **IEmbeddingSettings** | Provides token & size limits + formatting hints | Configuration source | +| **IContextRetriever** | Orchestrates loading text, preparing embeddings, and returning best context | Retrieval stage | +| **ISupportJsonEmbeddings** / **ISupportPlainTextEmbeddings** | Control how context is formatted for the model (JSON vs plain text) | Formatting stage | +| **IFragments** / **IFragment** | Data structures representing chunk collections and individual chunks | Shared across stages | + +### Life Cycle +1. **SetContextAsync(text, embeddingTokenSize)** - Text is fragmented (**IContextFragmentsManager**), tokens checked (**ITokensCounter**), embeddings generated (**IEmbedder**), and stored. +2. Question time (**GetContextAsync(question)**) - Similarity scores computed (**ISimilarityCalculator**), top fragments selected within limits, context formatted (plain or JSON). +3. Processor sends formatted context + question via **IChatClient** and returns model answer. + +## Custom Implementation + +The example below constructs a custom **PartialContextQuestionProcessor** by supplying a **DefaultContextRetriever** that mixes user implementations (custom **IContextFragmentsManager** and **IEmbedder**) with default components (**DefaultSimilarityCalculator**, **DefaultTokensCounter**, and the retriever's own orchestration). This hybrid approach lets you optimize the most impactful stages (fragmentation + embedding) without rewriting the entire retrieval pipeline. + +>note **DefaultEmbedder** is only available on **net8-windows** and higher. On other target frameworks you must supply your own **IEmbedder** (as shown below with [CustomOpenAIEmbedder]({%slug radwordsprocessing-features-gen-ai-powered-document-insights-partial-context-question-processor%}#implementing-custom-iembedder)). + + +## See Also +* [PartialContextQuestionProcessor]({%slug radwordsprocessing-features-gen-ai-powered-document-insights-partial-context-question-processor%}) +* [SummarizationProcessor]({%slug radwordsprocessing-features-gen-ai-powered-document-insights-summarization-processor%}) +* [CompleteContextQuestionProcessor]({%slug radwordsprocessing-features-gen-ai-powered-document-insights-complete-context-question-processor%}) +* [GenAI-powered Document Insights Overview]({%slug radwordsprocessing-features-gen-ai-powered-document-insights-overview%}) \ No newline at end of file diff --git a/libraries/radwordsprocessing/editing/gen-ai-powered-document-insights/getting-started.md b/libraries/radwordsprocessing/editing/gen-ai-powered-document-insights/getting-started.md index d213b7b5..86bb9076 100644 --- a/libraries/radwordsprocessing/editing/gen-ai-powered-document-insights/getting-started.md +++ b/libraries/radwordsprocessing/editing/gen-ai-powered-document-insights/getting-started.md @@ -14,7 +14,7 @@ The following example demonstrates how to use the GenAI-powered Document Insight >note The following code snippet is valid for Azure Open AI 9.3. The specific **IChatClient** initialization may be different according to the specific version. ->important For .NET {{site.mindotnetversion}}+ (Target OS Windows) with [Packages for .NET {{site.mindotnetversion}} and .NET {{site.maxdotnetversion}} for Windows]({%slug available-nuget-packages%}#packages-for-net-framework-and-net-{{site.mindotnetversion}}-and-net-{{site.maxdotnetversion}}-for-windows), an [IEmbeddingsStorage]({%slug radwordsprocessing-features-gen-ai-powered-document-insights-partial-context-question-processor%}#implementing-custom-iembeddingsstorage) implementation is required for the [PartialContextQuestionProcessor]({%slug radwordsprocessing-features-gen-ai-powered-document-insights-partial-context-question-processor%}). +>important For .NET {{site.mindotnetversion}}+ (Target OS Windows) with [Packages for .NET {{site.mindotnetversion}} and .NET {{site.maxdotnetversion}} for Windows]({%slug available-nuget-packages%}#packages-for-net-framework-and-net-{{site.mindotnetversion}}-and-net-{{site.maxdotnetversion}}-for-windows), an [IEmbedder]({%slug radwordsprocessing-features-gen-ai-powered-document-insights-partial-context-question-processor%}#implementing-custom-iembedder) implementation is required for the [PartialContextQuestionProcessor]({%slug radwordsprocessing-features-gen-ai-powered-document-insights-partial-context-question-processor%}). #### __[C#] Example 1: Using GenAI-powered Document Insights__ @@ -27,5 +27,5 @@ When you run this code, the AI will process your document, generate a summary, a * [Prerequisites]({%slug radwordsprocessing-features-gen-ai-powered-document-insights-prerequisites%}) * [SummarizationProcessor]({%slug radwordsprocessing-features-gen-ai-powered-document-insights-summarization-processor%}) * [PartialContextQuestionProcessor]({%slug radwordsprocessing-features-gen-ai-powered-document-insights-partial-context-question-processor%}) -* [Custom IEmbeddingsStorage Implementation]({%slug radwordsprocessing-features-gen-ai-powered-document-insights-partial-context-question-processor%}#implementing-custom-iembeddingsstorage) +* [Custom IEmbedder Implementation]({%slug radpdfprocessing-features-gen-ai-powered-document-insights-partial-context-question-processor%}#implementing-custom-iembedder) * [CompleteContextQuestionProcessor]({%slug radwordsprocessing-features-gen-ai-powered-document-insights-complete-context-question-processor%}) diff --git a/libraries/radwordsprocessing/editing/gen-ai-powered-document-insights/partial-context-question-processor.md b/libraries/radwordsprocessing/editing/gen-ai-powered-document-insights/partial-context-question-processor.md index 0a22ae34..94ff217b 100644 --- a/libraries/radwordsprocessing/editing/gen-ai-powered-document-insights/partial-context-question-processor.md +++ b/libraries/radwordsprocessing/editing/gen-ai-powered-document-insights/partial-context-question-processor.md @@ -3,7 +3,7 @@ title: PartialContextQuestionProcessor description: PartialContextQuestionProcessor class enables you to ask questions about a Word document and receive answers based on the most relevant parts of the document content. page_title: PartialContextQuestionProcessor slug: radwordsprocessing-features-gen-ai-powered-document-insights-partial-context-question-processor -tags: ai, document, analysis, question, processor, partial, context, embeddings +tags: ai, document, analysis, question, processor, partial, context, embeddings, flow, docx, word published: True position: 4 --- @@ -36,69 +36,63 @@ The **PartialContextQuestionProcessor** is ideal for the following scenarios: |Constructor|Platform|Description| |---|---|---| -|**PartialContextQuestionProcessor(IChatClient chatClient, int modelMaxInputTokenLimit, ISimpleTextDocument document)**|_Specific*_ |Creates an instance with built-in embeddings storage| -|**PartialContextQuestionProcessor(IChatClient chatClient, IEmbeddingsStorage embeddingsStorage, int modelMaxInputTokenLimit, ISimpleTextDocument document)**|Any|Creates an instance with custom embeddings storage| +|**PartialContextQuestionProcessor(IChatClient chatClient, IEmbeddingSettings settings, SimpleTextDocument document)**|_Specific*_ |Creates an instance with built-in embeddings storage| +|**PartialContextQuestionProcessor(IChatClient chatClient, IEmbedder embedder, IEmbeddingSettings settings, SimpleTextDocument document)**|Any|Creates an instance with custom embedding| +|**PartialContextQuestionProcessor(IChatClient chatClient, IContextRetriever contextRetriever, IEmbeddingSettings settings, SimpleTextDocument document)**|Any|Allows [custom **PartialContextQuestionProcessor** configuration]({%slug radwordsprocessing-features-gen-ai-powered-document-insights-custom-partialcontextquestionprocessor%})| -> _*Specific_ The .NET {{site.mindotnetversion}}+ (Target OS Windows) + [Packages for .NET {{site.mindotnetversion}} and .NET {{site.maxdotnetversion}} for Windows]({%slug available-nuget-packages%}#packages-for-net-framework-and-net-{{site.mindotnetversion}}-and-net-{{site.maxdotnetversion}}-for-windows) constructor uses **DefaultEmbeddingsStorage** internally, while the cross-platform constructor requires a custom implementation of **IEmbeddingsStorage** as shown in the [Custom IEmbeddingsStorage Setup]({%slug radwordsprocessing-features-gen-ai-powered-document-insights-partial-context-question-processor%}#implementing-custom-iembeddingsstorage) section. +> _*Specific_ The .NET {{site.mindotnetversion}}+ (Target OS Windows) + [Packages for .NET {{site.mindotnetversion}} and .NET {{site.maxdotnetversion}} for Windows]({%slug available-nuget-packages%}#packages-for-net-framework-and-net-{{site.mindotnetversion}}-and-net-{{site.maxdotnetversion}}-for-windows) constructor uses a default **IEmbedder** internally, while the cross-platform and .NET Framework constructor requires a custom implementation of **IEmbedder** as shown in the [Custom IEmbedder Setup]({%slug radwordsprocessing-features-gen-ai-powered-document-insights-partial-context-question-processor%}#implementing-custom-iembedder) section. ### Properties and Methods |Member|Type|Description| |---|---|---| -|**Settings**|Property|Gets the **PartialContextProcessorSettings** for configuring the AI process| +|**Settings**|Property|Gets the *readonly* [IEmbeddingSettings]({%slug radwordsprocessing-features-gen-ai-powered-document-insights-partial-context-question-processor%}#iembeddingsettings) that configure the AI process| |**AnswerQuestion(string question)**|Method|Returns an answer to the question using relevant document context| >caution **Security Warning:** The output produced by this API is generated by a Large Language Model (LLM). As such, the content should be considered untrusted and may include unexpected or unsafe data. It is strongly recommended to properly sanitize or encode all output before displaying it in a user interface, logging, or using it in any security-sensitive context. -### PartialContextProcessorSettings +### IEmbeddingSettings -The settings class provides configuration options for the question-answering process: +The settings are created only through **EmbeddingSettingsFactory**'s **CreateSettingsForTextDocuments** method and can only be passed to the constructor of the processor. They expose configuration options for the question-answering process through the following properties: * **ModelMaxInputTokenLimit**: Maximum input token limit the model allows -* **TokenizationEncoding**: Tokenization encoding used -* **ModelId**: ID of the AI model -* **MaxNumberOfEmbeddingsSent**: Maximum number of context chunks sent (default: 30) -* **EmbeddingTokenSize**: Size in tokens of each context chunk (default: 300) +* **TokenizationEncoding**: Tokenization encoding used (default: **null**) +* **ModelId**: ID of the AI model (default: **null**) +* **MaxNumberOfEmbeddingsSent**: Maximum number of context chunks sent (default: **null**) +* **EmbeddingTokenSize**: Size in tokens of each context chunk (default: **null**) + + ## Usage Examples -#### Example 1: Using PartialContextQuestionProcessor with default embeddings storage. +#### Example 1: Using PartialContextQuestionProcessor with default embedding. -This example demonstrates how to use the **PartialContextQuestionProcessor** with the built-in embeddings storage on .NET {{site.mindotnetversion}}+ (Target OS Windows) + [Packages for .NET {{site.mindotnetversion}} and .NET {{site.maxdotnetversion}} for Windows]({%slug available-nuget-packages%}#packages-for-net-framework-and-net-{{site.mindotnetversion}}-and-net-{{site.maxdotnetversion}}-for-windows). For setting up the AI client, see the [AI Provider Setup]({%slug radpdfprocessing-features-gen-ai-powered-document-insights-prerequisites%}#ai-provider-setup) section: +This example demonstrates how to use the **PartialContextQuestionProcessor** with the built-in embedding on .NET {{site.mindotnetversion}}+ (Target OS Windows) + [Packages for .NET {{site.mindotnetversion}} and .NET {{site.maxdotnetversion}} for Windows]({%slug available-nuget-packages%}#packages-for-net-framework-and-net-{{site.mindotnetversion}}-and-net-{{site.maxdotnetversion}}-for-windows). For setting up the AI client, see the [AI Provider Setup]({%slug radwordsprocessing-features-gen-ai-powered-document-insights-prerequisites%}#ai-provider-setup) section: -#### Example 2: Using PartialContextQuestionProcessor with Custom Embeddings (.NET Standard) +#### Example 2: Using PartialContextQuestionProcessor with Custom IEmbedder -This example demonstrates how to use the **PartialContextQuestionProcessor** with a custom embeddings storage implementation as described in the [Custom IEmbeddingsStorage Setup]({%slug radwordsprocessing-features-gen-ai-powered-document-insights-partial-context-question-processor%}#implementing-custom-iembeddingsstorage) section: +This example demonstrates how to use the **PartialContextQuestionProcessor** with a custom IEmbedder implementation as described in the [Implementing Custom IEmbedder]({%slug radwordsprocessing-features-gen-ai-powered-document-insights-partial-context-question-processor%}#implementing-custom-iembedder) section: - + -### Implementing custom IEmbeddingsStorage +### Implementing custom IEmbedder -A sample custom implementation for the OllamaEmbeddingsStorage is shown in the below code snippet: +A sample custom CustomOpenAIEmbedder implementation for the IEmbedder is shown in the below code snippet: >note Requires installing the following NuGet packages: -> * **LangChain** -> * **LangChain.Databases.Sqlite** -> * **Microsoft.Extensions.AI.Ollama** +> * **Azure.AI.OpenAI** +> * **Microsoft.Extensions.AI.OpenAI** (v9.3) > * **Telerik.Windows.Documents.AIConnector** > * **Telerik.Windows.Documents.Flow** -1. Install Ollama from [ollama.com](https://ollama.com/). -2. Pull the model you want to use. -3. Start the Ollama server. - - + #### Example 3: Processing Specific Pages -#### Example 4: Optimizing Embeddings Settings - - - ## See Also * [GenAI-powered Document Insights Overview]({%slug radwordsprocessing-features-gen-ai-powered-document-insights-overview%}) diff --git a/libraries/radwordsprocessing/editing/gen-ai-powered-document-insights/prerequisites.md b/libraries/radwordsprocessing/editing/gen-ai-powered-document-insights/prerequisites.md index f40fc929..0d3fad1f 100644 --- a/libraries/radwordsprocessing/editing/gen-ai-powered-document-insights/prerequisites.md +++ b/libraries/radwordsprocessing/editing/gen-ai-powered-document-insights/prerequisites.md @@ -29,16 +29,21 @@ This article explains the requirements for using the GenAI-powered Document Insi ## Required References -In addition to the [standard RadWordsProcessing references]({%slug radwordsprocessing-getting-started%}#assembly-references), you will need to add the following references to use the GenAI-powered Document Insights features: +In addition to the [standard RadWordsProcessing references]({%slug radwordsprocessing-getting-started%}#package-references), you will need to add the following references to use the GenAI-powered Document Insights features: |.NET Framework|.NET Standard-compatible| |---|---| |**Telerik.Windows.Documents.AIConnector** * |**Telerik.Documents.AIConnector** *| -> __*__ The **Documents.AIConnector** NuGet package internally depends on **Microsoft.Extensions.AI.Abstractions** and **SharpToken**. +> __*__ The **Documents.AIConnector** NuGet package internally depends on: > -> * **Microsoft.Extensions.AI.Abstractions** is currently available only in **preview** version. -> * If you are referencing an _assembly/dll_ of **Documents.AIConnector** instead of a NuGet package, you must manually add the **SharpToken** NuGet package. +>* **Telerik.Documents.AI.Core** +>* **Telerik.Documents.AI.RAG** +> * **Microsoft.Extensions.AI.Abstractions** +> * **SharpToken** +> +>**Microsoft.Extensions.AI.Abstractions** is currently available only in **preview** version. +>If you are referencing an _assembly/dll_ of **Documents.AIConnector** instead of a NuGet package, you must manually add the **SharpToken** NuGet package. ## NuGet Packages diff --git a/libraries/radwordsprocessing/editing/gen-ai-powered-document-insights/summarization-processor.md b/libraries/radwordsprocessing/editing/gen-ai-powered-document-insights/summarization-processor.md index f17d2848..25363400 100644 --- a/libraries/radwordsprocessing/editing/gen-ai-powered-document-insights/summarization-processor.md +++ b/libraries/radwordsprocessing/editing/gen-ai-powered-document-insights/summarization-processor.md @@ -27,11 +27,11 @@ The **SummarizationProcessor** class enables you to generate concise summaries o |Property|Description| |---|---| -|**Settings**|Gets or sets the settings that will be used for summarization.| +|**Settings**|Gets the settings that will be used for summarization.| |Method|Description| |---|---| -|**Task Summarize(ISimpleTextDocument document)**|Generates a summary of the provided document. The parameter **document** is an **ISimpleTextDocument** containing the text to be summarized.| +|**Task Summarize(SimpleTextDocument document)**|Generates a summary of the provided document. The parameter **document** is an **ISimpleTextDocument** containing the text to be summarized.| |Event|Description| |---|---| @@ -41,9 +41,10 @@ The **SummarizationProcessor** class enables you to generate concise summaries o ## SummarizationProcessorSettings -The **SummarizationProcessorSettings** class provides configuration options for the summarization process: +The **SummarizationProcessorSettings** class defines configuration options for the summarization process. The following read-only properties can be set only through the constructor: -* **PromptAddition**: Gets or sets an addition for the prompt used for summarization. It can be used for clarification purposes. +* **ModelMaxInputTokenLimit**: The maximum input token limit for the model. +* **PromptAddition**: An addition for the prompt used for summarization. It can be used for clarification purposes. #### __[C#] Example 1: Configuring SummarizationProcessorSettings__ diff --git a/libraries/radwordsprocessing/formats-and-conversion/html/htmlformatprovider.md b/libraries/radwordsprocessing/formats-and-conversion/html/htmlformatprovider.md index 8e46f198..e228416b 100644 --- a/libraries/radwordsprocessing/formats-and-conversion/html/htmlformatprovider.md +++ b/libraries/radwordsprocessing/formats-and-conversion/html/htmlformatprovider.md @@ -11,11 +11,11 @@ position: 3 -__HtmlFormatProvider__ makes it easy to import and export __RadFlowDocument__ to/from HTML format, preserving as much as possible of the document structure and formatting. To use __HtmlFormatProvider__, you should add references to the assemblies listed below: +__HtmlFormatProvider__ makes it easy to import and export __RadFlowDocument__ to/from HTML format, preserving as much as possible of the document structure and formatting. To use __HtmlFormatProvider__, you should add references to the packages listed below: -* Telerik.Windows.Documents.Core.dll -* Telerik.Windows.Documents.Flow.dll +* Telerik.Windows.Documents.Core +* Telerik.Windows.Documents.Flow ## Import diff --git a/libraries/radwordsprocessing/formats-and-conversion/pdf/pdfformatprovider.md b/libraries/radwordsprocessing/formats-and-conversion/pdf/pdfformatprovider.md index 90a85fa2..4e74481d 100644 --- a/libraries/radwordsprocessing/formats-and-conversion/pdf/pdfformatprovider.md +++ b/libraries/radwordsprocessing/formats-and-conversion/pdf/pdfformatprovider.md @@ -11,13 +11,12 @@ position: 2 RadWordsProcessing provides a __PdfFormatProvider__ class that allows you to export a __RadFlowDocument__ to PDF. -All you have to do in order to use __PdfFormatProvider__ is add references to the assemblies listed below: +All you have to do in order to use __PdfFormatProvider__ is add references to the packages listed below: - -* Telerik.Windows.Documents.Core.dll -* Telerik.Windows.Documents.Flow.dll -* Telerik.Windows.Documents.Flow.FormatProviders.Pdf.dll -* Telerik.Windows.Documents.Fixed.dll +* Telerik.Windows.Documents.Core +* Telerik.Windows.Documents.Flow +* Telerik.Windows.Documents.Flow.FormatProviders.Pdf +* Telerik.Windows.Documents.Fixed >note *As of **Q2 2025** the Zip Library will no longer be used as an internal dependency in the rest of the Document Processing Libraries - PdfProcessing, WordsProcessing, SpreadProcessing, SpreadStreamProcessing. It will be replaced by the System.IO.Compression. We will continue to ship the Telerik Zip Library as a standalone library so clients can still use it separately. diff --git a/libraries/radwordsprocessing/formats-and-conversion/plain-text/txt-txtformatprovider.md b/libraries/radwordsprocessing/formats-and-conversion/plain-text/txt-txtformatprovider.md index 51a45a35..4180f5b6 100644 --- a/libraries/radwordsprocessing/formats-and-conversion/plain-text/txt-txtformatprovider.md +++ b/libraries/radwordsprocessing/formats-and-conversion/plain-text/txt-txtformatprovider.md @@ -14,11 +14,11 @@ position: 1 __TxtFormatProvider__ makes it easy to import and export __RadFlowDocument__ to/from plain text format, preserving the document structure. -All you have to do in order to use __TxtFormatProvider__ is add references to the assemblies listed below: +All you have to do in order to use __TxtFormatProvider__ is add references to the packages listed below: -* Telerik.Windows.Documents.Core.dll -* Telerik.Windows.Documents.Flow.dll +* Telerik.Windows.Documents.Core +* Telerik.Windows.Documents.Flow ## Import diff --git a/libraries/radwordsprocessing/formats-and-conversion/rtf/rtfformatprovider.md b/libraries/radwordsprocessing/formats-and-conversion/rtf/rtfformatprovider.md index 8a4b41c2..d6bc8af4 100644 --- a/libraries/radwordsprocessing/formats-and-conversion/rtf/rtfformatprovider.md +++ b/libraries/radwordsprocessing/formats-and-conversion/rtf/rtfformatprovider.md @@ -14,11 +14,11 @@ position: 2 __RtfFormatProvider__ makes it easy to import and export __RadFlowDocument__ to/from RTF format, preserving the entire document structure and formatting. -All you have to do in order to use __RtfFormatProvider__ is add references to the assemblies listed below: +All you have to do in order to use __RtfFormatProvider__ is add references to the packages listed below: -* Telerik.Windows.Documents.Core.dll -* Telerik.Windows.Documents.Flow.dll +* Telerik.Windows.Documents.Core +* Telerik.Windows.Documents.Flow ## Import diff --git a/libraries/radwordsprocessing/formats-and-conversion/word-file-formats/doc/docformatprovider.md b/libraries/radwordsprocessing/formats-and-conversion/word-file-formats/doc/docformatprovider.md index 0ab6be76..be92e774 100644 --- a/libraries/radwordsprocessing/formats-and-conversion/word-file-formats/doc/docformatprovider.md +++ b/libraries/radwordsprocessing/formats-and-conversion/word-file-formats/doc/docformatprovider.md @@ -21,12 +21,12 @@ DOT is the Binary file format developed by Microsoft for representing templates **DocFormatProvider** makes it easy to import a DOC or DOT file into a **RadFlowDocument**, preserving the entire document structure and formatting. -To use **DocFormatProvider**, you should add references to the assemblies listed below: +To use **DocFormatProvider**, you should add references to the packages listed below: -* Telerik.Windows.Documents.Core.dll -* Telerik.Windows.Documents.Flow.dll -* Telerik.Windows.Documents.Flow.FormatProviders.Doc.dll -* Telerik.Windows.Zip.dll +* Telerik.Windows.Documents.Core +* Telerik.Windows.Documents.Flow +* Telerik.Windows.Documents.Flow.FormatProviders.Doc +* Telerik.Windows.Zip ## Import diff --git a/libraries/radwordsprocessing/formats-and-conversion/word-file-formats/docx/docxformatprovider.md b/libraries/radwordsprocessing/formats-and-conversion/word-file-formats/docx/docxformatprovider.md index 9bcdc7e7..3fe68495 100644 --- a/libraries/radwordsprocessing/formats-and-conversion/word-file-formats/docx/docxformatprovider.md +++ b/libraries/radwordsprocessing/formats-and-conversion/word-file-formats/docx/docxformatprovider.md @@ -19,10 +19,10 @@ DOCX, a part of [Office Open XML](http://en.wikipedia.org/wiki/Office_Open_XML), __DocxFormatProvider__ makes it easy to import and export __RadFlowDocument__ to/from DOCX format, preserving the entire document structure and formatting. -All you have to do in order to use __DocxFormatProvider__ is add references to the assemblies listed below: +All you have to do in order to use __DocxFormatProvider__ is add references to the packages listed below: -* Telerik.Windows.Documents.Core.dll -* Telerik.Windows.Documents.Flow.dll +* Telerik.Windows.Documents.Core +* Telerik.Windows.Documents.Flow >note As of **Q2 2025** the Zip Library will no longer be used as an internal dependency in the rest of the Document Processing Libraries - PdfProcessing, WordsProcessing, SpreadProcessing, SpreadStreamProcessing. It will be replaced by the System.IO.Compression. We will continue to ship the Telerik Zip Library as a standalone library so clients can still use it separately. diff --git a/libraries/radwordsprocessing/getting-started.md b/libraries/radwordsprocessing/getting-started.md index 910e7de3..8481fe11 100644 --- a/libraries/radwordsprocessing/getting-started.md +++ b/libraries/radwordsprocessing/getting-started.md @@ -11,7 +11,7 @@ position: 1 This tutorial will take you through the creation of a sample application that uses RadWordsProcessing. -* [Assembly References](#assembly-references) +* [Package References](#package-references) * [Creating RadFlowDocument from Code](#creating-radflowdocument-from-code) @@ -19,11 +19,11 @@ This tutorial will take you through the creation of a sample application that us >noteIf you still don't have **Telerik Document Processing** installed, check the **[First Steps]({%slug getting-started-first-steps%})** topic to learn how you can obtain the packages through the different suites. -## Assembly References +## Package References ->The libraries support {{site.dotnetversions}}. .NET Standard-compatible binaries are available as well. The assemblies for .NET Standard don't include 'Windows' in their names. (e.g. **Telerik.Documents.Core.dll**). For more information check [**Cross-Platform Support**]({%slug radwordsprocessing-cross-platform%}) article. +>The libraries support {{site.dotnetversions}}. .NET Standard-compatible packages are available as well. The packages for .NET Standard don't include 'Windows' in their names. (e.g. **Telerik.Documents.Core**). For more information check [**Cross-Platform Support**]({%slug radwordsprocessing-cross-platform%}) article. -Here is a list of assemblies that contain the __RadWordsProcessing__ functionality and need to be referenced in your project: +Here is a list of packages that contain the __RadWordsProcessing__ functionality and need to be referenced in your project: @@ -34,45 +34,45 @@ Here is a list of assemblies that contain the __RadWordsProcessing__ functionali - - + + - - + + - - + + - + - - + + - + - - + + - - + + - @@ -97,10 +97,10 @@ Here is a list of assemblies that contain the __RadWordsProcessing__ functionali
Telerik.Windows.Documents.Core.dllTelerik.Documents.Core.dllTelerik.Windows.Documents.CoreTelerik.Documents.Core
Telerik.Windows.Documents.Flow.dllTelerik.Documents.Flow.dllTelerik.Windows.Documents.FlowTelerik.Documents.Flow
Telerik.Windows.Documents.DrawingML.dllTelerik.Documents.DrawingML.dllTelerik.Windows.Documents.DrawingMLTelerik.Documents.DrawingML
 
If you need to import DOC or DOT files, you will need to refer the following assembly:If you need to import DOC or DOT files, you will need to refer the following packages:
Telerik.Windows.Documents.Flow.FormatProviders.Doc.dllTelerik.Documents.Flow.FormatProviders.Doc.dllTelerik.Windows.Documents.Flow.FormatProviders.DocTelerik.Documents.Flow.FormatProviders.Doc
 
If you need to export documents to PDF format, you will need to refer the following assemblies:If you need to export documents to PDF format, you will need to refer the following packages:
Telerik.Windows.Documents.Flow.FormatProviders.Pdf.dllTelerik.Documents.Flow.FormatProviders.Pdf.dllTelerik.Windows.Documents.Flow.FormatProviders.PdfTelerik.Documents.Flow.FormatProviders.Pdf
Telerik.Windows.Documents.Fixed.dllTelerik.Documents.Fixed.dllTelerik.Windows.Documents.FixedTelerik.Documents.Fixed
-Telerik.Documents.ImageUtils.dll* -
This assembly is not available in UI for Xamarin. +
Telerik.Documents.ImageUtils* +
This package is not available in UI for Xamarin.
- \* _The Telerik.Documents.ImageUtils.dll assembly is needed when exporting to PDF format a document containing images different than **Jpeg** and **Jpeg2000** or **ImageQuality** different than High._ + \* _The Telerik.Documents.ImageUtils package is needed when exporting to PDF format a document containing images different than **Jpeg** and **Jpeg2000** or **ImageQuality** different than High._ ->note The **Telerik.Documents.ImageUtils.dll** assembly depends on **SkiaSharp**. In order to use this assembly, you will need to add a reference to [SkiaSharp](https://www.nuget.org/packages/SkiaSharp/). With the [R2 2023 changes](https://docs.telerik.com/devtools/document-processing/libraries/radpdfprocessing/changes-and-backward-compatibility/backward-compatibility#whats-different-in-2023-r2) SkiaSharp replaced ImageSharp as the required dependency. +>note The **Telerik.Documents.ImageUtils** package depends on **SkiaSharp**. In order to use this package, you will need to add a reference to [SkiaSharp](https://www.nuget.org/packages/SkiaSharp/). With the [R2 2023 changes](https://docs.telerik.com/devtools/document-processing/libraries/radpdfprocessing/changes-and-backward-compatibility/backward-compatibility#whats-different-in-2023-r2) SkiaSharp replaced ImageSharp as the required dependency. ## Creating RadFlowDocument from Code diff --git a/libraries/radwordsprocessing/model/imageinline.md b/libraries/radwordsprocessing/model/imageinline.md index 7cebb8ab..e6d47b62 100644 --- a/libraries/radwordsprocessing/model/imageinline.md +++ b/libraries/radwordsprocessing/model/imageinline.md @@ -114,7 +114,7 @@ The __ImageInline__ element exposes the following properties: This section explains the behavior of the __Size__ property of The __Image__ object in an __ImageInline__ and how the image sizes are exported to the supported formats. ->important When using the **.NET Standard** version of the RadWordsProcessing binaries, in order to **export to PDF** format documents containing images different than Jpeg and Jpeg2000 or ImageQuality different than High, the **JpegImageConverter** property inside the **FixedExtensibilityManager** has to be set. For more information check the FixedExtensibilityManager in the [PdfProcessing`s Cross-Platform Support]({%slug radpdfprocessing-cross-platform%}) +>important When using the **.NET Standard** version of the RadWordsProcessing packages, in order to **export to PDF** format documents containing images different than Jpeg and Jpeg2000 or ImageQuality different than High, the **JpegImageConverter** property inside the **FixedExtensibilityManager** has to be set. For more information check the FixedExtensibilityManager in the [PdfProcessing`s Cross-Platform Support]({%slug radpdfprocessing-cross-platform%}) * __Insert image without specifying its size__ * Model: Size will be Size.Empty. diff --git a/libraries/radwordsprocessing/model/shapes/shapes.md b/libraries/radwordsprocessing/model/shapes/shapes.md index 529783b2..0d8805c5 100644 --- a/libraries/radwordsprocessing/model/shapes/shapes.md +++ b/libraries/radwordsprocessing/model/shapes/shapes.md @@ -11,11 +11,11 @@ position: 12 **Shapes** enable users to wrap text in a container and visualize it in a specific manner. There are different types of shapes determined by their visual appearance (shape, style, size, etc.). Their variation makes them very useful for drawing attention to specific text. They could also be helpful to manipulate the text appearance (e.g. inline with text or with text wrapping) according to the rest of the document content. ->important To use shapes in your application, you should add a reference to Telerik.Windows.Documents.DrawingML.dll for .NET Framework projects, or Telerik.Documents.DrawingML.dll for projects based on .NET Core. +>important To use shapes in your application, you should add a reference to Telerik.Windows.Documents.DrawingML for .NET Framework projects, or Telerik.Documents.DrawingML for projects based on .NET Core. ## Backward Compatibility -If you would like to, you can skip the import and export of shapes and avoid the need to refer the Telerik.[Windows].Documents.DrawingML assembly. To do so, you should set the SkipShapes property of DocxImportSettings and DocxExportSettings. +If you would like to, you can skip the import and export of shapes and avoid the need to refer the Telerik.[Windows].Documents.DrawingML package. To do so, you should set the SkipShapes property of DocxImportSettings and DocxExportSettings. ## Limitations diff --git a/libraries/radziplibrary/features/zip-extensions.md b/libraries/radziplibrary/features/zip-extensions.md index 8cecff01..c34792d5 100644 --- a/libraries/radziplibrary/features/zip-extensions.md +++ b/libraries/radziplibrary/features/zip-extensions.md @@ -10,13 +10,12 @@ platforms: ajax, mvc, wpf, winforms # Zip Extensions -In addition to the main __ZipLibrary__ control, you could take advantage of a set of helper methods, divided in two classes, which will help you to implement your scenarios faster. All these methods are in the __Telerik.Windows.Zip.Extensions.dll__. +In addition to the main __ZipLibrary__ control, you could take advantage of a set of helper methods, divided in two classes, which will help you to implement your scenarios faster. All these methods are in the __Telerik.Windows.Zip.Extensions__ NuGet package. ->In [**UI for WinForms**](https://docs.telerik.com/devtools/winforms/introduction), the classes are merged in **Telerik.WinControls.dll**, so you will need to refer that assembly instead of Telerik.Windows.Zip.Extensions.dll. +>In [**UI for WinForms**](https://docs.telerik.com/devtools/winforms/introduction), the classes are merged in **Telerik.WinControls**, so you will need to refer that package instead of Telerik.Windows.Zip.Extensions. In this article you will find the classes and their members. - ## The ZipFile class With the __ZipFile__ class, you can utilize static methods to create, extract, or open zip archives with minimal code. Starting with the **Q2 2025** release, some methods now include an additional optional parameter `(TimeSpan? timeout)`. The older overloads of these specific methods, which do not include this parameter, are now obsolete. diff --git a/libraries/radziplibrary/gettingstarted.md b/libraries/radziplibrary/gettingstarted.md index 877ec915..23729a24 100644 --- a/libraries/radziplibrary/gettingstarted.md +++ b/libraries/radziplibrary/gettingstarted.md @@ -25,7 +25,7 @@ The ZIP archive is represented by __ZipArchive__ class. It can be used in 3 mode ## Assembly References ->The libraries support {{site.dotnetversions}}. .NET Standard-compatible binaries are available as well. The assemblies for .NET Standard don't include 'Windows' in their names. (e.g. **Telerik.Zip.dll**). +>The libraries support {{site.dotnetversions}}. .NET Standard-compatible packages are available as well. The packages for .NET Standard don't include 'Windows' in their names. (e.g. **Telerik.Zip**). @@ -35,13 +35,13 @@ The ZIP archive is represented by __ZipArchive__ class. It can be used in 3 mode - - + +
Telerik.Windows.Zip.dllTelerik.Zip.dllTelerik.Windows.ZipTelerik.Zip
->note The binaries compatible with .NET Standard are distributed with the packages targeting .NET Standard and .NET Core. You can obtain the assemblies through the **UI for ASP.NET Core**, **UI for Blazor** and **UI for Xamarin** suites. There are **NuGet** packages as well that you can access if you have a license for one of the above mentioned suites. +>note The binaries compatible with .NET Standard are distributed with the packages targeting .NET Standard and .NET Core. You can obtain the packages through the **UI for ASP.NET Core**, **UI for Blazor** and **UI for Xamarin** suites. There are **NuGet** packages as well that you can access if you have a license for one of the above mentioned suites. ## Open Zip Archive diff --git a/security/overview.md b/security/overview.md index e715b3a7..2649c540 100644 --- a/security/overview.md +++ b/security/overview.md @@ -68,6 +68,6 @@ We closely monitor the [OWASP Top 10](https://owasp.org/www-project-top-ten/) li ## Redistributing Telerik Document Processing -Telerik [Document Processing]({%slug introduction%}) is part of several Telerik bundles and is licensed under the conditions with which you've obtained the product. In the article you can find technical guidelines for protecting the Telerik Document Processing binaries when redistributing them with your integrated product. +Telerik [Document Processing]({%slug introduction%}) is part of several Telerik bundles and is licensed under the conditions with which you've obtained the product. In the [Redistributing Telerik Document Processing]({%slug installation-deploying-telerik-document-processing%}) article you can find technical guidelines for protecting the Telerik Document Processing binaries when redistributing them with your integrated product. For more detailed answers to common security-related questions, please refer to our [Security FAQ page]({%slug security-faq%}). \ No newline at end of file diff --git a/troubleshooting/pdfprocessing.md b/troubleshooting/pdfprocessing.md index 3eb0c3ee..2673b40a 100644 --- a/troubleshooting/pdfprocessing.md +++ b/troubleshooting/pdfprocessing.md @@ -20,7 +20,7 @@ The **.NET Standard** version of the [RadPdfProcessing]({%slug radpdfprocessing- ### Solution -In order to successfully export images different than **Jpeg** and **Jpeg2000** and **ImageQuality** different than **High** you will need to reference the **Telerik.Documents.ImageUtils** assembly/NuGet package in your project. The library also exposes the **FixedExtensibilityManager** class with two specific extensibility points: [ImagePropertiesResolver]({%slug radpdfprocessing-cross-platform-images%}#imagepropertiesresolver) and [JpegImageConverter]({%slug radpdfprocessing-cross-platform-images%}#jpegimageconverter). You would have to set the [ImagePropertiesResolver]({%slug radpdfprocessing-cross-platform-images%}#imagepropertiesresolver)/[JpegImageConverter]({%slug radpdfprocessing-cross-platform-images%}#jpegimageconverter) property or create a custom one inheriting the **ImagePropertiesResolverBase**/**JpegImageConverterBase** class. +In order to successfully export images different than **Jpeg** and **Jpeg2000** and **ImageQuality** different than **High** you will need to reference the **Telerik.Documents.ImageUtils** NuGet package in your project. The library also exposes the **FixedExtensibilityManager** class with two specific extensibility points: [ImagePropertiesResolver]({%slug radpdfprocessing-cross-platform-images%}#imagepropertiesresolver) and [JpegImageConverter]({%slug radpdfprocessing-cross-platform-images%}#jpegimageconverter). You would have to set the [ImagePropertiesResolver]({%slug radpdfprocessing-cross-platform-images%}#imagepropertiesresolver)/[JpegImageConverter]({%slug radpdfprocessing-cross-platform-images%}#jpegimageconverter) property or create a custom one inheriting the **ImagePropertiesResolverBase**/**JpegImageConverterBase** class. #### **[C#] Example 1: Set the default implementation of the ImagePropertiesResolver class** {{region cs-troubleshooting_pdfprocessing_0}} diff --git a/upgrade/upgrade-instructions.md b/upgrade/upgrade-instructions.md index 4b889242..aa1e95c8 100644 --- a/upgrade/upgrade-instructions.md +++ b/upgrade/upgrade-instructions.md @@ -44,7 +44,7 @@ Telerik Document Processing is part of several Telerik bundles and could be upgr [Upgrading Telerik UI for Silverlight](http://docs.telerik.com/devtools/silverlight/installation-and-deployment/upgrading-instructions/installation-upgrading-from-trial-to-developer-license.html) ->Due to the specifics of Telerik Document Processing, a project that uses only assemblies of this product cannot be upgraded using the Upgrade Wizard of Visual Studio Extensions. You can manually replace the assemblies with the new ones or change the project's references to point to the location of the new version. +>Due to the specifics of Telerik Document Processing, a project that uses only packages of this product cannot be upgraded using the Upgrade Wizard of Visual Studio Extensions. You can manually replace the packages with the new ones or change the project's references to point to the location of the new version. ## UI for Xamarin