Release Date: August 17 2016
Version number: v2016R1
Java PDF Components: jPDFViewer, jPDFNotes, jPDFEditor

API Changes (from previous version)

Note: There are quite a few API differences between this version and the previous one. One reason is that Qoppa’s libraries are now compiled in Java 6 and make use of Generics. The other reason is that many methods that used to be accessible through IPDFDocument and IPDFPage have been copied to PDFDocument and PDFPage to make these methods more visible to our customers.

It is important to bring the new jars into your IDE and to recompile your application when upgrading to the new version of our libraries.

Also make sure to update the rhino library if using JavaScript and the Bouncy Castle libraries if using digital signatures.

Feature Highlights

  • Change Java version to 1.6
  • Change API to use generics. This requires to bring new jars into IDE and recompile.
  • Much improved up-sampling of images
  • Touch / Finger Mode for touch-enabled and smaller screens
  • Support for composite blend modes in viewers (viewer, notes, editor)

Component User Interface / GUI
JPDF-734 – New Touch Mode for Qoppa’s PDF Components. See new method PDFViewerBean.setTouchEnabled(). See it in action in our sample demo application under View -> Touch Mode.
JPDF-740 – Improvements for tile caching and memory use on Mac OS X Retina screens
PS-2708 – Context menus improvements for annotation, content editing, hand tool (Cut, Paste, etc…)
JPDF-791 – Tile refresh issue (blank pages) when rotating pages and scrolling up
JPDF-773 – Thumbnail pane is wider by default to show “options” toolbar button
JPDF-604 – Redirect any issue during text search to the user
JPDF-744 – Document Specific: Quick search locks up application with exception “Unterminated string”
JPDF-740 – Regression issue introduced when drag and drop was implemented. Memory was held on to after disposing the bean.
JPDF-738 – Don’t remove left tabbed buttons when bean is removed from a container

