€100 is printed as 100.
What do I do to get my € back?

I am working with the Telerik UI for WinForms 2020 R1 release and I am experiencing a multitude of issues loading PDFs into the Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.PdfFormatProvider via a FileStream (for splitting into individual pages) that I can properly load into the Telerik RadPdfViewer using the Load() method with the file name.
Some of the errors that I am experiencing are "R24 color space not supported", "R25 color space not supported", and "currentIndirectObject should not be null". I cannot provide copies of these PDFs, as they all contain Protected Health Information (PHI), which is protected information under HIPPA.

Hi everyone,
I am trying to convert the following quite simple HTMl to PDF
<!DOCTYPE html><html><head> <title>Configuration</title> <meta charset="utf-8" /> <style type="text/css"> body{ font-family:Verdana,Arial; color:black } th{ background-color: silver } table { width: 100%; border: solid 1px gray; margin-bottom: 32px } td { border-top: solid 1px gray } </style></head><body> <hr /> <h2>Offer Configuration</h2> <div style="width:80%;margin-left:auto;margin-right:auto"> <table align="center" cellpadding="0" cellspacing="0" style="width:600px"> <tr> <th>Document</th> <th>Date</th> <th>Sales Person</th> </tr> </table> <br /> <table align="right" cellpadding="0" cellspacing="0" style="width:30%;float:right"> <tr> <th>Total</th> </tr> <tr> <td>${PL_TOTAL}</td> </tr> </table> <br /> </div> <div id="divFooter"> </div></body></html>
This is the code I am using
Dim htmlDocument = ProviderHtml.Import(My.Resources.Resource1.order)Using output As New FileStream("c:\temp\out.pdf", FileMode.Create) ProviderPdf.Export(htmlDocument, output)End UsingProcess.Start("c:\temp\out.pdf")
Problem is, the output is very different from source the HTML:
- the HR arenot displayed
- the tables width are ignored
Note that pasting the same HTML here https://demos.telerik.com/aspnet-ajax/editor/examples/import-export/pdf-export/defaultcs.aspx generates an invalid PDF
Is there anything I am missing?
Thanks

