2
1
mirror of https://github.com/qpdf/qpdf.git synced 2024-06-16 08:52:21 +00:00
qpdf/qpdf/qtest/image-optimization.test
Connor Osborn f6b13fcc05 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.
2023-03-15 23:27:05 -04:00

63 lines
2.1 KiB
Perl

#!/usr/bin/env perl
require 5.008;
use warnings;
use strict;
unshift(@INC, '.');
require qpdf_test_helpers;
chdir("qpdf") or die "chdir testdir failed: $!\n";
require TestDriver;
cleanup();
my $td = new TestDriver('image-optimization');
my @image_opt = (
['image-streams', 'image-streams', ''],
['small-images', 'defaults', ''],
['small-images', 'min-width',
'--oi-min-width=150 --oi-min-height=0 --oi-min-area=0'],
['small-images', 'min-height',
'--oi-min-width=0 --oi-min-height=150 --oi-min-area=0'],
['small-images', 'min-area',
'--oi-min-width=0 --oi-min-height=0 --oi-min-area=30000'],
['small-images', 'min-area-all',
'--oi-min-width=0 --oi-min-height=0 --oi-min-area=30000'],
['large-inline-image', 'inline-images',
'--ii-min-bytes=0'],
['large-inline-image', 'inline-images-all-size',
'--oi-min-width=0 --oi-min-height=0 --oi-min-area=0 --ii-min-bytes=0'],
['large-inline-image', 'inline-images-keep-some', ''],
['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);
foreach my $d (@image_opt)
{
my ($f, $description, $args) = @$d;
$td->runtest("optimize images: $description",
{$td->COMMAND =>
"qpdf --static-id --optimize-images --verbose" .
" $args $f.pdf a.pdf",
$td->FILTER => "perl filter-optimize-images.pl"},
{$td->FILE => "optimize-images-$description.out",
$td->EXIT_STATUS => 0},
$td->NORMALIZE_NEWLINES);
$td->runtest("check json: $description",
{$td->COMMAND => "qpdf --json --json-key=pages a.pdf"},
{$td->FILE => "optimize-images-$description-json.out",
$td->EXIT_STATUS => 0},
$td->NORMALIZE_NEWLINES);
}
cleanup();
$td->report($n_tests);