See also Changes-ver_2 for changes released for PDF::API2, and incorporated
into PDF::Builder.
See also Changes_2017 for earlier version 3 release logs.
3.012 2018-10-26
new PNG_IPL module got caught by t/00-all-usable.t on test systems that did
not have Image::PNG::Libpng installed. Exclude from test, and add
reminder in Makefile.PL to update 00-all-usable.t.
3.011 2018-10-25
move .travis.yml.HOLD and dist.ini.old from the root to INFO/, to unclutter
the root. It is unknown when and if they will ever be used.
lib/PDF/Builder/Annotation.pm [ref RT 125917] minor fix to properly
implement a default target page fit (-xyz), otherwise the link()
method would not go to the desired target page. Some minor POD updates
to indicate that some functionality depends on the PDF reader (e.g.,
mouseover text on a link).
lib/PDF/Builder/XObject/Resource/Image/PNG.pm-PNG_IPL.pm
minor POD updates
lib/PDF/Builder/XObject/Resource/Image/PNG-PNG_IPL-TIFF-TIFF_GT.pm,
Makefile.PL, MANIFEST, lib/PDF/Builder.pm, lib/PDF/Builder/Docs.pm,
t/png.t
[ref RT 124349] If libpng.a and its wrapper, Image::PNG::Libpng are
installed, use them to process PNG files for inclusion into a PDF
document. If this library is not installed, or the user directs that
it is not be used via the -nouseIPL option, the existing pure Perl
PNG library (PNG.pm) will be used. The new library (PNG_IPL.pm) is
considerably faster than the old one and offers support for 16 bits
per sample and interlaced images*. Documentation has been updated in
TIFF and TIFF_GT, and functions LA_GT() and LA_IPL() have been added
to Builder to check LibraryAvailability (package availability) for
Graphics::TIFF and Image::PNG::Libpng, so you can know in advance
whether it is safe to try to use certain image functionality.
* interlacing is removed during processing, so it is irrelevant to
PDF, and 16bps channels (force PDF 1.5) can be reduced to 8bps,
permitting PDF 1.4 output, by use of the -force8bps option.
Makefile.PL try directing support issues to GitHub rather than CPAN RT
lib/PDF/Builder.pm while working on 124349, I noticed that a partially
transparent RGBA PNG file (white background made transparent) with -notrans
option was showing as transparent. The problem was found to be that no
options given in the image_png() call, such as -notrans, were being passed
to the PNG image processing routine. This has been fixed.
docs/buildDoc.pl modified to first look for .pod files, and then .pm files
for producing documentation .html files. It still has some issues with
finding too much input, but is generally workable. The POD search path
needs further work, as references to other packages often don't work
(don't produce a working link, but a severe error message).
lib/PDF/Builder.pm internal routine proc_pages() renamed _proc_pages(),
walk_obj() renamed _walk_obj(), and add POD for save() method. There is a
release() method that is undocumented but it's not clear whether it's
internal. Improve documentation of mediabox and other *box methods.
lib/PDF/Builder/Annotation.pm-Matrix.pm-Outline.pm-Page.pm minor POD fixes.
There are a lot of low level calls (e.g., Array.pm) that perhaps should not
be considered as part of the User API (i.e., remove from POD).
lib/PDF/Builder/Outline.pm-NamedDestination.pm-Annotation.pm, INFO/DEPRECATED
deprecate pdfile() method and replace by pdf_file() (same as done earlier
for Annotation.pm). pdfile() will be removed on or after October, 2020.
lib/PDF/Builder/XObject/Resource/Image/TIFF_GT.pm-TIFF.pm, INFO/DEPRECATED
remove warning and support for Blackls1 (should be BlackIs1).
lib/PDF/Builder/Content.pm, examples/Content.pl
[ref RT 124218] add -strikethru text capability similar to -underline.
New example of strike-through in Content.pl examples.
lib/PDF/Builder.pm [ref #93] Bringing PDF::Builder into the 21st century
add -outver option (default: 1.4) to new() as output PDF version. It will
be increased by any PDF file read in with a higher PDF level (with message)
or by a call to version().
add -msgver option (default: 1) to output (value 1) a warning message when
the PDF output version is increased by verCheckInput() or verCheckOutput().
A value of 0 suppresses the warning messages.
add verCheckInput(version) to give warning if PDF just read in is of higher
PDF version than the current version, and to increase the current version
to that level. Implemented for reading of PDF files.
WARNING: just because the PDF output version has been increased does NOT
guarantee that any particular content will be handled correctly! There
are many known cases of PDF 1.5 and up files being read in, that have
content that PDF::Builder does not handle correctly, corrupting the
resulting PDF. Pay attention to run-time warning messages that the PDF
output level has been increased due to a PDF file being read in, and check
the resulting file carefully.
add verCheckOutput(version, description) to increase the output PDF version
if a PDF feature that requires a higher PDF version is requested. At this
time, there are no output features higher than 1.4.
in version(), give warning if LOWERING the output PDF version (not
suppressed by -msgver).
lib/PDF/Builder.pm, lib/PDF/Builder/Basic/PDF/File.pm-Name.pm
internally store PDF version as full number (e.g., 1.4) instead of just the
minor version (e.g., 4), as PDF 2.0 has been announced.
t/02-xrefstm.t, t/03-xrefstm-index.t
both t-tests read in a PDF-1.5 file, so add a call to new(-outver=>1.5) to
silence the warning message that the maximum version is being increased.
lib/PDF/Builder/Resource/Basefont.pm-CIDFont.pm-UniFont.pm
fix typo variable name $ident to $indent (indentation)
lib/PDF/Builder/Resource/UniFont.pm
[ref RT 126274/#96] (reporter: fcc_del) by adding missing indentation
value to recursive text() call (rather than reporter's more complex fix).
lib/PDF/Builder/Content.pm
[ref RT 98539] (need to verify flatness function) close. According to PDF
spec, there's no real way to tell by eye whether it's within tolerance, and
results are unpredictable if you try to force visible line segments with
a higher tolerance. Also update POD to clarify the range of permissible
tolerance values, and silently clamp the input value to be in that range.
3.010 2018-08-20
.gitignore, Changes, docs/buildDoc.pl, lib/PDF/Builder/Content.pm,
lib/PDF/Builder/Resource/XObject/Image/PNG.com
fix some minor glitches discovered in final testing
lib/PDF/Builder/Basic/PDF/Array.pm-Bool.pm-Dict.pm,
lib/PDF/Builder/Content.pm, lib/PDF/Builder/Resource/ColorSpace/DeviceN.pm,
lib/PDF/Builder/Resource/XObject/Image/PNG.pm
fix some minor POD errors
Changes_2017, Changes-ver_2, DEPRECATED, KNOWN_INCOMP, LICENSE, PATENTS,
README, SUPPORT
move to new INFO/ directory, as things were starting to get a little
crowded in the root directory. Changes and MANIFEST are used by the
system and can not be moved. MANIFEST updated to reflect new structure.
Changes, Changes_2017, MANIFEST
split up Change logs by year, to make them easier to handle.
docs/, docs/buildDoc.pl, MANIFEST
provide a tool and place to build the HTML pages from PODs in the
PDF::Builder module sources. The .html files are NOT shipped with either
the Perl build or on GitHub.
lib/PDF/Builder/Resource/XObject/Image/PNG.pm
[ref RT 124349] code cleanup while looking at issue of why PNG RGBA
processing is so incredibly slow. Suspect that the heavy use of the
Perl vec() call may have something to do with it. To be continued...
lib/PDF/Builder/Content.pm, examples/Content.pl, examples/Bspline.pl,
t/content.t, MANIFEST, examples.bat
[ref CTS 8] add "bspline" method to draw a smoothly continuous curve
(using blended cubic Bezier curves) through all the given points. In
addition, the first and/or last points may be specified as visible or
invisible straight line or curved segments in order to constrain the
spline's behavior at the endpoints.
lib/PDF/Builder/Content.pm, examples/Content.pl, t/content.t, DEPRECATED
[ref CTS 8] change "spline" method name to "qbspline", and deprecate
"spline". This is to reflect that this method is actually a piecewise
(non-continuous) series of quadratic Bezier curves, and not a true spline.
lib/PDF/Builder.pm, lib/PDF/Builder/Docs.pm, MANIFEST
Add POD commentary on input and output PDF version supported.
Move POD function details out of Builder.pm to a lower level "Docs"
routine, in order to reduce the POD clutter.
.perl-version, dist.ini.old, .travis.yml.HOLD, Makefile.PL,
lib/PDF/Builder.pm, lib/PDF/Builder/UniWrap.pm, MANIFEST
change minimum Perl release level from 5.8.6 to Perl 5.16.0, per PDF::API2.
The intent is to "support major Perl versions released in the past six
years, plus one major release before that one. This should provide
backward compatibility for the life of most LTS server distributions,
while eliminating the need to troubleshoot warnings and bugs that only
show up in increasingly-ancient versions of Perl." For this release, it
means that the minimum supported Perl is 5.16 (first released 2012-05-20...
see https://www.cpan.org/src/ "First release in each branch of Perl" for
dates, NOT "Latest releases in each branch of Perl"!). The next version
bump (to 5.18) should be after 2019-05-18.
lib/PDF/Builder/Resource/CIDFont/TrueType/FontFile.pm
use confess (Carp.pm) rather than die, per PDF::API2.
examples/*, examples.bat
moved output PDFs for several examples from the current directory to the
examples directory, in the same style as the rest of the example outputs.
Note that contrib.bat still outputs in the current directory.
contrib/text2pdf.pl, examples/020_corefonts--021_psfonts--021_synfonts--
022_truefonts--022_truefonts_diacrits_utf8--023_cjkfonts--026_unifont2--
ShowFont.pl, examples/Windows/Win32.pm, lib/PDF/Builder.pm,
lib/PDF/Builder/Annotation.pm--Content.pm--Lite.pm--Page.pm,
lib/PDF/Builder/Basic/PDF/Page.pm--Pages.pm,
lib/PDF/Builder/Resource/CIDFont/TrueType/FontFile.pm,
lib/PDF/Builder/Resource/XObject/Image/TIFF_GT.pm, t/author-critic.t--
author-pod-syntax.t--font-synfont.t--font-ttf.t--font-type1.t--
rt120397.t--rt120450.t
minor code styling changes to make perlcritic (level 5) happy. Some changes
from PDF::API2 for level 4/5.
t/*, contrib/pdf-debug.pl--text2pdf.pl, examples/012_pages--021_psfonts--
030_colorspecs--BarCode.pl--Content.pl--ContentText.pl--ShowFont.pl,
lib/PDF/Builder/Annotation.pm--Content.pm--Lite.pm--Matrix.pm--Outline.pm--
Page.pm--Resource.pm--UniWrap.pm--Util.pm,
lib/PDF/Builder/Content/Text.pm,
lib/PDF/Builder/Basic/PDF/Array.pm--Dict.pm--File.pm--Filter.pm--
Literal.pm--Null.pm--Objind.pm--Pages.pm--String.pm,
lib/PDF/Builder/Basic/PDF/Filter/FlateDecode.pm--ASCII85Decode.pm,
lib/PDF/Builder/Resource/CIDFont.pm--ColorSpace.pm--ExtGState.pm--
Glyphs.pm,
lib/PDF/Builder/Resource/CIDFont/CJKFont.pm--TrueType.pm,
lib/PDF/Builder/Resource/CIDFont/TrueType/FontFile.pm,
lib/PDF/Builder/Resource/Font/CoreFont.pm,
lib/PDF/Builder/Resource/XObject/Form/BarCode.pm,
lib/PDF/Builder/Resource/XObject/Image/GIF.pm
minor code styling changes to make perlcritic (level 4) happy, including
adding explicit "return" on all routines where missing, and not using
variables $a and $b ("magic" according to perlcritic). Some changes
suggested by PDF::API2 for this. There are many other level 4 errors yet
to be gotten rid of: "Code before warnings" and "Warnings disabled at" due
to use of "no warnings", "Close filehandles as soon as possible" due to
too many lines between "open" and "close" calls, "Always unpack @_ first"
(perlcritic doesn't like much about using the @_ array), "Subroutine name
is a homonym for a builtin function" (e.g., our own "open" in contrast to
CORE::open), "Symbols are exported by default" (doesn't like @EXPORT_OK
usage). Most other perlcritic level 4 complaints were permanently fixed,
but a few, such as "grep" and "map" formats, have been suppressed with
"no critic" statements. Those might be revisited later.
pc.bat
add batch file to run perlcritic
lib/PDF/Builder/Page.pm
a few minor code styling changes, per PDF::API2. Most of the PDF::API2
changes were already in PDF::Builder, and some I declined because the
style was not consistent.
examples.bat, examples/024_bdffonts, examples/examples.output
some minor improvements to bitmapped (BDF) display output. Bitmap font
support is still _very_ buggy! Does anyone actually _use_ bitmapped fonts?
lib/PDF/Builder.pm
stringify() make sure return value has at least empty string for content.
Several cases of -unicodemap check for true, not 1. After PDF::API2
changes for perlcritic.
lib/PDF/Builder/Content.pm
outobjdeep() check -docompress is true, not 1. bogen() explicitly default
move, larger, reverse to "false" (0). isvirtual(), ' apiistext' check for
true, not 1. After PDF::API2 changes for perlcritic.
lib/PDF/Builder/Basic/PDF/File.pm
add support for cross-reference streams (PDF 1.5) using 64-bit field
widths, per PDF::API2 changes.
.travis.yml.HOLD, MANIFEST
name restore (from .tgravis.yml). May attempt at some point to make use of
Travis for testing. Currently my system seems to not be supportive of
Travis modules, and I don't have a Travis account. I vaguely recall the
CPAN system trying to use .travis.yml in my first release, and requiring
an immediate release update, so I'm not using the name .travis.yml for now.
(see Changes_2017 for earlier changes)
(see Changes-ver_2 for changes to PDF::API2 up through 2.031)