diff --git a/_config.yml b/_config.yml index f0f21fda..c195db52 100644 --- a/_config.yml +++ b/_config.yml @@ -21,6 +21,9 @@ navigation: release-notes/2024: title: '2024' position: 100 + "ai-coding-assistant": + title: AI Coding Assistant + position: 10 installation-and-deployment: title: Installation and Deployment position: 4 @@ -381,6 +384,7 @@ defaults: mindotnetversion: "8" maxdotnetversion: "9" dotnetversions: ".NET 8 and .NET 9" +skiasharpversion: "3.116.1" # Feedback Form Product Code productCode: TDP diff --git a/ai-coding-assistant/images/dpl-ai-copilot-extension-generating-response.png b/ai-coding-assistant/images/dpl-ai-copilot-extension-generating-response.png new file mode 100644 index 00000000..6c1cb0cd Binary files /dev/null and b/ai-coding-assistant/images/dpl-ai-copilot-extension-generating-response.png differ diff --git a/ai-coding-assistant/images/dpl-ai-copilot-extension-recognized.png b/ai-coding-assistant/images/dpl-ai-copilot-extension-recognized.png new file mode 100644 index 00000000..3bc29082 Binary files /dev/null and b/ai-coding-assistant/images/dpl-ai-copilot-extension-recognized.png differ diff --git a/ai-coding-assistant/images/dpl-ai-copilot-extension.png b/ai-coding-assistant/images/dpl-ai-copilot-extension.png new file mode 100644 index 00000000..df16041b Binary files /dev/null and b/ai-coding-assistant/images/dpl-ai-copilot-extension.png differ diff --git a/ai-coding-assistant/images/install-dpl-ai-copilot-extension.png b/ai-coding-assistant/images/install-dpl-ai-copilot-extension.png new file mode 100644 index 00000000..fa9c1193 Binary files /dev/null and b/ai-coding-assistant/images/install-dpl-ai-copilot-extension.png differ diff --git a/ai-coding-assistant/images/installed-dpl-mcp-server-in-vs-code.png b/ai-coding-assistant/images/installed-dpl-mcp-server-in-vs-code.png new file mode 100644 index 00000000..04eb1614 Binary files /dev/null and b/ai-coding-assistant/images/installed-dpl-mcp-server-in-vs-code.png differ diff --git a/ai-coding-assistant/images/result-sample-prompt-dpl-mcp-server-in-vs-code.png b/ai-coding-assistant/images/result-sample-prompt-dpl-mcp-server-in-vs-code.png new file mode 100644 index 00000000..f4e03154 Binary files /dev/null and b/ai-coding-assistant/images/result-sample-prompt-dpl-mcp-server-in-vs-code.png differ diff --git a/ai-coding-assistant/images/running-mcp-server-in-vs.png b/ai-coding-assistant/images/running-mcp-server-in-vs.png new file mode 100644 index 00000000..98c5de55 Binary files /dev/null and b/ai-coding-assistant/images/running-mcp-server-in-vs.png differ diff --git a/ai-coding-assistant/images/running-sample-prompt-dpl-mcp-server-in-vs-code.png b/ai-coding-assistant/images/running-sample-prompt-dpl-mcp-server-in-vs-code.png new file mode 100644 index 00000000..9a9da17a Binary files /dev/null and b/ai-coding-assistant/images/running-sample-prompt-dpl-mcp-server-in-vs-code.png differ diff --git a/ai-coding-assistant/images/sample-prompt-dpl-mcp-server-in-vs-code-signing-document.png b/ai-coding-assistant/images/sample-prompt-dpl-mcp-server-in-vs-code-signing-document.png new file mode 100644 index 00000000..2dd3bbb0 Binary files /dev/null and b/ai-coding-assistant/images/sample-prompt-dpl-mcp-server-in-vs-code-signing-document.png differ diff --git a/ai-coding-assistant/images/sample-prompt-dpl-mcp-server-in-vs-code.png b/ai-coding-assistant/images/sample-prompt-dpl-mcp-server-in-vs-code.png new file mode 100644 index 00000000..7e4f062b Binary files /dev/null and b/ai-coding-assistant/images/sample-prompt-dpl-mcp-server-in-vs-code.png differ diff --git a/ai-coding-assistant/images/setup-and-use-dpl-mcp-server-in-vs-code-full.gif b/ai-coding-assistant/images/setup-and-use-dpl-mcp-server-in-vs-code-full.gif new file mode 100644 index 00000000..039e6ad3 Binary files /dev/null and b/ai-coding-assistant/images/setup-and-use-dpl-mcp-server-in-vs-code-full.gif differ diff --git a/ai-coding-assistant/mcp-server.md b/ai-coding-assistant/mcp-server.md new file mode 100644 index 00000000..a39bea88 --- /dev/null +++ b/ai-coding-assistant/mcp-server.md @@ -0,0 +1,243 @@ +--- +title: MCP Server +page_title: DPL MCP Server +description: Learn how to add and use the Telerik Document Processing MCP Server as a .NET Document Processing AI coding assistant and code generator for better developer productivity. The Telerik Document Processing MCP server provides proprietary context about Telerik UI for .NET Document Processing to AI-powered software. +slug: ai-mcp-server +tags: telerik, dpl, ai, server, mcp, dotnet,coding, assistant +published: True +position: 2 +--- + + +# MCP Server + +The Telerik Document Processing [MCP (Model Context Protocol) Server](https://modelcontextprotocol.io/introduction) lets you interact with AI and reach new levels of developer productivity. The MCP server provides proprietary context to AI-powered IDEs, apps and tools. You can use the MCP server for Document Processing code generation and successfully prompt more complex questions and tasks, and generate tailored code that includes the [Telerik Document Processing Libraries](https://www.telerik.com/document-processing-libraries). + +## Supported Libraries + +* [RadPdfProcessing]({%slug radpdfprocessing-overview%}) + +## Prerequisites for the MCP Server + +In addition to the [prerequisites for the AI Coding Assistant]({%slug ai-coding-assistant%}#prerequisites-for-the-ai-coding-assistant), to use the Telerik Document Processing (DPL) MCP server, you need: + +* [Node.js](https://nodejs.org/en) 18 or newer. +* An [MCP-compatible client](https://modelcontextprotocol.io/clients) that supports **MCP tools** (latest version recommended). + +## Installation + +Use the documentation of your AI-powered MCP client to add the Telerik Document Processing MCP server to a specific workspace or globally. You can see installation tips and examples for some popular MCP clients below. + +### Installing the Telerik Document Processing MCP server using npm: + +```bash +npm i @progress/telerik-dpl-mcp +``` + +### Installing in VS Code + +![Installing DPL MCP Server in VS Code ><](images/setup-and-use-dpl-mcp-server-in-vs-code-full.gif) + +## Configuration + +Use these settings when configuring the server in your MCP client: + +|Setting|Value| +|----|----| +| Package Name | `@progress/telerik-dpl-mcp` | +| Type | `stdio` (standard input/output transport) | +| Command | `npx` | +| Arguments | `-y` | +| Server Name | `telerik-dpl-mcp` (customizable) | + +### License Configuration + +Add your [Telerik license key]({%slug setting-up-license-key%}) as an environment parameter in your `mcp.json` file either as a path or as a script key. + +#### Option 1: License File Path (Recommended) + + ```json + "env": { + "TELERIK_LICENSE_PATH": "THE_PATH_TO_YOUR_LICENSE_FILE" + } + ``` + +#### Option 2: Direct License Key + + ```json + "env": { + "TELERIK_LICENSE": "YOUR_LICENSE_KEY_HERE" + } + ``` + +> Option 1 is recommended unless you're sharing settings across different systems. Remember to [update your license key]({%slug setting-up-license-key%}#updating-your-license-key) when necessary. + +>note Usually, the `.mcp.json` file is expected to be found in the user's directory: %USERPROFILE% + +## Visual Studio + +For complete setup instructions, see [Use MCP servers in Visual Studio](https://learn.microsoft.com/en-us/visualstudio/ide/mcp-servers). + +> Early Visual Studio 17.14 versions require the Copilot Chat window to be open when opening a solution for the MCP server to work properly. + +### Workspace-Specific Setup: + +1. Add `.mcp.json` to your solution folder: + + ```json + { + "servers": { + "telerik-dpl-mcp": { + "type": "stdio", + "command": "npx", + "args": ["-y", "@progress/telerik-dpl-mcp@latest"], + "env": { + "TELERIK_LICENSE_PATH": "THE_PATH_TO_YOUR_LICENSE_FILE", + // or + "TELERIK_LICENSE": "YOUR_LICENSE_KEY" + } + } + }, + "inputs": [] + } + ``` + +2. Restart Visual Studio. +3. Enable the `telerik-dpl-mcp` tool in the [Copilot Chat window's tool selection dropdown](https://learn.microsoft.com/en-us/visualstudio/ide/mcp-servers?view=vs-2022#configuration-example-with-github-mcp-server). + +### Global Setup: + +Add the `.mcp.json` file to your user directory (`%USERPROFILE%`, e.g., `C:\Users\YourName\.mcp.json`). + +## Visual Studio Code + +For complete setup instructions, see [Use MCP servers in Visual Studio Code](https://code.visualstudio.com/docs/copilot/chat/mcp-servers). + +> Visual Studio Code 1.102.1 or newer is required to use the Telerik MCP Server + +The basic setup in Visual Studio Code follows these steps: + +1. Enable [`chat.mcp.enabled`](vscode://settings/chat.mcp.enabled) in Visual Studio Code settings. +2. Create `.vscode/mcp.json` in your workspace root (or user folder for global setup): + + ```json +{ + "servers": { + "telerik-dpl-mcp": { + "type": "stdio", + "command": "npx", + "args": [ + "@progress/telerik-dpl-mcp@latest"], + "env": { + "TELERIK_LICENSE_PATH": "THE_PATH_TO_YOUR_LICENSE_FILE", + // or + "TELERIK_LICENSE": "YOUR_LICENSE_KEY" + } + } + }, + "inputs": [] +} + ``` + +3. For global discovery, enable [`chat.mcp.discovery.enabled`](vscode://settings/chat.mcp.discovery.enabled) in `settings.json`: + + ```json + { + "chat.mcp.discovery.enabled": true + } + ``` + +4. Restart Visual Studio Code. + +![Installed DPL MCP Server in VS Code ><](images/installed-dpl-mcp-server-in-vs-code.png) + +## Cursor + +For complete setup instructions, see [Model Context Protocol](https://docs.cursor.com/context/mcp). + +Create `.cursor/mcp.json` in your workspace root (or user folder for global setup): + +```json +{ + "mcpServers": { + "telerik-dpl-mcp": { + "type": "stdio", + "command": "npx", + "args": ["-y", "@progress/telerik-dpl-mcp@latest"], + "env": { + "TELERIK_LICENSE_PATH": "THE_PATH_TO_YOUR_LICENSE_FILE", + // or + "TELERIK_LICENSE": "YOUR_LICENSE_KEY" + } + } + } +} +``` + +## Usage + +>note When switching between tasks and files, start a new session in a new chat window to avoid polluting the context with irrelevant or outdated information. + +The Telerik Document Processing MCP Server can be used in `Agent` mode as follows: + +1. Start your prompt with `#telerik-dpl-assistant` (or with # followed by your custom server name, if set, e.g. `#telerik-dpl-mcp`). + +2. Inspect the output and verify that the MCP Server is used. Look for a similar statement in the output (the exact text may vary across tools): + - Visual Studio: `Running telerik-dpl-mcp` + - Visual Studio Code: `Running telerik-dpl-mcp` + - Cursor: `Calling MCP tool telerik-dpl-mcp` + +3. If the MCP server is not used even though it's installed and enabled, double-check the server name in your configuration and try rephrasing your prompt. + +4. Grant permissions when prompted (per session, workspace, or always). + +4. Start fresh sessions for unrelated prompts to avoid context pollution. + +### Improving Server Usage + +To increase the likelihood of the Telerik MCP server being used, add custom instructions to your AI tool: +- [GitHub Copilot custom instructions](https://docs.github.com/en/copilot/customizing-copilot/adding-repository-custom-instructions-for-github-copilot#about-repository-custom-instructions-for-github-copilot-chat) +- [Cursor rules](https://docs.cursor.com/context/rules) + +### Sample Prompts + +The following examples demonstrate useful prompts for the Telerik Document Processing MCP Server: + +* "`#telerik-dpl-mcp` import two PDF files and merge them into a single one" + + ![Sample Prompt for MCP Server in VS Code Merging PDFs ><](images/sample-prompt-dpl-mcp-server-in-vs-code.png) + +|Copilot calling the DPL MCP Server in VS Code|Copilot final answer in VS Code| +|----|----| +|![Running Sample Prompt for MCP Server in VS Code Merging PDFs ><](images/running-sample-prompt-dpl-mcp-server-in-vs-code.png)|![Produced Result with MCP Server in VS Code Merging PDFs ><](images/result-sample-prompt-dpl-mcp-server-in-vs-code.png)| + + +* "`#telerik-dpl-mcp` create a PDF file with a link to "http://telerik.com" in it" + + +>caption Running MCP Server in Visual Studio + +![Running MCP Server in Visual Studio ><](images/running-mcp-server-in-vs.png) + +## Usage Limits + +A Telerik [Subscription license](https://www.telerik.com/purchase.aspx?filter=web) is recommended in order to use the Telerik DPL AI Coding Assistant without restrictions. Perpetual license holders and trial users can make a [limited number of requests per year]({%slug ai-coding-assistant%}#usage-limits). + +## Local AI Model Integration + +You can use the Telerik DPL MCP server with local large language models (LLMs): + +1. Run a local model, for example, through [Ollama](https://ollama.com). +2. Use a bridge package like [MCP-LLM Bridge](https://github.com/patruff/ollama-mcp-bridge). +3. Connect your local model to the Telerik MCP server. + +This setup allows you to use the Telerik AI Coding Assistant without cloud-based AI models. + +## See Also + +* [AI Coding Assistant Overview]({%slug ai-coding-assistant%}) +* [Telerik Document Processing Prompt Library]({%slug ai-prompt-library%}) \ No newline at end of file diff --git a/ai-coding-assistant/overview.md b/ai-coding-assistant/overview.md new file mode 100644 index 00000000..97e23767 --- /dev/null +++ b/ai-coding-assistant/overview.md @@ -0,0 +1,97 @@ +--- +title: Overview +page_title: Telerik Document Processing AI Tooling Overview +description: Learn about the Telerik Document Processing Libraries AI-powered developer tools that integrate with your IDE or code editor for greater productivity and enhanced developer experience. +slug: ai-coding-assistant +tags: ai, dpl, document, processing, coding, assistant +published: True +position: 0 +--- + +# AI Coding Assistant + +[Telerik Document Processing]({%slug introduction%}) offers an **AI Coding Assistant**, which helps you enhance your productivity and reduce guesswork when building applications with the [Document Processing Libraries]({%slug introduction%}). The coding assistant is an AI code generator that provides specialized context to AI models, enabling them to produce higher-quality code samples. + +## Available Tools + +The **AI Coding Assistant** is available through the following tool: + +* [MCP server]({%slug ai-mcp-server%})—A powerful tool for running complex or multi-step prompts that integrates with any MCP-enabled client. + +### Key Features + +The major features are listed in the table below. + +| Feature| MCP Server| +|-----|----| +|Prompt Handling|Handles complex, multi-step prompts| +|Client Compatibility|Works with MCP-enabled clients (e.g., Cursor, Copilot Agent mode)| +|Code Suggestions|Can directly suggest changes and rebuild applications to verify code| +|Response Focus|Primarily code-focused| + +## Prerequisites for the AI Coding Assistant + +To use the Telerik Document Processing Libraries AI Coding Assistant, you need: + +* A [Telerik user account](https://www.telerik.com/account/). +* An active [Telerik license](https://www.telerik.com/purchase.aspx?filter=web) that includes Telerik Document Processing. +* An application that uses the Telerik [Document Processing Libraries]({%slug introduction%}). + +## Intended Use + +>warning Always double-check the code and solutions proposed by any AI-powered tool before applying them to your project. + +You can use the AI Coding Assistant for: + +* **Initial code generation:** Quickly create / update / convert documents in your app to speed up the initial development. +* **Basic document library configuration:** Enable or disable specific document library features, or fine tune the configuration through prompting. More complex configurations are possible but may require additional manual work to be production-ready. +* **Dummy data generation:** Quickly add data to your app for testing and prototyping purposes. Avoid exposing or providing access to your proprietary or production data to AI-enabled tools. +* **Step-by-step explanations:** Understand the solutions provided by the AI Coding Assistant through the detailed explanations (depends on the tool, mode, and model used). To further develop your knowledge, check the respective documentation. +* **Preliminary troubleshooting:** Resolve obvious and easy-to-solve issues affecting your code. For more complex issues, look for assistance from the community or contact the support team. + +## Recommendations + +Consider the following recommendations when working with the AI Coding Assistant: + +* When switching between tasks and files, start a new session in a new chat window to avoid polluting the context with irrelevant or outdated information. +* At the time of publishing, **Claude Sonnet 4** and **GPT-5** produce optimal results. +* Specify the [Target Framework]({%slug available-nuget-packages%}) (e.g. .NET Framework, .NET Standard, .NET {{site.mindotnetversion}} (Target OS: *None*), .NET {{site.mindotnetversion}} (Target OS: *Windows*)) for producing as high-quality results as possible. + +## Usage Limits + +Access to the Telerik Document Processing AI Coding Assistant depends on your [Telerik license type](https://www.telerik.com/purchase/faq/licensing-purchasing): + +* Subscription License + * A Subscription is the primary license that grants full access to the AI Coding Assistant. + * Includes a virtually unlimited number of requests, with a fair use threshold of 300 requests per day. + * Best for ongoing and high-volume usage. +* Perpetual License (Limited Access) + * Perpetual licenses include limited access of 50 requests per year. + * Intended for exploring and trying out the AI Coding Assistant. + * For continued or higher-volume access, upgrade to a Subscription license. +* Trial License + * Trial licenses include 300 requests per trial per year. + * Reactivating the same trial for a new release does not grant additional requests. + * Designed for evaluating the feature before purchasing. + +> All Telerik AI tools share a single request limit for your Telerik account. For example, the [Telerik MCP server]({%slug ai-mcp-server%}) takes up from the same usage quota. +> When using the Telerik Document Processing MCP server, one prompt may trigger several requests, depending on the prompt complexity. + +## Privacy + +The Telerik Document Processing AI Coding Assistant operates under strict privacy guidelines: + +* The Assistant does not have access to your workspace and application code. Note that when using the Telerik Document Processing MCP server (or any other MCP server), the LLM generates parameters for the MCP server request, which may include parts of your application code. + +* The Assistant does not have access to your workspace and application code. Note that when using the DPL MCP server (or any other MCP server), the LLM generates parameters for the MCP server request, which may include parts of your application code. +* The Assistant does not use your prompts to train Telerik AI models. +* The Assistant does not generate the actual responses and has no access to these responses. The Assistant only provides a better context that helps your selected model (for example, GPT, Gemini, Claude) provide better responses. +* The Assistant does not associate your prompts to your Telerik user account. Your prompts and generated context are anonymized and stored for statistical and troubleshooting purposes. +* The Assistant stores metrics about how often and how much you use it in order to ensure compliance with the [allowed number of requests that correspond to your current license](#usage-limits). + +Make sure to also get familiar with the terms and privacy policy of your selected AI model and AI client. + +## Next Steps + +* Configure the [Telerik Document Processing MCP Server]({%slug ai-mcp-server%}) +* Explore the [Telerik Document Processing Prompt Library]({%slug ai-prompt-library%}). diff --git a/ai-coding-assistant/prompt-library.md b/ai-coding-assistant/prompt-library.md new file mode 100644 index 00000000..6dfca2d8 --- /dev/null +++ b/ai-coding-assistant/prompt-library.md @@ -0,0 +1,137 @@ +--- +title: Prompt Library +page_title: Prompt Library +description: Explore prompt engineering techniques and ready-to-use prompt templates for the AI coding assistant of Telerik Document Processing Libraries. +slug: ai-prompt-library +tags: telerik, dpl, ai, server, mcp, dotnet,coding, assistant, prompt, library +published: True +position: 3 +--- + +# Prompt Library + +The prompts provided here are intended and optimized for use with Telerik Document Processing [AI Coding Assistant]({%slug ai-coding-assistant%}). When you run them in the [MCP Server]({%slug ai-mcp-server%}), these prompts will help you kick start your app development, speed up the component configuration process, and troubleshoot your code. + +You can use the provided prompts as they are or modify them to fit your use case. Make sure to start your prompt with the respective [MCP Server]({%slug ai-mcp-server%}) handle). + +You can also use the prompts with any AI-powered tool of your choice. However, the Telerik Document Processing AI Coding Assistant is developed to provide highly accurate results based extensively on the documentation, APIs, and community knowledge for Telerik Document Processing. Running the prompts outside the AI Coding Assistant may not produce as relevant results. + +The list of prompts is not exhaustive and the Telerik Document Processing team is constantly working on adding more prompts to the library. + +>caution Always double-check the code and solutions proposed by AI-powered tool before applying them to your project. + +## How to Use This Library + +Quick Start Guide: + +1. Find a prompt that matches your needs + +1. Copy the prompt text + +1. Paste it in your IDE with the AI Assistant + +1. Customize the prompt for your specific use case + +## General Prompts + +The section provides examples of general questions related to RadPdfProcessing. + + + + + + + + + + +
Create a New PDF Document with TextCreate a New PDF Document with a Table
+

