June 17 2014. This release allows rendering and printing of very large JPEG images,  plus many form fields, and document security improvements.

Version number: 2014R1 (v2104R1)

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

This is the full Qoppa’s PDF engine API changes from previous version:
API Change

Handle very large JPEG / JPG images 
– [jPDFProcess, jPDFPrint, jPDFImages]
4246 – Better performance and memory management when rendering large JPG images (200Mb+). The library would sometimes display red “X”s as it was running out of memory trying to render pages containing large JPG images.

Document Permissions  – [All PDF Libraries]
3982, 4266 – 3 Levels of Document Permissions When enforcing permissions within a PDF document, Qoppa’s libraries now check against 3 permissions types. The existing API was modified to reflect this change

  1. Document Permissions – when the document is encrypted.
  2. DocMDP permissions – when the document has a certifying signature.
  3. Usage Right Permissions – when the document is Adobe Reader enabled. Qoppa’s jPDFProcess and jPDFSecure are now able to preserve on Save, enforce and clear document usage rights in PDF that have been “Adobe Reader Enabled” PDFs).

4335, 4473, 4542 – Permissions Enforcement: Reviewed all methods in PDFDocument and PDFPage to make sure that permissions are enforced at the API low-level enforce rather than relying on GUI or client layers to enforce them. Permissions was not always enforced when extracting text and images.
4192 – New Permission Exceptions – The PDFSecurityException now has 2 subclasses: PDFPasswordException, PDFPermissionException.

Digital Signatures Improvements – [jPDFProcess, jPDFSecure]
678 – Added support for Windows and Mac certificates to be used when validating signature (root certificates) or applying signatures (own certificates) allowing signing with hardware / USB / Smart Card keys.
4642 – Allow validation of certificate that was issued by a CA, but where the CA’s certificate is not included in the chain. If we have the CA’s certificate in our list of trusted certificates, the chain should still validate since we know who the issuer is.
506 – Improvements in the way signature fields such as name, email, etc.. are read is from the cn entry and displayed in the signature appearance.

Form Fields – [All PDF Libraries]
4452 – Expose methods to query XFA status (Acroform.isXFAStatic(), Acroform.isXFADynamic())
4313 – Ability to convert a form from xfa static to xfa dynamic (some field actions, formatting, calculating and validating) may be lost. See Acroform.removeXFA();
4312 – Partial exports of annotations in FDF format to only export a set of annotations.
4661 – Document Specific – Incorrect tab order due to a page rotated not taken into account.
611 – Field reset now resets signature fields.
4428 – Fix issue with button icons not painting upon flattening.
3903 – Fix issue with right alignment and formatting in comb fields.
4154 – Document Specific – Fix StringIndexOutOfBoundsException  within a text field.
4543 – Handle “invalid” forms where the DR dictionary is missing (add a DR dictionary).
4570 – Fix check boxes, look at the appearance state versus value of the field when the 2 are incompatible (to be consistent with other viewers).
4522 – Document specific. Regression. Arabic characters not displaying in form field.

JavaScript –  [All PDF Libraries]
4213, 4643, 4144- Many JavaScript improvements and bug fixes: Doc.submitForm, Doc.addField, app.Response, page open and close actions.
4597 – Implemented resetForm and fixed hanging issue.
3760 – JavaScript events for choice fields such as “event.willCommit”
4422 – Default behavior changed to show warning dialog upon formatting or validation error instead of beeping.
3922 – Display expected format for date fields in validation warning dialog.
4533 – In getting a field value from JavaScript, a space character was trimmed to an empty value when it shouldn’t.

Document / Content Stream –  [All PDF Libraries]
2279, 4454 – When document were encrypted but with no fileID we used to throw an exception (java.util.zip.ZipException: unknown compression method).
4311 – Fix issue with copying page content with scaling.
4356 – Document Specific – Fix issue when merging 2 PDFs  with an output document having a corrupted page tree.
4261 – Document Specific – Fix issue with text and lines not painting. The issue was with not handling correctly indexed color spaces within stroke color drawing commands.
4093 – Handle bookmarks with invalid named destinations formatted as [page, /name, x, y].
4296 – Document Specific – Header/footer getting added upside down.
3874 – Document Specific – Handle invalid appearance stream dictionary in form fields.

Text Extraction –  [jPDFProcess, jPDFImages, jPDFPrint, jPDFText]
4662 – Document Specific – Fonts were not loading.
4137, 4007 – Improved error handling in text extraction. When trying to extract text through getText() method and a page could not be rendered, even though there was an internal exception, the exception did not bubble up, and so the host application had no way to tell that there was a problem with the PDF, it simply got an empty string. We now throw the exception as expected.
3083 – Document Specific. Fixed issue with text encoding error which affected rendering and text extraction.
2706 – Document Specific. Extracting text out of a document would give an exception.
4618 – Document Specific. Handle PDFs for which the BaseEncoding entry had an invalid encoding name in the Encoding dictionary (used to give an NPE).

PDF Rendering –  [jPDFProcess, jPDFImages, jPDFPrint]
3876 – Try and display pages even though they may contain “garbage” and invalid commands at the end of a stream (Used to show Error Rendering Page Unrecognized Command).
4005 – Fix issue with top half of document created with FileMaker Pro not displaying.
4133 – Error Rendering Page: Missing font bbox.
3672 – Allow opening PDFs created by “PDF Creator Ultimate” where the document info object is at the wrong location compared to the index. We used to throw a “Missing Root Catalog”.
4082 – Fix issue opening IRS form f941.pdf.
3701 – Document Specific – Pages were not rendered (exception com.qoppa.pdf.PDFException: Illegal character ‘>’)

OCR –  [Optional in jPDFProcess]
3651 –  Handle mixed content pages allowing to OCR the images only on a page and ignoring any existing text content. Do not OCR pages which already contain invisible text.
3795 – Fix issue with rendering header/footer after OCR.

Images –  [jPDFProcess, jPDFImages, jPDFPrint]
4434 – Fix issue with getPageSubImage  – DocumentSpecific had to do with Clip.
4459 – Handle JPG images which ICC profile contains some flags that Java’s ICC engine cannot handle (java.awt.color.CMMException: Invalid image format).
4425 – Missing elements when converting a PDF to images. This was an issue due to not properly setting the backdrop color / luminosity as defined by the softmask clip area.

Annotations – [ jPDFProcess]
1120 – Support for non integer line and border thickness in graphical annotations.
4279 – Document Specific: No more opaque annotations when using FormXObject with backdrop and composite.
4143 – Redaction annotations were not using the default author defined in AnnotationTools for the annotation’s creator.
4026 – Fix an issue with negative font size and redaction.

Runtime Args –  [All PDF Libraries]
4423 – New runtime arguments for debugging is now documented -qoppa.debug=true
4049 – New runtime argument for setting license key jPDFImagesKey=12345

Many bug fixes –  [All PDF Libraries]


Qoppa’s New Library to Optimize PDF Documents!