============================= PDFlib 9.3.1 (March 30, 2021) ============================= - 2021-03-30 (bug #6921) The PDFlib PHP packages contained an incorrect shared library for PHP 8. - 2021-03-29 (feature #2799) Avoid the dependency on an external font for checkbox and radiobutton form fields. - 2021-03-22 (bug #6919) PDF_create_action() threw an exception when an invalid URL was passed to option "url" while "errorpolicy=return" was specified. Now the exception is avoided and an error code is returned in this situation. - 2021-03-19 (feature #2791) Emit a warning if the deprecated functional interface of the PHP binding (as opposed to the object-oriented interface) is used. - 2021-03-16 (bug #6878) Textflow could sporadically fail with the error messages "Floating point parameter '...' has bad value (not a number)" or "Cannot write bad floating point number to PDF (not a number)" if a font was used that does not contain a space glyph. - 2021-03-15 (bug #6912) PDFlib could crash in PDF_end_document() under the following conditions: - At least two images were loaded and after that the corresponding image handles were released again with PDF_close_image(). - Another image was loaded that also triggered automatic loading of a mask image, and this image was not released explicitly with PDF_close_image() before PDF_end_document() was called. - The internally loaded mask image got a lower image handle number than the handle returned by PDF_load_image(). This problem was introduced in PDFlib 9.2.0. - 2021-03-11 (bug #6911) The script name "lao " was not recognized as a valid value for option "script" in the following API functions: PDF_fit_textline(), PDF_info_textline(), PDF_fill_textblock(), PDF_add_textflow(), PDF_create_textflow(). - 2021-03-01 (bug #6893) Fixed a crash that could occur when opening a document with PDI that contained an invalid /Filter entry in an object stream. - 2021-02-25 (bug #6584) Fixed a crash that could occur when logging was active while an out-of-memory condition happened. - 2021-02-25 (feature #2516) Changed the .NET Core samples to target "netcoreapp3.1". - 2021-02-24 (bug #6907) PDFlib could crash or produce incorrect output under the following conditions: - A font was loaded using a predefined CMap as encoding. - A code was used in text output that was mapped by the CMap to a CID from a higher character collection supplement version not supported by the PDF version of the output document. - 2021-02-22 (bug #6903) PDFlib could crash or produce incorrect output under the following conditions: - A font was loaded using a predefined CMap as encoding. - The font was not one of the Standard CJK Fonts. - CIDs beyond the range of supplement 0 of the character collection associated with the CMap were used. ================================== PDFlib 9.3.0p6 (February 15, 2021) ================================== - 2021-02-15 (bug #6899) Loading an OpenType font that uses unknown character collection caused a crash. - 2021-02-08 (feature #2735) Improved exception handling in the PHP samples to report PHP exceptions in a clearer way. - 2021-02-03 (bug #6886) Under the following conditions a line could appear in the PDF output with an incorrect line width: - The line width must be set in PDF_draw_path() via a graphics state object. - A path must be filled and another path must be stroked via PDF_draw_path(). - In combination with these API calls other paths must be constructed via the primitive path construction API calls (PDF_arc(), PDF_lineto(), ...). This problem was introduced in PDFlib 9.1.2 with the fix for bug #6028. - 2021-02-02 (feature #2734) Added support for Ruby 3.0. - 2021-02-01 (feature #2768) Added support for Linux on ARM64. - 2021-01-29 (bug #6882) Fixed a problem with importing Tagged PDF pages when the parent structure element had an "Alt" or "ActualText" attribute: although PDF_info_pdi_page() with "fittingpossible" returned 1, a subsequent call to PDF_end_item() triggered the following exception if the parent element didn't contain any other marked content items beyond the imported page: "Structure element type 'XXX' (id YYY) with attribute 'Alt' must include content items or one or more 'Link' structure elements". The reason was that the placed PDF page was not correctly handled as new page content. ================================= PDFlib 9.3.0p5 (January 21, 2021) ================================= - 2021-01-21 (bug #6816) Documented the fact that on Windows the Ruby binding requires the Ruby+Devkit package. - 2021-01-21 (bug #6871) The appearance stream generated for text fields created with PDF_create_field() option "password=true" did not mask the field content. - 2021-01-21 (bug #6874) Improved the calculation of the font size for form field appearance streams. - 2021-01-21 (bug #6880) The SVG import failed with error message "Function must not be called in 'path' scope" (without option 'templateoptions' for PDF_load_graphics()) or with "Unmatched save level" (with option 'templateoptions') when a element referenced a element. As this construct does not have an effect on the PDF output, it is now ignored in general. - 2021-01-18 (bug #6873) According to Acrobat the "Password" option can only be set for a form field when the "Check Spelling" option is disabled. Therefore the default for the "spellcheck" option of PDF_create_field() and PDF_create_fieldgroup() is now true for option "type=textfield" in combination with option "password=true". - 2021-01-18 (bug #6867) The miter limit for imported SVG was incorrectly set to the value 10 instead of to the correct value 4. - 2021-01-15 (bug #6879) Caching of SVG images could cause an incorrect rendering when the same image containing an alpha channel was imported multiple times with and without an SVG mask being active. - 2021-01-15 (bug #6877) The SVG import of masked images failed in PDF/X mode when an SVG mask was active at the same time. - 2020-12-18 (bug #6863) Incorrect CFF data was created for a Type1C font subset if the Private DICT referenced from the Top DICT Data was empty. - 2020-12-18 (bug #6861) An incorrect CFF font subset was created if the last Private DICT referenced from the Font DICT INDEX did not contain a "Subrs" operator. - 2020-12-07 (bug #6845) Damaged Tagged PDF structure could be created when the same PDF page was opened more than once with PDF_open_pdi_page() and the imported page contained FormXObjects with a /StructParents enty, e.g. a page which has already been processed with PDI before. Since the damage was very subtle the problem was not visible in Acrobat's Tagged PDF pane. - 2020-12-03 (feature #2717) Finalized support for macOS 11.0 "Big Sur" and ARM64 "Apple Silicon". ================================== PDFlib 9.3.0p4 (November 26, 2020) ================================== - 2020-11-26 (bug #6853) Implemented a workaround in PDI for broken encrypted and/or compressed streams that have a raw length of zero bytes. These streams are invalid according to the PDF Reference, and PDI now treats them as empty streams. - 2020-11-25 (bug #6851) Calling PDF_get_opaque() from a callback function passed to PDFlib, e.g. from the write callback passed to PDF_begin_document_callback(), corrupted the exception stack and could case a crash. - 2020-11-17 (bug #6843) The type was missing in the @return comments of the methods of class PDFlibException in the PDFlib.php file. - 2020-11-17 (bug #6840) An import of an SVG file that contains no graphical or text elements at all and that has no explicit dimensions caused the import to fail with the error message "Number parameter 'width' has bad value ...". - 2020-11-17 (bug #6839) An SVG file without explicitly specified dimensions and with a "viewBox" attribute containing negative x and/or y coordinates was positioned incorrectly. ================================== PDFlib 9.3.0p3 (November 16, 2020) ================================== - 2020-11-16 (bug #6841) The type was missing in the @return comments in the PDFlib.php file. - 2020-11-16 (feature #2717) Added beta version of support for macOS Big Sur and Apple Silicon. ================================== PDFlib 9.3.0p2 (November 10, 2020) ================================== - 2020-11-10 (bug #6828) Querying the pCOS path "type:pages[...]/MediaBox" for a page dictionary that illegaly doesn't contain the mandatory MediaBox entry caused an "Internal error: assertion failed ..." exception. - 2020-11-10 (bug #6820) Calling PDF_info_graphics() for an SVG graphics file failed in PDF/A mode with the error message "Option 'action' not allowed in PDF/A" if the option list for the current output page was non-empty, even when no 'action' option was specified. - 2020-11-10 (bug #6822) Importing a table that spans over multiple pages from tagged PDF into multiple pages in tagged PDF output could cause the second and subsequent imported table fragments to be irregular tables. - 2020-11-10 (bug #6824) Rolemapped tags in the input document could trigger the unjustified error message "Structure element type '...' is not allowed in PDF 1.7 tagset" when importing tagged PDF into tagged PDF output. - 2020-11-10 (bug #6821) Importing an SVG file containing a gradient with opacity failed with the error message "Gray color space requires suitable output intent or default colorspace in PDF/A" when creating PDF/A output. - 2020-10-15 (bug #6814) When an SVG graphical element referenced a element via attribute "mask" and a gradient via attribute "fill", the rendering of the gradient could be wrong when certain elements were nested inside the element. - 2020-10-15 (bug #6812) When a graphical element referenced more than one and/or element, the gradients interfered with each other with the result of an incorrect rendering of an imported SVG file. - 2020-10-09 (bug #6810) Invalid recursive form field definitions caused a stack overflow when accessing form fields via pCOS. - 2020-09-30 (feature #2723) Added support for PHP 8. - 2020-09-30 (feature #2706) Added support for Perl 5.32 on Windows. =================================== PDFlib 9.3.0p1 (September 15, 2020) =================================== - 2020-09-15 (bug #6789) The .jar file in the AIX 64-bit Java package did not contain the required class files. - 2020-08-28 (bug #6784) Tagged PDF import could create an invalid ParentTree structure in the output if a BLSE spanned multiple pages in the imported document. - 2020-08-27 (bug #6779) When supplying unrelated PDF_create_field() options like "currentvalue" or "caption" for a field of type "signature" an incorrect error message "Font not specified for field '...'" was triggered. Now these options are ignored while a warning is issued. - 2020-08-27 (feature #2725) Don't create appearance streams for degenerated form fields with zero width or height. - 2020-08-26 (bug #6761) The ToUnicode CMap can assign only one Unicode value or sequence of Unicode values to a glyph. When a font uses the same glyph for Unicode values from the 'CJK Unified Ideographs' and 'Kangxi Radicals' Unicode blocks, previously the value from the 'Kangxi Radicals' block was assigned in the ToUnicode CMap. Now the Unicode value from the 'CJK Unified Ideographs' is assigned to the glyph in the ToUnicode CMap. - 2020-08-13 (bug #6775) The sort order for the entries of ListBox fields on EBCDIC platforms was different than on other platforms. - 2020-08-10 (bug #6773) The options "captiondown", "captionrollover", "icondown" and "iconrollover" for PDF_create_field() and PDF_create_fieldgroup() are only allowed when also option "highlight=push" is specified. If one of the four former options was used without "highlight=push", invalid PDF output was generated. Now PDFlib rejects the use of any of the four options without also specifying "highlight=push". - 2020-08-10 (bug #6766) When using PDF_create_annotation() in combination with PDF_suspend_page() and PDF_resume_page(), it was possible to create an annotation that refers to an annotation on a different page via the "inreplyto" option. According to the PDF Reference the "in reply to" relationship is only allowed between annotations on the same page, so PDFlib rejects this construct now. - 2020-08-04 (bug #6768) For XMP schemas allowed in PDF/A-2/3 that are unknown for PDF/A-1 PDFlib rejected properties from these schemas even if a correct PDF/A extension schema was included in the imported XMP metadata. - 2020-07-27 (bug #6769) If a program made API calls other than PDF_delete(), PDF_get_apiname(), PDF_get_errnum() and PDF_get_errmsg() after an exception occurred, the program could exit with the error message "fatal exception: exception stack underflow". This problem was introduced with the fix for bug #6403 in PDFlib 9.2.0p2. - 2020-07-27 (bug #6763) PDFlib could crash when creating optimized PDF output while importing a PDF document containing invalid layer data structures. - 2020-07-23 (bug #6760) PDFlib required that the "polylinelist" option for creating "Ink", "Polygon" and "Polyline" annotations contains at least of two points, while the PDF Reference allows them to consist of a single point. PDFlib now allows single-point "Ink", "Polygon" and "Polyline" annotations. - 2020-07-23 (bug #6762) Fixed a performance problem in the PDF optimization algorithm that caused long processing times for PDF output documents containing a huge number of PDF objects. The same change also fixes crashes through stack overflows caused by certain broken PDF documents that contain illegal recursive PDF data structures. ============================ PDFlib 9.3.0 (July 13, 2020) ============================ - 2020-07-13 (feature #2677) Expanded the starter_block sample to move Textflow Block contents up or down if previous Blocks didn't fully use their vertical space or required excess space; reworked the Block filling data and logic to demonstrate more variable text and images. - 2020-07-13 (bug #6572) PDFlib accepted invalid URLs for the "url" option of PDF_create_action(). - 2020-07-09 (bug #6536) PDF_pcos_get_string() in the RPG binding returned an invalid UTF-16 string if the string contained characters outside the ASCII character set. The return type of PDF_pcos_get_string() in the RPG binding was incorrectly documented as EBCDIC-UTF-8. - 2020-07-09 (bug #6749) For tagged PDF output PDFlib rejected child elements for the "Figure" and "Formula" structure elements that actually are allowed according to the PDF Reference. - 2020-07-09 (bug #6748) When automatically creating "Link" annotations for tagged PDF output from links imported from SVG the structure element for the link was created as a sibling of the current active structure element. Now the structure element for the link is created as a child of the current active structure element. - 2020-06-30 (bug #6744) If more than one SVG graphics file without an explicit width and height specification was imported while creating tagged PDF output, the automatic bounding box calculation for the imported SVG graphics files was incorrect for all but the first one. - 2020-06-25 (feature #2663) Added support for Perl 5.32. - 2020-06-24 (bug #6741) The graphics content of an imported SVG file was positioned incorrectly if all of the following conditions were true: - The SVG graphics was loaded with option "templateoptions". - The bounding box for the graphics content had to be computed automatically because an explicit specification of the bounding box was not available in the SVG file. - 2020-06-23 (bug #6740) PDFlib incorrectly allowed the import of an SVG graphics file without tagging it as 'Artifact', 'Figure' or 'Formula' when the imported graphics file was wrapped in a PDF Form XObject by supplying option "templateoptions" to PDF_load_graphics(). - 2020-06-15 (bug #6737) Fixed an incorrect error message for the allowed asset types in the "richmedia/configuration/instances" sub-option list of PDF_create_annotation(). The error message incorrectly listed "JavaScript" as an allowed type while "Video" was missing. - 2020-06-12 (bug #6735) PDFlib incorrectly allowed associated files for DParts in PDF/A-3b output. Associated files for DParts are allowed only with PDF 2.0 output. - 2020-06-05 (bug #6732) The SVG import rendered text in patterns upside down. - 2020-05-26 (bug #6329) The SVG import incorrectly applied a fill color that was set in a "style" attribute of a element. Now such a setting of the fill color is ignored as expected. - 2020-05-26 (bug #6717) Improved the rendering of vertical text in the SVG import. - 2020-05-26 (bug #6332) The SVG import could crash if a object referenced a object that contained a object. - 2020-05-22 (feature #2692) Automatically control OpenType features for fonts in vertical mode: the "vrt2" feature is activated if present. Otherwise, the "vert" feature is activated if present. Both features are no longer under user control (except via "readfeatures=false" which disables all OpenType features). - 2020-05-22 (bug #6720) The Python sample programs must not throw PDFlibException objects, as only PDFlib itself can throw PDFlibException exceptions. - 2020-05-22 (bug #6714) The "thumbnail" option of PDF_load_asset() unnecessarily imposed a size limitation on the thumbnail image. The color space checks for the thumbnail image were not implemented correctly. - 2020-05-08 (bug #6361) The SVG import positioned text with a "text-anchor" presentation attribute different from "start" incorrectly in top-to-bottom writing mode. - 2020-05-05 (feature #2668) Added creation of form field appearances which is required for PDF/A and PDF 2.0. - 2020-05-05 (feature #2679) Properly identify PDF 1.7ext11 which is created by some Adobe applications, but is fully compatible to PDF 1.7ext8 as far as PDI is concerned. - 2020-04-29 (bug #6542) The following sequence of events caused PDF_get_option() with keyword "filenamehandling" to return different values in steps 2) and 3): 1) PDF_set_option(... "filenamehandling" ...) was not called after creating the PDFlib object. 2) PDF_get_option(... "filenamehandling" ...) was called before the first API function that involved a file operation, e.g. PDF_begin_document(). 3) PDF_get_option(... "filenamehandling" ...) was called again after the first API function that involved a file operation. Also fixed the documentation of the default value of global option "filenamehandling". The default is "legacy" on all platforms. =============================== PDFlib 9.2.0p6 (April 27, 2020) =============================== - 2020-04-27 (bug #6709) PDFlib did not reject palette-color TIFF images with a broken color map. The result were areas filled with black instead of the expected image contents. These broken TIFF images are now rejected. - 2020-04-23 (bug #6704) All macOS packages delivered as Apple Disk Images are now notarized. This fixes the problem that the PHP binding could not be installed into third-party PHP environments. - 2020-04-23 (bug #6680) PDFlib crashed when a TrueType font was loaded while supplying a standard CMap "Identity-H" or "Identity-V" as encoding. This is actually not supported and is now rejected with an error message. - 2020-04-17 (bug #6681) Previously the search for resources stopped after a directory was encountered that could not be accessed because of restrictive permissions. Now a warning is emitted for the permission problem and the resource search continues with other available search paths. - 2020-04-16 (bug #6649) A call to PDF_info_graphics() with keyword "fittingpossible" failed with error message "Option 'associatedfiles' has bad asset handle ..." when an associated file was attached to the graphics template object via PDF_load_graphics() option "templateoptions={associatedfiles={...}}". - 2020-04-15 (bug #6678) The return value of PDF_info_textflow() called with keyword "lastfontsize" was wrong when the last font size specified in an inline option list in the Textflow was specified via a percentage. - 2020-04-01 (bug #6693) The font enumeration via global option "enumfonts" could fail unexpectedly on Windows with the error message "Illegal escape sequence '\...'" when the global option "escapesequence" was set to true. - 2020-04-01 (bug #6685) PDF_load_graphics() failed with the error message "Font 'Helvetica' with encoding 'unicode': Font must be embedded in PDF/X" under the following conditions: - A PDF/X output file was created. - No resource was configured for font specified by the PDF_load_graphics() option "defaultfontfamily" (by default "Arial Unicode MS"). The error occurred even if the SVG file to load never triggered the use of the default font. Now an error occurs only when the non-embeddable default font "Helvetica" is actually used by the SVG file. This fix applies analogously when PDF/A output is generated. - 2020-03-19 (feature #2491) Added support for Perl 5.30. - 2020-03-19 (feature #2655) Fixed a problem with table padding and emit proper table and head checksums for embedded TrueType subsets (although all PDF viewers ignore the checksums). Always emit /CIDToGIDMap for PDF 2.0 which requires this entry. - 2020-03-18 (bug #6686) If an ICCBased color space was specified for the "colorspace" sub-option of the "transparencygroup" option of PDF_begin_template_ext(), the number of components of the ICCBased color space was not determined correctly. This caused the following unexpected error message with an incorrect component count of 0 of the softmask transparency group if that template was subsequently used in the "template" sub-option of the "softmask" option of PDF_create_gstate() together with the "backdropcolor" sub-option: "'backdropcolor' has wrong number of color components (doesn't match softmask transparency group (components = 0))" - 2020-03-16 (bug #6683) An invalid value for option or Block property "linewidth" resulted in an exception that referred to the "width" option or Block property. - 2020-03-16 (bug #6611) Added license details to the PDFlib PHP PECL package. - 2020-03-16 (bug #6409) Improved the documentation regarding quoting of special XML characters in rich text in annotations. - 2020-03-03 (bug #6677) For PDF/X-4p the "colorspace" option in the "process" option list of PDF_create_devicen() was not checked against the color space of the output intent. This caused invalid PDF/X-4p output if there was a mismatch between the color spaces. - 2020-03-03 (bug #6673) The tagging options ActualText, Alt, E, and Lang could not be applied to an Artifact. - 2020-03-03 (bug #6667) The binaries of the PHP 7.4 binding on Linux 64-bit were unexpectedly large because they were not stripped. - 2020-03-03 (bug #6662) Importing Tagged PDF recursively (i.e. importing the result of an earlier import operation again) could result in output with an invalid structure tree which triggered the error "Inconsistent Entry" in PAC 3. - 2020-02-27 (feature #2644) Replaced "Div" as container element for "Figure" and "Caption" with "Sect" for better PDF 2.0 compatibility in the starter_pdfua1 samples. - 2020-02-21 (bug #6670) The hypertext encoding was not applied properly to the hypertext string option "iconname" in the option list of PDF_begin_template_ext() and in the "templateoptions" option of PDF_load_image() and PDF_load_graphics(), which could cause an "Invalid UTF-8 sequence ..." error message. - 2020-02-21 (bug #6671) PDF_delete_pvf() failed unexpectedly after the following steps: a) A search path was set up. b) A PVF file was created that could be found via the search path created in step a). c) The PVF file was loaded as an "Attachment" asset with PDF_load_asset() while specifying a relative pathname so that the PVF file actually was found via the search path created in step a). d) PDF_delete_pvf() was called for the PVF file after PDF_end_document(). - 2020-02-12 (bug #6663) When invoking PDF_info_graphics() with option "fittingpossible" for tagged PDF output the global option "autospace" was not applied for the internal simulation run of the SVG import. - 2020-02-11 (feature #2645) Removed several test cases from the starter_fallback samples which made use of the deprecated concept "standard CJK fonts". - 2020-02-11 (bug #6661) The documentation incorrectly stated that PDF_end_document() accepts the "search" option. This option can only be used with PDF_begin_document(). - 2020-02-10 (feature #2635, feature #2640, feature #2626, feature #2633, feature #2671) Emit warnings for all deprecated API methods, deprecated options, features which are deprecated in PDF 2.0 as well as for obsolete concepts. Refer to the PDFlib Migration Guide for a list of deprecated items. - 2020-02-04 (bug #6639) The Perl 5.30 binding was not usable on FreeBSD 12. - 2020-02-04 (bug #6645) Linking an iOS application for a real device failed with the error message "Undefined symbols for architecture arm64: _png_init_filter_functions_neon ...". This problem was introduced with PDFlib 9.1.2. - 2020-02-04 (bug #6648) The PDFlib framework was missing in the Objective-C package. This problem was introduced with PDFlib 9.2.0p4. - 2020-02-03 (feature #2627) Added support for FreeBSD 12 which is not fully compatible to FreeBSD 11. - 2020-01-23 (bug #6496) Matchbox borders were not stroked in textflows when option "showborder" was specified for PDF_fit_textflow(). - 2020-01-23 (bug #6493) PDF_info_path() returned incorrect values for the keywords "objectheight", "objectwidth", "bboxwidth", "bboxheight" and "pathlength". - 2020-01-20 (bug #6587) PDFlib crashed when importing broken PDF documents containing recursive layer definitions. - 2020-01-20 (bug #6633) Fixed the documentation of PDF_add_nameddest() and PDF_create_action() regarding the behavior when the same name is used multiple times for creating named destinations or document-level JavaScript instances. - 2020-01-17 (bug #6630) Implemented a workaround for an optimizer bug that was introduced in Visual Studio 2019 16.4. - 2020-01-16 (feature #2617) Increased the warning level in the project files for the .NET Framework samples to ensure that deprecated API methods are reported. - 2020-01-09 (feature #2598) Added support for Ruby 2.7. - 2020-01-08 (bug #6623) Fixed an incompatibility with Acrobat regarding the decryption of broken PDF documents containing multiple /ID entries in the PDF file trailer. - 2019-12-23 (feature #2610) Extended the "businesscard" samples to demonstrate processing of multi-page input documents. ================================== PDFlib 9.2.0p5 (December 13, 2019) ================================== - 2019-12-13 (feature #2579) Checked compatibility with Python 3.8 (with positive result). - 2019-12-13 (bug #6612) PDF_info_graphics() with "fittingpossible" could crash for certain parent tag nesting relationships. - 2019-12-12 (bug #6613) PDFlib did not throw an exception for the attempt to create Caret, 3D or RichMedia annotations when setting the PDF_begin_document() option "compatibility" to a lower PDF version than the PDF version that actually supports these annotation types. - 2019-12-12 (bug #6609) The attempt to test with PDF_info_graphics() whether an SVG graphics file can be fitted failed with the error message "Invalid end of marked content (no matching begin)" when tagged PDF was created and when the current structure element was a direct structure element or an Artifact. - 2019-12-12 (bug #6605) Setting a color in the option list of PDF_draw_path() had the unwanted side effect that the current fill and/or stroke color was modified. This problem was introduced with the fix for bug #6028 in PDFlib 9.1.2. - 2019-12-12 (bug #6606) Fixed warnings that appeared when building the PDFlib .NET Core binding from source. - 2019-12-11 (bug #6603) Using an invalid option in the "destination" suboption list of various API functions caused a memory leak. - 2019-12-11 (bug #6608) Calling PDF_info_graphics() with keyword "fittingpossible" failed with error message "Option '...' has bad action handle ..." if actions handles were present in an option list for PDF_begin_page(). - 2019-12-11 (bug #6610) PDF_continue_text() with an empty text did not move the text position to the next line as expected when the font was loaded with encoding "unicode". This problem was introduced with the fix for bug #6501 in PDFlib 9.2.0p3. - 2019-12-11 (bug #6601) If the table engine had to shrink header/footer textflow cells in one table instance while having set "fitmethod=clip" for the textflows, the header/footer cells appeared empty in a subsequent table instance when no shrinking was necessary for that table instance. - 2019-12-09 (bug #6599) When "cloneboxes=true" is specified for PDF_open_pdi_page(), the default for option "clippingarea" is now "media", which by default now avoids clipping of the area outside of the crop box. - 2019-12-09 (bug #6602) Importing Tagged PDF pages could result in output which triggers various PDF/UA validation errors in PAC 3 such as "Structure Parent Tree: inconsistent entry", "Missing entry for a specific "MCID"", "Untagged text object". PDF/UA-1 validation in Acrobat DC Preflight could complain "Content neither Artifact nor tagged content". This problem was caused by a particular construct in the /ParentTree number tree of the input document which hasn't been handled correctly. - 2019-12-09 (bug #6475) Invalid CSS embedded in SVG triggered a failed assertion. - 2019-12-09 (bug #6564) With "errorpolicy=return" PDF_open_pdi_document() threw an exception when opening a dynamic XFA document, while it must return -1 in this situation. - 2019-12-09 (bug #6546) Adapted PDFlib's handling of xml:space="preserve" attribute when applied to the element to the respective handling of the major browsers by ignoring it. - 2019-12-09 (bug #4144) SVG import lost spaces after a element with xml:space="default". - 2019-11-29 (bug #6586) When referencing the header of a table cell via option "Headers" from PDF_begin_item() or from within the "tag" option, the error message "Id '...' in 'Headers' option of 'TD' element (handle '...') must refer to a 'TH' element, but is undefined" was issued, although the id was actually defined. - 2019-11-26 (bug #6487) An SVG path object that was terminated with a "z" command was not closed as expected. - 2019-11-26 (bug #6584) Text-on-path output with PDF_fit_textline() on a "circle" path was incorrect in a topdown coordinate system when the path was created with option "clockwise=false". - 2019-11-25 (feature #2594) Added support for OpenType feature tables with lookup type 9 ("Extension positioning") for kerning tables. - 2019-11-13 (bug #6565) Importing invalid XMP metadata containing a property for which no PDF/A extension schema was present could cause a crash when generating PDF/A output. - 2019-11-13 (feature #2592) PDF_create_annotation() now supports the options "statemodel" and "state" for annotations "in reply to" another annotation. - 2019-11-13 (bug #6578) Corrupt font data could cause a memory leak in the font parser. - 2019-11-06 (bug #6563) Corrupt font data could cause uninitialized memory reads and pCOS pseudo objects with incomplete data. pCOS does no longer create pseudo objects for resources that cannot be parsed correctly. ================================= PDFlib 9.2.0p4 (October 24, 2019) ================================= - 2019-10-24 (feature #2495) Updated Objective-C examples for iOS. - 2019-10-24 (bug #6540) On Unix and Linux 32-bit platforms PDF_open_pdi_document() failed with the error message "No trailer found in file '...'" when the size of the PDF input file was greater than 4 GB and if the file size modulo 4 GB was less than the value specified via the "mmiolimit" option. - 2019-10-24 (bug #6539) Passing a zero-width text to PDF_fit_textline with option 'fitmethod=entire' failed with the error message "Cannot write bad floating point number to PDF (not a number)". - 2019-10-16 (feature #2571) Added support for PHP 7.4. - 2019-10-14 (bug #6531) PDFlib could crash when a non-breaking space was placed at the end of a line in tagged PDF output. - 2019-10-11 (feature #2502, #2514) Implemented the following changes for improved macOS 10.15 compatibility: - the shared library for Java is now code-signed; - the installer package is notarized. - 2019-10-08 (bug #6525) An invalid SetOCGState action was created when a layer handle was created via PDF_begin_layer() and referenced from PDF_create_action() for creating a SetOCGState action before the corresponding layer was started at all with PDF_begin_layer(). - 2019-10-07 (feature #2520) Check compatibility with .NET Core 3.0 and added corresponding notes to the readme file. =================================== PDFlib 9.2.0p3 (September 11, 2019) =================================== - 2019-09-11 (bug #6504) PDF_fit_textflow() failed with the error message "Internal error: assertion failed in file 'p_textout.c' ..." when a forced line break occurred just before a non-breaking space. This problem was introduced with the implementation of feature 2400. - 2019-09-11 (bug #6507) Cross-reference stream entries with a byte length larger than 5 (middle value in the /W array) were not accepted. Such large entries are never required, but some PDF producers emit them nevertheless even for small files. - 2019-09-10 (bug #6501) Fixed an endless loop that occurred when passing an empty text to PDF_continue_text() while using an embedded Type 1 font. - 2019-09-10 (bug #6499) Structure element types "Link" and "Annot" now allow element type "Lbl" as child. - 2019-09-10 (bug #6502) If a glyph in a font is used to represent multiple Unicode values, PDF_fit_textline() automatically creates ActualText for occurrences of the glyph where the associated Unicode value differs from the single Unicode value that is stored for the glyph in the ToUnicode CMap. Previously the first use of a Unicode value from the set of Unicode values that map to the same glyph determined which Unicode value was stored in the ToUnicode CMap, and which Unicode values from the set triggered the creation of ActualText. Now the strategy was improved so that it is deterministic after loading a font which Unicode value is stored in the ToUnicode CMap and which glyphs trigger the creation of ActualText. - 2019-09-05 (bug #6485) Improved the PDF_load_font() error message for attempts to load arbitrary non-font files as fonts. - 2019-08-22 (bug #6495) No longer set the base address for the COM DLL via linker option. - 2019-08-22 (bug #6483) The installers for COM and .NET in some environments could have problems related to permission settings because the installer was not marked to run as Administrator. This was caused by using the CAB format; now switched back to LZMA archives. Also, the COM DLL was no longer signed. - 2019-08-21 (bug #6491) The extension library for Python 2.7 was rejected with "undefined symbol: PyUnicodeUCS2_FromString" if the Python executable was built with "-enable-unicode=ucs4" (which is default in various Linux distributions) as opposed to "-enable-unicode=ucs2". This problem has been introduced with feature #2497 in PDFlib 9.2.0p2. - 2019-08-20 (bug #6490) PDF_create_annotation() with the option "opacity" correctly emitted a warning for non-markup annotations, but nevertheless wrote the /CA entry to the PDF output which is not correct for PDF < 2.0. - 2019-08-19 (bug #6486) When importing multiple PDI documents with the same PDFlib object the following problems could occur if layers were involved: - If an input document contained layers, but not the corresponding output document, the input layer definitions could incorrectly be written to the next output document. - The /Order state wasn't cleaned up correctly so that inappropriate /OCG references could appear in the next output document. The "parasite" objects didn't do any harm in the output documents, but resulted in undesired dependencies between multiple documents created within the same PDFlib context. - 2019-08-14 (bug #6481) SVG 1.1 requires "href" attributes to be associated with the XML namespace "http://www.w3.org/1999/xlink", while the SVG 2 draft specification associates "href" with the XML namespace "http://www.w3.org/2000/svg". PDFlib now supports also the SVG 2 style for "href" attributes in SVG. - 2019-08-13 (bug #6438) Improved the performance of importing tagged PDF documents into tagged PDF output documents. - 2019-08-08 (bug #6459) Trying to use a JPEG 2000 image as a soft-mask image caused an out-of-bounds read. As there are inconsistencies in the PDF Reference regarding the use of JPEG 2000 images as soft-mask images, soft-mask JPEG 2000 images are rejected now. - 2019-08-08 (bug #6479) Error message 2431 ("Bitmap image '...' cannot be used as mask for image...") showed a number instead of the filename of the bitmap image. - 2019-08-07 (bug #6443) If XMP input contained empty properties where the type forbids the property to be empty, invalid XMP output was created. Now an empty XMP property is dropped from the output if the following conditions are met: - The type of the property is known from a PDF/A extension schema in PDF/A output mode. - The type of the property is one of "Boolean", "Date", "Integer", "Real", "Locale", "MIMEType", "URI", "URL" or "Rational". - 2019-08-05 (bug #6452) If PDF_create_textflow() was called with an empty text, textflow options in a subsequent call to PDF_add_textflow() were ignored. This problem was introduced in PDFlib 9.1.2p4. - 2019-08-02 (bug #6448) An image with a mask in an SVG file could be rendered incorrectly if a surrounding SVG element had set a mask already. - 2019-08-02 (bug #6474) If an SVG element has both "mask" and "transform" attributes, the transformation was not applied to the element referenced by the "mask" attribute. - 2019-07-31 (feature #2503) Added build support for Visual Studio 2019. - 2019-07-31 (bug #6388) Automatically create an ICCBased RGB default color space for patterns in SVG if a current RGB ICC profile is set for SVG, which normally is sRGB unless it was explicitly specified otherwise. This avoids errors when importing SVG into PDF/X output where the SVG file references for example an RGB JPEG image without embedded ICC profile from a pattern. - 2019-07-31 (feature #2527) Switched the starter_pcos samples from the integer "pcosmode" to the string "pcosmodename" to improve readability of the code. - 2019-07-31 (bug #6472) When an image of a type that is not supported as inline image was loaded with option "inline=true", PDFlib switched automatically to non-inline mode and returned a valid image handle while emitting a warning. This made it impossible to detect the problem that the image had not been placed directly on the page as expected. Now PDF_load_image() returns -1 or throws an exception in this situation depending on the "errorpolicy" setting. - 2019-07-30 (bug #6390) Loading a JPEG image with an embedded ICC profile with the option "inline=true" resulted in the error message "Unknown color space (...)". Now a JPEG image with an embedded ICC profile can be used as an inline image. The restriction that PDF_load_image() option "inline=true" cannot be used in combination with options "colorize" or "iccprofile" has been removed. - 2019-07-30 (bug #6467) Setting global option 'kerning' with PDF_set_option() had no effect. - 2019-07-26 (bug #6464) The RPG binding no longer carries its own version number in the binding name. - 2019-07-26 (bug #6454) On AIX the installation of ICU binaries failed when building from source. ============================= PDFlib 9.2.0p2 (May 31, 2019) ============================= - 2019-05-31 (bug #6415) PDF_create_annotation() option "interiorcolor" is now also supported for annotations of type "Polygon". - 2019-05-31 (bug #6424) Improved the wording for PDF_fit_table() error messages that are triggered when a table can not be fit because the maximum allowed horizontal or vertical shrinking factor is exceeded. - 2019-05-27 (bug #6249) Implemented a pCOS workaround for broken form field objects where the required /T entry for the partial field name is missing in the field dictionary. pCOS now generates an artificial field name in the form "pcos_artificial_#", where is a unique number per input document. - 2019-05-24 (feature #2491) Added build support for Perl 5.30. - 2019-05-23 (bug #5070) The per-page pCOS pseudo object array "templates" was empty even if templates (Form XObjects) were present on the page. - 2019-05-21 (bug #6410) The PDFlib Windows 32-bit COM installer was accidentally configured with the same product id as the TET 5.1 Windows 32-bit COM installer, making it impossible to install both products on the same machine. - 2019-04-29 (feature #2501) Switched the starter_textflow samples to the Noto font. - 2019-04-25 (bug #6403) Importing a PDF page with layers could cause a crash if /Root/OCProperties/D contained an empty array and if an exception was thrown after calling PDF_close_pdi_document() for the document containing the imported PDF page. This problem was introduced with the fix for bug #5134. - 2019-04-09 (feature #2499) Added build support for Visual Studio 2019 (VS16). - 2019-04-09 (feature #2497) Improved Exception handling in Python so that error number, method name and description are now available as separate arguments in the PDFlibException object. - 2019-04-08 (bug #6389) The binaries for the Perl 5.28 "no threads" build were missing. =============================== PDFlib 9.2.0p1 (March 29, 2019) =============================== - 2019-03-29 (bug #6387) The C sample program "hellodl.c" placed one output line on top of the other. - 2019-03-28 (bug #6380) The C++ sample program "invoice.cpp" failed to compile in C++17 mode. - 2019-03-28 (bug #6381) The forced font embedding as fix for bug #6314 regarding the "optimizeinvisible" font option to work around an unjustified Acrobat error message was reverted to avoid file size bloat. The improved workaround avoids forced embedding, but disables subsetting which avoids the Acrobat message at least in some situations. - 2019-03-28 (bug #6382) Fixed gaps in the workaround for SID fonts in vertical mode implemented in the fix for bug #5962. - 2019-03-28 (bug #6383) Using the next glyph id after the last valid glyph id of a font loaded with encoding "glyphid" could cause a crash. - 2019-03-28 (bug #6386) Option "replacementchar" was not ignored as documented for fonts loaded with encoding "glyphid". - 2019-03-26 (feature #2472) Improved the error message for failed calls to PDF_new() and consolidated the behavior in case of a failed constructor among all language bindings. In bindings where this is possible a failed constructor now throws an exception with appropriate error number and message. - 2019-03-26 (bug #6377) PDFlib failed with the exception "Font '...': Corrupt TrueType font file '...'" when processing an OpenType font that contained more than one subtable of type "ExtensionSubstFormat1" in the GSUB table. After the exception PDFlib could crash. - 2019-03-22 (bug #6379) Fixed an out-of-bounds read in the SVG import code that could occur in edge cases since the implementation of feature #2400. - 2019-03-22 (bug #6362) The SVG property "letter-spacing" was not applied correctly for vertical text. - 2019-03-22 (bug #6371) Some PDFlib API calls could fail with the error message "Option '...' has bad number value '...'" when the locale was set to a locale where the decimal separator is neither point nor comma. - 2019-03-22 (bug #6373) Updated all starter_formfields sample programs with the currently recommended PDF_load_font() options for loading fonts for use in form fields. - 2019-03-18 (bug #4797) Added support to PDFlib source builds for building 32-bit binaries in 64-bit Linux environments. - 2019-03-18 (bug #6369) Since the fix for bug #6309 a PDFlib program that set the locale to a locale that uses a comma for floating point strings produced incorrect PDF output for BBox attributes of structure elements of imported Tagged PDF pages. - 2019-03-14 (bug #6368) PDF_create_fieldgroup() no longer allows option "fieldtype=signature", as it technically never made sense to have multiple signature fields in a field group. - 2019-03-14 (bug #6367) A call to PDF_create_fieldgroup() in document scope failed unexpectedly with the error message "Function must not be called in 'document' scope". According to the documentation PDF_create_fieldgroup() may be called in any scope except object scope. - 2019-03-14 (bug #6356) When PDF_delete() was called after a successful PDF_end_document() call an unnecessary memory allocation was performed in PDF_delete(), which could have caused an exception in an out-of-memory situation. This violated the PDFlib API guarantee that PDF_delete() never throws an exception. - 2019-03-14 (bug #6350) Setting option "stringformat=utf8" was not rejected on EBCDIC platforms. - 2019-03-14 (bug #6348) The IBM iSeries port of PDFlib 9.2 is finished. - 2019-03-12 (bug #6365) Fixed a division by zero error in textflow that could occur in edge cases. - 2019-03-06 (bug #6360) For tagged PDF output PDF_info_pdi_page() with keyword "fittingpossible" could return value "1" for a PDI page (meaning that fitting is allowed) while the actual call to PDF_fit_pdi_page() with the same options would fail. This could happen if the current element didn't allow direct content since the automatically generated clipping path was not marked as Artifact. - 2019-02-28 (bug #6355) After the fix for bug #6214 compilation of pdflib.h failed on iSeries systems. - 2019-02-28 (bug #6357) Accessing an object via the "objects[]" pCOS pseudo objects array and a pCOS ID failed if an indirect object was present in the full pCOS path. - 2019-02-26 (feature #2436) Added support for Ruby 2.6 on Windows. - 2019-02-22 (feature #2470) Added Windows projects for a C++ hello sample with dynamic loading. - 2019-02-18 (bug #6347) The Perl package for Windows contained a wrong DLL for Perl 5.28. - 2019-02-13 (bug #6343) The computation of unique ids for Note structure elements in tagged PDF was depending on the endianness of the platform. This had no further consequences except that different unique ids were generated on little-endian and big-endian platforms for the same input. With the fix PDFlib on big-endian platforms now generates the same unique ids as on little-endian platforms. - 2019-02-11 (bug #6342) When an ActualText Span for glyph replacement was created automatically, subsequent text output could be written outside the desired target layer. ================================ PDFlib 9.2.0 (February 06, 2019) ================================ - 2019-02-06 (bug #6341) Fixed warnings generated about variables being clobbered by 'longjmp' or 'vfork' when compiling the C++ binding with g++. - 2019-02-05 (bug #6340) Added exception handling for non-PDFlib exceptions to all C++ samples. - 2019-02-04 (bug #6240) Some sample programs contained "errorpolicy=exception" in PDFlib API calls where the actual intention was to specify "errorpolicy=return" to override the globally set option "errorpolicy=exception". - 2019-02-04 (bug #6338) After the fix for bug #6141 the symptoms of bug #6011 had reappeared. - 2019-02-04 (bug #6339) When using the "gstate" option of PDF_fit_image() the "cm" operator for setting the current transformation matrix for the XObject was written before the "gs" operator for setting the parameters from the specified graphics state parameter dictionary. This only was a problem when the graphics state parameter dictionary contained a luminosity softmask as its geometry did not match the geometry of the XObject then. The order of the "cm" and "gs" operators is now reversed by the fix. - 2019-02-04 (feature #2440, feature #2460) Modified the PDFlib Mini Edition configuration to further reduce its memory requirements. Among other changes, support for OpenType CFF fonts has been enabled, while support for PostScript Type 1 fonts, built-in encodings, internal glyph name tables and runtime logging has been disabled. - 2019-01-30 (feature #2451) Improvements for Tagged PDF and PDF/UA import: - Improved the checks for invalid Hx header hierarchies when importing PDF/UA. - The additional PlibASpan tag which is inserted by PDFlib when importing Tagged PDF pages was not correctly taken into account by the "fittingpossible" test. - When importing a page with a direct Note, Span, Quote element (formerly incorrectly called "inline" element) as top-level element, the tag was wrongly treated as "direct" and rejected by the nesting check. - 2019-01-30 (bug #6334) Glyphs from symbol fonts can be addressed with standard Unicode values if they have standard glyph names according to the Adobe Glyph List with a Unicode mapping. After the fix for bug #6011 these glyphs could only be addressed via PUA values. - 2019-01-30 (bug #6333) On Windows platforms the logging for logging class "image=5" could produce the unexpected log message "Unknown printf format '%I64u'" when processing damaged TIFF images. - 2019-01-29 (feature #2421) As a consequence of feature #2218 the shipping data files in all PDFlib packages are reduced significantly in file size and count. - 2019-01-29 (feature #2418) Modernized the supplied programming samples for all supported development environments. This included removal of deprecated samples and highly specialized aspects (e.g. SING fonts), replacement of old-style API usage and introduction of convenience features. All external font files have been switched to the NotoSerif font family. - 2019-01-29 (feature #2214) Switched the Android builds to SDK 28.0.3 and a newer build environment. The binaries now support ARM 32-bit and 64-bit as well as x86 which is relevant for the emulator. - 2019-01-24 (feature #2459) Removed unneeded features from the libtiff configuration. - 2019-01-24 (bug #5484) In the IBM iSeries RPG binding the buffer size was increased for the "text" parameter of the following functions: - PDF_add_table_cell() - PDF_add_textflow() - PDF_create_textflow() - PDF_fill_textblock() The buffer size for the return value of PDF_convert_to_unicode() was also increased. - 2019-01-24 (feature #2458) Consolidated the use of common XObject options in PDF_load_image(), PDF_load_graphics(), PDF_open_pdi_page(), and PDF_begin_template_ext() to ensure that all options are supported by all functions where they make sense. - 2019-01-21 (bug #6328) The PDFlib PHP module could not be loaded with PHP 7.3 Windows 64-bit (ZTS). - 2019-01-15 (feature #2431) Recognize the font file name suffixes *.otc and *.OTC for OpenType CFF font collections. (Since OTC fonts are identical to TTC they were already supported, only the suffix detection is new). - 2019-01-15 (bug #6327) Building PDFlib from source without PDF_FEATURE_LOGGING defined could cause massive heap memory usage. - 2019-01-14 (feature #2432) Un-deprecate the "Sect" and "NonStruct" structure elements in anticipation of pending changes for the PDF 2.0 dated revision ISO 32000-2:2019. - 2019-01-14 (feature #2455) Work around the possible user error of forgetting the "mask" option for 1-bit images which are later used with the "masked" option of another image. PDFlib now emits /SMask instead of /Mask also for the 1-bit case unless prohibited by PDF/A-1 or PDF/X-1/3 standards requirements. - 2019-01-14 (feature #2445) Implemented stricter checks for the "id" option of the "Note" element to ensure PDF/UA-1 conformance. ID attributes of regular (but not direct) "Note" structure elements in imported documents are made unique by adding a suffix if required. - 2019-01-14 (feature #2315) Implemented the tagging option "direct" as successor of the deprecated "inline" option to fix an unfortunate historical naming conflict in the API and Tutorial. ================================== PDFlib 9.1.2p11 (January 08, 2019) ================================== - 2019-01-08 (bug #6314) To work around an unjustified error message in Acrobat about a missing font PDFlib now forces embedding of a CID font also under the following conditions: - Only text with "textrendering=3" (invisible) was produced with the font. - PDF_load_font() was invoked with option "optimizeinvisible=true". - 2019-01-02 (feature #2452) The tagging options "inline" and "direct" are now allowed for the "Lbl" element if used as child of BibEntry, TOCI or Note to match its use in PDF 2.0. - 2019-01-02 (feature #2447) PDF_create_annotation() didn't enforce the PDF/UA-1 tag nesting rules for Link and non-Popup annotations. - 2018-12-31 (feature #2438) Tagged PDF import: many real-world documents contain invalid trailing null bytes in the Alt or Lang attribute strings. These have previously been represented as U+FFFD REPLACEMENT CHARACTER in the output. However, Acrobat displays U+FFFD as a garbage character (unlike a null byte which is silently ignored). PDI now removes the incorrect trailing null bytes. - 2018-12-31 (bug #6294/REOPENED) The fix for preserving empty table tags didn't work if the PDI document was opened in document scope. - 2018-12-31 (bug #6315) XMP parser: namespace declarations in the "rdf:RDF" node were not read correctly (as opposed to the more common use in "rdf:Description"). As a consequence of this bug PDF/X standard identification with pCOS didn't work correctly for some documents. - 2018-12-21 (feature #2435) Adjusted the COM installer and samples to use the same directory structure and searchpath as the other packages. - 2018-12-20 (bug #6309) Adjust the BBox attribute of structure elements of imported Tagged PDF pages to the new location on the page. - 2018-12-20 (feature #2441) Add @Deprecated annotations (in addition to the existing @deprecated Javadoc comments) to the Java wrapper. This raises the minimum required Java version to 1.5. - 2018-12-17 (bug #6311) A layer construct created by InDesign could cause PDF_open_pdi_page() to fail with "Illegal array index XXX in function pdc__vtr_at" when importing a page with uselayers=true. - 2018-12-12 (bug #6305) Fixed a use-after-free that occurred with fonts with fallback fonts being loaded in object scope. - 2018-12-12 (bug #6300) PDF_info_text() with keyword "missingglyphs" could return incorrect results if Unicode control characters or glyphs from fallback fonts were present in the text. - 2018-12-12 (bug #6299) PDFlib created unnecessary ActualText if the application of OpenType features changed glyphs and the Unicode mapping of the resulting glyphs did not change compared to the original glyphs. - 2018-12-12 (bug #6298) PDF_fit_textline() option "justifymethod=charspacing" did not create justified text output when glyphs from a fallback font or Unicode control characters were present in the text. - 2018-12-12 (bug #6297) PDF_fit_textline() option "justifymethod=wordspacing" did not create justified text output when glyphs from a fallback font or Unicode control characters were present in the text. - 2018-12-12 (bug #6296) Kerning didn't work for glyphs taken from a fallback font. - 2018-12-12 (bug #6295) Using Unicode control characters like ZERO WIDTH NON-JOINER could prevent the application of OpenType features to glyphs near the character. - 2018-12-12 (bug #6293) Some OpenType features didn't work for glyphs taken from a fallback font. - 2018-12-12 (bug #6285) Using Unicode characters like NO-BREAK SPACE or NARROW NO-BREAK SPACE in textflow could result in insertion of arbitrary glyphs into the text if the line-breaking algorithm had to insert a line break near the character. - 2018-12-10 (feature #2400) Eliminated the font error "Fallback fonts are not possible" when the option "fallbackfonts" was applied to an OpenType font with the maximum number of glyphs (65536 for TT outlines, 65535 for CFF outlines). In the course of rewriting the affected code a number of text- and font-related bugs (mostly related to the use of fallback fonts) were detected and fixed which could happen for smaller fonts as well. - 2018-12-10 (feature #2429) Updated the installers for the .NET Classic and COM packages. =================================== PDFlib 9.1.2p10 (December 04, 2018) =================================== - 2018-12-04 (feature #2433) The "lang" option of PDF_begin_document() is now required in PDF/UA-1 mode. This is necessary because the natural language for some items cannot be declared otherwise, including the required dc:title XMP property. This also fixes some PAC validation problems with missing language identification of bookmarks, form fields and annotations. - 2018-12-04 (bug #6292) On z/OS the C++ example programs were not compiled with the necessary compiler option 'CONVLIT(,UNICODE)' for encoding wide-character literals as UTF-16. This resulted in the unexpected error message "Option 'outputformat' has bad keyword 'ebcdicutf8'" when executing any of the example programs. - 2018-12-04 (bug #6294) Refined the fix for bug #6134 since empty table elements could still be dropped when importing a page with tags. If an imported TD element contained an empty P element, not only the empty P was removed but also the containing TD, resulting in a damaged table structure. Similar logic has been implemented for Lbl and LBody list elements. Note that while empty elements are allowed in PDF/UA-1 this practice is not recommended. - 2018-11-21 (bug #6290) Added a heuristic to PDI for malformed xref sections which don't take the first entry (start of the free list) into account, i.e. counting from 1 instead of from 0. - 2018-11-21 (bug #6289) In textflows OpenType features were disabled for the base font when glyphs from a fallback font were used as well. - 2018-11-21 (bug #6287) Using OpenType features in connection with fallback fonts could result in truncated text or in the incorrect error message "Option 'fontsize' has bad value 0". ================================== PDFlib 9.1.2p9 (November 15, 2018) ================================== - 2018-11-15 (bug #6277) On Alpine Linux the .NET Core binding failed with the error message "System.DllNotFoundException: Unable to load shared library 'PDFlib_dotnetcore_native' or one of its dependencies". - 2018-11-13 (feature #2384) Added support for PHP 7.3. - 2018-11-09 (bug #6278) When colorizing PNG images containing a tRNS chunk with a bit depth other than eight an incorrect color key mask array was produced. - 2018-11-09 (bug #6276) PDFlib did not accept i5 license keys for AIX binaries used in the IBM i5 PASE environment. - 2018-11-08 (feature #2337) Implemented the "chromakey" option for PDF_load_image(). ================================== PDFlib 9.1.2p8 (November 06, 2018) ================================== - 2018-11-05 (feature #2336) Implemented the "decode" option for PDF_load_image(). - 2018-11-05 (feature #2051) Added support for .NET Core. - 2018-11-05 (bug #6270) Added 32-bit builds with 64-bit integer support (compiled with "-Duse64bitint") for the Perl 5.24, 5.26 and 5.28 bindings. - 2018-10-29 (bug #6188) Fixed several places where a single-byte string could be mistaken to be a UTF-16 string. - 2018-10-29 (bug #6260) Bidi symmetrical swapping did not work as expected for fallback fonts with shaping. - 2018-10-26 (bug #6198) PDF_fill_graphicsblock() failed with an unjustified "Unknown option" error message if the option list started with an UTF-8 BOM in non-Unicode-capable bindings or if the option list contained non-ASCII characters in Unicode-capable bindings. - 2018-10-26 (bug #6259) Unicode-capable language bindings incorrectly substituted characters references in option lists when global option "charref" was set to true. Character references are not substituted in option lists in general, except in options with the Unichar data type. - 2018-10-26 (bug #6261) PDF_convert_to_unicode() now accepts a NULL value for the "outputlen" parameter in the C binding if the "outputformat" option has the value "utf8" or "ebcdicutf8". - 2018-10-26 (bug #6262) In Unicode-capable bindings an error message about an invalid UTF-8 sequence was truncated for certain invalid UTF-8 sequences. - 2018-10-24 (feature #2406) Added support for Alpine Linux with musl libc. ================================= PDFlib 9.1.2p7 (October 15, 2018) ================================= - 2018-10-15 (bug #6246) Fallback fonts with shaping could result in wrong bidi reordering if neutral characters appeared at the border between master and fallback font. - 2018-10-14 (feature #2341) Reject ICC profiles with data color space Lab. Previously these were accepted although the color engine wasn't prepared to deal with ICCBased Lab color specifications and therefore triggered an exception. - 2018-10-10 (bug #6251) Implemented code signing for DSOs on macOS. Previously the unsigned PHP DSO made it impossible to use the PDFlib PHP binding on macOS Mojave. - 2018-10-10 (bug #6256) php-550-nts-VC9 is no longer delivered. - 2018-10-10 (feature #2399) Removed the unused Cobol binding from the MVS package. - 2018-10-04 (bug #6245) PDFlib could crash in PDF_end_document() after importing a document with an empty default viewing optional content configuration dictionary while specifying "uselayers=true" for PDF_open_pdi_document(). - 2018-10-04 (bug #6241) The minimum supported macOS version is now macOS 10.9. - 2018-09-27 (bug #6237) The Ant target "clean" for the Java example programs did not work as expected on Windows. - 2018-09-27 (bug #6244) Fixed a problem with decompression of Flate- and LZW-compressed streams having a /Predictor value of 10 or 11. - 2018-09-21 (bug #6232) No longer rely on name trees being sorted in pCOS. This makes pCOS more tolerant for incorrect PDF input, as the PDF Reference actually requires name tree entries to be sorted, and improves compatibility with Adobe Acrobat. =================================== PDFlib 9.1.2p6 (September 12, 2018) =================================== - 2018-09-13 (bug #6218) Textflow option "restore" only reset the options used in the most recent textflow option list, instead of resetting all options that were applied since the corresponding use of the "save" option. - 2018-09-12 (bug #6217) Redundant specifications of the "opacity" property in SVG resulted in the creation of an unnecessary graphics state parameter dictionary in the PDF output. - 2018-09-06 (bug #6225) Eliminated many Java 10 warnings when generating Javadoc HTML documentation. Many @param warnings nevertheless remain due to the current binding generator framework. - 2018-08-24 (bug #6214) PDF_open_pdi_callback() did not work correctly with large files >2GB on Windows and z/OS. Fixing this required a small change in the interface. - 2018-08-14 (bug #6201) PDFlib calculated an incorrect bounding box for textflows that contained a wrapbox, resulting in a wrong return value when calling PDF_info_textflow() with keyword "textheight". - 2018-08-03 (bug #6205) PDF_info_matchbox() could return a wrong value for keyword "count" if a textflow containing matchboxes was used inside a table. This problem was introduced in PDFlib 9.1.2p4. - 2018-07-27 (bug #6199) Fixed a crash in PDF_fill_graphicsblock() that occurred when -1 was passed for parameter "contents" and when there was no "defaultgraphics" property set in the block. ============================== PDFlib 9.1.2p5 (July 25, 2018) ============================== - 2018-07-25 (bug #6185) Fixed parsing of fragmented XML text in the XMP parser. - 2018-07-23 (feature #2366) Removed the REALbasic/Xojo binding. - 2018-07-05 (feature #1288) Migrated the Objective-C binding and iOS build from deprecated garbage collection to Automatic Reference Counting. - 2018-06-28 (feature #2322, feature #2370) Added support for Perl 5.28. ============================== PDFlib 9.1.2p4 (June 25, 2018) ============================== - 2018-06-27 (bug #6184) Fixed an invalid memory read beyond the end of a buffer in the XMP parser. - 2018-06-25 (bug #6175) With option "optimize=true" for PDF_begin_document() PDFlib created PDF output with an old-style cross-reference table that limited the size of the optimized PDF output file to approx. 9.3 GB. This restriction is removed, and PDFlib can now create optimized PDF output files with cross- reference streams that exceed 9.3 GB in size. - 2018-06-25 (bug #6182) PDFlib incorrectly rejected raw images with a size greater than two GB with the error message "Size (... bytes) of raw image file '...' doesn't match specified options". - 2018-06-25 (bug #6176) PDFlib incorrectly stopped processing of an SVG file with the error message "Floating point number 1000000000000000000.000000 too large for PDF" if a element contained a element as its first child and if the element was followed by further text within the element. - 2018-06-18 (bug #6172) When a property was specified twice via a PDF_set_info() and in an input XMP file in the "http://ns.adobe.com/pdfx/1.3/" namespace, the property was incorrectly written twice into the output XMP. - 2018-06-18 (bug #6169) Zero-width matchboxes were unexpectedly dropped from textflows. - 2018-06-18 (feature #2359) Created a new build configuration for PDFlib Mini Edition (ME) with support for security (encryption). - 2018-06-04 (feature #2358) Implemented the quoting mechanism specified in XMP for custom document info containing characters which are not allowed in XML names. This way the current naming restriction on custom keys for PDF_set_info() could be lifted. - 2018-05-30 (bug #6165) Fixed build errors that occurred when compiling PDFlib source code packages with a C89 compiler on HP Itanium. - 2018-05-24 (bug #6152) PDFlib created an invalid stream length for the document's XMP Metadata stream under the following conditions: - The output is AES-encrypted. - Option "optimize=true" is specified for PDF_begin_document(). - Option "autoxmp=true" is specified for PDF_begin_document() or PDF_end_document(). - 2018-05-24 (bug #6155) A crash occurred when importing a PNG file containing an alpha channel while creating PDF/VT output. - 2018-05-22 (bug #6155) PDFlib incorrectly allowed the creation of associated files without specifying the "relationship" option for PDF 2.0 output. Now option "relationship" is optional for PDF/A-2/3 and PDF 2.0 output. If the "relationship" option is not specified, PDFlib emits "Unspecified" for the relationship of an associated file. - 2018-05-17 (bug #6151) A crash occurred if an SVG file was loaded with option "templateoptions" and if PDF_info_graphics() was invoked with the keyword "fittingpossible" after the graphics had been placed with PDF_fit_graphics(). ============================= PDFlib 9.1.2p3 (May 07, 2018) ============================= - 2018-05-07 (bug #6146) The warning message 2568 "Conditions for option 'passthrough=true' are not fulfilled" was transformed into a logging output for logging class "text". - 2018-05-07 (bug #6136) Updated compiler requirements in readme-source.txt. - 2018-05-07 (bug #6141) For TrueType and OpenType fonts which contain both glyphs with a Unicode-PUA assignment and glyphs without any Unicode assignment (e.g. Arial Unicode MS) wrong glyphs were displayed. - 2018-05-03 (bug #6144) On z/OS a crash occurred through heap corruption if option "filenamehandling" was set to "honorlang" and if one of the environment variables "LANG", "LC_ALL" or "LC_CTYPE" contained an encoding specification that caused a filename conversion with iconv, e.g. "LC_ALL=en_US.IBM-1047". - 2018-05-03 (bug #6142) PDFlib incorrectly rendered the contents of elements in imported SVG files. - 2018-05-03 (bug #6139) Some modules were missing from the Borland/Embarcadero 32-bit and 64-bit libraries, causing error messages about missing symbols when trying to link against them. - 2018-05-03 (bug #6134) PDFlib incorrectly dropped tags from imported tagged table cells without any content, causing unevenly structured tables in the output document. Empty tags in table cells are now kept during PDF import, while empty tags outside of tables are still dropped. - 2018-04-17 (feature #2338) Calculate the bounding box for SVG graphics without absolute size information and improve the fitting algorithm for standalone SVG. - 2018-04-12 (bug #6113) Incorrect CSS in imported SVG could trigger the unexpected error message "load_font: Required option 'fontname' is missing" and a memory leak. - 2018-04-12 (bug #6120) Fixed a crash in SVG import that occurred when the keyword "inherit" was present in a font property that was applied to the top-level element. - 2018-04-12 (bug #6125) Fixed a crash that occured when specifying "autoxmp=true" for PDF_begin_document() while creating PDF/X-1a:2001 output. - 2018-04-11 (bug #6124) SSE2 extensions in source builds are now disabled by default. - 2018-04-04 (bug #6116) Invalid CSS in SVG could cause a memory leak. - 2018-04-04 (bug #6117) When a graphical element in SVG referenced a element with a "transform" attribute, the clip path's transformation was incorrectly applied to the graphical element. - 2018-03-28 (bug #6108) Invalid CSS in an imported SVG file could cause an endless loop. - 2018-03-28 (bug #6106) Fixed a problem in the SVG CSS parser that could cause invalid memory reads and incorrect font sizes for SVG text. - 2018-03-28 (bug #6103) Font properties defined in internal or external CSS stylesheets were incorrectly applied to all elements in an imported SVG file. =============================== PDFlib 9.1.2p2 (March 22, 2018) =============================== - 2018-03-21 (feature #2335) Implemented the options "forcesrgb", "honoriccprofile", and "iccprofilegray/iccprofilergb/iccprofilecmyk" of PDF_load_graphics() for improved ICC profile control for SVG graphics. PDFlib now also ignores a CMYK profile in SVG if it is identical to the PDF/X-4/5 output intent to avoid the respective error. - 2018-03-22 (bug #6094) Placing an image containing a clipping path as a child of the element with tagged PDF output resulted in the error message "Element type 'Document' cannot contain direct content, but only other structure elements'". - 2018-03-22 (bug #6085) Fixed several scenarios where PDFlib incorrectly allowed using handles of templates that were not yet finished with PDF_end_template_ext(). Now the error message 'Template handle ... must not be used before PDF_end_template_ext() was called for the corresponding template' is emitted in these situations. - 2018-03-22 (bug #6093) Querying the resolution for an image mask of an image retrieved via PDF_info_image(..., "imagemask", ...) with the 'resx' and 'resy' keywords of PDF_info_image() always resulted in a resolution of 72 dpi. Now the same 'resx' and 'resy' values as for the original image are returned for the image mask. - 2018-03-21 (bug #6096) Closing a template handle with PDF_close_image() that was used with the 'softmask' suboption 'template' of PDF_create_gstate() caused an exception 'Illegal array index ... in function pdc__hvtr_at' in PDF_end_document(). - 2018-03-21 (bug #6101) Option "movieposter" for PDF_create_annotation() now accepts an image handle in addition to the keywords "auto" and "none". This allows to assign an image as a poster to an annotation of type "Movie". - 2018-03-16 (bug #6099) Fixed the misleading warning that pointed out why a template could not be marked as an Encapsulated XObject in PDF/VT mode. Since the imlementation of feature #2242 in PDFlib 9.1.1 the suboption 'colorspace' of option 'transparencygroup' is required for PDF_begin_template_ext() to get an Encapsulated XObject. - 2018-03-15 (feature #2333) Added the keyword "pathlength" to PDF_info_path(). - 2018-03-15 (bug #6092) If the 'matchbox' suboption 'clipping' was specified with the default values '{0 0 100% 100%}' or with '{0 0 }' where and are the values of the object width and height, PDFlib did not create a clipping rectangle. - 2018-03-09 (feature #2334) Ignore a CMYK ICC profile in an image or SVG graphics if it is identical to the PDF/X-4/5 output intent profile. This avoids an error message for identical profiles without affecting the image colors. - 2018-03-08 (bug #6086) The SVG CSS 'font' property was evaluated incorrectly if the sub-properties 'font-style', 'font-variant' or 'font-weight' appeared in an unexpected order. - 2018-03-08 (bug #6078) PDFlib did not evaluate the SVG element correctly if the 'systemLanguage' attribute was not present for a child element. - 2018-03-01 (bug #6077) When using options 'fitmethod=clip' with PDF_fit_graphics() when no fitbox is available a wrong clipping was applied. - 2018-03-01 (bug #6073) The PDF output for an imported SVG file that only used ICCBased CMYK colors through colors defined with the SVG Color Extension contained an unnecessary initialization to sRGB black at the beginning of the content stream. - 2018-03-01 (bug #6076) PDFlib crashed when importing an SVG file that contained a 'font' property within a