Handle the import of documents that have an invalid boolean value for the PrintScaling property of ViewerPreferences. The expected value of the /PrintScaling entry is a PDF name object:
/PrintScaling /None
/PrintScaling /AppDefault
When importing such documents, the following exception is thrown:
InvalidCastException: 'Unable to cast object of type 'Telerik.Documents.Fixed.FormatProviders.Pdf.Model.Types.PdfBool' to type 'Telerik.Documents.Fixed.FormatProviders.Pdf.Model.Types.PdfName'.'
Table cell content is not displayed after PDF export if cell Preferred Width is too small.
Workaround: Make cell Size(Preferred Width) big enough for the contents to fit.
When importing HTML content to a RadFlowDocument and exporting it to PDF format, the following error message occurs:
System.ArgumentException: 'The document element is associated with another parent. (Parameter 'item')'
at Telerik.Windows.Documents.Fixed.Model.Collections.DocumentElementCollection`2.VerifyDocumentElementOnInsert(T item)This missing functionality may be workaround by implementing and registering custom IPdfFilter implementation that decodes JPEG2000 images. The custom decoder may be registered with FiltersManager class and its implementation may be similar to RadPdfViewers JpxDecoder SDK example implementation: - https://github.com/telerik/xaml-sdk/blob/master/PdfViewer/CustomDecoder/JpxDecoder.cs
Table with specified width in inches is not correctly exported when the size is set in inches (this is done in the imported HTML)
Workaround: set the table size in the code and remove the style.
foreach (Table table in document2.EnumerateChildrenOfType<Table>())This is the code for inserting the image:
static void Main(string[] args)
{
FixedExtensibilityManager.ImagePropertiesResolver = new ImagePropertiesResolver();
//Telerik.Windows.Documents.Extensibility.JpegImageConverterBase defaultJpegImageConverter = new Telerik.Documents.ImageUtils.JpegImageConverter();
//Telerik.Windows.Documents.Extensibility.FixedExtensibilityManager.JpegImageConverter = defaultJpegImageConverter;
//Output("fyb-64.png", "output-working.pdf");
Output("fyb.png", "output-broken.pdf");
}
private static void Output(string resourceName, string outputFileName)
{
var document = new RadFixedDocument();
using (var editor = new RadFixedDocumentEditor(document))
{
Stream image = new FileStream(resourceName, FileMode.Open);
var table = new Table
{
LayoutType = TableLayoutType.FixedWidth,
Margin = new Thickness(10, 0, 0, 0),
};
var row = table.Rows.AddTableRow();
var cell = row.Cells.AddTableCell();
var block = cell.Blocks.AddBlock();
block.InsertImage(image);
editor.InsertTable(table);
var pdfData = ExportToPdf(document);
File.Delete(outputFileName);
File.WriteAllBytes(outputFileName, pdfData);
Process.Start(new ProcessStartInfo() { FileName = outputFileName, UseShellExecute = true });
}
}
private static byte[] ExportToPdf(RadFixedDocument document)
{
byte[] pdfData;
using (var ms = new MemoryStream())
{
var pdfFormatProvider = new PdfFormatProvider();
pdfFormatProvider.Export(document, ms);
pdfData = ms.ToArray();
}
return pdfData;
}Workaround: Instead of setting the ImagePropertiesResolver, set the JpegImageConverter:
Telerik.Windows.Documents.Extensibility.JpegImageConverterBase defaultJpegImageConverter = new Telerik.Documents.ImageUtils.JpegImageConverter();
Telerik.Windows.Documents.Extensibility.FixedExtensibilityManager.JpegImageConverter = defaultJpegImageConverter;
Culture on generating computer: de-DE
The first string is an in-built string and is exported correctly. The other three strings are custom (not part of the in-built collection), are not converted to invariant culture and do not produce correct results when the file is opened in Excel.