From f134f6c5b65643d89452be6e8b9877535e21162a Mon Sep 17 00:00:00 2001 From: Desislava Yordanova Date: Mon, 27 Jan 2025 18:20:41 +0200 Subject: [PATCH 01/17] Add logos to the libraries table --- images/dpl-pdf.png | Bin 0 -> 12142 bytes images/dpl-spread.png | Bin 0 -> 12378 bytes images/dpl-words.png | Bin 0 -> 13429 bytes images/dpl-zip.png | Bin 0 -> 11704 bytes introduction.md | 14 +++++++------- 5 files changed, 7 insertions(+), 7 deletions(-) create mode 100644 images/dpl-pdf.png create mode 100644 images/dpl-spread.png create mode 100644 images/dpl-words.png create mode 100644 images/dpl-zip.png diff --git a/images/dpl-pdf.png b/images/dpl-pdf.png new file mode 100644 index 0000000000000000000000000000000000000000..98a4c1ef5492b0c7398562f915e5b8f8b1622071 GIT binary patch literal 12142 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 literal 0 HcmV?d00001 diff --git a/images/dpl-spread.png b/images/dpl-spread.png new file mode 100644 index 0000000000000000000000000000000000000000..53da09339fe5327d0a6113c6539b382f1f8a6b17 GIT binary patch literal 12378 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 XtZu}RS@6jM00000NkvXXu0mjf$-mJN literal 0 HcmV?d00001 diff --git a/images/dpl-zip.png b/images/dpl-zip.png new file mode 100644 index 0000000000000000000000000000000000000000..5f65e6a6342260461077e6b2845f1427f7d77e0f GIT binary patch literal 11704 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 O0000 Date: Mon, 27 Jan 2025 18:45:13 +0200 Subject: [PATCH 02/17] supported formats table --- introduction.md | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/introduction.md b/introduction.md index f3135877..c2b8ef54 100644 --- a/introduction.md +++ b/introduction.md @@ -26,7 +26,7 @@ table th:first-of-type { ## Libraries -Telerik Document Processing features the following components: +Telerik Document Processing features the following libraries: |Library|Description|| |----|----|----| @@ -52,21 +52,22 @@ For more details about the benefits of using Telerik Document Processing, see th ## Supported Formats - The Telerik Document Processing libraries support the following file formats: -* DOCX (Word Document) -* DOC (Word 97-2003 Document) -* DOT (Word 97-2003 Template) -* HTML -* PDF -* RTF -* TXT -* XLSX (Excel Workbook) -* XLS (Excel 97-2003 Workbook) -* XLSM (macro-enabled spreadsheet created by Microsoft Excel) *Macros are only preserved during import and export. They cannot be executed or changed in the code. -* CSV -* ZIP +|Format|Library|Provider| +|----|----|----| +|**DOCX (Word Document)**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[DocxFormatProvider]({%slug radwordsprocessing-formats-and-conversion-docx-docxformatprovider%})| +|**DOC (Word 97-2003 Document)**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[DocxFormatProvider]({%slug radwordsprocessing-formats-and-conversion-docx-docxformatprovider%})|[DocFormatProvider]({%slug radwordsprocessing-formats-and-conversion-doc-docformatprovider%})| +|**DOT (Word 97-2003 Template)**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[DocFormatProvider]({%slug radwordsprocessing-formats-and-conversion-doc-docformatprovider%})| +|**HTML**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[HtmlFormatProvider]({%slug radwordsprocessing-formats-and-conversion-html-htmlformatprovider%})| +|**PDF**|[RadWordsProcessing]({%slug radwordsprocessing-overview%}), [RadPdfProcessing]({%slug radpdfprocessing-overview%}), [RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[PdfFormatProvider in RadWordsProcessing]({%slug radwordsprocessing-formats-and-conversion-pdf-pdfformatprovider%}), [PdfFormatProvider in RadPdfProcessing]({%slug radpdfprocessing-formats-and-conversion-pdf-pdfformatprovider%}), [PdfFormatProvider in RadSpreadProcessing]({%slug radspreadprocessing-formats-and-conversion-pdf-pdfformatprovider%})| +|**RTF**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[RtfFormatProvider]({%slug radwordsprocessing-formats-and-conversion-rtf-rtfformatprovider%})| +|**TXT**|[RadWordsProcessing]({%slug radwordsprocessing-overview%}), [RadPdfProcessing]({%slug radpdfprocessing-overview%})|[TxtFormatProvider in RadWordsProcessing]({%slug radwordsprocessing-formats-and-conversion-txt-txtformatprovider%}), [TextFormatProvider in RadPdfProcessing]({%slug radpdfprocessing-formats-and-conversion-plain-text-textformatprovider%})| +|**XLSX (Excel Workbook)**|[RadSpreadProcessing]({%slug radspreadprocessing-overview%}), [RadSpreadStreamProcessing]({%slug radspreadstreamprocessing-overview%})|[XlsxFormatProvider]({%slug radspreadprocessing-formats-and-conversion-xlsx-xlsxformatprovider%})| +|**XLS (Excel 97-2003 Workbook)**|[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[XlsFormatProvider]({%slug radspreadprocessing-formats-and-conversion-xls-xlsformatprovider%})| +|**XLSM (macro-enabled spreadsheet created by Microsoft Excel)** *Macros are only preserved during import and export. They cannot be executed or changed in the code.|[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[XlsmFormatProvider]({%slug radspreadprocessing-formats-and-conversion-xlsm-xlsmformatprovider%})| +|**CSV**|[RadSpreadProcessing]({%slug radspreadprocessing-overview%}), [RadSpreadStreamProcessing]({%slug radspreadstreamprocessing-overview%})|[CsvFormatProvider]({%slug radspreadprocessing-formats-and-conversion-csv-csvformatprovider%})| +|**ZIP**|[RadZipLibrary]({%slug radziplibrary-overview%})|[ZipArchive]({%slug radziplibrary-gettingstarted%})| ![DPL Ninja](images/dpl-formats.png) From 492491caa17f9a7b02ec331119d4f9878c9d1003 Mon Sep 17 00:00:00 2001 From: Desislava Yordanova Date: Tue, 28 Jan 2025 07:57:49 +0200 Subject: [PATCH 03/17] Polish the table --- introduction.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/introduction.md b/introduction.md index c2b8ef54..9dd08f20 100644 --- a/introduction.md +++ b/introduction.md @@ -57,13 +57,13 @@ The Telerik Document Processing libraries support the following file formats: |Format|Library|Provider| |----|----|----| |**DOCX (Word Document)**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[DocxFormatProvider]({%slug radwordsprocessing-formats-and-conversion-docx-docxformatprovider%})| -|**DOC (Word 97-2003 Document)**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[DocxFormatProvider]({%slug radwordsprocessing-formats-and-conversion-docx-docxformatprovider%})|[DocFormatProvider]({%slug radwordsprocessing-formats-and-conversion-doc-docformatprovider%})| +|**DOC (Word 97-2003 Document)**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[DocFormatProvider]({%slug radwordsprocessing-formats-and-conversion-doc-docformatprovider%})|[DocFormatProvider]({%slug radwordsprocessing-formats-and-conversion-doc-docformatprovider%})| |**DOT (Word 97-2003 Template)**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[DocFormatProvider]({%slug radwordsprocessing-formats-and-conversion-doc-docformatprovider%})| |**HTML**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[HtmlFormatProvider]({%slug radwordsprocessing-formats-and-conversion-html-htmlformatprovider%})| -|**PDF**|[RadWordsProcessing]({%slug radwordsprocessing-overview%}), [RadPdfProcessing]({%slug radpdfprocessing-overview%}), [RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[PdfFormatProvider in RadWordsProcessing]({%slug radwordsprocessing-formats-and-conversion-pdf-pdfformatprovider%}), [PdfFormatProvider in RadPdfProcessing]({%slug radpdfprocessing-formats-and-conversion-pdf-pdfformatprovider%}), [PdfFormatProvider in RadSpreadProcessing]({%slug radspreadprocessing-formats-and-conversion-pdf-pdfformatprovider%})| +|**PDF**|[RadWordsProcessing]({%slug radwordsprocessing-overview%}),
[RadPdfProcessing]({%slug radpdfprocessing-overview%}),
[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[PdfFormatProvider in RadWordsProcessing]({%slug radwordsprocessing-formats-and-conversion-pdf-pdfformatprovider%}),
[PdfFormatProvider in RadPdfProcessing]({%slug radpdfprocessing-formats-and-conversion-pdf-pdfformatprovider%}),
[PdfFormatProvider in RadSpreadProcessing]({%slug radspreadprocessing-formats-and-conversion-pdf-pdfformatprovider%})| |**RTF**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[RtfFormatProvider]({%slug radwordsprocessing-formats-and-conversion-rtf-rtfformatprovider%})| -|**TXT**|[RadWordsProcessing]({%slug radwordsprocessing-overview%}), [RadPdfProcessing]({%slug radpdfprocessing-overview%})|[TxtFormatProvider in RadWordsProcessing]({%slug radwordsprocessing-formats-and-conversion-txt-txtformatprovider%}), [TextFormatProvider in RadPdfProcessing]({%slug radpdfprocessing-formats-and-conversion-plain-text-textformatprovider%})| -|**XLSX (Excel Workbook)**|[RadSpreadProcessing]({%slug radspreadprocessing-overview%}), [RadSpreadStreamProcessing]({%slug radspreadstreamprocessing-overview%})|[XlsxFormatProvider]({%slug radspreadprocessing-formats-and-conversion-xlsx-xlsxformatprovider%})| +|**TXT**|[RadWordsProcessing]({%slug radwordsprocessing-overview%}),
[RadPdfProcessing]({%slug radpdfprocessing-overview%})|[TxtFormatProvider in RadWordsProcessing]({%slug radwordsprocessing-formats-and-conversion-txt-txtformatprovider%}),
[TextFormatProvider in RadPdfProcessing]({%slug radpdfprocessing-formats-and-conversion-plain-text-textformatprovider%})| +|**XLSX (Excel Workbook)**|[RadSpreadProcessing]({%slug radspreadprocessing-overview%}),
[RadSpreadStreamProcessing]({%slug radspreadstreamprocessing-overview%})|[XlsxFormatProvider]({%slug radspreadprocessing-formats-and-conversion-xlsx-xlsxformatprovider%})| |**XLS (Excel 97-2003 Workbook)**|[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[XlsFormatProvider]({%slug radspreadprocessing-formats-and-conversion-xls-xlsformatprovider%})| |**XLSM (macro-enabled spreadsheet created by Microsoft Excel)** *Macros are only preserved during import and export. They cannot be executed or changed in the code.|[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[XlsmFormatProvider]({%slug radspreadprocessing-formats-and-conversion-xlsm-xlsmformatprovider%})| |**CSV**|[RadSpreadProcessing]({%slug radspreadprocessing-overview%}), [RadSpreadStreamProcessing]({%slug radspreadstreamprocessing-overview%})|[CsvFormatProvider]({%slug radspreadprocessing-formats-and-conversion-csv-csvformatprovider%})| From 21963567cf186ccf364be70ad486178a5a5fdcce Mon Sep 17 00:00:00 2001 From: Desislava Yordanova Date: Tue, 28 Jan 2025 09:26:46 +0200 Subject: [PATCH 04/17] added image/datatable --- introduction.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/introduction.md b/introduction.md index 9dd08f20..2d4880e4 100644 --- a/introduction.md +++ b/introduction.md @@ -66,8 +66,10 @@ The Telerik Document Processing libraries support the following file formats: |**XLSX (Excel Workbook)**|[RadSpreadProcessing]({%slug radspreadprocessing-overview%}),
[RadSpreadStreamProcessing]({%slug radspreadstreamprocessing-overview%})|[XlsxFormatProvider]({%slug radspreadprocessing-formats-and-conversion-xlsx-xlsxformatprovider%})| |**XLS (Excel 97-2003 Workbook)**|[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[XlsFormatProvider]({%slug radspreadprocessing-formats-and-conversion-xls-xlsformatprovider%})| |**XLSM (macro-enabled spreadsheet created by Microsoft Excel)** *Macros are only preserved during import and export. They cannot be executed or changed in the code.|[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[XlsmFormatProvider]({%slug radspreadprocessing-formats-and-conversion-xlsm-xlsmformatprovider%})| -|**CSV**|[RadSpreadProcessing]({%slug radspreadprocessing-overview%}), [RadSpreadStreamProcessing]({%slug radspreadstreamprocessing-overview%})|[CsvFormatProvider]({%slug radspreadprocessing-formats-and-conversion-csv-csvformatprovider%})| +|**CSV**|[RadSpreadProcessing]({%slug radspreadprocessing-overview%}),
[RadSpreadStreamProcessing]({%slug radspreadstreamprocessing-overview%})|[CsvFormatProvider]({%slug radspreadprocessing-formats-and-conversion-csv-csvformatprovider%})| +|**DataTable**|[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[DataTableFormatProvider]({%slug radspreadprocessing-formats-and-conversion-using-data-table-format-provider%})| |**ZIP**|[RadZipLibrary]({%slug radziplibrary-overview%})|[ZipArchive]({%slug radziplibrary-gettingstarted%})| +|**Image**|[RadPdfProcessing]({%slug radpdfprocessing-overview%})|[SkiaImageFormatProvider]({%slug radpdfprocessing-formats-and-conversion-image-using-skiaimageformatprovider%}),
[OcrFormatProvider]({%slug radpdfprocessing-formats-and-conversion-ocr-ocrformatprovider%}) | ![DPL Ninja](images/dpl-formats.png) From 3a8a11fac433eb01e950af7465278746806a8be4 Mon Sep 17 00:00:00 2001 From: Desislava Yordanova Date: Tue, 28 Jan 2025 10:57:46 +0200 Subject: [PATCH 05/17] resize the images --- images/dpl-pdf.png | Bin 12142 -> 8075 bytes images/dpl-spread.png | Bin 12378 -> 9104 bytes images/dpl-words.png | Bin 13429 -> 9916 bytes images/dpl-zip.png | Bin 11704 -> 7487 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/images/dpl-pdf.png b/images/dpl-pdf.png index 98a4c1ef5492b0c7398562f915e5b8f8b1622071..e6b48322625f802d649f90bca7fcc3e0f4ab7573 100644 GIT binary patch literal 8075 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 diff --git a/images/dpl-spread.png b/images/dpl-spread.png index 53da09339fe5327d0a6113c6539b382f1f8a6b17..1cbae9afabb6dba765348f3384500008bcf899ae 100644 GIT binary patch literal 9104 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 literal 12378 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 XtZu}RS@6jM00000NkvXXu0mjf$-mJN diff --git a/images/dpl-zip.png b/images/dpl-zip.png index 5f65e6a6342260461077e6b2845f1427f7d77e0f..60983c684069cd498c14985fe10b0230d461a623 100644 GIT binary patch literal 7487 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 JPDHLkV1i`TiD&=- literal 11704 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 O0000 Date: Tue, 28 Jan 2025 14:58:55 +0200 Subject: [PATCH 06/17] add kb for text extracting from pdf --- introduction.md | 14 +++--- knowledge-base/extract-text-from-pdf.md | 50 +++++++++++++++++++ .../ocr/ocrformatprovider.md | 3 +- .../plain-text/textformatprovider.md | 1 + 4 files changed, 60 insertions(+), 8 deletions(-) create mode 100644 knowledge-base/extract-text-from-pdf.md diff --git a/introduction.md b/introduction.md index 2d4880e4..185e9007 100644 --- a/introduction.md +++ b/introduction.md @@ -28,13 +28,13 @@ table th:first-of-type { Telerik Document Processing features the following libraries: -|Library|Description|| -|----|----|----| -| [RadPdfProcessing]({%slug radpdfprocessing-overview%})|A processing library that allows you to create, import, and export PDF documents from your code. You can use it in any web or desktop .NET application without relying on third-party software like Adobe Acrobat.|![Pdf](images/dpl-pdf.png)| -|[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|A powerful library that enables you to create applications with native support for spreadsheet documents. With RadSpreadProcessing, you can create spreadsheets from scratch, modify existing documents or convert between the most common spreadsheet formats. You can save the generated workbook to a local file, stream, or stream it to the client browser.|![Spread](images/dpl-spread.png)| -|[RadSpreadStreamProcessing]({%slug radspreadstreamprocessing-overview%})|Spread streaming is a document processing paradigm that allows you to create or read big spreadsheet documents with great performance and minimal memory footprint. The key for the memory efficiency is that the spread streaming library writes the spreadsheet content directly to a stream without creating and preserving the spreadsheet document model in memory.|![SpreadStream](images/dpl-spread.png)| -|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|A processing library that allows you to create, modify and export documents to a variety of formats. Through the API, you can access each element in the document and modify, remove it or add a new one. The generated content you can save as a stream, as a file, or sent it to the client browser.|![Words](images/dpl-words.png)| -|[RadZipLibrary]({%slug radziplibrary-overview%})| It allows you to compress and combine files in ZIP archives, browse and extract files from existing ZIP archives and compress streams for easy file shipping and reduced storage space.|![Zip](images/dpl-zip.png)| +|Library|Description| +|----|----| +| [RadPdfProcessing]({%slug radpdfprocessing-overview%}) ![Pdf](images/dpl-pdf.png)|A processing library that allows you to create, import, and export PDF documents from your code. You can use it in any web or desktop .NET application without relying on third-party software like Adobe Acrobat.| +|[RadSpreadProcessing]({%slug radspreadprocessing-overview%}) ![Spread](images/dpl-spread.png)|A powerful library that enables you to create applications with native support for spreadsheet documents. With RadSpreadProcessing, you can create spreadsheets from scratch, modify existing documents or convert between the most common spreadsheet formats. You can save the generated workbook to a local file, stream, or stream it to the client browser.| +|[RadSpreadStreamProcessing]({%slug radspreadstreamprocessing-overview%}) ![SpreadStream](images/dpl-spread.png)|Spread streaming is a document processing paradigm that allows you to create or read big spreadsheet documents with great performance and minimal memory footprint. The key for the memory efficiency is that the spread streaming library writes the spreadsheet content directly to a stream without creating and preserving the spreadsheet document model in memory.| +|[RadWordsProcessing]({%slug radwordsprocessing-overview%}) ![Words](images/dpl-words.png)|A processing library that allows you to create, modify and export documents to a variety of formats. Through the API, you can access each element in the document and modify, remove it or add a new one. The generated content you can save as a stream, as a file, or sent it to the client browser.| +|[RadZipLibrary]({%slug radziplibrary-overview%}) ![Zip](images/dpl-zip.png)| It allows you to compress and combine files in ZIP archives, browse and extract files from existing ZIP archives and compress streams for easy file shipping and reduced storage space.| ## Key Features diff --git a/knowledge-base/extract-text-from-pdf.md b/knowledge-base/extract-text-from-pdf.md new file mode 100644 index 00000000..e70d05d2 --- /dev/null +++ b/knowledge-base/extract-text-from-pdf.md @@ -0,0 +1,50 @@ +--- +title: Extracting Text from PDF Documents +description: Learn how to extract the text from a PDF document using RadPdfProcessing from the Telerik Document Processing libraries. +type: how-to +page_title: How to Extract the Text from PDF documents +slug: extract-text-from-pdf +tags: pdf, document, processing, text, extract, content +res_type: kb +ticketid: 1657503 +--- + +## Environment + +| Version | Product | Author | +| ---- | ---- | ---- | +| 2025.1.128| RadPdfProcessing |[Desislava Yordanova](https://www.telerik.com/blogs/author/desislava-yordanova)| + +## Description + +Learn how to extract the text content in a PDF document. + +## Solution + +Follow the steps: + +1\. Import the PDF document using the [PdfFormatProvider]({%slug radpdfprocessing-formats-and-conversion-pdf-pdfformatprovider%}). + +2\. Export the RadFixedDocument's content to text using the [TextFormatProvider]({%slug radpdfprocessing-formats-and-conversion-plain-text-textformatprovider%}). Thus, if the PDF document contains text fragments, it will be exported to the plain text result. + +```csharp + string filePath = "input.pdf"; + PdfFormatProvider pdf_provider = new PdfFormatProvider(); + RadFixedDocument fixed_document; + using (Stream stream = File.OpenRead(filePath)) + { + fixed_document = pdf_provider.Import(stream); + } + Telerik.Windows.Documents.Fixed.FormatProviders.Text.TextFormatProvider provider = new Telerik.Windows.Documents.Fixed.FormatProviders.Text.TextFormatProvider(); + + string documentContent = provider.Export(fixed_document); + Debug.WriteLine(documentContent); +``` +>important However, depending on the internal document's content, the **TextFormatProvider** may not be applicable for covering all the cases. A common scenario is a document with scanned images which contain text information. In this case, the above approach wouldn't parse the content to plain text because all the text inside is actually not text but [Path]({%slug radpdfprocessing-model-path%}) elements. Here comes the benefit of using the [OcrFormatProvider]({%slug radpdfprocessing-formats-and-conversion-ocr-ocrformatprovider%}) allowing you to convert images of typed, handwritten, or printed text into machine-encoded text from a scanned document. + +## See Also + +- [RadPdfProcessing]({%slug radpdfprocessing-overview%}) +- [OcrFormatProvider]({%slug radpdfprocessing-formats-and-conversion-ocr-ocrformatprovider%}) +- [TextFormatProvider]({%slug radpdfprocessing-formats-and-conversion-plain-text-textformatprovider%}) + diff --git a/libraries/radpdfprocessing/formats-and-conversion/ocr/ocrformatprovider.md b/libraries/radpdfprocessing/formats-and-conversion/ocr/ocrformatprovider.md index 82274d12..266a83aa 100644 --- a/libraries/radpdfprocessing/formats-and-conversion/ocr/ocrformatprovider.md +++ b/libraries/radpdfprocessing/formats-and-conversion/ocr/ocrformatprovider.md @@ -12,7 +12,7 @@ position: 1 Since _Q1 2025_ the __RadPdfProcessing__ library supports Optical Character Recognition (OCR). OCR is the electronic or mechanical conversion of images of typed, handwritten, or printed text into machine-encoded text from a scanned document. The library uses the **OcrFormatProvider** class that allows you to import an image which is returned as a [RadFixedPage]({%slug radpdfprocessing-model-radfixedpage%}). By default, the **OcrFormatProvider** takes as a parameter a **TesseractOcrProvider** implementation which is achieved by using the third-party library [Tesseract](https://github.com/tesseract-ocr/tesseract), however you can provide any [custom implementation]({%slug radpdfprocessing-formats-and-conversion-ocr-custom-ocrprovider%}) instead. -You can find all the dependencies and required steps for the implementation in the [Prerequisites]({%slug radpdfprocessing-formats-and-conversion-ocr-prerequisites%}) artilce. +You can find all the dependencies and required steps for the implementation in the [Prerequisites]({%slug radpdfprocessing-formats-and-conversion-ocr-prerequisites%}) article. ## TesseractOcrProvider Public API @@ -35,3 +35,4 @@ You can find all the dependencies and required steps for the implementation in t * [Prerequisites]({%slug radpdfprocessing-formats-and-conversion-ocr-prerequisites%}) * [Timeout Mechanism]({%slug timeout-mechanism-in-dpl%}) * [Implementing a Custom OCR Provider]({%slug radpdfprocessing-formats-and-conversion-ocr-custom-ocrprovider%}) +* [Extracting Text from PDF Documents]({%slug extract-text-from-pdf%}) diff --git a/libraries/radpdfprocessing/formats-and-conversion/plain-text/textformatprovider.md b/libraries/radpdfprocessing/formats-and-conversion/plain-text/textformatprovider.md index f4f25f1e..1c31dc73 100644 --- a/libraries/radpdfprocessing/formats-and-conversion/plain-text/textformatprovider.md +++ b/libraries/radpdfprocessing/formats-and-conversion/plain-text/textformatprovider.md @@ -41,3 +41,4 @@ __Example 1__ shows how to use __TextFormatProvider__ to export __RadFixedDocume * [Plain text]({%slug radpdfprocessing-formats-and-conversion-plain-text-text%}) * [TextFormatProvider Settings]({%slug radpdfprocessing-formats-and-conversion-plain-text-settings%}) * [Timeout Mechanism]({%slug timeout-mechanism-in-dpl%}) +* [Extracting Text from PDF Documents]({%slug extract-text-from-pdf%}) From eeb3f42b7af5b99a434e41e568b7fd096b76c80d Mon Sep 17 00:00:00 2001 From: Desislava Yordanova Date: Tue, 28 Jan 2025 15:41:42 +0200 Subject: [PATCH 07/17] new KB - Summarizing the Text Content of PDF Documents using Text Analytics with Azure AI services --- introduction.md | 10 +- knowledge-base/extract-text-from-pdf.md | 1 + knowledge-base/images/azure-ai-key.png | Bin 0 -> 81505 bytes knowledge-base/summarize-pdf-content.md | 146 ++++++++++++++++++ .../plain-text/textformatprovider.md | 1 + 5 files changed, 153 insertions(+), 5 deletions(-) create mode 100644 knowledge-base/images/azure-ai-key.png create mode 100644 knowledge-base/summarize-pdf-content.md diff --git a/introduction.md b/introduction.md index 185e9007..220a6b01 100644 --- a/introduction.md +++ b/introduction.md @@ -30,11 +30,11 @@ Telerik Document Processing features the following libraries: |Library|Description| |----|----| -| [RadPdfProcessing]({%slug radpdfprocessing-overview%}) ![Pdf](images/dpl-pdf.png)|A processing library that allows you to create, import, and export PDF documents from your code. You can use it in any web or desktop .NET application without relying on third-party software like Adobe Acrobat.| -|[RadSpreadProcessing]({%slug radspreadprocessing-overview%}) ![Spread](images/dpl-spread.png)|A powerful library that enables you to create applications with native support for spreadsheet documents. With RadSpreadProcessing, you can create spreadsheets from scratch, modify existing documents or convert between the most common spreadsheet formats. You can save the generated workbook to a local file, stream, or stream it to the client browser.| -|[RadSpreadStreamProcessing]({%slug radspreadstreamprocessing-overview%}) ![SpreadStream](images/dpl-spread.png)|Spread streaming is a document processing paradigm that allows you to create or read big spreadsheet documents with great performance and minimal memory footprint. The key for the memory efficiency is that the spread streaming library writes the spreadsheet content directly to a stream without creating and preserving the spreadsheet document model in memory.| -|[RadWordsProcessing]({%slug radwordsprocessing-overview%}) ![Words](images/dpl-words.png)|A processing library that allows you to create, modify and export documents to a variety of formats. Through the API, you can access each element in the document and modify, remove it or add a new one. The generated content you can save as a stream, as a file, or sent it to the client browser.| -|[RadZipLibrary]({%slug radziplibrary-overview%}) ![Zip](images/dpl-zip.png)| It allows you to compress and combine files in ZIP archives, browse and extract files from existing ZIP archives and compress streams for easy file shipping and reduced storage space.| +|![Pdf](images/dpl-pdf.png) [RadPdfProcessing]({%slug radpdfprocessing-overview%})|A processing library that allows you to create, import, and export PDF documents from your code. You can use it in any web or desktop .NET application without relying on third-party software like Adobe Acrobat.| +|![Spread](images/dpl-spread.png) [RadSpreadProcessing]({%slug radspreadprocessing-overview%})|A powerful library that enables you to create applications with native support for spreadsheet documents. With RadSpreadProcessing, you can create spreadsheets from scratch, modify existing documents or convert between the most common spreadsheet formats. You can save the generated workbook to a local file, stream, or stream it to the client browser.| +|![SpreadStream](images/dpl-spread.png) [RadSpreadStreamProcessing]({%slug radspreadstreamprocessing-overview%})|Spread streaming is a document processing paradigm that allows you to create or read big spreadsheet documents with great performance and minimal memory footprint. The key for the memory efficiency is that the spread streaming library writes the spreadsheet content directly to a stream without creating and preserving the spreadsheet document model in memory.| +|![Words](images/dpl-words.png) [RadWordsProcessing]({%slug radwordsprocessing-overview%})|A processing library that allows you to create, modify and export documents to a variety of formats. Through the API, you can access each element in the document and modify, remove it or add a new one. The generated content you can save as a stream, as a file, or sent it to the client browser.| +|![Zip](images/dpl-zip.png) [RadZipLibrary]({%slug radziplibrary-overview%})| It allows you to compress and combine files in ZIP archives, browse and extract files from existing ZIP archives and compress streams for easy file shipping and reduced storage space.| ## Key Features diff --git a/knowledge-base/extract-text-from-pdf.md b/knowledge-base/extract-text-from-pdf.md index e70d05d2..dfafba8f 100644 --- a/knowledge-base/extract-text-from-pdf.md +++ b/knowledge-base/extract-text-from-pdf.md @@ -47,4 +47,5 @@ Follow the steps: - [RadPdfProcessing]({%slug radpdfprocessing-overview%}) - [OcrFormatProvider]({%slug radpdfprocessing-formats-and-conversion-ocr-ocrformatprovider%}) - [TextFormatProvider]({%slug radpdfprocessing-formats-and-conversion-plain-text-textformatprovider%}) +- [Summarizing the Text Content of PDF Documents using Text Analytics with Azure AI services]({%slug summarize-pdf-content%}) diff --git a/knowledge-base/images/azure-ai-key.png b/knowledge-base/images/azure-ai-key.png new file mode 100644 index 0000000000000000000000000000000000000000..eae7100b075a7cfa841ce25edc78439e1df930e3 GIT binary patch literal 81505 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 literal 0 HcmV?d00001 diff --git a/knowledge-base/summarize-pdf-content.md b/knowledge-base/summarize-pdf-content.md new file mode 100644 index 00000000..8052e564 --- /dev/null +++ b/knowledge-base/summarize-pdf-content.md @@ -0,0 +1,146 @@ +--- +title: Summarizing the Text Content of PDF Documents using Text Analytics with Azure AI services +description: Learn how to summarize the text content from a PDF document using RadPdfProcessing and Text Analytics with Azure AI services. +type: how-to +page_title: How to Summarize the Text Content of PDF documents using Text Analytics with Azure AI services +slug: summarize-pdf-content +tags: pdf, document, processing, text, summarize,, summary, content, azure +res_type: kb +ticketid: 1657503 +--- + +## Environment + +| Version | Product | Author | +| ---- | ---- | ---- | +| 2025.1.128| RadPdfProcessing |[Desislava Yordanova](https://www.telerik.com/blogs/author/desislava-yordanova)| + +## Description + +Learn how to summarize the text content of a PDF document using [Text Analytics with Azure AI services](https://learn.microsoft.com/en-us/azure/synapse-analytics/machine-learning/tutorial-text-analytics-use-mmlspark). + +## Solution + +Follow the steps: + +1\. Before going further, you can find listed below the **required** assemblies/ NuGet packages that should be added to your project: + +* [Azure.AI.TextAnalytics](https://www.nuget.org/packages/Azure.AI.TextAnalytics) +* Telerik.Documents.Fixed +* Telerik.Documents.Core +* Telerik.Zip + +2\. It is necessary to generate your Azure AI key and endpoint: [Get your credentials from your Azure AI services resource](https://learn.microsoft.com/en-us/azure/ai-services/use-key-vault?tabs=azure-cli&pivots=programming-language-csharp) + +![Azure AI key](images/azure-ai-key.png) + +3\. Use the custom implementation to summarize the text content extracted in step 1: + +```csharp + static void Main(string[] args) + { + Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.PdfFormatProvider pdf_provider = new PdfFormatProvider(); + Telerik.Windows.Documents.Fixed.FormatProviders.Text.TextFormatProvider text_provider = new TextFormatProvider(); + Telerik.Windows.Documents.Fixed.Model.RadFixedDocument document = pdf_provider.Import(File.ReadAllBytes("PdfDocument.pdf"), TimeSpan.FromSeconds(10)); + string documentTextContent = text_provider.Export(document); + + AzureTextSummarizationProvider summarizationProvider = new AzureTextSummarizationProvider(azure_key, azure_endpoint); + string summary = summarizationProvider.SummarizeText(documentTextContent).Result; + + Console.WriteLine(summary); + } + + public class AzureTextSummarizationProvider + { + private string languageKey; + private string languageEndpoint; + + public AzureTextSummarizationProvider(string azure_key, string azure_endpoint) + { + this.languageKey = azure_key; + this.languageEndpoint = azure_endpoint; + } + + public async Task SummarizeText(string text) + { + Azure.AzureKeyCredential credentials = new Azure.AzureKeyCredential(languageKey); + Uri endpoint = new Uri(languageEndpoint); + + Azure.AI.TextAnalytics.TextAnalyticsClient client = new Azure.AI.TextAnalytics.TextAnalyticsClient(endpoint, credentials); + + // Prepare analyze operation input. You can add multiple documents to this list and perform the same + // operation to all of them. + List batchInput = new List + { + text + }; + + Azure.AI.TextAnalytics.TextAnalyticsActions actions = new Azure.AI.TextAnalytics.TextAnalyticsActions() + { + ExtractiveSummarizeActions = [new Azure.AI.TextAnalytics.ExtractiveSummarizeAction()] + }; + + // Start analysis process. + Azure.AI.TextAnalytics.AnalyzeActionsOperation operation = await client.StartAnalyzeActionsAsync(batchInput, actions); + await operation.WaitForCompletionAsync(); + + System.Text.StringBuilder stringBuilder = new System.Text.StringBuilder(); + // View operation status. + stringBuilder.AppendLine($"AnalyzeActions operation has completed"); + stringBuilder.AppendLine(); + + stringBuilder.AppendLine($"Created On : {operation.CreatedOn}"); + stringBuilder.AppendLine($"Expires On : {operation.ExpiresOn}"); + stringBuilder.AppendLine($"Id : {operation.Id}"); + stringBuilder.AppendLine($"Status : {operation.Status}"); + + stringBuilder.AppendLine(); + // View operation results. + await foreach (Azure.AI.TextAnalytics.AnalyzeActionsResult documentsInPage in operation.Value) + { + IReadOnlyCollection summaryResults = documentsInPage.ExtractiveSummarizeResults; + + foreach (Azure.AI.TextAnalytics.ExtractiveSummarizeActionResult summaryActionResults in summaryResults) + { + if (summaryActionResults.HasError) + { + stringBuilder.AppendLine($" Error!"); + stringBuilder.AppendLine($" Action error code: {summaryActionResults.Error.ErrorCode}."); + stringBuilder.AppendLine($" Message: {summaryActionResults.Error.Message}"); + continue; + } + + foreach (Azure.AI.TextAnalytics.ExtractiveSummarizeResult documentResults in summaryActionResults.DocumentsResults) + { + if (documentResults.HasError) + { + stringBuilder.AppendLine($" Error!"); + stringBuilder.AppendLine($" Document error code: {documentResults.Error.ErrorCode}."); + stringBuilder.AppendLine($" Message: {documentResults.Error.Message}"); + continue; + } + + stringBuilder.AppendLine($" Extracted the following {documentResults.Sentences.Count} sentence(s):"); + stringBuilder.AppendLine(); + + foreach (Azure.AI.TextAnalytics.ExtractiveSummarySentence sentence in documentResults.Sentences) + { + stringBuilder.Append($"{sentence.Text} "); + } + } + } + } + + string result = stringBuilder.ToString(); + + return result; + } + } +``` + +## See Also + +- [Extracting Text from PDF Documents]({%slug extract-text-from-pdf%}) +- [OcrFormatProvider]({%slug radpdfprocessing-formats-and-conversion-ocr-ocrformatprovider%}) +- [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 1c31dc73..c22fd52c 100644 --- a/libraries/radpdfprocessing/formats-and-conversion/plain-text/textformatprovider.md +++ b/libraries/radpdfprocessing/formats-and-conversion/plain-text/textformatprovider.md @@ -42,3 +42,4 @@ __Example 1__ shows how to use __TextFormatProvider__ to export __RadFixedDocume * [TextFormatProvider Settings]({%slug radpdfprocessing-formats-and-conversion-plain-text-settings%}) * [Timeout Mechanism]({%slug timeout-mechanism-in-dpl%}) * [Extracting Text from PDF Documents]({%slug extract-text-from-pdf%}) +* [Summarizing the Text Content of PDF Documents using Text Analytics with Azure AI services]({%slug summarize-pdf-content%}) From c1213796281f51a8bb7ac4414ea89f9f881f43d6 Mon Sep 17 00:00:00 2001 From: Desislava Yordanova Date: Tue, 28 Jan 2025 15:56:07 +0200 Subject: [PATCH 08/17] eliminate third level of tables --- .../pdf/pdfformatprovider/settings.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libraries/radpdfprocessing/formats-and-conversion/pdf/pdfformatprovider/settings.md b/libraries/radpdfprocessing/formats-and-conversion/pdf/pdfformatprovider/settings.md index efad4733..dd43f89c 100644 --- a/libraries/radpdfprocessing/formats-and-conversion/pdf/pdfformatprovider/settings.md +++ b/libraries/radpdfprocessing/formats-and-conversion/pdf/pdfformatprovider/settings.md @@ -54,12 +54,16 @@ The **PdfFormatProvider** class offers the **ExportSettings** property which all |**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.| |**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:
**PrintingPermissionType**Sets the permissions for document printing. Possible values:
**None**Specify no printing is allowed.
**LowResolution**Specify low resolution (150 dpi) printing is allowed.
**HighResolution**Specify printing on the highest resolution is allowed.
**ChangingPermissionType**Sets the permissions for making changes to the document. Possible values:
**None**Specify no document changes are allowed.
**DocumentAssembly**Specify inserting, deleting, and rotating page changes are allowed.
**FormFieldFillingOrSigning**Specify filling in form fields and signing existing signature fields changes are allowed.
**FormFieldFillingOrSigningAndCommenting**Specify commenting, filling in form fields, and signing existing signature fields changes are allowed.
**AnyExceptExtractingPages**Specify any changes except extracting pages are allowed.
**CopyingPermissionType**Sets the permissions for document copying. Possible values:
**None**Specify no copying is allowed.
**Copying**Specify copying is allowed.
**TextAccess**Specify that text access for screen reader devices for copying is allowed.
**NumberingFieldsPrecisionLevel**Represents precision level when updating numbering fields. When the Normal option is selected the fields are updated once, not taking into account if their new values would have shifted the already measured layout. In such cases, the results could be outdated. This is the MS Word-like behavior. If you need more accurate results, use NumberingFieldsPrecisionLevel.High where the fields are updated until their values become more accurate. This precision level is more accurate than NumberingFieldsPrecisionLevel.Normal but requires more resources.
| +|**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| |**ImageQuality**|Specifies the quality with which images are exported to PDF. More information about how it works is available in [this article]({%slug radpdfprocessing-concepts-imagequality%}).
**.NET Standard** specification does not define APIs for converting images or scaling their quality. That is why to allow the library to export images different than Jpeg and Jpeg2000 or ImageQuality different than High, you will need to provide an implementation of the **JpegImageConverterBase** abstract class. This implementation should be passed to the **JpegImageConverter** property of the **FixedExtensibilityManager**. For more information check the [Cross-Platform Support]({%slug radpdfprocessing-cross-platform%}) help article.| |**ImageCompression**|Sets the desired compression for the images when exporting. You can set one of the following values of the **ImageFilterTypes**:
**Default**The image compression will be preserved as it is in the original document.
**None**The images won't be encoded.
**FlateDecode**The images will be encoded with a FlateDecode filter. Compresses data using the zlib/deflate compression method.
**DCTDecode** The images will be encoded with a DCTDecode filter. Compresses data using a DCT (discrete cosine transform) technique based on the JPEG standard.
| |**StreamCompression**|Gets or sets the content stream compression type. Possible Values are:
**None**The content streams won't be encoded.
**FlateDecode**Compresses data using the zlib/deflate compression method.
| |**ComplianceLevel**|Specifies the PDF/A compliance level. It can have one of the following values:
**None**Specify no compliance level.
**PdfA1B**Specify PDF/A-1b compliance level.
**PdfA2B**Specify PDF/A-2b compliance level.
**PdfA2U**Specify PDF/A-2u compliance level.
**PdfA3B**Specify PDF/A-3b compliance level.
**PdfA3U**Specify PDF/A-3u compliance level.
The default value is __None__. For more information on PDF/A compliance, check the [PDF/A Compliance article]({%slug radpdfprocessing-howto-comply-with-pdfa-standard%}).| |**ShouldExportXfa**|Specifies whether the PDF document should export XFA content (if any). Default value: *false*. Introduced in **Q1 2025**.| + +### Available UserAccessPermissions + +
PrintingPermissionTypeSets the permissions for document printing. Possible values:
NoneSpecify no printing is allowed.
LowResolutionSpecify low resolution (150 dpi) printing is allowed.
HighResolutionSpecify printing on the highest resolution is allowed.
ChangingPermissionTypeSets the permissions for making changes to the document. Possible values:
NoneSpecify no document changes are allowed.
DocumentAssemblySpecify inserting, deleting, and rotating page changes are allowed.
FormFieldFillingOrSigningSpecify filling in form fields and signing existing signature fields changes are allowed.
FormFieldFillingOrSigningAndCommentingSpecify commenting, filling in form fields, and signing existing signature fields changes are allowed.
AnyExceptExtractingPagesSpecify any changes except extracting pages are allowed.
CopyingPermissionTypeSets the permissions for document copying. Possible values:
NoneSpecify no copying is allowed.
CopyingSpecify copying is allowed.
TextAccessSpecify that text access for screen reader devices for copying is allowed.
NumberingFieldsPrecisionLevelRepresents precision level when updating numbering fields. When the Normal option is selected the fields are updated once, not taking into account if their new values would have shifted the already measured layout. In such cases, the results could be outdated. This is the MS Word-like behavior. If you need more accurate results, use NumberingFieldsPrecisionLevel.High where the fields are updated until their values become more accurate. This precision level is more accurate than NumberingFieldsPrecisionLevel.Normal but requires more resources.
>important The receiver of a PDF document must have the same fonts that were originally used to create it. If a different font is substituted, its character set, glyph shapes, and metrics may differ from those in the original font. This substitution can produce unexpected and unwanted results, such as lines of text extending into margins or overlapping with graphics. A PDF file can refer by name to fonts that are not embedded in the PDF file. In this case, a PDF consumer can use those fonts if they are available in its environment. This approach suffers from the uncertainties noted above. From 83b5a53fed067b5a1da5bf97ff965070de1b2a49 Mon Sep 17 00:00:00 2001 From: Desislava Yordanova Date: Tue, 28 Jan 2025 18:09:03 +0200 Subject: [PATCH 09/17] no nested tables --- .../pdf/pdfformatprovider/settings.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/libraries/radpdfprocessing/formats-and-conversion/pdf/pdfformatprovider/settings.md b/libraries/radpdfprocessing/formats-and-conversion/pdf/pdfformatprovider/settings.md index dd43f89c..1c625aa7 100644 --- a/libraries/radpdfprocessing/formats-and-conversion/pdf/pdfformatprovider/settings.md +++ b/libraries/radpdfprocessing/formats-and-conversion/pdf/pdfformatprovider/settings.md @@ -29,7 +29,7 @@ The **PdfFormatProvider** class offers the **ImportSettings** property which all |Property|Description| |----|----| -|**ReadingMode**|Gets or sets the mode for loading the document pages content on import. *Introduced in R2 2020*.
**ReadAllAtOnce**All document pages content will be loaded on import. This is the default behavior.
**OnDemand**The document pages content will be loaded on demand. This mode is made for use with PdfViewers and only the currently visible page will be loaded.
Currently, the **OnDemand** mode should be applied when using with viewers only.| +|**ReadingMode**|Gets or sets the mode for loading the document pages content on import. *Introduced in R2 2020*.
  • **ReadAllAtOnce**: All document pages content will be loaded on import. This is the default behavior.
  • **OnDemand**: The document pages content will be loaded on demand. This mode is made for use with PdfViewers and only the currently visible page will be loaded.
Currently, the **OnDemand** mode should be applied when using with viewers only.| |**CopyStream**|Gets or sets whether to copy the document stream on import. When false and ReadingMode is OnDemand, the original stream must be kept open while the document is in use. When true, the original stream can be disposed after import, regardless of the reading mode.| |Event|Description| @@ -50,20 +50,23 @@ The **PdfFormatProvider** class offers the **ExportSettings** property which all |----|----| |**StripJavaScriptActions**|Specifies if the PDF document should strip JavaScript actions on export. *Introduced in Q4 2024*.| |**ShouldEmbedFonts** (obsolete)|Specifies whether the font files should be embedded in the PDF document. The default value is *true* because the fonts should be embedded in the file by the PDF Standard. This means that by default the fonts are added which allows proper viewing on any device. If the fonts are not embedded and the file is viewed on a device that does not have the used fonts the font might be substituted. If the font is embedded in the PDF file, it ensures the most predictable and dependable results. As of **Q2 2024** the **ShouldEmbedFonts** property is obsolete. Use the **FontEmbeddingType** property instead.| -|**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).| +|**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.| |**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| +|**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)| |**ImageQuality**|Specifies the quality with which images are exported to PDF. More information about how it works is available in [this article]({%slug radpdfprocessing-concepts-imagequality%}).
**.NET Standard** specification does not define APIs for converting images or scaling their quality. That is why to allow the library to export images different than Jpeg and Jpeg2000 or ImageQuality different than High, you will need to provide an implementation of the **JpegImageConverterBase** abstract class. This implementation should be passed to the **JpegImageConverter** property of the **FixedExtensibilityManager**. For more information check the [Cross-Platform Support]({%slug radpdfprocessing-cross-platform%}) help article.| -|**ImageCompression**|Sets the desired compression for the images when exporting. You can set one of the following values of the **ImageFilterTypes**:
**Default**The image compression will be preserved as it is in the original document.
**None**The images won't be encoded.
**FlateDecode**The images will be encoded with a FlateDecode filter. Compresses data using the zlib/deflate compression method.
**DCTDecode** The images will be encoded with a DCTDecode filter. Compresses data using a DCT (discrete cosine transform) technique based on the JPEG standard.
| -|**StreamCompression**|Gets or sets the content stream compression type. Possible Values are:
**None**The content streams won't be encoded.
**FlateDecode**Compresses data using the zlib/deflate compression method.
| -|**ComplianceLevel**|Specifies the PDF/A compliance level. It can have one of the following values:
**None**Specify no compliance level.
**PdfA1B**Specify PDF/A-1b compliance level.
**PdfA2B**Specify PDF/A-2b compliance level.
**PdfA2U**Specify PDF/A-2u compliance level.
**PdfA3B**Specify PDF/A-3b compliance level.
**PdfA3U**Specify PDF/A-3u compliance level.
The default value is __None__. For more information on PDF/A compliance, check the [PDF/A Compliance article]({%slug radpdfprocessing-howto-comply-with-pdfa-standard%}).| +|**ImageCompression**|Sets the desired compression for the images when exporting. You can set one of the following values of the **ImageFilterTypes**:
  • **Default**: The image compression will be preserved as it is in the original document.
  • **None**: The images won't be encoded.
  • **FlateDecode**: The images will be encoded with a FlateDecode filter. Compresses data using the zlib/deflate compression method.
  • **DCTDecode**: The images will be encoded with a DCTDecode filter. Compresses data using a DCT (discrete cosine transform) technique based on the JPEG standard.
| +|**StreamCompression**|Gets or sets the content stream compression type. Possible Values are:
  • **None**: The content streams won't be encoded.
  • **FlateDecode**: Compresses data using the zlib/deflate compression method.
| +|**ComplianceLevel**|Specifies the PDF/A compliance level. It can have one of the following values:
  • **None**: Specify no compliance level.
  • **PdfA1B**: Specify PDF/A-1b compliance level.
  • **PdfA2B**: Specify PDF/A-2b compliance level.
  • **PdfA2U**: Specify PDF/A-2u compliance level.
  • **PdfA3B**: Specify PDF/A-3b compliance level.**PdfA3U**Specify PDF/A-3u compliance level.
The default value is __None__. For more information on PDF/A compliance, check the [PDF/A Compliance article]({%slug radpdfprocessing-howto-comply-with-pdfa-standard%}).| |**ShouldExportXfa**|Specifies whether the PDF document should export XFA content (if any). Default value: *false*. Introduced in **Q1 2025**.| ### Available UserAccessPermissions - -
PrintingPermissionTypeSets the permissions for document printing. Possible values:
NoneSpecify no printing is allowed.
LowResolutionSpecify low resolution (150 dpi) printing is allowed.
HighResolutionSpecify printing on the highest resolution is allowed.
ChangingPermissionTypeSets the permissions for making changes to the document. Possible values:
NoneSpecify no document changes are allowed.
DocumentAssemblySpecify inserting, deleting, and rotating page changes are allowed.
FormFieldFillingOrSigningSpecify filling in form fields and signing existing signature fields changes are allowed.
FormFieldFillingOrSigningAndCommentingSpecify commenting, filling in form fields, and signing existing signature fields changes are allowed.
AnyExceptExtractingPagesSpecify any changes except extracting pages are allowed.
CopyingPermissionTypeSets the permissions for document copying. Possible values:
NoneSpecify no copying is allowed.
CopyingSpecify copying is allowed.
TextAccessSpecify that text access for screen reader devices for copying is allowed.
NumberingFieldsPrecisionLevelRepresents precision level when updating numbering fields. When the Normal option is selected the fields are updated once, not taking into account if their new values would have shifted the already measured layout. In such cases, the results could be outdated. This is the MS Word-like behavior. If you need more accurate results, use NumberingFieldsPrecisionLevel.High where the fields are updated until their values become more accurate. This precision level is more accurate than NumberingFieldsPrecisionLevel.Normal but requires more resources.
+|UserAccessPermission Type|Description| +|----|----| +|**PrintingPermissionType**|Sets the permissions for document printing. Possible values:
  • **None**: Specify no printing is allowed.
  • **LowResolution**: Specify low resolution (150 dpi) printing is allowed.
  • **HighResolution**: Specify printing on the highest resolution is allowed.
| +|**ChangingPermissionType**|Sets the permissions for making changes to the document. Possible values:
  • **None**: Specify no document changes are allowed.
  • **DocumentAssembly**: Specify inserting, deleting, and rotating page changes are allowed.
  • **FormFieldFillingOrSigning**: Specify filling in form fields and signing existing signature fields changes are allowed.
  • **FormFieldFillingOrSigningAndCommenting**: Specify commenting, filling in form fields, and signing existing signature fields changes are allowed.
  • **AnyExceptExtractingPages**: Specify any changes except extracting pages are allowed.
| +|**CopyingPermissionType**|Sets the permissions for document copying. Possible values:
  • **None**: Specify no copying is allowed.
  • **Copying**: Specify copying is allowed.
  • **TextAccess**: Specify that text access for screen reader devices for copying is allowed.
  • **NumberingFieldsPrecisionLevel**: Represents precision level when updating numbering fields. When the Normal option is selected the fields are updated once, not taking into account if their new values would have shifted the already measured layout. In such cases, the results could be outdated. This is the MS Word-like behavior. If you need more accurate results, use NumberingFieldsPrecisionLevel.High where the fields are updated until their values become more accurate. This precision level is more accurate than NumberingFieldsPrecisionLevel.Normal but requires more resources.
| >important The receiver of a PDF document must have the same fonts that were originally used to create it. If a different font is substituted, its character set, glyph shapes, and metrics may differ from those in the original font. This substitution can produce unexpected and unwanted results, such as lines of text extending into margins or overlapping with graphics. A PDF file can refer by name to fonts that are not embedded in the PDF file. In this case, a PDF consumer can use those fonts if they are available in its environment. This approach suffers from the uncertainties noted above. From 9e3e820fc182a98b2b8a533ef40c8d297dab47fb Mon Sep 17 00:00:00 2001 From: Desislava Yordanova Date: Wed, 29 Jan 2025 17:43:37 +0200 Subject: [PATCH 10/17] *Export only --- introduction.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/introduction.md b/introduction.md index 220a6b01..63d374ff 100644 --- a/introduction.md +++ b/introduction.md @@ -57,19 +57,19 @@ The Telerik Document Processing libraries support the following file formats: |Format|Library|Provider| |----|----|----| |**DOCX (Word Document)**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[DocxFormatProvider]({%slug radwordsprocessing-formats-and-conversion-docx-docxformatprovider%})| -|**DOC (Word 97-2003 Document)**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[DocFormatProvider]({%slug radwordsprocessing-formats-and-conversion-doc-docformatprovider%})|[DocFormatProvider]({%slug radwordsprocessing-formats-and-conversion-doc-docformatprovider%})| -|**DOT (Word 97-2003 Template)**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[DocFormatProvider]({%slug radwordsprocessing-formats-and-conversion-doc-docformatprovider%})| +|**DOC (Word 97-2003 Document)**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[DocFormatProvider]({%slug radwordsprocessing-formats-and-conversion-doc-docformatprovider%})*Import only|[DocFormatProvider]({%slug radwordsprocessing-formats-and-conversion-doc-docformatprovider%})| +|**DOT (Word 97-2003 Template)**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[DocFormatProvider]({%slug radwordsprocessing-formats-and-conversion-doc-docformatprovider%})*Import only| |**HTML**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[HtmlFormatProvider]({%slug radwordsprocessing-formats-and-conversion-html-htmlformatprovider%})| -|**PDF**|[RadWordsProcessing]({%slug radwordsprocessing-overview%}),
[RadPdfProcessing]({%slug radpdfprocessing-overview%}),
[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[PdfFormatProvider in RadWordsProcessing]({%slug radwordsprocessing-formats-and-conversion-pdf-pdfformatprovider%}),
[PdfFormatProvider in RadPdfProcessing]({%slug radpdfprocessing-formats-and-conversion-pdf-pdfformatprovider%}),
[PdfFormatProvider in RadSpreadProcessing]({%slug radspreadprocessing-formats-and-conversion-pdf-pdfformatprovider%})| +|**PDF**|[RadWordsProcessing]({%slug radwordsprocessing-overview%}),
[RadPdfProcessing]({%slug radpdfprocessing-overview%}),
[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[PdfFormatProvider in RadWordsProcessing]({%slug radwordsprocessing-formats-and-conversion-pdf-pdfformatprovider%})*Export only,
[PdfFormatProvider in RadPdfProcessing]({%slug radpdfprocessing-formats-and-conversion-pdf-pdfformatprovider%}),
[PdfFormatProvider in RadSpreadProcessing]({%slug radspreadprocessing-formats-and-conversion-pdf-pdfformatprovider%})*Export only| |**RTF**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[RtfFormatProvider]({%slug radwordsprocessing-formats-and-conversion-rtf-rtfformatprovider%})| -|**TXT**|[RadWordsProcessing]({%slug radwordsprocessing-overview%}),
[RadPdfProcessing]({%slug radpdfprocessing-overview%})|[TxtFormatProvider in RadWordsProcessing]({%slug radwordsprocessing-formats-and-conversion-txt-txtformatprovider%}),
[TextFormatProvider in RadPdfProcessing]({%slug radpdfprocessing-formats-and-conversion-plain-text-textformatprovider%})| +|**TXT**|[RadWordsProcessing]({%slug radwordsprocessing-overview%}),
[RadPdfProcessing]({%slug radpdfprocessing-overview%}),
[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[TxtFormatProvider in RadWordsProcessing]({%slug radwordsprocessing-formats-and-conversion-txt-txtformatprovider%}),
[TextFormatProvider in RadPdfProcessing]({%slug radpdfprocessing-formats-and-conversion-plain-text-textformatprovider%}) *Export only,
[TxtFormatProvider in RadSpreadProcessing]({%slug radspreadprocessing-formats-and-conversion-txt-txtformatprovider%})| |**XLSX (Excel Workbook)**|[RadSpreadProcessing]({%slug radspreadprocessing-overview%}),
[RadSpreadStreamProcessing]({%slug radspreadstreamprocessing-overview%})|[XlsxFormatProvider]({%slug radspreadprocessing-formats-and-conversion-xlsx-xlsxformatprovider%})| |**XLS (Excel 97-2003 Workbook)**|[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[XlsFormatProvider]({%slug radspreadprocessing-formats-and-conversion-xls-xlsformatprovider%})| |**XLSM (macro-enabled spreadsheet created by Microsoft Excel)** *Macros are only preserved during import and export. They cannot be executed or changed in the code.|[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[XlsmFormatProvider]({%slug radspreadprocessing-formats-and-conversion-xlsm-xlsmformatprovider%})| |**CSV**|[RadSpreadProcessing]({%slug radspreadprocessing-overview%}),
[RadSpreadStreamProcessing]({%slug radspreadstreamprocessing-overview%})|[CsvFormatProvider]({%slug radspreadprocessing-formats-and-conversion-csv-csvformatprovider%})| |**DataTable**|[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[DataTableFormatProvider]({%slug radspreadprocessing-formats-and-conversion-using-data-table-format-provider%})| |**ZIP**|[RadZipLibrary]({%slug radziplibrary-overview%})|[ZipArchive]({%slug radziplibrary-gettingstarted%})| -|**Image**|[RadPdfProcessing]({%slug radpdfprocessing-overview%})|[SkiaImageFormatProvider]({%slug radpdfprocessing-formats-and-conversion-image-using-skiaimageformatprovider%}),
[OcrFormatProvider]({%slug radpdfprocessing-formats-and-conversion-ocr-ocrformatprovider%}) | +|**Image**|[RadPdfProcessing]({%slug radpdfprocessing-overview%})|[SkiaImageFormatProvider]({%slug radpdfprocessing-formats-and-conversion-image-using-skiaimageformatprovider%}) *Export only,
[OcrFormatProvider]({%slug radpdfprocessing-formats-and-conversion-ocr-ocrformatprovider%}) | ![DPL Ninja](images/dpl-formats.png) From e7aabf274fdffc70a94d24a8ab7025467ae7e42d Mon Sep 17 00:00:00 2001 From: Desislava Yordanova Date: Wed, 29 Jan 2025 17:52:49 +0200 Subject: [PATCH 11/17] Update introduction.md --- introduction.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/introduction.md b/introduction.md index 63d374ff..922ff1ad 100644 --- a/introduction.md +++ b/introduction.md @@ -57,19 +57,19 @@ The Telerik Document Processing libraries support the following file formats: |Format|Library|Provider| |----|----|----| |**DOCX (Word Document)**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[DocxFormatProvider]({%slug radwordsprocessing-formats-and-conversion-docx-docxformatprovider%})| -|**DOC (Word 97-2003 Document)**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[DocFormatProvider]({%slug radwordsprocessing-formats-and-conversion-doc-docformatprovider%})*Import only|[DocFormatProvider]({%slug radwordsprocessing-formats-and-conversion-doc-docformatprovider%})| -|**DOT (Word 97-2003 Template)**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[DocFormatProvider]({%slug radwordsprocessing-formats-and-conversion-doc-docformatprovider%})*Import only| +|**DOC (Word 97-2003 Document)**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[DocFormatProvider]({%slug radwordsprocessing-formats-and-conversion-doc-docformatprovider%})Import only|[DocFormatProvider]({%slug radwordsprocessing-formats-and-conversion-doc-docformatprovider%})| +|**DOT (Word 97-2003 Template)**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[DocFormatProvider]({%slug radwordsprocessing-formats-and-conversion-doc-docformatprovider%})Import only| |**HTML**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[HtmlFormatProvider]({%slug radwordsprocessing-formats-and-conversion-html-htmlformatprovider%})| -|**PDF**|[RadWordsProcessing]({%slug radwordsprocessing-overview%}),
[RadPdfProcessing]({%slug radpdfprocessing-overview%}),
[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[PdfFormatProvider in RadWordsProcessing]({%slug radwordsprocessing-formats-and-conversion-pdf-pdfformatprovider%})*Export only,
[PdfFormatProvider in RadPdfProcessing]({%slug radpdfprocessing-formats-and-conversion-pdf-pdfformatprovider%}),
[PdfFormatProvider in RadSpreadProcessing]({%slug radspreadprocessing-formats-and-conversion-pdf-pdfformatprovider%})*Export only| +|**PDF**|[RadWordsProcessing]({%slug radwordsprocessing-overview%}),
[RadPdfProcessing]({%slug radpdfprocessing-overview%}),
[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[PdfFormatProvider in RadWordsProcessing]({%slug radwordsprocessing-formats-and-conversion-pdf-pdfformatprovider%}) Export only,
[PdfFormatProvider in RadPdfProcessing]({%slug radpdfprocessing-formats-and-conversion-pdf-pdfformatprovider%}),
[PdfFormatProvider in RadSpreadProcessing]({%slug radspreadprocessing-formats-and-conversion-pdf-pdfformatprovider%})Export only| |**RTF**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[RtfFormatProvider]({%slug radwordsprocessing-formats-and-conversion-rtf-rtfformatprovider%})| -|**TXT**|[RadWordsProcessing]({%slug radwordsprocessing-overview%}),
[RadPdfProcessing]({%slug radpdfprocessing-overview%}),
[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[TxtFormatProvider in RadWordsProcessing]({%slug radwordsprocessing-formats-and-conversion-txt-txtformatprovider%}),
[TextFormatProvider in RadPdfProcessing]({%slug radpdfprocessing-formats-and-conversion-plain-text-textformatprovider%}) *Export only,
[TxtFormatProvider in RadSpreadProcessing]({%slug radspreadprocessing-formats-and-conversion-txt-txtformatprovider%})| +|**TXT**|[RadWordsProcessing]({%slug radwordsprocessing-overview%}),
[RadPdfProcessing]({%slug radpdfprocessing-overview%}),
[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[TxtFormatProvider in RadWordsProcessing]({%slug radwordsprocessing-formats-and-conversion-txt-txtformatprovider%}),
[TextFormatProvider in RadPdfProcessing]({%slug radpdfprocessing-formats-and-conversion-plain-text-textformatprovider%}) Export only,
[TxtFormatProvider in RadSpreadProcessing]({%slug radspreadprocessing-formats-and-conversion-txt-txtformatprovider%})| |**XLSX (Excel Workbook)**|[RadSpreadProcessing]({%slug radspreadprocessing-overview%}),
[RadSpreadStreamProcessing]({%slug radspreadstreamprocessing-overview%})|[XlsxFormatProvider]({%slug radspreadprocessing-formats-and-conversion-xlsx-xlsxformatprovider%})| |**XLS (Excel 97-2003 Workbook)**|[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[XlsFormatProvider]({%slug radspreadprocessing-formats-and-conversion-xls-xlsformatprovider%})| -|**XLSM (macro-enabled spreadsheet created by Microsoft Excel)** *Macros are only preserved during import and export. They cannot be executed or changed in the code.|[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[XlsmFormatProvider]({%slug radspreadprocessing-formats-and-conversion-xlsm-xlsmformatprovider%})| +|**XLSM (macro-enabled spreadsheet created by Microsoft Excel)** Macros are only preserved during import and export. They cannot be executed or changed in the code.|[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[XlsmFormatProvider]({%slug radspreadprocessing-formats-and-conversion-xlsm-xlsmformatprovider%})| |**CSV**|[RadSpreadProcessing]({%slug radspreadprocessing-overview%}),
[RadSpreadStreamProcessing]({%slug radspreadstreamprocessing-overview%})|[CsvFormatProvider]({%slug radspreadprocessing-formats-and-conversion-csv-csvformatprovider%})| |**DataTable**|[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[DataTableFormatProvider]({%slug radspreadprocessing-formats-and-conversion-using-data-table-format-provider%})| |**ZIP**|[RadZipLibrary]({%slug radziplibrary-overview%})|[ZipArchive]({%slug radziplibrary-gettingstarted%})| -|**Image**|[RadPdfProcessing]({%slug radpdfprocessing-overview%})|[SkiaImageFormatProvider]({%slug radpdfprocessing-formats-and-conversion-image-using-skiaimageformatprovider%}) *Export only,
[OcrFormatProvider]({%slug radpdfprocessing-formats-and-conversion-ocr-ocrformatprovider%}) | +|**Image**|[RadPdfProcessing]({%slug radpdfprocessing-overview%})|[SkiaImageFormatProvider]({%slug radpdfprocessing-formats-and-conversion-image-using-skiaimageformatprovider%}) Export only,
[OcrFormatProvider]({%slug radpdfprocessing-formats-and-conversion-ocr-ocrformatprovider%}) | ![DPL Ninja](images/dpl-formats.png) From 9b81b631ef29575f4feca5962cadc55b41e054c9 Mon Sep 17 00:00:00 2001 From: Desislava Yordanova Date: Thu, 30 Jan 2025 07:55:19 +0200 Subject: [PATCH 12/17] polish the table --- introduction.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/introduction.md b/introduction.md index 922ff1ad..08f1a5a5 100644 --- a/introduction.md +++ b/introduction.md @@ -60,16 +60,16 @@ The Telerik Document Processing libraries support the following file formats: |**DOC (Word 97-2003 Document)**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[DocFormatProvider]({%slug radwordsprocessing-formats-and-conversion-doc-docformatprovider%})Import only|[DocFormatProvider]({%slug radwordsprocessing-formats-and-conversion-doc-docformatprovider%})| |**DOT (Word 97-2003 Template)**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[DocFormatProvider]({%slug radwordsprocessing-formats-and-conversion-doc-docformatprovider%})Import only| |**HTML**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[HtmlFormatProvider]({%slug radwordsprocessing-formats-and-conversion-html-htmlformatprovider%})| -|**PDF**|[RadWordsProcessing]({%slug radwordsprocessing-overview%}),
[RadPdfProcessing]({%slug radpdfprocessing-overview%}),
[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[PdfFormatProvider in RadWordsProcessing]({%slug radwordsprocessing-formats-and-conversion-pdf-pdfformatprovider%}) Export only,
[PdfFormatProvider in RadPdfProcessing]({%slug radpdfprocessing-formats-and-conversion-pdf-pdfformatprovider%}),
[PdfFormatProvider in RadSpreadProcessing]({%slug radspreadprocessing-formats-and-conversion-pdf-pdfformatprovider%})Export only| +|**PDF**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})
[RadPdfProcessing]({%slug radpdfprocessing-overview%})
[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[PdfFormatProvider in RadWordsProcessing]({%slug radwordsprocessing-formats-and-conversion-pdf-pdfformatprovider%}) Export only
[PdfFormatProvider in RadPdfProcessing]({%slug radpdfprocessing-formats-and-conversion-pdf-pdfformatprovider%})
[PdfFormatProvider in RadSpreadProcessing]({%slug radspreadprocessing-formats-and-conversion-pdf-pdfformatprovider%})Export only| |**RTF**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[RtfFormatProvider]({%slug radwordsprocessing-formats-and-conversion-rtf-rtfformatprovider%})| -|**TXT**|[RadWordsProcessing]({%slug radwordsprocessing-overview%}),
[RadPdfProcessing]({%slug radpdfprocessing-overview%}),
[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[TxtFormatProvider in RadWordsProcessing]({%slug radwordsprocessing-formats-and-conversion-txt-txtformatprovider%}),
[TextFormatProvider in RadPdfProcessing]({%slug radpdfprocessing-formats-and-conversion-plain-text-textformatprovider%}) Export only,
[TxtFormatProvider in RadSpreadProcessing]({%slug radspreadprocessing-formats-and-conversion-txt-txtformatprovider%})| -|**XLSX (Excel Workbook)**|[RadSpreadProcessing]({%slug radspreadprocessing-overview%}),
[RadSpreadStreamProcessing]({%slug radspreadstreamprocessing-overview%})|[XlsxFormatProvider]({%slug radspreadprocessing-formats-and-conversion-xlsx-xlsxformatprovider%})| +|**TXT**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})
[RadPdfProcessing]({%slug radpdfprocessing-overview%})
[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[TxtFormatProvider in RadWordsProcessing]({%slug radwordsprocessing-formats-and-conversion-txt-txtformatprovider%})
[TextFormatProvider in RadPdfProcessing]({%slug radpdfprocessing-formats-and-conversion-plain-text-textformatprovider%}) Export only
[TxtFormatProvider in RadSpreadProcessing]({%slug radspreadprocessing-formats-and-conversion-txt-txtformatprovider%})| +|**XLSX (Excel Workbook)**|[RadSpreadProcessing]({%slug radspreadprocessing-overview%})
[RadSpreadStreamProcessing]({%slug radspreadstreamprocessing-overview%})|[XlsxFormatProvider]({%slug radspreadprocessing-formats-and-conversion-xlsx-xlsxformatprovider%})| |**XLS (Excel 97-2003 Workbook)**|[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[XlsFormatProvider]({%slug radspreadprocessing-formats-and-conversion-xls-xlsformatprovider%})| |**XLSM (macro-enabled spreadsheet created by Microsoft Excel)** Macros are only preserved during import and export. They cannot be executed or changed in the code.|[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[XlsmFormatProvider]({%slug radspreadprocessing-formats-and-conversion-xlsm-xlsmformatprovider%})| -|**CSV**|[RadSpreadProcessing]({%slug radspreadprocessing-overview%}),
[RadSpreadStreamProcessing]({%slug radspreadstreamprocessing-overview%})|[CsvFormatProvider]({%slug radspreadprocessing-formats-and-conversion-csv-csvformatprovider%})| +|**CSV**|[RadSpreadProcessing]({%slug radspreadprocessing-overview%})
[RadSpreadStreamProcessing]({%slug radspreadstreamprocessing-overview%})|[CsvFormatProvider]({%slug radspreadprocessing-formats-and-conversion-csv-csvformatprovider%})| |**DataTable**|[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[DataTableFormatProvider]({%slug radspreadprocessing-formats-and-conversion-using-data-table-format-provider%})| |**ZIP**|[RadZipLibrary]({%slug radziplibrary-overview%})|[ZipArchive]({%slug radziplibrary-gettingstarted%})| -|**Image**|[RadPdfProcessing]({%slug radpdfprocessing-overview%})|[SkiaImageFormatProvider]({%slug radpdfprocessing-formats-and-conversion-image-using-skiaimageformatprovider%}) Export only,
[OcrFormatProvider]({%slug radpdfprocessing-formats-and-conversion-ocr-ocrformatprovider%}) | +|**Image**|[RadPdfProcessing]({%slug radpdfprocessing-overview%})|[SkiaImageFormatProvider]({%slug radpdfprocessing-formats-and-conversion-image-using-skiaimageformatprovider%}) Export only
[OcrFormatProvider]({%slug radpdfprocessing-formats-and-conversion-ocr-ocrformatprovider%}) Import only | ![DPL Ninja](images/dpl-formats.png) From debec2d0bf03264c1b24ef68991ea9250586824b Mon Sep 17 00:00:00 2001 From: Desislava Yordanova Date: Thu, 30 Jan 2025 08:18:43 +0200 Subject: [PATCH 13/17] replace with --- introduction.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/introduction.md b/introduction.md index 08f1a5a5..b16b745c 100644 --- a/introduction.md +++ b/introduction.md @@ -57,19 +57,19 @@ The Telerik Document Processing libraries support the following file formats: |Format|Library|Provider| |----|----|----| |**DOCX (Word Document)**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[DocxFormatProvider]({%slug radwordsprocessing-formats-and-conversion-docx-docxformatprovider%})| -|**DOC (Word 97-2003 Document)**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[DocFormatProvider]({%slug radwordsprocessing-formats-and-conversion-doc-docformatprovider%})Import only|[DocFormatProvider]({%slug radwordsprocessing-formats-and-conversion-doc-docformatprovider%})| -|**DOT (Word 97-2003 Template)**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[DocFormatProvider]({%slug radwordsprocessing-formats-and-conversion-doc-docformatprovider%})Import only| +|**DOC (Word 97-2003 Document)**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[DocFormatProvider]({%slug radwordsprocessing-formats-and-conversion-doc-docformatprovider%})Import only|[DocFormatProvider]({%slug radwordsprocessing-formats-and-conversion-doc-docformatprovider%})| +|**DOT (Word 97-2003 Template)**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[DocFormatProvider]({%slug radwordsprocessing-formats-and-conversion-doc-docformatprovider%})Import only| |**HTML**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[HtmlFormatProvider]({%slug radwordsprocessing-formats-and-conversion-html-htmlformatprovider%})| -|**PDF**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})
[RadPdfProcessing]({%slug radpdfprocessing-overview%})
[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[PdfFormatProvider in RadWordsProcessing]({%slug radwordsprocessing-formats-and-conversion-pdf-pdfformatprovider%}) Export only
[PdfFormatProvider in RadPdfProcessing]({%slug radpdfprocessing-formats-and-conversion-pdf-pdfformatprovider%})
[PdfFormatProvider in RadSpreadProcessing]({%slug radspreadprocessing-formats-and-conversion-pdf-pdfformatprovider%})Export only| +|**PDF**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})
[RadPdfProcessing]({%slug radpdfprocessing-overview%})
[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[PdfFormatProvider in RadWordsProcessing]({%slug radwordsprocessing-formats-and-conversion-pdf-pdfformatprovider%}) Export only
[PdfFormatProvider in RadPdfProcessing]({%slug radpdfprocessing-formats-and-conversion-pdf-pdfformatprovider%})
[PdfFormatProvider in RadSpreadProcessing]({%slug radspreadprocessing-formats-and-conversion-pdf-pdfformatprovider%}) Export only| |**RTF**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[RtfFormatProvider]({%slug radwordsprocessing-formats-and-conversion-rtf-rtfformatprovider%})| -|**TXT**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})
[RadPdfProcessing]({%slug radpdfprocessing-overview%})
[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[TxtFormatProvider in RadWordsProcessing]({%slug radwordsprocessing-formats-and-conversion-txt-txtformatprovider%})
[TextFormatProvider in RadPdfProcessing]({%slug radpdfprocessing-formats-and-conversion-plain-text-textformatprovider%}) Export only
[TxtFormatProvider in RadSpreadProcessing]({%slug radspreadprocessing-formats-and-conversion-txt-txtformatprovider%})| +|**TXT**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})
[RadPdfProcessing]({%slug radpdfprocessing-overview%})
[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[TxtFormatProvider in RadWordsProcessing]({%slug radwordsprocessing-formats-and-conversion-txt-txtformatprovider%})
[TextFormatProvider in RadPdfProcessing]({%slug radpdfprocessing-formats-and-conversion-plain-text-textformatprovider%}) Export only
[TxtFormatProvider in RadSpreadProcessing]({%slug radspreadprocessing-formats-and-conversion-txt-txtformatprovider%})| |**XLSX (Excel Workbook)**|[RadSpreadProcessing]({%slug radspreadprocessing-overview%})
[RadSpreadStreamProcessing]({%slug radspreadstreamprocessing-overview%})|[XlsxFormatProvider]({%slug radspreadprocessing-formats-and-conversion-xlsx-xlsxformatprovider%})| |**XLS (Excel 97-2003 Workbook)**|[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[XlsFormatProvider]({%slug radspreadprocessing-formats-and-conversion-xls-xlsformatprovider%})| -|**XLSM (macro-enabled spreadsheet created by Microsoft Excel)** Macros are only preserved during import and export. They cannot be executed or changed in the code.|[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[XlsmFormatProvider]({%slug radspreadprocessing-formats-and-conversion-xlsm-xlsmformatprovider%})| +|**XLSM (macro-enabled spreadsheet created by Microsoft Excel)** Macros are only preserved during import and export. They cannot be executed or changed in the code.|[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[XlsmFormatProvider]({%slug radspreadprocessing-formats-and-conversion-xlsm-xlsmformatprovider%})| |**CSV**|[RadSpreadProcessing]({%slug radspreadprocessing-overview%})
[RadSpreadStreamProcessing]({%slug radspreadstreamprocessing-overview%})|[CsvFormatProvider]({%slug radspreadprocessing-formats-and-conversion-csv-csvformatprovider%})| |**DataTable**|[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[DataTableFormatProvider]({%slug radspreadprocessing-formats-and-conversion-using-data-table-format-provider%})| |**ZIP**|[RadZipLibrary]({%slug radziplibrary-overview%})|[ZipArchive]({%slug radziplibrary-gettingstarted%})| -|**Image**|[RadPdfProcessing]({%slug radpdfprocessing-overview%})|[SkiaImageFormatProvider]({%slug radpdfprocessing-formats-and-conversion-image-using-skiaimageformatprovider%}) Export only
[OcrFormatProvider]({%slug radpdfprocessing-formats-and-conversion-ocr-ocrformatprovider%}) Import only | +|**Image**|[RadPdfProcessing]({%slug radpdfprocessing-overview%})|[SkiaImageFormatProvider]({%slug radpdfprocessing-formats-and-conversion-image-using-skiaimageformatprovider%}) Export only
[OcrFormatProvider]({%slug radpdfprocessing-formats-and-conversion-ocr-ocrformatprovider%}) Import only | ![DPL Ninja](images/dpl-formats.png) From 6aa022a0405653f1f01a39a7ad90f5d27c036df9 Mon Sep 17 00:00:00 2001 From: Desislava Yordanova Date: Thu, 30 Jan 2025 08:29:14 +0200 Subject: [PATCH 14/17] Update introduction.md --- introduction.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/introduction.md b/introduction.md index b16b745c..d0e1c695 100644 --- a/introduction.md +++ b/introduction.md @@ -57,8 +57,8 @@ The Telerik Document Processing libraries support the following file formats: |Format|Library|Provider| |----|----|----| |**DOCX (Word Document)**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[DocxFormatProvider]({%slug radwordsprocessing-formats-and-conversion-docx-docxformatprovider%})| -|**DOC (Word 97-2003 Document)**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[DocFormatProvider]({%slug radwordsprocessing-formats-and-conversion-doc-docformatprovider%})Import only|[DocFormatProvider]({%slug radwordsprocessing-formats-and-conversion-doc-docformatprovider%})| -|**DOT (Word 97-2003 Template)**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[DocFormatProvider]({%slug radwordsprocessing-formats-and-conversion-doc-docformatprovider%})Import only| +|**DOC (Word 97-2003 Document)**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[DocFormatProvider]({%slug radwordsprocessing-formats-and-conversion-doc-docformatprovider%}) Import only|[DocFormatProvider]({%slug radwordsprocessing-formats-and-conversion-doc-docformatprovider%})| +|**DOT (Word 97-2003 Template)**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[DocFormatProvider]({%slug radwordsprocessing-formats-and-conversion-doc-docformatprovider%}) Import only| |**HTML**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[HtmlFormatProvider]({%slug radwordsprocessing-formats-and-conversion-html-htmlformatprovider%})| |**PDF**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})
[RadPdfProcessing]({%slug radpdfprocessing-overview%})
[RadSpreadProcessing]({%slug radspreadprocessing-overview%})|[PdfFormatProvider in RadWordsProcessing]({%slug radwordsprocessing-formats-and-conversion-pdf-pdfformatprovider%}) Export only
[PdfFormatProvider in RadPdfProcessing]({%slug radpdfprocessing-formats-and-conversion-pdf-pdfformatprovider%})
[PdfFormatProvider in RadSpreadProcessing]({%slug radspreadprocessing-formats-and-conversion-pdf-pdfformatprovider%}) Export only| |**RTF**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[RtfFormatProvider]({%slug radwordsprocessing-formats-and-conversion-rtf-rtfformatprovider%})| From 7c1879cc164981c62e6d273bb4248e9658b2c9d9 Mon Sep 17 00:00:00 2001 From: Desislava Yordanova Date: Fri, 31 Jan 2025 08:33:03 +0200 Subject: [PATCH 15/17] ninja looking --- images/ninja_looking.png | Bin 0 -> 7289 bytes introduction.md | 10 ++++++++++ 2 files changed, 10 insertions(+) create mode 100644 images/ninja_looking.png diff --git a/images/ninja_looking.png b/images/ninja_looking.png new file mode 100644 index 0000000000000000000000000000000000000000..1b281ceafcdc584e8be73cb980915f28c5f6642f GIT binary patch literal 7289 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 ZNw}t0bZLF~`i}|`O3MK8Lc=lc{{R#!M;-tG literal 0 HcmV?d00001 diff --git a/introduction.md b/introduction.md index d0e1c695..8d3b492b 100644 --- a/introduction.md +++ b/introduction.md @@ -12,6 +12,14 @@ position: 0 table th:first-of-type { width: 25%; } + +img[alt$="><"] { + display: block; + max-width: 100%; + height: auto; + margin: auto; + float: none!important; +} # Welcome to Telerik Document Processing Libraries @@ -54,6 +62,8 @@ For more details about the benefits of using Telerik Document Processing, see th The Telerik Document Processing libraries support the following file formats: +![Ninja Looking ><](images/ninja_looking.png) + |Format|Library|Provider| |----|----|----| |**DOCX (Word Document)**|[RadWordsProcessing]({%slug radwordsprocessing-overview%})|[DocxFormatProvider]({%slug radwordsprocessing-formats-and-conversion-docx-docxformatprovider%})| From 6332af1b8d17dd55c04d7947438381bdf2c469de Mon Sep 17 00:00:00 2001 From: Yoan Karamanov Date: Fri, 31 Jan 2025 15:31:24 +0200 Subject: [PATCH 16/17] fixed formatting --- knowledge-base/summarize-pdf-content.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/knowledge-base/summarize-pdf-content.md b/knowledge-base/summarize-pdf-content.md index 8052e564..990eea17 100644 --- a/knowledge-base/summarize-pdf-content.md +++ b/knowledge-base/summarize-pdf-content.md @@ -4,7 +4,7 @@ description: Learn how to summarize the text content from a PDF document using R type: how-to page_title: How to Summarize the Text Content of PDF documents using Text Analytics with Azure AI services slug: summarize-pdf-content -tags: pdf, document, processing, text, summarize,, summary, content, azure +tags: pdf, document, processing, text, summarize, summary, content, azure res_type: kb ticketid: 1657503 --- @@ -23,14 +23,14 @@ Learn how to summarize the text content of a PDF document using [Text Analytics Follow the steps: -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** assemblies/NuGet packages that should be added to your project: * [Azure.AI.TextAnalytics](https://www.nuget.org/packages/Azure.AI.TextAnalytics) * Telerik.Documents.Fixed * Telerik.Documents.Core * Telerik.Zip -2\. It is necessary to generate your Azure AI key and endpoint: [Get your credentials from your Azure AI services resource](https://learn.microsoft.com/en-us/azure/ai-services/use-key-vault?tabs=azure-cli&pivots=programming-language-csharp) +2\. It is necessary to generate your Azure AI key and endpoint: [Get your credentials from your Azure AI services resource](https://learn.microsoft.com/en-us/azure/ai-services/use-key-vault?tabs=azure-cli&pivots=programming-language-csharp) ![Azure AI key](images/azure-ai-key.png) From 6a430736ce613c9e8347759f09fd4e57d6008a61 Mon Sep 17 00:00:00 2001 From: Dess Date: Fri, 31 Jan 2025 16:10:45 +0200 Subject: [PATCH 17/17] Update summarize-pdf-content.md --- knowledge-base/summarize-pdf-content.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/knowledge-base/summarize-pdf-content.md b/knowledge-base/summarize-pdf-content.md index 990eea17..e0be8c57 100644 --- a/knowledge-base/summarize-pdf-content.md +++ b/knowledge-base/summarize-pdf-content.md @@ -34,7 +34,9 @@ Follow the steps: ![Azure AI key](images/azure-ai-key.png) -3\. Use the custom implementation to summarize the text content extracted in step 1: +3\. [Extract the text content from a PDF document]({%slug extract-text-from-pdf%}). + +4\. Use the custom implementation to summarize the text content extracted in step 3: ```csharp static void Main(string[] args)