mirror of
https://github.com/qpdf/qpdf.git
synced 2024-12-22 10:58:58 +00:00
Add --remove-page-labels option (fixes #317)
This commit is contained in:
parent
e50d5201df
commit
2b011f9d81
@ -1,5 +1,12 @@
|
||||
2019-04-20 Jay Berkenbilt <ejb@ql.org>
|
||||
|
||||
* Add parameter --remove-page-labels to remove page labels from
|
||||
output. In qpdf 8.3.0, the behavior changed so that page labels
|
||||
were preserved when merging and splitting files. Some users were
|
||||
relying on the fact that if you ran qpdf --empty --pages ... all
|
||||
page labels were dropped. This option makes it possible to get
|
||||
that behavior if it is explicitly desired. Fixes #317.
|
||||
|
||||
* Add parameter --keep-files-open-threshold to override the
|
||||
maximum number of files that qpdf will allow to be kept open at
|
||||
once. Fixes #288.
|
||||
|
@ -1797,9 +1797,6 @@ outfile.pdf</option>
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
|
||||
|
||||
<varlistentry>
|
||||
<term><option>--externalize-inline-images</option></term>
|
||||
<listitem>
|
||||
@ -1834,6 +1831,14 @@ outfile.pdf</option>
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>--remove-page-labels</option></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Remove page labels from the output file.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>--qdf</option></term>
|
||||
<listitem>
|
||||
|
15
qpdf/qpdf.cc
15
qpdf/qpdf.cc
@ -164,6 +164,7 @@ struct Options
|
||||
optimize_images(false),
|
||||
externalize_inline_images(false),
|
||||
keep_inline_images(false),
|
||||
remove_page_labels(false),
|
||||
oi_min_width(128), // Default values for these
|
||||
oi_min_height(128), // oi flags are in --help
|
||||
oi_min_area(16384), // and in the manual.
|
||||
@ -261,6 +262,7 @@ struct Options
|
||||
bool optimize_images;
|
||||
bool externalize_inline_images;
|
||||
bool keep_inline_images;
|
||||
bool remove_page_labels;
|
||||
size_t oi_min_width;
|
||||
size_t oi_min_height;
|
||||
size_t oi_min_area;
|
||||
@ -670,6 +672,7 @@ class ArgParser
|
||||
void argOptimizeImages();
|
||||
void argExternalizeInlineImages();
|
||||
void argKeepInlineImages();
|
||||
void argRemovePageLabels();
|
||||
void argOiMinWidth(char* parameter);
|
||||
void argOiMinHeight(char* parameter);
|
||||
void argOiMinArea(char* parameter);
|
||||
@ -911,6 +914,7 @@ ArgParser::initOptionTable()
|
||||
(*t)["externalize-inline-images"] =
|
||||
oe_bare(&ArgParser::argExternalizeInlineImages);
|
||||
(*t)["keep-inline-images"] = oe_bare(&ArgParser::argKeepInlineImages);
|
||||
(*t)["remove-page-labels"] = oe_bare(&ArgParser::argRemovePageLabels);
|
||||
(*t)["oi-min-width"] = oe_requiredParameter(
|
||||
&ArgParser::argOiMinWidth, "minimum-width");
|
||||
(*t)["oi-min-height"] = oe_requiredParameter(
|
||||
@ -1335,6 +1339,7 @@ ArgParser::argHelp()
|
||||
<< "--ii-min-bytes=bytes specify minimum size of inline images to be\n"
|
||||
<< " converted to regular images\n"
|
||||
<< "--keep-inline-images exclude inline images from image optimization\n"
|
||||
<< "--remove-page-labels remove any page labels present in the output file\n"
|
||||
<< "--qdf turns on \"QDF mode\" (below)\n"
|
||||
<< "--linearize-pass1=file write intermediate pass of linearized file\n"
|
||||
<< " for debugging\n"
|
||||
@ -2012,6 +2017,12 @@ ArgParser::argKeepInlineImages()
|
||||
o.keep_inline_images = true;
|
||||
}
|
||||
|
||||
void
|
||||
ArgParser::argRemovePageLabels()
|
||||
{
|
||||
o.remove_page_labels = true;
|
||||
}
|
||||
|
||||
void
|
||||
ArgParser::argOiMinWidth(char* parameter)
|
||||
{
|
||||
@ -4335,6 +4346,10 @@ static void handle_transformations(QPDF& pdf, Options& o)
|
||||
(*iter).coalesceContentStreams();
|
||||
}
|
||||
}
|
||||
if (o.remove_page_labels)
|
||||
{
|
||||
pdf.getRoot().removeKey("/PageLabels");
|
||||
}
|
||||
}
|
||||
|
||||
static void handle_page_specs(QPDF& pdf, Options& o)
|
||||
|
@ -1877,7 +1877,7 @@ foreach my $f (qw(page_api_2 direct-pages))
|
||||
show_ntests();
|
||||
# ----------
|
||||
$td->notify("--- Merging and Splitting ---");
|
||||
$n_tests += 22;
|
||||
$n_tests += 24;
|
||||
|
||||
# Select pages from the same file multiple times including selecting
|
||||
# twice from an encrypted file and specifying the password only the
|
||||
@ -1944,6 +1944,18 @@ $td->runtest("merge with multiple labels",
|
||||
$td->runtest("check output",
|
||||
{$td->FILE => "a.pdf"},
|
||||
{$td->FILE => "merge-multiple-labels.pdf"});
|
||||
$td->runtest("remove labels",
|
||||
{$td->COMMAND =>
|
||||
"qpdf --empty a.pdf" .
|
||||
" --remove-page-labels" .
|
||||
" --pages 11-pages-with-labels.pdf 8-11" .
|
||||
" minimal.pdf " .
|
||||
" page-labels-and-outlines.pdf 17-19 --" .
|
||||
" --static-id"},
|
||||
{$td->STRING => "", $td->EXIT_STATUS => 0});
|
||||
$td->runtest("check output",
|
||||
{$td->FILE => "a.pdf"},
|
||||
{$td->FILE => "remove-labels.pdf"});
|
||||
|
||||
$td->runtest("split with shared resources",
|
||||
{$td->COMMAND =>
|
||||
|
BIN
qpdf/qtest/qpdf/remove-labels.pdf
Normal file
BIN
qpdf/qtest/qpdf/remove-labels.pdf
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user