Version history
Version 8.8
Nov 30th, 2022
Core library
-
Added new
PdfPage.MergeContentStreams()
method that merges page content streams. This method helps to reduce file size
when document pages use multiple associated content streams.
-
Added the ability to create 3D views. Look at the new
PdfDocument.Create3dView(String)
method.
-
Added new
Pdf3dAnnotation.Name
property.
-
Added new
Pdf3dView.TransformationSource,
Pdf3dView.CenterOfOrbit,
Pdf3dView.Projection,
Pdf3dView.LightingStyle
properties and
Pdf3dView.GetCameraToWorldTransformation(),
Pdf3dView.SetCameraToWorldTransformation(Double[]),
Pdf3dView.GetU3dPath(),
Pdf3dView.SetU3dPath(String[])
methods.
-
Added new PDF/A conformance levels to
PdfaConformance
enumeration.
-
Added ability to modify
Pdf3dStream.Views
collection.
-
Added the ability check where a PDF font can be safely unembedded. Look at the new
PdfFont.IsAvailableThroughLoader(),
PdfFont.IsBuiltIn()
methods and the updated
Compress PDF document in .NET
sample.
-
From now on,
PdfDocument.CopyPages()
and
PdfDocument.ExtractPages()
methods preserve structure information for copied pages.
-
From now on,
PdfDocument.ReplaceDuplicateObjects()
methods can also replace duplicate form XObjects with the first duplicate.
-
From now on,
PdfDocument.Save()
and
PdfDocument.SignAndSave()
methods ignore the value of the
PdfSaveOptions.UseObjectStreams
property when
PdfSaveOptions.ProducePdfA
is true. Object streams are not allowed in PDF/A documents.
-
PdfDocument.CreateXObject()
method no longer adds Helvetica font to the document.
-
Breaking change: Now
Pdf3dStream.Views
property returns
PdfList<Pdf3dView>
instead of
PdfCollection<Pdf3dView>.
-
Breaking change:
PdfDocument.CreateXObject()
methods no longer sets default brush and pen colors on the created XObject canvas.
You can set colors explicitly if you need the old behavior.
-
Improved speed and decreased memory consumption during execution of
PdfPage.GetPaintedImages(),
PdfPage.RemovePaintedImages(Predicate<PdfPaintedImage>),
and
PdfPage.RemovePaths(Predicate<PdfPath>)
methods.
-
Improved merging of documents with structure information.
-
Improved removing of structure information.
-
Appending a document can no longer change the value of PdfDocument.UsesObjectStreams property.
-
Removed the following methods and properties of ImageCompressionOptions class
previously marked as obsolete:
TileWidth,
TileHeight,
BitonalConversionThreshold,
JpegQuality,
CreateGrayscalePng(),
CreateJpeg(int),
CreateCmykJpeg(),
CreateCmykJpeg(int),
CreateGrayscaleJpeg(),
CreateGrayscaleJpeg(int),
CreateTiledTiff(int, int),
CreateCmykTiff(),
CreateGrayscaleTiff(),
CreateBitonalTiff(),
CreateBitonalTiff(int).
-
Fixed bugs in
PdfSignatureContents.CheckHasEmbeddedOcsp()
and
PdfSignatureContents.CheckHasEmbeddedCrl()
methods.
-
Fixed bugs in
PdfPage.GetImages()
methods.
- Fixed bugs related to decoding of CCITT (fax) images.
- Fixed bugs related to drawing of widgets.
- Fixed bugs related to loading of bytes for non-embedded fonts.
- Fixed bugs related to moving inline images to resources.
- Fixed bugs related to naming of fonts.
- Fixed bugs related to parsing and appending of PDF documents.
- Fixed bugs related to replacing duplicate objects.
- Fixed bugs related to text extraction.
- Updated to work with the current core library version.
- Updated to work with the current core library version.
Version 8.7
Oct 11th, 2022
Core library
-
Added the ability to remove unused glyphs from existing PDF fonts.
Look at the new
PdfDocument.RemoveUnusedFontGlyphs()
methods. The PdfFont.RemoveUnusedGlyphs()
method now also works for existing PDF fonts.
-
Added the ability to specify an options for PDF merging.
Look at the new
PdfDocument.Append(String, PdfDecryptionHandler, PdfMergingOptions),
PdfDocument.Append(Stream, PdfDecryptionHandler, PdfMergingOptions)
methods and
PdfMergingOptions class.
-
Added the ability to specify a custom handler for glyphs
that cannot be drawn when measuring text. Look at the new
PdfCanvas.GetTextWidth(String, PdfMissingGlyphMapper)
and
PdfCanvas.MeasureText(String, PdfMissingGlyphMapper)
methods.
-
Added the ability to draw and extract images with 4-bit soft masks.
-
Added the ability to save PDF pages as uncompressed raster bytes in RGB,
Gray-scale, and CMYK color spaces with an optional alpha channel.
Please take a look at the new
ImageCompressionOptions.CreateUncompressed()
method.
-
Added the ability to retrieving the size of the image produced by a
PdfPage.Save call. Take a look at the new
PdfDrawOptions.GetOutputWidth(PdfPage)
and
PdfDrawOptions.GetOutputHeight(PdfPage)
methods.
-
Added the new Uncompressed value to
PdfDrawFormat.
enumeration.
-
Added the new
PdfSaveOptions.RemoveSignaturePermissions
option. The option is true by default.
-
Added new
Subset PDF fonts in C# and VB.NET
and
Embed PDF fonts in C# and VB.NET
samples.
-
PdfFont.ContainsGlyphsForText(String)
method no longer marks glyphs as used for new OpenType fonts.
-
Breaking change:
PdfDocument.Append()
methods now rename new form fields if the resulting document
contains controls with the same full names.
Previously, form fields were appended "as is" and that produced
inconsistent documents in some cases. You can set
PdfMergingOptions.ControlMergingMode
property to PdfControlMergingMode.Copy value and use
PdfDocument.Append(String, PdfDecryptionHandler, PdfMergingOptions) or
PdfDocument.Append(Stream, PdfDecryptionHandler, PdfMergingOptions)
methods if you need the old behavior.
-
Breaking change:
Now all static methods of
ImageCompressionOptions
class return instances of types derived from
ImageCompressionOptions instead of ImageCompressionOptions itself.
Take a look at the new
PngImageCompressionOptions,
JpegImageCompressionOptions,
TiffImageCompressionOptions,
and
UncompressedRasterOptions
classes.
-
The following methods and properties of ImageCompressionOptions class
are marked obsolete and will be removed in the next version of the library:
TileWidth,
TileHeight,
BitonalConversionThreshold,
JpegQuality,
CreateGrayscalePng(),
CreateJpeg(int),
CreateCmykJpeg(),
CreateCmykJpeg(int),
CreateGrayscaleJpeg(),
CreateGrayscaleJpeg(int),
CreateTiledTiff(int, int),
CreateCmykTiff(),
CreateGrayscaleTiff(),
CreateBitonalTiff(),
CreateBitonalTiff(int).
Please use properties and methods in types derived from
ImageCompressionOptions instead.
-
The default value for PdfSaveOptions.UseObjectStreams
property changed to true. This means that now the library packs
objects into compressed object streams by default. This helps
to produce smaller output files but will require Adobe Reader 6
released in 2003 or newer to view produced PDF files. You can set this property
to false to get the previous default behaviour.
-
Improved processing of PDF documents encrypted using RC4 or AES-128 algorithms
with Unicode passwords.
- Improved replacing of duplicate objects.
- Improved resizing of very large images.
- Improved text size calculation.
- Improved copying of PDF pages.
- Improved speed of image extraction from PDF document.
-
Improved the parsing of PDFs with broken or incorrect structures.
- Improved speed and decreased memory consumption during processing of PDF pages.
-
Removed PdfCanvas.DrawString(byte[]) and PdfTextData.GetCharacterCodes()
methods previously marked as obsolete.
-
Fixed bugs in
PdfFont.FixEncoding()
method.
- Fixed bugs related to drawing of text.
- Fixed bugs related to getting PDF fonts.
- Fixed bugs related to measuring text.
- Fixed bugs related to removing unused font glyphs.
- Fixed bugs related to renaming PDF controls.
- Fixed bugs related to removing unused resources.
- Fixed bugs related to replacing duplicate objects.
- Fixed bugs related to protecting documents with public keys.
- Fixed bugs related to unembedding fonts.
- Updated to use Chromium 100.0.4889.0.
- Updated to work with the current core library version.
- Updated to work with the current core library version.
Version 8.6
Jun 13th, 2022
Core library
-
Added the ability to convert PDF text to images. Look at the new
PdfTextRasterizer
class.
-
Added the ability to specify a custom handler for unmapped
character codes. The library uses the handler during text
extraction when the PDF file does not define a mapping
from a character to its Unicode value. Look at the new
PdfTextExtractionOptions.UnmappedCharacterCodeHandler
property and
Fix garbled text when extracting from PDF documents
sample.
-
Added the ability to specify a custom handler for glyphs
that cannot be drawn. The library uses the handler during text
drawing when a current PDF font does not contain definition
for some glyph. Look at the new
PdfStringDrawingOptions.MissingGlyphHandler
and
PdfTextDrawingOptions.MissingGlyphHandler
properties.
-
Added the ability to extract and copy painted Form XObjects. Look at the new
PdfObjectExtractionOptions.FlattenXObjects
property, PdfPaintedXObject
class and the updated
Copy text, paths and images between PDF pages
sample.
-
Added the ability to extract blend mode with page objects. Look at the new
PdfTextData.BlendMode,
PdfPath.BlendMode,
PdfPaintedImage.BlendMode, and
PdfPaintedXObject.BlendMode
properties and the updated
Copy text, paths and images between PDF pages
sample.
-
Added new properties to
PdfXObject
class. Look at the new
PdfXObject.Id,
PdfXObject.BoundingBox,
PdfXObject.Matrix, and
PdfXObject.Group
properties.
-
Added the ability to read and modify the transparency group for PDF pages.
Look at the new
PdfPage.Group
property.
-
Added new
Edit PDF page content
and
Convert SVG to PDF
samples.
-
From now on, PdfPage.GetObjects()
methods return invisible paths.
-
Breaking change:
PdfPage.GetObjects()
methods no longer return page objects from XObjects by default. They return
PdfPaintedXObject
objects instead. You can set
PdfObjectExtractionOptions.FlattenXObjects
property to true if you need the old behavior.
-
PdfCanvas.DrawString(byte[]) method is marked as obsolete. Use
PdfCanvas.DrawString(IEnumerable<PdfCharacterCode>)
method instead.
-
PdfTextData.GetCharacterCodes() method is marked as obsolete. Use
PdfTextData.GetCharCodes()
method instead.
-
Improved the parsing of PDFs with broken or incorrect structures.
- Improved processing of auto-size text boxes.
-
Improved the library to use less memory and time when
importing PNG images.
-
Improved to use less memory when decoding LZW and Flate
streams with predictors.
-
Improved to support JPEG images with the undefined EXIF Orientation tag 0.
-
Improved error handling in
PdfCanvas.DrawText(String, PdfTextDrawingOptions)
method.
-
Improved text height calculations for text in files produced by broken PDF generators.
-
When drawing a text using a Type3 font, the library uses
less time, memory, and streams.
-
Reduced the number of streams required to process a document
with inline images.
-
Reduced the amount of memory required to deflate a stream.
-
Removed PdfCanvas.DrawString, PdfCanvas.DrawText, PdfPaintedImage.SaveAsPainted
methods and PdfSignatureContents.Timestamp property previously marked as obsolete.
-
Now throwing only required exceptions when running in a restricted environment.
-
Now allowing import of a rotated JPEG when the resulting
image can contain artifacts on one or more of its sides.
- Fixed bugs related to drawing of form XObjects.
-
Fixed bugs in
PdfFont.RemoveUnusedGlyphs()
method. Now it properly handles OpenType fonts with 'cmap' subtables in format 12.
-
Fixed bugs related to processing of text boxes when text contains supplementary code points
in the range U+FFFF..U+10FFFF.
-
Fixed bugs related to drawing of text containing supplementary code points in the range
U+FFFF..U+10FFFF. Such code points are often used to draw emojis.
-
Fixed bugs in
PdfCanvas.DrawString()
methods when
PdfStringDrawingOptions
provides custom character widths.
- Fixed bugs related to drawing of text containing invisible characters.
- Fixed bugs related to drawing of text with created or existing TrueType fonts.
- Fixed bugs related to copying of pages with layers.
-
Fixed bugs related to drawing of multiline text using
PdfCanvas.DrawText(String, PdfTextDrawingOptions)
method.
-
Fixed bugs related to extraction of visible text when
PdfTextExtractionOptions.SkipInvisibleText
property is true.
- Fixed importing of 32-bit JPEG-in-TIFF images without the ExtraSamples tag.
-
Fixed the processing of checkbox states when there is more than
one checkbox in a checkbox field.
-
Fixed the processing of checkbox states when there is more than
one checkbox in a checkbox field.
-
Fixed the processing of radio button states when a radio button
field contains radio buttons with equal export values.
-
Fixed bugs related to parsing of ToUnicode streams.
- Updated to work with the current core library version.
- Fix bugs related to incorrect NuGet dependencies.
- Updated to work with the current core library version.
Version 8.5
Mar 3th, 2022
Core library
-
Added the ability to convert PDF colors to CMYK. Take a look at the new
PdfColor.ToCmyk()
method.
-
Added the ability to read and modify the size of default user space units for PDF pages.
Take a look at the new
PdfPage.UserUnit
property.
-
PdfFont.Unembed()
method no longer changes fonts when the unembedding will lead to an
incorrect PDF document.
-
Added validation of parameters to some public methods.
-
Added the ability to access low-level image streams. Look at the new
PdfImage.Stream
property.
-
Extended
CosStream
implementation with new methods and properties. Added new
CosStreamFilter
enumeration.
-
Added the ability to add CMYK images with alpha channels to documents.
-
Added the ability to specify resolution when saving PDF images as painted.
Look at the new
PdfPaintedImage.SaveAsPainted(String, PdfPaintedImageSavingOptions) and
PdfPaintedImage.SaveAsPainted(Stream, PdfPaintedImageSavingOptions)
methods.
-
Added the ability to retrieve extended properties of a timestamp token
embedded in a signature. Take a look at the new
PdfSignatureContents.GetTimestampToken()
method and
PdfSignatureTimestampToken
type.
-
Added the ability to specify base direction when drawing right-to-left and bidirectional text on
PdfCanvas. Look at the new
PdfCanvas.DrawString(String, PdfStringDrawingOptions),
PdfCanvas.DrawString(Double, Double, String, PdfStringDrawingOptions),
PdfCanvas.DrawString(PdfPoint, String, PdfStringDrawingOptions), and
PdfCanvas.DrawText(String, PdfTextDrawingOptions)
methods and
PdfStringDrawingOptions.ReadingDirection,
PdfTextDrawingOptions.ReadingDirection
properties.
-
PdfCanvas.DrawString(string, ICollection<double>),
PdfCanvas.DrawString(string, ICollection<float>),
PdfCanvas.DrawString(double, double, double, string),
PdfCanvas.DrawString(double, double, double, string, ICollection<double>),
PdfCanvas.DrawString(float, float, float, string, ICollection<float>),
PdfCanvas.DrawString(PdfPoint, double, string), and
PdfCanvas.DrawString(PdfPoint, double, string, ICollection<double>)
methods are marked as obsolete. Use
PdfCanvas.DrawString(String, PdfStringDrawingOptions),
PdfCanvas.DrawString(Double, Double, String, PdfStringDrawingOptions), and
PdfCanvas.DrawString(PdfPoint, String, PdfStringDrawingOptions)
methods instead.
-
PdfCanvas.DrawString(string, PdfRectangle, PdfTextAlign, PdfVerticalAlign),
PdfCanvas.DrawText(string, PdfRectangle, PdfTextAlign, PdfVerticalAlign),
PdfCanvas.DrawText(string, PdfRectangle, PdfTextAlign, PdfVerticalAlign, double), and
PdfCanvas.DrawText(string, PdfRectangle, PdfTextAlign, PdfVerticalAlign, double, bool)
methods are marked as obsolete. Use
PdfCanvas.DrawText(String, PdfTextDrawingOptions)
method instead.
-
PdfPaintedImage.SaveAsPainted(string, PdfExtractedImageFormat) and
PdfPaintedImage.SaveAsPainted(Stream, PdfExtractedImageFormat)
methods are marked obsolete (and will be removed in the next release of Docotic.Pdf). Use
PdfPaintedImage.SaveAsPainted(String, PdfPaintedImageSavingOptions) and
PdfPaintedImage.SaveAsPainted(Stream, PdfPaintedImageSavingOptions)
methods instead.
-
PdfSignatureContents.Timestamp property is marked as obsolete. Use
PdfSignatureContents.GetTimestampToken()
method instead.
-
Improved the parsing of PDFs with broken or incorrect structures.
-
Improved the verification of ECDSA digital signatures.
-
Removed PdfActionArea.BorderColor, PdfActionArea.BorderDashPattern,
PdfComboBox.ShowBorder, PdfControl.BorderColor, PdfListBox.ShowBorder,
PdfTextBox.ShowBorder, PdfWidget.HasBorder, PdfSaveOptions.MetadataSyncMode,
PdfDocument.SaveOptions properties and PdfMetadataSyncMode enum
previously marked as obsolete.
-
From now on, the library only performs automatic synchronization of
Info and XMP metadata when marking output as PDF/A compliant.
- Uncompress()
and RecompressWithFlate()
methods are now allowed for mask images. Clarified documentation for
other recompressing methods in PdfImage class.
-
Fixed the
PdfImage.Compression
property for cases when the image data stream uses two or more compression schemes.
-
Fixed bugs related to processing of PDF pages with the custom size of default user space units.
-
Fixed bugs related to extraction of JPEG images with invalid color profiles.
-
Fixed bugs in JPEG importing code. The library can now correctly add JPEG
images with EXIF Orientation tags to documents.
-
Fixed bugs in
PdfDocument.RemoveUnusedResources()
method.
-
Fixed bugs related to reading of
PdfOutlineItem.Page
and PdfOutlineItem.PageIndex
properties.
- Fixed bugs related to saving of linearized documents.
- Fixed bugs related to text extraction.
- Fixed bugs related to text extraction from rotated pages.
- Fixed bugs related to extraction of text drawn with Type3 fonts.
- Fixed bugs related to calculating text coordinates.
- Fixed bugs related to the decoding of CCITT (fax) images.
- Fixed bugs related to parsing of fonts.
- Updated to work with the current core library version.
-
Fixed bugs related to drawing of documents with blend modes to
Graphics.
- Updated to work with the current core library version.
Previous releases