From 80e8cd9fe21897b1f5988ea1e031d576cfa50c42 Mon Sep 17 00:00:00 2001 From: KB Bot Date: Tue, 16 Sep 2025 11:58:24 +0000 Subject: [PATCH 1/3] Added new kb article inserting-html-and-styling-radwordsprocessing --- ...ing-html-and-styling-radwordsprocessing.md | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 knowledge-base/inserting-html-and-styling-radwordsprocessing.md diff --git a/knowledge-base/inserting-html-and-styling-radwordsprocessing.md b/knowledge-base/inserting-html-and-styling-radwordsprocessing.md new file mode 100644 index 00000000..f2747697 --- /dev/null +++ b/knowledge-base/inserting-html-and-styling-radwordsprocessing.md @@ -0,0 +1,87 @@ +--- +title: Inserting Formatted HTML content in another RadFlowDocument +description: Learn how to insert formatted HTML text in specific locations within a RadFlowDocument and preserve the styling using Telerik WordsProcessing. +type: how-to +page_title: How to Insert HTML and Preserve the Styles in RadWordsProcessing Document +meta_title: How to Insert HTML and Apply Preserve the in RadWordsProcessing Document +slug: inserting-html-and-styling-radwordsprocessing +tags: word, processing,telerik,document,html,styling,insert, docx, flow +res_type: kb +ticketid: 1698628 +--- + +## Environment +| Version | Product | Author | +| ---- | ---- | ---- | +| 2025.3.806| RadWordsProcessing |[Desislava Yordanova](https://www.telerik.com/blogs/author/desislava-yordanova)| + +## Description + +I need to insert HTML content into specific locations within a RadFlowDocument created using Telerik WordsProcessing. Additionally, I want to apply specific styles to the inserted content, such as font family, size, and weight. + +This knowledge base article also answers the following questions: +- How to merge HTML content into a specific paragraph in Telerik WordsProcessing? +- How to style a RadFlowDocument content programmatically? +- How to use RadWordsProcessing to insert documents into specific table cells? + +## Solution + +To insert HTML content into specific locations in a RadFlowDocument and apply styles, follow these steps: + +### Inserting HTML Content into a Specific Location + +Use the `HtmlFormatProvider` to import HTML content into a `RadFlowDocument`. Then, use the `RadFlowDocumentEditor` to insert the imported document into a specific location in your target document. + +Example: + +```csharp +RadFlowDocument originalDocument = new RadFlowDocument(); +DocxFormatProvider docxProvider = new DocxFormatProvider(); +originalDocument = docxProvider.Import(File.ReadAllBytes("original.docx"), TimeSpan.FromSeconds(10)); + +HtmlFormatProvider htmlProvider = new HtmlFormatProvider(); +RadFlowDocument htmlDocument = htmlProvider.Import(File.ReadAllText("content.html"), TimeSpan.FromSeconds(10)); + +RadFlowDocumentEditor editor = new RadFlowDocumentEditor(originalDocument); +var tableCells = originalDocument.EnumerateChildrenOfType().ToList(); +TableCell cell = tableCells[3] as TableCell; + +// Move editor to the start of the target paragraph +editor.MoveToParagraphStart(cell.Blocks.First() as Paragraph); + +// Insert the HTML document +editor.InsertDocument(htmlDocument); + +string outputFilePath = "output.docx"; +File.Delete(outputFilePath); +using (Stream output = File.OpenWrite(outputFilePath)) +{ + docxProvider.Export(originalDocument, output, TimeSpan.FromSeconds(10)); +} +Process.Start(new ProcessStartInfo() { FileName = outputFilePath, UseShellExecute = true }); +``` + +### Applying Styles to Imported Content + +Apply styles to the entire imported document before merging it into the target document. Use the `ThemableFontFamily`, `FontSize`, and `FontWeight` properties. + +Example: + +```csharp +htmlDocument.FontFamily = new ThemableFontFamily("Arial Narrow"); +htmlDocument.FontSize = UnitHelper.PointToDip(10); +htmlDocument.FontWeight = FontWeights.Bold; +``` + +### Additional Notes + +- To target specific locations in the document, use the `RadFlowDocumentEditor` to navigate to the desired position. +- Ensure the original document and imported HTML content are compatible in terms of styles and formatting. + +## See Also + +- [Insert Documents](https://docs.telerik.com/devtools/document-processing/libraries/radwordsprocessing/editing/insert-documents) +- [RadWordsProcessing Overview](https://docs.telerik.com/devtools/document-processing/libraries/radwordsprocessing/overview) +- [HtmlFormatProvider API Reference](https://docs.telerik.com/devtools/document-processing/libraries/radwordsprocessing/formats/html) +- [RadFlowDocumentEditor API Reference](https://docs.telerik.com/devtools/document-processing/libraries/radwordsprocessing/editing/document-editor) +--- From fb40684402887a9370d0601a94949671eb9989d3 Mon Sep 17 00:00:00 2001 From: Desislava Yordanova Date: Fri, 26 Sep 2025 14:10:14 +0300 Subject: [PATCH 2/3] polished kb --- knowledge-base/images/input-flow-content.png | Bin 0 -> 37189 bytes knowledge-base/images/output-flow-content.png | Bin 0 -> 26526 bytes ...ing-html-and-styling-radwordsprocessing.md | 85 +++++++++--------- .../editing/insert-documents.md | 1 + .../editing/radflowdocumenteditor.md | 1 + 5 files changed, 43 insertions(+), 44 deletions(-) create mode 100644 knowledge-base/images/input-flow-content.png create mode 100644 knowledge-base/images/output-flow-content.png diff --git a/knowledge-base/images/input-flow-content.png b/knowledge-base/images/input-flow-content.png new file mode 100644 index 0000000000000000000000000000000000000000..a37cfb1f42ae054e68eac5872896a408ed003d29 GIT binary patch literal 37189 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 literal 0 HcmV?d00001 diff --git a/knowledge-base/images/output-flow-content.png b/knowledge-base/images/output-flow-content.png new file mode 100644 index 0000000000000000000000000000000000000000..3d3daba26e348eae2bda84eba8da99f614b63b09 GIT binary patch literal 26526 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 Mdqt;G+acoL07nF&eE +img[alt$="><"] { + border: 1px solid lightgrey; +} + + + ## Environment | Version | Product | Author | | ---- | ---- | ---- | @@ -17,71 +24,61 @@ ticketid: 1698628 ## Description -I need to insert HTML content into specific locations within a RadFlowDocument created using Telerik WordsProcessing. Additionally, I want to apply specific styles to the inserted content, such as font family, size, and weight. +Leanr how to insert HTML content into specific locations within a [RadFlowDocument]({%slug radwordsprocessing-model-radflowdocument%}) using Telerik [WordsProcessing]({%slug radwordsprocessing-overview%}). -This knowledge base article also answers the following questions: -- How to merge HTML content into a specific paragraph in Telerik WordsProcessing? -- How to style a RadFlowDocument content programmatically? -- How to use RadWordsProcessing to insert documents into specific table cells? +|Input Content|Output Content| +|----|----| +|![Input Content ><](images/input-flow-content.png) | ![Input Content ><](images/output-flow-content.png) | ## Solution -To insert HTML content into specific locations in a RadFlowDocument and apply styles, follow these steps: +To insert HTML content into specific locations in a RadFlowDocument, follow these steps: -### Inserting HTML Content into a Specific Location +1. Importing the HTML content: Use the [HtmlFormatProvider]({%slug radwordsprocessing-formats-and-conversion-html-htmlformatprovider%}) to import HTML content into a [RadFlowDocument]({%slug radwordsprocessing-model-radflowdocument%}). -Use the `HtmlFormatProvider` to import HTML content into a `RadFlowDocument`. Then, use the `RadFlowDocumentEditor` to insert the imported document into a specific location in your target document. +1. Inserting HTML Content into a Specific Location: Use the [RadFlowDocumentEditor]({%slug radwordsprocessing-editing-radflowdocumenteditor%}) to insert the imported document (step 1) into a specific location in your target document. Example: ```csharp -RadFlowDocument originalDocument = new RadFlowDocument(); -DocxFormatProvider docxProvider = new DocxFormatProvider(); -originalDocument = docxProvider.Import(File.ReadAllBytes("original.docx"), TimeSpan.FromSeconds(10)); + RadFlowDocument originalDocument = new RadFlowDocument(); + DocxFormatProvider docxProvider = new DocxFormatProvider(); + originalDocument = docxProvider.Import(File.ReadAllBytes("original.docx"), TimeSpan.FromSeconds(10)); -HtmlFormatProvider htmlProvider = new HtmlFormatProvider(); -RadFlowDocument htmlDocument = htmlProvider.Import(File.ReadAllText("content.html"), TimeSpan.FromSeconds(10)); + HtmlFormatProvider htmlProvider = new HtmlFormatProvider(); + RadFlowDocument htmlDocument = htmlProvider.Import(File.ReadAllText("content.html"), TimeSpan.FromSeconds(10)); + + // Get paragraphs from the imported document + var importedParagraphs = htmlDocument.EnumerateChildrenOfType().ToList(); -RadFlowDocumentEditor editor = new RadFlowDocumentEditor(originalDocument); -var tableCells = originalDocument.EnumerateChildrenOfType().ToList(); -TableCell cell = tableCells[3] as TableCell; + // Move editor to the start of the target paragraph + RadFlowDocumentEditor editor = new RadFlowDocumentEditor(originalDocument); -// Move editor to the start of the target paragraph -editor.MoveToParagraphStart(cell.Blocks.First() as Paragraph); + var tableCells = originalDocument.EnumerateChildrenOfType().ToList(); + TableCell cell = tableCells[3] as TableCell; + editor.MoveToParagraphStart(cell.Blocks.First() as Paragraph); -// Insert the HTML document -editor.InsertDocument(htmlDocument); - -string outputFilePath = "output.docx"; -File.Delete(outputFilePath); -using (Stream output = File.OpenWrite(outputFilePath)) -{ - docxProvider.Export(originalDocument, output, TimeSpan.FromSeconds(10)); -} -Process.Start(new ProcessStartInfo() { FileName = outputFilePath, UseShellExecute = true }); -``` + editor.InsertDocument(htmlDocument); -### Applying Styles to Imported Content + string outputFilePath = "output.docx"; + File.Delete(outputFilePath); + using (Stream output = File.OpenWrite(outputFilePath)) + { + docxProvider.Export(originalDocument, output, TimeSpan.FromSeconds(10)); + } -Apply styles to the entire imported document before merging it into the target document. Use the `ThemableFontFamily`, `FontSize`, and `FontWeight` properties. + Process.Start(new ProcessStartInfo() { FileName = outputFilePath, UseShellExecute = true }); +``` -Example: -```csharp -htmlDocument.FontFamily = new ThemableFontFamily("Arial Narrow"); -htmlDocument.FontSize = UnitHelper.PointToDip(10); -htmlDocument.FontWeight = FontWeights.Bold; -``` ### Additional Notes -- To target specific locations in the document, use the `RadFlowDocumentEditor` to navigate to the desired position. +- To target specific locations in the document, use the [RadFlowDocumentEditor]({%slug radwordsprocessing-editing-radflowdocumenteditor%}) to navigate to the desired position. - Ensure the original document and imported HTML content are compatible in terms of styles and formatting. ## See Also -- [Insert Documents](https://docs.telerik.com/devtools/document-processing/libraries/radwordsprocessing/editing/insert-documents) -- [RadWordsProcessing Overview](https://docs.telerik.com/devtools/document-processing/libraries/radwordsprocessing/overview) -- [HtmlFormatProvider API Reference](https://docs.telerik.com/devtools/document-processing/libraries/radwordsprocessing/formats/html) -- [RadFlowDocumentEditor API Reference](https://docs.telerik.com/devtools/document-processing/libraries/radwordsprocessing/editing/document-editor) ---- +- [HtmlFormatProvider]({%slug radwordsprocessing-formats-and-conversion-html-htmlformatprovider%}) +- [Insert Documents]({%slug radwordsprocessing-editing-insert-documents%}) +- [RadFlowDocumentEditor]({%slug radwordsprocessing-editing-radflowdocumenteditor%}) diff --git a/libraries/radwordsprocessing/editing/insert-documents.md b/libraries/radwordsprocessing/editing/insert-documents.md index f99d746b..b83f0aec 100644 --- a/libraries/radwordsprocessing/editing/insert-documents.md +++ b/libraries/radwordsprocessing/editing/insert-documents.md @@ -95,3 +95,4 @@ You could merge documents at a specific position using the InsertDocument() meth * [Clone and Merge]({%slug radwordsprocessing-editing-clone-and-merge%}) * [Section]({%slug radwordsprocessing-model-section%}) * [Paragraph]({%slug radwordsprocessing-model-paragraph%}) +* [Inserting Formatted HTML content in another RadFlowDocument using WordsProcessing]({%slug inserting-html-and-styling-radwordsprocessing%}) diff --git a/libraries/radwordsprocessing/editing/radflowdocumenteditor.md b/libraries/radwordsprocessing/editing/radflowdocumenteditor.md index e41b8e31..8d73fa9b 100644 --- a/libraries/radwordsprocessing/editing/radflowdocumenteditor.md +++ b/libraries/radwordsprocessing/editing/radflowdocumenteditor.md @@ -337,3 +337,4 @@ The above method will delete everything between the "start" and "end" elements. * [RadFlowDocument API Reference](https://docs.telerik.com/devtools/document-processing/api/Telerik.Windows.Documents.Flow.Model.RadFlowDocument.html) * [Document model]({%slug radwordsprocessing-model%}) * [Find and Replace]({%slug radwordsprocessing-editing-find-and-replace%}) + * [Inserting Formatted HTML content in another RadFlowDocument using WordsProcessing]({%slug inserting-html-and-styling-radwordsprocessing%}) From a7edbe1ac64c3d46c4d1b63270aa6b4d615db0e9 Mon Sep 17 00:00:00 2001 From: Yoan Karamanov Date: Thu, 2 Oct 2025 14:54:49 +0300 Subject: [PATCH 3/3] Update inserting-html-and-styling-radwordsprocessing.md --- ...serting-html-and-styling-radwordsprocessing.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/knowledge-base/inserting-html-and-styling-radwordsprocessing.md b/knowledge-base/inserting-html-and-styling-radwordsprocessing.md index d37c40a2..6609f61a 100644 --- a/knowledge-base/inserting-html-and-styling-radwordsprocessing.md +++ b/knowledge-base/inserting-html-and-styling-radwordsprocessing.md @@ -2,10 +2,10 @@ title: Inserting Formatted HTML content in another RadFlowDocument using WordsProcessing description: Learn how to insert formatted HTML text in specific locations within a RadFlowDocument and preserve the styling using Telerik WordsProcessing. type: how-to -page_title: How to Insert HTML and Preserve the Styles in RadWordsProcessing Document -meta_title: How to Insert HTML and Apply Preserve the in RadWordsProcessing Document +page_title: How to Insert HTML Content in a Word Document while Preserving its Styles and Formatting +meta_title: How to Insert HTML Content in a Word Document while Preserving its Styles and Formatting slug: inserting-html-and-styling-radwordsprocessing -tags: word, processing,telerik,document,html,styling,insert, docx, flow +tags: word, processing, telerik, document, html, styling, insert, docx, flow, words, formatting res_type: kb ticketid: 1698628 --- @@ -24,7 +24,7 @@ img[alt$="><"] { ## Description -Leanr how to insert HTML content into specific locations within a [RadFlowDocument]({%slug radwordsprocessing-model-radflowdocument%}) using Telerik [WordsProcessing]({%slug radwordsprocessing-overview%}). +Learn how to insert HTML content at specific locations within a [RadFlowDocument]({%slug radwordsprocessing-model-radflowdocument%}) using Telerik [WordsProcessing]({%slug radwordsprocessing-overview%}). |Input Content|Output Content| |----|----| @@ -32,11 +32,11 @@ Leanr how to insert HTML content into specific locations within a [RadFlowDocume ## Solution -To insert HTML content into specific locations in a RadFlowDocument, follow these steps: +To insert HTML content at specific locations in a RadFlowDocument, follow these steps: -1. Importing the HTML content: Use the [HtmlFormatProvider]({%slug radwordsprocessing-formats-and-conversion-html-htmlformatprovider%}) to import HTML content into a [RadFlowDocument]({%slug radwordsprocessing-model-radflowdocument%}). +1. Use the [HtmlFormatProvider]({%slug radwordsprocessing-formats-and-conversion-html-htmlformatprovider%}) to import HTML content into a [RadFlowDocument]({%slug radwordsprocessing-model-radflowdocument%}). -1. Inserting HTML Content into a Specific Location: Use the [RadFlowDocumentEditor]({%slug radwordsprocessing-editing-radflowdocumenteditor%}) to insert the imported document (step 1) into a specific location in your target document. +1. Use the [RadFlowDocumentEditor]({%slug radwordsprocessing-editing-radflowdocumenteditor%}) to insert the imported document (step 1) into a specific location in your target document. Example: @@ -71,7 +71,6 @@ Example: ``` - ### Additional Notes - To target specific locations in the document, use the [RadFlowDocumentEditor]({%slug radwordsprocessing-editing-radflowdocumenteditor%}) to navigate to the desired position.