mirror of
https://github.com/qpdf/qpdf.git
synced 2024-12-22 19:08:59 +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>
|
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
|
* Add parameter --keep-files-open-threshold to override the
|
||||||
maximum number of files that qpdf will allow to be kept open at
|
maximum number of files that qpdf will allow to be kept open at
|
||||||
once. Fixes #288.
|
once. Fixes #288.
|
||||||
|
@ -1797,9 +1797,6 @@ outfile.pdf</option>
|
|||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><option>--externalize-inline-images</option></term>
|
<term><option>--externalize-inline-images</option></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
@ -1834,6 +1831,14 @@ outfile.pdf</option>
|
|||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>--remove-page-labels</option></term>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Remove page labels from the output file.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><option>--qdf</option></term>
|
<term><option>--qdf</option></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
|
15
qpdf/qpdf.cc
15
qpdf/qpdf.cc
@ -164,6 +164,7 @@ struct Options
|
|||||||
optimize_images(false),
|
optimize_images(false),
|
||||||
externalize_inline_images(false),
|
externalize_inline_images(false),
|
||||||
keep_inline_images(false),
|
keep_inline_images(false),
|
||||||
|
remove_page_labels(false),
|
||||||
oi_min_width(128), // Default values for these
|
oi_min_width(128), // Default values for these
|
||||||
oi_min_height(128), // oi flags are in --help
|
oi_min_height(128), // oi flags are in --help
|
||||||
oi_min_area(16384), // and in the manual.
|
oi_min_area(16384), // and in the manual.
|
||||||
@ -261,6 +262,7 @@ struct Options
|
|||||||
bool optimize_images;
|
bool optimize_images;
|
||||||
bool externalize_inline_images;
|
bool externalize_inline_images;
|
||||||
bool keep_inline_images;
|
bool keep_inline_images;
|
||||||
|
bool remove_page_labels;
|
||||||
size_t oi_min_width;
|
size_t oi_min_width;
|
||||||
size_t oi_min_height;
|
size_t oi_min_height;
|
||||||
size_t oi_min_area;
|
size_t oi_min_area;
|
||||||
@ -670,6 +672,7 @@ class ArgParser
|
|||||||
void argOptimizeImages();
|
void argOptimizeImages();
|
||||||
void argExternalizeInlineImages();
|
void argExternalizeInlineImages();
|
||||||
void argKeepInlineImages();
|
void argKeepInlineImages();
|
||||||
|
void argRemovePageLabels();
|
||||||
void argOiMinWidth(char* parameter);
|
void argOiMinWidth(char* parameter);
|
||||||
void argOiMinHeight(char* parameter);
|
void argOiMinHeight(char* parameter);
|
||||||
void argOiMinArea(char* parameter);
|
void argOiMinArea(char* parameter);
|
||||||
@ -911,6 +914,7 @@ ArgParser::initOptionTable()
|
|||||||
(*t)["externalize-inline-images"] =
|
(*t)["externalize-inline-images"] =
|
||||||
oe_bare(&ArgParser::argExternalizeInlineImages);
|
oe_bare(&ArgParser::argExternalizeInlineImages);
|
||||||
(*t)["keep-inline-images"] = oe_bare(&ArgParser::argKeepInlineImages);
|
(*t)["keep-inline-images"] = oe_bare(&ArgParser::argKeepInlineImages);
|
||||||
|
(*t)["remove-page-labels"] = oe_bare(&ArgParser::argRemovePageLabels);
|
||||||
(*t)["oi-min-width"] = oe_requiredParameter(
|
(*t)["oi-min-width"] = oe_requiredParameter(
|
||||||
&ArgParser::argOiMinWidth, "minimum-width");
|
&ArgParser::argOiMinWidth, "minimum-width");
|
||||||
(*t)["oi-min-height"] = oe_requiredParameter(
|
(*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"
|
<< "--ii-min-bytes=bytes specify minimum size of inline images to be\n"
|
||||||
<< " converted to regular images\n"
|
<< " converted to regular images\n"
|
||||||
<< "--keep-inline-images exclude inline images from image optimization\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"
|
<< "--qdf turns on \"QDF mode\" (below)\n"
|
||||||
<< "--linearize-pass1=file write intermediate pass of linearized file\n"
|
<< "--linearize-pass1=file write intermediate pass of linearized file\n"
|
||||||
<< " for debugging\n"
|
<< " for debugging\n"
|
||||||
@ -2012,6 +2017,12 @@ ArgParser::argKeepInlineImages()
|
|||||||
o.keep_inline_images = true;
|
o.keep_inline_images = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ArgParser::argRemovePageLabels()
|
||||||
|
{
|
||||||
|
o.remove_page_labels = true;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ArgParser::argOiMinWidth(char* parameter)
|
ArgParser::argOiMinWidth(char* parameter)
|
||||||
{
|
{
|
||||||
@ -4335,6 +4346,10 @@ static void handle_transformations(QPDF& pdf, Options& o)
|
|||||||
(*iter).coalesceContentStreams();
|
(*iter).coalesceContentStreams();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (o.remove_page_labels)
|
||||||
|
{
|
||||||
|
pdf.getRoot().removeKey("/PageLabels");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void handle_page_specs(QPDF& pdf, Options& o)
|
static void handle_page_specs(QPDF& pdf, Options& o)
|
||||||
|
@ -1877,7 +1877,7 @@ foreach my $f (qw(page_api_2 direct-pages))
|
|||||||
show_ntests();
|
show_ntests();
|
||||||
# ----------
|
# ----------
|
||||||
$td->notify("--- Merging and Splitting ---");
|
$td->notify("--- Merging and Splitting ---");
|
||||||
$n_tests += 22;
|
$n_tests += 24;
|
||||||
|
|
||||||
# Select pages from the same file multiple times including selecting
|
# Select pages from the same file multiple times including selecting
|
||||||
# twice from an encrypted file and specifying the password only the
|
# 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->runtest("check output",
|
||||||
{$td->FILE => "a.pdf"},
|
{$td->FILE => "a.pdf"},
|
||||||
{$td->FILE => "merge-multiple-labels.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->runtest("split with shared resources",
|
||||||
{$td->COMMAND =>
|
{$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