History of Docotic.Pdf releases in 2017
Version 5.4
November 21st, 2017
Fixed copying of text with invalid or incomplete encoding information. Take a look at the new PdfTextData.GetCharacterCodes and PdfCanvas.DrawString(System.Byte[]) methods and updated Copy text, paths and images sample. You no longer need to use fallback fonts to copy existing text.
Added new PdfFont.ContainsGlyphsForText(String) method that checks whether the font contains all glyphs required to draw the specified text.
Added new PdfDocument.ReplaceDuplicateFonts method that replaces all duplicate fonts with the first duplicate. This method is useful when you are trying to reduce output file size. The method gives good results for documents which were incrementally updated or created by a merge of several documents with the same fonts.
Added new enumeration values PdfaConformance.Pdfa2A, PdfaConformance.Pdfa3A and PdfaConformance.Pdfa4A so that library can properly report PDF/A conformance for newer documents.
Added new enumeration value PdfEncryptionAlgorithm.None.
Added new enumeration value PdfPageLayout.Default. This value can be used when you want Single Page layout but do not want to have layout information in the PDF.
Added new PdfDocument.RemoveWidget(PdfWidget) method that can be used to remove widgets from document.
PdfDocument.Patterns, PdfDocument.PatternCount properties, and PdfDocument.GetPattern(System.Int32) method are marked obsolete (and will be removed in the next release of Docotic.Pdf). Please use PdfDocument.GetPatterns method instead.
PdfDocument.ColorProfiles, PdfDocument.ColorProfileCount properties, and PdfDocument.GetColorProfile(System.Int32) method are marked obsolete (and will be removed in the next release of Docotic.Pdf). Please use PdfDocument.GetColorProfiles method instead.
PdfDocument.Controls, PdfDocument.ControlCount properties, and PdfDocument.GetControl(System.Int32) method are marked obsolete (and will be removed in the next release of Docotic.Pdf). Please use PdfDocument.GetControls method instead.
PdfDocument.Widgets, PdfDocument.WidgetCount properties, and PdfDocument.GetWidget(System.Int32) method are marked obsolete (and will be removed in the next release of Docotic.Pdf). Please use PdfDocument.GetWidgets method instead.
PdfDocument.Images, PdfDocument.ImageCount properties, and PdfDocument.GetImage(System.Int32) method are marked obsolete (and will be removed in the next release of Docotic.Pdf). Please use PdfDocument.GetImages method instead.
PdfPage.Images, PdfPage.ImageCount properties, and PdfPage.GetImage(System.Int32) method are marked obsolete (and will be removed in the next release of Docotic.Pdf). Please use PdfPage.GetImages method instead.
PdfDocument.Actions, PdfDocument.ActionCount properties, and PdfDocument.GetAction(System.Int32) method are marked obsolete (and will be removed in the next release of Docotic.Pdf). Please use PdfDocument.GetActions method instead.
PdfDocument.Fonts, PdfDocument.FontCount properties, and PdfDocument.GetFont(System.Int32) method are marked obsolete (and will be removed in the next release of Docotic.Pdf). Please use PdfDocument.GetFonts method instead.
PdfDocument.Views, PdfDocument.ViewCount properties, and PdfDocument.GetView(System.Int32) method are marked obsolete (and will be removed in the next release of Docotic.Pdf). Please use PdfDocument.GetViews method instead.
Improved import of JPEG images in sRGB and Adobe RGB colorspaces.
Improved formatting of font names for new TrueType fonts.
Improved precision of drawing when document is rendered within small bounding rectangle.
Improved precision of drawing for documents with small rectangles.
Improved parsing of PDFs with broken or incorrect structure.
Fixed bugs related to processing of rotated controls.
Fixed loading of font from read-only file.
Fixed reading and writing of XMP metadata names which contain spaces.
Fixed bugs related to parsing of TrueType fonts.
Version 5.3
August 10th, 2017
Breaking change: Fixed behavior and changed signature of MediaBox, CropBox, BleedBox, TrimBox and ArtBox properties. From now on, the above properties return PdfBox structure, which is expressed in PDF's default user space coordinate system. In default user space the positive Y axis extends vertically upward. Previously these properties returned PdfRectangle structure, which is expressed in PdfPage coordinate system. In PdfPage coordinate system origin is located at the upper-left corner of the page, positive Y axis extends vertically downward. Use PdfBox.ToRectangle(Double) method to map PdfBox structure to PdfRectangle structure. Use PdfBox.FromRectangle(PdfRectangle, Double) method to map PdfRectangle structure to PdfBox structure.
Breaking change: Fixed behavior of some of the PdfDocumentView methods in cases when the instance of PdfDocumentView is used to setup the target view of a PdfRemoteGoToAction object. From now on, the following methods produce destination (document view) that opens the target page with its top edge positioned at the top edge of the viewer's window: PdfDocumentView.SetZoom(Double), PdfDocumentView.SetFitWidth, PdfDocumentView.SetFitBBoxWidth. Previously, the above methods produced remote destinations that incorrectly opened the next page after the target page.
Breaking change: Changed some of the PdfDocumentView methods in order to provide consistent behavior for both PdfGoToAction and PdfRemoteGoToAction. From now on, the following methods expect vertical coordinates relative to the bottom edge of the target page: PdfDocumentView.SetZoom(PdfPoint, Double), PdfDocumentView.SetFitWidth(Double), PdfDocumentView.SetFitRect(BitMiracle.Docotic.Pdf.PdfRectangle), PdfDocumentView.SetFitRect(System.Drawing.RectangleF), PdfDocumentView.SetFitBBoxWidth(Double). Previously, the above methods expected vertical coordinates relative to the top edge of the target page.
Breaking change: PdfDocumentView.Top property is now nullable and relative to the bottom edge of the page. Previously, it was relative to the top edge of the page except of the case when it was used to setup the target view of a PdfRemoteGoToAction object.
PdfDocumentView.SetFitRect(PdfRectangle) and PdfDocumentView.SetFitRect(RectangleF) methods are marked obsolete (and will be removed in the next release of Docotic.Pdf). Please use PdfDocumentView.SetFitRect(PdfBox) method instead.
Added new PdfTextBox.Scrollable property.
Added ability to set mapping name for control. Take a look at the new PdfControl.MappingName property.
Fixed bugs related to creation of XObjects from pages.
Fixed bugs related to parsing of named destinations.
Fixed bugs related to processing of controls that use CJK fonts.
Fixed bugs related to drawing of documents with CJK fonts.
Fixed drawing of PDF documents with hidden controls.
Improved speed of drawing for PDF documents with blend modes and soft masks.
Greatly improved speed of text extraction.
Improved speed of PDF opening.
Improved parsing of PDFs with broken or incorrect structure.
Improved loading of non-embedded fonts.
Improved processing of fonts with incorrect /LastChar property.
Fixed bugs related to importing of PNG images.
Fixed PdfDocument.SaveAsTiff(Stream, PdfDrawOptions) method so that it no longer closes input stream.
Version 5.2
May 14th, 2017
Added support for 16 bit TIFF images. You can now add them to PDFs.
Added ability to extract 16 bit images from documents.
Added error event. You can subscribe to the event and receive notifications when the library detects an error in the PDF document structures and/or when the library can't process the PDF properly for some reason. It's a good idea to send all documents for which this event occurs to Bit Miracle. Take a look at the PdfDocument.Error event for more information.
Added sample code showing how to copy text, images and paths to a new PDF document. Take a look at the new Copy text, paths and images sample.
Added sample code showing how to draw PDF document to multipage TIFF image. Take a look at the new Save PDF as multipage TIFF sample.
Added ability to create text markup annotations. Take a look at the new PdfPage.AddHighlightAnnotation(String, PdfRectangle, PdfColor), PdfPage.AddJaggedUnderlineAnnotation(String, PdfRectangle, PdfColor), PdfPage.AddStrikeoutAnnotation(String, PdfRectangle, PdfColor) and PdfPage.AddUnderlineAnnotation(String, PdfRectangle, PdfColor) methods. Also take a look at the Text markup annotations sample.
Added ability to modify existing text markup annotations. Take a look at the new PdfTextMarkupAnnotation.GetTextBounds and PdfTextMarkupAnnotation.SetTextBounds(IEnumerable<PdfQuadrilateral>) methods. Also take a look at the new PdfTextMarkupAnnotation.Color and PdfTextMarkupAnnotation.Contents properties.
Improved extraction of incorrect images produced by broken PDF generators.
Improved calculation of PdfControl.FullName property for PDFs with broken or incorrect structure.
Improved parsing of PDFs with broken or incorrect structure.
Improved parsing of XMP metadata with incorrect structure.
Improved extraction of words.
Improved drawing of PDF documents with zero line width.
Fixed bugs related to parsing of layers.
Fixed bugs related to extraction of CMYK images.
Version 5.1
February 11th, 2017
Breaking change: the library no longer sets black color in RGB colorspace as the default color of canvas pen and brush. From now on, the default color is black in Gray colorspace (as per PDF specification). This change does not affect document appearance. Please note that contents of the file (internal PDF structures) is affected by the change.
Replaced JPEG 2000 codec with a new, much improved one.
Added ability to recompress images with JPEG 2000 compression. See PdfImage.RecompressWithJpeg2000 methods. These methods recompress images using JPEG 2000 compression either lossless or using specified conversion ratio.
The PdfImageFrame.OutputCompression property can now be set to PdfImageCompression.Jpeg2000. The PdfImageFrame.Jpeg2000CompressionRatio property can be used to specify compression ratio to use while recompressing frame using JPEG 2000 compression.
The PdfImageFrames.SetOutputCompression(PdfImageCompression) method now accepts PdfImageCompression.Jpeg2000 as its parameter. The PdfImageFrames.SetJpeg2000CompressionRatio(Int32) method can be used to specify compression ratio to use while recompressing frames using JPEG 2000 compression.
Added custom exception classes for specific error groups. All the new exception classes are descendants of the PdfException class, so the change is not a breaking one. Here is the list of the new classes: CannotDecryptPdfException, CannotParseFdfException, CannotShowTextException, IncorrectPasswordException, UnexpectedStructureException, UnsupportedFontException, UnsupportedImageException, UnsupportedMetadataException.
Added ability to draw whole PDF document to multipage TIFF image. See PdfDocument.SaveAsTiff methods. These methods produce one TIFF from all pages of a PDF document. The produced TIFF will consist of multiple pages (frames).
Added ability to get fill color of painted mask image. Please take a look at the new PdfPaintedImage.Brush property.
Added ability to extract visible text only. Please take a look at the new PdfTextExtractionOptions.SkipInvisibleText property. Use PdfDocument.GetText(PdfTextExtractionOptions) or PdfPage.GetText(PdfTextExtractionOptions) methods to extract visible text only.
Now page objects contain layer information. Take a look at the new PdfPageObject.Layer property.
Upon opening existing documents the value of PdfDocument.Encryption property is the encryption algorithm used to protect the document.
Extend PdfPenInfo class. Take a look at the new PdfPenInfo.DashPattern, PdfPenInfo.EndCap, PdfPenInfo.LineJoin and PdfPenInfo.MiterLimit properties.
PdfCanvas.MiterLimit property is marked obsolete (and will be removed in the next release of Docotic.Pdf). Please use PdfPen.MiterLimit property instead.
Improved LZW decoder so it can handle improperly encoded streams.
Improved speed of drawing for PDF documents with transparency groups and blend modes.
Improved parsing of PDFs with broken or incorrect structure.
Improved calculation of PdfControl.FullName property.
Fixed bugs related to copying and extraction of pages from documents with layers.
Fixed bugs related to creation of XObjects from pages.
Fixed bugs related to processing of stitching (Type 3) functions.
Fixed bugs related to processing of shadings.
Fixed bugs related to drawing of documents with dash patterns.
Fixed bugs related to drawing of documents with shadings.
Fixed bugs related to drawing and extraction of rotated widgets.
Fixed bugs related to drawing of documents with invalid ToUnicode streams.
Fixed bugs related to loading of font bytes for non-embedded Type0 fonts.
Fixed bugs related to grayscale OJpeg-in-Tiff images.
Fixed bugs related to extraction of JPEG 2000 images.
Fixed bugs related to extraction of JBig2 images.
Fixed bugs related to extraction of images with L*a*b* colors.
Fixed bugs related to extraction of FDF data.
Fixed bugs related to parsing of XMP metadata.