About IDR Contact
JPedal Storypad Consulting
Documentation FAQ's

3.41b25

Here are details of the current official release.

3.41b25 (21 December 2007)

Summary
  • Fixed issue with some PDFs created by some versions of Open Office
  • Speedups to display code.
  • Text highlighting now uses Font bounding box for better fit.
  • Improvements to text highlighting with new tutorial.
  • Improvements in ability to draw ontop of PDF and updated tutorial.
  • Additional speed improvements in handling large images (substantial in some cases) and added to STD version - see org.jpedal.downsample option. Images optimised for 100% screen display. This is enabled by default but can be disabled.
  • Large black and white images cached and resampled to provide optimum screen quality at all scalings.
  • General bugs fixes - see change log for full details.
Change log
  • 3285: GPL applet crash
    Added message and now defaults to user settings
  • 4086: Applet and STD memory bar not properly displayed
    Fixed
  • 1390: PDF images wrongly displayed in specific file
    Fixed bug in handling PDFs from PDFlib where forms scaling changes
  • 4099: Details of different font names not always easy to find
    Added feature to show details. See http://idrsolutions.fogbugzhosting.com/default.asp?W45
  • 4166: Available font tab in Viewer info not always easy to read
    Now in Alphabetical order and titles in blue
  • 4129: Tiff images may not appear if JAI is not enabled
    If JAI is not enabled then certain tiff files may not be displayed. If the user tries to open a tiff with JAI disabled then they will be informed of that fact.
  • 4152: Deprecated PDFDecoder method setHighlightedAreas
    similar methods setFoundTextArea or setFoundTextAreas already exist
  • 4135: New form tab on information popup
    Added new tab to allow easy access to data
  • 4128: Dragging xxx.JPG onto viewer will not work whereas xxx.jpg does
    Software will now allow for file endings to be either upper or lowercase.
  • 4053: Fix issues redraw issue
    Redraw issue on continuous page views has been fixed so now all pages can be view no matter how they are scrolled.
  • 4081: Cursor x,y not visible in Linux
    Made box 30 pixels wider
  • 4116: Optimise ImageMask in subsampling code
    Large image masks up to 10 times faster and memory usage down
  • 4124: Form objects with multiplevalues not correctly returned
    Fixed
  • 4092: Embedded fonts which are stroked and filled not displayed as bolder
    Fixed

 

Previous releases

Here are details of all the previous official releases since January 2007 covering fixes and new features.

3.40b16 (30 November 2007)

Summary
  • New support site with cross-referencing, searching, rss and updated content
  • JPedal website updated
  • (ENH only) Major enhancement to handling of large black and white images.
  • Forms and Annotations engines merged
  • Enhanced font substitution for non-embedded fonts
  • Names extraction works correctly with recursive values
  • Large number of improvements/fixes to core library
  • Major improvements to examples - new MultiViewer and major overhaul of SimpleViewer
