Changes for version 3.023 - 2021-07-15

  • lib/PDF/Builder.pm, INFO/DEPRECATED FUTURE: Builder.pm's "default()" method may need to be renamed. Some time after Perl 5.26, Perl::Critic started flagging "default" as a reserved keyword. This needs to be further investigated.
  • .github/workflows/test.yml Update PATH for new ImageMagick level.
  • lib/PDF/Builder/Resource/XObject/Image/TIFF_GT.pm, t/tiff.t Fix for ticket #154 by @carygravel, and add a test for bilevel+alpha where rows are not filling out a full array of bytes.
  • version (for distribution build), README.md, lib/PDF/Builder.pm, t/00-all-usable.t, .gitignore Modified to prereq Perl 5.22 instead of 5.20 (is 6 years old now). Also Graphics::TIFF minimum upped to 16 and Image::PNG::Libpng to 0.57 due to changes. Keep files up to date on GitHub so can successfully run without full build. Put "version" in GitHub as it's now fairly involved and I don't want to accidentally lose it!
  • Makefile.PL, MANIFEST, META.json (add), META.yml (add), .perl-version (deleted), optional_update.pl (add), README.md Modify build process to have optional prereqs properly installed. Also ensure that mandatory and optional prereqs are consistently updated and handled. Since the vast majority of users will use the default of installing all optional prereqs, the selection process has been moved from Makefile.PL to optional_update.pl (for those manually running Makefile.PL). optional_update.pl updates Makefile.PL, META.json, and META.yml upon selection of which (if any) optional prerequisites are to be installed on a manual run of Makefile.PL. I don't want to risk getting META.json and META.yml (needed for properly installing the "recommends" optionals) out of sync by failing to update them at install from Makefile.PL, so all are now shipped with all optionals selected.
  • .gitattributes, .github/workflows/test.yml Added .gitattributes to stop certain line-end changes that were causing CI tests to fail, add Windows tests to CI. From @carygravel.
  • lib/PDF/Builder/Content.pm Problem with use of "pi" constant caused a warning on compile in one CPAN smoke test (Perl 5.20 for one tester). Changed "-pi" in one expression to "-1*pi" and hopefully that will silence the messages.
  • lib/PDF/Builder.pm, lib/PDF/Builder/Page.pm, INFO/DEPRECATED, t/annotate-deprecations.t Per PDF::API2, simplify Builder's ' fixed' to ' opened'. Rename 'openpage()' to 'open_page()' and deprecate old name.
  • INFO/Changes-ver_2, t/pdf.t Per changes in PDF::API2, sync up with 2.040 release. There are still a small number of changes not implemented (yet) in PDF::Builder, which either appear to be unnecessary, or the underlying code has changed too much to cleanly port the changes without a massive rewrite.
  • t/deprecations.t Update for new PDF::API2 t-tests and a number of other deprecated items. Test both deprecated interfaces and their replacements.
  • lib/PDF/Builder/Content/Text.pm, examples/BarCode-Boxes-Content- ContentText-Rotated.pl, examples/021_synfonts-022_truefonts- 022_truefonts_diacrits_utf8-023_cjkfonts-024_bdffonts-040_annotation Per 3.022 change of lead() to leading(), update examples to use leading() instead of lead().
  • In releases 3.020 through 3.022, INFO/DEPRECATED erroneously listed PDFStr() and PDFUtf() as being scheduled for removal after October 2022. These two routines ARE deprecated (use PDFString() instead), but there are currently no plans to REMOVE them.
  • .gitignore, lib/PDF/Builder.pm, lib/PDF/Builder/Basic/PDF/File.pm, t/tiff.t Some minor cleanup, fix TIFF tests because grouped skips don't seem to work properly on Strawberry Perl, initialize $xmin in File.pm to prevent error message.
  • lib/PDF/Builder/Basic/PDF/Filter/LZWDecode.pm, lib/PDF/Builder.pm, lib/PDF/Builder/Resource/XObject/Image/TIFF-TIFF_GT.pm, lib/PDF/Builder/Resource/XObject/Image/TIFF/File-File_GT.pm, t/filter-lzwdecode.t, t/tiff.t, t/00-all-usable.t, Makefile.PL Further improvements to TIFF LZW file handling [ref GH 151 and PR 156] for single and multi-strip, and horizontal predictor. Continuation of work to stop converting LZW-compressed TIFF to Flate. Code by @carygravel. Increase required Graphics::TIFF version to 10 due to fix in GT.
  • examples/README, examples/examples.output Discuss the issue of close, heavy lines in the example bar codes appearing to merge or "blot" together. This is at least partially a consequence of lower resolution display screens (rounding errors), and although the bars separate when printed, I'm still concerned that they will not be reliably scannable.
  • All files (.pm and .pl) containing $LAST_UPDATE can now access this string from outside the file, in the same manner as $VERSION. The variable declarator has been changed from 'my' to 'our' during package build.
  • INFO/Changes-ver_2, /lib/PDF/Builder/Basic/PDF/String.pm, t/string.t Per PDF::API2 changes related to [RT 134957], change some regex flags to fix encoding of \n in a PDF string.
  • t/tiff.t add version check (not just if installed) for ImageMagick and Ghostscript. Some smoke tests apparently blew up for using too low level versions. If too low version, or any problems determining the version, tiff.t fails gracefully by skipping those tests. From @carygravel.
  • t/tiff.t use a temporary directory for various test files, enabling use from a Read-Only directory and/or running tests in parallel (from @ppisar, #153).

Modules

Facilitates the creation and modification of PDF files
Add annotations to a PDF
Various utilities and support routines
Corresponds to a PDF array. Inherits from PDF::Builder::Basic::PDF::Objind
A special form of PDF::Builder::Basic::PDF::String which holds the strings true or false
PDF Dictionaries and Streams. Inherits from PDF::Builder::Basic::PDF::Objind
Holds the trailers and cross-reference tables for a PDF file
Abstract superclass for PDF stream filters
compress and uncompress stream filters for ASCII-85
compress and uncompress stream filters for ASCII-Hex
compress and uncompress stream filters for Flate
compress and uncompress stream filters for Lempel-Ziv-Welch
compress and uncompress stream filters for Run-Length
Literal PDF Object. Inherits from PDF::Builder::Basic::PDF::Objind
Inherits from PDF::Builder::Basic::PDF::String and stores PDF names (things beginning with /)
PDF Null type object. This is a subclass of PDF::Builder::Basic::PDF::Objind and cannot be subclassed.
Numbers in PDF. Inherits from PDF::Builder::Basic::PDF::String
PDF indirect object reference. Also acts as an abstract superclass for all elements in a PDF file.
Represents a PDF page, inherits from PDF::Builder::Basic::PDF::Pages
a PDF pages hierarchical element. Inherits from PDF::Builder::Basic::PDF::Dict
PDF String type objects and superclass for simple objects that are basically stringlike (Number, Name, etc.)
Utility functions for PDF library
Methods for adding graphics and text to a PDF
Simple hyphenation capability
additional specialized text-related formatting methods. Inherits from PDF::Builder::Content
additional documentation for Builder module
Lightweight PDF creation methods
matrix operations library
Add named destination shortcuts to a PDF
Manage PDF outlines (a.k.a. bookmarks)
further Outline handling. Inherits from PDF::Builder::Outline
Methods to interact with individual pages
Base class for PDF resources. Inherit from PDF::Builder::Basic::PDF::Dict
Base class for font resources
Base class for CID fonts
Base class for CJK fonts
additional code support for TT font files. Inherits from PDF::Builder::Basic::PDF::Dict
Base class for PDF color spaces
colorspace handling for Device CMYK. Inherits from PDF::Builder::Resource::ColorSpace
base colorspace support for indexed color models. Inherits from PDF::Builder::Resource::ColorSpace
colorspace support for Device RGB. Inherits from PDF::Builder::Resource::ColorSpace::Indexed
colorspace support for "Web Safe" Device RGB colors. Inherits from PDF::Builder::Resource::ColorSpace::Indexed
Support for color space separations
translate color names into RGB settings
Graphics state dictionary support
some common support routines for font files. Inherits from PDF::Builder::Resource::BaseFont
Module for using bitmapped Fonts.
Module for using the 14 PDF built-in Fonts.
font-specific information for Bank Gothic font (not standard PDF core)
font-specific information for regular Courier font
font-specific information for bold weight Courier font
font-specific information for bold weight + slanted Courier font
font-specific information for slanted Courier font
font-specific information for regular Georgia font (not standard PDF core)
font-specific information for bold weight Georgia font (not standard PDF core)
font-specific information for bold weight + italic Georgia font (not standard PDF core)
font-specific information for italic Georgia font (not standard PDF core)
font-specific information for regular Helvetica font. Metrics and glyph list from Arial typeface.
font-specific information for bold weight Helvetica font. Metrics and glyph list from Arial typeface.
font-specific information for bold weight + slanted Helvetica font. Metrics and glyph list from Arial font.
font-specific information for slanted Helvetica font. Metrics and glyph list from Arial font.
font-specific information for the Symbol font
font-specific information for bold weight Times font
font-specific information for bold weight + italic Times font
font-specific information for italic Times font
font-specific information for regular (roman) Times font
font-specific information for regular Trebuchet font (not standard PDF core)
font-specific information for bold-weight Trebuchet font (not standard PDF core)
font-specific information for bold weight + italic Trebuchet font (not standard PDF core)
font-specific information for italic Trebuchet font (not standard PDF core)
font-specific information for regular Verdana font (not standard PDF core)
font-specific information for bold weight Verdana font (not standard PDF core)
font-specific information for bold weight + italic Verdana font (not standard PDF core)
font-specific information for italic Verdana font (not standard PDF core)
font-specific information for WebDings symbol font (not standard PDF core)
font-specific information for WingDings symbol font (not standard PDF core)
font-specific information for Zapf Dingbats symbol font
support routines for using PostScript fonts. Inherits from PDF::Builder::Resource::Font
Module for using synthetic Fonts.
preparsed uniglyph.txt file information
list of standard paper sizes and their dimensions
support stub for patterns. Inherits from PDF::Builder::Resource
support stub for shading patterns. Inherits from PDF::Builder::Resource
Unicode Font Support
Base class for external objects
Base class for external form objects
Base class for one-dimensional barcodes
specific information for CodaBar bar codes. Inherits from PDF::Builder::Resource::XObject::Form::BarCode
Code 128 and EAN-128 barcode support
specific information for 3-of-9 bar codes. Inherits from PDF::Builder::Resource::XObject::Form::BarCode
specific information for EAN-13 bar codes. Inherits from PDF::Builder::Resource::XObject::Form::BarCode
specific information for int 2-of-5 bar codes. Inherits from PDF::Builder::Resource::XObject::Form::BarCode
support routines for Forms. Inherits from PDF::Builder::Content, PDF::Builder::Content::Text, and PDF::Builder::Resource::XObject::Form
Base class for external raster image objects
support routines for Graphics Development image library. Inherits from PDF::Builder::Resource::XObject::Image
support routines for GIF image library. Inherits from PDF::Builder::Resource::XObject::Image
support routines for JPEG image library. Inherits from PDF::Builder::Resource::XObject::Image
support routines for PNG image library (using pure Perl code). Inherits from PDF::Builder::Resource::XObject::Image
support routines for PNG image library (using Image::PNG::Libpng). Inherits from PDF::Builder::Resource::XObject::Image
support routines for PNM (Portable aNy Map) image library. Inherits from PDF::Builder::Resource::XObject::Image
support routines for TIFF image library
support routines for TIFF image library (Graphics::TIFF enabled)
TIFF image support (Graphics::TIFF enabled)
support routines for finding line breakpoints with Unicode text
utility package for often-used methods across the package.