Change history for Perl extension PDF::Table. === Version 1.007 (2025-03-25) devtools/PDFversion.pl, devtools/TableBuild.pl, util/3_examples.pl Updated to modern Perl standards to make 1_pc.pl PerlCritic happy. lib/PDF/Table.pm Permit 'trans' or 'transparent' background color (mostly for overriding a default bg color). Per #80 (reported by @az143). lib/PDF/Table.pm, examples/colspan.pl Fix colspan interference with a header row. Add (commented out) test code to show effect in colspan example. Per #78 (reported and fix supplied by @BlueWlvrn). === Version 1.006 (2024-03-21) devtools/* As was done with PDF::Builder, gather together the home-brew tools needed to build a release, with instructions. This ensures that someone taking over PDF::Table (for whatever reason) has a chance to hit the ground running. examples/*.pl Add ability to read an ENV environmental variable 'PDF_prefLib' to get the preferred library to use (API2 or Builder). Checks for command line A or B (or -A -B), ENV{PDF_prefLib} A or B, PDF::API2 or PDF::Builder, examples/PDFpref file A or B, PDF::API2 or PDF::Builder. This is of real interest only when BOTH libraries are installed, and you need to pick one or the other to run with. Note that util/3_examples.pl also has the ability to give 'A' or 'B' on the command line to indicate a preference for API2 or Builder (if both are installed). Note that the t-tests use a dummy library PDFAPI2Mock, that provides enough of the interface to let the tests be run, regardless of whether you already have API2 or Builder installed! However, you will still need to have at least one of the two installed in order to run the examples or otherwise use PDF::Table. lib/PDF/Table.pm, examples/no_repeat.pl (new), util/3_examples Was incorrectly defaulting undefined header repeat switch, in a manner that did not allow the switch to be '0': no repeating the header (#77). Add new example of multipage table without repeating header. README.md update to point to new Home Page structure on catskilltech.com including both full documentation and examples === Version 1.005 (2023-01-28) lib/PDF/Table.pm Update cell checking when using markup, so that anything which CAN be by default stringified, will be. Some customers are using default or implicit stringification of objects, which was being caught as an unsupported data type, and rendered as "(invalid)" in a cell. The downside is that if you send something nonsensical (e.g., reference to a SCALAR), you will see the stringified reference (address), as done in the 1.003 and earlier versions. Makefile.PL remove PROVIDES clause, as was getting build warnings about it. === Version 1.004 (2023-01-21) lib/PDF/Table.pm, lib/PDF/Table.pod, INFO/SPONSORS (new), INFO/Table.html, MANIFEST For PDF::Builder ONLY, allow specification of cell 'markup' (Markdown or HTML), to permit great flexibility in cell content. See PDF::Builder's examples/Column.pl for an example of usage. This work (as well as markup changes for PDF::Builder) has been kindly sponsored by Amtivo Group (see INFO/SPONSORS). lib/PDF/Table.pm, examples/sample1-size-vsizes.pl The 'Times' font should be named 'Times-Roman', to conform with the correct core font naming. PDF::Builder no longer silently accepts 'Times' as an alias for 'Times-Roman', and now gives a warning. xt/manifest.t, xt/pod.t, MANIFEST, util/2_t-tests.pl Move author tests from t/ to xt/ examples/chess.pl PDF::API2 (PREVIOUS to release 2.044) has a bug in its TTF handling, where it fails to translate some Unicode points ("U+nnnn" number) to the appropriate font glyph entry, and instead puts the Unicode point in the glyph list. This is incorrect, and usually results in a mismapping. As of PDF::API2 v 2.044, chess.pl seems to be working again. examples/*.pl If command line -A or -B, add prefix A_ or B_ to the output file name. This can be useful when using -A or -B with util/3_examples.pl to generate different output PDFs for PDF::API2 and PDF::Builder. Keep in mind that an example given without -A or -B will not add the prefix. lib/PDF/Table.pm, lib/PDF/Table.pod, INFO/Table.html, examples/vsizes.pl (new), util/3_examples.pl Dry run to return vertical size (overall, header, [footer], each row), no output to PDF, with "ink" set to 0. lib/PDF/Table.pod (moved), MANIFEST, util/pod2cpanhtml.pl, Makefile.PL Move .pod up a level (thanks to "perlpunk") lib/PDF/Table/Table.pod, INFO/Table.html, examples/chess.pl, INFO/Changes_2019, lib/PDF/Table.pm Typos caught by lintian (via emollier) and codespell (via mdeweerd). CONTRIBUTING, MANIFEST add Contribution guide === Version 1.003 (2022-07-05) lib/PDF/Table/ColumnWidth.pm, lib/PDF/Table/Table.pod, examples/size.pl (new), MANIFEST, util/3_examples.pl Add the ability to specify fixed and relative sizes for column widths, rather than having to accept system-calculated widths. You give a string to the 'size' optional global setting specifying the absolute width of a column (in, pt, cm, mm, em, or ex units), and/or a unit of '*' to indicate remaining space is to be split up among these columns. lib/PDF/Table.pm, lib/PDF/Table/Settings.pm, MANIFEST Split out deprecated_settings and check_settings functions into new file. lib/PDF/Table.pm, lib/PDF/Table/ColumnWidth.pm, MANIFEST, t/PDF-Table.t Split out CalcColumnWidths function into new file. examples/chess.pl PDF::API2 work-around added for font-handling change in 2.043. The problem is being investigated, but the chess example almost works for now. lib/PDF/Table.pm, lib/PDF/Table/Table.pod, MANIFEST Split out documentation into separate POD file. lib/PDF/Table.pm Fix handling of degenerate case of header-only, without data rows (#71). lib/PDF/Table.pm, t/PDF-Table.t Finish cleanup of column width calculations (#68, #72). Makefile.PL, LICENSE, MANIFEST.SKIP Build (at install) META.* with "provides" member. Add separate license file. Add some items to MANIFEST SKIP file to clean up. lib/PDF/Table.pm $LAST_UPDATE changed from 'my' storage class to 'our', so can be accessed programmatically. lib/PDF/Table.pm Absolute minimum with of a column reset to at least $min_col_width (a new global default) to prevent text_block() width errors. Update build process to ensure consistent "unix" formatting of most human-readable files. Some non-CPAN builds were complaining about MS-DOS format (CRLF line ends) on some files. lib/PDF/Table.pm, examples/chess.pl, t/PDF-Table.t Fix handling of max_w [GitHub #68], rewrite column width calculations. This may result in some noticable changes in column widths from before. lib/PDF/Table.pm Remove requirement that "empty cell" text not be an empty string (allow $empty_cell_text to be ''), permitting completely empty cells. lib/PDF/Table.pm minor comment updates README.md, lib/PDF/Table.pm, INFO/Table.html 2022 copyright. NOT archiving Changes yet. === Version 1.002 (2020-12-27) README.md, lib/PDF/Table.pm, Makefile.PL Miscellaneous updates to clean up support URLs, emails, etc. util/pod2cpanhtml.pl Remove use of search.cpan.org CSS reference, as that site no longer exists. Looking for a good replacement, possibly Bootstrap, that doesn't require that a phone be turned to landscape orientation in order to read text at a decent size. lib/PDF/Table.pm Cells spanning columns only had the first part (cell) of the bottom horizontal rule drawn. Reported by "stefanalt". Fixed to draw full spanned width. t/PDF-Table.t One calculated value was considerably different between standard Perl (uses doubles for floats), long-double Perl, and quad-math Perl. Round the calculated value to 6 decimal digits so that it works on any system. === Version 1.001 (2020-11-05) lib/PDF/Table.pm fix edge case where no borders led to no rules [GH 55]. t/manifest.t, t/pod.t Make author-only (AUTHOR_TESTING=1). ref [GH 61] lib/PDF/Table.pm, t/pod.t POD change =head5 to =head4, to look better and stop older POD checkers from complaining (in t/pod.t). Also minimum Test::Pod version 1.52 (was 1.00). ref [GH 61]. examples/sample1.pl, t/lib/TestData.pm, INFO/Deprecated, lib/PDF/Table.pm Replace deprecated setting names by current names in the POD, examples, and t-tests. After November 2022, settings names (args) with a leading dash (hyphen) will no longer be permitted. === Version 1.000 (2020-11-03) INFO/Deprecated, INFO/Table.html, lib/PDF/Table.pm Final cleanup of POD and generation of HTML documentation, and listing of all deprecated setting names. t/lib/PDFAPI2Mock.pm add linedash dummy call so t tests can run. lib/PDF/Table.pm, MANIFEST, examples/border_rules.pl, util/3_examples.pl Old "borders" was vertical and horizontal rules PLUS outside rules (frame). Separate into "borders" (outside) and "rules" (inside). Add border_rules.pl example to illustrate. examples/chess.pl with DejaVu-Sans, can use chess piece images .github/worksflows/test.yml, README.md minor fixes in README to make lint run happily, stop checking Table.html. examples/*.pl Allow -A or -B on the command line (case insensitive) to override PDFpref file (if any) setting. This speeds up testing for PDF::API2 vs PDF::Builder (default). lib/PDF/Table.pm, INFO/Deprecated, INFO/Table.html, MANIFEST, examples/chess.pl, t/PDF-Table.t, t/lib/PDFAPI2Mock.pm, util/3_examples.pl Clean up handling of minimum and maximum cell widths (min_w and max_w). Clean up handling of background and foreground colors. Add chess.pl example to show off color handling. Update t-tests for slight coordinate changes. Add row_props (row properties) similar to column_props, to set things on a per-row basis. If the table spills over to a new page, and next_y and/or next_h was NOT given, issue a warning and for a default use 90% of the media height for next_y and 80% for next_h (ref ticket #11). This should be better than using the (start_)y and (start_)h values for the table. Add new, more consistent aliases for a number of settings (ref ticket #13). The old setting names are still available for at least TWO YEARS, after which, they will be REMOVED. Over the next two years you should update your code to use the new setting names. The settings involved are: 'start_y' is now 'y' 'start_h' is now 'h' 'row_height' is now 'min_rh' 'background_color' is now 'bg_color' 'background_color_odd' is now 'bg_color_odd' 'background_color_even' is now 'bg_color_even' 'font_color' is now 'fg_color' 'font_color_odd' is now 'fg_color_odd' 'font_color_even' is now 'fg_color_even' 'font_underline' is now 'underline' 'lead' is now 'leading' These are listed in INFO/Deprecated. In the near future, the examples and t-tests will be updated to use the new setting names. Ship with Table.html (documentation) in INFO/. Update MANIFEST. Remove 010_fonts.pl from the util/3_examples.pl list. I'm still not sure why it should be in the examples -- basically, it shows that UTF-8 doesn't work with core fonts, but that's already a documented limitation (in PDF::Builder). 010_fonts.pl is still in the examples/ directory, if anyone wants to play with it. Add INFO/Deprecated to list names and interfaces scheduled to be removed in the future (at least 2 years). MANIFEST updated. Split out older Changes list into INFO/Changes_2019. MANIFEST updated. Increase default cell padding to 2pt. See documentation "COMPATIBILITY" for how to get the old behavior (0pt padding). t/Basics.t, t/Colspan.t, t/PDF-Table.t expected write locations updated. examples/colspan.pl and examples/header.pl were widened slightly to accommodate the padding. Make "odd/even" row consistent with or without a header (repeated or not), particularly when a table is split across pages, and when a row itself is split in such a case. See documentation "COMPATIBILITY" for how to get the old behavior. Header 'repeat' default changed from 0 (no) to 1 (yes), as most of the time a user will want to repeat any header on each new page. Suppress repeating a header with a value of 0. See documentation "COMPATIBILITY" for how to get the old behavior. Currently, PDF::Table is shipped to use the new behaviors, with as much compatibility as possible with existing code (see $compat_mode in Table.pm). Unless you have need to use the old behaviors for existing code, we suggest that you leave $compat_mode as 0, use the 'compatibility' setting, or individually set the flags, to make use of the new behaviors. Also use the new settings names, unless there is a need for compatibility in existing code. Eventually, use of the old names will produce warnings, and later, error messages, but the old behaviors should be available for a long time. You should examine your existing code and plan to update it over time. Initialize %arg entries (defaults) so no uninitialized errors. #57 reported by Larry Leszczynski (larryl) for text_block() along with PR. Minor build process cleanup Minor spelling and typo fixes in POD and examples === Version 0.12.0 (2020-04-09) Permit either PDF::API2 or PDF::Builder (#51) Don't use UTF-8 with corefonts General cleanup of typos and misspellings in Table.pm Minimum Perl 5.10 in Makefile.PL (#53) More cleanup of text in Table.pm Add tools (util) for running PerlCritic, t-tests, examples Clean up code to pass PerlCritic Clean up examples to run with either API2 or Builder. PDFpref file to declare which to use if both available Comments in t tests about use of Mock PDFAPI2 Document needed and optional prerequisite modules (see INFO/Changes_2019 for earlier changes)