Change log
  • 3587: MultViewer example app
    New Multiviewer application to display multiple PDFs in separate windows
  • 3373: dpi settings other than 72 do not work on thumbnails
    Fixed
  • 3401: YCCK jpegs not matched exactly
    Added mode to allow use of Color profiles for more exact matching.
  • 3765: Merge forms and Annots code together
    Please note api changes
    1. getCurrentFormRenderer() has become getFormRenderer();
    2. Removed getCurrentAnnotRenderer()
    3. New method getFormDataForField(String formName) - uses Form name or object ref
    4.Constructor PdfAnnots changed
  • 3761: Provide facility to draw over PDF
    Added and documented in new tutorial
  • 3568: Improve searching so any word from a search string may be found
    An advanced panel has been added to the search window in the SimpleViewer. It allows the user to either match an exact word or phrase, or to match any of the words searched for.
  • 3670: Tip of the Day
    A Tip of the Day window has been added that will display useful tips on startup. This window may also be accessed via the help menu
  • 3911: SimpleViewer advises new version is available
    The SimpleViewer now advises users on startup if there is a newer version of JPedal available. The settings for this are available through the preferences window.
  • 3885: Clipped Image extractor needs recompile to change image type
    Enhanced to allow image selection and improved colour handling. Jpegs now given white background.
  • 3169: Lab colorspace black not correct in File
    Add code to correct very small negative results which break Java's toRGB(float[]) method.
  • 3684: Greater degree of control needed over font substitution on non-embedded fonts
    Font substitution extended so can map via filename, font internal name, font family name or font Postscript name. Full set of values from PdfDecoder.SUBSTITUTE_ contants.
  • Minor changes to support this in public methods.
  • 2126: Dark shading issue
    Fixed bug in Function code
  • 4026: Names correct in Form breaksXFA
    Names now correctly resolved in XFA
  • 4044: form raw components missing some events cause of focusLost
    Fixed
  • 2494: Some fully qualified form names are not returned correctly
    Fixed
  • 3573: SimpleViewer does not correctly extract 270 degree rotated page thumbnails
    Fixed
  • 3577: Some recursive names not correctly resolved
    Fixed. Please note it returns name using (T) and not (NM) or (TU) to match itext so you can save them out again
  • 3743: PdfDecoder getFormDataForField(String formName) now returns Object or Object[] for multiple values
    See javadocs
  • 3387: Drag and drop PDFs not added to recent docs corrrectly on Linux/Mac
    Fixed
  • 3960: Add Unique field (NM) and TU to form data
    Stored in FormObject and getters to access. Please note JPedal uses the Form Name and not the TU value to match itext so forms can be easily saved
  • 3984: New support site
    New support site with updated and improved documentation
  • 4012: Comboboxes do not print under OS X
    Work around to allow for bug in OS X Java
  • 3782: Color broken on shading/992 and loginserver (was broken anyway)
    Indirect Colorspace not read for shading
  • 3647: Double forms boxes appearing
    Double-click on check boxes no longer needed in forms.
  • 3664: SimpleViewer jumps to wrong bookmarks on file
    Duplicate titles in bookmarks. Fixed as title no longer used as key to find link.
  • 4043: Annotation links not transparent in OS X
    Work around added to deal with fact setOpaque does not work on Mac

3.31b05 (25 October 2007)

Summary
  • Function code complete rewrite to improve performance and fix bugs
  • Number of color issues fixed
  • Annot radio buttons now highlight correctly
  • Dataset in XFAforms now displayed
  • Improved display functionality in Viewer
  • General bug fixes and some speed improvements
Change log
  • 3236: Temp files created when printing not deleted when PdfDecoder.closePdfFile() is called
    Separate ObjectStore created for printing, is now explicitly flushed in the closePdfFile() method
  • 3356: static xfa form with datasets populated not correctly displayed
    DATASET now being parsed, and data populating the fields.
  • 3527: PatternColorspace unsupported in GPL
    SimpleViewer now gives warning message
  • 3550: Add ability to scroll to a highlighted area
    A new method - scrollRectToHighlight - has been added to the PdfDecoder which scrolls the page to a highlighted area.  The method takes a Rectangle - whos co-ordinates are in the PDF co-ordinate space - which depicts a highlighted area on the page.  This method would typically be used after some text has been highlighted - perhaps after searching - and you wish to scroll the document to make the highlight visible.
  • 3431: Add functionality to allow for the searching of multiple terms in a rectangle
    A method findMultipleTermsInRectangle has been added to the PdfGroupingAlgorithms class.  As well as returning a list of co-ordinates for multiple search terms in a rectangle, this method will also order that list of Rectangle in a logically descending order down the page.  The method also takes a listener, so searching can be canceled at any point.
  • 3324: addAdditionalObjects does not support Opacity
    Opacity setting can now be passed in for any object
  • 3185: Incorrect Font rendering by jPedal
    Added better Mappings for non-embedded fonts to Thumbnail extractor and SimpleViewer
  • 2174: radio buttons not working when defined as Annotations and Acroform
    Fixed
  • 3551: Exception thrown after calling drawAdditionalObjectsOverPage on multiple pages
    After calling drawAdditionalObjectsOverPage on one page, then decoding and displaying a second, if drawAdditionalObjectsOverPage is then called on the second page an Exception is thrown.  This bug has now been fixed.
  • 3238: Function handling slow and several bugs
    Totally rewritten and all known issues fixed
  • 3242: Odd chars appearing in non-embedded font
    Stop return and tab chars appearing
  • 3276: EOF not found at end of file
    Improve code to handle 'stuff' appended to real end of file

Changes in 3.30b12 (5 October 2007)

Summary
  • Forms renderer rewritten to improve performance and make it easy to replace with non-Swing implementations (ie using SWT, ULC component sets)
  • Speed improvements in decoding classes
  • Print View option now available to print only displayed part of screen
  • Drag and drop PDFS and images onto SimpleViewer window.
  • General bug fixes
