Decode array for image masks with DeviceGray color space is not respected, and always the default array of [0 1] is used for visualization. When the mask is encoded with [1 0], the mask is applied inversed, making the wrong pixels transparent. This may lead to images becoming invisible. Fix available in LIB Version 2017.3.1120.
Due to excessive memory consumption when decoding images, OutOfMemoryException can be thrown when viewing documents with large images inside them. Workarounds: - Set ExtensibilityManager.MaxImageSize = null. This will skip one resizing step, and could be beneficial in documents containing few large images. - Use 64-bit process for the client application. This allows the process to consume much more memory. Note that starting 64-bit process while debugging can be tricky, as described in this blog post: https://weblog.west-wind.com/posts/2016/Dec/19/Visual-Studio-Debugging-and-64-Bit-NET-Applications. Available in R1 2018 Official release version.
As a result, the glyphs are not measured and positioned properly. The issue applies to the TrueType and Type1 fonts.
The document will be imported with a loss of content. The reason is that ASCII85Decoder will throw an ArgumentException when the stream doesn't end with '~>'. Although this is invalid case according to PDF specification, other applications are handling it and the document is successfully visualized in them. We may also consider implementing workaround that handles such invalid streams.
The PdfViewer won't load a document from PdfDocumentSource created from Uri and the ReadOnDemand option. Here is an example: new PdfDocumentSource(new Uri("webaddress/somefile.pdf"), FormatProviderSettings.ReadOnDemand); Available in LIB Version 2017.1.130
The exception is thrown while decoding TIFF images. Although the document is properly loaded and the end user is not impacted, the DivideByZeroException is logged and present in the OnException event handler parameters.
The visualizations of all annotations are defined by their normal appearance streams. This is already implemented in RadPdfViewer for the supported annotation types (Link and Widget annotations). It may be easily adopted for not supported annotation types as well. Available in 2017 R3 Official Release Version.
Currently, RadPdfViewer uses WPF DrawingContext class for drawing page elements to a Canvas. When PDF page has many content elements (usually geometries) drawing the page may be time-consuming and freezes the UI. Instead, we should consider implementing another approach for rendering the content asynchronously which would improve the user experience.
When text is exported from PDF document using the TextFormatProvider (it's also used internally for the Copy operation), it is automatically split to lines using the vertical position of the words on the page, and small tolerance. Currently the tolerance is hard-coded to 0.1 pixels, which is not suitable for documents which contains scanned and OCR-ed text, and there the text lines could be slightly inclined. The result is that words on one slightly inclined line are recognized as if they are on separate lines.
This allows specifying a soft mask in the external graphics state.
The exception is thrown during "Put" operator execution.
When graphic state uses stroking text rendering mode, the glyphs are visualized with bigger stroke thickness than the expected one. Available in LIB Version 2018.2.521.
Currently, when we parse inline image dictionaries we rely on the assumption that the colorspace will be PdfName. However, there are files with complex colorspaces that are PdfArray and InvalidCastException is thrown. All the content after this exception is lost and not visualized by RadPdfViewer.
Currently, all images are decoded and preserved in RGBA format (32 bits for each pixel). However, there are files that optimize their images by preserving them with 1 bit for each pixel. In WPF we may create monochrome System.Windows.Media.ImageSource that would optimize the performance and memory consumption when rendering such images. Available in R1 2018 Official Release Version.
FixedDocumentPresenter could be TemplateBound to PDFViewer's Background property. Available in LIB version: 2016.3.1205
When there is no ToUnicode CMap, the text from the Simple Font instance should be extracted by mapping the glyph name to its corresponding charcode according to Adobe Glyph List. Additionally, the Differences array should be included in these calculations when there is custom encoding. The current implementation of RadPdfViewer makes ToString to the original char id byte value which leads to wrong characters.
The instances are kept in GeometryRenderer cache and each time the content stream is parsed new PathGeometry instances are added to GeometyRenderer store Dictionary field. Available in R1 2017 Official Release Version.
"Save As" is common functionality in most of the popular PDF Viewers. It should save the currently loaded document to a file. Workaround: Currently there is SDK demonstrating how to add such functionality: https://github.com/telerik/xaml-sdk/tree/master/PdfViewer/PdfViewerCustomSaveCommand Available in R3 2017 Official Release Version.
This is not quite a valid PDF file scenario according to PDF file specification. However, we may try handling it in order to show the correct number of pages. When the kid is of type Pages, it should be added to the pages traversal recursion only the first time it is met.
Implement import and export of content with Type0Font with GBK-EUC-H encoding.