New in version 2.4.7

July 27th, 2015
  • A "patch level" change indicates a minor feature or bugfix. Methods MAY have been added to the API, but none have been removed. eg. Code written for version 1.0.0 will work on version 1.0.9
  • A "minor level" change indicates a change to the API which may require some code changes. API changes are minor, but are necessary for bug fixes or new features. eg. Code written for version 1.0.3 MAY require changes for 1.1
  • A "major level" indicates big changes to the API or considerable extra functionality. Developers can expect significant changes to bring their code up to date. eg. Code written for version 1.1 is unlikely to work under 2.0

New in version 2.14.1 (December 13th, 2013)

  • Will prompt if a password is required when loading a PDF over HTTP.
  • Adds a cut/paste option for pages, and correctly orders pages cut/pasted this way.
  • Fixes a failure to redraw after reordering pages in some circumstances.

New in version 2.13.2 (May 9th, 2013)

  • A Java 1.5 incompatible change in a previous release was reverted.
  • It is ensured that the action() method is always called in features, which is required by overloaders.
  • An occasional NPE from PagePanel.doLayout when deleting annotations was fixed.
  • The order of activated/loaded/deactived events was fixed.
  • The French translation was improved.

New in version 2.13.1 (April 23rd, 2013)

  • In the viewer, this release allows ViewerWidgets to define javax.swing.Action and share that action between buttons, menus, and (potentially) other objects (this makes for easier code when the Action has complex rules for when it's enabled (e.g., it depends on the DocumentPanel permission); see the ViewerWidget API docs for details), fixes a memory leak when repeatedly opening Documents in a viewer without MultiWindow (added in the previous release), corrects the order of DocumentPanelEvents when closing Documents, and adds a dual-page view (two-up).

New in version 2.12 (October 29th, 2012)

  • Viewer: changing or closing a PDF in a DocumentPanel may now call PDF.close(). This will immediately free resources for the PDF (allowing the file to be deleted on Windows), but if anyone is still holding a link to the PDF object after its DocumentPanel has closed, it will cause problems.
  • Viewer: PagePanel has been completely refactored to better handle interruptions and fix a number of special case rendering errors. Note that this release does not allow the page to be changed once set.
  • Viewer: Windows L&F now has the Cancel button on the right (the Windows way)

New in version 2.11.25 (July 17th, 2012)

  • In Viewer, a SelectArea tool and an associated AreaSelectionAction were added, and TextSelectAction was changed from an abstract class to an interface to match.
  • A CropPage feature was added as an AreaSelectionAction.
  • MultiPageDocumentViewport was rewritten for efficiency, particularly when scrolling rapidly with a mouse wheel. Smooth scrolling was added where possible.
  • The ability to capture handwritten signatures using an iPad, iPhone, or Android device via the new SignatureCapture feature (not on by default) was added

New in version 2.11.23 (May 3rd, 2012)

  • A crash and/or incorrect glyph widths in the resulting document when merging certain types of font with the MergeResources feature was fixed.
  • The memory footprint when profiling or extracting text from documents with large bitmap images was reduced.
  • An issue with the OpenType layout engine that would prevent features from being set on digits was fixed.
  • A minor deviation from spec for the StandardFont class was fixed.

New in version 2.11.19 (October 31st, 2011)

  • Verified API against Java 7 and fixed some Java 1.4 compatibility issues
  • JBIG2 classes from JPedal are now included and have been optimized. There's no longer any need to use "jbig2dec" or include the "jbig2.jar" in your classpath.
  • Speed improvements for text extraction and PDF creation
  • Improvements to XFDF reading and writing - properly handles more unusual annotation types. Also added JavaScript import from FDF - for FDF files containing JavaScript THIS MAY CAUSE JAVASCRIPT TO EXECUTE AT THE POINT OF IMPORT. This is configurable, see the FDF class API docs for more info.
  • Rendering bitmap images with a Blend Mode is now working
  • Added PropertyChangeEvent support to PDFPage and PDF classes
  • Added PageExtractor.getStyledText method, to extract an AttributedString. Styling information is limited to font, size and color.
  • Now any annotation can be flattened (with PDFAnnotation.flatten()), not just form fields
  • Added getPageLabel/setPageLabel to PDF, and integrated labels into the Viewer
  • Viewer Applet: Can set look and feel with "swing.defaultlaf" parameter
  • Viewer: Documents can now be flagged as "dirty", meaning they need to be saved before closing. This optional feature is on by default, but to close dirty documents without a prompt, set the viewer property "unpromptedDirtyClose" to "true".
  • Viewer: Fixes for Nimbus L&F and improved layout for some of the dialogs
  • Viewer: NetworkSave and form submission can be usefully cancelled, and NetworkSave feature has optional "fieldname" parameter, to send PDF to network in the same way as an HTML Form upload
  • Viewer: The viewer property "currentUser" can be used to set the user name for any annotations
  • Viewer: Added ability to set document actions WillSave, DidSave, WillPrint, DidPrint and WillClose (implemented JavaScript methods Doc.setAction and Doc.setPageAction)
  • Viewer: Can right-click to flatten annotations, as well as edit or delete
  • Viewer: text copies to the clipboard will copy as rich-text as well as plain
  • Viewer: Fixed drag selection over multiple pages
  • Viewer: Improvements to AnnotationFactories, to make them look more consistant and adjust their size to their content. AnnotationStampFactory has been rewritten and can better be extended for custom stamps.
  • Viewer: Fixed import of FDF (implemented Doc.importAnFDF and Doc.importAnXFDF)
  • Viewer: better synchronization should remove occasional exceptions when moving/deleting annotations while the thumbnail panel is rendering them

New in version 2.11.17 (June 29th, 2011)

  • Updated bfopdf-cmap.jar - if you see ObjectInputStreamException when working with documents containing Chinese/Japanese/Korean text then make sure you have installed the latest version of this Jar.
  • Fixed a confusion regarding FNC1 characters in barcodes: previously we allowed "\n" to mean FNC1 in Code128 barcodes, but "\n" is actually a valid character so this was broken some time ago. FNC1 is now specified with U+EFC1 character (defined as BarCode.FNC1), and this may be used in DataMatrix codes as well.
  • Fixed threading issue when cloning a PDF containing XMP form using new PDF(PDF)
  • Fixed issue where subsetting CFF font could prevent page containing font from being printed by Acrobat.
  • Fixed SecurityException caused by editing form fields which fire JavaScript events in an environment where a SecurityManager is installed.
  • Added workaround for Sun Bug 7007299 which could cause NullPointerException when multiple threads are rendering unrelated PDFs with unembedded fonts.
  • PDFParser.setFont() will take an OpenTypeFont as well as a Font class, to avoid use of system fonts completely in case workaround (above) doesn't do it
  • Fixed NullPointerException from specific PDF with XFA form
  • More fixes to DataMatrix barcodes. We now have a test-suite just for these...
  • Fixed divide-by-zero in ColorBurn composite
  • Fixed misread of number of pages in certain (invalid) PDF documents.
  • Don't mark a document as Linearized when it's loaded if linearization has been broken.
  • Now PDFParser.getBlackAndWhiteColorModel(0) can be used to auto-determine an appropriate threshold.
  • Added ability to create "cloudy" AnnotationShape objects, via new PDFStyle.setFormStyle(FORMSTYLE_CLOUDY1) and FORMSTYLE_CLOUDY2 constants.
  • Improved reporting of warnings related to XMP formatting errors
  • Fixed exception with rendering when blendmode and softmask were both active
  • Viewer: Added the "NetworkSave" feature, to save a PDF back to an HTTP URL
  • Viewer: fixed buggy creation of new digital identities in KeyStoreManager
  • Viewer: basic support for RTL locales.

New in version 2.11.13 (January 7th, 2011)

  • Redaction now removes all references to images that are completely redacted
  • Add support for vertical chinese/japanese CMaps
  • Fixed StackOverflowError when loading PDF with 250,000+ bookmarks
  • Added "bfo.printasimage" PDF option, to work around bugs in Apple/Java 1.5 and possibly other setups.
  • Fixed mixing of fill, text and border colors in Link annotations
  • Fixed positioning of annotations using beginTextLink
  • Added ability to remove Document Structure tags via an OutputProfile
  • Viewer: Added properties to control size of thumbnail images, width of SidePanel and initial page mode.
  • Viewer: Fixed obscure race condition in thumbnail panel which sometimes resulted in higher CPU usage immediately after load.
  • Viewer: Added swipe and rotate gestures on OS X
  • Updated Producer field to use to bfo.com

New in version 2.11.6 (July 7th, 2009)

  • All BFO warning (and debug, if enabled) messages are now logged using log4j if available, or java.util.logging.* if not.
  • Large synchronization audit fixed some issues when reading from one PDF in multiple threads, particularly when using the viewer.
  • Fixed problem that could result in corruption when repeatedly saving a PDF containing compressed XRef tables and multiple revisions.
  • Modified AnnotationStamp so Acrobat correctly handles custom stamps, and added some new types of standard stamp.
  • Added FDF.getXFDF() method, for exporting XFDF from a PDF, and added support for this to the Viewer. Fixed FDF export, broken some releases ago.
  • More PDF/A related fixes, and added a number of new OutputProfile.Features.
  • Fixed RichText content in text fields
  • Added subsetting for CFF fonts
  • Fixed error with some Windows JDKs when rasterizing JPEG images
  • Fixed unusual cases of Linear & Radial shading, added preliminary support for Coons & Tensor-Product Patch shading (Type 6 & 7).
  • Fixed blending, broken in previous release and resulting in opaque highlight annotations.
  • Correctly handle masked images where the mask and image are different sizes, as created by Luratech products.
  • Added PageExtractor.Image.getUniqueId(), to identify extracted images.
  • Added PageExtractor.Image.getMetaData() and Text.getFontMetaData(), to return any embedded XMP MetaData for those items in the PDF.
  • Fixed long-standing bug in CCITT.G3 2D encoding - now rarely seen in very old TIFF images.
  • Further fixes to handle some types of corrupt PDF
  • Viewer: Page Up/Page Down/Home and End keys navigate correctly through the PDF via the Viewport ActionMap. Standard ScrollBar keybindings are overridden, previous KeyListener approach didn't work reliably and was removed.
  • Viewer: Fixed missing glyphs in some fonts after a search was run.
  • Viewer: PDFTool (the class run by "java -jar bfopdf.jar") has more options.
  • Viewer: Stamps no longer slowly grow when clicked on due to rounding error
  • Viewer: Calling DocumentPanel.redraw(page) will work as expected.
  • Viewer: Don't allow JavaScript to be run on the console if no PDF is loaded
  • Viewer: Fixed page jump when zoom level is changed in Column view
  • Viewer: Dont fail under 1.6 when saving PDFs to filenames containing an invalid regex backreference.
  • Viewer: Improved display under OS X, including addition of a Dock Icon.
  • Viewer: Added keyboard shortcuts to "Open Recent" menu.
  • Viewer: Thumbnail panel now scrolls to follow the current page, and renders more reliably.