When Cyrillic culture is set an InvalidCastException is thrown.
Workaround: use English culture during the import process
System.Globalization.CultureInfo currentCulture = System.Threading.Thread.CurrentThread.CurrentCulture;
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-EN");
PdfFormatProvider provider = new PdfFormatProvider();
RadFixedDocument document;
using (Stream stream = File.OpenRead("popup_dedetizacao_ok.pdf"))
{
document = provider.Import(stream);
}
System.Threading.Thread.CurrentThread.CurrentCulture = currentCulture;
For the RadPdfViewer control you can use a similar approach:
System.Globalization.CultureInfo currentCulture = System.Threading.Thread.CurrentThread.CurrentCulture;
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-EN");
PdfFormatProvider provider = new PdfFormatProvider();
RadFixedDocument document;
using (Stream stream = File.OpenRead("popup_dedetizacao_ok.pdf"))
{
document = provider.Import(stream);
}
System.Threading.Thread.CurrentThread.CurrentCulture = currentCulture;
RadForm form = new RadForm();
RadPdfViewer radPdfViewer1 = new RadPdfViewer();
form.Controls.Add(radPdfViewer1);
radPdfViewer1.LoadElementTree();
radPdfViewer1.Dock = System.Windows.Forms.DockStyle.Fill;
radPdfViewer1.Document = document;
form.ShowDialog();
Error message:
System.InvalidCastException: 'Unable to cast object of type 'Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Types.PdfHexString' to type 'Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Model.Types.PdfLiteralString'.'Incorrect calculation of UsedCellRange when conditional formatting is applied to a large cell range.
Workaround:
var usedCellRange = workbook.ActiveWorksheet.GetUsedCellRange(
CellPropertyDefinitions.AllPropertyDefinitions
.Except(
CellPropertyDefinitions.AllPropertyDefinitions.Where(p => p.Name == "DataValidationRule" || p.Name == "ConditionalFormatting")));
When a format string of type: _ * # ##0_ ;_ * -# ##0_ ;_ * "-"??_ ;_ @_ is set through code and the culture settings of the machine are set so that the number grouping symbol is space, the resulting format string comes out incorrect on export: _,*,# ##0_,;_,*,-# ##0_,;_,*,"-"??_,;_,@_,
This will happen every time the symbols in-between and after _ and * coincide with the number group separator.
Latest version 2024.2.426:
Old version 2022.3.906:
Use the following code:
static void Main(string[] args)
{
Console.WriteLine("Test from 2022.3.906 to 2024.2.426.");
string html = @"<html>
<head>
<style type=""text/css"">
h1 {
background-color: red;
}
#highlight1{
background-color: blue;
}
.highlight2{
background-color: yellow;
}
</style>
</head>
<body>
<h1>H1 - This Works </h1>
<h2 id=""highlight1"">H2 with id selector. This works too.</h2>
<h3 class=""highlight2"">H3 with class selector. This didn't work</h3>
</body>
</html>";
Telerik.Windows.Documents.Flow.FormatProviders.Html.HtmlFormatProvider html_provider = new Telerik.Windows.Documents.Flow.FormatProviders.Html.HtmlFormatProvider();
RadFlowDocument document = html_provider.Import(html);
string html_output = "output.html";
using (Stream output = File.Create(html_output))
{
html_provider.Export(document, output);
}
Process.Start(new ProcessStartInfo() { FileName = html_output, UseShellExecute = true });
}
string fileName = "file.xlsm";
Telerik.Windows.Documents.Spreadsheet.Model.Workbook workbook;
IWorkbookFormatProvider formatProvider = new Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml.Xlsm.XlsmFormatProvider();
using (Stream input = new FileStream(fileName, FileMode.Open))
{
workbook = formatProvider.Import(input);
}
The hanging indent of the paragraph affects the rendering of content with tabs. However, the indent is not respected while generating the PDF, leading to disordered content.
Workaround: Insert a tab stop with the position set to the value for hanging indent:
foreach (var paragraph in this.flowDocument.EnumerateChildrenOfType<Paragraph>())
{
if (paragraph.Properties.HangingIndent.HasLocalValue)
{
Run run = paragraph.EnumerateChildrenOfType<Run>().Where(r => r.Text == "\t").FirstOrDefault();
if (run != null)
{
paragraph.TabStops = paragraph.TabStops.Insert(new Telerik.Windows.Documents.Flow.Model.Styles.TabStop(paragraph.Properties.HangingIndent.LocalValue.Value));
}
}
}
In a WPF project targeting .NET 6, the following code snippet results in an error:
public MainWindow()
{
InitializeComponent();
Telerik.Windows.Documents.Flow.FormatProviders.Html.HtmlFormatProvider provider = new Telerik.Windows.Documents.Flow.FormatProviders.Html.HtmlFormatProvider();
RadFlowDocument document = provider.Import("<html><body><h1>My First Heading</h1><p>My first paragraph.</p></body></html>");
}
System.IO.FileNotFoundException: 'Could not load file or assembly 'System.Text.Encoding.CodePages, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified.'
Workaround: edit the .csproj file and include the required package reference:
<ItemGroup>
<PackageReference Include="Telerik.Windows.Documents.Flow" Version="2024.2.426" />
<PackageReference Include="System.Text.Encoding.CodePages" Version="7.0.0" />
</ItemGroup>
<ItemGroup>
<FunctionsPreservedDependencies Include="System.Text.Encoding.CodePages.dll" />
</ItemGroup>
List indent is not correct when exported to PDF. All indents start from the same position.
When importing a RTF document with bullet lists and exporting the RadFlowDocument back to RTF format the following result is observed:
- the bullet's left offset is changed
- the bullets color is also changed
Workaround: use the Telerik.Windows.Documents.FormatProviders.Rtf.RtfFormatProvider available in the Telerik.Windows.Documents.FormatProviders.Rtf.dll