The current implementation relies on valid cross-reference table offsets in the PDF documents so that PDF objects are easily found and parsed. However, a mechanism for importing documents with invalid cross-reference table offsets may be implemented.
The attached project shows how to repair such documents.
Open a large document and start scrolling fast.
The pages a blank when scrolling and are rendered after scrolling stops.
When a PDF document contains images compressed with CCITTFaxDecode with applied BlackIs1 parameter, black color is visualized as white and white as black.
Please refer to the attached sample screenshot demonstrating how the document look in Adobe and in RadPdfViewer.
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.
Some files when opened with PdfViewer will throw a KeyNotFoundException which will be handled. Parts of the text in the file might or might not be missing.
When the file has an annotation with a destination and this destination is missing from the destinations (Dests) collection of the catalogue, KeyNotFoundException is thrown when you try to scroll to the page where the annotation is located. A better behavior would be for nothing to happen when trying to click on the annotation leading to the destination.
structure The hierarchical document structure is a means to describe the PDF document structure, which is currently not supported. See 10.6.1 Structure Hierarchy on 856 page of the PDF specification for details. This document structure is an alternative to the standard PDF structure and most non-Adobe software does not support it. The document might have been created with Adobe software like Adobe LiveCycle Designer. Very often the document contains some fallback text in the standard PDF structure like: "Please wait... If this message is not eventually replaced by the proper contents of the document, your PDF viewer may not be able to display this type of document." "The document you are trying to load requires Adobe Reader 8 or higher. You may not have the Adobe Reader installed or your viewing environment may not be properly configured to use Adobe Reader. For information on how to install Adobe Reader and configure your viewing environment please see http://www.adobe.com/go/pdf_forms_configure." "For the best experience, open this PDF portfolio in Acrobat X, Reader X, or later."
When there is no ToUnicode CMap, the text from the Simple Font instance (TrueType or Type1 font) 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. More information about this may be seen in the second point of section "5.9.1Mapping Character Codes to Unicode Values" on page 470 in PdfReference 1.7.
The rendering of images with size ~5000/6000 and BitsPerComponent is time-consuming. The scenario is optimized in terms of memory but would be nice to increase the performance as well.