Change log
  • 2641: Encrypted compressed streams not properly opened
    Fixed
  • 2854: Some pages with cropBox not correctly redrawn changing scaling
    Fixed scaling issue
  • 1958: Issue with DCT data in PDF file
    Better handling of non-RGB JPEGs
  • 1991: Color mapping on sample file incorrect
    CMY DeviceN colorspace is now mapped directly rather than using Alt colorspace
  • 2979: Problem with OpenType embedded font
    Added support for FontFile3 containing OpenType font
  • 3023: Files created with Cognos do not open
    Changes made to handle differences so files now open

3.22b14 (30 August 2007)

Summary
  • Significant speed improvements
  • Large number of minor fixes and improvements (see Full list of changes) improving printing, Shading, forms and Font Handling
  • Handle rotated forms objects better
  • Add java bean attribute to jar
  • Add ability to generate thumbnails to set size
  • New preferences options in SimpleViewer
Change log
  • 2410: Image missing on client PDF
    Allow for 1x1 pixel masks in data
  • 2151: Multiple messages for shading in GPL versions
    Message will only appear once
  • 2267: Height as indirect object not handled
    Fixed

Changes in 3.22b09 (25 July 2007)

Summary
  • Support for certificates and view tab in SimpleViewer
  • Faster rendering if JAI present and enabled
  • Use large Windows fonts without memory hit
  • Changes to forms API
  • SimpleViewer allows image selection and keyboard shortcuts to change page
  • Large number of minor fixes and improvements (see Full list of changes) improving Javascript, Shading, forms and Font Handling
  • Netbeans plugin updated
  • Updated documentation
Change log
  • 1925: bug in drawAdditionalObjectsOverPage method not flushing objects
    Ensure passing null in now flushes display for page
  • 1936: strange flourescent pink hues
    Support added to handle RGB values encoded as COLOR_ID_YCbCr in DCTDecode stream
  • 2031: PDF file containing obj ref 775368753 0 R fails to open
    Stop code resizing arrays on read if element not present
  • 2036: Can be tricky to map fonts correctly when not embedded
    Added 2 new tabs to SimpleViewer properties to list values
  • 2114: Some characters not displayed in specific file
    Allow for indirect encoding object
  • 1943: Add additional Paper size to SimpleViewer options
    Additional paper size added called US Letter
  • 1905: Image Extraction
    Images can now be selected from the pdf page in single page mode. Holding select and clicking an image will save the original unscaled, unclipped image in quality mode and the scaled unclipped image in memory mode.
  • 1913: Separation images not displayed correctly in sample file
    Modify CYMK to Separation colorhandling
  • 1993: Refactor Static Font Mappings
    Static Maps moved into new class org.jpedal.fonts.FontMappings.java
  • 1965: Add support for certificates
    JPedal can now read certificates and new panel in SimpleViewer to display
  • 1970: AFKeystroke special value throws exception
    Allow for special value in Javascript handler
  • 1974: Additional objects drawn onto page not correctly updated
    Modified hardware caching to update correctly
  • 1981: JList values not correctly shown on form
    Wrapped JList in ScrollPanes to ensure values displayed
  • 2023: Links not working on some PDFs
    Add support for /S /Goto with Dest value
  • 2027: Shading does not work in printing
    Now appears on printouts
  • 2116: Characters not displayed correctly in embedded font
    Fixed bug in handling embedded CFF CID fonts
  • 2042: Scaling will always center page in printing
    Remains default but can be altered with new PdfDecoder method setCenterOnScaling(false)
  • 2045: Some webservers throw security exception with reusing Cipher
    Added flag to disable caching. Use VM option -Dorg.jpedal.cipher.reinit =true to disable
  • 2062: Access to Signature objects is not available
    New method in AcroRenderer public Iterator getSignatureObjects() - returns null if none found
  • 2068: Fix change page keyboard shortcuts in SimpleViewer
    All old shortcuts now require Ctrl as well to ensure they are unique.

    Ctrl & Home = move to page 1
    Ctrl & End = move to last page
    Ctrl & Left = move back one page
    Ctrl & Right = move forward one page
  • 2078: Incorrect clipping on non-accelerated scaling
    Fixed and scrolling speeded up
  • 2095: Large font files on Windows cause problems
    Added new JPedal setting CACHE_LARGE_FONTS to set size at which files are read from disk
  • 2110: JavaScript Validation issues with masks and algebra
    Seperators and decimals within a number are now being output correctly, average is no longer being divided by NumberCount+1, Product is no longer multipled by 0 at the  begining of calculation.
  • 2111: PDF Forms will not lose focus unless another form is select or page reloaded.
    SwingMouseListener now calls PDFDecoder.grabFocus() which will remove focus from which ever component currently has focus. This is only applied if the mouse is clicked outside of any on page component. PDFDecoder does nothing with focus except holds it until it is requested else where.
  • 1947: Gap between page and border
    Gap between page and border at high scalings have been removed.
  • 1433: Text extraction PDF file with non-existent referenced StructTree
    Allow for incorrect StructTree in Structured content (may not be possible to extract data from such files).
  • 1641: White backgrounds of blended images overwrite each other
    Added code to make white transparent to partly simulate effect
  • 1945: Data missing on xfa form
    Allow for single I settings and use DV if no V value set
  • 2129: Separation colorspace not shown
    Allow for direct object in Separation colorspace

