ICEpdf™
Version 2.6
Release Notes
April 11th, 2007
Contents
Changes in Version 2.6
Changes in Version 2.5.3
Changes in Version 2.5.2
Changes in Version 2.5.1
Changes in Version 2.5
Changes in Version 2.2
Changes in Version 2.1
New
Features and Improvements in v2.0
Migrating to
ICEpdf version 2.0
Known Issues
Support
Changes in Version 2.6
ICEpdf version 2.6 introduces
the following significant enhancements to ICEpdf:
- Support of interactive link
annotations via the following action types:
- Go to actions
- Go to resource actions
- Go to launch actions
- URI actions
- Annotation Call back allows
for custom handling of supported actions types.
-
ICEbrowsers ICEpdf Pilot has been updated to load Annotation URI actions in
a new ICEbrowser viewport.
-
Improved the detection and handling of JPEG images that use the YCbCrA
color profile.
-
Fixed an issue where some Type 3 glyphs would not be printed.
-
Improved the accuracy of the line break and word spacing algorithm used in
text extraction.
Changes in Version 2.5.3
ICEpdf version 2.5.3 is a
minor maintenance release that corrects the following issues:
-
Fixed a problem where page content may not be displayed when the page is
disposed and then re-initialized in a low memory environment.
-
Sun J2SE 1.6 is now officially supported by ICEpdf.
-
Fixed a rare issue where a self referencing document outline object could
cause ICEpdf to become unresponsive and eventually run out of memory.
-
Addition of a new example which demonstrates how to print a document using
the Java Print Services API. Source code for this example is available in
the package examples/printServices.
Changes in Version 2.5.2
ICEpdf version 2.5.2 is a
minor maintenance release that corrects the following issues:
-
Improved handling and recovery from malformed TrueType font programs.
-
Font substitution of the font ZapfDingbats can be improved by downloading
the Dingbats font from
http://www.ghostscript.com/.
-
Fixed a rounding error related to font widths which caused some text
to be incorrectly positioned.
-
Improved font substitution algorithm to more accurately match the
core 14 PDF fonts.
Changes in Version 2.5.1
ICEpdf version 2.5.1 is a
minor maintenance release that corrects the following issues:
- Corrected a typo in
the name of a text resource property that affected the print dialog
that displays when documents are printed using the ICEpdf Viewer
reference application.
- Improved support for
rendering embedded transparent PNG images in PDF documents.
- Corrected a problem
where a negative horizontal scaling factor would result in a mirror
image of the document being rendered.
- Fixed a bug in the
ICEpdf Viewer reference application that could keep a URL inputStream
open longer than necessary when loading PDF documents via HTTP.
- Corrected a problem
where some XObjects could not locate needed resources for displaying
content, resulting in rendering exceptions or missing content.
Changes in Version 2.5
ICEpdf version 2.5 introduces
the following significant enhancements to ICEpdf:
- Support for static
rendering
of PDF Forms:
- Push Buttons
- Checkboxes
- Radio buttons
- Text Fields
- Support for rendering
the most common annotation types, including:
- Markup & Text
Markup
- Text & Free Text
- Line, Square, Circle,
Polygon, Polyline, etc.
- Support for
user-selectable multi-page view layouts:
- Single page view
(Single Page)
- One column view
(Continuous)
- Two page left/right
view (Facing)
- Two column left/right
view (Continuous - Facing)
-
Numerous parser
optimizations for improved loading times, and overall robustness when
parsing malformed PDF documents.
-
Improved font
substitution for non roman based fonts.
-
Enhanced image loading
and decoding.
-
Text extraction
operations have been optimized resulting in much faster and more
accurate text extraction.
-
Java 2 localization
support for the Viewer and ICEbrowser Pilot Reference Implementations
(RIs).
-
Added MDI user
interface enhancements to the Viewer RI.
- The Servlet Example has
been improved to better support PDF zoom, rotation and page navigation.
Click here
to review the complete change log of changes made between the v2.2 and
v2.5 releases.
Changes in Version 2.2
- Numerous parser
optimizations for improved loading times, and overall robustness for
malformed PDF documents.
- Improved handling of
CCITTFax and JPEG images, resulting in more visually accurate
renderings and faster load times.
- Improved handling of
ICCBased images, resulting in more visually accurate renderings and
faster load times.
- Improved memory
management and parser optimizations have greatly reduced the number of
images that need to be cached to disk.
- Fixed problem with
some grayscale images being displayed garbled.
- Custom font paths can
now be set for the FontManager to read fonts from, fixing an API bug
which prevented the addition of custom paths.
- Fixed problem with
some grayscale images being displayed with color inversion.
- Corrected a rare issue
where some page text may not be displayed on screen or when printing.
- Fixed an issue with
the ICEpdf Servlet RI, where documents with long outlines would force
the Servlet to either timeout or run out of memory.
- In the ICEpdf Viewer
application, when typing in a page number to view, the user can now
press the Escape key to revert back to the current page number.
Changes in Version 2.1
- A critical issue
in the com.icesoft.pdf.views.swing.SinglePageView class that could result in
deadlocking the Swing event thread has been corrected.
- The page
rendering algorithm has been optimized to prevent paint requests for
objects that are outside the current rendering clip region. This
results in improved interactive rendering performance, particularly at
high-magnification levels with complex documents.
- A problem on Mac
platforms that could result in a corrupted page view when scrolling
using the SinglePageView component has been resolved.
- The parser has
been made more robust by better detecting when a document's Xref
data-structures are corrupted. The parser will fall back to linear
parsing of the document in these cases.
- The parser also has
improved support for locating a document's Xref entry in malformed PDF
files.
- When printing,
the
Viewer component and application now select a default paper orientation
that corresponds with the height & width ratio of the page
being printed.
- Pages can
now be rotated by any value between +/- 0 and 360 degrees. Previously,
only 0, 90, 180, and 270 degree rotations were supported.
- Improved support for
images that use 2 bit and 4 bit indexed color models.
- A DeviceN color
space parsing error which caused some images to not be displayed has
now been correct.
- Numerous scoping
changes have been made to the com.icesoft.pdf.ri. classes to better support
sub-classing (changing "private" methods, fields to "protected") and
improve ease of use.
- The com.icesoft.pdf.ri.common.PrintHelper "print" method now supports passing a
null PrinterJob as an argument.
New
Features and
Improvements in v2.0
ICEpdf version 2.0 enables
developers to render PDF documents with dramatically improved accuracy,
performance, efficiency, and control.
Rendering Core
Improvements
The core rendering engine
of ICEpdf 2.0 has been improved significantly over ICEpdf 1.x. The
following list is a summary of the most notable enhancements to the
ICEpdf rendering capabilities.
Embedded
Font Rendering Engine
ICEpdf v2.0 supports all embedded font types that are
specified in the official Adobe Portable Document Format Reference 1.6.
This enables ICEpdf to accurately render virtually all pdf documents
that incorporate embedded fonts, including those created using
non-Latin based languages.
Supported font types
include:
- Type 1 Fonts
(Standard and Multiple Master)
- TrueType
- Font Subsets
- Type 3
- CMaps (predefined and
Embedded)
- Type 0 CID
- Type 2 CID
- Type 0
- Type 1(CFF)
- OpenType (True Type
Outlines)
- OpenType (CFF Type
outlines)
In addition, ICEpdf's support for
font substitution (non-embedded fonts) has been improved by
preconfiguring its native
platform font lookup capability to enable it to find
installed fonts in the most common locations on supported platforms.
Users may also augment the default font location lookup table via a new
API.
Combined, the new font rendering capabilities provided in ICEpdf v2.0
make it the most accurate Java PDF Document renderer available.
Adobe
PDF Reference 1.5 File
Structure Enhancement Support
The Adobe PDF Reference
1.5 introduced enhancements to the PDF document file structure in the
form of Object Streams and Cross-Reference Streams. ICEpdf v2.0 fully
supports these new enhancements making it capable of parsing PDF
documents encoded to both version 1.5 and 1.6 of the Adobe PDF
Reference.
Incremental
File Loading
ICEpdf takes full
advantage of Cross-Reference Tables and Cross-Reference Streams which
allows for incremental file loading. ICEpdf v2.0 can load very large
PDF documents in a fraction of the time required by previous versions
and significantly lowers the amount of memory needed to do so. Time to
first page view is nearly instantaneous in properly encoded documents,
regardless of their size. On average, page rendering times are over 3X
faster than previous ICEpdf releases.
New Document Class
Hierarchy
The document hierarchy has
been extended to include access to the main structures of the PDF
document structure, including the Catalog, PageTree, Page, Outline
Hierarchy and Named Destinations classes. The ICEpdf API closely
follows the specifications set out in the PDF Reference, Fifth Edition
(Adobe® Portable Document Format, version 1.6), Adobe Systems
Incorporated, to represent a PDF document's structure.
The following diagram
shows the PDF Document Hierarchy:
In addition, the Document
API has been refactored to remove any aspects of view-related
functionality. The Document class is no longer responsible for the
controller, view, or view's model (PagesPeer). These changes result in
a clearer division of responsibilities between the Document hierarchy
classes and the GUI-implementation classes.
MVC Viewer User-Interface
The ICEpdf v2.0 API has
been changed to create a clear Model-View-Controller (MVC)
implementation that allows users to rapidly create PDF viewing enabled
applications that meet their unique requirements. The user-interface
features formerly provided by the Document PagesPeer component in
ICEpdf v1.x have been re-implemented as reference implementation (RI)
code. This source code allows ICEpdf v2.0 API users to change almost
all aspects of how their PDF viewer will look and feel with ease.
Improved Viewer
Performance
The responsiveness and
efficiency of ICEpdf when used in an interactive viewer application
has been dramatically improved over previous versions. In particular,
ICEpdf v2.0 puts far less load on the Swing event thread resulting in
greatly improved application GUI responsiveness overall, even while
loading, parsing, and rendering large documents. Advanced buffering and
caching algorithms provide seamless document scrolling, panning,
scaling, rotation, and navigation capabilities.
Improved Platform Support
ICEpdf now supports Mac OS
X.
Migrating to ICEpdf
v2.0
ICEpdf v2.0 introduces
significant changes in several areas, including the core product
Application Programming Interface (API). The impact of these changes to
your application may be significant.
PagesPeer
(Document.getPeer())
The PagesPeer class that
represented the core of the embeddable PDF viewer component in ICEpdf
v1.x has been removed. In its place a new embeddable Viewer JPanel
example implementation has been introduced. To directly port your
ICEpdf v1.x application that is currently using the ICEpdf v1.x
PagesPeer component to use the new SwingViewBuilder class, see Using
the PDF Viewer Component in Chapter 3 of the
ICEpdf v2.0 Developer's Guide.
ICEpdf Viewer Application Reference
Implementation (RI)
The ICEpdf Viewer
Application RI has been refactored to take advantage of the new
com.icesoft.pdf.ri.common.SwingViewBuilder and
com.icesoft.pdf.ri.common.SwingController classes. These classes
provide a
common Model-View-Controller architecture for implementing ICEpdf
Viewer user-interfaces.
If you are using the
ICEpdf v1.x version of the ICEpdf Viewer Application RI without any
customizations you may simply adopt the ICEpdf v2.0 version. However,
if you have customized the ICEpdf Viewer Reference Application, you
will
need to integrate your changes into the ICEpdf v2.0 release. See Using
the PDF
Viewer Application in Chapter 3 of the ICEpdf
v2.0 Developer's Guide.
ICEbrowser PDF Pilot (Plugin)
The ICEpdf Pilot (Plugin) for
ICEbrowser is now distributed in the ICEpdf product. Prior to ICEpdf
v2.0 the pilot was distributed with the ICEbrowser product. See Using
the ICEbrowser PDF
Pilot (Plugin) in Chapter
3 of the ICEpdf v2.0
Developer's Guide.
Known
Issues
The following are known
issues with this release:
- The ICEpdf Developer's
Guide contains incorrect package names for several reference classes.
Specifically, in the "Advanced Topics", "Customizing the
SwingViewBuilder", "Building a Custom Page Views" section on pg. 23 the
source code for all the view layout types and supporting classes can be
found in the package com.icesoft.pdf.ri.common.views, and not in com.icesfot.pdf.views as stated in the guide.
- Depending what version
of the Java Advanced
Imaging (JAI) library you are using, the installer program may assume
you are installing it
on a J2SE JDK installation. If you install the JAI into a J2SE JRE
installation, you may need to move the installed files from the /jre
subdirectory that the installer creates to the jre directory above.
- On Mac OS X, when
running the ICEpdf Viewer Application using the ri_pdf executable
application the cursors may appear garbled. This issue is limited to
the executable application installed by the ICEpdf installer and does
not occur when running the Viewer Application from the ri_pdf.jar
executable jar.
Support
For help with this
release, contact ICEsoft Technical Support at
http://www.icesoft.com/support/reqsupport.html.
For more information on
ICEsoft Technologies, see http://www.icesoft.com.
Legal
Notices
© Copyright 2005, 2006.
ICEsoft
Technologies, Inc.