deri pushed a commit to branch master in repository groff. commit 14563f831454bd879f465ac4738624c5e3f380ed Author: Deri James <d...@chuzzlewit.myzen.co.uk> AuthorDate: Sun Apr 28 13:36:31 2024 +0100
[gropdf] Can't handle DecodeParams in Deflate filter. If gropdf called with -d (debug) the pdf is produced with objects uncompressed, if object does not use default deflate parameters Zlib does not decompress properly, so the decompressed object is invalid. This affects when using a pdf imported with 'pdfpic' which contains a png image. This only affects imported pdfs when using the -d flag, because otherwise it is just passed through with no decompress. * src/devices/gropdf/gropdf.pl: Don't decompress if object has a DecodeParams dictionary. --- ChangeLog | 17 +++++++++++++++++ src/devices/gropdf/gropdf.pl | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index e1483c5ed..ba4f786e8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,20 @@ +2024-04-24 Deri James <d...@chuzzlewit.myzen.co.uk> + + [gropdf] Can't handle DecodeParams in Deflate filter. + + If gropdf called with -d (debug) the pdf is produced with + objects uncompressed, if object does not use default deflate + parameters Zlib does not decompress properly, so the + decompressed object is invalid. This affects when using a + pdf imported with 'pdfpic' which contains a png image. + + This only affects imported pdfs when using the -d flag, + because otherwise it is just passed through with no + decompress. + + * src/devices/gropdf/gropdf.pl: Don't decompress if object has + a DecodeParams dictionary. + 2024-04-20 G. Branden Robinson <g.branden.robin...@gmail.com> * tmac/tmac.am ($(M4CHECK)): Ensure directory exists to house diff --git a/src/devices/gropdf/gropdf.pl b/src/devices/gropdf/gropdf.pl index 59434a8ec..7bb1610c2 100644 --- a/src/devices/gropdf/gropdf.pl +++ b/src/devices/gropdf/gropdf.pl @@ -2577,7 +2577,7 @@ sub LoadStream Warn("failed to read all of the stream") if $l != sysread(PD,$o->{STREAM},$l); - if ($gotzlib and exists($o->{OBJ}->{'Filter'}) and $o->{OBJ}->{'Filter'} eq '/FlateDecode') + if ($gotzlib and exists($o->{OBJ}->{'Filter'}) and $o->{OBJ}->{'Filter'} eq '/FlateDecode' and !exists($o->{OBJ}->{'DecodeParms'})) { $o->{STREAM}=Compress::Zlib::uncompress($o->{STREAM}); delete($o->{OBJ }->{'Filter'}); _______________________________________________ Groff-commit mailing list Groff-commit@gnu.org https://lists.gnu.org/mailman/listinfo/groff-commit