2
1
mirror of https://github.com/qpdf/qpdf.git synced 2024-05-29 16:30:53 +00:00

Move QTC::TC for qpdf to QPDFJob

All the coverage cases that used to be in qpdf.cc are now in
QPDFJob*.cc. It doesn't really matter, but better to follow the
convention of starting with the class that includes the coverage call.
This commit is contained in:
Jay Berkenbilt 2022-02-01 07:49:00 -05:00
parent b42f3e1d15
commit 03e67a28fe
3 changed files with 92 additions and 92 deletions

View File

@ -141,7 +141,7 @@ ImageOptimizer::makePipeline(std::string const& description, Pipeline* next)
QPDFObjectHandle components_obj = dict.getKey("/BitsPerComponent"); QPDFObjectHandle components_obj = dict.getKey("/BitsPerComponent");
if (! (components_obj.isInteger() && (components_obj.getIntValue() == 8))) if (! (components_obj.isInteger() && (components_obj.getIntValue() == 8)))
{ {
QTC::TC("qpdf", "qpdf image optimize bits per component"); QTC::TC("qpdf", "QPDFJob image optimize bits per component");
if (! description.empty()) if (! description.empty())
{ {
o.doIfVerbose([&](std::ostream& cout, std::string const& prefix) { o.doIfVerbose([&](std::ostream& cout, std::string const& prefix) {
@ -194,7 +194,7 @@ ImageOptimizer::makePipeline(std::string const& description, Pipeline* next)
} }
else else
{ {
QTC::TC("qpdf", "qpdf image optimize colorspace"); QTC::TC("qpdf", "QPDFJob image optimize colorspace");
if (! description.empty()) if (! description.empty())
{ {
o.doIfVerbose([&](std::ostream& cout, std::string const& prefix) { o.doIfVerbose([&](std::ostream& cout, std::string const& prefix) {
@ -209,7 +209,7 @@ ImageOptimizer::makePipeline(std::string const& description, Pipeline* next)
((this->oi_min_height > 0) && (h <= this->oi_min_height)) || ((this->oi_min_height > 0) && (h <= this->oi_min_height)) ||
((this->oi_min_area > 0) && ((w * h) <= this->oi_min_area))) ((this->oi_min_area > 0) && ((w * h) <= this->oi_min_area)))
{ {
QTC::TC("qpdf", "qpdf image optimize too small"); QTC::TC("qpdf", "QPDFJob image optimize too small");
if (! description.empty()) if (! description.empty())
{ {
o.doIfVerbose([&](std::ostream& cout, std::string const& prefix) { o.doIfVerbose([&](std::ostream& cout, std::string const& prefix) {
@ -231,7 +231,7 @@ ImageOptimizer::evaluate(std::string const& description)
{ {
if (! image.pipeStreamData(0, 0, qpdf_dl_specialized, true)) if (! image.pipeStreamData(0, 0, qpdf_dl_specialized, true))
{ {
QTC::TC("qpdf", "qpdf image optimize no pipeline"); QTC::TC("qpdf", "QPDFJob image optimize no pipeline");
o.doIfVerbose([&](std::ostream& cout, std::string const& prefix) { o.doIfVerbose([&](std::ostream& cout, std::string const& prefix) {
cout << prefix << ": " << description cout << prefix << ": " << description
<< ": not optimizing because unable to decode data" << ": not optimizing because unable to decode data"
@ -255,7 +255,7 @@ ImageOptimizer::evaluate(std::string const& description)
long long orig_length = image.getDict().getKey("/Length").getIntValue(); long long orig_length = image.getDict().getKey("/Length").getIntValue();
if (c.getCount() >= orig_length) if (c.getCount() >= orig_length)
{ {
QTC::TC("qpdf", "qpdf image optimize no shrink"); QTC::TC("qpdf", "QPDFJob image optimize no shrink");
o.doIfVerbose([&](std::ostream& cout, std::string const& prefix) { o.doIfVerbose([&](std::ostream& cout, std::string const& prefix) {
cout << prefix << ": " << description cout << prefix << ": " << description
<< ": not optimizing because DCT compression does not" << ": not optimizing because DCT compression does not"
@ -668,12 +668,12 @@ QPDFJob::getExitCode() const
{ {
if (this->m->encryption_status & qpdf_es_encrypted) if (this->m->encryption_status & qpdf_es_encrypted)
{ {
QTC::TC("qpdf", "qpdf check encrypted encrypted"); QTC::TC("qpdf", "QPDFJob check encrypted encrypted");
return 0; return 0;
} }
else else
{ {
QTC::TC("qpdf", "qpdf check encrypted not encrypted"); QTC::TC("qpdf", "QPDFJob check encrypted not encrypted");
return EXIT_IS_NOT_ENCRYPTED; return EXIT_IS_NOT_ENCRYPTED;
} }
} }
@ -683,18 +683,18 @@ QPDFJob::getExitCode() const
{ {
if (this->m->encryption_status & qpdf_es_password_incorrect) if (this->m->encryption_status & qpdf_es_password_incorrect)
{ {
QTC::TC("qpdf", "qpdf check password password incorrect"); QTC::TC("qpdf", "QPDFJob check password password incorrect");
return 0; return 0;
} }
else else
{ {
QTC::TC("qpdf", "qpdf check password password correct"); QTC::TC("qpdf", "QPDFJob check password password correct");
return EXIT_CORRECT_PASSWORD; return EXIT_CORRECT_PASSWORD;
} }
} }
else else
{ {
QTC::TC("qpdf", "qpdf check password not encrypted"); QTC::TC("qpdf", "QPDFJob check password not encrypted");
return EXIT_IS_NOT_ENCRYPTED; return EXIT_IS_NOT_ENCRYPTED;
} }
} }
@ -782,7 +782,7 @@ QPDFJob::checkConfiguration()
if ((! m->split_pages) && if ((! m->split_pages) &&
QUtil::same_file(m->infilename.get(), m->outfilename.get())) QUtil::same_file(m->infilename.get(), m->outfilename.get()))
{ {
QTC::TC("qpdf", "qpdf same file error"); QTC::TC("qpdf", "QPDFJob same file error");
usage("input file and output file are the same;" usage("input file and output file are the same;"
" use --replace-input to intentionally" " use --replace-input to intentionally"
" overwrite the input file"); " overwrite the input file");
@ -1028,7 +1028,7 @@ QPDFJob::doShowObj(QPDF& pdf)
if (filter && if (filter &&
(! obj.pipeStreamData(0, 0, qpdf_dl_all))) (! obj.pipeStreamData(0, 0, qpdf_dl_all)))
{ {
QTC::TC("qpdf", "qpdf unable to filter"); QTC::TC("qpdf", "QPDFJob unable to filter");
obj.warnIfPossible("unable to filter stream data"); obj.warnIfPossible("unable to filter stream data");
error = true; error = true;
} }
@ -1969,7 +1969,7 @@ QPDFJob::doInspection(QPDF& pdf)
} }
if (m->show_npages) if (m->show_npages)
{ {
QTC::TC("qpdf", "qpdf npages"); QTC::TC("qpdf", "QPDFJob npages");
*(this->m->cout) << pdf.getRoot().getKey("/Pages"). *(this->m->cout) << pdf.getRoot().getKey("/Pages").
getKey("/Count").getIntValue() << std::endl; getKey("/Count").getIntValue() << std::endl;
} }
@ -2067,7 +2067,7 @@ QPDFJob::doProcess(
{ {
// Special case: handle --password-mode=hex-bytes for input // Special case: handle --password-mode=hex-bytes for input
// password as well as output password // password as well as output password
QTC::TC("qpdf", "qpdf input password hex-bytes"); QTC::TC("qpdf", "QPDFJob input password hex-bytes");
ptemp = QUtil::hex_decode(password); ptemp = QUtil::hex_decode(password);
password = ptemp.c_str(); password = ptemp.c_str();
} }
@ -2182,7 +2182,7 @@ QPDFJob::validateUnderOverlay(QPDF& pdf, UnderOverlay* uo)
{ {
if (uo->from_nr.empty()) if (uo->from_nr.empty())
{ {
QTC::TC("qpdf", "qpdf from_nr from repeat_nr"); QTC::TC("qpdf", "QPDFJob from_nr from repeat_nr");
uo->from_nr = uo->repeat_nr; uo->from_nr = uo->repeat_nr;
} }
uo->from_pagenos = uo->from_pagenos =
@ -2244,7 +2244,7 @@ QPDFJob::doUnderOverlayForPage(
QPDFObjectHandle resources = dest_page.getAttribute("/Resources", true); QPDFObjectHandle resources = dest_page.getAttribute("/Resources", true);
if (! resources.isDictionary()) if (! resources.isDictionary())
{ {
QTC::TC("qpdf", "qpdf overlay page with no resources"); QTC::TC("qpdf", "QPDFJob overlay page with no resources");
resources = QPDFObjectHandle::newDictionary(); resources = QPDFObjectHandle::newDictionary();
dest_page.getObjectHandle().replaceKey("/Resources", resources); dest_page.getObjectHandle().replaceKey("/Resources", resources);
} }
@ -2668,7 +2668,7 @@ QPDFJob::shouldRemoveUnreferencedResources(QPDF& pdf)
// This is a non-leaf node. // This is a non-leaf node.
if (dict.hasKey("/Resources")) if (dict.hasKey("/Resources"))
{ {
QTC::TC("qpdf", "qpdf found resources in non-leaf"); QTC::TC("qpdf", "QPDFJob found resources in non-leaf");
doIfVerbose([&](std::ostream& cout, doIfVerbose([&](std::ostream& cout,
std::string const& prefix) { std::string const& prefix) {
cout << " found resources in non-leaf page node " cout << " found resources in non-leaf page node "
@ -2692,7 +2692,7 @@ QPDFJob::shouldRemoveUnreferencedResources(QPDF& pdf)
QPDFObjGen resources_og = resources.getObjGen(); QPDFObjGen resources_og = resources.getObjGen();
if (resources_seen.count(resources_og)) if (resources_seen.count(resources_og))
{ {
QTC::TC("qpdf", "qpdf found shared resources in leaf"); QTC::TC("qpdf", "QPDFJob found shared resources in leaf");
doIfVerbose([&](std::ostream& cout, doIfVerbose([&](std::ostream& cout,
std::string const& prefix) { std::string const& prefix) {
cout << " found shared resources in leaf node " cout << " found shared resources in leaf node "
@ -2714,7 +2714,7 @@ QPDFJob::shouldRemoveUnreferencedResources(QPDF& pdf)
QPDFObjGen xobject_og = xobject.getObjGen(); QPDFObjGen xobject_og = xobject.getObjGen();
if (resources_seen.count(xobject_og)) if (resources_seen.count(xobject_og))
{ {
QTC::TC("qpdf", "qpdf found shared xobject in leaf"); QTC::TC("qpdf", "QPDFJob found shared xobject in leaf");
doIfVerbose([&](std::ostream& cout, doIfVerbose([&](std::ostream& cout,
std::string const& prefix) { std::string const& prefix) {
cout << " found shared xobject in leaf node " cout << " found shared xobject in leaf node "
@ -2802,7 +2802,7 @@ QPDFJob::handlePageSpecs(
filenames.insert(page_spec.filename); filenames.insert(page_spec.filename);
} }
m->keep_files_open = (filenames.size() <= m->keep_files_open_threshold); m->keep_files_open = (filenames.size() <= m->keep_files_open_threshold);
QTC::TC("qpdf", "qpdf automatically set keep files open", QTC::TC("qpdf", "QPDFJob automatically set keep files open",
m->keep_files_open ? 0 : 1); m->keep_files_open ? 0 : 1);
doIfVerbose([&](std::ostream& cout, std::string const& prefix) { doIfVerbose([&](std::ostream& cout, std::string const& prefix) {
cout << prefix << ": selecting --keep-open-files=" cout << prefix << ": selecting --keep-open-files="
@ -2837,7 +2837,7 @@ QPDFJob::handlePageSpecs(
if ((! m->encryption_file.empty()) && (password == 0) && if ((! m->encryption_file.empty()) && (password == 0) &&
(page_spec.filename == m->encryption_file)) (page_spec.filename == m->encryption_file))
{ {
QTC::TC("qpdf", "qpdf pages encryption password"); QTC::TC("qpdf", "QPDFJob pages encryption password");
password = m->encryption_file_password.get(); password = m->encryption_file_password.get();
} }
doIfVerbose([&](std::ostream& cout, std::string const& prefix) { doIfVerbose([&](std::ostream& cout, std::string const& prefix) {
@ -2848,14 +2848,14 @@ QPDFJob::handlePageSpecs(
ClosedFileInputSource* cis = 0; ClosedFileInputSource* cis = 0;
if (! m->keep_files_open) if (! m->keep_files_open)
{ {
QTC::TC("qpdf", "qpdf keep files open n"); QTC::TC("qpdf", "QPDFJob keep files open n");
cis = new ClosedFileInputSource(page_spec.filename.c_str()); cis = new ClosedFileInputSource(page_spec.filename.c_str());
is = cis; is = cis;
cis->stayOpen(true); cis->stayOpen(true);
} }
else else
{ {
QTC::TC("qpdf", "qpdf keep files open y"); QTC::TC("qpdf", "QPDFJob keep files open y");
FileInputSource* fis = new FileInputSource(); FileInputSource* fis = new FileInputSource();
is = fis; is = fis;
fis->setFilename(page_spec.filename.c_str()); fis->setFilename(page_spec.filename.c_str());
@ -3005,7 +3005,7 @@ QPDFJob::handlePageSpecs(
unsigned long long from_uuid = page_data.qpdf->getUniqueId(); unsigned long long from_uuid = page_data.qpdf->getUniqueId();
if (copied_pages[from_uuid].count(to_copy_og)) if (copied_pages[from_uuid].count(to_copy_og))
{ {
QTC::TC("qpdf", "qpdf copy same page more than once", QTC::TC("qpdf", "QPDFJob copy same page more than once",
(page_data.qpdf == &pdf) ? 0 : 1); (page_data.qpdf == &pdf) ? 0 : 1);
to_copy = to_copy.shallowCopyPage(); to_copy = to_copy.shallowCopyPage();
} }
@ -3043,11 +3043,11 @@ QPDFJob::handlePageSpecs(
{ {
if (! this_file) if (! this_file)
{ {
QTC::TC("qpdf", "qpdf copy fields not this file"); QTC::TC("qpdf", "QPDFJob copy fields not this file");
} }
else if (! first_copy_from_orig) else if (! first_copy_from_orig)
{ {
QTC::TC("qpdf", "qpdf copy fields non-first from orig"); QTC::TC("qpdf", "QPDFJob copy fields non-first from orig");
} }
try try
{ {
@ -3094,7 +3094,7 @@ QPDFJob::handlePageSpecs(
{ {
for (auto field: this_afdh->getFormFieldsForPage(page)) for (auto field: this_afdh->getFormFieldsForPage(page))
{ {
QTC::TC("qpdf", "qpdf pages keeping field from original"); QTC::TC("qpdf", "QPDFJob pages keeping field from original");
referenced_fields.insert(field.getObjectHandle().getObjGen()); referenced_fields.insert(field.getObjectHandle().getObjGen());
} }
} }
@ -3126,12 +3126,12 @@ QPDFJob::handlePageSpecs(
} }
if (new_fields.getArrayNItems() > 0) if (new_fields.getArrayNItems() > 0)
{ {
QTC::TC("qpdf", "qpdf keep some fields in pages"); QTC::TC("qpdf", "QPDFJob keep some fields in pages");
acroform.replaceKey("/Fields", new_fields); acroform.replaceKey("/Fields", new_fields);
} }
else else
{ {
QTC::TC("qpdf", "qpdf no more fields in pages"); QTC::TC("qpdf", "QPDFJob no more fields in pages");
pdf.getRoot().removeKey("/AcroForm"); pdf.getRoot().removeKey("/AcroForm");
} }
} }
@ -3172,11 +3172,11 @@ QPDFJob::maybeFixWritePassword(int R, std::string& password)
switch (m->password_mode) switch (m->password_mode)
{ {
case QPDFJob::pm_bytes: case QPDFJob::pm_bytes:
QTC::TC("qpdf", "qpdf password mode bytes"); QTC::TC("qpdf", "QPDFJob password mode bytes");
break; break;
case QPDFJob::pm_hex_bytes: case QPDFJob::pm_hex_bytes:
QTC::TC("qpdf", "qpdf password mode hex-bytes"); QTC::TC("qpdf", "QPDFJob password mode hex-bytes");
password = QUtil::hex_decode(password); password = QUtil::hex_decode(password);
break; break;
@ -3198,7 +3198,7 @@ QPDFJob::maybeFixWritePassword(int R, std::string& password)
{ {
if (! is_valid_utf8) if (! is_valid_utf8)
{ {
QTC::TC("qpdf", "qpdf password not unicode"); QTC::TC("qpdf", "QPDFJob password not unicode");
throw std::runtime_error( throw std::runtime_error(
"supplied password is not valid UTF-8"); "supplied password is not valid UTF-8");
} }
@ -3207,7 +3207,7 @@ QPDFJob::maybeFixWritePassword(int R, std::string& password)
std::string encoded; std::string encoded;
if (! QUtil::utf8_to_pdf_doc(password, encoded)) if (! QUtil::utf8_to_pdf_doc(password, encoded))
{ {
QTC::TC("qpdf", "qpdf password not encodable"); QTC::TC("qpdf", "QPDFJob password not encodable");
throw std::runtime_error( throw std::runtime_error(
"supplied password cannot be encoded for" "supplied password cannot be encoded for"
" 40-bit or 128-bit encryption formats"); " 40-bit or 128-bit encryption formats");
@ -3222,7 +3222,7 @@ QPDFJob::maybeFixWritePassword(int R, std::string& password)
std::string encoded; std::string encoded;
if (QUtil::utf8_to_pdf_doc(password, encoded)) if (QUtil::utf8_to_pdf_doc(password, encoded))
{ {
QTC::TC("qpdf", "qpdf auto-encode password"); QTC::TC("qpdf", "QPDFJob auto-encode password");
doIfVerbose([&](std::ostream& cout, doIfVerbose([&](std::ostream& cout,
std::string const& prefix) { std::string const& prefix) {
cout cout
@ -3236,7 +3236,7 @@ QPDFJob::maybeFixWritePassword(int R, std::string& password)
} }
else else
{ {
QTC::TC("qpdf", "qpdf bytes fallback warning"); QTC::TC("qpdf", "QPDFJob bytes fallback warning");
*(this->m->cerr) *(this->m->cerr)
<< this->m->message_prefix << ": WARNING: " << this->m->message_prefix << ": WARNING: "
<< "supplied password looks like a Unicode" << "supplied password looks like a Unicode"
@ -3251,7 +3251,7 @@ QPDFJob::maybeFixWritePassword(int R, std::string& password)
} }
else if ((R >= 5) && (! is_valid_utf8)) else if ((R >= 5) && (! is_valid_utf8))
{ {
QTC::TC("qpdf", "qpdf invalid utf-8 in auto"); QTC::TC("qpdf", "QPDFJob invalid utf-8 in auto");
throw std::runtime_error( throw std::runtime_error(
"supplied password is not a valid Unicode password," "supplied password is not a valid Unicode password,"
" which is required for 256-bit encryption; to" " which is required for 256-bit encryption; to"
@ -3313,7 +3313,7 @@ QPDFJob::setEncryptionOptions(QPDF& pdf, QPDFWriter& w)
{ {
// Do not set warnings = true for this case as this does // Do not set warnings = true for this case as this does
// not reflect a potential problem with the input file. // not reflect a potential problem with the input file.
QTC::TC("qpdf", "qpdf weak crypto warning"); QTC::TC("qpdf", "QPDFJob weak crypto warning");
*(this->m->cerr) *(this->m->cerr)
<< this->m->message_prefix << this->m->message_prefix
<< ": writing a file with RC4, a weak cryptographic algorithm" << ": writing a file with RC4, a weak cryptographic algorithm"
@ -3501,7 +3501,7 @@ QPDFJob::doSplitPages(QPDF& pdf, bool& warnings)
char* num_spot = strstr(const_cast<char*>(m->outfilename.get()), "%d"); char* num_spot = strstr(const_cast<char*>(m->outfilename.get()), "%d");
if (num_spot != 0) if (num_spot != 0)
{ {
QTC::TC("qpdf", "qpdf split-pages %d"); QTC::TC("qpdf", "QPDFJob split-pages %d");
before = std::string(m->outfilename.get(), before = std::string(m->outfilename.get(),
QIntC::to_size(num_spot - m->outfilename.get())); QIntC::to_size(num_spot - m->outfilename.get()));
after = num_spot + 2; after = num_spot + 2;
@ -3510,13 +3510,13 @@ QPDFJob::doSplitPages(QPDF& pdf, bool& warnings)
(QUtil::str_compare_nocase( (QUtil::str_compare_nocase(
m->outfilename.get() + len - 4, ".pdf") == 0)) m->outfilename.get() + len - 4, ".pdf") == 0))
{ {
QTC::TC("qpdf", "qpdf split-pages .pdf"); QTC::TC("qpdf", "QPDFJob split-pages .pdf");
before = std::string(m->outfilename.get(), len - 4) + "-"; before = std::string(m->outfilename.get(), len - 4) + "-";
after = m->outfilename.get() + len - 4; after = m->outfilename.get() + len - 4;
} }
else else
{ {
QTC::TC("qpdf", "qpdf split-pages other"); QTC::TC("qpdf", "QPDFJob split-pages other");
before = std::string(m->outfilename.get()) + "-"; before = std::string(m->outfilename.get()) + "-";
} }
@ -3556,7 +3556,7 @@ QPDFJob::doSplitPages(QPDF& pdf, bool& warnings)
auto new_page = added_page(outpdf, page); auto new_page = added_page(outpdf, page);
if (out_afdh.get()) if (out_afdh.get())
{ {
QTC::TC("qpdf", "qpdf copy form fields in split_pages"); QTC::TC("qpdf", "QPDFJob copy form fields in split_pages");
try try
{ {
out_afdh->fixCopiedAnnotations(new_page, page, afdh); out_afdh->fixCopiedAnnotations(new_page, page, afdh);

View File

@ -248,12 +248,12 @@ ArgParser::argPagesPassword(char* parameter)
{ {
if (this->pages_password != nullptr) if (this->pages_password != nullptr)
{ {
QTC::TC("qpdf", "qpdf duplicated pages password"); QTC::TC("qpdf", "QPDFJob duplicated pages password");
usage("--password already specified for this file"); usage("--password already specified for this file");
} }
if (this->accumulated_args.size() != 1) if (this->accumulated_args.size() != 1)
{ {
QTC::TC("qpdf", "qpdf misplaced pages password"); QTC::TC("qpdf", "QPDFJob misplaced pages password");
usage("in --pages, --password must immediately follow a file name"); usage("in --pages, --password must immediately follow a file name");
} }
this->pages_password = parameter; this->pages_password = parameter;
@ -291,7 +291,7 @@ ArgParser::argPagesPositional(char* arg)
if (arg == nullptr) if (arg == nullptr)
{ {
// The filename or password was the last argument // The filename or password was the last argument
QTC::TC("qpdf", "qpdf pages range omitted at end", QTC::TC("qpdf", "QPDFJob pages range omitted at end",
this->pages_password == nullptr ? 0 : 1); this->pages_password == nullptr ? 0 : 1);
} }
else else
@ -312,11 +312,11 @@ ArgParser::argPagesPositional(char* arg)
if (strcmp(range, ".") == 0) if (strcmp(range, ".") == 0)
{ {
// "." means the input file. // "." means the input file.
QTC::TC("qpdf", "qpdf pages range omitted with ."); QTC::TC("qpdf", "QPDFJob pages range omitted with .");
} }
else if (QUtil::file_can_be_opened(range)) else if (QUtil::file_can_be_opened(range))
{ {
QTC::TC("qpdf", "qpdf pages range omitted in middle"); QTC::TC("qpdf", "QPDFJob pages range omitted in middle");
// Yup, it's a file. // Yup, it's a file.
} }
else else

View File

@ -105,7 +105,7 @@ QPDF found wrong endstream in recovery 0
QPDF_Stream pipeStreamData with null pipeline 0 QPDF_Stream pipeStreamData with null pipeline 0
QPDFWriter not recompressing /FlateDecode 0 QPDFWriter not recompressing /FlateDecode 0
QPDF_encryption xref stream from encrypted file 0 QPDF_encryption xref stream from encrypted file 0
qpdf unable to filter 0 QPDFJob unable to filter 0
QUtil non-trivial UTF-16 0 QUtil non-trivial UTF-16 0
QPDF xref overwrite object 0 QPDF xref overwrite object 0
QPDF decoding error warning 0 QPDF decoding error warning 0
@ -226,7 +226,7 @@ QPDFWriter foreign object 0
QPDFWriter copy use_aes 1 QPDFWriter copy use_aes 1
QPDFObjectHandle indirect without context 0 QPDFObjectHandle indirect without context 0
QPDFObjectHandle trailing data in parse 0 QPDFObjectHandle trailing data in parse 0
qpdf pages encryption password 0 QPDFJob pages encryption password 0
QPDFTokenizer EOF reading token 0 QPDFTokenizer EOF reading token 0
QPDFTokenizer EOF reading appendable token 0 QPDFTokenizer EOF reading appendable token 0
QPDFWriter extra header text no newline 0 QPDFWriter extra header text no newline 0
@ -255,9 +255,9 @@ QPDF not caching overridden objstm object 0
QPDFWriter original obj non-zero gen 0 QPDFWriter original obj non-zero gen 0
QPDF_optimization indirect outlines 0 QPDF_optimization indirect outlines 0
QPDF xref space 2 QPDF xref space 2
qpdf pages range omitted at end 1 QPDFJob pages range omitted at end 1
qpdf pages range omitted in middle 0 QPDFJob pages range omitted in middle 0
qpdf npages 0 QPDFJob npages 0
QPDF already reserved object 0 QPDF already reserved object 0
QPDFWriter standard deterministic ID 1 QPDFWriter standard deterministic ID 1
QPDFWriter linearized deterministic ID 1 QPDFWriter linearized deterministic ID 1
@ -272,10 +272,10 @@ QPDFObjectHandle no val for last key 0
QPDF resolve failure to null 0 QPDF resolve failure to null 0
QPDFWriter preserve unreferenced standard 0 QPDFWriter preserve unreferenced standard 0
QPDFObjectHandle errors in parsecontent 0 QPDFObjectHandle errors in parsecontent 0
qpdf same file error 0 QPDFJob same file error 0
qpdf split-pages %d 0 QPDFJob split-pages %d 0
qpdf split-pages .pdf 0 QPDFJob split-pages .pdf 0
qpdf split-pages other 0 QPDFJob split-pages other 0
QPDFTokenizer allowing bad token 0 QPDFTokenizer allowing bad token 0
QPDF ignore first space in xref entry 0 QPDF ignore first space in xref entry 0
QPDF ignore first extra space in xref entry 0 QPDF ignore first extra space in xref entry 0
@ -349,9 +349,9 @@ QPDFAcroFormDocumentHelper non-dictionary field 0
QPDFAcroFormDocumentHelper loop 0 QPDFAcroFormDocumentHelper loop 0
QPDFAcroFormDocumentHelper field found 1 QPDFAcroFormDocumentHelper field found 1
QPDFAcroFormDocumentHelper annotation found 1 QPDFAcroFormDocumentHelper annotation found 1
qpdf keep files open n 0 QPDFJob keep files open n 0
qpdf keep files open y 0 QPDFJob keep files open y 0
qpdf automatically set keep files open 1 QPDFJob automatically set keep files open 1
QPDFPageLabelDocumentHelper skip first 0 QPDFPageLabelDocumentHelper skip first 0
QPDFOutlineObjectHelper direct dest 0 QPDFOutlineObjectHelper direct dest 0
QPDFOutlineObjectHelper action dest 0 QPDFOutlineObjectHelper action dest 0
@ -392,24 +392,24 @@ QPDFFormFieldObjectHelper list found 0
QPDFFormFieldObjectHelper list first too low 0 QPDFFormFieldObjectHelper list first too low 0
QPDFFormFieldObjectHelper list last too high 0 QPDFFormFieldObjectHelper list last too high 0
QPDF detected dangling ref 0 QPDF detected dangling ref 0
qpdf image optimize no pipeline 0 QPDFJob image optimize no pipeline 0
qpdf image optimize no shrink 0 QPDFJob image optimize no shrink 0
qpdf image optimize too small 0 QPDFJob image optimize too small 0
QPDFFormFieldObjectHelper WinAnsi 0 QPDFFormFieldObjectHelper WinAnsi 0
QPDF pipe foreign encrypted stream 0 QPDF pipe foreign encrypted stream 0
QPDF copy foreign stream with provider 0 QPDF copy foreign stream with provider 0
QPDF copy foreign stream with buffer 0 QPDF copy foreign stream with buffer 0
QPDF immediate copy stream data 0 QPDF immediate copy stream data 0
qpdf copy same page more than once 1 QPDFJob copy same page more than once 1
QPDFPageObjectHelper bad token finding names 0 QPDFPageObjectHelper bad token finding names 0
qpdf password mode bytes 0 QPDFJob password mode bytes 0
qpdf password mode hex-bytes 0 QPDFJob password mode hex-bytes 0
qpdf password not unicode 0 QPDFJob password not unicode 0
qpdf password not encodable 0 QPDFJob password not encodable 0
qpdf auto-encode password 0 QPDFJob auto-encode password 0
qpdf bytes fallback warning 0 QPDFJob bytes fallback warning 0
qpdf invalid utf-8 in auto 0 QPDFJob invalid utf-8 in auto 0
qpdf input password hex-bytes 0 QPDFJob input password hex-bytes 0
QPDFPageDocumentHelper ignore annotation with no appearance 0 QPDFPageDocumentHelper ignore annotation with no appearance 0
QPDFFormFieldObjectHelper create AS from scratch 0 QPDFFormFieldObjectHelper create AS from scratch 0
QPDFFormFieldObjectHelper create AP from scratch 0 QPDFFormFieldObjectHelper create AP from scratch 0
@ -417,7 +417,7 @@ QPDFFormFieldObjectHelper replaced BMC at EOF 0
QPDFFormFieldObjectHelper fallback Tf 0 QPDFFormFieldObjectHelper fallback Tf 0
QPDFPageObjectHelper non-trivial inheritance 0 QPDFPageObjectHelper non-trivial inheritance 0
QPDFPageObjectHelper copy shared attribute 1 QPDFPageObjectHelper copy shared attribute 1
qpdf from_nr from repeat_nr 0 QPDFJob from_nr from repeat_nr 0
QPDF resolve duplicated page object 0 QPDF resolve duplicated page object 0
QPDF handle direct page object 0 QPDF handle direct page object 0
QPDFTokenizer finder found wrong word 0 QPDFTokenizer finder found wrong word 0
@ -425,8 +425,8 @@ QPDFTokenizer found EI by byte count 0
QPDFTokenizer found EI after more than one try 0 QPDFTokenizer found EI after more than one try 0
QPDFPageObjectHelper externalize inline image 0 QPDFPageObjectHelper externalize inline image 0
QPDFPageObjectHelper keep inline image 0 QPDFPageObjectHelper keep inline image 0
qpdf image optimize colorspace 0 QPDFJob image optimize colorspace 0
qpdf image optimize bits per component 0 QPDFJob image optimize bits per component 0
QPDFWriter remove empty DecodeParms 0 QPDFWriter remove empty DecodeParms 0
QPDFObjectHandle uint returning 0 0 QPDFObjectHandle uint returning 0 0
QPDFObjectHandle int returning INT_MIN 0 QPDFObjectHandle int returning INT_MIN 0
@ -443,13 +443,13 @@ QPDFWriter no encryption sig contents 0
QPDFPageObjectHelper colorspace lookup 0 QPDFPageObjectHelper colorspace lookup 0
QPDFWriter ignore XRef in qdf mode 0 QPDFWriter ignore XRef in qdf mode 0
QPDFPageObjectHelper filter form xobject 0 QPDFPageObjectHelper filter form xobject 0
qpdf found resources in non-leaf 0 QPDFJob found resources in non-leaf 0
qpdf found shared resources in leaf 0 QPDFJob found shared resources in leaf 0
qpdf found shared xobject in leaf 0 QPDFJob found shared xobject in leaf 0
QPDF copy foreign with data 1 QPDF copy foreign with data 1
QPDF copy foreign with foreign_stream 1 QPDF copy foreign with foreign_stream 1
QPDFObjectHandle need_newline 1 QPDFObjectHandle need_newline 1
qpdf pages range omitted with . 0 QPDFJob pages range omitted with . 0
qpdf-c invalid object handle 0 qpdf-c invalid object handle 0
qpdf-c called qpdf_oh_release 0 qpdf-c called qpdf_oh_release 0
qpdf-c called qpdf_oh_release_all 0 qpdf-c called qpdf_oh_release_all 0
@ -573,10 +573,10 @@ QPDFPageObjectHelper flatten inherit rotate 0
QPDFAcroFormDocumentHelper copy annotation 3 QPDFAcroFormDocumentHelper copy annotation 3
QPDFAcroFormDocumentHelper field with parent 3 QPDFAcroFormDocumentHelper field with parent 3
QPDFAcroFormDocumentHelper modify ap matrix 0 QPDFAcroFormDocumentHelper modify ap matrix 0
qpdf copy form fields in split_pages 0 QPDFJob copy form fields in split_pages 0
qpdf keep some fields in pages 0 QPDFJob keep some fields in pages 0
qpdf pages keeping field from original 0 QPDFJob pages keeping field from original 0
qpdf no more fields in pages 0 QPDFJob no more fields in pages 0
QPDFObjectHandle merge reuse 0 QPDFObjectHandle merge reuse 0
QPDFObjectHandle merge generate 0 QPDFObjectHandle merge generate 0
QPDFFormFieldObjectHelper get font from /DR 0 QPDFFormFieldObjectHelper get font from /DR 0
@ -587,15 +587,15 @@ QPDFAcroFormDocumentHelper ap conflict 0
QPDFAcroFormDocumentHelper ap rename 0 QPDFAcroFormDocumentHelper ap rename 0
QPDFAcroFormDocumentHelper /DA parse error 0 QPDFAcroFormDocumentHelper /DA parse error 0
QPDFAcroFormDocumentHelper AP parse error 0 QPDFAcroFormDocumentHelper AP parse error 0
qpdf copy fields not this file 0 QPDFJob copy fields not this file 0
qpdf copy fields non-first from orig 0 QPDFJob copy fields non-first from orig 0
QPDF resolve duplicated page in insert 0 QPDF resolve duplicated page in insert 0
QPDFWriter preserve object streams 1 QPDFWriter preserve object streams 1
QPDFWriter exclude from object stream 0 QPDFWriter exclude from object stream 0
QPDF_pages findPage not found 0 QPDF_pages findPage not found 0
qpdf overlay page with no resources 0 QPDFJob overlay page with no resources 0
QPDFObjectHandle check ownership 0 QPDFObjectHandle check ownership 0
qpdf weak crypto warning 0 QPDFJob weak crypto warning 0
qpdf-c called qpdf_oh_is_initialized 0 qpdf-c called qpdf_oh_is_initialized 0
qpdf-c registered progress reporter 0 qpdf-c registered progress reporter 0
qpdf-c called qpdf_oh_new_uninitialized 0 qpdf-c called qpdf_oh_new_uninitialized 0
@ -621,13 +621,13 @@ qpdf-c called qpdf_oh_replace_stream_data 0
qpdf-c silence oh errors 0 qpdf-c silence oh errors 0
qpdf-c called qpdf_oh_get_binary_string_value 0 qpdf-c called qpdf_oh_get_binary_string_value 0
qpdf-c called qpdf_oh_new_binary_string 0 qpdf-c called qpdf_oh_new_binary_string 0
qpdf duplicated pages password 0 QPDFJob duplicated pages password 0
qpdf misplaced pages password 0 QPDFJob misplaced pages password 0
qpdf check encrypted encrypted 0 QPDFJob check encrypted encrypted 0
qpdf check encrypted not encrypted 0 QPDFJob check encrypted not encrypted 0
qpdf check password password incorrect 0 QPDFJob check password password incorrect 0
qpdf check password password correct 0 QPDFJob check password password correct 0
qpdf check password not encrypted 0 QPDFJob check password not encrypted 0
QPDFJob_config password file 0 QPDFJob_config password file 0
QPDFJob_config password stdin 0 QPDFJob_config password stdin 0
QPDFJob json bare not empty 0 QPDFJob json bare not empty 0