From f6b13fcc05d3d1367a03d54e83fe0605366e49fd Mon Sep 17 00:00:00 2001 From: Connor Osborn Date: Mon, 13 Mar 2023 16:38:49 -0400 Subject: Add test validating that images in nested XObjects are included in optimization The sample file (nested-images.pdf) includes a pdf with an image that is nested within an XObject within an XObject in the Resources dict of the only page. These images were ignored in prior versions of qpdf. --- qpdf/qtest/image-optimization.test | 2 ++ qpdf/qtest/qpdf/nested-images.pdf | Bin 0 -> 5744 bytes .../qtest/qpdf/optimize-images-nested-images-json.out | 18 ++++++++++++++++++ qpdf/qtest/qpdf/optimize-images-nested-images.out | 2 ++ 4 files changed, 22 insertions(+) create mode 100644 qpdf/qtest/qpdf/nested-images.pdf create mode 100644 qpdf/qtest/qpdf/optimize-images-nested-images-json.out create mode 100644 qpdf/qtest/qpdf/optimize-images-nested-images.out diff --git a/qpdf/qtest/image-optimization.test b/qpdf/qtest/image-optimization.test index 1b3901e6..10ffd526 100644 --- a/qpdf/qtest/image-optimization.test +++ b/qpdf/qtest/image-optimization.test @@ -33,6 +33,8 @@ my @image_opt = ( ['large-inline-image', 'inline-images-keep-all', '--keep-inline-images'], ['unsupported-optimization', 'unsupported', '--oi-min-width=0 --oi-min-height=0 --oi-min-area=0'], + ['nested-images', 'nested-images', + '--oi-min-width=0 --oi-min-height=0 --oi-min-area=0'] ); my $n_tests = 2 * scalar(@image_opt); diff --git a/qpdf/qtest/qpdf/nested-images.pdf b/qpdf/qtest/qpdf/nested-images.pdf new file mode 100644 index 00000000..cb2b4d87 Binary files /dev/null and b/qpdf/qtest/qpdf/nested-images.pdf differ diff --git a/qpdf/qtest/qpdf/optimize-images-nested-images-json.out b/qpdf/qtest/qpdf/optimize-images-nested-images-json.out new file mode 100644 index 00000000..9f713aa7 --- /dev/null +++ b/qpdf/qtest/qpdf/optimize-images-nested-images-json.out @@ -0,0 +1,18 @@ +{ + "version": 2, + "parameters": { + "decodelevel": "generalized" + }, + "pages": [ + { + "contents": [ + "4 0 R" + ], + "images": [], + "label": null, + "object": "3 0 R", + "outlines": [], + "pageposfrom1": 1 + } + ] +} diff --git a/qpdf/qtest/qpdf/optimize-images-nested-images.out b/qpdf/qtest/qpdf/optimize-images-nested-images.out new file mode 100644 index 00000000..253a9208 --- /dev/null +++ b/qpdf/qtest/qpdf/optimize-images-nested-images.out @@ -0,0 +1,2 @@ +qpdf: image /X1 on page 1: optimizing image reduces size from 2628 to ... +qpdf: wrote file a.pdf -- cgit v1.2.3-54-g00ecf