What's New


- +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.Infalte() UString.ConvertToUtf8() [C/C++]
Name 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:
PDFNet.SetResourcePath()
- + August 29, 2008 - Version 4.0.9
-
- Performance and compatibility improvements.
- Improvements in rendering quality.
- Minor improvements and bug fixes.
- an option to treat a page as a transparent backdrop.
- ability to embed and compress images using JPEG2000 compression (using "JP2" hint passed in Image.Create() methods).
- Support for 64-bit platforms (PDFNet for C/C++/JaVa).
New Types and Methods:
PDFDraw.SetPrintMode() PDFRasterizer.SetPrintMode() PDFDraw::SetPageTransparent()
Name Changes:
For clarity, SecurityHandler.Permission.e_all and SecurityHandler.Permission.e_doc_secure permissions to SecurityHandler.Permission.e_owner.
For example, the following line can be used to check if the user has 'owner' access to the document: sec_hdlr.GetPermission(SecurityHandler.Permission.e_owner). The same call can be used to determine whether a given password is 'user' or 'owner'.
- + 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 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).
-

- 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 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).
- 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.
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
A new, completely redesigned cross-platform, high-performance and high-quality rendering engine. The previous rasterizer was limited due to many incompatibilities between GDI+ and the PDF graphics model. The new feature set covers most of the PDF 1.6 (acrobat 7) rendering model and includes:
- Support for soft masks.
- Support for stencil, explicit, and color-key masks.
- Support for various types of patterns and shadings.
- Support for all text rendering modes.
- Caching.
- Progressive rendering.
- Initial transparency support.
A new utility class (PDFView) and .NET forms control that can be used for interactive rendering of PDF documents. PDFView implements some essential features such as double-buffering, multi-threaded rendering, scrolling, zooming, and page navigation that are essential in interactive rendering applications (e.g. in client PDF viewing and editing applications).
New and updated samples:
- PDFDraw – shows how export to various raster formats.
- PDFView – demonstrates interactive viewing of PDF documents.
- U3DTest – illustrates how to embed U3D content in PDF.
- PatternTest – illustrates how to create PDF patterns and shadings.
- BookmarkTest – extended example illustrating how to create a Bookmark pointing to a page in a remote document.
Adding new content and merging existing PDF content is now even easier. ElementWriter now tracks all changes in the graphics state and all special cases are automatically handled by the library resulting in improved developer productivity and software reliability.
A workaround to a design error in Microsoft .NET CLR (versions 1.0x and 1.1x) related to Mixed DLL Loading Problem.
Improved appearance generation for form fields.
InitStdSecurityHandler() can now accept passwords directly. This removes the need to derive custom SecurityHandlers in cases where the password is known in advance and the authorization procedure does not require user feedback. See EncTest for more details.
The Page class has new utility methods that simplify work with different page regions (page boxes).
Support for document level multi-threading.
New Types and Methods:
Doc::Lock() Doc::Unlock Doc::IsLocked() Doc::InitStdSecurityHandler()
class PDFDraw is redesigned
PDFDoc::Lock() PDFDoc::Unlock PDFDoc::IsLocked() PDFDoc::InitStdSecurityHandler()
Page::annotRemove() enum Page::Box enum Page::Rotate Page::GetBox() Page::SetBox() Page::GetRotation() Page::SetRotation() Page::GetMediaBox() Page::SetMediaBox() Page::GetCropBox() Page::SetCropBox() Page::GetDefaultMatrix() Page::GetDefaultMatrix(flip) Page::GetDefaultMatrix(flip, region) Page::GetPageWidth() Page::GetPageHeight() Page::GetPageWidth(region) Page::GetPageHeight(region) Page::HasTransition()
Image::IsValid()
Element::GetBBox()
Field::Eraseappearance()
Font::GetBBox()
PDFDraw::SetDPI() PDFDraw::SetImageSize() PDFDraw::SetPageBox() PDFDraw::SetFlipYaxis() PDFDraw::SetRotate() PDFDraw::SetDrawannotations() PDFDraw::Export() PDFDraw::GetBitmap()
New class PDFRasterizer
PDFDraw::Rasterize() PDFDraw::SetDrawannotations() PDFDraw::SetCaching() PDFDraw::SetRenderUpdateProc() PDFDraw::SetErrorReportProc()
New class PDFView
PDFView::SetDoc() PDFView.SetPageViewMode() PDFView.GetPageViewMode() PDFView.SetPagePresentationMode() PDFView.GetPagePresentationMode() PDFView.GetCurrentPage() PDFView.GetPagesCount() PDFView.GotoFirstPage() PDFView.GotoLastPage() PDFView.GotoNextPage() PDFView.GotoPreviousPage() PDFView.SetCurrentPage() PDFView.GetZoom() PDFView.SetZoom() PDFView.RotateClockwise() PDFView.RotateCounterClockwise() PDFView.ConvScreenPtToCanvasPt() PDFView.ConvCanvasPtToScreenPt() PDFView.ConvCanvasPtToPagePt() PDFView.ConvPagePtToCanvasPt() PDFView.ConvScreenPtToPagePt() PDFView.ConvPagePtToScreenPt() PDFView.SetRenderUpdateProc() PDFView.SetErrorReportProc() PDFView.GetCanvasWidth() PDFView.GetCanvasHeight() PDFView.GetHScrollPos() PDFView.GetVScrollPos() PDFView.OnScroll() PDFView.SetHScrollPos() PDFView.SetVScrollPos() PDFView.OnSize() PDFView.Update() PDFView.GetBuffer() PDFView.GetBufferWidth() PDFView.GetBufferHeight() PDFView.GetBufferStride() PDFView.InvalidateRect() PDFView.SetCaching()
Name Changes:
InitializeSecurityHandler() -> InitSecurityHandler() Obj* GetMediaBox() -> Rect GetMediaBox() Obj* GetCropBox() -> Rect GetCropBox() GetBleedBox -> GetBox(Page::e_bleed) GetTrimBox() -> GetBox(Page::e_trim) GetartBox() -> GetBox(Page::e_art)
Bug fixes:
- Numerous bug fixes.
- +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.