+#telerik_dpl_assistant show me how to create a PDF document and insert text "Hello Telerik Document Processing".
+			  
+
+

+#telerik_dpl_assistant create a PDF document with a table that has 3 rows and 3 columns, with background highlighting on the header row and red top and bottom borders for the entire table.
+			  
+
+ + + + + + + + + + +
Create a New PDF Document with a BarcodeCreate a PDF Document with a Specific font
+

+#telerik_dpl_assistant create a PDF document with Barcode inside the first page and export it.
+			  
+
+

+#telerik_dpl_assistant  create a PDF document with text using Arial font and font size 12.
+			  
+
+ + + + + + + + + + +
Register a FontGenerate an Interactive Form
+

+#telerik_dpl_assistant register a font.
+			  
+
+

+#telerik_dpl_assistant create a new PDF document with an interactive form containing a text field, a combobox field and a listbox field. 
+			  
+
+ + + + + + + + + + +
Create a PDF with a Text AnnotationEmbed a Text File in a PDF
+

+#telerik_dpl_assistant implement code for generating a PDF document with a red highlighted text annotation "I am a highlighted annotation."
+			  
+
+

+#telerik_dpl_assistant show me a complete code example on how to embed a text file.
+			  
+
+ + + + + + + + + + +
Generate and Export a PDF Document to an ImageGenerate an Accessible PDF document
+

