aboutsummaryrefslogtreecommitdiffstats
path: root/qpdf/qpdf.cc
diff options
context:
space:
mode:
Diffstat (limited to 'qpdf/qpdf.cc')
-rw-r--r--qpdf/qpdf.cc21
1 files changed, 21 insertions, 0 deletions
diff --git a/qpdf/qpdf.cc b/qpdf/qpdf.cc
index bf5d7078..74285bcd 100644
--- a/qpdf/qpdf.cc
+++ b/qpdf/qpdf.cc
@@ -90,6 +90,7 @@ struct Options
qdf_mode(false),
preserve_unreferenced_objects(false),
newline_before_endstream(false),
+ coalesce_contents(false),
show_npages(false),
deterministic_id(false),
static_id(false),
@@ -154,6 +155,7 @@ struct Options
bool preserve_unreferenced_objects;
bool newline_before_endstream;
std::string linearize_pass1;
+ bool coalesce_contents;
std::string min_version;
std::string force_version;
bool show_npages;
@@ -391,6 +393,7 @@ familiar with the PDF file format or who are PDF developers.\n\
--object-streams=mode controls handing of object streams\n\
--preserve-unreferenced preserve unreferenced objects\n\
--newline-before-endstream always put a newline before endstream\n\
+--coalesce-contents force all pages' content to be a single stream\n\
--qdf turns on \"QDF mode\" (below)\n\
--linearize-pass1=file write intermediate pass of linearized file\n\
for debugging\n\
@@ -1543,6 +1546,10 @@ static void parse_options(int argc, char* argv[], Options& o)
}
o.linearize_pass1 = parameter;
}
+ else if (strcmp(arg, "coalesce-contents") == 0)
+ {
+ o.coalesce_contents = true;
+ }
else if (strcmp(arg, "min-version") == 0)
{
if (parameter == 0)
@@ -1960,6 +1967,19 @@ static void do_inspection(QPDF& pdf, Options& o)
}
}
+static void handle_transformations(QPDF& pdf, Options& o)
+{
+ if (o.coalesce_contents)
+ {
+ std::vector<QPDFObjectHandle> pages = pdf.getAllPages();
+ for (std::vector<QPDFObjectHandle>::iterator iter = pages.begin();
+ iter != pages.end(); ++iter)
+ {
+ (*iter).coalesceContentStreams();
+ }
+ }
+}
+
static void handle_page_specs(QPDF& pdf, Options& o,
std::vector<PointerHolder<QPDF> >& page_heap)
{
@@ -2382,6 +2402,7 @@ int main(int argc, char* argv[])
pdf.processFile(o.infilename, o.password);
}
+ handle_transformations(pdf, o);
std::vector<PointerHolder<QPDF> > page_heap;
if (! o.page_specs.empty())
{