block.GraphicProperties.StrokeColor = color;
seems to do nothing
block.GraphicProperties.IsFilled = true; block.GraphicProperties.FillColor = color;
does not seem to do anything.
block.BackgroundColor = color;
only colors the line, not the entire rectangle of the block.
We are unable to make a simple class library in NET 5 by trying to compile the following class:
using Abp.Domain.Entities;using Abp.Timing;using Nuagecare.App.NcDocument.Dtos;using Nuagecare.App.NcIncident.Dto;using Nuagecare.Authorization.Users.Dto;using Nuagecare.NcEntity.Dtos;using System;using System.Collections.Generic;using System.Dynamic;using System.Globalization;using System.IO;using System.Linq;using System.Text;using System.Windows.Media;using Telerik.Windows.Documents.Flow.FormatProviders.Docx;using Telerik.Windows.Documents.Flow.Model;using Telerik.Windows.Documents.Flow.Model.Editing;using Telerik.Windows.Documents.Flow.Model.Shapes;using Telerik.Windows.Documents.Flow.Model.Styles;using Telerik.Windows.Documents.Model;using Telerik.Windows.Documents.Primitives;using Telerik.Windows.Documents.Spreadsheet.Model;namespace Nuagecare.DocumentProcessing{ public class DocumentProcessor : IDocumentProcessor { protected readonly ThemableFontFamily DefaultFontFamily = new ThemableFontFamily(new FontFamily("Calibri")); protected readonly ThemableColor DefaultForeground = new ThemableColor(Colors.Black); protected readonly double DefaultFontSize = 14.0; public Byte[] NcEntityMerge(Byte[] input, NcEntityDto ncEntity, string tenancyName, UserEditDto currentUser) { var FirstNames = ncEntity.GetData<AttributeDataDto>("FirstNames"); var Surname = ncEntity.GetData<AttributeDataDto>("Surname"); var Gender = ncEntity.GetData<AttributeDataDto>("Gender"); var Height = ncEntity.GetData<AttributeDataDto>("Height"); var Weight = ncEntity.GetData<AttributeDataDto>("Weight"); var RoomNumber = ncEntity.GetData<AttributeDataDto>("RoomNumber"); var NHSId = ncEntity.GetData<AttributeDataDto>("NHSId"); var DateOfBirth = ""; var Age = ""; try { var sDateOfBirth1 = ncEntity.GetData<AttributeDataDto>("DateOfBirth"); //US (javascript) format DateTime dDateOfBirth = DateTime.ParseExact(sDateOfBirth1.Value, "MM/dd/yyyy HH:mm:ss", CultureInfo.InvariantCulture).ToLocalTime(); DateOfBirth = dDateOfBirth.ToString("dd/MM/yyyy"); Age = CalculateAge(dDateOfBirth).ToString(); } catch (Exception ex) { DateOfBirth = "unknown"; Age = "unknown"; } DocxFormatProvider provider = new DocxFormatProvider(); RadFlowDocument document = provider.Import(input); dynamic mergeRecord = new ExpandoObject(); mergeRecord.DisplayName = ncEntity.DisplayName ?? ""; mergeRecord.FullName = FirstNames.Value + " " + Surname.Value ?? ""; mergeRecord.Gender = Gender.Value ?? ""; mergeRecord.DateOfBirth = DateOfBirth; mergeRecord.Age = Age; mergeRecord.Height = Height.Value ?? "0"; mergeRecord.Weight = Weight.Value ?? "0"; mergeRecord.RoomNumber = RoomNumber.Value ?? "0"; mergeRecord.NHSId = NHSId.Value ?? ""; mergeRecord.TenancyName = System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(tenancyName) ?? ""; mergeRecord.CreationTime = Clock.Now.ToString("dddd, dd MMMM yyyy"); mergeRecord.NuagecareRevisions = "1"; mergeRecord.CreatedBy = currentUser.Name + " " + currentUser.Surname; mergeRecord.CreationText = "Created by " + currentUser.Name + " " + currentUser.Surname + " on " + Clock.Now.ToString("dddd, dd MMMM yyyy"); mergeRecord.CreatedHistory = "Created by " + currentUser.Name + " " + currentUser.Surname + " on " + Clock.Now.ToString("dddd, dd MMMM yyyy"); mergeRecord.LastUpdated = Clock.Now.ToString("dddd, dd MMMM yyyy"); List<ExpandoObject> mailMergeDataSource = new List<ExpandoObject>(); mailMergeDataSource.Add(mergeRecord); RadFlowDocument mailMergeResult = document.MailMerge(mailMergeDataSource); //use for testing - outputs to root of Web.Host //using (Stream output = new FileStream("CarePlan.docx", FileMode.OpenOrCreate)) //{ // provider.Export(mailMergeResult, output); //} return provider.Export(mailMergeResult); } public Byte[] ReplaceCarePlanImage(Byte[] input, Byte[] image, IDictionary<string, string> imageNames) { //deprecated - unable find and replace image //possibly user two bookmarks and delete everything in between (i.e. the old image) and replace with the new image DocxFormatProvider provider = new DocxFormatProvider(); RadFlowDocument document = provider.Import(input); RadFlowDocumentEditor editor = new RadFlowDocumentEditor(document); var carePlanTitleParagraph = document.EnumerateChildrenOfType<Paragraph>().Where(p => p.StyleId.Contains("Title")).First(); if (carePlanTitleParagraph != null) { Break br = new Break(document); editor.MoveToInlineEnd(carePlanTitleParagraph.Inlines.Last()); editor.InsertParagraph(); var header = document.Sections.First().Headers.Default; var headerImages = header.EnumerateChildrenOfType<ImageInline>(); var footer = document.Sections.First().Headers.Default; var footerImages = footer.EnumerateChildrenOfType<ImageInline>(); var images = document.EnumerateChildrenOfType<ImageInline>(); foreach (var item in images) { if (headerImages.Contains(item) || footerImages.Contains(item)) { continue; } else { using (MemoryStream memStream = new MemoryStream(image)) { var extension = Path.GetExtension(imageNames["FileName"]); var props = System.Drawing.Image.FromStream(memStream); int Width; int Height; if (props.Width > 350) { Width = 350; Height = Convert.ToInt32((Convert.ToDecimal(props.Height) / Convert.ToDecimal(props.Width)) * 350); } else { Width = props.Width; Height = props.Height; } //editor.InsertImageInline(memStream, extension.Replace(".", ""), new System.Windows.Size(Width, Height)); item.Image.ImageSource = new Telerik.Windows.Documents.Media.ImageSource(memStream, extension.Replace(".", "")); item.Image.Name = Path.GetExtension(imageNames["FileName"]); } } } } return provider.Export(document); } public Byte[] NcAccidentBookMerge( Byte[] input, CreateOrEditNcDocumentInput ncDocument, UserEditDto currentUser, List<NcEntityDto> entities, List<UserEditDto> staff, string IncidentType, List<string> AccidentTags ) { List<string> EntityNames = new List<string>(); foreach (var ncEntity in entities) { var Title = ncEntity.GetData<AttributeDataDto>("Title").Value; var FirstNames = ncEntity.GetData<AttributeDataDto>("FirstNames").Value; var Surname = ncEntity.GetData<AttributeDataDto>("Surname").Value; EntityNames.Add(Title + " " + FirstNames + " " + Surname); } var ResidentNames = string.Join(", ", EntityNames); List<string> UserNames = new List<string>(); foreach (var person in staff) { var FirstNames = person.Name; var Surname = person.Surname; UserNames.Add(FirstNames + " " + Surname); } var StaffNames = string.Join(", ", UserNames); List<string> DatesOfBirth = new List<string>(); foreach (var ncEntity in entities) { var DoB = ncEntity.GetData<AttributeDataDto>("DateOfBirth").Value; DatesOfBirth.Add(DoB); } var DoBs = string.Join(", ", DatesOfBirth); List<string> AccidentTagList = new List<string>(); foreach (var AccidentTag in AccidentTags) { AccidentTagList.Add(AccidentTag); } var AccidentTagNames = string.Join(", ", AccidentTagList); DocxFormatProvider provider = new DocxFormatProvider(); RadFlowDocument document = provider.Import(input); dynamic mergeRecord = new ExpandoObject(); mergeRecord.IncidentSummary = ncDocument.DisplayName ?? ""; mergeRecord.ResidentNames = ResidentNames; mergeRecord.DatesOfBirth = DoBs; mergeRecord.StaffNames = StaffNames; mergeRecord.ReportString = ncDocument.ReportString ?? ""; mergeRecord.IncidentType = IncidentType ?? ""; mergeRecord.AccidentTags = AccidentTagNames; mergeRecord.OccurrenceDateAndTime = ncDocument.OccurrenceDatetime; if (UserNames.Count() > 0) { mergeRecord.FirstPerson = UserNames[0]; } mergeRecord.ReportingUser = currentUser.Name + " " + currentUser.Surname; List<ExpandoObject> mailMergeDataSource = new List<ExpandoObject>(); mailMergeDataSource.Add(mergeRecord); RadFlowDocument mailMergeResult = document.MailMerge(mailMergeDataSource); //use for testing - outputs to root of Web.Host //using (Stream output = new FileStream("CarePlan.docx", FileMode.OpenOrCreate)) //{ // provider.Export(mailMergeResult, output); //} return provider.Export(mailMergeResult); } public Byte[] NcIncidentReportMerge( Byte[] input, CreateNcIncidentReportDocumentInput incident ) { DocxFormatProvider provider = new DocxFormatProvider(); RadFlowDocument document = provider.Import(input); dynamic mergeRecord = new ExpandoObject(); mergeRecord.Id = incident.Id; mergeRecord.IncidentType = incident.IncidentType; mergeRecord.IncidentState = incident.IncidentState; mergeRecord.CreationTime = incident.CreationTime; mergeRecord.CreatorUser = incident.CreatorUser; mergeRecord.OccurrenceDateAndTime = incident.OccurrenceDatetime; mergeRecord.IncidentSummary = incident.IncidentSummary ?? ""; mergeRecord.FirstPersonToIdentifyTheIncidentUser = incident.FirstPersonToIdentifyTheIncidentUser; mergeRecord.ReporterUser = incident.ReporterUser; mergeRecord.ManagerNotified = incident.ManagerNotified; mergeRecord.ReportedToManagerUser = incident.ReportedToManagerUser ?? ""; mergeRecord.AntecedentNotes = incident.AntecedentNotes; mergeRecord.BehaviourNotes = incident.BehaviourNotes; mergeRecord.ConsequenceNotes = incident.ConsequenceNotes; mergeRecord.PropertyDamage = incident.PropertyDamage ?? "No property damage notes."; mergeRecord.PersonalInjuries = incident.PersonalInjuries ?? "No personal injury notes."; mergeRecord.MedicalNotes = incident.MedicalNotes ?? "No medical notes."; mergeRecord.ExternalAgencyNotes = incident.ExternalAgencyNotes ?? "No external agency notes."; mergeRecord.CarePlanNotes = incident.CarePlanNotes ?? "No care plan notes."; mergeRecord.RIDDORNotes = incident.RIDDORNotes ?? "No RIDDOR notes."; mergeRecord.NextOfKinNotes = incident.NextOfKinNotes ?? "No next of kin notes."; mergeRecord.AdditionalNotes = incident.AdditionalNotes ?? "No additional notes."; if (String.IsNullOrEmpty(string.Join(", ", incident.ResidentNames))) { mergeRecord.ResidentNames = "No residents involved."; } else { mergeRecord.ResidentNames = string.Join(", ", incident.ResidentNames); } if (String.IsNullOrEmpty(string.Join(", ", incident.StaffNames))) { mergeRecord.StaffNames = string.Join(", ", incident.StaffNames); } else { mergeRecord.StaffNames = string.Join(", ", incident.StaffNames); } if (String.IsNullOrEmpty(string.Join(", ", incident.ContactNames))) { mergeRecord.ContactNames = "No third parties involved."; } else { mergeRecord.ContactNames = string.Join(", ", incident.ContactNames); } List<ExpandoObject> mailMergeDataSource = new List<ExpandoObject>(); mailMergeDataSource.Add(mergeRecord); RadFlowDocument mailMergeResult = document.MailMerge(mailMergeDataSource); //RadFlowDocumentEditor editor = new RadFlowDocumentEditor(document); // document is an instance of the RadFlowDocument class //editor.ReplaceText("code", "source code", true, true); //use for testing - outputs to root of Web.Host //using (Stream output = new FileStream("ReportIncident.docx", FileMode.OpenOrCreate)) //{ // provider.Export(mailMergeResult, output); //} return provider.Export(mailMergeResult); } public Byte[] AppendHistory(Byte[] input, List<NcDocumentHistoryDto> documentHistory) { DocxFormatProvider provider = new DocxFormatProvider(); RadFlowDocument document = provider.Import(input); //SetupHistoryStyles(document); CreateSection(document, "Document history", documentHistory); //comment out when live //using (Stream output = new FileStream("LocalTest.docx", FileMode.OpenOrCreate)) //{ // provider.Export(document, output); //} return provider.Export(document); } #region helpers /// <summary> /// For calculating only age /// </summary> /// <param name="dateOfBirth">Date of birth</param> /// <returns> age e.g. 26</returns> private int CalculateAge(DateTime dateOfBirth) { int age = 0; age = DateTime.Now.Year - dateOfBirth.Year; if (DateTime.Now.DayOfYear < dateOfBirth.DayOfYear) age = age - 1; return age; } //private void SetupHistoryStyles(RadFlowDocument document) //{ // var heading1 = document.StyleRepository.AddBuiltInStyle(BuiltInStyleNames.GetHeadingStyleIdByIndex(1)); // var heading2 = document.StyleRepository.AddBuiltInStyle(BuiltInStyleNames.GetHeadingStyleIdByIndex(2)); //} private void SetupCarePlanStyles(RadFlowDocument document) { var heading1 = document.StyleRepository.AddBuiltInStyle(BuiltInStyleNames.GetHeadingStyleIdByIndex(1)); heading1.CharacterProperties.FontFamily.LocalValue = DefaultFontFamily; heading1.CharacterProperties.FontSize.LocalValue = 32.0; heading1.CharacterProperties.FontWeight.LocalValue = System.Windows.FontWeights.Bold; heading1.CharacterProperties.ForegroundColor.LocalValue = DefaultForeground; heading1.ParagraphProperties.PageBreakBefore.LocalValue = true; } private void CreateSection(RadFlowDocument document, string title, List<NcDocumentHistoryDto> documentHistory) { //delete section if exists Section sectionFound = null; var existingParagraph = FindHeaderAsParagraphContainingText(document, title); if (existingParagraph != null) { foreach (var sectionInstance in document.EnumerateChildrenOfType<Section>()) { if (sectionInstance == existingParagraph.BlockContainer) { sectionFound = sectionInstance; break; } } if (sectionFound != null) { document.Sections.Remove(sectionFound); } } RadFlowDocumentEditor editor = new RadFlowDocumentEditor(document); Section section = editor.InsertSection(); section.SectionType = SectionType.Continuous; section.PageSize = PaperTypeConverter.ToSize(PaperTypes.A4); var paragraph = section.Blocks.AddParagraph(); editor.MoveToParagraphStart(paragraph); paragraph.StyleId = BuiltInStyleNames.GetHeadingStyleIdByIndex(1); editor.InsertText(title); InsertTable(section, editor, documentHistory); } private void InsertTable(Section section, RadFlowDocumentEditor editor, List<NcDocumentHistoryDto> documentHistory) { var paragraph = section.Blocks.AddParagraph(); editor.MoveToParagraphStart(paragraph); Table table = section.Blocks.AddTable(); var row = table.Rows.AddTableRow(); var cell = row.Cells.AddTableCell(); cell.PreferredWidth = new TableWidthUnit(TableWidthUnitType.Fixed, 120); SetCellText(editor, cell, "History", bold: true, background: new ThemableColor(Colors.LightSteelBlue), horizontalAlignment: Alignment.Left); //cell = row.Cells.AddTableCell(); //cell.PreferredWidth = new TableWidthUnit(TableWidthUnitType.Fixed, 120); //SetCellText(editor, cell, "User", bold: true, background: new ThemableColor(Colors.LightSteelBlue), horizontalAlignment: Alignment.Left); //cell = row.Cells.AddTableCell(); //cell.PreferredWidth = new TableWidthUnit(TableWidthUnitType.Auto); //SetCellText(editor, cell, "Report string", bold: true, background: new ThemableColor(Colors.LightSteelBlue), horizontalAlignment: Alignment.Left); //cell = row.Cells.AddTableCell(); //cell.PreferredWidth = new TableWidthUnit(TableWidthUnitType.Fixed, 100); //SetCellText(editor, cell, "Filename", bold: true, background: new ThemableColor(Colors.LightSkyBlue), horizontalAlignment: Alignment.Left); foreach (var history in documentHistory) { row = table.Rows.AddTableRow(); //cell = row.Cells.AddTableCell(); //SetCellText(editor, cell, history.CreationTime.ToLocalTime().ToString("dd/MM/yyyy HH:mm"), horizontalAlignment: Alignment.Left, verticalAlignment: VerticalAlignment.Top); //cell = row.Cells.AddTableCell(); //SetCellText(editor, cell, history.CreatorUserName, horizontalAlignment: Alignment.Left, verticalAlignment: VerticalAlignment.Top); cell = row.Cells.AddTableCell(); SetCellText(editor, cell, history.ReportString, horizontalAlignment: Alignment.Left, verticalAlignment: VerticalAlignment.Top); //cell = row.Cells.AddTableCell(); //var test = Path.GetFileName(history.Uri); //SetCellText(editor, cell, Path.GetFileName(history.Uri), horizontalAlignment: Alignment.Left, verticalAlignment: VerticalAlignment.Top); } } private void SetCellText(RadFlowDocumentEditor editor, TableCell cell, string text, string fontFamily = null, double? fontSize = null, bool? bold = null, bool? italic = null, TableCellBorders borders = null, ThemableColor background = null, ThemableColor foreground = null, Alignment? horizontalAlignment = null, VerticalAlignment? verticalAlignment = null) { cell.IgnoreCellMarkerInRowHeightCalculation = true; cell.Padding = new Padding(1); var paragraph = cell.Blocks.AddParagraph(); paragraph.StyleId = BuiltInStyleNames.NormalStyleId; paragraph.Properties.SpacingBefore.LocalValue = 0; paragraph.Properties.SpacingAfter.LocalValue = 0; editor.MoveToParagraphStart(paragraph); if (borders != null) cell.Borders = borders; if (background != null) cell.Shading.BackgroundColor = background; editor.CharacterFormatting.FontFamily.LocalValue = string.IsNullOrEmpty(fontFamily) ? DefaultFontFamily : new ThemableFontFamily(fontFamily); editor.CharacterFormatting.FontSize.LocalValue = fontSize ?? DefaultFontSize; //editor.CharacterFormatting.FontWeight.LocalValue = (bold ?? false) ? FontWeights.Bold : FontWeights.Normal; //editor.CharacterFormatting.FontStyle.LocalValue = (italic ?? false) ? FontStyles.Italic : FontStyles.Normal; editor.CharacterFormatting.ForegroundColor.LocalValue = foreground ?? DefaultForeground; cell.VerticalAlignment = verticalAlignment != null ? verticalAlignment.Value : VerticalAlignment.Center; paragraph.TextAlignment = horizontalAlignment != null ? horizontalAlignment.Value : Alignment.Center; editor.InsertText(string.IsNullOrEmpty(text) ? " " : text); } private Paragraph FindHeaderAsParagraphContainingText(RadFlowDocument document, string searchedText) { foreach (var titleParagraph in document.EnumerateChildrenOfType<Paragraph>().Where(p => p.StyleId.Contains("Heading"))) { StringBuilder paragraphContent = new StringBuilder(); foreach (var run in titleParagraph.EnumerateChildrenOfType<Run>()) { if (run.Text == searchedText) { return titleParagraph; } } } return null; } #endregion }}
Can you tell us what Nuget packages we need to install to make this work?

I am trying to load a Word document and export to PDF, but the export file change the doc content when download it.
I am using the demo provide in the next url https://demos.telerik.com/aspnet-ajax/wordsprocessing/exporttopdf/defaultcs.aspx.
The changes in the content are:
- The bold format removed
- Some spaces are removed
-The footer is removed
I would like to know if i can use RadFlowDocument to load a document in format docx and export to PDF format without the format document will be modified .
I hope to receive help
Thanks for your time.

01.Private Sub InsertText(textBlock As Editing.Block, descriptionText As String)02. Dim ascii() As Byte = System.Text.Encoding.ASCII.GetBytes(descriptionText)03. For i As Integer = 0 To descriptionText.Length - 104. If ascii(i) = 13 Then05. textBlock.InsertLineBreak()06. Else07. textBlock.InsertText(descriptionText(i))08. End If09. Next10. End Sub
Hi all, I'm having trouble locating/seeing the NamedDestinations collection and the Bookmarks collection.
Online documentation indicates both are exposed by the RadFixedDocument object.
I'm using version 2019.2.503.40 of Winforms UI and coding in VB.Net if that matters. All documentation indicates it was available in Q3 of 2018.
Am I missing something obvious or is it not available? I've seen forum posts referencing WPF...
Thanks

