October 17 2014. It’s only been 4 months (to the day!) since the previous release but the new version still adds quite a few refinements and fixes to Qoppa’s PDF parsing and rendering engine and to the following features: annotations, form fields, digital signatures and linearization.

New Library: We have released our new PDF optimizer library, jPDFOptimizer, check it out!

Version number: 2014R2 (v2104R2)

Java PDF Libraries: jPDFProcess, jPDFAssemble, jPDFFields, jPDFImages, jPDFPrint, jPDFSecure, jPDFText

Qoppa’s PDF engine API changes from previous version:
New! The API change now also includes the difference in each individual library package: com.qoppa.pdfAssemble, com.qoppa.pdfFields, com.qoppa.pdfImages, com.qoppa.com.pdfPrint, com.qoppa.pdfSecure, com.qoppa.pdfText so library customers can immediately identify the changes in the individual library they use.
API Changes

Parsing / Rendering / Printing
[JPDF-367] – Configurable CJK Fonts through PDFRenderHints.setCJKSystemFontName Component API Changes
[JPDF-450] – Implement convertSamplesToXX methods in CalRGB and CalGray color spaces
[JPDF-77] – New IPDFDocument.getDocViewPrefs() to get and set viewer preferences entries in the root catalog
[JPDF-82] – Improved support for underline in PDFGraphics
[PS-1656] – Document Specific: Upside down text in attached document
[JPDF-437] – Document Specific: Exception parsing content stream: com.qoppa.pdf.PDFException: Unrecognized command: +0.000
[PS-2230] – Document Specific: NullPointerException on getClipBounds Exception when printing document.
[JPDF-104] – Better support for start and end subroutine entries for Type1 fonts
[JPDF-435] – Document Specific: When exporting a page as an image, an image is rendered at the wrong location due to a graphics composite
[JPDF-444] – Document Specific: Issue with misplaced drop shadow when converting PDF to image due a soft mask

Annotations
[JPDF-295] – Save custom rubber stamps appearance streams when exporting annotations to XFDF
[JPDF-54] – When creating image stamps or push button with images, PDFImageStream (image, params) will use jpeg compression instead of flate when params is null
[PS-1656] – Document Specific: text rendering upside down
[PS-1556] – Document Specific: fail to render due to PDFGlyphVector throwing runtime exception
[JPDF-467] – Document Specific: Delete annotations and save, page content disappears due to stream objects

Form Fields
[JPDF-331] – For fields missing appearance stream, only modify the appearance stream dictionary when NeedAppearances is true or when the field value has changed
[JPDF-423] – New option PaintOnlyImageButtons when flattening fields
[PS-2349] – In form calculation, fields with container were not always computed properly

Digital Signatures
[JPDF-426] – QSignature.clearSignature() was always returning false. It now returns true if it completes successfully.
[JPDF-434] – When applying a digital signature and saving as linearized, the output document was invalid
[PS-2306] – Problem displaying signature, now looks in all RDN objects until finding the specific AttributeTypeAndValue
[PS-2235] – AES 256 with permissions password only would require open password Document Editing and Assembly

Linerization
[JPDF-473] – Linearization code uses a static variable for PDFEncryption value which can create concurrency issues
[PS-2307] – Document Specific: Converting PDF to linearized was causing a stack overflow

Other
[JPDF-440] – Non-latin characters are now handled correctly in document properties and added to the xmp meta data using UTF-8 encoding
[JPDF-433] – Add new method PDFPageAccess.setTextColor to change text color within a shape or region on a page
[JPDF-432] – Document Specific: AppendPage() causes a corrupted document
[JPDF-470] – In PDFPage.findText(), page number field is now returned in TextPosition objects
[PS-1970] – Support for “Hide / Show Layers” under the action  list for bookmarks, links and form fields.