PDFTron logo
 Home | Products | Services | Store | Downloads | Support | Company

PDFNet SDK - What's New?

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.
PDF Layers
  • 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 11, 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).
  • PDF viewer for Java
  • 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.
  • Sample PDF rendered and generated using PDFNet
  • 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 21, 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 new class ‘MyPDFView’ 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 form field editing, interactive U3D model viewing, movie annotations, etc).
    Custom PDF annotations drawn using PDFNet SDK's PDFView sample project.
  • 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.
    Radial Shading support in PDFNet SDK
  • 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.
    Gouraud shading support in PDFNet SDK
  • 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
February 1, 2006 - Version 3.1
November 22, 2005 - Version 3.0
July 21, 2005
May 20, 2005
April 8, 2005
December 22, 2004
September 24, 2004
September 13, 2004
September 7, 2004
August 24, 2004

PDFNet - Core components for PDF applications
 Product Info 
 Feature Chart 
 What's New? 
 F.A.Q. 
 User Manual 
 API Reference 
 Sample Code 
 Forum/RSS 
 Get the Demo! 
 Licensing 
 Contact