Image / Rendering / Fonts / Printing
JPDF-782 – Add support for embedded truetype collections (ttc). The PDF specs do not seem to support embedded TrueType collections but some of our competitors do, so added support for them.
JPDF-796 – Qoppa new print dialog uses lots of CPU for previewing PDFs in monochrome
JPDF-533 – Improve performance when rendering gradients: radial, axial, …
PS-2658 – Better error handling for images with corrupted metadata
PS-3146 – Print form only option that will only print form fields and no page content. See PrintSettings.setPrintFormsOnly()
JPDF-679 – Added code to protect against invalid color maps (ArrayIndexOutOfBoundsException) and make sure pages can render
JPDF-754 – Font ClassCastException when opening PDF due to Type3 handling of encodings
JPDF-753 – Document Specific: Support for Type0 fonts with embedded CMap and embedded non-CID CFF font
JPDF-751 – Resolve concurrency issue with Kodak Color System (Java 6, Java 7) java.awt.color.CMMException: General CMM error528
at sun.java2d.cmm.kcms.CMM.checkStatus(
at sun.java2d.cmm.kcms.ICC_Transform.colorConvert(
JPDF-739 – Document Specific: ArrayIndexOutOfBoundsException in font when getting char width
JPDF-520 – Incorrect Unicode values from text where font has custom encoding
JPDF-730 – Fix possible thread deadlock issue when getting font metrics
JPDF-720 – 4 bit images with multiple components (i.e. 4 bit RGB images) not being painted correctly
JPDF-719 – NullPointerException when loading document with “empty font”
JPDF-727 – Document Specific: Rendering characters that should not be. Added “nonmarkingreturn” and “.null” to Adobe Glyph List.
JPDF-779 – Regression: Restored logic to read and use ToUnicode stream as a CID CMap
JPDF-729 – Regression: Font Rendering Issue with Custom Type 3 Font using stencil image for each character

PS-2572 – Set a vertical scale for measurement annotation
PS-2091 – Better handling of grouped annotations (display and export)
JPDF-704 – Add preview feature for stamp menu item in stamp in stamp menu.
Ability to move objects in larger increments using the “arrow” + “shift” keys
JPDF-715 – Added support for creation date, optional entry for markup annotations. API Change: New getCreationDate() method. GUI change: New Creation Date label under Annotation Properties Dialog -> General Tab.
PS-1642 – Rounded corners in text highlights when text is vertical
JPDF-724 – Add convenience method IAnnotationFactory.createTypeWriter() to create a free text with a “FreeTextTypeWriter” intent
JPDF-766 – Regression: Typewriter – cursor position not correct to edit Japanese text

Bookmarks / Links 
JPDF-705 – Added BookmarkPanel.expandCurrentBookmark() to API. Added menu items to Bookmark Panel for “Expand current bookmark” and “Highlight current bookmark”.

Interactive Form Fields 
JPDF-763 – Add method Widget.getRotation() returning the rotation of the form field widget
JPDF-733 – Fix issues with default signature tool tip (“Click to Sign”) and setToolTipText() method in signature fields
JPDF-706 – Fix null pointer exception on loading document, in XFA code, due to missing data in the data node of datasets
JPDF-789 – Class cast exception when clicking on a date field
JPDF-215 – Regression: Some characters don’t show when typed into document field with no encoding specified
JPDF-750 – Regression: Graphics.setFont issue with Bold versus Plain

JPDF-774 – Added support for Javascript functions Doc.gotoNamedDest(), App.popUpMenu(), App.openDoc()
PS-2195 – Added support for JavaScript field.maildoc
JPDF-790 – Add required fields validation and handle response for submit function in javascript (in the same way as for submit form action)
PS-2690 – Open API access to JavaScript Page Actions & Document Actions. See TriggerActions.getPageOpenActions(), getPageCloseActions(), getDocCloseActions(), getDocWillSaveActions(), getDocWillPrintActions()

File Attachments 
Ability to select and save more than one attachment at a time
JPDF-755 – File attachment not found in Adobe Reader when attachments are not added to the tree alphabetically.
JPDF-778 – New method PDFDocument.addEmbeddedFile() with inputstream and additional parameters
JPDF-785 – IEmbeddedFile, the info class for file attachments, has new methods: getCheckSum(), getCreationDate(), and getModDate()
JPDF-793 – File attachments with Unicode characters in file name are not displayed correctly
JPDF-797 – NullPointerException when getting file attachment file size when PDFStream filter entry missing in dictionary

Content Editing / Document Assembly
PS-2822 – Allow editing image properties in Content Editing.
New method PDFDocument.appendImageAsPage() to add a new page to a document consisting of the image.
JPDF-742 – Add workaround to avoid “Missing Catalog Error” after editing content of a PDF with an invalid XRef stream entry.
PS-3182 – Disallow document changes when document is signed with a standard signature. Signature should be cleared before making any changes to the document. See new com.qoppa.permissions.SignaturePermissions class.

JPDF-798 – Document Specific: Page missing content after applying redaction annotation
JPDF-772 – Document Specific: Redaction text not redacted and text shifting

JPDF-736- Add new method PDFSecure.getEncryptType() that returns the encryption type

Third Party Libraries
JPDF-799 – Update to use Rhino version to allow JavaScript sand-boxed mode that only initializes “safe” java objects (“leaving out those that offer access directly to Java classes”)
JPDF-713 – Update to use Latest Bouncy Castle Libraries v1.54

Jars / Build
JPDF-799 – Make com.qoppa.pdf.settings public since it contains public classes
JPDF-552 – Compile with Java 1.6 – Drop support for Java 1.4 and 1.5
JPDF-677 – Add complete build number to manifest file (for instance v2016R1.3 instead of v2016R1)

Sample Demo Applications
JPDF-707 – Ship Sample Applications for jPDFViewer / Notes / Editor Sample Apps with Java 1.8 instead 1.6
JPDF-721 – Add more info to logs such memory used, vm options, operating system info
JPDF-685 – Open up additional Menu functions in component sample app menus (to demonstrate more features)
JPDF-800 – Windows: New program group and additional start menu items for end-user guide, JavaDoc API, Qoppa Home Page, Uninstall