PDFNet
SDK - What's New?
April 12, 2010 - Version 5.0.1
- New PDFNet Conversion Add-On, enabling the
following functionality:
- Dynamic PDF generation from XAML and WPF reflow-able content.
Developers can now export fixed and flow documents or convert
XAML to PDF/XPS/SVG in a snap.
- The new sample, Xaml2PDFTest,
shows how to convert XAML, FixedDocument’s, FlowDocument's,
and other WPF constructs (e.g. Canvas, RichTextBox, Section,
etc.) into PDF documents with control over headers and footers,
and main body placement.
- Convert any printable document to PDF, XPS, or SVG using
‘pdftron.PDF.Convert’ API. This universal document
conversion API is based on the XPS print path, enabling superior
conversion output on Windows 7 and Vista, compared to any
GDI/PostScript driver. The universal conversion API is very
easy to use and applications using this functionality will
not need to separately distribute, install, or register any
addition files.
- Direct conversion from PDF to XPS: High-quality conversion
that maintains the original document quality and preserves
text, hyperlinks, colors and fonts. Among many possible use-cases
developers could use ‘pdftron.PDF.ToXps()’ to
add XPS support in any application or workflow that supports
PDF, or to efficiently print PDF files by taking advantage
of the new XPS Print API available in Windows 7 (or Vista).
- Direct conversion from XPS to PDF: High-quality conversion
that maintains the original document quality and preserves
text, hyperlinks, colors and fonts. Among many possible use-cases
developers could use ‘pdftron.PDF.FromXps()' to quickly
add a PDF export option in their .NET or WPF applications.
- Direct conversion from EMF to PDF and from PDF to EMF.
- Direct conversion from PDF to SVG.
- The new sample, ConvertTest,
shows how to convert any printable document to PDF or XPS
as well as illustrates direct conversion between PDF and XPS.
- New Features and Improvements to PDFNet Core API:
- New Print API based on XPS print path (as a starting point
please take a look at the updated PDFPrint sample project).
- TextSearch utility class for quick text searches through
a document using a regular expression or a litteral string.
For a sample use case please take a look at TextSearch
sample project.
- Direct support for overprinting in the CMYK rasterizer.
Overprint is simulated in RGB rasterizer and PDF viewer.
- Direct support for TTC (True-Type Collections) during font
creation and embedding.
- Support for cross-platform color management using LittleCMS.
On Windows, developers can choose between built-in color management,
ICM2, or LittleCMS.
- Windows developers can use standard GDI or GDI+ API-s to
write on PDFDC (PDF Device Context) and to generate PDF documents
based on their existing drawing functions. PDFDC and PDFDCEX
provide a GDI Device Context handle which can be passed to
all GDI functions the require an HDC. PDFDC does not use a
"Virtual Printer" approach so there is no need to
install any printer driver and the translation should be of
both high quality and speed. Developers wishing to implement
‘print-to’ PDF in their existing applications
without need for a separate virtual printer driver can use
PDFDCEX, which add support for multi-page PDF output. A sample
use of PDFDC and PDFDCEX can be found in the PDFDC sample
project.
- ElementWriter now allows developers to directly replace
content of an existing page, further simplifying the PDF editing
process. For a concrete example, please refer to the ElementEdit
sample project.
- PDFDraw.Export() can now convert PDF to high quality palletized
TIFF or PNG output (tif8 or png8) and accepts a new hint parameter
“Dither” for monochrome or indexed image output.
- PDFViewCtrl is greatly extended and improved. The PDF viewing
control comes with a set of built-in tools allowing developers
to navigate, markup, annotate, and fill-in PDF forms out-of-the
box. With the new version, it is also very simple to customize
existing tools by overriding certain events or to implement
custom tools from scratch. The viewer also comes with built-in
thumbnail, bookmark, and layer panels which can be easily
customized or replaced with custom versions.
- Developers can choose between memory consumption and disk
caching during PDF creation or editing. To prevent creation
of any temporary files use PDFNet.SetDefaultDiskCachingEnabled(false).
- Support for XFDF import and export in ‘pdftron.FDF.FDFDoc’.
- Option to embed standard (base 14) PDF fonts.
- Improved rendering for Coons and Tensor product shading.
- Numerous improvements related to support of corrupt or
invalid PDF files.
- The new sample, Pdf2Html,
shows how to convert PDF to HTML. The sample shows a bit more
involved API usage where 'pdftron.PDF.PDFDraw' is used to
render the background image and 'pdftron.PDF.TextExtractor'
is used to generate HTML text layer.
- Improved PDFNet PDF/A Validation and Conversion Add-on.
New Types and Methods in PDFNet Core API:
- Action.CreateSubmitForm()
- Action.CreateLaunch()
- Action.CreateHideField()
- Action.CreateImportData()
- Action.CreateResetForm()
- Action.CreateJavaScript()
- Action.Execute()
- Action.GetNext()
- Action.GetFormActionFlag()
- Action.SetFormActionFlag()
- ColorSpace.CreateICC()
- Date.SetCurrentTime()
- FDFDoc.CreateFromXFDF()
- FDFDoc.SaveAsXFDF()
- FileSpec.SetDesc()
- Element.GetSoftMaskTransform()
- ElementBuilder.Ellipse()
- Page.GetBoundingBox()
- class PDFDC
- class PDFDCEX
- PDFDoc.GetFileName()
- PDFNet.SetColorManagement()
- PDFNet.SetDefaultDiskCachingEnabled()
- enum PDFViewCtrl.PagePresentationMode. e_facing_cover
- enum PDFViewCtrl.PagePresentationMode. e_facing_continuous_cover
- PDFViewCtrl.ShowNavPanel ()
- PDFViewCtrl.ShowToolbar ()
- PDFViewCtrl.ShowNavToolbar ()
- PDFViewCtrl.ShowMenuBar ()
- PDFViewCtrl.ShowStatusBar()
- PDFViewCtrl.EnableScrollbar ()
- PDFViewCtrl.GetSplitPosition
- PDFViewCtrl.SetSplitPosition()
- PDFViewCtrl.SetPageSpacing()
- PDFViewCtrl.SetFocus()
- PDFViewCtrl.CloseDoc()
- PDFViewCtrl.SetActionHandler()
- PDFViewCtrl.SetCustomEventHandlers()
- PDFViewCtrl.HasCapture()
- PDFViewCtrl.ExecuteAction()
- PDFViewCtrl.OnAction()
- PDFViewCtrl.GetDefaultAnnotation()
- PDFViewCtrl.LoadCurrentConfiguration()
- PDFViewCtrl.SaveCurrentConfiguration()
- PDFViewCtrl.EnableLinkActivation()
- PDFViewCtrl.DocProperties()
- PDFViewCtrl.DeletePages()
- PDFViewCtrl.InsertPages()
- PDFViewCtrl.InsertBlankPages()
- PDFViewCtrl.ReplacePages()
- PDFViewCtrl.RotatePages()
- PDFViewCtrl.ExtractPages()
- PDFViewCtrl.CropPages()
- class TextSearch
- class Highlights
- SDFDoc.EnableDiskCaching()
- SDFDoc.GetFileName()
- SDF.Obj.SetStreamData()
New Types and Methods in PDFNet Convert Add-On:
- Convert.FromXps()
- Convert.FromEmf()
- Convert.ToEmf()
- Convert.ToSvg()
- Convert.ToXps()
- Convert. ToPdf(filename)
- Convert.RequiresPrinter()
- Convert.Printer.Install()
- Convert. Printer.Uninstall()
- Convert. Printer.GetPrinterName()
- Convert. Printer.IsInstalled()
Deprecated:
- PDFViewCtrl.GetSelection.GetRects() has been replaced by GetQuads().
March 27, 2009 - Version 4.5.0
- PDFNet includes a new PDF viewing control (pdftron.PDF.PDFViewCtrl)
that significantly simplifies application development with built-in
support for interactive form filling, markup, annotation editing,
and custom tool development. PDFViewSimple sample is updated to
illustrate the use on the new control, however ‘pdftron.PDF.PDFView’
is still available for backwards compatibility (and in case of
C/C++, for low-level control development).
- Support for native rendering of PDF pages in CMYK and DeviceN
color spaces. This feature is essential for graphics workflows
that require accurate color reproduction in CMYK. A new sample
project (PDFDrawCMYK) is included for developers wishing to learn
more about CMYK rasterizer or how to convert PDF pages to CMYK
TIFF.
- PDF/A (ISO 19005-1) validation. The new 'pdftron.PDF.PDFA.PDFACompliance'
class offers a fast and easy way to validate any PDF file for
the PDF/A compliance and to obtain a detailed report of compliance
violations and relevant PDF objects.
- PDF/A (ISO 19005-1) conversion. Using 'pdftron.PDF.PDFA.PDFACompliance'
class developers can also convert existing PDF files to PDF/A
compliant documents with fine grained control. The SDK also includes
a new sample project (PDFATest) that illustrates how to use 'PDFACompliance'
class.
- All PDFNet viewers and rasterizers are now PDF/A (ISO 19005-1)
compliant and can take into account OutputIntents ICC profile
when rendering PDF in color management mode.
- New high-level utility classes to work with any annotation type
(pdftron.PDF.Annots).
- PDFNet no longer depends on the external file (pdfnet.res).
As a result, calling PDFNet.SetResourcePath() is no longer required
for correct PDF processing.
- Support for Adobe Highlight Format. Developers can apply highlights
to existing documents and integrate PDFNet with third party search
engines.
- Support for Default Color Spaces in PDF.
- When color management is enabled (PDFNet.SetColorManagement(true))
default ICC profiles are automatically loaded.
- Improved rendering performance and quality.
- Improved support for ISO PDF.
- Enhanced JBIG2 compression. JBIG2 encoder now supports couple
of new options: 'Threshold' and 'SharePages'.
- Support for JPEG2000 compression using [/JP2] or [/JPEG2000]
image encoder hints.
- Starting with this release C/C++ developers can now integrate
PDF viewing, interactive form, and markup, with the same ease
of use that was available to .NET or JAVA developers. This is
illustrated in couple of new sample projects: PDFViewSimple (showing
integration with Win32) and PDFViewWX (showing integration with
wxWidgets cross platform framework).
New Types and Methods:
- class pdftron.PDF.PDFViewCtrl
- class pdftron.PDF.PDFA.PDFACompliance
- namespace pdftron.PDF.Annots (Line, Circle,
Widget, Highlight, etc.)
- enum PDFDraw.PixelFormat.e_cmyk
- Annot.Flatten()
- Date.SetCurrentTime()
- ElementBuilder.ArcTo()
- ElementBuilder.CreateEllipse()
- Field.SetValue(bool) [for radio and check buttons ]
- Field.GetValueAsBool()
- Field.SetMaxLen()
- Field.GetMaxLen()
- PDF.PDFDoc.IsTagged()
- PDF.PDFDoc.AddHighlights()
- PDFDraw.SetPrintMode()
- PDFDraw.SetPageTransparent()
- PDFRasterizer.SetPrintMode()
- PDFView.GetRotation()
- PDFView.Update(Rect)
- PDFView.Update(Annot, page_num)
- PDFNet.SetNumberWriteProc() [C/C++]
- PDFNet.SetNumberReadProc() [C/C++]
- Rect.Inflate()
- UString.ConvertToUtf8() [C/C++]
Other Changes:
- Element.GetImageColorSpace() and Image.GetImageColorSpace()
now return directly ColorSpace instead of 'SDF.Obj'. Similarly
Element.GetShading() returns Shading.
GState.GetFillPattern() and GState.GetStrokePattern() directly
return PatternColor instead of 'SDF.Obj'.
- Low-level PDFRasterizer takes anoter argument 'num_comps' used
to specify the number of color channels in the output image.
- Field.SetChecked() -> Field.SetValue(bool)
- Field.IsChecked() -> Field.GetValueAsBool()
Deprecated:
April 11, 2008 – Version 4.0.3
- PDF Layers Support: A new high-level API for manipulating and
handling PDF documents with layers. PDF Layers, or Optional Content
Groups (OCGs) as they are more formally known as, refer to sections
of content in a PDF document that can be selectively viewed or
hidden by document authors or consumers. This capability is useful
in different application domains such as CAD drawings, layered
artwork, maps, multi-language documents, etc.
- The PDFLayers
sample is extended to illustrate how to use the PDFDraw class
in PDFNet to selectively render and export PDF layers. Similarly,
the PDFView
sample application is extended with a layer tab and the capability
to interactively toggle OCGs on and off.
- Other minor improvements and bug fixes.
New Types and Methods:
- class pdftron.PDF.OCG.Context
- class pdftron.PDF.OCG.Config
- class pdftron.PDF.OCG.Group
- class pdftron.PDF.OCG.OCMD
- PDF.PDFDoc.HasOC()
- PDF.PDFDoc.GetOCGs()
- PDF.PDFDoc.GetOCGConfig()
- PDF.PDFDraw.SetOCGContext()
- PDF.PDFRasterizer.SetOCGContext()
- PDF.PDFView.SetOCGContext()
- PDF.PDFView.GetOCGContext()
- PDF.Element.IsOCVisible()
- PDF.ElementReader.Begin(OCG.Context);
February 7, 2008 – Version 4.0
- PDFNet SDK in now available for Java. The Java API
is exactly the same as the API for .NET or C/C++ API.
PDFNet for Java is available as part of the same package distribution
as PDFNet SDK for C++ and is available on all supported platforms
(i.e.Windows, Linux, Mac, Solaris, and mobile platforms).
- Complete PDF transparency support. The built-in rasterizer
in PDFNet SDK now features full support for PDF transparency,
including support for transparency groups and all blend modes.
- Automatic removal of some of the anti-aliasing artifacts such
as thin-lines and gaps between adjacent image elements. Although
it is impossible to completely remove all anti-aliasing artifacts
in PDF graphics, PDFNet SDK will reduce the appearance of commonly
occurring artifacts. Also, the users can manually control the
rendering quality using PDFDraw.SetGamma() and PDFView.SetGamma().
- Fast and high-quality text extraction. Using PDFNet SDK users
can extract text from PDF pages in Unicode or XML. For more information,
please refer to the TextTextract
sample project as well as to the documentation
for pdftron.PDF.TextExtractor.
- High-level logical structure API which can be used to extract
the logical structure from ‘tagged’ PDF documents.
The API resides in a new namespace – pdftron.PDF.Struct.
To test drive this functionality, please take a look at the LogicalStructure
sample
project.
- Built-in tools for text selection/highlighting as well as for
text search in the PDFView class . Also, all PDFView sample
projects (for C#, Java, VB.NET) are extended with code showing
how to use new text selection modes, text search, image export,
etc.
- The SDF/Cos
API is refactored to simplify coding and thus reduce errors
during development. The updated API is the same in all programming
languages, which also simplifies porting code from one language
to another. Finally, the new SDF/Cos architecture allows PDFNet
SDK to deliver further performance improvements in upcoming PDFNet
v.4.x releases. For more information on how to upgrade to the
new API, please see the migration
guide for PDFNet v.4.
- PDFNet SDK for C/C++ is now available as compiler-independent
shared library on all supported platforms (i.e. Windows, Linux,
Mac, Solaris, and mobile platforms). For native code developers
this removes the possiblity of collisions arising between incompatible
C++ compilers and libraries.
- Automatic error recovery for PDF documents with minor corruptions
(such as broken cross reference tables, etc).
- The object size of the core DLL(s) is decreased, despite introduction
of many new features.
- New utility methods in the ElementBuilder class are introduced
to simplify drawing of ellipses, circles, and arcs.
- PDF Split and Merge operations (i.e. PDFDoc.ImportPages()) can
now optionally copy associated bookmarks and preserve document
internal and external links.
- Automatic stroke adjustment for thin lines. Improved rendering
speed for certain graphical elements.
- Users that require tight control of the location where temporary
files are created can now use PDFNet.SetTempPath() to specify
the location of the temporary folder.
- New sample project PDFViewSimple
(for C# and VB.Net only): a stripped-down version of the full
PDFView sample, which can be useful to developers learning how
to integrate a basic PDF viewer within their applications.
- The PDFView
sample is extended with the option to open TIFF, GIF, PNG, BMP
and other image formats besides PDF. There is also an option to
export PDF pages as raster images, code to execute document links,
etc.
- There a number of new methods controlling the way pages are
viewed using PDFNet SDK. For example, a user can selectively enable
or disable progressive rendering in the PDF viewer using PDFView.SetProgressiveRendering().
There are also new methods controlling horizontal and vertical
alignment of pages within the control, and functions to set the
default background and paper color.
- A new option in the PDF rasterizer to export dithered monochrome
TIFF or PNG output. To export 1 BPC, dithered TIFF (CCITT Fax
G4) output, specify extra ‘BPC’ or ‘Gray’
hint parameter. For some concrete sample code, please refer to
the PDFDraw sample
project.
New Types and Methods:
- class pdftron.SDF.ObjSet
- class pdftron.Struct.STree
- class pdftron.Struct.SElement
- class pdftron.Struct.RoleMap
- class pdftron.Struct.ContentItem
- class pdftron.Struct.ClassMap
- class pdftron.Struct.AttrObj
- class pdftron.PDF.TextExtract
- class pdftron.PDF.TextExtract.Word
- class pdftron.PDF.TextExtract.Line
- class pdftron.PDF.TextExtract.Style
- class pdftron.PDF.PDFView.Selection
- PDFNet.Initialize(key)
- PDFNet.SetTempPath()
- PDF.PDFDoc.FieldCreate(String name, Type, String value)
- PDF.FDFDoc.FieldCreate(String name, Type, String value)
- PDF.FDFDoc.GetFieldIterator()
- PDF.FDFDoc.GetField()
- PDF.PDFDoc.GetPageIterator()
- PDF.PDFDoc.GetPage(num)
- PDF.PDFDoc.GetFieldIterator()
- PDF.PDFDoc.GetField(name)
- PDF.PDFDoc.RemoveSecurity()
- PDF.Element.GetParentStructElement()
- PDF.Element.GetStructMCID()
- PDF.ElementBuilder.CreateEllipse()
- PDF.ElementBuilder.ArcTo()
- PDF.Page.Scale()
- PDF.Destination.IsValid()
- PDF.Rect.Contains(x, y)
- PDF.Field.SetValue(String)
- PDF.Field.GetValueAsString()
- PDF.Field.GetDefaultValueAsString()
- PDF.PDFDraw.SetCaching()
- PDF.PDFView.GetSelection()
- PDF.PDFView.SelectByRect()
- PDF.PDFView.SelectByStruct()
- PDF.PDFView.SelectAll()
- PDF.PDFView.FindText()
- PDF.PDFView.IsFinished()
- PDF.PDFView.HasSelection()
- PDF.PDFView.ClearSelection()
- PDF.PDFView.SetProgressiveRendering()
- PDF.PDFView.SetPageBorderVisibility();
- PDF.PDFView.SetDefaultPageColor();
- PDF.PDFView.SetBackgroundColor();
- PDF.PDFView.OnBackColorChanged ()
- PDF.PDFView.OnForeColorChanged ()
- PDF.PDFView.SetHorizontalAlign();
- PDF.PDFView.SetVerticalAlign();
- PDF.DictIterator.HasNext()
- PDF.PageIterator.HasNext()
- PDF.FieldIterator.HasNext()
- PDF.FDFFieldIterator.HasNext()
- PDF.GSChangesIterator.HasNext()
- PDF.CharIterator.HasNext()
- PDF.FontCharCodeIterator.Next()
- PDF.FontCharCodeIterator.HasNext()
- PDF.FontCharCodeIterator.Current()
- PDF.Font.GetCharCodeIterator()
- SDF.SDFDoc.RemoveSecurity()
- SDF.NameTreeIterator.GetIterator()
- SDF.NameTreeIterator.GetValue()
- SDF.NumberTreeIterator.GetIterator()
- SDF.NumberTreeIterator.GetValue()
- Dictionary Specific Methods --------
- SDF.Obj.FindObj()
- SDF.Obj.PutName (key, name)
- SDF.Obj.PutArray (key)
- SDF.Obj.PutBool (key, value)
- SDF.Obj.PutDict (key)
- SDF.Obj.PutNumber (key, value)
- SDF.Obj.PutString (key, value)
- SDF.Obj.PutString (key, buf)
- SDF.Obj.PutText(key, value)
- SDF.Obj.PutNull (key)
- SDF.Obj.Put(key, obj)
- SDF.Obj.PutRect (key, x1, y1, x2, y2)
- SDF.Obj.PutMatrix(key, mtx)
- SDF.Obj.Erase(key)
- SDF.Obj.Rename(old_key, new_key)
- Array Specific Methods ---------
- SDF.Obj.GetAt(index)
- SDF.Obj.InsertName (pos, name)
- SDF.Obj.InsertArray (pos)
- SDF.Obj.InsertBool (pos, value)
- SDF.Obj.InsertDict (pos)
- SDF.Obj.InsertNumber (pos, value)
- SDF.Obj.InsertString (pos, value)
- SDF.Obj.InsertString (pos, buf)
- SDF.Obj.InsertText(pos, value)
- SDF.Obj.InsertNull(pos)
- SDF.Obj.InsertRect (pos, x1, y1, x2, y2)
- SDF.Obj.InsertMatrix(pos, mtx)
- SDF.Obj.Insert(pos, obj)
- SDF.Obj.PushBackName (name)
- SDF.Obj.PushBackArray ()
- SDF.Obj.PushBackBool (value)
- SDF.Obj.PushBackDict ()
- SDF.Obj.PushBackNumber (value)
- SDF.Obj.PushBackString (value)
- SDF.Obj.PushBackString (buf)
- SDF.Obj.PushBackText (value)
- SDF.Obj.PushBackNull ()
- SDF.Obj.PushBack(obj)
- SDF.Obj.PushBackRect (x1, y1, x2, y2);
- SDF.Obj.PushBackMatrix(mtx)
- UString.ToLower()
- UString.ToUpper()
Other Changes:
- (.NET Specific) PDFNet11.DLL is renamed to PDFNet.DLL
- (.NET Specific) Element.GetTextString() returns String instead
of Char[].
- class SDF::Doc() -> class
SDF::SDFDoc()
- SDF/Doc.h -> SDF/SDFDoc.h
- PDFDoc.GetPagesCount() -> PDFDoc.GetPageCount()
- Obj.IsStr() -> Obj.IsString()
- Obj.SetStr() -> Obj.SetString()
- GState.GetOpacityFill -> GetFillOpacity
- GState.GetOpacityStroke -> GetStrokeOpacity
- Obj.DictBegin() -> Obj.GetDictIterator()
- FDFDoc.FieldBegin() -> FDFDoc.GetFieldIterator()
Deprecated:
- PDF.PDFDoc.FindPage(), use PDFDoc.GetPage() instead.
- PDF.PDFDoc.FindField(), use PDFDoc.GetField() instead.
- PDF.Rect.CreateSDFRect() use obj.PutRect()/obj.InsertRect()
instead.
- PDF.Date.CreateSDFDate
- class SDF.ObjVisitor, SDF.AtomVisitor, SDF.ContainerVisitor
- SDF.NameTree.Find(), use NameTree.GetValue() instead.
- SDF.NumberTree.Find(), use NumberTree.GetValue() instead.
- SDFDoc.FixBrokenDoc(), PDFNet now automatically attempts to
repair broken PDF documents so this method is removed from the
public interface.
- SDF.DictIterator.Prev()
- SDF.DictIterator.Advance()
- SDF.Obj.DictEnd(), use DictIterator.HasNext() instead.
- SDF.Obj.Accept()
- SDF.Obj.CreateName()
- SDF.Obj.CreateArray()
- SDF.Obj.CreateBool()
- SDF.Obj.CreateDict()
- SDF.Obj.CreateNull()
- SDF.Obj.CreateNumber()
- SDF.Obj.CreateString()
- SDF.Obj.Clone()
- SDF.Obj.Rename(DictIterator, String)
- SDF.Obj.Replace(DictIterator, Obj)
- SDF.PDFDoc.FixBrokenDoc()
- SDF.SDFDoc::AddObj()
- FDF.FDFDoc.FieldEnd(), use FDFFieldIterator.HasNext() instead.
- FDF.PDFDoc.FieldEnd(), use FieldIterator.HasNext() instead.
- FDF.FDFDoc.PageEnd(), use PageIterator.HasNext() instead.
February 20, 2007 – Version 3.6
- Improved JBIG2 handling. JBIG2 decoder can now process any valid
JBIG2 stream (previously the JBIG2 decoder could only process
streams compressed using PDFNet).
- Improved font substitution (especially for CJKV fonts). There
are also new methods that allow the user to override the default
PDFNet font substitution algorithm. Using PDFNet.AddFontSubst()
it is possible to override font substitution for individual font
names as well as for various character collections. Check out
the PDFDraw sample project for an example of how to use PDFNet.AddFontSubst().
- ICC support for device color spaces. Although ICC support was
available in PDFNet for a while, the only way to control color
conversion of device color spaces was by embedding ICC profiles
in the PDF document and overriding default color spaces. Starting
with PDFNet 3.6, it is possible to adjust color conversion without
having to modify source documents. The relevant methods in the
'PDFNet' class are SetColorManagement() , SetDefaultDeviceRGBProfile()
, and SetDefaultDeviceCMYKProfile(). The PDFDraw sample project
also shows how to use these functions.
- Significant reduction in memory requirements related to processing
of monochrome images.
- New Page Labels API and sample project. Page labels allow for
non-sequential page numbering or the addition of arbitrary labels
for a page (such as the inclusion of Roman numerals at the beginning
of a book).
- Cross-platform support for Unicode file-systems.
- Cross-platform support for Unicode strings and new utility methods
for handling 'PDF Text Strings' as Unicode strings.
- Improved conversion of text to Unicode.
- Unlimited number of colorants/tint components for DeviceN color
spaces.
- PDFDraw.Export can now also export images in indexed color
space resulting in a smaller file size, possibly at the expense
of some image quality. To export the rasterized image using 8-bit,
palettized PNG format, use "PNG8" to identify the export
filter (e.g. pdfdraw.Export(page, "out.png", "PNG8").
- Correct rendering of highlight annotations.
- A new option in ElementWriter to simplify switching off compression
of page streams. The ElementWriter.Begin() method has couple of
additional options:
- background: An optional flag indicating whether new
content should be added as a foreground or background layer
to the existing page. If background is 'true', the graphics
will be added in a background layer. By default, the new content
will appear on top of the existing graphics.
- compress: An optional flag indicating whether the
page content stream should be compressed. This may be useful
for debugging content streams. Also, some applications need
to do a clear text search on strings in PDF files. By default,
all content streams are compressed.
- A new type of event in PDFClass that is raised every time the
current page number changes (e.g. during page scrolling). This
feature makes it easier to update GUI elements representing the
current page within the document. The delegate (PDFViewCurrentPage
delegate) that handles this event can be registered using PDFView::SetCurrentPageProc().
- Extended C# PDFView sample project illustrating how to create
additional interactive PDF tools such as rectangular zoom, link
creation and navigation tool, markup annotation, etc.
- Various bug fixes.
New Types and Methods:
- PDFNet.SetColorManagement()
- PDFNet.SetDefaultDeviceCMYKProfile()
- PDFNet.SetDefaultDeviceRGBProfile()
- PDFNet.AddFontSubst()
- class UString
- Obj.FindObj()
- Obj.GetAsPDFText()
- class PDF.PageLabels
- PDFDoc.SetPageLabel()
- PDFDoc.RemovePageLabel()
- PDFDoc.GetPageLabel()
- Page.IsValid()
- PDFRasterizer.Dispose()
- PDFView.SetCurrentPageProc(PDFViewCurrentPageDelegate, ...);
- PDFDraw.Dispose()
- ColorPt.SetColorantNum()
- ColorPt.Set(c, idx)
- ColorPt.Get(idx)
Other Changes:
- Obj.GetStr() is deprecated. Use Obj.GetAsPDFText() instead.
- ColorSpace::MaxColornats is deprecated.
- Function::maxcardinality is deprecated.
- SDF::Erase() returns void.
August 11, 2006 - Version 3.5
- PDFView control now features support for fast and smooth scrolling
resulting in faster screen display and better user experience.
- Overall rendering performance and quality has been improved.
- Extended PDFView sample illustrating how to implement custom
controls and custom drawing on top of PDFView. The extended sample
project implements drawing of custom annotations which can be
merged with PDF pages. A similar approach can be used to implement
other customizations to the PDF viewing control (such as movie
annotations, form field editing, interactive U3D viewing etc).
- Embedding support for CFF OpenType fonts (a new feature in
PDF 1.6).
- Matched Acrobat's behavior for TrueType fonts with broken or
missing tables.
- Improved support for Mac fonts.
- Improved font substitution. As a result, documents with missing
fonts will render more accurately.
- Support for radial shadings. PDFNet SDK rasterizer can now
render perfectly smooth gradients and covers all possible variants
in the radial shading.
- Support for Free-Form Gouraud-shaded triangle mesh shadings
(type 4) and Lattice Gouraud Shadings (type 5). PDFNet rasterizer
can now render perfectly smooth and stitched Gouraud meshes.
- Cross-platform utility methods to extract embedded images to
PNG, TIFF, and JPEG (see PDF.Image.Export(),PDF.Image.ExportAsTiff(),
and PDF.Image.ExportAsPng())).
- Improvements related to compatibility with the PDF-A standard.
- New Feature/Bug Fix: RefreshAppearance is extended to support
justification for multi-lined text fields.
- Bug Fix (.NET): Better garbage collection of Filter objects.
New Types and Methods:
- PDFView.GetDeviceTransform()
- Image.Export()
- Image.ExportAsTiff()
- Image.ExportAsPng()
- Shading.GetGouraudMesh()
- class Shading.GouraudMesh
- Shading.GetGouraudMesh
Name Changes:
- ColorSpace.ColorSpaceType -> ColorSpace.Type
- Font.FontType -> Font.Type
- Shading.ShadingType -> Shading.Type
- PatternColor.PatternColorType -> PatternColor.Type
- Function.FunctionType -> Function.Type
- Element.ElementType ->Element.Type
June
1, 2006 - Version 3.2
- PDFNet SDK now includes two separate rasterizer implementations
utilizing different graphics libraries. The default rasterizer
is 'e_BuiltIn' which is a high-quality, anti-aliased and platform-independent
rasterizer. This rasterizer is available on all supported platforms.
On Windows platforms, PDFNet SDK also includes a GDI+ based
rasterizer which is included mainly to provide vector output
for printing, for EMF/WMF export, etc. To switch between different
rasterizer implementations use SetRasterizerType() method on
the PDFDraw, PDFView, or PDFRasterizer objects.
- More efficient mechanism for screen updating in the PDFView
class.
- New print support functions in the PDFView sample and extra
options to dynamically switch between different rasterizer implementations.
- Support for RAW JPEG2000 code-streams.
- Unlimited zoom option in the PDFRasterizer class.
- Automatic font subsetting. The subsetting process is completely
transparent and is enabled by default.
- New utility methods for creating PDF fonts from Windows fonts.
For example:
System.Drawing.Font sys_font
= new
System.Drawing.Font("Comic Sans MS", 12);
Font sys_font = Font.CreateTrueTypeFont(doc, sys_font, true,
true);
- Improved Unicode support and resilience to various character
mapping errors and CMap issues due to buggy output from third-party
PDF creators.
- New utility methods to extract PDF images and to convert them
to GDI+ Bitmaps. For examples of how to use the new methods,
please take a look at the new 'ImageExtract' sample project.
- New utility methods for creating Form XObject elements from
input PDF pages. These methods are especially useful in applications
performing page imposition. For examples of how to use the new
methods, please take a look at the updated 'Imposition' sample
project.
- A new utility class to manipulate a document's viewing preferences.
New Types and Methods:
- PDFRasterizer.SetRasterizerType()
- PDFRasterizer.GetRasterizerType()
- PDFRasterizer.SetAntiAliasing()
- PDFRasterizer.Rasterize(page, HDC, …)
- PDFDraw.SetRasterizerType()
- PDFDraw. SetAntiAliasing()
- PDFDraw.DrawInRect (page, HDC, …)
- PDFDraw.DrawInRect (page, Graphics …)
- enum PDFDraw.PixelFormat
- PDFDraw.GetBitmap(…, PixelFormat pix_fmt)
- PDFDraw.SetErrorHandlerProc()
- ColorSpace ‘Gray’ hint in Export/GetBitmap()
- PDFView.GetDoc()
- PDFView.SetRasterizerType()
- PDFView.SetAntiAliasing()
- PDFView.SetRenderUpdateProc() is deprecated.
- PDFView.SetRenderBeginProc()
- PDFView.SetRenderFinishProc()
- Font.CreateTrueType(doc, LOGFONT, …)
- Font.CreateTrueType(doc, Font, …) [.NET]
- Font.CreateCIDTrueType(doc, LOGFONT, …)
- Font.CreateCIDTrueType(doc, Font, …) [.NET]
- Image.GetBitmap()
- Element.GetBitmap()
- ElementBuilder.CreateForm(Page)
- ElementBuilder.CreateForm(Page, Doc)
- PDFView.GetPageNumberFromScreenPt()
- PDFDoc.GetViewPrefs()
- class PDFDocViewPrefs
- PDFDocViewPrefs.SetInitialPage()
- PDFDocViewPrefs.SetPageMode(mode)
- PDFDocViewPrefs.GetPageMode()
- PDFDocViewPrefs.SetLayoutMode(layout)
- PDFDocViewPrefs.GetLayoutMode()
- PDFDocViewPrefs.SetPref(pref, value)
- PDFDocViewPrefs.GetPref(ViewerPref pref)
- PDFDocViewPrefs.SetNonFullScreenPageMode(mode)
- PDFDocViewPrefs.GetNonFullScreenPageMode()
- PDFDocViewPrefs.SetDirection(left_to_right)
- PDFDocViewPrefs.GetDirection()
- PDFDocViewPrefs.SetViewArea(box)
- PDFDocViewPrefs.GetViewArea()
- PDFDocViewPrefs.SetViewClip(box)
- PDFDocViewPrefs.GetViewClip()
- PDFDocViewPrefs.SetPrintArea(box)
- PDFDocViewPrefs.GetPrintArea()
- PDFDocViewPrefs.SetPrintClip(box)
- PDFDocViewPrefs.GetPrintClip()
- PDFDocViewPrefs.GetSDFObj()
Bug fixes:
- A bug in PDFView class related to interactive multi-threaded
PDF rendering.
- A bug in PDFView.ConvCanvasPtToScreenPt() not returning the
correct value.
February
1, 2006 - Version 3.1
- Support for AES (Advanced Encryption Standard) encryption.
AES encryption is a new feature in PDF 1.6 and Acrobat 7.
- PDFNet SDK resource folders are now replaced with a single
redistributable resource file ('pdfnet.res'), which simplifies
the deployment of PDFNet based applications supporting CJKV
languages and predefined encodings. The new resource file is
also highly compressed resulting in the smaller application
size.
- Support for Visual Studio C++ 2005 and Microsoft .NET Framework
2.x.
- New sample projects for Linux illustrating basic PDF rasterization
and bitmap export to different image formats.
- New cross-platform option for TIFF export.
- New JPEG Quality encoder parameter for JPEG export in PDFDraw.
- New image smoothing options in PDFDraw and PDFView.
- Support for opening PDF documents using ‘StdFile’
with ‘wchat_t’ parameter (i.e. support for Unicode
filenames in C++). This option is available only on platforms
supporting Unicode file systems.
- Improved linearization optimizer.
New Types and Methods:
- StdSecurityHandler.AlgorithmType
- StdSecurityHandler(AlgorithmType)
- StdSecurityHandler.IsAES()
- StdSecurityHandler.IsRC4()
- StdSecurityHandler.SetEncryptMetadata()
- PDFDoc.GetDocInfo()
- New utility class PDFDocInfo
- PDFDocInfo.GetTitle()
- PDFDocInfo.SetTitle()
- PDFDocInfo.GetAuthor()
- PDFDocInfo.SetAuthor()
- PDFDocInfo.GetSubject()
- PDFDocInfo.SetSubject()
- PDFDocInfo.GetKeywords();
- PDFDocInfo.SetKeywords()
- PDFDocInfo.GetCreator()
- PDFDocInfo.SetCreator()
- PDFDocInfo.GetProducer()
- PDFDocInfo.SetProducer()
- PDFDocInfo.GetCreationDate()
- PDFDocInfo.SetCreationDate()
- PDFDocInfo.GetModDate()
- PDFDocInfo.SetModDate()
- PDFDocInfo.GetSDFObj()
- PDFRasterizer.SetImageSmoothing()
- PDFDraw.SetImageSmoothing()
- PDFView. SetImageSmoothing()
- PDFView::CancelRendering()
- PDFView::SetDrawAnnotations()
- PDFView.Close() [.NET]
November
22, 2005 - Version 3.0
July
21, 2005
- Font substitution using all available fonts. PDFNet is now
doing a better job in searching locally available fonts that
can be used as visual substitutes for fonts that are missing
(i.e. that are not embedded) in PDF documents.
- Improved visual rendering of substituted fonts.
- Enhanced JPEG2000 decoder support. All PDFNet users can now
benefit from a brand new, high-performance JPEG2000 engine which
can be used to decode and process any JP2 embedded streams in
PDF. The JPEG2000 filter (introduced in PDF 1.5) decodes data
that has been encoded using the JPEG2000 compression method,
an international standard for the compression and packaging
of image data (see http://www.jpeg.org/jpeg2000
for details). JPEG2000 defines a wavelet-based method for image
compression that can give better size reduction than other methods
such as regular JPEG or CCITT.
- Utility functions and sample code demonstrating the simplicity
of embedding JP2 (JPEG2000) images in PDF. See AddImageTest
sample project for details.
- JBIG2 decoder support. All PDFNet users can now decode and
preview monochrome (1 bit per pixel) images created using PDFNet.
JBIG2 provides considerably better compression than the existing
CCITT standard. Images of pages containing text in any language
compress particularly well, with typical compression ratios
of 20:1 to 50:1 for a page full of text. PDFNet has been supporting
lossless and lossy JBIG2 encoding in previous product releases
for more than a year.
- Interactive forms sample project has been extended with code
samples illustrating how to work with check boxes and buttons.
There are several new utility methods that simplify work with
forms and form appearances.
New Types and Methods (incomplete list):
- PDFDoc.AddFileAttachment()
- enum Annot.AnnotationState
- Annot.GetAppearance()
- Annot.SetAppearance()
- Action.CreateSubmitForm()
Name Changes:
- Filed.GetAppearance() -> Annot.GetAppearance()
Bug fixes:
- Small improvement in serialization of very small and very
large numbers.
- New FDF merge and extract implementation.
- Bug fix in lossy JBIG2 encoder.
- Bug fix related to color conversion from DeviceN color spaces
and PostScript calculator functions.
- Improved consistency with Acrobat 7 for some embedded fonts
that are marked as symbolic.
- Numerous other bug fixes.
May
20, 2005
- Action, Annot, FileSpec high-level utility classes.
- AnnotationTest sample project was extended to illustrate the
capabilities of the above mentioned high-level classes.
- Hook functions for number parsing and serialization allowing
client applications to customize PDF number processing. Default
number functions were updated to work with IEEE single-precision
floating-point numbers for compliance with Acrobat 6 and 7.
Older Acrobat versions used 32-bit fixed-point numbers which
had much smaller range than IEEE floating-point numbers, but
greater precision.
- Support for some CCITTFax streams created using buggy, third
party PDF creators.
- The limit for the maximum number of pages in a single PDF
document was extended to 2^32 (4294967296).
- (.NET) A major update of managed code. The new implementation
is compliant with C++/CLI, a new managed language from Microsoft.
New Types and Methods (incomplete list):
- class Annot
- class Action
- class FileSpec
- Field.IsValid()
- Date.IsValid()
- Page.GetNumAnnots()
- Page.GetAnnot()
- Page.AnnotInsert()
- Page.AnnotPushBack()
- Page.AnnotPushFront()
- Page.GetUserUnitSize()
- Page.SetUserUnitSize()
- Function.GetSDFObj()
- PDFDoc.GetOpenAction()
- PDFDoc.SetOpenAction()
- PDFDoc.IsLinearized()
- Doc.IsLinearized()
- Doc.GetLinearizationDict()
- Doc.GetHintStream()
Name Changes:
- Field.FieldType -> Field.Type
- Field.FieldFlag -> Field.Flag
- Page.CreateWidget() -> Annot.CreateWidget(
Bug Fixes:
- (.NET/C++) Linearization/Fast web view - small adjustments
to the hint format for compatibility with Acrobat.
- (.NET) A solution to a problem related to shared resources.
The exception was occurring only in .NET component running on
machines with hyper-threaded CPU-s or multi-processor systems.
April
8, 2005
- Linearization (Fast Web View) support.
- High level read/write/edit access to extended graphics state
(e.g. transparency, alpha channels, color conversion functions,
etc).
- Support for field names represented using Unicode (PDF 1.6
feature).
- Enhanced forms API (better appearance stream refresh, support
for all field flags, text justification, multi-line text, etc).
- Improved support for image transparency and image masking.
PDFNet now automatically recognizes alpha channel in all supported
raster formats and will preserve them during image import. Image
class was extended with several methods related to image masks
and soft masks making it easier to work with explicit, soft,
and color-key masking. Also there are several new utility methods
for embedding images.
- New image encoder hint allowing the user to control the compression
level for the Flate filter.
- Performance improvements in the rasterizer and content extraction
API.
- Improved lossy JBIG2 compression.
- Bug fixes
New Types and Methods (incomplete list):
- Doc.SaveOptions.e_linearized
- PDFDoc.RefreshFormAppearances()
- Element.UpdateTextMetrics()
- Element.HasTextMatrix()
- ElementBuilder.Reset()
- Field.GetJustification()
- Field.SetJustification()
- Field.GetFlag()
- Field.SetFlag()
- StdFile.FileSize()
- GState.SetBlendMode()
- GState.SetFillOpacity()
- GState.SetStrokeOpacity()
- GState.SetAISFlag()
- GState.SetSoftMask()
- GState.SetStrokeOverprint()
- GState.SetFillOverprint()
- GState.SetOverprintMode()
- GState.SetAutoStrokeAdjust()
- GState.SetSmoothnessTolerance()
- GState.SetBlackGenFunct()
- GState.SetUCRFunct()
- GState.SetTransferFunct()
- GState.SetHalftone()
- GState.GetBlendMode()
- GState.GetOpacityFill()
- GState.GetOpacityStroke()
- GState.GetAISFlag()
- GState.GetSoftMask()
- GState.GetStrokeOverprint()
- GState.GetFillOverprint()
- GState.GetOverprintMode()
- GState.GetAutoStrokeAdjust()
- GState.GetSmoothnessTolerance()
- GState.GetTransferFunct()
- GState.GetBlackGenFunct()
- GState.GetUCRFunct()
- GState.GetHalftone()
- Image.Create(String)
- Image.Create(String, Obj hint)
Name Changes:
- Element.GetComputedTextLength -> Element.GetTextLength.
- PDFDoc.InteractiveFieldBegin -> PDFDoc.FieldBegin
- FDFDoc.InteractiveFieldBegin -> FDFDoc.FieldBegin
- PDFDoc.InteractiveFieldEnd -> PDFDoc.FieldEnd
- FDFDoc.InteractiveFieldEnd -> FDFDoc.FieldEnd
- PDFDoc.InteractiveFieldFind -> PDFDoc.FieldFind
- FDFDoc.InteractiveFieldCreate -> FDFDoc.FieldCreate
December
22, 2004
- Initial support for PDF 1.6 (Acrobat 7 documents)
- A brand new high-performance, high-quality, and platform
independent rasterizer featuring support for pattern fills,
smooth shading and transparency (PDFDraw2.h). There will be
more information about this rasterizer in the upcoming releases
of PDFNet.
- Numerous bug fixes, memory optimizations and speed improvements.
- Image::ImageCompression was renamed into InputFilter. InputFilter
is now optional parameter in Image::Create() methods.
- ElementWriter now automatically recognizes text runs that
can be joined in TJ arrays resulting in more efficient text
output and ease of use.
- ElementWriter.Flush()
September
24, 2004
- GUI feedback in PDFView sample project. PDFView now collects
authentication information for password protected documents.
- Sample code improvements
Bug fixes:
- Font resource leak and other minor bug fixes.
September
13, 2004
- Speed improvements through improved resource caching.
- Minor bug fixes.
September
7, 2004
- Optional annotation rendering for print and preview (PDFDraw.SetDrawAnnotations()).
- Support for both lossless and lossy JBIG2 compression.
- New sample project - JBIG2Test. The sample project illustrates
how to recompress bi-tonal images using advanced JBIG2 compression.
- New hint parameters for PDF image embedding.
- Support for multi-frame TIFF files and extra options to set
JPEG quality in PDFDraw image export.
- PDFDraw.SetRegion() method to select rendering of a page
subset.
Bug fixes:
- Minor printing errors
- Font clipping errors
- Proper rotation rendering
August
24, 2004
- Support for lossless JBIG2 compression
- Image, Text, and Path Smoothing.
- PDF Rasterizer / Viewer (PDFDraw class)
- Enhanced support for CJKV languages, vertical text
- Unicode support through composite fonts (Font::CreateCIDTrueTypeFont).
- Improvements to PDF API reference Manual documentation.
- C++ headers are cleaned up
New Types and Methods (incomplete list):
- Image::Create(Bitmap*)
- Page.GetIndex()
- Font.IsSimple(), Font.GetVerticalAdvance()
- CMap.IsHorizontal()
- Filed::GetDefaultValue
- Field::Rename()
- Field::IsAnnot
Name Changes:
- In order to simplify working with paths ElementBuilder now
remembers fill and stroke path attributes. Instead of having
to call SetPathFill() and SetPathStroke() on every path Element,
these attributes are now inherited from the last Element. This
is consistent with inheritance of all other graphical attributes
in previous versions of PDFNet.
- For clarity PDFDoc::GetPageNumber() is renamed to PDFDoc::GetPagesCount().
Bug Fixes:
- Incorrect transform matrix during editing of very complex
pages.
|