aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDFJob.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libqpdf/QPDFJob.cc')
-rw-r--r--libqpdf/QPDFJob.cc176
1 files changed, 54 insertions, 122 deletions
diff --git a/libqpdf/QPDFJob.cc b/libqpdf/QPDFJob.cc
index e0cc783f..4d136223 100644
--- a/libqpdf/QPDFJob.cc
+++ b/libqpdf/QPDFJob.cc
@@ -852,10 +852,7 @@ QPDFJob::doCheck(QPDF& pdf)
std::vector<QPDFPageObjectHelper> pages = dh.getAllPages();
DiscardContents discard_contents;
int pageno = 0;
- for (std::vector<QPDFPageObjectHelper>::iterator iter = pages.begin();
- iter != pages.end();
- ++iter) {
- QPDFPageObjectHelper& page(*iter);
+ for (auto& page: pages) {
++pageno;
try {
page.parseContents(&discard_contents);
@@ -927,10 +924,7 @@ QPDFJob::doShowPages(QPDF& pdf)
std::vector<QPDFPageObjectHelper> pages = dh.getAllPages();
int pageno = 0;
auto& cout = *this->m->cout;
- for (std::vector<QPDFPageObjectHelper>::iterator iter = pages.begin();
- iter != pages.end();
- ++iter) {
- QPDFPageObjectHelper& ph(*iter);
+ for (auto& ph: pages) {
QPDFObjectHandle page = ph.getObjectHandle();
++pageno;
@@ -1058,12 +1052,9 @@ QPDFJob::doJSONObjects(QPDF& pdf, JSON& j)
"trailer", pdf.getTrailer().getJSON(true));
}
std::vector<QPDFObjectHandle> objects = pdf.getAllObjects();
- for (std::vector<QPDFObjectHandle>::iterator iter = objects.begin();
- iter != objects.end();
- ++iter) {
- if (all_objects || wanted_og.count((*iter).getObjGen())) {
- j_objects.addDictionaryMember(
- (*iter).unparse(), (*iter).getJSON(true));
+ for (auto& obj: objects) {
+ if (all_objects || wanted_og.count(obj.getObjGen())) {
+ j_objects.addDictionaryMember(obj.unparse(), obj.getJSON(true));
}
}
}
@@ -1106,12 +1097,10 @@ QPDFJob::doJSONPages(QPDF& pdf, JSON& j)
QPDFOutlineDocumentHelper odh(pdf);
pdh.pushInheritedAttributesToPage();
std::vector<QPDFPageObjectHelper> pages = pdh.getAllPages();
- int pageno = 0;
- for (std::vector<QPDFPageObjectHelper>::iterator iter = pages.begin();
- iter != pages.end();
- ++iter, ++pageno) {
+ int pageno = -1;
+ for (auto& ph: pages) {
+ ++pageno;
JSON j_page = j_pages.addArrayElement(JSON::makeDictionary());
- QPDFPageObjectHelper& ph(*iter);
QPDFObjectHandle page = ph.getObjectHandle();
j_page.addDictionaryMember("object", page.getJSON());
JSON j_images = j_page.addDictionaryMember("images", JSON::makeArray());
@@ -1161,17 +1150,14 @@ QPDFJob::doJSONPages(QPDF& pdf, JSON& j)
j_page.addDictionaryMember("outlines", JSON::makeArray());
std::vector<QPDFOutlineObjectHelper> outlines =
odh.getOutlinesForPage(page.getObjGen());
- for (std::vector<QPDFOutlineObjectHelper>::iterator oiter =
- outlines.begin();
- oiter != outlines.end();
- ++oiter) {
+ for (auto& oiter: outlines) {
JSON j_outline = j_outlines.addArrayElement(JSON::makeDictionary());
j_outline.addDictionaryMember(
- "object", (*oiter).getObjectHandle().getJSON());
+ "object", oiter.getObjectHandle().getJSON());
j_outline.addDictionaryMember(
- "title", JSON::makeString((*oiter).getTitle()));
+ "title", JSON::makeString(oiter.getTitle()));
j_outline.addDictionaryMember(
- "dest", (*oiter).getDest().getJSON(true));
+ "dest", oiter.getDest().getJSON(true));
}
j_page.addDictionaryMember("pageposfrom1", JSON::makeInt(1 + pageno));
}
@@ -1188,10 +1174,8 @@ QPDFJob::doJSONPageLabels(QPDF& pdf, JSON& j)
std::vector<QPDFObjectHandle> labels;
pldh.getLabelsForPageRange(
0, QIntC::to_int(pages.size()) - 1, 0, labels);
- for (std::vector<QPDFObjectHandle>::iterator iter = labels.begin();
- iter != labels.end();
- ++iter) {
- std::vector<QPDFObjectHandle>::iterator next = iter;
+ for (auto iter = labels.begin(); iter != labels.end(); ++iter) {
+ auto next = iter;
++next;
if (next == labels.end()) {
// This can't happen, so ignore it. This could only
@@ -1213,10 +1197,7 @@ add_outlines_to_json(
JSON& j,
std::map<QPDFObjGen, int>& page_numbers)
{
- for (std::vector<QPDFOutlineObjectHelper>::iterator iter = outlines.begin();
- iter != outlines.end();
- ++iter) {
- QPDFOutlineObjectHelper& ol = *iter;
+ for (auto& ol: outlines) {
JSON jo = j.addArrayElement(JSON::makeDictionary());
jo.addDictionaryMember("object", ol.getObjectHandle().getJSON());
jo.addDictionaryMember("title", JSON::makeString(ol.getTitle()));
@@ -1243,10 +1224,8 @@ QPDFJob::doJSONOutlines(QPDF& pdf, JSON& j)
QPDFPageDocumentHelper dh(pdf);
std::vector<QPDFPageObjectHelper> pages = dh.getAllPages();
int n = 0;
- for (std::vector<QPDFPageObjectHelper>::iterator iter = pages.begin();
- iter != pages.end();
- ++iter) {
- QPDFObjectHandle oh = (*iter).getObjectHandle();
+ for (auto const& ph: pages) {
+ QPDFObjectHandle oh = ph.getObjectHandle();
page_numbers[oh.getObjGen()] = ++n;
}
@@ -1268,17 +1247,11 @@ QPDFJob::doJSONAcroform(QPDF& pdf, JSON& j)
QPDFPageDocumentHelper pdh(pdf);
std::vector<QPDFPageObjectHelper> pages = pdh.getAllPages();
int pagepos1 = 0;
- for (std::vector<QPDFPageObjectHelper>::iterator page_iter = pages.begin();
- page_iter != pages.end();
- ++page_iter) {
+ for (auto const& page: pages) {
++pagepos1;
std::vector<QPDFAnnotationObjectHelper> annotations =
- afdh.getWidgetAnnotationsForPage(*page_iter);
- for (std::vector<QPDFAnnotationObjectHelper>::iterator annot_iter =
- annotations.begin();
- annot_iter != annotations.end();
- ++annot_iter) {
- QPDFAnnotationObjectHelper& aoh = *annot_iter;
+ afdh.getWidgetAnnotationsForPage(page);
+ for (auto& aoh: annotations) {
QPDFFormFieldObjectHelper ffh = afdh.getFieldForAnnotation(aoh);
JSON j_field = j_fields.addArrayElement(JSON::makeDictionary());
j_field.addDictionaryMember(
@@ -1314,10 +1287,8 @@ QPDFJob::doJSONAcroform(QPDF& pdf, JSON& j)
JSON j_choices =
j_field.addDictionaryMember("choices", JSON::makeArray());
std::vector<std::string> choices = ffh.getChoices();
- for (std::vector<std::string>::iterator iter = choices.begin();
- iter != choices.end();
- ++iter) {
- j_choices.addArrayElement(JSON::makeString(*iter));
+ for (auto const& choice: choices) {
+ j_choices.addArrayElement(JSON::makeString(choice));
}
JSON j_annot = j_field.addDictionaryMember(
"annotation", JSON::makeDictionary());
@@ -1688,10 +1659,8 @@ Please report this as a bug at\n\
https://github.com/qpdf/qpdf/issues/new\n\
ideally with the file that caused the error and the output below. Thanks!\n\
\n";
- for (std::list<std::string>::iterator iter = errors.begin();
- iter != errors.end();
- ++iter) {
- *(this->m->cerr) << (*iter) << std::endl;
+ for (auto const& error: errors) {
+ *(this->m->cerr) << error << std::endl;
}
}
@@ -1816,10 +1785,8 @@ QPDFJob::doProcess(
QUtil::possible_repaired_encodings(password);
// Represent to char const*, as required by the QPDF class.
std::vector<char const*> passwords;
- for (std::vector<std::string>::iterator iter = passwords_str.begin();
- iter != passwords_str.end();
- ++iter) {
- passwords.push_back((*iter).c_str());
+ for (auto const& iter: passwords_str) {
+ passwords.push_back(iter.c_str());
}
// We always try the supplied password first because it is the
// first string returned by possible_repaired_encodings. If there
@@ -1835,13 +1802,11 @@ QPDFJob::doProcess(
// attempt, which, like the first attempt, will be with the
// supplied password.
bool warned = false;
- for (std::vector<char const*>::iterator iter = passwords.begin();
- iter != passwords.end();
- ++iter) {
+ for (auto iter = passwords.begin(); iter != passwords.end(); ++iter) {
try {
return doProcessOnce(fn, *iter, empty, used_for_input);
} catch (QPDFExc& e) {
- std::vector<char const*>::iterator next = iter;
+ auto next = iter;
++next;
if (next == passwords.end()) {
throw e;
@@ -1961,10 +1926,7 @@ QPDFJob::doUnderOverlayForPage(
resources = dest_page.getObjectHandle().replaceKeyAndGet(
"/Resources", QPDFObjectHandle::newDictionary());
}
- for (std::vector<int>::iterator iter = pagenos[pageno].begin();
- iter != pagenos[pageno].end();
- ++iter) {
- int from_pageno = *iter;
+ for (int from_pageno: pagenos[pageno]) {
doIfVerbose([&](std::ostream& cout, std::string const& prefix) {
cout << " " << uo.which << " " << from_pageno << std::endl;
});
@@ -2017,15 +1979,14 @@ QPDFJob::getUOPagenos(
size_t idx = 0;
size_t from_size = uo.from_pagenos.size();
size_t repeat_size = uo.repeat_pagenos.size();
- for (std::vector<int>::iterator iter = uo.to_pagenos.begin();
- iter != uo.to_pagenos.end();
- ++iter, ++idx) {
+ for (int to_pageno: uo.to_pagenos) {
if (idx < from_size) {
- pagenos[*iter].push_back(uo.from_pagenos.at(idx));
+ pagenos[to_pageno].push_back(uo.from_pagenos.at(idx));
} else if (repeat_size) {
- pagenos[*iter].push_back(
+ pagenos[to_pageno].push_back(
uo.repeat_pagenos.at((idx - from_size) % repeat_size));
}
+ ++idx;
}
}
@@ -2206,21 +2167,15 @@ QPDFJob::handleTransformations(QPDF& pdf)
if (m->externalize_inline_images ||
(m->optimize_images && (!m->keep_inline_images))) {
std::vector<QPDFPageObjectHelper> pages = dh.getAllPages();
- for (std::vector<QPDFPageObjectHelper>::iterator iter = pages.begin();
- iter != pages.end();
- ++iter) {
- QPDFPageObjectHelper& ph(*iter);
+ for (auto& ph: pages) {
ph.externalizeInlineImages(m->ii_min_bytes);
}
}
if (m->optimize_images) {
int pageno = 0;
std::vector<QPDFPageObjectHelper> pages = dh.getAllPages();
- for (std::vector<QPDFPageObjectHelper>::iterator iter = pages.begin();
- iter != pages.end();
- ++iter) {
+ for (auto& ph: pages) {
++pageno;
- QPDFPageObjectHelper& ph(*iter);
QPDFObjectHandle page = ph.getObjectHandle();
std::map<std::string, QPDFObjectHandle> images = ph.getImages();
for (auto& iter2: images) {
@@ -2260,10 +2215,8 @@ QPDFJob::handleTransformations(QPDF& pdf)
}
if (m->coalesce_contents) {
std::vector<QPDFPageObjectHelper> pages = dh.getAllPages();
- for (std::vector<QPDFPageObjectHelper>::iterator iter = pages.begin();
- iter != pages.end();
- ++iter) {
- (*iter).coalesceContentStreams();
+ for (auto& page: pages) {
+ page.coalesceContentStreams();
}
}
if (m->flatten_rotation) {
@@ -2428,10 +2381,7 @@ QPDFJob::handlePageSpecs(
// actual pages.
// Handle "." as a shortcut for the input file
- for (std::vector<QPDFJob::PageSpec>::iterator iter = m->page_specs.begin();
- iter != m->page_specs.end();
- ++iter) {
- QPDFJob::PageSpec& page_spec = *iter;
+ for (auto& page_spec: m->page_specs) {
if (page_spec.filename == ".") {
page_spec.filename = m->infilename.get();
}
@@ -2463,10 +2413,7 @@ QPDFJob::handlePageSpecs(
page_spec_qpdfs[m->infilename.get()] = &pdf;
std::vector<QPDFPageData> parsed_specs;
std::map<unsigned long long, std::set<QPDFObjGen>> copied_pages;
- for (std::vector<QPDFJob::PageSpec>::iterator iter = m->page_specs.begin();
- iter != m->page_specs.end();
- ++iter) {
- QPDFJob::PageSpec& page_spec = *iter;
+ for (auto& page_spec: m->page_specs) {
if (page_spec_qpdfs.count(page_spec.filename) == 0) {
// Open the PDF file and store the QPDF object. Throw a
// std::shared_ptr to the qpdf into a heap so that it
@@ -2523,17 +2470,14 @@ QPDFJob::handlePageSpecs(
std::map<unsigned long long, bool> remove_unreferenced;
if (m->remove_unreferenced_page_resources != QPDFJob::re_no) {
- for (std::map<std::string, QPDF*>::iterator iter =
- page_spec_qpdfs.begin();
- iter != page_spec_qpdfs.end();
- ++iter) {
- std::string const& filename = (*iter).first;
+ for (auto const& iter: page_spec_qpdfs) {
+ std::string const& filename = iter.first;
ClosedFileInputSource* cis = 0;
if (page_spec_cfis.count(filename)) {
cis = page_spec_cfis[filename];
cis->stayOpen(true);
}
- QPDF& other(*((*iter).second));
+ QPDF& other(*(iter.second));
auto other_uuid = other.getUniqueId();
if (remove_unreferenced.count(other_uuid) == 0) {
remove_unreferenced[other_uuid] =
@@ -2556,10 +2500,8 @@ QPDFJob::handlePageSpecs(
});
QPDFPageDocumentHelper dh(pdf);
std::vector<QPDFPageObjectHelper> orig_pages = dh.getAllPages();
- for (std::vector<QPDFPageObjectHelper>::iterator iter = orig_pages.begin();
- iter != orig_pages.end();
- ++iter) {
- dh.removePage(*iter);
+ for (auto const& page: orig_pages) {
+ dh.removePage(page);
}
if (m->collate && (parsed_specs.size() > 1)) {
@@ -2601,10 +2543,7 @@ QPDFJob::handlePageSpecs(
afdh_map;
auto this_afdh = get_afdh_for_qpdf(afdh_map, &pdf);
std::set<QPDFObjGen> referenced_fields;
- for (std::vector<QPDFPageData>::iterator iter = parsed_specs.begin();
- iter != parsed_specs.end();
- ++iter) {
- QPDFPageData& page_data = *iter;
+ for (auto& page_data: parsed_specs) {
ClosedFileInputSource* cis = 0;
if (page_spec_cfis.count(page_data.filename)) {
cis = page_spec_cfis[page_data.filename];
@@ -2619,14 +2558,12 @@ QPDFJob::handlePageSpecs(
cout << prefix << ": adding pages from " << page_data.filename
<< std::endl;
});
- for (std::vector<int>::iterator pageno_iter =
- page_data.selected_pages.begin();
- pageno_iter != page_data.selected_pages.end();
- ++pageno_iter, ++out_pageno) {
+ for (auto pageno_iter: page_data.selected_pages) {
// Pages are specified from 1 but numbered from 0 in the
// vector
- int pageno = *pageno_iter - 1;
- pldh.getLabelsForPageRange(pageno, pageno, out_pageno, new_labels);
+ int pageno = pageno_iter - 1;
+ pldh.getLabelsForPageRange(
+ pageno, pageno, out_pageno++, new_labels);
QPDFPageObjectHelper to_copy =
page_data.orig_pages.at(QIntC::to_size(pageno));
QPDFObjGen to_copy_og = to_copy.getObjectHandle().getObjGen();
@@ -2748,19 +2685,14 @@ QPDFJob::handleRotations(QPDF& pdf)
QPDFPageDocumentHelper dh(pdf);
std::vector<QPDFPageObjectHelper> pages = dh.getAllPages();
int npages = QIntC::to_int(pages.size());
- for (std::map<std::string, QPDFJob::RotationSpec>::iterator iter =
- m->rotations.begin();
- iter != m->rotations.end();
- ++iter) {
- std::string const& range = (*iter).first;
- QPDFJob::RotationSpec const& rspec = (*iter).second;
+ for (auto const& iter: m->rotations) {
+ std::string const& range = iter.first;
+ QPDFJob::RotationSpec const& rspec = iter.second;
// range has been previously validated
std::vector<int> to_rotate =
QUtil::parse_numrange(range.c_str(), npages);
- for (std::vector<int>::iterator i2 = to_rotate.begin();
- i2 != to_rotate.end();
- ++i2) {
- int pageno = *i2 - 1;
+ for (int pageno_iter: to_rotate) {
+ int pageno = pageno_iter - 1;
if ((pageno >= 0) && (pageno < npages)) {
pages.at(QIntC::to_size(pageno))
.rotatePage(rspec.angle, rspec.relative);