2021 Releases

Docotic.Pdf library help > 2021 Releases

Version 8.4

Dec 29th, 2021

Core library

  • Added the ability to modify the creation and modified dates of PDF documents. Take a look at the new PdfInfo.CreationDate, PdfInfo.ModifiedDate, XmpBasicSchema.CreateDate, XmpBasicSchema.ModifyDate, XmpBasicSchema.MetadataDate, XmpPdfSchema.CreationDate, and XmpPdfSchema.ModifiedDate setters.
  • Added the ability to compare XMP metadata. Take a look at the new XmpMetadata.IsEqualTo() group of methods.
  • Added the ability to explicitly synchronize values in XMP Metadata and Document Info. Take a look at the new PdfDocument.SyncMetadata(Boolean) method. The library does the same synchronization implicitly when saving documents except for cases when MetadataSyncMode in save options is equal to PdfMetadataSyncMode.DoNotSync.
  • Added the ability to check whether XMP metadata should be embedded when saving the document. Take a look at the new XmpMetadata.ShouldBeEmbedded() method.
  • Added the ability to detach XMP metadata embedded in the document from its catalog and clear all metadata properties in all schemas. Take a look at the new XmpMetadata.Unembed() method.
  • Added the ability to control if some metadata fields should be updated when saving the document. Take a look at the new properties: PdfSaveOptions.UpdateCreator, PdfSaveOptions.UpdateProducer, PdfSaveOptions.UpdateCreationDate, and PdfSaveOptions.UpdateModifiedDate.
  • Added the ability to access low-level Document Info dictionary. Look at the new PdfInfo.Dictionary property. This property helps to read and modify custom metadata.
  • Added the ability to test whether any portion of a given rectangle fits into a clip region. Take a look at the new PdfClipRegion.IsVisible(PdfRectangle) method. This method helps to detect whether PdfPaintedImage or PdfTextData objects are visible on a page.
  • Added the ability to test whether document uses object streams. Take a look at the new PdfDocument.UsesObjectStreams property.
  • Added public default constructor to PdfSaveOptions.
  • Added the ability to specify save options explicitly when saving a document. Take a look at the new overloads for PdfDocument.Save() and PdfDocument.SignAndSave() methods.
  • Improved and extended the ability to set up border and appearance properties for certain widgets. Look at the new PdfMarker, PdfColoredMarker classes and the new properties: PdfActionArea.Border, PdfControl.Border, PdfEllipseAnnotation.Marker, PdfFreeTextAnnotation.Border, PdfInkAnnotation.Marker, PdfLineAnnotation.Marker, PdfPolygonAnnotation.Marker, PdfPolylineAnnotation.Marker, PdfRectangleAnnotation.Marker.
  • Breaking change: PdfInfo properties now return null if there is no value specified. This change affects the following properties: PdfInfo.Author, PdfInfo.Creator, PdfInfo.Keywords, PdfInfo.Producer, PdfInfo.Subject, PdfInfo.Title. Previously these properties returned an empty string when there was no value specified.
  • The following properties are marked obsolete (and will be removed in the next release of Docotic.Pdf): PdfActionArea.BorderDashPattern (use PdfActionArea.Border instead), PdfActionArea.BorderColor (use PdfActionArea.Border instead), PdfControl.BorderColor (use PdfControl.Border instead), PdfComboBox.ShowBorder (use PdfControl.Border instead), PdfListBox.ShowBorder (use PdfControl.Border instead), PdfTextBox.ShowBorder (use PdfControl.Border instead), PdfWidget.HasBorder (use Border or Marker property for eligible widgets and controls instead), PdfSaveOptions.MetadataSyncMode (use PdfDocument.SyncMetadata method instead), PdfDocument.SaveOptions (create and use PdfSaveOptions instances with one of the new Save and SignAndSave overloads instead). Also marked PdfMetadataSyncMode enumeration obsolete (it won't be used anywhere when PdfSaveOptions.MetadataSyncMode is removed).
  • The library no longer sets modified date to the current time during metadata synchronization. Previously, it might have happened in some cases.
  • Improved the parsing of PDFs with broken or incorrect structures.
  • Improved quality of text to path conversion in PdfPage.GetObjects(PdfObjectExtractionOptions) method when PdfObjectExtractionOptions.ExtractTextAsPath property is true.
  • Fixed inconsistencies between Document Info and XMP properties in saved documents.
  • This version fixed inconsistencies in metadata synchronization. Read the documentation to PdfDocument.SyncMetadata(Boolean) method for more information about how the synchronization works and what gets synchronized.
  • Fixed metadata processing for files without a Document Info dictionary.
  • Fixed bugs related to drawing and extraction of 32bpp RGB images without alpha channel.
  • Fixed bugs related to loading certificates from certificate stores.
  • Fixed bugs related to opening of documents with inconsistent EncryptMetadata properties.
  • Fixed bugs related to reading and writing of date values.
  • Fixed bugs related to encrypting documents when PdfStandardEncryptionHandler.EncryptMetadata or PdfPublicKeyEncryptionHandler.EncryptMetadata properties are false.
  • Fixed bugs related to appending of documents with outlines.
  • Fixed bugs related to parsing of outlines.
  • Fixed bugs related to text extraction.
  • Fixed bugs related to license validation.
  • Fixed bugs related to comparing documents.
  • Fixed bugs related to importing of JPEG images.

HTML to PDF add-on (on NuGet)

  • Updated to work with the current core library version.

GDI add-on (on NuGet)

  • Updated to work with the current core library version.

Version 8.3

Oct 20th, 2021

Core library

  • Improved the speed of processing for pages that use color profiles.
  • Removed PdfPage.AutoCreateUriActions property previously marked as obsolete.
  • Reduced number of log messages and lowered severity for some of them. Reworded the messages to make them more clear and meaningful.
  • Fixed bugs related to huge memory consumption during processing of PDF pages.
  • Fixed bugs related to decoding of documents encrypted with AES-256 PDF 2.0.
  • Fixed bugs related to appending of documents with outlines.
  • Fixed bugs related to drawing of text with non-embedded fonts.
  • Fixed bugs related to text extraction.

HTML to PDF add-on (on NuGet)

GDI add-on (on NuGet)

  • Updated to work with the current core library version.

Version 8.2

Oct 6th, 2021

Core library

  • Added ability to remove paths drawn on a PDF page. Look at the new PdfPage.RemovePaths(Predicate<PdfPath>) method and the new Remove paths from PDF documents in C# and VB.NET sample.
  • Added ability to remove images painted on a PDF page. Look at the new PdfPage.RemovePaintedImages(Predicate<PdfPaintedImage>) method and the new Remove painted images from PDF documents in C# and VB.NET sample.
  • Added ability to specify custom fallback font provider. The library uses a fallback font provider when PdfConfigurationOptions.FontLoader can not load font bytes for a non-embedded font. Take a look at the new PdfConfigurationOptions.FallbackFontProvider property.
  • Added support for composite layers also known as optional content membership dictionaries. Look at the new PdfCompositeLayer class.
  • Added ability to read PDF/X standard conformance level. Check the new PdfDocument.GetPdfxConformance() method.
  • Added ability to determine if a page uses overprinting for any of its painting operations. Take a look at the new PdfPage.HasOverprint() method.
  • Added ability to save whole PDF files or individual PDF pages as CMYK images. Take a look at the new ImageCompressionOptions.CreateCmykJpeg() and ImageCompressionOptions.CreateCmykTiff() methods.
  • Added ability to specify JPEG compression quality in image compression options. Take a look at the new overloads for ImageCompressionOptions.CreateJpeg() and ImageCompressionOptions.CreateGrayscaleJpeg() methods.
  • Now the library parses actions in action areas lazily. And it is no longer changes action area structures when parsing them.
  • Breaking change: PdfPageObject.Layer, PdfXObject.Layer, and PdfWidget.Layer properties now return PdfLayerBase type. The returned object can be of one of the following two types: PdfLayer or PdfCompositeLayer.
  • PdfPage.AutoCreateUriActions property is marked obsolete (and will be removed in the next release of Docotic.Pdf). Please use PdfDocument.AutoCreateUriActions property instead.
  • Clarified the documentation for PdfSaveOptions.ProducePdfA property.
  • Breaking change: Changes to the PdfSaveOptions.Version property value no longer cause immediate changes of the PdfDocument.Version property value. And any changes to the document no longer affect the PdfSaveOptions.Version property value.
  • Breaking change: PdfFont.Unembed() method no longer fails if PdfSaveOptions.ProducePdfA is true. See the updated documentation for the PdfFont.Unembed method.
  • Fixed bugs related to numeric overflow in SystemFontLoader and DirectoryFontLoader classes.
  • Improved error handling in PdfSigningOptions class.
  • Fixed bugs related to LZW decoding.
  • Fixed bugs related to parsing of fonts.
  • Fixed bugs related to parsing of text output using an undefined font.
  • Fixed bugs related to parsing of inline images.
  • Fixed bugs related to restoring state of a page canvas.
  • Fixed bugs related to extraction of images.
  • Fixed bugs related to processing of images encoded with CCITT Group Fax 3.
  • Fixed bugs related to processing of layers.
  • Fixed bugs related to drawing of documents with 4bpp RGB images.
  • Fixed bugs related to drawing of text with non-embedded fonts.
  • Fixed bugs related to overprinting simulation.
  • Fixed bugs related to text extraction.
  • Fixed bugs related to merging of documents.
  • Fixed bugs related to copying of document pages.
  • Fixed bugs related to huge memory consumption during processing of PDF pages.
  • Fixed bugs in PdfFont.FixEncoding() method.
  • Fixed bugs related to adding child outline items.
  • Fixed processing of strings containing characters with codes less than 255.

HTML to PDF add-on (on NuGet)

  • Added ability to use a pre-installed Chromium. And the ability to change the location of the auto-downloaded Chromium. Take a look at the new HtmlEngineOptions.Path property.
  • Added ability to process HTML without a sandbox. Look at the new HtmlEngineOptions.UseSandbox property.
  • Added ability to specify header and footer templates. Take a look at the new PdfPageOptions.HeaderTemplate and PdfPageOptions.FooterTemplate properties and the new Convert HTML to PDF with header and footer in C# or VB.NET sample.
  • Updated to use Chromium 92.0.4512.0.
  • Updated to work with the current core library version.

GDI add-on (on NuGet)

  • Updated to work with the current core library version.

Version 8.1

Jul 8th, 2021

Version 8.0

March 15th, 2021

  • The library no longer depends on System.Drawing and GDI+. In effect, the library no longer uses System.Drawing or GDI+ for any of its functionality.
  • You can use BitMiracle.Docotic.Pdf.Gdi add-on for interoperability with types from the System.Drawing namespace (e.g. drawing on System.Drawing.Graphics). The add-on is also available in the zip we distribute from our site.
  • Added support for OpenType CFF fonts to PdfDocument.AddFont() and PdfDocument.AddFontFromFile() methods.
  • Added ability to create Ink annotations using the new PdfPage.AddInkAnnotation(PdfRectangle, PdfColor) method. Added new methods and properties to the PdfInkAnnotation class.
  • Added ability to set a string to use as the signature creator name. See the new PdfSigningOptions.Creator property.
  • Added new SystemFontLoader class. It is an implementation of the IFontLoader interface that loads font bytes from well-known system font folders.
  • The default value for PdfConfigurationOptions.FontLoader property changed to SystemFontLoader. In some rare cases, this can change the way a PDF is rendered to text or an image.
  • Improved decryption of public key protected documents.
  • Improved the parsing of PDFs with broken or incorrect structures.
  • Improved extraction of text bounds from files produced by broken PDF generators.
  • The library now opens documents faster.
  • DirectoryFontLoader now works faster for directories with a large number of fonts.
  • Clarified documentation for PdfConfigurationOptions.
  • Removed all methods, properties, constructors, and types previously marked as obsolete.

Version 7.5

February 5th, 2021

  • Added 2021 Encryption API migration guide.
  • Added ability to inspect, encrypt, and decrypt documents protected with Public-Key Security Handlers. You would need a corresponding certificate to process such documents.
  • Added ability to create launch actions. Take a look at the new CreateLaunchAction(String) method.
  • Added ability to extract right-to-left and bidirectional text in the correct order. PdfDocument.GetText(), PdfDocument.GetTextWithFormatting(), PdfPage.GetText(), PdfPage.GetTextWithFormatting(), and PdfCanvas.GetText() methods now extract text according to the logical order. From now on, these methods also normalize Hebrew and Arabic codepoints from Alphabetic and Arabic Presentation Forms.
  • Added new PdfTextData.GetText() methods. These methods allows you to extract right-to-left and bidirectional text according to the logical order.
  • Added new Create PDF document from a Blazor WebAssembly application sample.
  • Added new classes for encryption purposes: base PdfEncryptionHandler, PdfStandardEncryptionHandler for encrypting document with passwords, and PdfPublicKeyEncryptionHandler for encrypting documents with certificates.
  • Added new classes for decryption purposes: base PdfDecryptionHandler, PdfStandardDecryptionHandler for password-protected documents, and PdfPublicKeyDecryptionHandler for public key protected documents.
  • Added new classes for inspection of encrypted PDFs: base PdfEncryptionInfo, PdfStandardEncryptionInfo for password-protected documents, and PdfPublicKeyEncryptionInfo for public key protected documents.
  • Added new PdfRecipientInfo class that provides information about recipients (certificates) allowed to open a public key protected document.
  • Added new PdfPermissionsInfo class and PdfDocument.GrantedPermissions property that provides read-only information about granted PDF access permissions.
  • Added new PdfDocument constructors that accept PdfDecryptionHandler as one of the parameters: PdfDocument(String, PdfDecryptionHandler), PdfDocument(Stream, PdfDecryptionHandler), PdfDocument(String, PdfDecryptionHandler, PdfConfigurationOptions), PdfDocument(Stream, PdfDecryptionHandler, PdfConfigurationOptions). Use these new constructors to open encrypted documents.
  • Added new overloads for PdfDocument.DocumentsAreEqual method. The new overloads accept PdfDecryptionHandler as one of their parameters: PdfDocument.DocumentsAreEqual(String, String), PdfDocument.DocumentsAreEqual(Stream, Stream), PdfDocument.DocumentsAreEqual(String, String, PdfDecryptionHandler), PdfDocument.DocumentsAreEqual(Stream, Stream, PdfDecryptionHandler), PdfDocument.DocumentsAreEqual(Stream, Stream, PdfDecryptionHandler, PdfConfigurationOptions).
  • Added new overloads for PdfDocument.Append method. The new overloads accept PdfDecryptionHandler as one of their parameters: PdfDocument.Append(String, PdfDecryptionHandler), PdfDocument.Append(Stream, PdfDecryptionHandler).
  • Added new PdfDocument.GetEncryptionInfo methods: PdfDocument.GetEncryptionInfo(String), PdfDocument.GetEncryptionInfo(String, PdfConfigurationOptions), PdfDocument.GetEncryptionInfo(Stream), PdfDocument.GetEncryptionInfo(Stream, PdfConfigurationOptions). Use these methods to find out if a document is encrypted, how it was encrypted and what permissions were granted for the document.
  • Added new PdfSaveOptions.EncryptionHandler property. The encryption handler is for encrypting the output PDF.
  • Added new XmpMetadata.Save() methods for saving XMP metadata to a file or a stream.
  • Added new GetApplicationInfo() method. This method returns the information we use to create Application License keys.
  • Added ability to create instances of PdfPermissions class.
  • Added new Open PDF document encrypted with a certificate and Protect PDF document with a certificate sample codes that show how to encrypt and decrypt documents using certificates.
  • All PdfDocument constructors that accept password string as one of their parameters are marked obsolete (and will be removed in the next release of Docotic.Pdf). Please use one of the new constructors with parameter of PdfDecryptionHandler type instead.
  • All PdfDocument.Open methods are marked obsolete (and will be removed in the next release of Docotic.Pdf). Please use one of the constructors instead.
  • The following PdfDocument.DocumentsAreEqual method overloads are marked obsolete (and will be removed in the next release of Docotic.Pdf): PdfDocument.DocumentsAreEqual(string, string, string), PdfDocument.DocumentsAreEqual(byte[], byte[], string), PdfDocument.DocumentsAreEqual(System.IO.Stream, System.IO.Stream, string), PdfDocument.DocumentsAreEqual(System.IO.Stream, System.IO.Stream, string, PdfConfigurationOptions). Instead of them, please use one of the overloads that has a parameter of PdfDecryptionHandler type.
  • The following PdfDocument.Append method overloads are marked obsolete (and will be removed in the next release of Docotic.Pdf): PdfDocument.Append(string, string), PdfDocument.Append(System.IO.Stream, string), PdfDocument.Append(byte[], string). Instead of them, please use one of the overloads that has a parameter of PdfDecryptionHandler type.
  • All PdfDocument.IsPasswordProtected methods are marked obsolete (and will be removed in the next release of Docotic.Pdf). Please use one of the PdfDocument.GetEncryptionInfo() methods instead.
  • PdfDocument.OwnerPassword and PdfDocument.UserPassword properties are marked obsolete (and will be removed in the next release of Docotic.Pdf). Instead of using them, please assign an instance of PdfStandardEncryptionHandler to PdfSaveOptions.EncryptionHandler property. You can use properties of the handler to setup passwords and permissions.
  • PdfDocument.Encryption and PdfDocument.Permissions properties are marked obsolete (and will be removed in the next release of Docotic.Pdf). Instead of using them, please use PdfSaveOptions.EncryptionHandler property if you are going to create an encrypted document. Or use one of the PdfDocument.GetEncryptionInfo() methods and PdfDocument.GrantedPermissions property if you would like to inspect properties of an already encrypted document.
  • PdfDocument.Error event and PdfErrorEventArgs class are marked obsolete (and will be removed in the next release of Docotic.Pdf). To receive notifications about errors, use a log listener. If you use NLog, please consider using the MethodCall target (https://github.com/NLog/NLog/wiki/MethodCall-target).
  • PdfSaveOptions.WriteEncrypted property is marked obsolete (and will be removed in the next release of Docotic.Pdf). This property is always false.
  • All XmpMetadata.Extract methods are marked obsolete (and will be removed in the next release of Docotic.Pdf). To achieve the same, please open a document explicitly and then save its metadata using one of the new Save() methods.
  • PdfTextData.Text property is marked obsolete (and will be removed in the next release of Docotic.Pdf). Please use PdfTextData.GetText() methods instead.
  • The values of PdfDocument.OwnerPassword, PdfDocument.UserPassword, PdfDocument.Encryption, and PdfDocument.Permissions are not used while saving an encrypted document, if the value of the PdfSaveOptions.EncryptionHandler property is not null.
  • When drawing documents with FitSize scaling mode, the result now covers area with the desired size in all cases. Previously, it was not the case when the desired size was larger than the actual page size.
  • Improved speed of processing for broken content streams.
  • Improved license validation for Visual Studio test runners.
  • Improved extraction of plain and formatted text. Improved extraction of text from column-based and tabular layouts. Decreased size of extracted text by removing unnecessary lines and trimming whitespaces.
  • Improved parsing of PDFs with broken or incorrect structure.
  • Updated Check if PDF document is password protected, Set up PDF permissions, Protect PDF document with AES, and Encrypt PDF with a password sample codes to use the new encryption API.
  • Updated Draw PDF page on Graphics in C# and VB.NET sample code to support negative font sizes.
  • Updated Find and highlight text in PDF document sample code to support searching of right-to-left words.
  • PdfCanvas.SaveState() and PdfCanvas.RestoreState() methods now take PdfCanvas.TextAngle property into account.
  • Fixed drawing of PDF documents with very large text.
  • Fixed bugs related to using Docotic.Pdf from Blazor WASM projects.
  • Fixed bugs related to text extraction.
  • Fixed bugs related to recovering encodings for Type0 fonts.
  • Fixed bugs related to parsing of actions.
  • Fixed bugs related to parsing of fonts.
  • Fixed bugs related to editing of listboxes.
  • Fixed bugs related to editing of text markup annotations.
  • Fixed bugs related to opening of documents.
  • Fixed bugs related to drawing of documents with patterns.
  • Fixed bugs related to importing of semi-transparent JPEG-in-TIFF images.
  • PdfPage methods like PdfPage.GetWords() or PdfPage.Save() no longer implicitly modify state of the page canvas.

Previous releases