3.21b27 (12 June 2007)

Summary
  • Faster handling of black and white images
  • User can add own code via ImageHandler interface (which has new methods) to optimise image drawing onscreen to suit specific requirements.
  • SimpleViewer example now offers choice of Acrobat 7 or Acrobat 8 style search windows configuarable from View menu
  • SimpleViewer now allows user to click and extract any image on page
  • JPedal to center the PDF if it is larger than the viewport
  • Ensure JAI only used if JAI flag set on JAI enabled programatically
  • decode_pdf.setThumbnailPanel(thumbnails) changed to decode_pdf.addExternalHandler(thumbnails, Options.ThumbnailHandler) and import ref to examples removed from PdfDecoder
  • JPedalSettings.INCLUDE_INVISIBLE_TEXT becomes JPedalSettings.DISPLAY_INVISIBLE_TEXT to make function clearer
  • invisible text now extracted as per Acrobat
  • Improve heuristics for guessing WIN encoded Truetype fonts
Bug fixes
  • Fix AES encrpytion when using /Identity
  • Fix bug with flex font command in CFF fonts
  • Allow for Diffs defined as /68 not /D in Type3 fonts
  • Allow for non-standard Type3 fontMatrix in sizing
  • Allow for notnet in Type3 stream
  • Bugfixes to Javascript code

3.20b15 (4 May 2007)

Summary
  • Support for AES encrypted files
  • Support for dynamic Javascript validation of form elements. User can add own implementation via interface
  • org.jpedal.examples.acroform.ExtractFormDataAsObject to replace org.jpedal.examples.acroform.ExtractFormData showing how to extract form object data
Other Changes
  • Alter SilentPrint example to expect printername if run from command line
  • Use username as tooltip in FDF forms to replicate Acrobat behaviour
  • setPagePrintRange(SetOfIntegerSyntax range) will now throw PdfException if passed null (ie even pages in range 1-1)
  • Enforce maxLength setting on forms
Bug fixes
  • Fixed locking issue in renderer which occasionally resulted in blank display
  • Fix issue with DeviceN indexed images
  • Fix print bug when rotated and landscaped
  • Fix bug with TP in forms code where text not shown
  • Fix auto-sizing of text if rotated

3.10b10 (15 March 2007)

Summary
  • Support for OpenType (.otf) and Font Collections (.ttc) fonts in Font renderer
  • Substitute non-embedded fonts using file name of Postscript name using PdfDecoder method setFontSubstitutionMode(int mode)
  • Allow non-continuous ranges for printing in setPagePrintRange(SetOfIntegerSyntax range)
  • Allow non-continuous to work with odd and even only page modes
  • New TableZoner tool to extract tabular data.
Other Changes
  • Allow user to over text, shapes and images over PDF page.
  • Allow direct access to PDF flags with new PdfDecoder message getPDFflag(Integer i). Possible values are in new class org.jpedal.constants.PDFflags
  • Changed setFoundTextAreas(Rectangle area) to setFoundTextArea(Rectangle area) and added setFoundTextAreas(Rectangle[] area) to PdfDecoder
  • Allow for tab as dictionary deliminator.
  • Better heuristics to handle spaces on some problem files.
Bug fixes
  • Map non-chars over 40 to bullet in WIN encoding
  • Allow for / character in colorArray
  • Correctly handle DeviceN JPEGs.
  • Allow for escaped chars in colorspace string
  • Allow for Dest stored in NAME in Annotation
  • Improve colour mapping using Function.
  • Fix exception in XFA if form does not have parent.
  • Sundry minor bug fixes to code.

