PDFNet SDK - What's New?
Version 9.0.0 - April 9th, 2021
New Features
- Advanced Imaging Module, supporting the DICOM image format and many others.
- Flexible and powerful document generation using office templates. Full reflow, and retains all document styles.
- Added PDF2Word Module that enables conversion to Word. (Convert.ToWord()).
- Added PDF2HtmlReflowParagraphsModule Module and HTMLOutputOptions.SetContentReflow() that can be used to utilize it when calling Convert.ToHtml.
- Added a PDFTron Custom Security Handler that can be used to produce PDF files that can only be decrypted by PDFTron SDK and only if the password is correct and the specified id has been registered by the application. (PDFTronCustomSecurityHandler class and PDFNet.AddPDFTronCustomHandler) This provides a level of security very similar to that of writing a custom encryption method, but is much simpler to use.
- Added an API to manually add or edit marked content. (ElementBuilder.CreateMarkedContentBegin, ElementBuilder.CreateMarkedContentEnd, ElementBuilder.CreateMarkedContentPoint etc.)
- Added an API to produce pages showing the text differences between two pages or documents. (PDFDoc.AppendTextDiff) This API is currently experimental and subject to change.
- Added a new API to trust certificates in the FDF Data/Cert Exchange format. (VerificationOptions.LoadTrustList) This provides overall more correct results during verification than VerificationOptions.AddTrustedCertificates as it can handle more fine-grained trust settings.
- Added new optional trust flags as input to VerificationOptions::AddTrustedCertificate to configure the desired level of trust.
- Added support for specifying locale for Office conversions.
- Added a filetype option to 'Convert' methods that accept a Filter and not a file path.
Changed Behaviour
- Moved X509Certificate, DigestAlgorithm, ObjectIdentifier, X501AttributeTypeAndValue, X501DistinguishedName and X509Extension from pdftron.PDF to pdftron.Crypto.
- Removed HTMLOutputOptions.SetReflow which wasn't usable in normal builds and overlaps in concept with the new HTMLOutputOptions.SetContentReflowSetting.
Other Changes
Improvements
- [pdf] Updated Duktape to 2.6.0.
- [jpg] Updated libjpeg-turbo to 2.0.6.
- [tiff] Updated libTIFF to 4.2.0.
- [pdf] Updated OpenSSL to 1.1.1j.
- [all] Added macOS arm64 slice for Apple Silicon.
- [all] Enabled better optimization settings on PDFTron SDK on Windows.
- [xfdf] Significantly optimized the performance of XFDF export.
- [pdf] Optimized creation of PDFDoc, SDFDoc, FDFDoc and ObjSet objects. This has a significant impact on cases that create a large number of these objects.
- [xfdf] Improved support for importing XFDF into PDFs with corrupt Annotations array.
- [xfdf] Generating consistent names on all unnamed annotations for during xfdfexport. This is especially helpful for realtime collaboration use-cases.
- [xfdf] Adjusted rectangle, ellipse, export and import to support nonstandard rotation in import and export.
- [pdf] Adjusted logic for retaining text spacing adjustments, so that it would work with interleaved marked content operators.
- [pdf] Avoid "faded colors" during PDF rendering when color management is disabled and overprint is off.
- [pdf] Avoid writing unnecessary colors and colorspaces when generating annotation appearance streams.
- [pdf] Adjustment to repair corrupt documents with negative or unreasonably large object numbers.
- [pdf] Erase invalid colorspace entries in ImageMasks during PDF/A conversion
- [svg] Better handle corrupt documents with unbalanced q/Q operators in forms during Convert.ToSvg.
- [pdf] Added support for trusting intermediate certificates in the chain during for Digital Signature Verification.
- [pdf] Adjusted corrupt document processing logic to allow for an XRef entry following startxref. Previously this would be treated as garbage data and the rest of the PDF would be skipped.
- [pdf] Improved reading for field values from XFA to better handle strangely formed inheritance structures.
- [xod] Adjusted flattening to disregard cases where the blend mode is specifically set to normal. This reduces unnecessary flattening for ToXod and Flattener improving run time and output quality in these cases.
- [pdf] Optimized PDF/A conversion for files with a lot of font objects.
- [pdf] Optimized text extraction to more efficiently extract styles. This primarily impacts text selection, reflow and use cases that use TextExtractor directly to obtain text styles.
- [pdf] Added support for dashed borders on checkboxes.
- [pdf] Added support for auto-tiling of very large tiff images
- [pdf] A number of new APIs were exposed in the pdfnet-node package.
- [pdf] Handle Exif rotations through the UniversalConversion methods on the Convert class
Bugfixes
- [pdf] Fixed a parsing issue where unusually structured encrypted documents could fail to load.
- [pdf] Avoiding a crash when using incremental download on rare documents that start with a null object.
- [xfdf] Fixed an issue with PDFDoc.FDFUpdate where it could remove RichMedia and other less commonly used annotation types.
- [pdf] Fixed incorrect text extraction word break issue when text includes a vowel sign.
- [xfdf] Fixed an issue in PDFDoc.FDFUpdate where, in rare situations, radio buttons could be incorrectly matched and not function as expected.
- [pdf] Fixed a problem where certain PDF JPEG2000 images with 4 bits per component would display as darker than they should.
- [pdf] Fixed an issue where some documents with XFA values wouldn't take these into account when displaying the selected state of check boxes and radio buttons.
- [pdf] Fixed a problem where the Metadata would still be encrypted even if using SetEncryptedMetadata(false)
- [pdf] Fixed a problem with PDFDocInfo.GetSDFObj() where it would return the trailer rather than the Info object as would be expected.
- [pdf] Fixed an issue with Optimizer where, on certain documents and when subsetting fonts, it could break the appearance of hidden annotations. This could lead to issues later when the annotation becomes no longer hidden.
- [pdf] Adjusted page insertion to clear any DigitalSignatures when inserting into a new document. Previously these would be included, but invalid.
- [pdf] Adjusted handling of Field Flags to ignore them when they are incorrectly applied to Widget only dictionaries.
- [pdf] Adjusted PDF/A validation to not provide an error for Device colorspaces (e.g. DeviceRGB) if there is an associated Default colorspace in the resource dictionary. (e.g. DefaultRGB)
- [pdf] Fixed an issue with the generated appearance of line annotations with inline captions where the line would go through the text.
- [pdf] Fixed an issue with handling of 0 length streams that could lead to slow and unexpected file growth. This issue was especially troublesome when saving large files.
- [pdf] Fix for incorrect color in some DCTDecode images where the embedded colorspace conflicts with the PDF colorspace
- [pdf] Closed potential security issue with FileAttachment annotations, where a specifically constructed annotation could access external servers during XFDF export
- [pdf] Generated fully selectable text when generating complicated shaped text output
- [pdf] Fix for potential non-optimal performance when filling an internal object cache
- [tiff] Fix for potential crash when reading some YCbCr encoded images.
- [pdf] Fixed an issue with creating bad width tables in fonts covering codepoints outside the basic multilingual plane
- [pdf] fixed an issue with bad lookups in a font's toUnicode map when handling codepoints outside the basic multilingual plane
- [emf] Now correctly handle PDFs embedded within EMF files
- [all] Fix for mishandling of short font names in all caps, like "OCR-B"
- [all] Fixed bug with custom font servers which could result in missing the first item in a specified character range
- [all] corrected mapping of fonts specified as both "light" and "bold"
- [all] Fix for incorrect font substitution on Windows systems for some symbol characters
Office-specific
- [office] Can now positively identify encrypted office documents.
- [pptx] Fix for cases where a shape had deeply nested reference to other diagrams.
- [docx] more consistent handling of table widths specified as percentages.
- [office] Fixed issue that could result in incorrect character selection in documents with explicitly specified zero width non-break space characters.
- [docx] Now correctly take endnote number formatting into account.
- [office] Fixed bug with superscript/subscript handling in some cases when resolving local and derived run styles.
- [xlsx] More robust handling of malformed number formatting codes.
- [office] Fixed error in PDF structure output for table cells when converting office->PDF.
- [docx] Fix for semi-transparent fills in some office drawings.
- [docx] More robust handling of grouped office drawings with no shape ID.
- [office] Fixed the default label placement for 3d bar graphs.
- [office] Fixed error with occasional missing chart per-data-point labels.
- [pptx] Added missing support for column layout.
- [docx] Fix for incorrect handling of page breaks immediately preceding a continuous section break.
- [docx] Tuned line spacing to be an exact match to MS Word in more situations.
- [docx] Added support for graphic frames.
- [docx] Improved interaction between tables and floating content.
- [pptx] Fixed mishandling of tab characters within some lists.
- [office] Now correctly handle the "flatTx" attribute.
- [docx] Fix for potential crash in office files with malformed 'oMath' runs.
- [docx] Corrected handling of the 'auto' spacing property for the first and last paragraph in a document.
- [xlsx] Changed default value for unspecified opacity to opaque, rather than transparent.
- [xlsx] Implemented support of rich text for inline strings in Excel.
- [xlsx] Fix for handling of documents with no specified default styles.
- [xls] Fix for potential crash on some malformed xls documents.
- [xlsx] Optimized XLSX memory handling, now use much less memory when converting very large documents.
- [xlsx] More robust handling of malformed formulas in xlsx files.
- [office] Fixed a small memory leak (32 bytes per document).
- [pptx] Fix for not completely resolving the font style for some text.
- [office] Correctly handle data points outside the bounds of the chart axes.
- [office] Now handle clipping for all shapes, not just images.
- [office] Fixed grid line spacing for non-East Asian fonts.
- [docx] Fixed auto spacing between list paragraphs.
- [docx] Fix for too-high line spacing for some text with colored backgrounds.
- [office] Fix for incorrect parsing of percentage values that have percent symbols in them already.
- [docx] Fix for mishandled table borders in some isolated cases.
- [docx] Corrected default behaviour for non-specified vertical anchor in floating tables.
- [docx] Fix for cases where text boxes had a non-zero position and a specified wrap rectangle.
- [docx] Implemented bi-level image effect.
- [docx] Fix for unnecessary internal rounding of some fractional font sizes.
- [office] Fix for mishandling of some stroked text when converting to PDF.
- [office] Fixed drawing of stacked charts with non-zero base value.
- [xlsx] Removed exception when attempting to place some out-of-bounds content.
- [office] Added support for the luminance image effect.
- [office] Fix for mishandling of Thai text justification.
- [pptx] Fix for handling of negative indentations.
- [office] Fixed square text wrapping of rotated images.
- [office] Fix for handling of text spacing in fully justified text produced in older Word versions.
- [office] Fixed bounding box of the circular arrow and pie wedge shapes.
- [xlsx] Fix for scaling of grouped shapes with the two-cell anchor style.
- [docx] Ensure that we draw group shape elements by order of appearance.
- [office] Fixed issue with misaligned right-to-left text in rows with trailing spaces.
- [office] Much improved office equation handling.
- [office] Now translate some elements of user-specified structured document tags within OOXML to the converted PDF.
- [xls] Fixed hidden sheet state conversion for xls.
- [xls] Now correctly ignore comment shapes.
- [office] Implemented support of semi-transparent gradient fill.
- [xlsx] Now support excel rounding functions.
- [docx] Implemented handling of vanished paragraphs.
- [doc] Fixed a number of bugs with handling of numbered lists.
- [docx] Fixed automatic text color on a dark page background.
- [office] Fixed a performance issue with chart drawing, no longer waste time on non-visible elements.
- [xlsx] Fix for incorrect ISBLANK implementation.
- [xlsx] correct handling of row custom height and dyDescent.
- [docx] Better handling for custom page numbering mixed with non-custom.
- [pptx] Take trailing blank lines into account when centering text vertically.
- [docx] Correctly handle cases where a paragraph contains only floating picture anchors and a line break.
- [xlsx] Do not wrap text in date-formatted cells.
- [xls] Implemented AutoFilter support for XLS format conversion.
- [office] Added support for arbitrary text rotations.
- [office] Added support for text which is horizontally scaled to it's container.
- [office] Implemented double and heavy underlines and strike through styles.
- [xlsx] Added missing support for some forms of horizontally merged cells.
- [office] Many improvements to chart drawing and axis positioning.
Version 8.1.0 - November 30th, 2020
New Features
- PAdES Digital Signing is now supported. (using the new function DigitalSignatureField.UseSubFilter)
- Included electron support for versions 6-10 in the pdfnet-node npm package.
- MSG conversion using Outlook interop is now supported.
Other Changes
Roughly categorized, not an exhaustive list.
Improvements
- [pdf] Prevent Optimizer from throwing exceptions on documents with a corrupt destination nametree.
- [pdf] Improved time of verification output in Digital Signature Validation to better match other PDF solutions.
- Updated PDFTron SDK on Linux to be compatible with older versions of Linux. This change allows PDFTron SDK to be compatible with GLIBC 2.9+. (formerly it was compatible with GLIBC 2.17+)
- [pdf] Will now handle locally served custom webfonts synchronously, automatically using them as a source for font substitutions.
- [pdf] Performance optimizations for global font caching. Improves font substitution performance on Windows, Linux, and Android.
- [image] Updated libpng to version 1.6.37.
Fixes
- [pdf] Fix for rare divide-by-0 error when blending transparency groups in overprint preview mode.
- [pdf] More robust treatment of corrupt documents where we are unable to recover any sort of page tree.
- [office] Fixed an off-by-one error in font coverage ranges, which could lead to poor font selection in isolated cases.
- [pdf] Initial demo license initialization is now fully thread safe. Previous logic had potential issues when Initialize was called simultaneously from multiple threads.
- [pdf] Fix for incorrect handling of some text outside of the basic multilingual plane when using ElementReader.
- [pdf] Match the behaviour of Acrobat reader when handling grayscale images with conflicting ICC and image pixel formats.
- [pdf] Fix for rendering of images with a black matte when blending edge pixels onto a fully transparent backdrop.
- [pdf] Improved logic for selecting charmaps from embedded truetype fonts. (in the case when there are multiple viable maps)
- [pdf] Fixed processing of encoding tables in the case where the font names resemble hex digits.
- [pdf] Fix for our handling of some JPEG 2000 encoded images where the pixel format in the image has conflicting data.
- [pdf] Better handling of pre-existing FontConfig configurations on modern Linux systems.
- [office] Fix for potential incorrect font selection when handling mixed arabic and latin text.
- [office] Tune substitute font scaling so that we are less likely to end up extreme scaling factors.
- [office] Better handling of symbolic fonts (eg. wingdings) on systems where we have a poor substitute font selection.
- [office] Fix for rare crash when processing Excel sheets with text that overflows cell boundaries.
- [office] Fix for potential crash when handling format strings with particular symbols in the string portion.
- [office] Better thread safety for internal font metric lookups.
- [office] Fix for failed doc conversions in some isolated cases where expected parts of the source file are missing.
- [office] Fix for incorrect scaling of some rotated picture elements.
- [office] Tuned list indentation for powerpoint files.
- [pdf] Avoid errors when Optimizing due to direct fonts in the PDF.
- [pdf] Fixed a memory leak in Digital Signature Verification. This also impacts Secure Timestamping and LTV support since these use Verification.
- [pdf] Fixed a rare issue where Linearized PDFs could be detected as not linearized.
- [pdf] Fixed an issue where Digital Signature Verification could disallow certain Long Term Validation updates.
- [pdf] Fixed issues with Unicode writing ElementWriter APIs in Node.js.
- [pdf] Updated line annotation appearance generation (used when displaying or creating lines) to better take line dashes into account. Previously the phase would be different than expected.
- [pdf] When printing the print and hidden annotation flags are now properly taken into account.
- [pdf] Handle corrupt document where the Annotations entry is not an array in FlattenAnnotations.
- [pdf] Better handle uncommon fonts with 3 byte charcodes.
- [svg] Handle corrupt cases where the PDF has graphics state changes in BT/ET blocks for PDF to SVG conversion.
- [pdf] Updated font Substitution on Apple platforms to handle unicode characters beyond the basic multilingual plane.
- [xfdf] Fixed a problem where in rare situations extracting XFDF from PDF could produce a document with an incorrect and large font size.
- [pdf] Long Term Validation support will now update rather than rewriting existing Long Term Validation data.
- [pdf] Fixed an error with Page.GetBoundingBox which could cause it to malfunction on corrupt documents with mismatched group begin and group end elements within a form. This also had an impact on Page flattening which uses this method.
- [pdf] Diff.AppendVisualDiff will now better take into account the page rotation and cropping present in the input pages.
- [xfdf] Simplified the conditions for exporting annotation appearances in XFDF. In particular they will now be included even if that the annotation type is unsupported or certain annotation entries are missing.
- [pdf] Fix for parsing color from the Default Style (DS) entry. This improves the results after importing certain XFDF files.
- [pdf] Fixed a memory leak in FilterWriter.WriteBuffer for .Net Core.
- [xfdf] Fixed a problem where annotations with certain goto actions could fail to match during FDFUpdate.
Version 8.0.0 - September 4th, 2020
New Features
- Digital Signature Verification is now out of beta.
- New APIs for certificates (X509Certificate) and a number of other Digital Signature related classes.
- Digital Signing support for Embedding Secure Timestamps and Long Term Validation (LTV).
- Accessibility: built in office conversion now produces tagged PDFs.
- Added native support for the xls format, rounding out our support of the 6 main "office" formats (docx, pptx, xlsx, doc, ppt, and now xls)
- Added support for Right-to-left languages within office files.
- Added options for converting Excel sheets into multiple PDF pages.
- Added new API for text shaping, enabling support for visually complex scripts (like Thai and Hindi) using elementbuilder.
- Support for Compressing Monochrome (1 bit per pixel) Images with CCITT Group 4 lossless compression in Optimizer or during PDF image creation.
- Utility functions to refresh all missing appearances and more easily create custom appearances. (PDFDoc.RefreshAnnotAppearances() and Annot.RefreshAppearance(RefreshOptions))
- Support for Option Content Groups/Layers (SetOCGContext) in TextExtractor and TextSearch.
- Added a new function PDFACompliance.GetDeclaredConformance which can get the conformance level specified in the document.
- Node.js: added support for TypeScript and Node versions 13 and 14.
- CAD module: added options to specify background color, color mode, handling of thin lines, and xref search paths.
Changed Behaviour
- By default Optimizer will now use CCITT Group 4 compression for monochrome images. This is because the previous default of JBIG2 caused a number of issues due to its lossless nature.
- The display and appearance generation of Rectangle annotations has been adjusted to be more in line with other applications. It is recommended to test any custom creation or viewing logic for these annotations.
- The display and appearance generation for FileAttachment annotations has been adjusted to be more in line with other applications. In particular the aspect ratio has been changed for certain icons. It is recommended to test any custom creation logic of these annotations and refer to the FileAttachment class documentation for more information about the new appearance aspect ratios.
- During PDFViewCtrl.OpenUrlAsync placeholder pages (for those which haven't finished downloading) will now throw an exception if they are edited. Most viewers handle this by disabling these edits during download.
- TextExtractor and TextSearch now use the default OCG/Layers by default.
- By default the logic to skip the watermark layer for Text Extraction has been disabled.
- Changed Field.SetValue() to no longer turn on the current radio button when passing "True" "Off" or "On". The boolean version of SetValue() should be used instead for this.
- The `Convert.StreamingPDFConversion` API will now throw an exception in the case where it is unable to initialize the conversion (previously returned a null or invalid object
Other Changes
Roughly categorized, not an exhaustive list.
Improvements
- [pdf] PDFViewCtrl.OpenUrlAsync has been optimized significantly by reducing contention on the document lock.
- [html] Updated HTML2PDF module on MacOS, since the latest versions of the operating system no longer support 32-bit applications.
- Node.js builds no longer require a step to install or reference the library on Linux/Mac.
- [office] Improved .msg office interop conversion.
- [pdf] Copy over calculation order as appropriate during page import or merge. This is important to keep certain JavaScript actions working.
- [pdf] Fixed an infinite loop in linearized save when handling corrupt documents with a page-tree cycle.
- [pdf] Avoid throwing errors when encountering corrupt line operators that have non-number parameters.
- [xfdf] Support importing appearance image data in Signature Widgets.
- [pdf] Updated diff logic to reduce exceptions thrown on corrupt documents.
- [xfdf] Avoid throwing exceptions on XFDF export when encountering corrupt annotation objects.
- [pdf] Adjusted Optimizer to process existing annotation appearances. This gives a bit more room to reduce the document size in addition to fixing some problems with the subset option.
- [svg] Adjusted PDF2SVG logic to flatten paths filled with patterns, since these were not previously supported.
- [pdf] Adjustment to throw out integers that are over implementation limits during parsing. This better matches the behaviour of other PDF consumers.
- [pdf] The cache file provided to PDFViewCtrl.OpenURLAsync will now be written even if the server doesn't support byte ranges or Content-Length.
- [xfdf] Improved error handling for corrupt annotations during FDFUpdate.
- [xod] In error cases where temporary files cannot be opened throw exceptions to the user rather than failing silently.
- [pdf] Improved logic for rebuilding corrupt documents to better handle indirect length entries.
- [xfdf] Added repair logic in PDFDoc.FDFUpdate for corrupt Fields that are not in the Acroforms dictionary. This is important to allow the Field value to be updated.
- [xfdf] Improved identification of changed annotations in PDFDoc.FDFUpdate in order to keep more existing annotation appearances.
- [pdf] Updated FieldIterator to avoid returning Null objects on corrupt documents that utilize these in the field hierarchy.
- [pdf] Updated document Resource caching logic to provide much better performance on heavily multithreaded applications.
- [pdf] Improved error handling in the Node.js interface.
- [pdf] When importing objects into a new document (for example when merging) avoid throwing an exception if subobjects are corrupt.
- [xfdf] Added better handling for corrupt annotation Border entries in XFDF export.
- [pdf] ElementBuilder.CreateTextRunHelper will now just use the input as charcodes for some symbol fonts, since unicode input doesn't make much sense for such fonts.
- [pdf] Much improved handling of font substitution internal flow, resulting in more accurate matches and better performance.
- [pdf] Improved the performance of the Windows font substitution backend, making it better at finding Bold and Italic font variants in some situations.
- [tiff] Add support for extra tiff samples in the case where channels are arranged in a planar configuration.
- [pdf] More robust handling of (corrupt) files with non-embedded fonts and missing toUnicode maps.
- [pdf] Improved error messages for failed conversions.
- [pdf] More robust handling of (technically corrupt) type0 CID fonts with a CIDToGID map.
- [pdf] Improved pixel-hinting of thin rectangles that partially overlap clipping paths.
- [pdf] Improved support for extended unicode text (outside of the basic multilingual plane)
- [tiff] Added support for YCbCr colorspace images.
- [OCR/CAD] Better error messages from sub-modules
- [OCR] Improved logic for determining the "native" dpi of an incoming document, and added option to explicitly specify the dpi.
- [CAD] Now support referenced .gp4 images in CAD files.
Fixes
- [pdf] Fixed an occasional crash when flattening annotations on a specific type of file.
- [pdf] Updated hide action logic to also consider with the noview flag. This fixes actions on an uncommon type of document that relies on this flag.
- [pdf] Fixed occasional race condition crash when viewing some PDF prime documents.
- [pdf] Adjusted ContentReplacer to avoid introducing unrelated changes when updating certain PDF files.
- [xps] If PNG image has an invalid resolution the default DPI is now used in xps to pdf conversion.
- [xfdf] Fixed a problem on certain files during XFDF export where, in rare cases, annotation properties could be written on the wrong element.
- [office] Fixed a breakage in excel support through interop.
- [xfdf] Adjusting appearance rendering logic for stamp annotations during XFDF export to better support pattern transformations.
- [pdf] Adjusting reflow squiggly underline output to use a wavy underline rather than strikeout.
- [pdf] Fixed a bug in SDF.NameTree where the tree could be split incorrectly. (and certain values could become inaccessible)
- [pdf] Fixed a crash in Field.SetValue if called on a corrupt Widget without a connected field.
- [pdf] Fixed an issue setting the value of certain choice fields.
- [xfdf] Adjusted support for MaxLen property to use the value in the first Widget, which better matches behaviour in other viewers.
- [pdf] Fixed a potential crash calling CloseDoc() after there has been an error during download/PDFViewCtrl.OpenUrlAsync.
- [pdf] Fixed corrupt document repair to ensure that the last object of a given number is used.
- [pdf] Adding check for badly formed stream objects masquerading as Object Streams to avoid throwing them out on save.
- [pdf] Fixed a crash in FreeText.RefreshAppearance when encountering an empty DA entry.
- [xod] Fixed a problem where the first few thumbs would be included when streaming to XOD even if they were turned off.
- [pdf] Fixed an occasional crash in PDFViewCtrl.OpenUrlAsync, triggered by an early failure in the download process.
- [image] Fixed a crash when encountering problems in multipage tiff conversion.
- [xfdf] Fixed a bug where, in rare cases, field values could incorrectly end up with XML escaped output after XFDF import.
- [xod] Added basic support in XOD conversion for Image Soft Mask Matte entry.
- [pdf] Fixed an issue where calling ElementWriter.Begin could incorrectly throw an exception on certain types of documents.
- [pdf] Fixed a problem with image downsampling of annotation appearance streams. Previously these would rarely be downsampled.
- [xfdf] Fixed a problem with importing/merging fields with complex inheritance structure.
- [pdf] Fixed DigitalSignatureField.ClearSignature() so it would clear global document state if no signatures remain.
- [xps] Fixed a problem with extracting the dpi from jpeg or tiff files when they have dots-per-cm units.
- [html] Dropped the font size limit for html2pdf to work better with the latest macOS and retina displays.
- [pdf] Added default style parsing for text color in FreeText annotations. This fixes issues with text color when importing from XFDF.
- [xfdf] Fixed a problem handling corrupt Pages with duplicate annotation ids in PDFDoc.FDFUpdate.
- [pdf] Text extraction will now properly handle subforms even if a corruption is encountered in them.
- [pdf] When redacting the logical structure is now erased when to better ensure nothing relevant slips through.
- [pdf] Fixed a problem handling radio buttons with a non-unicode on state.
- [xfdf] Added support for Stream values in text fields when exporting XFDF.
- [pdf/xod] Fixed an issue with flattener where text that was covered by an almost transparent layer before being occluded would be displayed on top.
- [pdf] Resolved an issue with drawing rectangle annotations with the cloudy style.
- [bmp] Fix for handling of some transparent .bmp files where the background could remain uninitialized.
- [pdf] Fixed an issue with our handling of malformed cmaps that could result in bad memory accesses.
- [viewer] Fix for potential deadlock when calling PDFView.Update()
- [pdf] Fixed issue with separation blending not working correctly when the page blend space is RGB.
- [pdf] Fixed potential crash when rendering a softmask with an empty group entry.
- [pdf] Fixed a rare issue with resolving cmap entries within TrueType fonts that could lead to garbled text rendering.
- [OCR] Fixed a bug where we would not properly handle escaped backslashes within json input.
Native Office Fixes and Improvements
- [office] More accurate reproduction of tinted theme colors
- [office] Many improvements to embedded font resolving, with powerpoint files seeing the most improvement.
- [pptx] Can now make use of docx "resource documents" when converting pptx files
- [office] Improvements to our handling of "tricky" font names that resemble other known fonts.
- [office] Change default checkbox rendering to use a box, rather than a windgdings glyph.
- [pptx]Added color override map support for each individual slide, as opposed to just the master and layout slides.
- [office] Chart improvements: data labels are now better supported, improved legend positioning, allow entries to be deleted from the legend.
- [docx] More precise handling of text-float overlap and interactions.
- [pptx] More accurate determination of text line height in powerpoint.
- [docx] Better resolving of floating content positions in complex documents.
- [docx] Added support for the "dxa" form of table margins.
- [docx] More accurate calculation of table row heights.
- [office] Added basic support for the multiLvlStrRef element in charts.
- [office] Added preliminary support for some math elements.
- [office] More robust handling of unsupported graphic data (attempt to use alternate content in more situations)
- [office] Added support for vertical text within table cells.
- [office] Added support for tiled image fills.
- [office] Added support for duotone image recoloring
- [docx] Added support for repeated table headers, where the header of a table is placed at the top of each page.
- [office] Now correctly resolve solid fill colors with an inherited "noFill" property.
- [doc] Fix for handling of .doc tables with mismatched content and column count.
- [docx] Fix for potential errors in mapping of individual symbol elements.
- [pptx] Fixed issue with decoding some embedded glyphs.
- [office] Fixed issues with resolving "auto" background colors in different contexts.
- [docx] Fix for oversize tables not properly overflowing their parent containers.
- [docx] Fixed error in treatment of individually set cell margins (under the 'tcMar' element)
- [docx] Fixed bug with resolving inherited hanging indent values.
- [docx] Relaxed the rules for placing floating content in footers, rather than skipping it.
- [office] Fix for bug where text styles were not fully resolved when determining the height of a line break.
- [xlsx] Fix for a bug where unresolved formatting codes would result in a failed conversion.
- [office] Now correctly handle vertically merged table cells in tables with the "gridBefore" property
- [office] Improved support for handling of embedded EMF files.
- [excel] Fix for our handling of cells with the special number format code "General"
- [excel] Fix for mishandling of table margins specified within the tblPrEx tag.
- [excel] Now allow conversion of xlsx sheets with no fonts defined.
- [docx] Fixed issue where a local "auto" line spacing rule would not properly override a global non-auto spacing.
- [docx] Now correctly handle NUMPAGES dynamic content within fldSimple elements.
- [excel] More robust handling of format codes with leading and trailing spaces.
- [docx] Correctly handle the case where numbered lists should inherit styles from the paragraph run properties.
- [docx] Fixed a bug where shapes were incorrectly constrained to the bounds of the page area.
- [pptx] Fix for occasional bad text positioning inside shapes.
- [pptx] Fixed incorrect cropping of transformed images.
- [office] Fixed handling of images with a global opacity value.
- [office] Fixed occasional incorrect handling of isolated symbols (list bullets, for example)
- [ppt] Fix for incorrect handling of default kerning values for ppt files.
- [doc] Fix incorrect positioning of grouped shapes within .doc files.
- [office] Fixed a number of issues with chart axis positioning
- [doc] Fixed incorrect handling of MS1252 encoded text in doc files.
- [office] Fixed a crash in pie chart drawing when trying to draw 0-size slices.
- [office] Fix for mishandling of some format codes with non-ascii values.
- [docx] Fixed a number of issues with content controls
Version 7.1.0 - February 18th, 2020
New Features
- Digital Signature Verification
- Added support for creation of Viewer Optimized PDF files (PDFDoc.SaveViewerOptimized).
- Viewers have been updated to take advantage of Viewer Optimized PDF.
- Added annotation API to read, write and delete custom data. (Annot.SetCustomData, Annot.GetCustomData and Annot.DeleteCustomData).
- Added the SetRequiredFieldBorderColor() method to PDFView and PDFViewCtrl.
- Added functions Ink.SetHighlight and Ink.GetHighlight to choose whether the Ink will display like a highlighter.
- Added ElementWriter.WriteGStateChanges() which can simplify use cases where the intention is to only write the graphics state of an element.
- Added options for line weight and auto rotation to CADConvertOptions.
- Added DPI option for to OCROptions.
- Added built-in support the ppt format, can now view and convert these files to pdf.
Changed Behaviour
- .Net Framework builds are now dependent on the Microsoft Visual C++ Redistributable Packages for Visual Studio 2013 rather than the Microsoft Visual C++ 2010 Redistributable.
- Digital Signatures will now be signed with SHA256. (previously SHA1).
- Ink.SetBlendMode and Ink.GetBlendMode functions have been deprecated.
Customers are encouraged to use `Ink.SetHighlight` and `Ink.GetHighlight` instead, as they are more aligned with the PDF specification, and offer greater compatibility with other PDF readers, such as Adobe Acrobat.
Other Changes
Roughly categorized, not an exhaustive list.
Improvements
- [pdf] Page labels are now included when converting PDF -> EPUB
- [pdf] When generating appearances for Widgets, only use a font if it can represent all of the glyphs that are meant to be drawn in the widget.
- [pdf] Adjusted XFDF import of Widgets to not be dependent on the position of elements within the XFDF document.
- [xod] Added logic to upsample the smaller of the soft mask or associated image when converting to XPS/XOD. This allows us to export the entire image as RGBA, which greatly improves rendering performance and memory usage.
- [pdf] Updated Annot.Flatten and ElementBuilder.CreateForm to have complete support for nozoom, norotate and sticky note annotations.
- [pdf] Improved FieldIterator support for invalid/null/free Field entries.
- [pdf] Updated FDFUpdate to be less strict about certain differences in the XFDF. This allows it to maintain original annotation appearances more often.
- [pdf] Added support for multi-select list boxes when exporting and importing XFDF.
- [xod] Added an option for image smoothing in XOD. This is important to allow XOD to exactly match PDF rendering.
- [pdf] FileAttachment annotations can now be imported from XFDF.
- [pdf] Can now initialize the SDK with a full license key after initializing with an empty key within the same session.
- [xps|office] Optimization for finding the zip signature in damaged zip files/non-zip files. About 1000 times faster for these cases.
- [office] Added support for balanced column layouts.
- [office] Added support for images with the 3D camera rotation properties.
- [office] Added support for embedded hyperlinks, they are not converted to the equivalent PDF annotation.
- [office] Added support for clipping content within text box and table cell.
- [xlsx] Added support for diagonal cell decorations.
- [office] Added support for extended cell border styles.
- [xlsx] Improved memory usage for sheets with large numbers of columns and/or rows
Fixes
- [pdf] Fixed a potential crash when importing XFDF Widgets.
- [pdf] Fixed a potential race condition when running PDF/A conversion in multiple threads.
- [pdf] Fixed a crash exporting XFDF on very specific PDF files.
- [pdf] More lenient handling of oddly formed floating point numbers.
- [pdf] Fix for issue where importing PDF pages was not pulling in OCG layers used only in annotations.
- [pdf] Fixed issue where we could incorrectly identify large glyph indices as UTF16 surrogates.
- [pdf] Improved internal unicode data paths to fully support codepoints off the Basic MultiLingual Plane.
- [pdf] Work around Java string behaviour where an added null terminator could make the string not equal.
- [xod] Adjusted XOD flattening and rendering logic to handle the case where special blend modes are used within transparency groups. Necessary because these cases cannot be easily represented in xod/xps.
- [pdf] Fix for potential performance issue when skipping a lot of nulls at the end of a file.
- [pdf] Fixed XFDF import error, where if an arrow had the xml attribute "end" before "start" the points could be switched around.
- [pdf] Avoided exception from being thrown in XFDF export when encountering zero length action arrays.
- [pdf] Sanitizing metadata strings in PDF/A to avoid erroneously reporting errors when there are trailing nulls.
- [pdf] Fixed a problem in TextExtraction where e_remove_hidden_text would malfunction when the page is rotated.
- [pdf] Fixed a problem in TextExtraction where fully clipped text was not actually skipped.
- [pdf] Fixed a bug in RemoveAppearance where it wouldn't do anything without an appearance state dictionary. This means it would fail for all common annotation types.
- [xod] Annotations appearances are now always included even if the annotation is hidden, so they can be shown by consumers (like WebViewer) when the setting is changed.
- [pdf] Adjusted stamp appearance exporting logic in XFDF to take page rotation into account. This is important to avoid losing image quality when importing and exporting.
- [pdf] Added repair logic for corrupt PDF documents with multiple Field objects with the same name. This is only applied when NeedAppearances = true.
- [pdf] Fixed problem with importing XFDF destinations where some values are treated as default.
- [pdf] Adding logic to remove unused popups when importing XFDF. This could appear as extra invisible annotations in certain viewers.
- [pdf] Adjusted hint stream writing for linearized save to align bytes between sections for embedded thumbnail data.
- [pdf] THead, TBody, TFoot are mapped to nonstruct when converting to PDFA-1. Previously conversion of files containing these would not pass validation for other vendors.
- [pdf] Flattener public API could watermark even if a user had the permission. Now properly handles license permission.
- [pdf] Fixed XFDF Widget Import issues that would typically lead to an exception being thrown.
- [html|epub] Fixed bug where under certain circumstances the same HTML element with the same ID could be injected (malformed HTML).
- [xod] Fixed a problem in PDF to encrypted XOD conversion where the appearance file could be inaccessible from WebViewer.
- [pdf] Sorted out a problem where certain corrupt PDF files would throw exception on Linearized save.
- [pdf] Added support for non-integer intensity for cloudy annotations.
- [pdf] Fix some cases where we would not properly render field highlights with no appearance.
- [pdf] Fix a rare issue with viewer render tiles not being invalidated correctly.
- [pdfview] Fixed an issue where goto actions could scroll the view away from the destination page.
- [pdf] Fixed an issue where temp files would potentially not get cleaned up after XOD creation.
- [pdfview, c++] Fix for potential crash when rendering annotations with 1-pixel bounding boxes.
- [pdfview, c++] Fixed a bug that could cause a refresh loop in some cases involving annotations with the nozoom flag set.
- [pdfview, c++] Fix for annotation edit control not updating correctly on zoom + pan of the document.
- [pdf] Added support for the "Matte" softmask property.
- [pdf] Handle the case where a DeviceN CS is specified as being an NChannel subtype, but is missing the Colorants array.
- [pdf] Fix for isolated cases where the stroke and fill for a softmask should be obtained from the parent context.
- [pdf] Fix for rare crash when rendering content with constant alpha value of 0.
- [pdf] No longer render fileattachment annotations when there is no icon set.
- [OCR] Improved handling of scaling with rotated pages.
- [pdf] Improved internal unicode data paths to fully support codepoints off the Basic MultiLingual Plane
- [pdf] Fix for rare errors when expanding CCIT encoded images on linux.
- [pdf] Improved handling of the "All" separation in some cases when rendering in overprint preview mode.
- [pdf] Fix for bad text extraction in some cases where isolated vertical text lines could improperly change our treatment of the page.
- [CAD] Will now determine the ideal page size automatically in more cases.
- [CAD] Better reporting of error conditions.
- [CAD] PDFs converted from DWG files now convert the page labels.
- [pdf] Improved handling of ttc font files. More complete enumeration of fonts within the collection.
- [pdf] More robust font substitution when dealing with edge cases and non-typical font name formatting.
- [pdfview, c++] Fix for unresponsive behaviour when progressive rendering is disabled.
- [pdfview] Fixed case where GetAnnotationAt() could return incorrect results when handling highlight annotations with multiple quads.
- [pdf] Fix for slight over-clipping of curved shapes which are flush with the edge of a clipping path.
- [pdf] Fix for handling of linearized saves when the Undo/Redo manager is in use.
- [pdf] When using ElementBuilder, now correctly generate CID fonts containing glyphs for codepoints outside the basic Mulilingual Plane.
Office Fixes
- [docx] Improved support for positional tabs.
- [office] Better support for fonts with non-standard name formatting.
- [office] Improved support for incomplete embedded fonts.
- [office] Improved support for symbol fonts.
- [office] Improved support for bullet list with custom bullets.
- [docx] Improved support for east Asian text placement, in particular when grid placement is enabled.
- [xlsx] Fixed bug where certain equations within conditional formatting rules would not be evaluated.
- [docx] Fix for smart art with nested text rotations exceeding 360 degrees.
- [docx] Make use of AlternateContent->fallback content in the case where the primary content cannot be used.
- [docx] A number of fixes for positioning of floating elements within table cells.
- [docx] Improvements to the placement of floating elements anchored to paragraphs.
- [office] Fixes for positioning of floating tables.
- [office] A number of fixes for positioning of floating content in multi-column layouts.
- [office] Improved support for change tracking. Now support style-only changes, changes within bullet lists, and multiple-user changes.
- [docx] Improved handling of first-line indentation in a number of situations.
- [xlsx] Added support for the ISBLANK function.
- [pptx, docx] Many refinements to spacing of vertical placement of text lines, both within and between paragraphs.
- [xlsx] A number of improvements to placement of chart labels, data, and axes.
- [xlsx] Fixed case where empty sheets could cause us to ignore other non-empty sheets in the document.
- [xlsx] Now handle "automatic" cell coloring correctly.
- [docx] Corrected conversion of form checkboxes.
- [pptx] Fixed bug that could apply the default text style to empty lines in some cases.
- [xlsx] Correctly handle the case where the font list has no "count" attribute.
- [xlsx] Multiple improvements to date and number formatting.
- [office] Improved handling of fonts that have a negative line gap (like Courier New).
- [docx] More precise handling of text positioning around floating elements.
- [office] More robust font subsitution handling with text containing unusual whitespace codepoints.
- [office] Fix for incorrectly adding an outline to text with the draw_outline attribute set to 0.
- [docx] Fix for infrequent table layout error that could sometimes skip table rows when breaking across pages.
- [docx] Corrected placement of some headers and footers on even pages.
- [docx] Fix for occasionally placing an empty row at the end of a page when splitting tables across pages.
- [xlsx] Fix for skipping cell borders in isolated cases involving horizontally merged cells.
- [xlsx] Ensure that the page size is sufficient to contain all drawings and charts.
- [xlsx] Fix for incorrect handling of some unicode elements in format strings.
- [doc] Fixed bug that resulted in incorrect enumeration of section properties.
Version 7.0.1 - August 20th, 2019
New Features
- Added utility functions to ComboBoxWidget and ListBoxWidget which simplify reading and editing options. (GetOptions(), ReplaceOptions() and RemoveOption())
Other Changes
Roughly categorized, not an exhaustive list.
Robustness
- [xod] Better support corrupt PDF content streams with mismatched BT and ET entries.
- [xps] Fixed a potential crash when reading JPEG XR files on non-windows platforms.
- [pdf] Fixed an issue with PDFViewCtrl.OpenURL error handling when losing internet connection while download is in progress.
Improvements
- [pdf] Adjusted ElementBuilder.CreateRect to support input rectangles that are not normalized.
- [xps] Added basic detection for proprietary PhotoShop headers that impact jpeg scaling in XPS files.
Bugfixes
- [pdf] Adjusted XFDF import for Form Fields to properly construct missing fields and appearances.
- [pdf] Fixed a problem with DigitalSignatureField.GetDocumentPermissions.
- [pdf] Fixed filled Polyline rendering when there are line beginning/ending styles.
- [pdf] Fixed a problem where per page XFDF export would sometimes not include all of the field attributes.
- [xod] Fixed an uncommon issue where some completely masked graphics would be visible after ToXod conversion.
Version 7.0.0 - July 25th, 2019
New Features
- CAD conversion module and API (`Convert.FromCad`)
- OCR module and API (`OCRModule` class)
- Updated API for Digital Signature creation (`DigitalSignatureField` and `DigitalSignatureIterator` classes).
- Programmatic, low-level Undo/Redo API. (`UndoManager`, `ResultSnapshot` and `DocSnapshot` classes)
- Added an in-memory interface for rendering individual separations. (`PDFDraw.GetSeparationBitmaps `and `PDFRasterizer.RasterizeSeparations`).
- Added extra modes to geometry snapping: snap to point on line, snap to midpoint, and snap to line intersection.
- Added Widget functions to Set/Get Text Color, Font and Font Size.
- New Widget API for form field creation/access. (`TextWidget`, `CheckBoxWidget`, `RadioButtonWidget`, `RadioButtonGroup`, `PushButtonWidget`, `SignatureWidget`, `ListBoxWidget` and `ComboBoxWidget` classes).
- Added an API allowing sound annotations to be created from raw sound data. (`Sound.CreateWithData`).
- New method for easily rotating an annotations appearance by an arbitrary angle.
Changed Behaviour
- ToXod default options have been changed. The XOD default setting for flattening is now `e_high_quality` (previously `e_fast`) and the default setting for line thickening is false. (previously true).
- The HTML2PDF module is now included as part of desktop release packages.
- Unused ConnectToCloud API was removed.
- The GDI+ Rasterizer has been marked as deprecated and will be removed in a future version of PDFNet.
Other Changes
Roughly categorized, not an exhaustive list.
Robustness
- [pdf] Improved error handling when processing JPEG 2000 files.
- [pdf] Handle separation names that are not valid Unicode.
- [pdf] Better recover from errors in initial document loading when JavaScript is enabled.
- [pdf] Fixed a problem where particular JBig2 files could not be completely read.
- [pdf] Better handle corrupt documents consisting of two PDFs stitched together.
- [pdf] More robust handling of temp files and directories with unexpected permissions.
- [xod] Now limit the number of pattern usages before flattening will occur. This is needed to avoid frequently used simple patterns from making very complicated output files.
- [pdf] Updated `ElementWriter` to better support editing of any existing PDF file when used in conjunction with `ElementReader`. (`ElementWriter.SetDefaultGState` and updated `ElementWriter.Begin`).
Improvements
- [pdf] Updated XFDF import to support importing Form Fields, Links and File Attachments.
- [pdf] Output the "All" separation when in separation export mode.
- [xod] Added elements to XOD files to support faux bold (stroked and filled text).
- [pdf] Added better handling for zero-area filled paths.
- [pdf] Improved redaction annotation rendering to support custom attributes used in Acrobat.
- [pdf] Support encrypting files with no user password using AES 256.
- [pdf] Adjusted `RefreshAppearance` for Radio Buttons to produce output similar to other PDF viewers.
- [xod] Adjusted logic so if flattening is not disabled that pages with Knockout or Isolated Transparency groups are flattened.
- [pdf] Updated logic so that the level passed to `PDFNet.SetDefaultFlateCompressionLevel()` will be respected even for image compression. (where the maximum compression setting would generally be used).
- [pdf] Added support for soft masks in PNG and TIFF image export.
- [pdf] Added a dropdown indicator for combo boxes.
- [pdf] Now automatically support arbitrary rotations of rubberstamp annotations.
Optimizations
- [pdf] More efficient handling of empty transparency groups.
- [pdf] Improved performance of `SetDoc` in `PDFview` by asynchronously reading page info.
- [pdf] Lowered memory usage when incrementally saving to stream.
- [pdf] Optimized reading from a file that has been edited.
- [pdf] Optimized parsing of PDF documents with large amounts of whitespace.
Bugfixes
- [pdf] Fixed a bug where `IsModified` can return true after a save when undo redo is used.
- [pdf] Fixed bug where we would fail to save to documents with malformed "Rights enable" dictionaries.
- [pdf] Fixed a bug where we would sometimes mishandle softmasks smaller than their containing group.
- [pdf] Fixed bug where disabling annotation rendering in the viewer would not disable it in thumbnails.
- [pdf] Fix bug in .Net wrapper where exceptions thrown in the `PDFDoc` constructor could crash.
Office
- [xlsx] Added support for "sparkline" charts in xlsx files.
- [xlsx] Added support for the NPER (number of periods) financial function.
- [docx] Now correctly display change-tracked content.
- [xlsx] Now correctly display drawings in sheets that are outside the table bounds.
- [docx] Better support for text frame elements in .docx files.
- [xlsx] Added support for inline strings within table cells.
- [xlsx] Improved behaviour when text within a cell exceeds the horizontal cell bounds.
- [docx] Improved positioning of some forms of rotated images.
- [xlsx] Improved positioning of some forms of rotated images.
- [pptx] Slightly improved handling of text effects.
- [xlsx] Improved positioning category axis legends.
- [docx/pptx] More robust handling of symbol encoded text runs.
- [office] Better handling of oddly named fonts, where the style is part of the name
Older Changelogs
|
|
|