When trying to create documents simultaneously from different threads (in concurrent scenario), different exceptions are thrown: - NullReferenceException in Telerik.Windows.Documents.Core.Fonts.OpenType.OpenTypeFontSource.ReadTableData[T](UInt32 tag, ReadTableFormatDelegate`1 readTableDelegate) method, - OverflowException in Telerik.Windows.Documents.Core.Fonts.OpenType.Tables.CMapFormat4Table.Read(OpenTypeFontReader reader) method. Available in LIB version: 2017.2.814
System.Uri constructor throws UriFormatException when the text is some http address. Available in LIB Version 2017.2.814.
The PDF format includes a general multimedia framework allowing users to insert and play/visualize different media types. The feature is described on page 755 from PDF Reference 1.7.
The current implementation expects the widths to be integer values and InvalidCastException is thrown when a real number is parsed. Workaround: If the scenario allows, the PdfStreamWriter may be used instead of PdfFormatProvider. More information may be found in the following documentation article: http://docs.telerik.com/devtools/document-processing/libraries/radpdfprocessing/formats-and-conversion/pdf/pdfstreamwriter/overview Available in LIB Version 2017.2.731.
This is because PdfProcessing does not export Annotation Flags and this way all annotations has Print flag set to false. Available in Release Version R2 2017 SP1.
Paint content stream operator ("Do" in PDF specification) currently draws only Image XObjects. We should implement support for Form XObjects. Available in R2 2017 Release
This is causing issues when exporting the document to PDF from WordsProcessing - the pdf library tries to create the font, but cannot find it due to a different casing. When importing HTML document, the font-family property is read with small letters. Later, when converting the string containing the value, it is changed to title case. This issue will be reproducible with each font containing a name with a letter with casing different than the one of the other letters (exc. first capital letter), for example: Microsoft JhengHei
Currently, only images without transparency may be created with this class. Available in LIB version 2017.1.410.
If the MatrixPosition has Matrix (1, 0, 0, 1, 20, 10) the Table should be positioned with top-left coordinate (20, 10). Instead, it is wrongly positioned at (40, 20).
This leads to keeping a lot of memory when exporting pages from multiple PdfFileSource instances which are created from MemoryStream. Available in LIB version: 2017.1.320
The current implementation of IDisposable implements a simple Dispose method which releases the inner stream resource. However, if the PdfStreamWriter instance is not disposed explicitly by calling Dispose() or by surrounding it in "using" clause, then the inner Stream resource is not Disposed as well. The same applies for PdfFileSource class. We should implement the IDisposable pattern in a way that the GC disposes the inner stream if needed when collecting the PdfStreamWriter/PdfFileSource class instances.
This new API will not read/delete the existing PDF pages content and this would allow performance and memory efficient realization of the following scenarios: - Merge PDF document pages from different PDF files. - Split PDF document pages to separate PDF files. - Append/Prepend PDF content to existing PDF pages. Moreover, as this approach will not require reading/deleting existing PDF page content, it will not depend on complex PDF features and will depend only on the PDF file structure. This will allow processing of PDF documents which use less common PDF features which are currently not supported by the existing PdfProcessing API. Available in R1 2017 Release
The "g" and "G" operators are used for setting color with a single component. Available in R1 2017 Release
The method should create deep copy of the current page.
This would allow creating documents with preferences such us HideToolbar, HideMenubar, FitWindow, PrintScaling and all other viewer preferences specified in PDF format specification.
Measuring big paragraphs is time consuming and may be optimized.
Currently every text fragment is exported by specifying all its properties. When there are many fragments one after another we may skip specifying the properties for every single fragment. This will improve both memory and time consumption performance.
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