3.00b21 (29 January 2007)

Summary
  • New method addFontFile(String currentFont, String fontPath) in PDFDecoder to add Single fonts to mapping
  • Internal changes to support OTF fonts in later release.
Java Font Library examples
  • Added new example org.jfl.examples.TxtViewer which will open text file in Viewer
Changes
  • Removed unnecessary imports in class files
Bug fixes
  • PDFDecoder method setEncryptionPassword() now throws PDFexception if file not opened
  • Fix bug in T1 flex code where subroutine misguessed as Flex.
  • Sundry minor bug fixes to code.

3.00b10 (10 January 2007)

Summary
  • New method in PdfDecoder to add fonts addFontFile(currentFont, fontPath)
  • GraphicsState TR function now supported.
  • JAI now used for faster image recaling if available.
Changes
  • Change of PdfDecoder method setTTFontDirs() to setFontDirs() - old method will now throw exception.
  • JPedal JVM flags altered to be lower case and have org.jpedal prefix.
    Full list is org.jpedal.fontdirs,org.jpedal.memory, org.jpedal.hires, org.jpedal.page, org.jpedal.bookmark, org.jpedal.thumbnail, org.jpedal.jai
Bug fixes
  • Type3 font glyphs now trasparent.
  • Include FontMatrix sheer in rendering text
  • Ensure Color appears on type3 fonts using images

Implementation details

JPedal technical notes on pdf implementation

last updated 23rd November 2007

This document list areas of the PDF specification and covers their implementation status. It refers to the latest Enhanced release for Java 1.4/1.5/1.6. Some features are not available in the Standard version.

Note on PDF specification

The pdf specification was created by adobe and there are currently 7 versions (1.1-1.7). This is a very large specification and leaves a number of undocumented and grey areas. JPedal currently implements about 85% of the Adobe specification. Our ultimate aim is 100%

Some PDF generators interpret the specification in different ways. Most of these should work with JPedal or can be made to work with minor modifications.

Implementation list

The following table gives details on implementation status.

Feature Current status Comments
Colorspaces
DeviceRGB Y  
CalRGB Y  
DeviceGRAY Y  
CalGRAY Y  
ICC Y  
indexed Y  
Lab Y  
DeviceCMYK Y  
DeviceN Y  
Pattern Y  
Shading Y Axial, function, radial shading
XObjects
Images Y  
XForms Y  
Acroforms
Read FDF/XFA Y  
Access FDF/XFA data Y New methods and example in 3.20
Display FDF Y Full AP support. Uses Swing widgetset. User can add own implementation.
Open external FDF Y Open an FDF file with an attached PDF file.
Display static XFA Y  
Dynamic Javascript validation Y In Enhanced version from 3.20
Add Listeners to form objects Y All Acroform objects can have Java Listeners attached.
Other Interactive features
Read Annotations Y  
Standard Annotation display Y  
Standard Annotation features Y URLs links, Stamp supported.
Custom Annotation display option Y Allow user to implement own display and add listeners
Bookmarks Y
Fonts
Subsetted font support Y  
Dynamically subsitute non-embedded fonts Y Use Truetype, OpenType and font collections on machine via Java Font Library
Embedded font support Y Support for Truetype, Type 1, CID fonts with embedded data uses IDRsolutions own internal renderer.
Type0 Y  
Type1 Y  
Type1C Y  
Type3 Y  
TrueType Y  
CID0 Y Not fully defined in pdf spec
CID2 Y Not fully defined in pdf spec
Security
40/128bit RC4 and AES encryption Y AES from version 3.20
Certificates Y Support to read Certificates from 3.22 and code to display in SimpleViewer sample app
Adobe custom security   Not Implemented due to patent restrictions
Filters
CCITT Y  
DCT Y  
JPG 2000 Y  
Flate Y  
LZW Y  
Run Length Decode Y  
Hex Y  
Ascii85 Y  
JBIG   Not supported in Java
Other features
File metadata Y  
1.6 Compressed streams Y  
Layers    
Transparency   
Tagged text   Partial support
Printing (Client and Server)
JPS printable support Y  
JPS pageable support Y  
PCL optimsations Y Custom print modes to improve performance
Custom print dialog Y Custom print Dialog with scaling and rotation options