+#telerik_dpl_assistant create a PDF document with a "Hello DPL!" text in the middle of the page and export it to a PNG image.
+			  
+
+

+#telerik_dpl_assistant create a PDF/UA1 compliant document with StructureTree and text content in MarkedContent container with StructureTag set. Position the text in the middle of the page.
+			  
+
+ +## See Also + +* [AI Coding Assistant Overview]({%slug ai-coding-assistant%}) +* [Telerik DPL MCP Server]({%slug ai-mcp-server%}) \ No newline at end of file diff --git a/getting-started/first-steps.md b/getting-started/first-steps.md index a6d4a173..a226e655 100644 --- a/getting-started/first-steps.md +++ b/getting-started/first-steps.md @@ -53,14 +53,12 @@ This sample application will use [RadWordsProcessing]({%slug radwordsprocessing- For .NET Framework project: * __Telerik.Windows.Documents.Core.dll__ * __Telerik.Windows.Documents.Flow.dll__ - * ~~Telerik.Windows.Zip.dll~~* For .NET Standard ({{site.dotnetversions}}) project: * __Telerik.Documents.Core.dll__ * __Telerik.Documents.Flow.dll__ - * ~~Telerik.Zip.dll~~* - >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 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: diff --git a/introduction.md b/introduction.md index e41f729b..81b3a64e 100644 --- a/introduction.md +++ b/introduction.md @@ -55,7 +55,8 @@ Telerik Document Processing features the following libraries: |**Any document. Any Business.**|The Telerik Document Processing is suitable for various business cases and scenarios, where document creation or manipulation is required| |**Support for Variety of File Formats**|The Telerik Document Processing includes 5 libraries for manipulating [Office Open XML](https://en.wikipedia.org/wiki/Office_Open_XML) file formats and PDF documents in your application.| |**Timeout Mechanism**|[Timeout Mechanism]({%slug timeout-mechanism-in-dpl%}) 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.| -|**GenAI-powered Document Insights**|Enables you to easily extract insights from PDF documents using Large Language Models (LLMs). This functionality enables you to summarize document content and ask questions about it, with the AI providing relevant answers based on the document's content. [Read More]({%slug radpdfprocessing-features-gen-ai-powered-document-insights-overview%})| +|**GenAI-powered Document Insights**|Enables you to easily extract insights from PDF documents using Large Language Models (LLMs). This functionality enables you to summarize document content and ask questions about it, with the AI providing relevant answers based on the document's content. [[Read More]]({%slug radpdfprocessing-features-gen-ai-powered-document-insights-overview%})| +|**AI Coding Assistant**|Provides specialized context to AI models, enabling them to produce higher-quality code samples. [[Read More]]({%slug ai-coding-assistant%})| For more details about the benefits of using Telerik Document Processing, see the [Telerik Document Processing product overview page](https://www.telerik.com/document-processing-libraries). diff --git a/libraries/radpdfprocessing/concepts/fonts.md b/libraries/radpdfprocessing/concepts/fonts.md index 1c132c55..105bbaa2 100644 --- a/libraries/radpdfprocessing/concepts/fonts.md +++ b/libraries/radpdfprocessing/concepts/fonts.md @@ -18,6 +18,8 @@ position: 5 >note As of **Q2 2024** RadPdfProcessing offers support for OTF (OpenType Font) font file format. +>important 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. + ## Supported Font Types >tip *A character is an abstract symbol, whereas a glyph is a specific graphical rendering of a character. Glyphs are organized into fonts. A font defines glyphs for a particular character set; for example, the Helvetica and Times fonts define glyphs for a set of standard Latin characters. A font for use with a PDF consumer application is prepared in the form of a program. Such a font program is written in a special-purpose language, such as the Type 1 or TrueType font format, that is understood by a specialized font interpreter. In PDF, the term `font` refers to a font dictionary, a PDF object that identifies the font program and contains additional information about it. There are several different font types, identified by the Subtype entry of the font dictionary. For most font types, the font program is defined in a separate font file, which may be either embedded in a PDF stream object or obtained from an external source. The font program contains glyph descriptions that generate glyphs. A content stream paints glyphs on the page by specifying a font dictionary and a string object that is interpreted as a sequence of one or more character codes identifying glyphs in the font. * (PDF Reference 1.7) diff --git a/libraries/radpdfprocessing/cross-platform/fonts.md b/libraries/radpdfprocessing/cross-platform/fonts.md index 1d24cdbf..018c0137 100644 --- a/libraries/radpdfprocessing/cross-platform/fonts.md +++ b/libraries/radpdfprocessing/cross-platform/fonts.md @@ -1,8 +1,9 @@ --- title: Fonts +description: Learn how to manage and embed fonts in PDF documents using Telerik RadPdfProcessing for cross-platform .NET applications. page_title: Fonts slug: radpdfprocessing-cross-platform-fonts -tags: cross,platform +tags: cross, platform, font, blazor, core, xamarin, winui, maui, net, standard, linux, ios platforms: blazor, core, xamarin, winui, maui published: True position: 1 @@ -10,22 +11,26 @@ position: 1 # Fonts -Unlike the .NET Framework one, RadPdfProcessing’s .NET Standard version does not offer a default mechanism to read fonts. The **FixedExtensibilityManager** class is exposed to help implement this functionality. +Unlike the .NET Framework and .NET (Target OS: *Windows*) version, the RadPdfProcessing's **.NET Standard** and **.NET (Target OS: *None*)** version does not offer a default mechanism for reading fonts. The **FixedExtensibilityManager** class is exposed to help implement this functionality. ## Setting and Exporting Fonts -PdfProcessing needs to have access to the font data so that it can read it and add it to the PDF file. That is why, to allow the library to create and use fonts, you will need to provide an implementation of the **FontsProviderBase** abstract class and set this implementation to the FontsProvider property of the **FixedExtensibilityManager**. +RadPdfProcessing needs access to the font data, so that it can read it and add it to the PDF file. That is why, to allow the library to create and use fonts, you will need to provide an implementation of the **FontsProviderBase** abstract class and set this implementation to the **FontsProvider** property of the **FixedExtensibilityManager**. You can find a detailed **FixedExtensibilityManager** and **FontsProvider** descripiton and implementaion in the [How to implement a FontsProvider]({%slug pdfprocessing-implement-fontsprovider%}) article. ->important If the FontsProvider property is not set, a default font will be used when exporting the document. +>caution If the FontsProvider property is not set, a default font will be used when exporting the document in cross-platform applications. + +>important When converting a document (e.g. DOCX, HTML, etc.) to PDF format in **.NET Standard** and **.NET (Target OS: *None*)** projects, fonts from the original document are not automatically maintained in the PDF unless you explicitly provide the font data. This is especially important when the original document uses non-standard or custom fonts. The PdfProcessing library requires access to the actual font files to embed them in the PDF. If font data is not provided, the PDF model will substitute the missing fonts with standard ones, resulting in a mismatch between the original document and the exported PDF file. ## See Also * [Standard Fonts]({%slug radpdfprocessing-concepts-fonts%}) - * [Cross-Platform Support]({%slug radpdfprocessing-cross-platform%}) + * [Cross-Platform Support]({%slug radpdfprocessing-cross-platform%}) + * [Images]({%slug radpdfprocessing-cross-platform-images%}) * [Inserting Special Symbols in PDF using RadPdfProcessing]({%slug inserting-special-symbols-pdf-radpdfprocessing%}) * [How to Eliminate Formatting Issues when Exporting XLSX to PDF Format]({%slug exporting-xlsx-to-pdf-formatting-issues%}) * [Resolving Missing Content in Exported PDF Files]({%slug missing-content-word-to-pdf-radwordsprocessing%}) * [Validating Fonts when Using Telerik Document Processing]({%slug validating-fonts-pdf-document-processing%}) + diff --git a/libraries/radpdfprocessing/cross-platform/images.md b/libraries/radpdfprocessing/cross-platform/images.md index abb609ae..8f0f9c81 100644 --- a/libraries/radpdfprocessing/cross-platform/images.md +++ b/libraries/radpdfprocessing/cross-platform/images.md @@ -1,8 +1,9 @@ --- title: Images +description: Discover how to work with images in Telerik RadPdfProcessing for cross-platform .NET applications. page_title: Images slug: radpdfprocessing-cross-platform-images -tags: cross,platform +tags: cross, platform, image, blazor, core, xamarin, winui, maui, net, standard, linux, ios platforms: blazor, core, xamarin, winui, maui published: True position: 2 @@ -26,7 +27,7 @@ To export images different than Jpeg and Jpeg2000 or ImageQuality different than |Assembly/ NuGet package|Description| |----|----| |**Telerik.Documents.ImageUtils**|This assembly is currently not available in UI for Xamarin.| -|**SkiaSharp.NativeAssets.*** (version 2.88.8)|May differ according to the used platform. For **Linux** use SkiaSharp.NativeAssets.Linux.NoDependencies| +|**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.| >important 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. @@ -118,3 +119,7 @@ The following example depends on the [Magick.NET](https://www.nuget.org/packages >note A complete SDK example of a custom implementation JpegImageConverterBase is available on our [GitHub repository](https://github.com/telerik/document-processing-sdk/tree/master/PdfProcessing/CustomJpegImageConverter). +## See Also + + * [Cross-Platform Support]({%slug radpdfprocessing-cross-platform%}) + * [Fonts]({%slug radpdfprocessing-cross-platform-fonts%}) \ No newline at end of file diff --git a/libraries/radpdfprocessing/cross-platform/overview.md b/libraries/radpdfprocessing/cross-platform/overview.md index f71366bf..ad58f330 100644 --- a/libraries/radpdfprocessing/cross-platform/overview.md +++ b/libraries/radpdfprocessing/cross-platform/overview.md @@ -1,29 +1,29 @@ --- title: Overview +description: Learn how to use Telerik RadPdfProcessing for cross-platform PDF generation, editing, and digital signing in .NET applications. page_title: Overview slug: radpdfprocessing-cross-platform -tags: cross,platform +tags: cross, platform, font, image, blazor, core, xamarin, winui, maui, net, standard, linux, ios platforms: blazor, core, xamarin, winui, maui published: True 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. +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. ->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, {{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. ## Assembly 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: +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: * **Telerik.Documents.Core.dll** * **Telerik.Documents.Fixed.dll** * ~~Telerik.Zip.dll~~* ->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 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: @@ -34,7 +34,7 @@ To export images different than Jpeg and Jpeg2000 or ImageQuality different than ## Fonts and Images -The .NET Framework version of PdfProcessing comes with out-of-the-box functionality to read fonts, convert images, and scale their quality. The .NET Standard specification, however, does not specify APIs to provide such functionalities built in the library. +The .NET Framework and .NET (Target OS: *Windows*) versions of PdfProcessing comes with out-of-the-box functionality to read fonts, convert images, and scale their quality. The .NET Standard specification, however, does not specify APIs to provide such functionalities built in the library. In order to provide the necessary extensibility mechanisms for working with fonts and images, the .NET Standard version of **RadPdfProcessing** exposes the **FixedExtensibilityManager** class. More information, including code samples on how to configure the **FixedExtensibilityManager** is available in the [**Fonts**]({%slug radpdfprocessing-cross-platform-fonts%}) and [**Images**]({%slug radpdfprocessing-cross-platform-images%}) articles respectively. @@ -44,7 +44,9 @@ More information, including code samples on how to configure the **FixedExtensib * [RadFixedPage]({%slug radpdfprocessing-model-radfixedpage%}) * [FixedContentEditor]({%slug radpdfprocessing-editing-fixedcontenteditor%}) * [TextFragment]({%slug radpdfprocessing-model-textfragment%}) - + * [What Versions of Document Processing Libraries are Distributed with the Telerik Products](%slug distribute-telerik-document-processing-libraries-net-versions%) + * [Fonts]({%slug radpdfprocessing-cross-platform-fonts%}) + * [Images]({%slug radpdfprocessing-cross-platform-images%}) diff --git a/libraries/radpdfprocessing/editing/block.md b/libraries/radpdfprocessing/editing/block.md index 9c0e3ff1..0133f92e 100644 --- a/libraries/radpdfprocessing/editing/block.md +++ b/libraries/radpdfprocessing/editing/block.md @@ -40,6 +40,8 @@ Inserting [TextFragments]({%slug radpdfprocessing-model-textfragment%}) is achie >The '\r' and '\n' characters don't have the usual meaning of "go to next line" when they are inserted into a PDF document and you cannot simply insert text containing these characters to produce multiline text. Instead, you should insert a line break. +>important 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. + ### Inserting Line Break Inserting a line break results in the next element starting on a new line. The action is achieved with the __InsertLineBreak()__ method as shown in __Example 2__. diff --git a/libraries/radpdfprocessing/editing/fixedcontenteditor.md b/libraries/radpdfprocessing/editing/fixedcontenteditor.md index 3f7b8795..4755ef1e 100644 --- a/libraries/radpdfprocessing/editing/fixedcontenteditor.md +++ b/libraries/radpdfprocessing/editing/fixedcontenteditor.md @@ -299,19 +299,10 @@ __FixedContentEditor__ has some properties and methods that affect how it will b ## See Also - - * [RadFixedPage]({%slug radpdfprocessing-model-radfixedpage%}) - * [Block]({%slug radpdfprocessing-editing-block%}) - * [Position]({%slug radpdfprocessing-concepts-position%}) - * [TextFragment]({%slug radpdfprocessing-model-textfragment%}) - * [Image]({%slug radpdfprocessing-model-image%}) - * [Geometry]({%slug radpdfprocessing-concepts-geometry%}) - * [Clipping]({%slug radpdfprocessing-concepts-clipping%}) - * [Table]({%slug radpdfprocessing-editing-table-overview%}) - * [How to Generate a PDF Document from Images with FixedContentEditor]({%slug pdf-from-images-with-fixedcontenteditor%}) - * [Adding a Watermark to PDF Files Using RadPdfProcessing]({%slug add-watermark-pdf-radpdfprocessing%}) - * [Adding Images with a Shadow in PDF Documents]({%slug add-shadow-image-radpdfprocessing%}) - * [Splitting a Large Image Across Multiple PDF Pages]({%slug split-export-large-image-multiple-pdf-pages-radpdfprocessing%}) - * [Resizing Large Images to Fit in the PDF Page]({%slug resize-images-radpdfprocessing%}) - * [Inserting HTML Content into PDF TableCell with RadPdfProcessing]({%slug insert-html-content-into-pdf-tablecell-radpdfprocessing%}) - * [Drawing Rectangles with Text and Image Contant with RadPdfProcessing]({%slug draw-rectangles-text-images-radpdfprocessing%}) +* [How to Generate a PDF Document from Images with FixedContentEditor]({%slug pdf-from-images-with-fixedcontenteditor%}) +* [Adding a Watermark to PDF Files Using RadPdfProcessing]({%slug add-watermark-pdf-radpdfprocessing%}) +* [Adding Images with a Shadow in PDF Documents]({%slug add-shadow-image-radpdfprocessing%}) +* [Splitting a Large Image Across Multiple PDF Pages]({%slug split-export-large-image-multiple-pdf-pages-radpdfprocessing%}) +* [Resizing Large Images to Fit in the PDF Page]({%slug resize-images-radpdfprocessing%}) +* [Inserting HTML Content into PDF TableCell with RadPdfProcessing]({%slug insert-html-content-into-pdf-tablecell-radpdfprocessing%}) +* [Drawing Rectangles with Text and Image Contant with RadPdfProcessing]({%slug draw-rectangles-text-images-radpdfprocessing%}) diff --git a/libraries/radpdfprocessing/editing/radfixeddocumenteditor.md b/libraries/radpdfprocessing/editing/radfixeddocumenteditor.md index 6ceec1fb..f7ef4c83 100644 --- a/libraries/radpdfprocessing/editing/radfixeddocumenteditor.md +++ b/libraries/radpdfprocessing/editing/radfixeddocumenteditor.md @@ -210,6 +210,8 @@ The character properties that are responsible for the look of the runs are liste >In order for the character properties to be respected, make sure to set them __before__ inserting the Run. +>important 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. + ### Inserting a Run There are a number of overloads that insert a run. The code snippet in __Example 5__ inserts new runs with specific font family, style and weight. diff --git a/libraries/radpdfprocessing/editing/text-and-graphic-properties.md b/libraries/radpdfprocessing/editing/text-and-graphic-properties.md index 871d20ef..e051e3d3 100644 --- a/libraries/radpdfprocessing/editing/text-and-graphic-properties.md +++ b/libraries/radpdfprocessing/editing/text-and-graphic-properties.md @@ -110,6 +110,8 @@ The TextProperties also exposes the following methods, which can be used for cha * __TextProperties.TrySetFont(fontFamily, fontStyle, fontWeight);__ +>important 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. + ## Preserving Current State Both Text and Graphic properties contain methods that can preserve and restore the current state. diff --git a/libraries/radpdfprocessing/features/accessibility-support/create-accessible-pdf-documents.md b/libraries/radpdfprocessing/features/accessibility-support/create-accessible-pdf-documents.md index a7fb79be..fc8043f8 100644 --- a/libraries/radpdfprocessing/features/accessibility-support/create-accessible-pdf-documents.md +++ b/libraries/radpdfprocessing/features/accessibility-support/create-accessible-pdf-documents.md @@ -21,6 +21,8 @@ RadFixedDocument offers a constructor allowing to specify the **AutoTag** proper >note Please refer to the [PdfProcessing Accessibility Demo](https://demos.telerik.com/document-processing/pdfprocessing/accessibility) which 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. +>important 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. + ## Creating Accessible PDF Documents and Building the StructureTree When exporting the document, specify the [TaggingStrategy]({%slug radpdfprocessing-model-tagged-pdf%}#tagging-strategy) so the document should not be tagged automatically and use the existing StructureTree: 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 a0ba5cf2..6b3dd08d 100644 --- a/libraries/radpdfprocessing/features/embedded-file-streams/embedded-file-streams.md +++ b/libraries/radpdfprocessing/features/embedded-file-streams/embedded-file-streams.md @@ -69,7 +69,7 @@ RadPdfProcessing provides support for embedding of [ZUGFeRD](https://de.wikipedi >note Only a single XML invoice attachment is allowed according to 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. +>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** diff --git a/libraries/radpdfprocessing/features/handling-document-exceptions.md b/libraries/radpdfprocessing/features/handling-document-exceptions.md index a743c74d..48017ed2 100644 --- a/libraries/radpdfprocessing/features/handling-document-exceptions.md +++ b/libraries/radpdfprocessing/features/handling-document-exceptions.md @@ -72,6 +72,7 @@ As of **Q1 2025** the [PdfExportSettings]({%slug radpdfprocessing-formats-and-co | __NotSupportedStreamTypeException__| Represents an exception for a stream type which is not supported. A stream is not supported if it does not support read or seek. This exception has a SupportSeek and SupportRead properties which specify whether the stream supports them.| | __NotSupportedXObjectTypeException__| Represents an exception for a document with an XObject type which is not supported.| |**DuplicatedJavaScriptNameException**|Represents an exception for JavaScript with a duplicated name.| +|**NotSupportedImageFormatException**|Represents an exception thrown when attempting to use an image format that is not supported by the library.| |**InvalidAnnotationException**|Represents an exception for an annotation which is not valid. *(Introduced in Q1 2025)*| |**NotSupportedAnnotationException**|Represents an exception for an annotation which is not supported.*(Introduced in Q1 2025)*| |**InvalidImageDataException**|Represents an exception for importing an invalid image data.*(Introduced in Q1 2025)*| diff --git a/libraries/radpdfprocessing/formats-and-conversion/ocr/prerequisites.md b/libraries/radpdfprocessing/formats-and-conversion/ocr/prerequisites.md index 69cb356b..e5f559ef 100644 --- a/libraries/radpdfprocessing/formats-and-conversion/ocr/prerequisites.md +++ b/libraries/radpdfprocessing/formats-and-conversion/ocr/prerequisites.md @@ -79,7 +79,7 @@ In order to use the **OcrFormatProvider** you need to add the following assembli - - SkiaSharp.NativeAssets.* (version 2.88.8) + SkiaSharp.NativeAssets.* (version {{site.skiasharpversion}})
May differ according to the used platform. For Linux (since Q2 2025) use SkiaSharp.NativeAssets.Linux.NoDependencies and execute the required commands. diff --git a/libraries/radpdfprocessing/model/actions/named-actions.md b/libraries/radpdfprocessing/model/actions/named-actions.md index 2a1a5a14..c8ab563a 100644 --- a/libraries/radpdfprocessing/model/actions/named-actions.md +++ b/libraries/radpdfprocessing/model/actions/named-actions.md @@ -75,6 +75,8 @@ The following example demonstrates how to create a PDF document with a [PushButt ![Print Named Action](images/print-named-action.gif) +>important 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. + ## See Also * [FormField]({%slug radpdfprocessing-model-interactive-forms-form-fields%}) diff --git a/libraries/radpdfprocessing/model/annotations/stamp.md b/libraries/radpdfprocessing/model/annotations/stamp.md index c1a0bb21..2a4d273b 100644 --- a/libraries/radpdfprocessing/model/annotations/stamp.md +++ b/libraries/radpdfprocessing/model/annotations/stamp.md @@ -102,6 +102,7 @@ The **AnnotationContentSource** class, accessed by the **Content** property of t } formEditor.TextProperties.FontSize = 20; + formEditor.TextProperties.Font = FontsRepository.Courier; formEditor.Position.Translate(10, 10); formEditor.DrawText(text); } @@ -109,6 +110,8 @@ The **AnnotationContentSource** class, accessed by the **Content** property of t ![Create StampAnnotation with Appearance](images/pdf-processing-create-stampannotation-with-appearance.png) +>important 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. + ## See Also * [AcroForm]({%slug radpdfprocessing-model-interactive-forms-acroform %}) diff --git a/libraries/radpdfprocessing/model/annotations/text-markup.md b/libraries/radpdfprocessing/model/annotations/text-markup.md index 05983ff0..63c4a0fa 100644 --- a/libraries/radpdfprocessing/model/annotations/text-markup.md +++ b/libraries/radpdfprocessing/model/annotations/text-markup.md @@ -96,6 +96,7 @@ Depending on the TextMarkupAnnotationType the respective type of the TextMarkup } formEditor.TextProperties.FontSize = 16; + formEditor.TextProperties.Font = FontsRepository.Courier; formEditor.Position.Translate(10, 10); formEditor.DrawText(text); } @@ -103,6 +104,8 @@ Depending on the TextMarkupAnnotationType the respective type of the TextMarkup ![Create Highlight Annotation with Appearance](images/pdf-processing-create-highlight-annotation-with-appearance.gif) +>important 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. + ## Underline ```csharp diff --git a/libraries/radpdfprocessing/model/annotations/text.md b/libraries/radpdfprocessing/model/annotations/text.md index 285e153b..9549cf29 100644 --- a/libraries/radpdfprocessing/model/annotations/text.md +++ b/libraries/radpdfprocessing/model/annotations/text.md @@ -64,6 +64,8 @@ The FixedContentEditor offers the public **DrawTextAnnotation** method which cre The **AnnotationContentSource** class, accessed by the **Content** property of the annotation object, represents the [FormSource]({%slug radpdfprocessing-model-formsource-overview%}) instances used for displaying the widget content. The following example shows how to change the annotation's visual appearance when the mouse is not interacting with the widget (**NormalContentSource**) and when the mouse is over the widget (**MouseOverContentSource**): +>important 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. + ```csharp private RadFixedDocument CreateTextAnnotation() { @@ -102,6 +104,7 @@ The **AnnotationContentSource** class, accessed by the **Content** property of t } formEditor.TextProperties.FontSize = 10; + formEditor.TextProperties.Font = FontsRepository.Courier; formEditor.Position.Translate(10, 10); formEditor.DrawText(text); } diff --git a/libraries/radpdfprocessing/model/formsource/barcode.md b/libraries/radpdfprocessing/model/formsource/barcode.md index 8588a9e5..329ad950 100644 --- a/libraries/radpdfprocessing/model/formsource/barcode.md +++ b/libraries/radpdfprocessing/model/formsource/barcode.md @@ -1,5 +1,5 @@ --- -title: Barcode +title: Barcode description: Learn how to add barcodes into a PDF document using RadPdfProcessing. page_title: Barcode FormSource slug: radpdfprocessing-model-formsource-barcode @@ -25,9 +25,9 @@ The following example shows how to create a **Barcode** as a **FormSource** obje -![PdfProcessing Insert Barcode](images/pdf-processing-insert-barcode.png) +![PdfProcessing Insert Barcode FormSource](images/pdf-processing-insert-barcode.png) ## See Also * [FormSource]({%slug radpdfprocessing-model-formsource-overview%}) - * [SVG]({%slug radpdfprocessing-model-formsource-svg%}) \ No newline at end of file + * [SVG FormSource]({%slug radpdfprocessing-model-formsource-svg%}) \ No newline at end of file diff --git a/libraries/radpdfprocessing/model/formsource/overview.md b/libraries/radpdfprocessing/model/formsource/overview.md index 61874e67..752f7b38 100644 --- a/libraries/radpdfprocessing/model/formsource/overview.md +++ b/libraries/radpdfprocessing/model/formsource/overview.md @@ -1,6 +1,6 @@ --- title: Overview -description: Learn how to add content, SVG images or barcodes into a PDF document using RadPdfProcessing. +description: Learn how to add content, SVG FormSource images or FormSource barcodes into a PDF document using RadPdfProcessing. page_title: Form Source Overview slug: radpdfprocessing-model-formsource-overview tags: formsource, pdfprocessing, document, processing, pdf @@ -96,5 +96,5 @@ After generating the FormSource object and filling it with content, you should i ## See Also - * [SVG]({%slug radpdfprocessing-model-formsource-svg%}) - * [Barcode]({%slug radpdfprocessing-model-formsource-barcode%}) \ No newline at end of file + * [SVG FormSource]({%slug radpdfprocessing-model-formsource-svg%}) + * [Barcode FormSource]({%slug radpdfprocessing-model-formsource-barcode%}) \ No newline at end of file diff --git a/libraries/radpdfprocessing/model/formsource/svg.md b/libraries/radpdfprocessing/model/formsource/svg.md index 3729fa1d..4ef4a70d 100644 --- a/libraries/radpdfprocessing/model/formsource/svg.md +++ b/libraries/radpdfprocessing/model/formsource/svg.md @@ -1,6 +1,6 @@ --- title: SVG -description: Learn how to add SVG images into a PDF document using RadPdfProcessing. +description: Learn how to add SVG FormSource images into a PDF document using RadPdfProcessing. page_title: SVG FormSource slug: radpdfprocessing-model-formsource-svg tags: formsource, pdfprocessing, document, processing, pdf, svg @@ -10,7 +10,7 @@ position: 1 # SVG FormSource -As of **Q3 2024** RadPdfProcessing provides support for SVG (vector graphics image format). The static FormSource.**FromSvg** method allows the possibility to insert a vector image in the PDF document. The following overloads are publicly available: +As of **Q3 2024** RadPdfProcessing provides support for SVG FormSource (vector graphics image format). The static FormSource.**FromSvg** method allows the possibility to insert a vector image in the PDF document. The following overloads are publicly available: |Method|Description| |----|----| @@ -29,7 +29,7 @@ documentPageEditor.Position.Translate(offset, offset); FormSource svgHostForm = FormSource.FromSvg(File.ReadAllBytes(svgFilePath)); documentPageEditor.DrawForm(svgHostForm); -//draw the SVG with its original size +//draw the SVG FormSource with its original size double aspectRatio = svgHostForm.Size.Width / svgHostForm.Size.Height; //get the aspect ratio from the original SVG size @@ -37,11 +37,11 @@ double desiredSVGWidth = 100; double calculatedSVGHeight = desiredSVGWidth / aspectRatio; documentPageEditor.Position.Translate(offset, svgHostForm.Size.Height + offset); documentPageEditor.DrawForm(svgHostForm, new Size(desiredSVGWidth, calculatedSVGHeight)); -//draw the SVG with desired width preserving the aspect ratio +//draw the SVG FormSource with desired width preserving the aspect ratio ``` -![PdfProcessing Insert SVG](images/pdf-processing-insert-svg.png) +![PdfProcessing Insert SVG FormSource](images/pdf-processing-insert-svg.png) ## See Also * [FormSource]({%slug radpdfprocessing-model-formsource-overview%}) - * [Barcode]({%slug radpdfprocessing-model-formsource-barcode%}) \ No newline at end of file + * [Barcode FormSource]({%slug radpdfprocessing-model-formsource-barcode%}) \ No newline at end of file diff --git a/libraries/radpdfprocessing/model/image.md b/libraries/radpdfprocessing/model/image.md index bbfea341..6a1065fc 100644 --- a/libraries/radpdfprocessing/model/image.md +++ b/libraries/radpdfprocessing/model/image.md @@ -23,14 +23,14 @@ position: 4 | **Method** | **Description** | |-----------------------|-------------------------------------------------------------------------------------------------| -| **GetBitmapSource** (_.NET Standard_) | Creates a [BitmapSource](https://docs.microsoft.com/en-us/dotnet/api/system.windows.media.imaging.bitmapsource) from the image element.| +| **GetBitmapSource** (_Unavailable in .NET Standard_) | Creates a [BitmapSource](https://docs.microsoft.com/en-us/dotnet/api/system.windows.media.imaging.bitmapsource) from the image element.| | **Clone** (_since Q2 2025_) | Creates a deep copy of this document element. | ### Working With an Image You can edit an __Image__ element using the properties the class exposes. The properties are listed in the [Public API](#public-api) section. ->note As of **Q3 2024** RadPdfProcessing provides support for SVG (vector graphics image format): [Adding SVG into a Document]({%slug radpdfprocessing-model-formsource-svg%}). +>note As of **Q3 2024** RadPdfProcessing provides support for SVG FormSource(vector graphics image format): [Adding SVG FormSource into a Document]({%slug radpdfprocessing-model-formsource-svg%}). __Example 1__ shows how to initialize an Image object, assigns an ImageSource to it and add it to a previously defined container (page). diff --git a/libraries/radpdfprocessing/model/imagesource.md b/libraries/radpdfprocessing/model/imagesource.md index c819e471..bb246384 100644 --- a/libraries/radpdfprocessing/model/imagesource.md +++ b/libraries/radpdfprocessing/model/imagesource.md @@ -99,5 +99,5 @@ __RadPdfProcessing__ exposes an extension method allowing you to convert every B ## See Also * [Image]({%slug radpdfprocessing-model-image%}) - * [Adding SVG into a Document]({%slug radpdfprocessing-model-formsource-svg%}) + * [Adding SVG FormSource into a Document]({%slug radpdfprocessing-model-formsource-svg%}) * [ImageSource API Reference](https://docs.telerik.com/devtools/document-processing/api/Telerik.Windows.Documents.Fixed.Model.Resources.ImageSource.html) diff --git a/libraries/radpdfprocessing/model/interactive-forms/dynamic-appearance-properties.md b/libraries/radpdfprocessing/model/interactive-forms/dynamic-appearance-properties.md index ba45203e..5be74061 100644 --- a/libraries/radpdfprocessing/model/interactive-forms/dynamic-appearance-properties.md +++ b/libraries/radpdfprocessing/model/interactive-forms/dynamic-appearance-properties.md @@ -53,6 +53,7 @@ These properties are as follows: * **MilterLimit**: Gets or sets the text milter limit. +>important 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. ## DynamicAppearanceCharacteristics Class diff --git a/libraries/radpdfprocessing/model/interactive-forms/form-fields/pushbuttonfield.md b/libraries/radpdfprocessing/model/interactive-forms/form-fields/pushbuttonfield.md index d26a60dc..293d4a84 100644 --- a/libraries/radpdfprocessing/model/interactive-forms/form-fields/pushbuttonfield.md +++ b/libraries/radpdfprocessing/model/interactive-forms/form-fields/pushbuttonfield.md @@ -37,6 +37,7 @@ PushButtonField provides a single property called **Widgets**. It represents the widget.AppearanceCharacteristics.NormalCaption = "Click here"; widget.TextProperties.FontSize = 20; + widget.TextProperties.Font = FontsRepository.Courier; widget.TextProperties.Fill = new RgbColor(0, 0, 0); widget.RecalculateContent(); @@ -44,6 +45,8 @@ PushButtonField provides a single property called **Widgets**. It represents the document.Pages[0].Annotations.Add(widget); {{endregion}} +>important 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. + ## See Also * [FormField]({%slug radpdfprocessing-model-interactive-forms-form-fields%}) diff --git a/libraries/radpdfprocessing/model/interactive-forms/form-fields/resetting-form-fields.md b/libraries/radpdfprocessing/model/interactive-forms/form-fields/resetting-form-fields.md index 99f50d95..a36606aa 100644 --- a/libraries/radpdfprocessing/model/interactive-forms/form-fields/resetting-form-fields.md +++ b/libraries/radpdfprocessing/model/interactive-forms/form-fields/resetting-form-fields.md @@ -23,6 +23,8 @@ The following example demonstrates how to create a document from scratch, add a +>important 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. + ## Updating an Existing document with a field If the document already contains form fields and a PushButtonWidget, it is possible to access the existing button and add the ResetFormAction. diff --git a/libraries/radpdfprocessing/model/tagged-pdf.md b/libraries/radpdfprocessing/model/tagged-pdf.md index 5d774c17..4358d3be 100644 --- a/libraries/radpdfprocessing/model/tagged-pdf.md +++ b/libraries/radpdfprocessing/model/tagged-pdf.md @@ -26,6 +26,8 @@ position: 7 Represents the strategy for handling tagging in PDF documents. The available options are: +>important 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. + * **UseExisting** - Specifies whether the document should not be tagged on export automatically and the existing StructureTree will be used. The *default* option. * **Build** - Specifies whether the document should be automatically tagged on export and a new StructureTree should be created. diff --git a/libraries/radpdfprocessing/model/textfragment.md b/libraries/radpdfprocessing/model/textfragment.md index f84f1453..76a46044 100644 --- a/libraries/radpdfprocessing/model/textfragment.md +++ b/libraries/radpdfprocessing/model/textfragment.md @@ -46,6 +46,8 @@ position: 3 >note If you want to use a font, that is not part of the [standard fonts]({%slug radpdfprocessing-concepts-fonts%}#standard-fonts), you can register it using the [RegisterFont()]({%slug radpdfprocessing-concepts-fonts%}#registering-a-font) method of the FontRepository static class. +>important 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. + ### Creating a TextFragment **TextFragment** is a content element that can be added to the **Content** collection of an **IContainerElement** such as [RadFixedPage]({%slug radpdfprocessing-model-radfixedpage%}). There are several approaches that can be adopted: diff --git a/libraries/radpdfprocessing/overview.md b/libraries/radpdfprocessing/overview.md index 64ac55e8..50f87695 100644 --- a/libraries/radpdfprocessing/overview.md +++ b/libraries/radpdfprocessing/overview.md @@ -41,7 +41,7 @@ The document model of the library provides support for: |---------|-------------| | [**Pages**]({%slug radpdfprocessing-model-radfixedpage%}) | Adding, modifying or removing of pages in a document. The properties enable you to change the size of the page, its rotation, and more. | | **Automatic layout** | Although the PDF format is fixed, sometimes you will need to insert the content in a way that flows on the page. RadPdfProcessing enables to achieve this easily by using [blocks]({%slug radpdfprocessing-editing-block%}), [tables]({%slug radpdfprocessing-editing-table-overview%}) and [lists]({%slug radpdfprocessing-editing-list%}). | -| [**Images**]({%slug radpdfprocessing-model-image%}) | Decoded on demand to achieve better performance. The API enables you to obtain the encoded image data. You can also control the image quality when saving the document. As of **Q3 2024** RadPdfProcessing provides support for SVG (vector graphics image format).| +| [**Images**]({%slug radpdfprocessing-model-image%}) | Decoded on demand to achieve better performance. The API enables you to obtain the encoded image data. You can also control the image quality when saving the document. As of **Q3 2024** RadPdfProcessing provides support for SVG FormSource (vector graphics image format).| | [**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. | diff --git a/libraries/radspreadprocessing/overview.md b/libraries/radspreadprocessing/overview.md index e5a25814..688300ef 100644 --- a/libraries/radspreadprocessing/overview.md +++ b/libraries/radspreadprocessing/overview.md @@ -38,7 +38,7 @@ The following table describes the most popular features of the RadSpreadProcessi | Feature | Description | |---------|-------------| -| [**Shapes and Images**]({%slug radspreadprocessing-features-shapes-and-images%}) | API for insertion, positioning and deletion of images in worksheets. As of **Q3 2024** RadSpreadProcessing provides support for SVG (vector graphics image format). | +| [**Shapes and Images**]({%slug radspreadprocessing-features-shapes-and-images%}) | API for insertion, positioning and deletion of images in worksheets. As of **Q3 2024** RadSpreadProcessing provides support for SVG FormSource (vector graphics image format). | | [**Charts**]({%slug radspreadprocessing-features-charts%}) | Add, remove and manipulate chart objects in your spreadsheet documents. | | [**Conditional Formatting**]({%slug radspreadprocessing-features-conditional-formatting%}) |Make it easy to analyze data, find critical issues, patterns and trends by representing the data inside in a user-friendly manner. | | [**Hyperlinks**]({%slug radspreadprocessing-features-hyperlink%}) | The API enables you to add, remove, edit and search for hyperlinks in the worksheets of the document. | 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 434954a4..9bcdc7e7 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 @@ -22,8 +22,7 @@ __DocxFormatProvider__ makes it easy to import and export __RadFlowDocument__ to All you have to do in order to use __DocxFormatProvider__ is add references to the assemblies listed below: * Telerik.Windows.Documents.Core.dll -* Telerik.Windows.Documents.Flow.dll -* ~~Telerik.Windows.Zip.dll~~* +* Telerik.Windows.Documents.Flow.dll >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/release-notes/2024/release-notes-2024-3-802.md b/release-notes/2024/release-notes-2024-3-802.md index 20b03527..eaccd49a 100644 --- a/release-notes/2024/release-notes-2024-3-802.md +++ b/release-notes/2024/release-notes-2024-3-802.md @@ -46,7 +46,7 @@ position: 97 ![new](../images/new.png) -* Introduced support for SVG images. +* Introduced support for SVG FormSource images. * Handle importing and reading cached formula value when the formula contains external references. ![fixed](../images/fixed.png) @@ -63,7 +63,7 @@ position: 97 ![new](../images/new.png) -* Introduced support for SVG images. +* Introduced support for SVG FormSource images. * Introduced support for exporting text with a strikethrough to PDF. ![fixed](../images/fixed.png) diff --git a/web.config b/web.config index 90141079..5f93f10d 100644 --- a/web.config +++ b/web.config @@ -204,8 +204,8 @@ - - + +