August 09 2013.
This release adds OCR (optional module), digital signatures enhancements, and the new AES 256 encryption algorithm.
Version number: 2013R2 (v2013R2)
Java PDF Components: jPDFViewer, jPDFNotes, jPDFEditor
New Optional OCR Module API Change
This is the full Qoppa's PDF engine API changes from previous version
text to PDF documents with the new OCR module
. Please contact us if you
would like to offer this feature in your application. You may download
our end-user PDF software
, PDF Studio, to test the OCR functionality. Look under Document -> OCR - Create Searchable PDFs in the top menu.
Digital Signature Enhancements
• [jPDFProcess, jPDFSecure]
Ability to add a certifying signature to a PDF
document. A certifying signature is the first signature on a PDF and
allows to define the changes that are allowed in the certified document.
Read more about PDF Certifying Signatures
• [jPDFProcess, jPDFSecure, jPDFImages, jPDFPrint]
• [jPDFProcess, jPDFSecure]
Check key usage for PKCS1, PKCS7 signatures. The
SignatureInformation constructor will now throw an exception if the
certificate's key usage is something other than: nonRepudiation,
digitalSignature, unspecified. We are enforcing key usage in order to
remain consistent with the way other PDF viewers validate certificates.
New AES 256 Algorithm
Implemented the new
algorithm for AES 256 (R=6) encryption as defined in the latest PDF
specifications (PDF 2.0). The new algorithm is compatible with Adobe®
X and over. The new algorithm is used when applying new
signatures but the "old" algorithm is still being validated in existing
signatures for backward compatibility with Adobe Acrobat 9. Read more
about AES 256 encryption
in our knowledge base.
Enhancements and Fixes:
API has changed to allow to get the underlying text from a markup
annotation. See MarkupText.getText(IPDFPage page).
[jPDFProcess, jPDFPrint, jPDFImages]
Reduce memory usage when rendering gradients, and slightly improved performance as well.
[All Libraries] 2816
Better handling of invalid content
streams. Our PDF engine used to throw an "incorrect data check"
exception on the FlateDecode filter when there was a problem with the
compressed data. The engine would stop on this error and not display the
content of the stream. Will now display the data that could be read
before the error. This fix only works in Java 1.6 and above.
[All Libraries] 3715, 2731, 3865
Fix issue when opening protected forms
for which form filling was disabled. This was an issue with PDF
documents signed with Echosign, for example.
[jPDFProcess, jPDFImages] 1623
Removed any dependencies from the com.sun classes
when adding JPEG images to a PDF document. New classes were created to work with JPEG files directly to read meta
data and image data. This was done to resolved issues with sun classes
(JPEGCodec, JPGDecodeParam...) not being shipped with older versions of
the OpenJDK, and third party JVMs such as the GNU JVM.
[jPDFProcess, jPDFPrint, jPDFImages] 3905
Fix "Unrecognized postscript command: le" error
that occurred on some documents. Added support for <= and >=
operators in Qoppa's postscript interpreter. The PDF format allows for
postscript commands tied to color spaces or gradients.
[jPDFProcess, jPDFSecure] 3897
Fix an issue with Adobe Reader enabled documents and
security: such PDFs can not be secured, in order to avoid encryption
[jPDFProcess, jPDFPrint, jPDFImages] 3772 (Linux / Mac)
Fix an issue with opaque text
highlights on Mac OS X + Java 1.6 environment as well as some Ubuntu
distributions (need vmoption: Dsun.java2d.pmoffscreen=false).
[jPDFProcess, jPDFPrint, jPDFImages] 3753
pace missing in specific document due to a font
reading issue and getting an ArrayIndexOutOfBoundsException when trying
to parse glyph shape for space glyph.
[jPDFProcess, jPDFFields] 3765
Check boxes and radio buttons within an interactive forms did not respect the document permissions to disallow filling forms.
[All Libraries] 3747, 3594, 3854
Fixed specific documents / font issues.
March 26 2013. This release
Version number: v2013R1
Java PDF Libraries: jPDFProcess, jPDFAssemble, jPDFFields, jPDFImages, jPDFPrint, jPDFSecure, jPDFText
Time Stamp Server for Digital Signatures - [jPDFProcess, jPDFSecure, jPDFPrint, jPDFImages]
Timestamps for PDF digital signatures are now supported.
- [jPDFProcess, jPDFSecure, jPDFPrint, jPDFImages] Digital
signatures which use a time-stamp server can now be verified by Qoppa's
PDF engine. The Signature validity and messages will include the time-stamp information.
- [jPDFProcess, jPDFSecure] It is possible now possible to add a digital signature with time-stamp coming from a time-stamp server. The
time stamp is encapsulated essentially in another certificate which is
signed with the certificate of the time stamp server company and
contains both the customer's and the server's signatures.
Filling interactive PDF forms has become even easier with
- Form field calculations
to automatically compute the value of given fields from other fields.
- Form field validation
to prevent invalid data entry and ensure that all required fields are
- Form field
formatting to facilitate the capture of special fields such as
dates, social security numbers, postal codes, phone numbers, etc…
Enhancements and Fixes:
[jPDFProcess] 483 Text
highlights now have rounded corners on the left and
right sides. This gives the highlights a crisper, professional look.
[jPDFProcess] 2238 API now allows rotation of rubber stamps. See setRotation in RubberStamp. This method should be called before adding the stamp. The
rotation will only be used to create the appearance stream of the stamp
but is not saved as part with the document. This feature has been available since the previous release but was not announced then.
[jPDFProcess, jPDFFields] 2869 API now allows adding images to interactive button fields (see PushButtonField).
[jPDFProcess, jPDFPrint, jPDFImages] 2576 Fix Ubuntu and Mac + Java 1.7 text
markup issue. Read
more about this small fix.
[jPDProcess, jPDFFields] 2553, 2517 Issue with rotation, form fields and flattening.
[jPDFProcess, jPDFPrint, jPDFImages] 1159, 3479, 3644, 3489 Fixes font issues (CID, Type3, German)
[jPDFProcess, jPDFAssemble] 2817, 3401, 3348 Fixed issues with merging documents.
[jPDFProcess, jPDFPrint, jPDFImages, jPDFSecure] 3104 Libraries have been tested with the latest version of the Bouncy castle libraries (used for encryption).
[jPDFProcess, jPDFAssemble] 2403 Handle bookmarks with contain only 2 items in the destinations: pageref and FitH, no "top" value.
[jPDFProcess] 3618 Fix null pointer exception when importing an FDF file created from PDF
annotated with Adobe XI under specific circumstances (after adding a review
status then deleting an annotation).
[All Libraries] 2728, 2766 Fixes related to specific documents.
[jPDFProcess, jPDFFields] 2288 For barcode fields which type is not supported in Qoppa's PDF engine, a message is shown "barcode type not found". In previous versions, the message would be written in the file when saving the document.
September 10, 2012. This release adds multi-column text
detection and extraction. It also allows rendering and printing of very
large CCITT fax images (200 Mb and up) and PDF documents where unicode mapping is missing.
Library versions: jPDFProcess
v 2.10, jPDFFields v3.10, jPDFImages v4.000, jPDFPrint v4.30, jPDFSecure v3.10, jPDFText v3.10
Multi-Column text detection
- 2658 - [jPDFProcess, jPDFText]
Our text extraction process now
supports multi- column documents (such as research or magazine articles). We think that our new text extraction algorithm is
first-in-class when compared to other PDF tools and we hope you'll enjoy
Handle very large CCITT fax images
- 2991 -
Used to display red "X"s when
rendering pages with big fax images (200Mb+) and the library was running out of
memory.Unicode mapping missing
- 2111 - [jPDFProcess, jPDFText]
Improved text extraction to handle cases where there isn't a
method available for mapping the character codes to Unicode values.
- 3084 - [jPDFProcess, jPDFImages, jPDFPrint]
Improvements on displaying ligature characters such as fl, fi, etc...
Display error rendering page
- 2698 -
[jPDFProcess, jPDFImages, jPDFPrint]
This is a regression bug for an issue introduced in version
4.70. When having an issue rendering a page in a document, we used to
show "Error Rendering Page" and below "Error Reading File". In version
4.70 the pages are blank.Layers merged
- 3018 -
Merge layers when appending documents. When a
document is appended to another document, the layers in the source document were not getting transferred.API Change: remove deprecated method
3031 - [jPDFProcess]
setDocumentInfo() method from PDFDocument
This method has been deprecated for more than 2 years, so it needed to
be removed. To change document info use the DocumentInfo object returned by getDocumentInfo() which is a mutable object.Flatten rotated form fields - 2648 - [jPDFProcess, jPDFFields]
When flattening form fields on rotated forms, they would sometimes end up rotated. Some fax images not displaying
- 2808 -
[jPDFProcess, jPDFImages, jPDFPrint]
Regression issue introduced in version 4.70. Some fax images were not displaying correctly.
Qoppa Software’s fall release of Java PDF libraries and components improves PDF text extraction and rendering performance.
March 13 2012. This release contains many API improvements to make it easier for developers to integrate Qoppa's PDF libraries into their applications and adds the ability to create linearized documents for fast viewing over the web.
Library versions: jPDFProcess v4.70, jPDFAssemble v2.00, jPDFFields v3.00, jPDFImages v3.70, jPDFPrint v4.20, jPDFSecure v3.00, jPDFText v3.00.
Linearize PDF Documents - 2241 - [jPDFProcess]
Use jPDFProcess to linearize your existing PDF documents for fast PDF viewing over the web. New method public void PDFDocument.saveDocumentLinearized.
Watermark Interface - 107, 364 - [jPDFProcess, jPDFPrint and jPDFImages]
New convenience setWatermark method that will set that watermark on documents when they are loaded. Look for setWatermark method and new interface com.qoppa.pdf.IWatermark.
PDF Content on a Specific Layer - 2058 - [jPDFProcess]
Add a parameter to the appendPageContent and prependPageContent methods for a new Layer argument so that the overlaid content will be added to the specified layer (layer is optional and can be null). Original methods were deprecated.
Rotated PDF Rubber Stamps - 2238 - [jPDFProcess]
The PDF format defines a rotation property for rubber stamps. The code will automatically compute the new bounding box rectangle for rotated stamps.
Java SimpleDoc - 129 - [jPDFPrint]
Added new method createSimpleDoc to PDFPrint to create and return a SimpleDoc, with the specified doc attribute set, which can be used in many common printing requests.
License Keys Improvements - 2054 - [All PDF library products]
We've added convenient ways for our customers to request, validate and set license keys on Qoppa's library jar files.
Bookmarks and Deletion / Insertion of Pages - 1847 - [jPDFProcess, jPDFAssemble]
Better handling of bookmarks and got to page actions which should fix any issues with bookmarks retention when inserting and deleting pages.
Document Properties XMP Meta Data - 111 - [All PDF library products]
When creating new documents or updating existing document properties, the library also creates or updates the XMP metadata so both document's properties dictionary and XMP meta data are kept in synch. If missing, the XMP metadata's tree is created. If the tree exists but the specific attributes for the updated properties are missing, the attributes are created.
Annotation Modified Date - 1292 - [jPDFProcess]
The PDF format only has a modified date, there is no creation date for annotations.
Deprecated current set/get CreationDate methods. Added methods to set / get ModifiedDate -The modified date is now updated every time an annotation gets modified through the API or through the GUI.
Bookmark Creation - 1847 - [jPDFAssemble]
Because of internal changes, there were some API changes around the creation of bookmarks. To create a bookmark with a goto page action, call PDFAssemble.createBookmark(Bookmark parent, int pageNum).
Better Error Handling in Forms Widgets - 1350 - [jPDFProcess, jPDFFields]
Handle gracefully any exception when parsing appearance streams for form widgets and annotations.
Text Position - 1990 - [All PDF library products]
Fixed a bug with text positioning for text field with specific margin and border properties.
Scrambled Image - 2140 - [jPDFProcess, jPDFPrint, jPDFImages]
Fixed issue with image decoding for specific images with CCITFaxDecode compression.
Export to FDF - 1872 - [jPDFProcess, jPDFFields]
Fixed a null pointer exception when exporting check boxes with a null value to an FDF file.
XDP Import - 1928 - [ jPDFProcess, jPDFields]
Fix issue with importing an XDP file into an XFA form PDF when multiple fields shared the same name.
Export Annots - 2195 - [jPDFProcess, jPDFields]
Fixed null pointer exception when calling method exportAnnotsAsFDF when using a relative file name as parameter.
Headless Reference- 2299 - [jPDFProcess, jPDFAssemble]
Headless reference exception when trying to split pages due to case issue with entries in PDF dictionary objects.
Font Scaling - 1949 - [jPDFProcess]
When adding a non-standard font with width scaling, char widths were incorrect.
Preflight Font Not Embedded - 2483 - [jPDFProcess]