-
Notifications
You must be signed in to change notification settings - Fork 21
/
Changes
4241 lines (2865 loc) · 134 KB
/
Changes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
{{$NEXT}}
2.047 2024-05-18
- Fixed implementation of GH-77.
- Added $pdf->standard_fonts() and $pdf->is_standard_font($name) (initial
patch by Johan Vromans).
2.046 2024-05-14
- [GH-74] Fixed documentation error saying that stroke_color and fill_color
can be chained.
- Crash instead of freezing if a PDF trailer's Prev keys result in a loop or
if multiple trailers use the same object ID and generation number.
- [GH-70] Fix off-by-one error when adding a page at the beginning of a PDF.
- [GH-77] Significantly improve performance when adding many pages to a PDF.
2.045 2023-09-25
- Fixed documentation error in synopsis for QR codes.
- Fixed date validation when timezone offset minute contains a trailing
apostrophe, which is required by the Adobe PDF specifications and
prohibited by the ISO PDF specifications. PDF::API2 now accepts either
version as valid (report by Johan Vromans).
- Fixed passing a GD object to $pdf->image() (reported by Hakon Hagland).
- Fixed a crash when object numbers contain leading zeroes.
2.044 2022-11-16
- Added support for QR codes.
- [GH-44] The X coordinate returned by $text->position() or (deprecated)
$text->textpos() was incorrect when read after being set twice (report by
Johan Vromans).
- [GH-45] Renamed transform's "relative" option to "repeat" and fixed the
documentation describing what it does (report by Johan Vromans).
- [GH-49] Fix page_layout storing its value as page_mode (report by Johan
Vromans).
- [GH-50] Fix $pdf->viewer_preferences to return the same values it accepts
for non_full_screen_page_mode (report by Johan Vromans).
- Minor doc clarifications and improved error messages.
2.043 2021-12-07
- Restores backward compatibility (with a warning) when the deprecated
$pdf->pageLabel is given an invalid -style option starting with "a" or
"r" (report by Johan Vromans).
- Fix incorrect default in documentation for annotation borders (report and
patch by Johan Vromans).
2.042 2021-09-16
- This release includes many changes to method names, options, and
documentation aimed at improving approachability, but existing code should
continue to work. See the new Backward Compatibility section in the main
PDF::API2 documentation for details about deprecation timelines and a
suggested workflow for handling upgrades. See the new Migration section
for a consolidated list of deprecated methods/options and their
replacements.
- Renamed several methods in the PDF::API2 base class:
- end -> close
- open_scalar -> from_string
- stringify -> to_string
- pages -> page_count
- importPageIntoForm -> embed_page
- isEncrypted -> is_encrypted
- xmpMetadata -> xml_metadata
- outlines -> outline
- Merged saveas into save.
- Added individual accessors for PDF metadata (title, author, producer,
etc.). Replaced info and infoMetaAttributes with info_metadata for custom
metadata.
- Renamed the following methods in the PDF::API2::Page class:
- gfx -> graphics
- rotate -> rotation
- Added $page->boundaries() and $pdf->default_page_boundaries() to replace
the separate methods for the various page boundaries. The supported
arguments are slightly different; some edge cases have been removed and
new options have been added. See below and the PDF::API2::Page
documentation for details.
- Added $page->size() and $pdf->default_page_size() as a shortcut for
setting the media box.
- Both $page->size() and $page->boundaries() (and their $pdf default
equivalents) now accept "WxH" page sizes in inches (e.g. 11x17 or 8.5x11).
This does not apply to the deprecated versions of these methods.
- Both $page->size() and $page->boundaries() (and their $pdf default
equivalents) now accept a single number for page boundaries other than the
media box, representing an amount in points to shrink the next larger box.
This does not apply to the deprecated versions of these methods.
- Replaced pageLabel with page_labels. The option syntax is slightly
different (pass options as a hash instead of a hashref; remove hyphens
from option names).
- Replaced image_jpeg, image_tiff, image_pnm, image_png, image_gif, and
image_gd with $pdf->image.
- Replaced the individual barcode methods with $pdf->barcode, which is
fully documented and includes reasonable defaults based on the chosen
barcode format.
- Improved spacing between barcodes and labels when both bar_extend
(formerly -lmzn) and font_size (formerly -fnsz) are set and the font size
is larger than the bar extension.
- Replaced corefont, ttfont, psfont, and bdfont with $pdf->font. Unlike
corefont, font requires the exact name of one of the standard fonts.
Kerning is on by default (vs. off by default in the type-specific
methods).
- Renamed synfont to synthetic_font. Renamed and documented the options.
The new hscale option (formerly -slant) now takes a percentage (100 = no
change, vs. 1 = no change for -slant) to match the hscale method in
Content. The new "bold" option is in thousandths of a text unit,
vs. hundredths for "-bold", so multiply the old value by 10 when
migrating.
- Replaced the individual colorspace methods with $pdf->colorspace. Added
documentation and examples for the various colorspace types except for the
former colorspace_hue, because I couldn't find the standard that it
implements (if one exists).
- Renamed several methods in PDF::API2::Content:
- linewidth -> line_width
- linecap -> line_cap
- linejoin -> line_join
- miterlimit -> miter_limit
- flatness -> flatness_tolerance
- endpath -> end
- rectxy -> rectangle
- fillstroke -> paint
- charspace -> character_spacing
- wordspace -> word_spacing
- nl -> crlf
- advancewidth -> text_width
- In PDF::API2::Content, replaced image and formimage with object. Added a
$page->object() convenience method that is equivalent to
$page->graphics->object().
- In PDF::API2::Content, merged text_center and text_right into text. Use
the "align" option to set alignment to "center" or "right".
- In PDF::API2::Content, merged paragraphs into paragraph.
- In PDF::API2::Content, deprecated poly and added polyline. poly was the
only path-drawing method that took a starting position as its first two
arguments. These should be passed to a move call instead, with the
remaining arguments passed to the new polyline method.
- In PDF::API2::Content, added position, which combines the functionality of
distance and textpos2 (which was undocumented). Deprecated textpos, which
attempted to return the position of the "cursor" after taking into account
coordinate transformations. textpos2 and the new position method return
the text position before any coordinate transformations are applied, which
is consistent with how the other methods in this class behave.
- In PDF::API2::Content, deprecated bogen. Recreate using arc, if feasible.
If not, I'm likely to leave the code in place indefinitely as an
undocumented method.
- In PDF::API2::Content, deprecated cr. Replace with either position (if
called with arguments) or crlf (if called without arguments).
- Tentatively deprecated $pdf->cjkfont. If you're successfully using this
method for CJK font support, read PDF::API2::Resource::CIDFont::CJKFont
and contact me to discuss your use case.
- Tentatively deprecated $pdf->unifont. If you're successfully using this
method for Unicode support, please contact me to discuss your use case.
- Replaced $pdf->preferences() with separate page_mode, page_layout,
viewer_preferences, and open_action methods, all of which are now fully
documented.
- Added font_path and set_font_path accessors for the font search path (the
list of directories searched when a font name is included without its full
path). Renamed addFontDirs to add_to_font_path.
- Removed C:/WinNT/Fonts from the default font search path.
- Named Destinations are now fully documented, with updated method names and
arguments.
- Outlines are now fully documented, with additional methods for examining
and modifying the outline tree. Existing method names and arguments have
been updated to match those used in Named Destinations. Various bugs have
been fixed when reading or modifying outlines in existing PDFs.
- Updated annotation documentation. Revised methods and arguments to match
those used in Named Destinations and Outlines.
- A PDF version number specified in the document catalog is now respected by
$pdf->version().
- Fixed space calculation between words in justified text (report and fix by
Vladislav Glinsky).
2.041 2021-07-27
- Bug reports should now be made at GitHub Issues rather than RT.
- Rename openpage to open_page in PDF::API2. The old name is deprecated.
- [RT #136648] Fix when writing PDFs containing cross-reference streams
(reported by Chris Papademetrious, fix by Vadim Repin from RT #117184).
- [RT #44877] GIFs containing comments or plain-text representations will no
longer result in an error (reported by Chris Czub).
- [RT #132844] Fix corruption when a PGM image is included (reported by Jeff
Ratcliffe, fix by Vadim Repin).
- Expand PNM support to include all image types.
- [RT #131657] Disable recursion warnings while releasing (destroying) PDF
indirect objects, which can be highly-interconnected (reported by Leon
Winter).
- [RT #41971] Fix when attempting to read an existing PDF's outlines
(reported by Damyan Ivanov, fix based on a patch by Vadim Repin).
2.040 2021-04-13
- Fix open() followed by stringify() resulting in a corrupt (mostly-empty)
PDF, which was broken by changes in 2.039 (reported by Gareth Tunley).
- [RT #134993] Calling open($filename) followed by saveas($same_filename)
instead of update() resulted in a corrupt PDF in 2.039, which no longer
reads the entire file into memory on open (reported by Marco Pessotto).
- [RT #134957] Fix encoding of \n in a PDF string containing non-printable
characters (reported by Stuart Henderson).
- [RT #133131] Fix endianness of 64-bit numbers in cross-reference stream
widths array (reported by Christopher Papademetrious, fix by Vadim Repin).
2.039 2021-03-04
- PDF::API2->open($filename) no longer reads the entire file into memory
before working on it, instead reading from the file as needed. This
results in a substantial reduction in memory usage and start-up time for
large PDF files, particularly in cases where the calling script doesn't
need to access all of the contents of the PDF.
- PDF files containing cross-reference streams can now be modified and saved
normally. Previously, they were read-only.
- $text->paragraph(...) and $text->paragraphs(...) (formerly "section") are
no longer undocumented and experimental. If you were previously using
them at your own risk, note that "-spillover" is no longer an option (text
will always wrap inside the specified width if possible). In addition,
paragraphs(...) no longer collapses consecutive newlines.
- [RT #98546] There is now an -align-last option for justified text to
specify how the final line should be justified. Left is still the
default.
- Code in the PDF::API2::Basic::PDF namespace was originally licensed under
the Perl Artistic License, which has been determined to not be
(L)GPL-compatible. Martin Hosken has graciously granted an MIT license
for use of his code contained in PDF::API2, so the distribution may now be
used solely under the terms of the LGPL rather than requiring both
licenses simultaneously. Many thanks to Petr Pisar for his help in
working through the licensing issues.
- Renamed $text->lead(...) to $text->leading(...). The old name is
deprecated but will continue to work. If you're modifying PDF::API2
objects by editing their hash values instead of using these accessors,
you'll need to update your code.
- Added a -compress option (on by default) to PDF::API2->new(), open(), and
open_scalar(). If disabled, most streams won't be compressed, which can
simplify debugging.
2.038 2020-08-31
- Use PDF::API2::XS or Image::PNG::Libpng, if either is installed, to speed
up inclusion of PNG files with an alpha channel by an order of magnitude
(written by Rob Scovell, sponsored by prayerletters.com).
2.037 2020-02-05
- Allow PDF 2.0 files to be opened.
- [RT #131147] Ignore dictionary entries with null values (reported by Klaus
Ethgen, fix by Vadim Repin).
2.036 2019-09-17
- Eliminate another uninitialized value warning in BaseFont.pm.
2.035 2019-08-09
- The bounding box methods (mediabox, cropbox, bleedbox, trimbox, and
artbox) now return their values when called without arguments.
- The get_[media|crop|bleed|trim|art]box page methods have been deprecated
since they're now redundant, but they continue to work.
- [RT #130074] Remove unneeded (and newly-broken) calls to is_utf8 in
Annotation.pm and NamedDestination.pm (reported by Mathieu Arnold).
- Eliminate some uninitialized value warnings in BaseFont.pm.
2.034 2019-06-29
- SUPPORTED PERL VERSIONS: Starting with this release, PDF::API2 will
support major Perl versions released in the past six years, plus the 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.18, which
was first released on 2013-05-18.
- Add support for cross-reference streams using 64-bit field widths.
- When the utf8 flag is set for a PDF string, automatically encode it as
UCS-16BE instead of requiring a separate flag to be set in the PDF object.
This resolves [RT #33497] and [RT #117031] in addition to making the code
easier to maintain.
- [RT #126274] Fix alignment when using UniFont with text_center or
text_right when all characters are in the same block.
- [RT #121911] Fix adding pages to a document structure with nested Pages
elements. This included a fairly substantial rewrite of the relevant
code, so please report any new bugs related to adding pages (report and
troubleshooting by Vadim Repin).
- Renamed pdfile() to pdf_file() in PDF::API2::Annotation and
PDF::API2::Outline. The old name continues to work, but is deprecated.
2.033 2017-07-06
- [RT #122371] Remove a couple of improperly-placed weaken statements
(reported by Phil Perry).
- [RT #122372] Fix weakening when a page is added to the end of a multiple
page document (reported by Phil Perry).
- Fix Bank Gothic core font (reported by Phil Perry).
2.032 2017-07-02
- PDF::API2 has many circular references, and the end() method doesn't clear
them all, so memory is leaked. This release uses Scalar::Util's weaken()
function to improve garbage collection. A significant number of circular
references have been weakened, though many likely still remain.
- [RT #120756] Eliminate a warning for an ambiguous call to CORE::open
(first reported by Abdelbaki Brahmia).
- $text->text_justified() and $text->text_fill_justified() now adjust the
space between words rather than stretching individual characters in order
to get the text to fit.
- [RT #120397] Indirect references and indirect objects can have comments
embedded in their whitespace, and their object number and generation may
be split across multiple lines, which may not all be buffered (reported by
SPROUT).
- [RT #120450] Fix PDF::API2->open($filename)->stringify() (reported by
SPROUT).
- Fix an off-by-one error when calculating text width while charspace is
non-zero.
- [RT #120048] Fix PDF::API2->synfont() (broken in 2.029, fixed by Vadim
Repin) and add basic testing.
2.031 2017-01-26
- Fix use of cache files when reading streams: temp files will now be used
any time a stream is larger than 16MB (by default). Formerly, due to a
bug, they would only be created when a 4kB chunk of a stream increased to
16kB or more after being decompressed.
- Numbers, booleans, and null values can now be read from object streams.
- Update to [RT #113290]: Objects inside a large object stream are now read
without loading the entire object stream into memory.
- DEPRECATION: The low-level new_api methods have been deprecated in favor
of calling new directly. If your code uses new_api($api2, ...), replace
it with new($api2->{'pdf'}, ...).
- [RT #118352] Don't crash when adding an annotation to a page that has an
existing annotations array stored as an indirect object (reported by Johan
Vromans).
- [RT #118717] Die with an informative error if a file can't be opened
during open() or saveas() (reported by Johan Vromans).
2.030 2016-10-13
- Fix a font naming issue introduced while satisfying Perl::Critic.
2.029 2016-10-10
- [RT #113293] Files with cross-reference streams weren't correctly setting
the max object number (report and troubleshooting by Marco Pessotto).
- Handle TIFF images with strips that are wider than the image (report and
patch by Jeffrey Ratcliffe).
- [RT #98574] Increase test coverage of PDF::API2::Content (tests by Phil
Perry).
- A bunch of code cleanup and documentation updates by Paul Cochrane.
- Add a missing prereq on Win32 systems (patch by Michiel Beijen).
- [RT #113514, #98552] Fix the dash() and renderingintent() methods in
ExtGState (reported by Vadim Repin and Phil Perry).
- Satisfy all Perl::Critic severity 5 policies.
- [RT #117940] Allow PNG, GIF, and PNM files to be opened from filehandles
in addition to filenames (patch by Johan Vromans).
- [RT #33970] Fail fast when a referenced file can't be opened (requested by
Barrie Slaymaker a mere 8.5 years ago).
- Add -simplex, -duplexfliplongedge and -duplexflipshortedge as options to
$pdf->preferences() (requested by Doug Poulin).
2.028 2016-06-08
- [RT #113290] Fix for reading objects inside an object stream in a large
PDF (patch by Marco Pessotto).
- Eliminate an infinite loop when reading a corrupt dictionary.
2.027 2016-03-11
- This release contains seven fixes for parsing PDFs. They mostly affect
files using cross-reference streams, which were first supported in the
previous release. Thanks to Marco Pessotto and Stuart Henderson for their
help identifying and troubleshooting bugs.
- Added contrib/pdf-debug.pl to help track down issues related to opening
and parsing PDFs.
2.026 2016-02-24
- [RT #48683] Add support for PDFs with cross-reference streams and object
streams (patch by Don Huettl of Grant Street Group).
- [RT #107333] Accept an empty string as a valid Name, per PDF spec 1.7
section 7.3.5 (patch by Mark Balitsky).
- [RT #98551] Rename aliases 2A, 4A, 2B, and 4B to 2A0, 4A0, 2B0, and 4B0.
The old names will continue to work, but are now undocumented (patch by
Phil Perry).
- Add -mils and -color as options for barcodes. Reset linedash so that
barcodes are always solid lines (patch by Erelen).
- [RT #98549] Rename meterlimit to miterlimit (patch by Phil Perry).
- [RT #98534] Rename hspace to hscale (patch by Phil Perry).
- Fixed an infinite loop when RunLengthDecode is used for output.
- [RT #65582] Fix embedding of OpenType fonts (fix by Simon Cozens).
- [RT #67767] Allow an empty page to be imported into a PDF using
importPageIntoForm (reported by Antti Lankila).
- [RT #66341] Various fixes for ASCII85Decode and LZWDecode.
2.025 2015-09-23
- The previous release included a patch that broke compatibility with Perl
5.8.x. The minimum supported version is now Perl 5.8.5, and there is a
.perl-version file to facilitate testing using plenv.
2.024 2015-09-18
- [RT #104133] Include all bounding boxes when importing a page (patch by
Don Huettl of Grant Street Group).
- [RT #104133] When retrieving bounding boxes for a page, fall back
according to the defaults listed in the PDF spec (patch by Don Huettl of
Grant Street Group).
- Barcodes now take an optional -caption argument that will be printed
beneath the barcode. This can replace or be used in conjunction with the
text representation of the barcode (requested by Gareth Tunley).
- [RT #105581] Calls to width() in BaseFont are now significantly faster
(patch by Dmitri Tikhonov).
2.023 2014-09-12
- The fix for [RT #69503] broke a previously-working case where a page
object could be passed (and was expected). The -firstpage option now
accepts a page object or a page number. Thanks to Marco Pessotto for the
bug report and test.
2.022 2014-07-04
- Added $pdf->version() get/set method. When opening an existing PDF, the
existing version number will now be retained.
- Renamed the following in PDF::API2:
- importpage to import_page
- openScalar to open_scalar
The old names are deprecated.
- [RT #69503] Fix the -firstpage option to $pdf->preferences() so that it
doesn't always lead to a crash (reported by Dietrich Streifert).
- [RT #47974] Accept malformed xref subsections (with a warning) that have
extraneous spaces on the first line (reported by Abhinav Kaushik).
- [RT #94505] For Code128 barcodes, the initial character set is now
optional (defaults to B or C depending on the content to be encoded). The
initial character set can be passed as a capital letter, and the program
will die if an invalid character set is requested (requested by Andrea
Nall).
- Interleaved 2 of 5 barcodes now prepend a zero when an odd number of
digits is specified, which is standard behavior. Previously, a zero was
appended instead.
- $page->rotate(0) now sets rotation to 0 degrees rather than deleting an
existing page rotation command. Page rotation is inherited, so this is
necessary to undo any inherited page rotation.
- Fix: Attempts to use EAN-128 barcodes resulted in an error.
- Add a more informative error when text() is called without first setting a
font(), and when font() is called without including a font size.
2.021 2014-02-20
- Fixed numerous bugs in the string parsing code, including the one reported
in [RT #63918] by Frank Doepper.
- [RT #41049] Rewrote literal string parsing to prevent a stack overflow due
to an inefficient regex (reported by Sergei Fetisov).
- [RT #91822] Fix compression of GIF images to ensure that output codes
don't exceed 12 bits (reported by Vadim Repin).
- The RunLengthDecode filter didn't actually work. Its code has been
rewritten and now passes basic encoding and decoding tests.
- Fix Code128 barcode switching from Code C to Code B in certain cases
(reported by Doru Petrescu).
2.020 2013-01-20
- Give a more informative error message when a PDF file using a
cross-reference stream is encountered. The Known Issues section of the
documentation includes pointers on how to add support in case someone else
can get to this before I do.
- Text using TrueType fonts is now searchable again. In version 0.61, an
undocumented -unicodemap option was added to nearly all of the font
resource methods, which only included a ToUnicode CMap if it was set (and
it's required in order for PDF readers to be able to identify individual
characters if BaseEncoding isn't present, which it isn't for TrueType
fonts).
I've left the -unicodemap option in place, and it's still undocumented
(except here), but it's now on by default. Call $pdf->ttfont($fontfile,
-unicodemap => 0) if you want to disable it for performance or file size
reasons.
- Add a note to the stringify method's documentation saying that it's a
destructive operation.
- The various filter types have their own classes in the
PDF::API2::Basic::PDF::Filter namespace now, rather than having all of the
packages in Filter.pm.
- To facilitate testing and ensure that identically-generated PDFs have
identical output in Perl 5.17.5 or later, PDF dictionary keys are now
sorted during output.
2.019 2011-03-10
- [RT #66167] Fix a typo in the require statement for code128 barcodes (TC
Kuan).
- Numerous modules are now only loaded when they're needed, which should
help speed up the load time and reduce the memory footprint.
- Test coverage is up to about 45% of the codebase.
2.018 2011-02-23
- The tests in 2.017 exposed a floating point issue where some computers
give more trailing zeros than others. It doesn't affect the output, but
it does break the tests on those computers, since the PDFs are slightly
different. This version modifies the float() method to remove trailing
zeros, which should fix the test breakage and give consistent PDFs.
2.017 2011-02-22
- The DejaVu fonts have been removed from the distribution, since they were
only used by one example script. If you need them for your project, you
can download them from http://dejavu-fonts.org
- Fix: Content->bogen() didn't behave as documented if $move was set (it
started drawing from the center of the circle rather than [x1, y1]).
- The undocumented nettfont method has been removed, along with the
supporting PDF::API2::Resource::Font::neTrueType module.
- The undocumented save_xml method has been removed, along with the
supporting functions in PDF::API2::Basic::*.
- The undocumented textstate2 method has been removed from
PDF::API2::Content.
- [RT #58386] Fix create_egs call in Lite.pm (J Greely)
- [RT #62922] Fix string interpolation in pdf-merge.pl (Guillaume Rousse and
Jerome Quelin)
- [RT #65458] Fix an error in the synopsis (Frank Ammeter)
- [RT #66054] Fix rename of .cmap files so that they actually work
now. (cnhacktnt)
- The test suite has grown to nearly 200 tests, covering about 40% of the
codebase. There's still plenty of room for improvement.
2.016 2011-01-24
- New Maintainer: Steve Simms (http://deefs.net)
- This release jumps from version 0.73 to 2.016 in order to provide a
consistent version number across all modules in the distribution without
breaking any existing code or going backwards.
- Lots of updates to the documentation, particularly in PDF::API2::Content,
which was almost completely rewritten and reorganized.
- Font::TTF has been added as a dependency instead of being embedded in the
distribution.
- Everything that worked in 0.73 should work unmodified in 2.016, at least
if it used the published documentation, and most everything should still
work even if it didn't.
- PDF::API2 used to read and parse three text files, one of which was over
500kB, on every load. These files have been turned into modules, and
while I haven't done any performance testing, I'd have a hard time
believing that it isn't faster now.
- There are now a few tests forming the beginning of a test suite.
Contributions of tests would be most welcome!
======================================================================
Changes below this point are from PDF::API2 0.73 and earlier,
generated from the CVS logs.
======================================================================
2009-03-20 09:54 fredo
* lib/PDF/API2/Resource/CIDFont/TrueType.pm: rt.cpan.org
#42524: strange space size after update on 0.72.003 from
0.71
2008-11-20 19:51 fredo
* lib/PDF/API2/Resource/CIDFont/TrueType.pm: perf
henning.just@datagraf.dk
2008-11-05 00:05 fredo
* lib/PDF/API2/Version.pm: *** empty log message ***
2008-11-04 23:54 fredo
* lib/PDF/API2/Basic/PDF/Dict.pm
lib/PDF/API2/Resource/Font.pm: fixed [rt.cpan.org #40648]
Unicode text prints text on top of text before it
2008-08-10 15:06 fredo
* examples/021_synfonts: added relative use lib
2008-08-10 14:57 fredo
* lib/PDF/API2/Version.pm: *** empty log message ***
2008-08-10 14:43 fredo
* examples/021_syntruefonts
lib/PDF/API2/Resource/Font/SynFont.pm
lib/PDF/API2/fonts/AUTHORS.txt
lib/PDF/API2/fonts/DejaVuSans-Bold.ttf
lib/PDF/API2/fonts/DejaVuSans-BoldOblique.ttf
lib/PDF/API2/fonts/DejaVuSans-ExtraLight.ttf
lib/PDF/API2/fonts/DejaVuSans-Oblique.ttf
lib/PDF/API2/fonts/DejaVuSans.ttf
lib/PDF/API2/fonts/DejaVuSansCondensed-Bold.ttf
lib/PDF/API2/fonts/DejaVuSansCondensed-BoldOblique.ttf
lib/PDF/API2/fonts/DejaVuSansCondensed-Oblique.ttf
lib/PDF/API2/fonts/DejaVuSansCondensed.ttf
lib/PDF/API2/fonts/DejaVuSansMono-Bold.ttf
lib/PDF/API2/fonts/DejaVuSansMono-BoldOblique.ttf
lib/PDF/API2/fonts/DejaVuSansMono-Oblique.ttf
lib/PDF/API2/fonts/DejaVuSansMono.ttf
lib/PDF/API2/fonts/DejaVuSerif-Bold.ttf
lib/PDF/API2/fonts/DejaVuSerif-BoldItalic.ttf
lib/PDF/API2/fonts/DejaVuSerif-Italic.ttf
lib/PDF/API2/fonts/DejaVuSerif.ttf
lib/PDF/API2/fonts/DejaVuSerifCondensed-Bold.ttf
lib/PDF/API2/fonts/DejaVuSerifCondensed-BoldItalic.ttf
lib/PDF/API2/fonts/DejaVuSerifCondensed-Italic.ttf
lib/PDF/API2/fonts/DejaVuSerifCondensed.ttf
lib/PDF/API2/fonts/LICENSE.txt lib/PDF/API2/fonts/NEWS.txt
lib/PDF/API2/fonts/README.txt
lib/PDF/API2/fonts/langcover.txt
lib/PDF/API2/fonts/status.txt
lib/PDF/API2/fonts/unicover.txt: to 2.25
2008-03-10 21:38 fredo
* examples/060_transparency: genesis
2008-03-10 21:23 fredo
* examples/012_pages: genesis
2008-02-15 15:22 fredo
* lib/PDF/API2/Content.pm: added -spillover param to paragraph
and sub-methods
2008-01-18 00:11 fredo
* lib/PDF/API2.pm: fixed catalog update and infohash utf16
from http://bugs.debian.org/461167
2008-01-04 08:10 fredo
* lib/PDF/API2/Resource/Font/neTrueType.pm: flag fixes
2008-01-04 08:08 fredo
* lib/PDF/API2/Resource/CIDFont/TrueType/FontFile.pm: apiname
fix
2007-11-16 19:30 fredo
* lib/PDF/API2.pm: added -noembed option
2007-11-16 19:27 fredo
* lib/PDF/API2/Resource/CIDFont/TrueType.pm
lib/PDF/API2/Resource/CIDFont/TrueType/FontFile.pm: fixed
-noembed option
2007-11-16 19:03 fredo
* MANIFEST: added non-embedded truetype
2007-11-14 23:01 fredo
* lib/PDF/API2.pm: fixed relative page insert
2007-11-14 22:49 fredo
* lib/PDF/API2.pm: added non-embedded truetype font (8-bit
only) support
2007-11-14 22:47 fredo
* lib/PDF/API2/Resource/Font/neTrueType.pm: genesis
2007-11-14 20:46 fredo
* lib/PDF/API2/Resource/CIDFont/TrueType/FontFile.pm: added
noembed option
2007-11-03 20:31 fredo
* lib/PDF/API2/Basic/PDF/File.pm: make startxref detection
more tolerant
2007-10-23 07:49 fredo
* MANIFEST: added 022_truefonts_diacrits_utf8
2007-10-23 07:48 fredo
* examples/022_truefonts_diacrits_utf8: genesis
2007-10-23 07:46 fredo
* examples/020_textunderline: new
2007-10-23 07:45 fredo
* lib/PDF/API2/Resource/CIDFont/TrueType.pm: fixed width
encoding for wrong advance codes
2007-10-16 20:08 fredo
* lib/PDF/API2/Resource/BaseFont.pm: changed undef safeguards
for wx* methods
2007-10-10 06:18 fredo
* lib/PDF/API2/Content.pm lib/PDF/API2/Resource/BaseFont.pm
lib/PDF/API2/Version.pm: fixed noisy undef handling of
isvirtual
2007-10-02 19:59 fredo
* lib/PDF/API2/Annotation.pm: added movie annotation
2007-09-26 19:50 fredo
* lib/PDF/API2/Basic/PDF/File.pm: make trailer detection more
tolerant for reported ghostscript and swets formats
2007-09-18 22:29 fredo
* lib/PDF/API2.pm: added -printscalingnone option
2007-09-17 16:03 fredo
* lib/PDF/API2/Resource/XObject/Image/TIFF.pm: update docs for
tiffTag
2007-09-14 15:36 fredo
* lib/PDF/API2/Resource/XObject/Image/TIFF.pm: also read Tiff
Tag 296 and make it available as resUnit
2007-08-27 20:06 fredo
* lib/PDF/API2/Basic/TTF/Cmap.pm: updated ms_table election
algo to support newer apple and m$ unicode 3.1+ glyph cmaps
2007-08-07 20:40 fredo
* examples/020_corefonts: added use lib
2007-08-07 20:23 fredo
* lib/PDF/API2/Content.pm: added wantarray choice for
paragraph,
2007-08-01 23:12 fredo
* lib/PDF/API2.pm: fix BOM in info strings
2007-07-01 20:32 fredo
* lib/PDF/API2/fonts/DejaVuSerif-BoldOblique.ttf
lib/PDF/API2/fonts/DejaVuSerif-Oblique.ttf
lib/PDF/API2/fonts/DejaVuSerifCondensed-BoldOblique.ttf
lib/PDF/API2/fonts/DejaVuSerifCondensed-Oblique.ttf: sync
with dejavu 2.18
2007-07-01 20:30 fredo
* lib/PDF/API2/fonts/AUTHORS.txt
lib/PDF/API2/fonts/DejaVuSans-Bold.ttf
lib/PDF/API2/fonts/DejaVuSans-BoldOblique.ttf
lib/PDF/API2/fonts/DejaVuSans-ExtraLight.ttf
lib/PDF/API2/fonts/DejaVuSans-Oblique.ttf
lib/PDF/API2/fonts/DejaVuSans.ttf
lib/PDF/API2/fonts/DejaVuSansCondensed-Bold.ttf
lib/PDF/API2/fonts/DejaVuSansCondensed-BoldOblique.ttf
lib/PDF/API2/fonts/DejaVuSansCondensed-Oblique.ttf
lib/PDF/API2/fonts/DejaVuSansCondensed.ttf
lib/PDF/API2/fonts/DejaVuSansMono-Bold.ttf
lib/PDF/API2/fonts/DejaVuSansMono-BoldOblique.ttf
lib/PDF/API2/fonts/DejaVuSansMono-Oblique.ttf
lib/PDF/API2/fonts/DejaVuSansMono.ttf
lib/PDF/API2/fonts/DejaVuSerif-Bold.ttf
lib/PDF/API2/fonts/DejaVuSerif-BoldItalic.ttf
lib/PDF/API2/fonts/DejaVuSerif-BoldOblique.ttf
lib/PDF/API2/fonts/DejaVuSerif-Italic.ttf
lib/PDF/API2/fonts/DejaVuSerif-Oblique.ttf
lib/PDF/API2/fonts/DejaVuSerif.ttf
lib/PDF/API2/fonts/DejaVuSerifCondensed-Bold.ttf
lib/PDF/API2/fonts/DejaVuSerifCondensed-BoldItalic.ttf
lib/PDF/API2/fonts/DejaVuSerifCondensed-BoldOblique.ttf
lib/PDF/API2/fonts/DejaVuSerifCondensed-Italic.ttf
lib/PDF/API2/fonts/DejaVuSerifCondensed-Oblique.ttf
lib/PDF/API2/fonts/DejaVuSerifCondensed.ttf
lib/PDF/API2/fonts/NEWS.txt lib/PDF/API2/fonts/README.txt
lib/PDF/API2/fonts/langcover.txt
lib/PDF/API2/fonts/status.txt
lib/PDF/API2/fonts/unicover.txt: avu 2.18
2007-06-27 20:54 fredo
* lib/PDF/API2/Resource/Font/Postscript.pm: fix exporter
warnings of IO::File
2007-06-23 09:48 fredo
* contrib/text2pdf.pl: added contributor email
2007-06-23 09:43 fredo
* MANIFEST: added text2pdf.pl
2007-06-23 09:42 fredo
* contrib/text2pdf.pl: genesis from contribution
2007-06-07 10:43 fredo
* lib/PDF/API2/Basic/PDF/File.pm: fixed %%EOF/startxref
detection to be done in chunks
2007-05-27 09:46 fredo
* lib/PDF/API2/Basic/PDF/File.pm: preparations for abbyy
finereader fix
2007-05-24 19:29 fredo
* lib/PDF/API2/Resource/XObject/Image/PNM.pm: fixed pnm bitmap
decoding
2007-05-16 21:45 fredo
* lib/PDF/API2.pm: fixed importpage doku bug
http://rt.cpan.org/Ticket/Display.html?id=27152
2007-05-10 23:38 fredo
* lib/PDF/API2.pm: added note on importintoform and importpage
for existing pdf-file