Commit 0f97e98203dfa78cf3273005f215d2d026390e5c

Authored by Jay Berkenbilt
1 parent 088fabd9

Handle linearization warnings as proper warning (fixes #851)

ChangeLog
  1 +2023-02-18 Jay Berkenbilt <ejb@ql.org>
  2 +
  3 + * Treat all linearization errors and warnings as warnings, and
  4 + issue them through the normal warning system using the new error
  5 + code qpdf_e_linearization. That means that --no-warn will suppress
  6 + them, and the file name is included in the warning. Fixes #851.
  7 +
1 2023-01-28 Jay Berkenbilt <ejb@ql.org> 8 2023-01-28 Jay Berkenbilt <ejb@ql.org>
2 9
3 * New option --remove-restrictions removes security restrictions 10 * New option --remove-restrictions removes security restrictions
README-maintainer
@@ -127,6 +127,8 @@ CODING RULES @@ -127,6 +127,8 @@ CODING RULES
127 "Code Formatting" section in manual/contributing.rst for details. 127 "Code Formatting" section in manual/contributing.rst for details.
128 See also "CODE FORMATTING" below. 128 See also "CODE FORMATTING" below.
129 129
  130 +* Use std::to_string instead of QUtil::int_to_string et al
  131 +
130 * Use of assert: 132 * Use of assert:
131 133
132 * Test code: #include <qpdf/assert_test.h> first. 134 * Test code: #include <qpdf/assert_test.h> first.
@@ -11,7 +11,6 @@ Always @@ -11,7 +11,6 @@ Always
11 11
12 * Fix #874 -- make args in --encrypt to match the json and make 12 * Fix #874 -- make args in --encrypt to match the json and make
13 positional fill in the gaps 13 positional fill in the gaps
14 -* Fix #851 -- not suppressing linearization warnings  
15 * Maybe fix #553 -- use file times for attachments 14 * Maybe fix #553 -- use file times for attachments
16 * Clarify idempotency section to emphasize --deterministic-id over 15 * Clarify idempotency section to emphasize --deterministic-id over
17 --static-id 16 --static-id
include/qpdf/Constants.h
@@ -83,14 +83,15 @@ enum qpdf_exit_code_e { @@ -83,14 +83,15 @@ enum qpdf_exit_code_e {
83 83
84 enum qpdf_error_code_e { 84 enum qpdf_error_code_e {
85 qpdf_e_success = 0, 85 qpdf_e_success = 0,
86 - qpdf_e_internal, /* logic/programming error -- indicates bug */  
87 - qpdf_e_system, /* I/O error, memory error, etc. */  
88 - qpdf_e_unsupported, /* PDF feature not (yet) supported by qpdf */  
89 - qpdf_e_password, /* incorrect password for encrypted file */  
90 - qpdf_e_damaged_pdf, /* syntax errors or other damage in PDF */  
91 - qpdf_e_pages, /* erroneous or unsupported pages structure */  
92 - qpdf_e_object, /* type/bounds errors accessing objects */  
93 - qpdf_e_json, /* error in qpdf JSON */ 86 + qpdf_e_internal, /* logic/programming error -- indicates bug */
  87 + qpdf_e_system, /* I/O error, memory error, etc. */
  88 + qpdf_e_unsupported, /* PDF feature not (yet) supported by qpdf */
  89 + qpdf_e_password, /* incorrect password for encrypted file */
  90 + qpdf_e_damaged_pdf, /* syntax errors or other damage in PDF */
  91 + qpdf_e_pages, /* erroneous or unsupported pages structure */
  92 + qpdf_e_object, /* type/bounds errors accessing objects */
  93 + qpdf_e_json, /* error in qpdf JSON */
  94 + qpdf_e_linearization, /* linearization warning */
94 }; 95 };
95 96
96 /* Object Types */ 97 /* Object Types */
include/qpdf/QPDF.hh
@@ -32,6 +32,7 @@ @@ -32,6 +32,7 @@
32 #include <memory> 32 #include <memory>
33 #include <stdio.h> 33 #include <stdio.h>
34 #include <string> 34 #include <string>
  35 +#include <string_view>
35 #include <vector> 36 #include <vector>
36 37
37 #include <qpdf/Buffer.hh> 38 #include <qpdf/Buffer.hh>
@@ -1565,6 +1566,7 @@ class QPDF @@ -1565,6 +1566,7 @@ class QPDF
1565 void readLinearizationData(); 1566 void readLinearizationData();
1566 bool checkLinearizationInternal(); 1567 bool checkLinearizationInternal();
1567 void dumpLinearizationDataInternal(); 1568 void dumpLinearizationDataInternal();
  1569 + void linearizationWarning(std::string_view);
1568 QPDFObjectHandle 1570 QPDFObjectHandle
1569 readHintStream(Pipeline&, qpdf_offset_t offset, size_t length); 1571 readHintStream(Pipeline&, qpdf_offset_t offset, size_t length);
1570 void readHPageOffset(BitStream); 1572 void readHPageOffset(BitStream);
@@ -1574,18 +1576,14 @@ class QPDF @@ -1574,18 +1576,14 @@ class QPDF
1574 qpdf_offset_t getLinearizationOffset(QPDFObjGen const&); 1576 qpdf_offset_t getLinearizationOffset(QPDFObjGen const&);
1575 QPDFObjectHandle getUncompressedObject( 1577 QPDFObjectHandle getUncompressedObject(
1576 QPDFObjectHandle&, std::map<int, int> const& object_stream_data); 1578 QPDFObjectHandle&, std::map<int, int> const& object_stream_data);
1577 - int lengthNextN(int first_object, int n, std::list<std::string>& errors); 1579 + int lengthNextN(int first_object, int n);
1578 void checkHPageOffset( 1580 void checkHPageOffset(
1579 - std::list<std::string>& errors,  
1580 - std::list<std::string>& warnings,  
1581 std::vector<QPDFObjectHandle> const& pages, 1581 std::vector<QPDFObjectHandle> const& pages,
1582 std::map<int, int>& idx_to_obj); 1582 std::map<int, int>& idx_to_obj);
1583 void checkHSharedObject( 1583 void checkHSharedObject(
1584 - std::list<std::string>& warnings,  
1585 - std::list<std::string>& errors,  
1586 std::vector<QPDFObjectHandle> const& pages, 1584 std::vector<QPDFObjectHandle> const& pages,
1587 std::map<int, int>& idx_to_obj); 1585 std::map<int, int>& idx_to_obj);
1588 - void checkHOutlines(std::list<std::string>& warnings); 1586 + void checkHOutlines();
1589 void dumpHPageOffset(); 1587 void dumpHPageOffset();
1590 void dumpHSharedObject(); 1588 void dumpHSharedObject();
1591 void dumpHGeneric(HGeneric&); 1589 void dumpHGeneric(HGeneric&);
@@ -1728,6 +1726,7 @@ class QPDF @@ -1728,6 +1726,7 @@ class QPDF
1728 // Linearization data 1726 // Linearization data
1729 qpdf_offset_t first_xref_item_offset{0}; // actual value from file 1727 qpdf_offset_t first_xref_item_offset{0}; // actual value from file
1730 bool uncompressed_after_compressed{false}; 1728 bool uncompressed_after_compressed{false};
  1729 + bool linearization_warnings{false};
1731 1730
1732 // Linearization parameter dictionary and hint table data: may be 1731 // Linearization parameter dictionary and hint table data: may be
1733 // read from file or computed prior to writing a linearized file 1732 // read from file or computed prior to writing a linearized file
libqpdf/QPDFJob.cc
@@ -783,7 +783,6 @@ QPDFJob::doCheck(QPDF&amp; pdf) @@ -783,7 +783,6 @@ QPDFJob::doCheck(QPDF&amp; pdf)
783 // continue to perform additional checks after finding 783 // continue to perform additional checks after finding
784 // errors. 784 // errors.
785 bool okay = true; 785 bool okay = true;
786 - bool warnings = false;  
787 auto& cout = *this->m->log->getInfo(); 786 auto& cout = *this->m->log->getInfo();
788 cout << "checking " << m->infilename.get() << "\n"; 787 cout << "checking " << m->infilename.get() << "\n";
789 try { 788 try {
@@ -796,12 +795,7 @@ QPDFJob::doCheck(QPDF&amp; pdf) @@ -796,12 +795,7 @@ QPDFJob::doCheck(QPDF&amp; pdf)
796 showEncryption(pdf); 795 showEncryption(pdf);
797 if (pdf.isLinearized()) { 796 if (pdf.isLinearized()) {
798 cout << "File is linearized\n"; 797 cout << "File is linearized\n";
799 - // any errors or warnings are reported by  
800 - // checkLinearization(). We treat all issues reported here  
801 - // as warnings.  
802 - if (!pdf.checkLinearization()) {  
803 - warnings = true;  
804 - } 798 + pdf.checkLinearization();
805 } else { 799 } else {
806 cout << "File is not linearized\n"; 800 cout << "File is not linearized\n";
807 } 801 }
@@ -836,7 +830,7 @@ QPDFJob::doCheck(QPDF&amp; pdf) @@ -836,7 +830,7 @@ QPDFJob::doCheck(QPDF&amp; pdf)
836 throw std::runtime_error("errors detected"); 830 throw std::runtime_error("errors detected");
837 } 831 }
838 832
839 - if ((!pdf.getWarnings().empty()) || warnings) { 833 + if (!pdf.getWarnings().empty()) {
840 this->m->warnings = true; 834 this->m->warnings = true;
841 } else { 835 } else {
842 *this->m->log->getInfo() << "No syntax or stream encoding errors" 836 *this->m->log->getInfo() << "No syntax or stream encoding errors"
libqpdf/QPDF_linearization.cc
@@ -65,6 +65,13 @@ load_vector_vector( @@ -65,6 +65,13 @@ load_vector_vector(
65 bit_stream.skipToNextByte(); 65 bit_stream.skipToNextByte();
66 } 66 }
67 67
  68 +void
  69 +QPDF::linearizationWarning(std::string_view msg)
  70 +{
  71 + this->m->linearization_warnings = true;
  72 + warn(qpdf_e_linearization, "", 0, std::string(msg));
  73 +}
  74 +
68 bool 75 bool
69 QPDF::checkLinearization() 76 QPDF::checkLinearization()
70 { 77 {
@@ -73,9 +80,9 @@ QPDF::checkLinearization() @@ -73,9 +80,9 @@ QPDF::checkLinearization()
73 readLinearizationData(); 80 readLinearizationData();
74 result = checkLinearizationInternal(); 81 result = checkLinearizationInternal();
75 } catch (std::runtime_error& e) { 82 } catch (std::runtime_error& e) {
76 - *this->m->log->getError()  
77 - << "WARNING: error encountered while checking linearization data: "  
78 - << e.what() << "\n"; 83 + linearizationWarning(
  84 + "error encountered while checking linearization data: " +
  85 + std::string(e.what()));
79 } 86 }
80 return result; 87 return result;
81 } 88 }
@@ -333,9 +340,10 @@ QPDF::readHintStream(Pipeline&amp; pl, qpdf_offset_t offset, size_t length) @@ -333,9 +340,10 @@ QPDF::readHintStream(Pipeline&amp; pl, qpdf_offset_t offset, size_t length)
333 } 340 }
334 qpdf_offset_t computed_end = offset + toO(length); 341 qpdf_offset_t computed_end = offset + toO(length);
335 if ((computed_end < min_end_offset) || (computed_end > max_end_offset)) { 342 if ((computed_end < min_end_offset) || (computed_end > max_end_offset)) {
336 - *this->m->log->getError()  
337 - << "expected = " << computed_end << "; actual = " << min_end_offset  
338 - << ".." << max_end_offset << "\n"; 343 + linearizationWarning(
  344 + "expected = " + std::to_string(computed_end) +
  345 + "; actual = " + std::to_string(min_end_offset) + ".." +
  346 + std::to_string(max_end_offset));
339 throw damagedPDF( 347 throw damagedPDF(
340 "linearization dictionary", "hint table length mismatch"); 348 "linearization dictionary", "hint table length mismatch");
341 } 349 }
@@ -476,9 +484,6 @@ QPDF::checkLinearizationInternal() @@ -476,9 +484,6 @@ QPDF::checkLinearizationInternal()
476 // All comments referring to the PDF spec refer to the spec for 484 // All comments referring to the PDF spec refer to the spec for
477 // version 1.4. 485 // version 1.4.
478 486
479 - std::list<std::string> errors;  
480 - std::list<std::string> warnings;  
481 -  
482 // Check all values in linearization parameter dictionary 487 // Check all values in linearization parameter dictionary
483 488
484 LinParameters& p = this->m->linp; 489 LinParameters& p = this->m->linp;
@@ -489,21 +494,21 @@ QPDF::checkLinearizationInternal() @@ -489,21 +494,21 @@ QPDF::checkLinearizationInternal()
489 std::vector<QPDFObjectHandle> const& pages = getAllPages(); 494 std::vector<QPDFObjectHandle> const& pages = getAllPages();
490 if (p.first_page_object != pages.at(0).getObjectID()) { 495 if (p.first_page_object != pages.at(0).getObjectID()) {
491 QTC::TC("qpdf", "QPDF err /O mismatch"); 496 QTC::TC("qpdf", "QPDF err /O mismatch");
492 - errors.push_back("first page object (/O) mismatch"); 497 + linearizationWarning("first page object (/O) mismatch");
493 } 498 }
494 499
495 // N: number of pages 500 // N: number of pages
496 int npages = toI(pages.size()); 501 int npages = toI(pages.size());
497 if (p.npages != npages) { 502 if (p.npages != npages) {
498 // Not tested in the test suite 503 // Not tested in the test suite
499 - errors.push_back("page count (/N) mismatch"); 504 + linearizationWarning("page count (/N) mismatch");
500 } 505 }
501 506
502 for (size_t i = 0; i < toS(npages); ++i) { 507 for (size_t i = 0; i < toS(npages); ++i) {
503 QPDFObjectHandle const& page = pages.at(i); 508 QPDFObjectHandle const& page = pages.at(i);
504 QPDFObjGen og(page.getObjGen()); 509 QPDFObjGen og(page.getObjGen());
505 if (this->m->xref_table[og].getType() == 2) { 510 if (this->m->xref_table[og].getType() == 2) {
506 - errors.push_back( 511 + linearizationWarning(
507 "page dictionary for page " + std::to_string(i) + 512 "page dictionary for page " + std::to_string(i) +
508 " is compressed"); 513 " is compressed");
509 } 514 }
@@ -521,7 +526,7 @@ QPDF::checkLinearizationInternal() @@ -521,7 +526,7 @@ QPDF::checkLinearizationInternal()
521 } 526 }
522 if (this->m->file->tell() != this->m->first_xref_item_offset) { 527 if (this->m->file->tell() != this->m->first_xref_item_offset) {
523 QTC::TC("qpdf", "QPDF err /T mismatch"); 528 QTC::TC("qpdf", "QPDF err /T mismatch");
524 - errors.push_back( 529 + linearizationWarning(
525 "space before first xref item (/T) mismatch " 530 "space before first xref item (/T) mismatch "
526 "(computed = " + 531 "(computed = " +
527 std::to_string(this->m->first_xref_item_offset) + 532 std::to_string(this->m->first_xref_item_offset) +
@@ -537,8 +542,9 @@ QPDF::checkLinearizationInternal() @@ -537,8 +542,9 @@ QPDF::checkLinearizationInternal()
537 // are in use. 542 // are in use.
538 543
539 if (this->m->uncompressed_after_compressed) { 544 if (this->m->uncompressed_after_compressed) {
540 - errors.push_back("linearized file contains an uncompressed object"  
541 - " after a compressed one in a cross-reference stream"); 545 + linearizationWarning(
  546 + "linearized file contains an uncompressed object"
  547 + " after a compressed one in a cross-reference stream");
542 } 548 }
543 549
544 // Further checking requires optimization and order calculation. 550 // Further checking requires optimization and order calculation.
@@ -587,7 +593,7 @@ QPDF::checkLinearizationInternal() @@ -587,7 +593,7 @@ QPDF::checkLinearizationInternal()
587 } 593 }
588 if ((p.first_page_end < min_E) || (p.first_page_end > max_E)) { 594 if ((p.first_page_end < min_E) || (p.first_page_end > max_E)) {
589 QTC::TC("qpdf", "QPDF warn /E mismatch"); 595 QTC::TC("qpdf", "QPDF warn /E mismatch");
590 - warnings.push_back( 596 + linearizationWarning(
591 "end of first page section (/E) mismatch: /E = " + 597 "end of first page section (/E) mismatch: /E = " +
592 std::to_string(p.first_page_end) + "; computed = " + 598 std::to_string(p.first_page_end) + "; computed = " +
593 std::to_string(min_E) + ".." + std::to_string(max_E)); 599 std::to_string(min_E) + ".." + std::to_string(max_E));
@@ -596,34 +602,11 @@ QPDF::checkLinearizationInternal() @@ -596,34 +602,11 @@ QPDF::checkLinearizationInternal()
596 // Check hint tables 602 // Check hint tables
597 603
598 std::map<int, int> shared_idx_to_obj; 604 std::map<int, int> shared_idx_to_obj;
599 - checkHSharedObject(errors, warnings, pages, shared_idx_to_obj);  
600 - checkHPageOffset(errors, warnings, pages, shared_idx_to_obj);  
601 - checkHOutlines(warnings);  
602 -  
603 - // Report errors  
604 -  
605 - bool result = true;  
606 -  
607 - // Treat all linearization errors as warnings. Many of them occur  
608 - // in otherwise working files, so it's really misleading to treat  
609 - // them as errors. We'll hang onto the distinction in the code for  
610 - // now in case we ever have a chance to clean up the linearization  
611 - // code.  
612 - if (!errors.empty()) {  
613 - result = false;  
614 - for (auto const& error: errors) {  
615 - *this->m->log->getError() << "WARNING: " << error << "\n";  
616 - }  
617 - } 605 + checkHSharedObject(pages, shared_idx_to_obj);
  606 + checkHPageOffset(pages, shared_idx_to_obj);
  607 + checkHOutlines();
618 608
619 - if (!warnings.empty()) {  
620 - result = false;  
621 - for (auto const& warning: warnings) {  
622 - *this->m->log->getError() << "WARNING: " << warning << "\n";  
623 - }  
624 - }  
625 -  
626 - return result; 609 + return !this->m->linearization_warnings;
627 } 610 }
628 611
629 qpdf_offset_t 612 qpdf_offset_t
@@ -680,13 +663,13 @@ QPDF::getUncompressedObject( @@ -680,13 +663,13 @@ QPDF::getUncompressedObject(
680 } 663 }
681 664
682 int 665 int
683 -QPDF::lengthNextN(int first_object, int n, std::list<std::string>& errors) 666 +QPDF::lengthNextN(int first_object, int n)
684 { 667 {
685 int length = 0; 668 int length = 0;
686 for (int i = 0; i < n; ++i) { 669 for (int i = 0; i < n; ++i) {
687 QPDFObjGen og(first_object + i, 0); 670 QPDFObjGen og(first_object + i, 0);
688 if (this->m->xref_table.count(og) == 0) { 671 if (this->m->xref_table.count(og) == 0) {
689 - errors.push_back( 672 + linearizationWarning(
690 "no xref table entry for " + std::to_string(first_object + i) + 673 "no xref table entry for " + std::to_string(first_object + i) +
691 " 0"); 674 " 0");
692 } else { 675 } else {
@@ -704,8 +687,6 @@ QPDF::lengthNextN(int first_object, int n, std::list&lt;std::string&gt;&amp; errors) @@ -704,8 +687,6 @@ QPDF::lengthNextN(int first_object, int n, std::list&lt;std::string&gt;&amp; errors)
704 687
705 void 688 void
706 QPDF::checkHPageOffset( 689 QPDF::checkHPageOffset(
707 - std::list<std::string>& errors,  
708 - std::list<std::string>& warnings,  
709 std::vector<QPDFObjectHandle> const& pages, 690 std::vector<QPDFObjectHandle> const& pages,
710 std::map<int, int>& shared_idx_to_obj) 691 std::map<int, int>& shared_idx_to_obj)
711 { 692 {
@@ -735,7 +716,7 @@ QPDF::checkHPageOffset( @@ -735,7 +716,7 @@ QPDF::checkHPageOffset(
735 } 716 }
736 qpdf_offset_t offset = getLinearizationOffset(first_page_og); 717 qpdf_offset_t offset = getLinearizationOffset(first_page_og);
737 if (table_offset != offset) { 718 if (table_offset != offset) {
738 - warnings.push_back("first page object offset mismatch"); 719 + linearizationWarning("first page object offset mismatch");
739 } 720 }
740 721
741 for (int pageno = 0; pageno < npages; ++pageno) { 722 for (int pageno = 0; pageno < npages; ++pageno) {
@@ -754,7 +735,7 @@ QPDF::checkHPageOffset( @@ -754,7 +735,7 @@ QPDF::checkHPageOffset(
754 he.delta_nobjects + this->m->page_offset_hints.min_nobjects; 735 he.delta_nobjects + this->m->page_offset_hints.min_nobjects;
755 if (h_nobjects != ce.nobjects) { 736 if (h_nobjects != ce.nobjects) {
756 // This happens with pdlin when there are thumbnails. 737 // This happens with pdlin when there are thumbnails.
757 - warnings.push_back( 738 + linearizationWarning(
758 "object count mismatch for page " + std::to_string(pageno) + 739 "object count mismatch for page " + std::to_string(pageno) +
759 ": hint table = " + std::to_string(h_nobjects) + 740 ": hint table = " + std::to_string(h_nobjects) +
760 "; computed = " + std::to_string(ce.nobjects)); 741 "; computed = " + std::to_string(ce.nobjects));
@@ -762,13 +743,13 @@ QPDF::checkHPageOffset( @@ -762,13 +743,13 @@ QPDF::checkHPageOffset(
762 743
763 // Use value for number of objects in hint table rather than 744 // Use value for number of objects in hint table rather than
764 // computed value if there is a discrepancy. 745 // computed value if there is a discrepancy.
765 - int length = lengthNextN(first_object, h_nobjects, errors); 746 + int length = lengthNextN(first_object, h_nobjects);
766 int h_length = toI( 747 int h_length = toI(
767 he.delta_page_length + this->m->page_offset_hints.min_page_length); 748 he.delta_page_length + this->m->page_offset_hints.min_page_length);
768 if (length != h_length) { 749 if (length != h_length) {
769 // This condition almost certainly indicates a bad hint 750 // This condition almost certainly indicates a bad hint
770 // table or a bug in this code. 751 // table or a bug in this code.
771 - errors.push_back( 752 + linearizationWarning(
772 "page length mismatch for page " + std::to_string(pageno) + 753 "page length mismatch for page " + std::to_string(pageno) +
773 ": hint table = " + std::to_string(h_length) + 754 ": hint table = " + std::to_string(h_length) +
774 "; computed length = " + std::to_string(length) + 755 "; computed length = " + std::to_string(length) +
@@ -784,7 +765,7 @@ QPDF::checkHPageOffset( @@ -784,7 +765,7 @@ QPDF::checkHPageOffset(
784 if ((pageno == 0) && (he.nshared_objects > 0)) { 765 if ((pageno == 0) && (he.nshared_objects > 0)) {
785 // pdlin and Acrobat both do this even though the spec 766 // pdlin and Acrobat both do this even though the spec
786 // states clearly and unambiguously that they should not. 767 // states clearly and unambiguously that they should not.
787 - warnings.push_back("page 0 has shared identifier entries"); 768 + linearizationWarning("page 0 has shared identifier entries");
788 } 769 }
789 770
790 for (size_t i = 0; i < toS(he.nshared_objects); ++i) { 771 for (size_t i = 0; i < toS(he.nshared_objects); ++i) {
@@ -808,7 +789,7 @@ QPDF::checkHPageOffset( @@ -808,7 +789,7 @@ QPDF::checkHPageOffset(
808 for (int iter: hint_shared) { 789 for (int iter: hint_shared) {
809 if (!computed_shared.count(iter)) { 790 if (!computed_shared.count(iter)) {
810 // pdlin puts thumbnails here even though it shouldn't 791 // pdlin puts thumbnails here even though it shouldn't
811 - warnings.push_back( 792 + linearizationWarning(
812 "page " + std::to_string(pageno) + ": shared object " + 793 "page " + std::to_string(pageno) + ": shared object " +
813 std::to_string(iter) + 794 std::to_string(iter) +
814 ": in hint table but not computed list"); 795 ": in hint table but not computed list");
@@ -820,10 +801,10 @@ QPDF::checkHPageOffset( @@ -820,10 +801,10 @@ QPDF::checkHPageOffset(
820 // Acrobat does not put some things including at least 801 // Acrobat does not put some things including at least
821 // built-in fonts and procsets here, at least in some 802 // built-in fonts and procsets here, at least in some
822 // cases. 803 // cases.
823 - warnings.push_back(  
824 - "page " + std::to_string(pageno) + ": shared object " +  
825 - std::to_string(iter) +  
826 - ": in computed list but not hint table"); 804 + linearizationWarning(
  805 + ("page " + std::to_string(pageno) + ": shared object " +
  806 + std::to_string(iter) +
  807 + ": in computed list but not hint table"));
827 } 808 }
828 } 809 }
829 } 810 }
@@ -831,10 +812,7 @@ QPDF::checkHPageOffset( @@ -831,10 +812,7 @@ QPDF::checkHPageOffset(
831 812
832 void 813 void
833 QPDF::checkHSharedObject( 814 QPDF::checkHSharedObject(
834 - std::list<std::string>& errors,  
835 - std::list<std::string>& warnings,  
836 - std::vector<QPDFObjectHandle> const& pages,  
837 - std::map<int, int>& idx_to_obj) 815 + std::vector<QPDFObjectHandle> const& pages, std::map<int, int>& idx_to_obj)
838 { 816 {
839 // Implementation note 125 says shared object groups always 817 // Implementation note 125 says shared object groups always
840 // contain only one object. Implementation note 128 says that 818 // contain only one object. Implementation note 128 says that
@@ -856,7 +834,7 @@ QPDF::checkHSharedObject( @@ -856,7 +834,7 @@ QPDF::checkHSharedObject(
856 834
857 HSharedObject& so = this->m->shared_object_hints; 835 HSharedObject& so = this->m->shared_object_hints;
858 if (so.nshared_total < so.nshared_first_page) { 836 if (so.nshared_total < so.nshared_first_page) {
859 - errors.push_back("shared object hint table: ntotal < nfirst_page"); 837 + linearizationWarning("shared object hint table: ntotal < nfirst_page");
860 } else { 838 } else {
861 // The first nshared_first_page objects are consecutive 839 // The first nshared_first_page objects are consecutive
862 // objects starting with the first page object. The rest are 840 // objects starting with the first page object. The rest are
@@ -866,12 +844,12 @@ QPDF::checkHSharedObject( @@ -866,12 +844,12 @@ QPDF::checkHSharedObject(
866 if (i == so.nshared_first_page) { 844 if (i == so.nshared_first_page) {
867 QTC::TC("qpdf", "QPDF lin check shared past first page"); 845 QTC::TC("qpdf", "QPDF lin check shared past first page");
868 if (this->m->part8.empty()) { 846 if (this->m->part8.empty()) {
869 - errors.push_back("part 8 is empty but nshared_total > "  
870 - "nshared_first_page"); 847 + linearizationWarning("part 8 is empty but nshared_total > "
  848 + "nshared_first_page");
871 } else { 849 } else {
872 int obj = this->m->part8.at(0).getObjectID(); 850 int obj = this->m->part8.at(0).getObjectID();
873 if (obj != so.first_shared_obj) { 851 if (obj != so.first_shared_obj) {
874 - errors.push_back( 852 + linearizationWarning(
875 "first shared object number mismatch: " 853 "first shared object number mismatch: "
876 "hint table = " + 854 "hint table = " +
877 std::to_string(so.first_shared_obj) + 855 std::to_string(so.first_shared_obj) +
@@ -889,7 +867,7 @@ QPDF::checkHSharedObject( @@ -889,7 +867,7 @@ QPDF::checkHSharedObject(
889 qpdf_offset_t h_offset = 867 qpdf_offset_t h_offset =
890 adjusted_offset(so.first_shared_offset); 868 adjusted_offset(so.first_shared_offset);
891 if (offset != h_offset) { 869 if (offset != h_offset) {
892 - errors.push_back( 870 + linearizationWarning(
893 "first shared object offset mismatch: hint table = " + 871 "first shared object offset mismatch: hint table = " +
894 std::to_string(h_offset) + 872 std::to_string(h_offset) +
895 "; computed = " + std::to_string(offset)); 873 "; computed = " + std::to_string(offset));
@@ -899,10 +877,10 @@ QPDF::checkHSharedObject( @@ -899,10 +877,10 @@ QPDF::checkHSharedObject(
899 idx_to_obj[i] = cur_object; 877 idx_to_obj[i] = cur_object;
900 HSharedObjectEntry& se = so.entries.at(toS(i)); 878 HSharedObjectEntry& se = so.entries.at(toS(i));
901 int nobjects = se.nobjects_minus_one + 1; 879 int nobjects = se.nobjects_minus_one + 1;
902 - int length = lengthNextN(cur_object, nobjects, errors); 880 + int length = lengthNextN(cur_object, nobjects);
903 int h_length = so.min_group_length + se.delta_group_length; 881 int h_length = so.min_group_length + se.delta_group_length;
904 if (length != h_length) { 882 if (length != h_length) {
905 - errors.push_back( 883 + linearizationWarning(
906 "shared object " + std::to_string(i) + 884 "shared object " + std::to_string(i) +
907 " length mismatch: hint table = " + 885 " length mismatch: hint table = " +
908 std::to_string(h_length) + 886 std::to_string(h_length) +
@@ -914,7 +892,7 @@ QPDF::checkHSharedObject( @@ -914,7 +892,7 @@ QPDF::checkHSharedObject(
914 } 892 }
915 893
916 void 894 void
917 -QPDF::checkHOutlines(std::list<std::string>& warnings) 895 +QPDF::checkHOutlines()
918 { 896 {
919 // Empirically, Acrobat generates the correct value for the object 897 // Empirically, Acrobat generates the correct value for the object
920 // number but incorrectly stores the next object number's offset 898 // number but incorrectly stores the next object number's offset
@@ -937,7 +915,7 @@ QPDF::checkHOutlines(std::list&lt;std::string&gt;&amp; warnings) @@ -937,7 +915,7 @@ QPDF::checkHOutlines(std::list&lt;std::string&gt;&amp; warnings)
937 // This case is not exercised in test suite since not 915 // This case is not exercised in test suite since not
938 // permitted by the spec, but if this does occur, the 916 // permitted by the spec, but if this does occur, the
939 // code below would fail. 917 // code below would fail.
940 - warnings.push_back( 918 + linearizationWarning(
941 "/Outlines key of root dictionary is not indirect"); 919 "/Outlines key of root dictionary is not indirect");
942 return; 920 return;
943 } 921 }
@@ -951,24 +929,24 @@ QPDF::checkHOutlines(std::list&lt;std::string&gt;&amp; warnings) @@ -951,24 +929,24 @@ QPDF::checkHOutlines(std::list&lt;std::string&gt;&amp; warnings)
951 qpdf_offset_t table_offset = 929 qpdf_offset_t table_offset =
952 adjusted_offset(this->m->outline_hints.first_object_offset); 930 adjusted_offset(this->m->outline_hints.first_object_offset);
953 if (offset != table_offset) { 931 if (offset != table_offset) {
954 - warnings.push_back( 932 + linearizationWarning(
955 "incorrect offset in outlines table: hint table = " + 933 "incorrect offset in outlines table: hint table = " +
956 std::to_string(table_offset) + 934 std::to_string(table_offset) +
957 "; computed = " + std::to_string(offset)); 935 "; computed = " + std::to_string(offset));
958 } 936 }
959 int table_length = this->m->outline_hints.group_length; 937 int table_length = this->m->outline_hints.group_length;
960 if (length != table_length) { 938 if (length != table_length) {
961 - warnings.push_back( 939 + linearizationWarning(
962 "incorrect length in outlines table: hint table = " + 940 "incorrect length in outlines table: hint table = " +
963 std::to_string(table_length) + 941 std::to_string(table_length) +
964 "; computed = " + std::to_string(length)); 942 "; computed = " + std::to_string(length));
965 } 943 }
966 } else { 944 } else {
967 - warnings.push_back("incorrect first object number in outline "  
968 - "hints table."); 945 + linearizationWarning("incorrect first object number in outline "
  946 + "hints table.");
969 } 947 }
970 } else { 948 } else {
971 - warnings.push_back("incorrect object count in outline hint table"); 949 + linearizationWarning("incorrect object count in outline hint table");
972 } 950 }
973 } 951 }
974 952
@@ -980,7 +958,7 @@ QPDF::showLinearizationData() @@ -980,7 +958,7 @@ QPDF::showLinearizationData()
980 checkLinearizationInternal(); 958 checkLinearizationInternal();
981 dumpLinearizationDataInternal(); 959 dumpLinearizationDataInternal();
982 } catch (QPDFExc& e) { 960 } catch (QPDFExc& e) {
983 - *this->m->log->getError() << e.what() << "\n"; 961 + linearizationWarning(e.what());
984 } 962 }
985 } 963 }
986 964
manual/release-notes.rst
@@ -19,6 +19,12 @@ For a detailed list of changes, please see the file @@ -19,6 +19,12 @@ For a detailed list of changes, please see the file
19 - New method ``QPDF::removeSecurityRestrictions`` removes security 19 - New method ``QPDF::removeSecurityRestrictions`` removes security
20 restrictions from digitally signed files. 20 restrictions from digitally signed files.
21 21
  22 + - Bug fixes
  23 +
  24 + - Linearization warnings are now treated like normal warnings in
  25 + that they include the file name and are suppressed with the
  26 + :qpdf:ref:`--no-warn` option.
  27 +
22 - Performance enhancements 28 - Performance enhancements
23 29
24 - Include more code tidying and performance improvements from M. 30 - Include more code tidying and performance improvements from M.
qpdf/qtest/linearization.test
@@ -45,14 +45,14 @@ my @to_linearize = @@ -45,14 +45,14 @@ my @to_linearize =
45 ); 45 );
46 46
47 $n_tests += @linearized_files + 6; 47 $n_tests += @linearized_files + 6;
48 -$n_tests += (3 * @to_linearize * 5) + 6; 48 +$n_tests += (3 * @to_linearize * 5) + 7;
49 49
50 foreach my $base (@linearized_files) 50 foreach my $base (@linearized_files)
51 { 51 {
52 $td->runtest("dump linearization: $base", 52 $td->runtest("dump linearization: $base",
53 {$td->COMMAND => "qpdf --show-linearization $base.pdf"}, 53 {$td->COMMAND => "qpdf --show-linearization $base.pdf"},
54 {$td->FILE => "$base.out", 54 {$td->FILE => "$base.out",
55 - $td->EXIT_STATUS => 0}, 55 + $td->EXIT_STATUS => ($base eq 'lin0' ? 0 : 3)},
56 $td->NORMALIZE_NEWLINES); 56 $td->NORMALIZE_NEWLINES);
57 } 57 }
58 58
@@ -129,5 +129,10 @@ foreach my $base (@to_linearize) @@ -129,5 +129,10 @@ foreach my $base (@to_linearize)
129 } 129 }
130 } 130 }
131 131
  132 +$td->runtest("suppress linearization warnings",
  133 + {$td->COMMAND => "qpdf --no-warn --check lin3.pdf"},
  134 + {$td->FILE => "lin3-check-nowarn.out", $td->EXIT_STATUS => 3},
  135 + $td->NORMALIZE_NEWLINES);
  136 +
132 cleanup(); 137 cleanup();
133 $td->report($n_tests); 138 $td->report($n_tests);
qpdf/qtest/qpdf/badlin1.out
1 -WARNING: first page object (/O) mismatch  
2 -WARNING: space before first xref item (/T) mismatch (computed = 11777; file = 11771  
3 -WARNING: end of first page section (/E) mismatch: /E = 1827; computed = 3889..3891  
4 -WARNING: page 0 has shared identifier entries  
5 -WARNING: page 0: shared object 62: in hint table but not computed list 1 +WARNING: badlin1.pdf: first page object (/O) mismatch
  2 +WARNING: badlin1.pdf: space before first xref item (/T) mismatch (computed = 11777; file = 11771
  3 +WARNING: badlin1.pdf: end of first page section (/E) mismatch: /E = 1827; computed = 3889..3891
  4 +WARNING: badlin1.pdf: page 0 has shared identifier entries
  5 +WARNING: badlin1.pdf: page 0: shared object 62: in hint table but not computed list
6 badlin1.pdf: linearization data: 6 badlin1.pdf: linearization data:
7 7
8 file_size: 13103 8 file_size: 13103
@@ -378,3 +378,4 @@ first_object: 66 @@ -378,3 +378,4 @@ first_object: 66
378 first_object_offset: 1827 378 first_object_offset: 1827
379 nobjects: 12 379 nobjects: 12
380 group_length: 2064 380 group_length: 2064
  381 +qpdf: operation succeeded with warnings
qpdf/qtest/qpdf/lin1.out
1 -WARNING: end of first page section (/E) mismatch: /E = 1827; computed = 3889..3891  
2 -WARNING: page 0 has shared identifier entries  
3 -WARNING: page 0: shared object 62: in hint table but not computed list 1 +WARNING: lin1.pdf: end of first page section (/E) mismatch: /E = 1827; computed = 3889..3891
  2 +WARNING: lin1.pdf: page 0 has shared identifier entries
  3 +WARNING: lin1.pdf: page 0: shared object 62: in hint table but not computed list
4 lin1.pdf: linearization data: 4 lin1.pdf: linearization data:
5 5
6 file_size: 13103 6 file_size: 13103
@@ -376,3 +376,4 @@ first_object: 66 @@ -376,3 +376,4 @@ first_object: 66
376 first_object_offset: 1827 376 first_object_offset: 1827
377 nobjects: 12 377 nobjects: 12
378 group_length: 2064 378 group_length: 2064
  379 +qpdf: operation succeeded with warnings
qpdf/qtest/qpdf/lin2.out
1 -WARNING: end of first page section (/E) mismatch: /E = 1827; computed = 3889..3891  
2 -WARNING: page 0 has shared identifier entries  
3 -WARNING: page 0: shared object 62: in hint table but not computed list 1 +WARNING: lin2.pdf: end of first page section (/E) mismatch: /E = 1827; computed = 3889..3891
  2 +WARNING: lin2.pdf: page 0 has shared identifier entries
  3 +WARNING: lin2.pdf: page 0: shared object 62: in hint table but not computed list
4 lin2.pdf: linearization data: 4 lin2.pdf: linearization data:
5 5
6 file_size: 13103 6 file_size: 13103
@@ -376,3 +376,4 @@ first_object: 66 @@ -376,3 +376,4 @@ first_object: 66
376 first_object_offset: 1827 376 first_object_offset: 1827
377 nobjects: 12 377 nobjects: 12
378 group_length: 2064 378 group_length: 2064
  379 +qpdf: operation succeeded with warnings
qpdf/qtest/qpdf/lin3-check-nowarn.out 0 โ†’ 100644
  1 +checking lin3.pdf
  2 +PDF Version: 1.3
  3 +File is not encrypted
  4 +File is linearized
qpdf/qtest/qpdf/lin3.out
1 -WARNING: end of first page section (/E) mismatch: /E = 3978; computed = 3785..3786  
2 -WARNING: page 1: shared object 107: in computed list but not hint table  
3 -WARNING: page 1: shared object 109: in computed list but not hint table  
4 -WARNING: page 2: shared object 107: in computed list but not hint table  
5 -WARNING: page 2: shared object 109: in computed list but not hint table  
6 -WARNING: page 3: shared object 107: in computed list but not hint table  
7 -WARNING: page 3: shared object 109: in computed list but not hint table  
8 -WARNING: page 4: shared object 107: in computed list but not hint table  
9 -WARNING: page 4: shared object 109: in computed list but not hint table  
10 -WARNING: page 5: shared object 107: in computed list but not hint table  
11 -WARNING: page 5: shared object 109: in computed list but not hint table  
12 -WARNING: page 6: shared object 107: in computed list but not hint table  
13 -WARNING: page 6: shared object 109: in computed list but not hint table  
14 -WARNING: page 7: shared object 107: in computed list but not hint table  
15 -WARNING: page 7: shared object 109: in computed list but not hint table  
16 -WARNING: page 8: shared object 107: in computed list but not hint table  
17 -WARNING: page 8: shared object 109: in computed list but not hint table  
18 -WARNING: page 9: shared object 107: in computed list but not hint table  
19 -WARNING: page 9: shared object 109: in computed list but not hint table  
20 -WARNING: page 10: shared object 107: in computed list but not hint table  
21 -WARNING: page 10: shared object 109: in computed list but not hint table  
22 -WARNING: page 11: shared object 107: in computed list but not hint table  
23 -WARNING: page 11: shared object 109: in computed list but not hint table  
24 -WARNING: page 12: shared object 107: in computed list but not hint table  
25 -WARNING: page 12: shared object 109: in computed list but not hint table  
26 -WARNING: page 13: shared object 107: in computed list but not hint table  
27 -WARNING: page 13: shared object 109: in computed list but not hint table  
28 -WARNING: page 14: shared object 107: in computed list but not hint table  
29 -WARNING: page 14: shared object 109: in computed list but not hint table  
30 -WARNING: page 15: shared object 107: in computed list but not hint table  
31 -WARNING: page 15: shared object 109: in computed list but not hint table  
32 -WARNING: page 16: shared object 107: in computed list but not hint table  
33 -WARNING: page 16: shared object 109: in computed list but not hint table  
34 -WARNING: page 17: shared object 107: in computed list but not hint table  
35 -WARNING: page 17: shared object 109: in computed list but not hint table  
36 -WARNING: page 18: shared object 107: in computed list but not hint table  
37 -WARNING: page 18: shared object 109: in computed list but not hint table  
38 -WARNING: page 19: shared object 107: in computed list but not hint table  
39 -WARNING: page 19: shared object 109: in computed list but not hint table  
40 -WARNING: page 20: shared object 107: in computed list but not hint table  
41 -WARNING: page 20: shared object 109: in computed list but not hint table  
42 -WARNING: page 21: shared object 107: in computed list but not hint table  
43 -WARNING: page 21: shared object 109: in computed list but not hint table  
44 -WARNING: page 22: shared object 107: in computed list but not hint table  
45 -WARNING: page 22: shared object 109: in computed list but not hint table  
46 -WARNING: page 23: shared object 107: in computed list but not hint table  
47 -WARNING: page 23: shared object 109: in computed list but not hint table  
48 -WARNING: page 24: shared object 107: in computed list but not hint table  
49 -WARNING: page 24: shared object 109: in computed list but not hint table  
50 -WARNING: page 25: shared object 107: in computed list but not hint table  
51 -WARNING: page 25: shared object 109: in computed list but not hint table  
52 -WARNING: page 26: shared object 107: in computed list but not hint table  
53 -WARNING: page 26: shared object 109: in computed list but not hint table  
54 -WARNING: page 27: shared object 107: in computed list but not hint table  
55 -WARNING: page 27: shared object 109: in computed list but not hint table  
56 -WARNING: page 28: shared object 107: in computed list but not hint table  
57 -WARNING: page 28: shared object 109: in computed list but not hint table  
58 -WARNING: page 29: shared object 107: in computed list but not hint table  
59 -WARNING: page 29: shared object 109: in computed list but not hint table  
60 -WARNING: incorrect offset in outlines table: hint table = 1627; computed = 1547  
61 -WARNING: incorrect length in outlines table: hint table = 1988; computed = 1936 1 +WARNING: lin3.pdf: end of first page section (/E) mismatch: /E = 3978; computed = 3785..3786
  2 +WARNING: lin3.pdf: page 1: shared object 107: in computed list but not hint table
  3 +WARNING: lin3.pdf: page 1: shared object 109: in computed list but not hint table
  4 +WARNING: lin3.pdf: page 2: shared object 107: in computed list but not hint table
  5 +WARNING: lin3.pdf: page 2: shared object 109: in computed list but not hint table
  6 +WARNING: lin3.pdf: page 3: shared object 107: in computed list but not hint table
  7 +WARNING: lin3.pdf: page 3: shared object 109: in computed list but not hint table
  8 +WARNING: lin3.pdf: page 4: shared object 107: in computed list but not hint table
  9 +WARNING: lin3.pdf: page 4: shared object 109: in computed list but not hint table
  10 +WARNING: lin3.pdf: page 5: shared object 107: in computed list but not hint table
  11 +WARNING: lin3.pdf: page 5: shared object 109: in computed list but not hint table
  12 +WARNING: lin3.pdf: page 6: shared object 107: in computed list but not hint table
  13 +WARNING: lin3.pdf: page 6: shared object 109: in computed list but not hint table
  14 +WARNING: lin3.pdf: page 7: shared object 107: in computed list but not hint table
  15 +WARNING: lin3.pdf: page 7: shared object 109: in computed list but not hint table
  16 +WARNING: lin3.pdf: page 8: shared object 107: in computed list but not hint table
  17 +WARNING: lin3.pdf: page 8: shared object 109: in computed list but not hint table
  18 +WARNING: lin3.pdf: page 9: shared object 107: in computed list but not hint table
  19 +WARNING: lin3.pdf: page 9: shared object 109: in computed list but not hint table
  20 +WARNING: lin3.pdf: page 10: shared object 107: in computed list but not hint table
  21 +WARNING: lin3.pdf: page 10: shared object 109: in computed list but not hint table
  22 +WARNING: lin3.pdf: page 11: shared object 107: in computed list but not hint table
  23 +WARNING: lin3.pdf: page 11: shared object 109: in computed list but not hint table
  24 +WARNING: lin3.pdf: page 12: shared object 107: in computed list but not hint table
  25 +WARNING: lin3.pdf: page 12: shared object 109: in computed list but not hint table
  26 +WARNING: lin3.pdf: page 13: shared object 107: in computed list but not hint table
  27 +WARNING: lin3.pdf: page 13: shared object 109: in computed list but not hint table
  28 +WARNING: lin3.pdf: page 14: shared object 107: in computed list but not hint table
  29 +WARNING: lin3.pdf: page 14: shared object 109: in computed list but not hint table
  30 +WARNING: lin3.pdf: page 15: shared object 107: in computed list but not hint table
  31 +WARNING: lin3.pdf: page 15: shared object 109: in computed list but not hint table
  32 +WARNING: lin3.pdf: page 16: shared object 107: in computed list but not hint table
  33 +WARNING: lin3.pdf: page 16: shared object 109: in computed list but not hint table
  34 +WARNING: lin3.pdf: page 17: shared object 107: in computed list but not hint table
  35 +WARNING: lin3.pdf: page 17: shared object 109: in computed list but not hint table
  36 +WARNING: lin3.pdf: page 18: shared object 107: in computed list but not hint table
  37 +WARNING: lin3.pdf: page 18: shared object 109: in computed list but not hint table
  38 +WARNING: lin3.pdf: page 19: shared object 107: in computed list but not hint table
  39 +WARNING: lin3.pdf: page 19: shared object 109: in computed list but not hint table
  40 +WARNING: lin3.pdf: page 20: shared object 107: in computed list but not hint table
  41 +WARNING: lin3.pdf: page 20: shared object 109: in computed list but not hint table
  42 +WARNING: lin3.pdf: page 21: shared object 107: in computed list but not hint table
  43 +WARNING: lin3.pdf: page 21: shared object 109: in computed list but not hint table
  44 +WARNING: lin3.pdf: page 22: shared object 107: in computed list but not hint table
  45 +WARNING: lin3.pdf: page 22: shared object 109: in computed list but not hint table
  46 +WARNING: lin3.pdf: page 23: shared object 107: in computed list but not hint table
  47 +WARNING: lin3.pdf: page 23: shared object 109: in computed list but not hint table
  48 +WARNING: lin3.pdf: page 24: shared object 107: in computed list but not hint table
  49 +WARNING: lin3.pdf: page 24: shared object 109: in computed list but not hint table
  50 +WARNING: lin3.pdf: page 25: shared object 107: in computed list but not hint table
  51 +WARNING: lin3.pdf: page 25: shared object 109: in computed list but not hint table
  52 +WARNING: lin3.pdf: page 26: shared object 107: in computed list but not hint table
  53 +WARNING: lin3.pdf: page 26: shared object 109: in computed list but not hint table
  54 +WARNING: lin3.pdf: page 27: shared object 107: in computed list but not hint table
  55 +WARNING: lin3.pdf: page 27: shared object 109: in computed list but not hint table
  56 +WARNING: lin3.pdf: page 28: shared object 107: in computed list but not hint table
  57 +WARNING: lin3.pdf: page 28: shared object 109: in computed list but not hint table
  58 +WARNING: lin3.pdf: page 29: shared object 107: in computed list but not hint table
  59 +WARNING: lin3.pdf: page 29: shared object 109: in computed list but not hint table
  60 +WARNING: lin3.pdf: incorrect offset in outlines table: hint table = 1627; computed = 1547
  61 +WARNING: lin3.pdf: incorrect length in outlines table: hint table = 1988; computed = 1936
62 lin3.pdf: linearization data: 62 lin3.pdf: linearization data:
63 63
64 file_size: 16937 64 file_size: 16937
@@ -316,3 +316,4 @@ first_object: 94 @@ -316,3 +316,4 @@ first_object: 94
316 first_object_offset: 1627 316 first_object_offset: 1627
317 nobjects: 12 317 nobjects: 12
318 group_length: 1988 318 group_length: 1988
  319 +qpdf: operation succeeded with warnings
qpdf/qtest/qpdf/lin4.out
1 -WARNING: page 0 has shared identifier entries  
2 -WARNING: page 0: shared object 74: in hint table but not computed list 1 +WARNING: lin4.pdf: page 0 has shared identifier entries
  2 +WARNING: lin4.pdf: page 0: shared object 74: in hint table but not computed list
3 lin4.pdf: linearization data: 3 lin4.pdf: linearization data:
4 4
5 file_size: 13055 5 file_size: 13055
@@ -351,3 +351,4 @@ first_object: 60 @@ -351,3 +351,4 @@ first_object: 60
351 first_object_offset: 9413 351 first_object_offset: 9413
352 nobjects: 12 352 nobjects: 12
353 group_length: 2064 353 group_length: 2064
  354 +qpdf: operation succeeded with warnings
qpdf/qtest/qpdf/lin5.out
1 -WARNING: end of first page section (/E) mismatch: /E = 4213; computed = 4004..4005  
2 -WARNING: page 1: shared object 170: in computed list but not hint table  
3 -WARNING: page 1: shared object 172: in computed list but not hint table  
4 -WARNING: page 2: shared object 170: in computed list but not hint table  
5 -WARNING: page 2: shared object 172: in computed list but not hint table  
6 -WARNING: page 3: shared object 170: in computed list but not hint table  
7 -WARNING: page 3: shared object 172: in computed list but not hint table  
8 -WARNING: page 4: shared object 170: in computed list but not hint table  
9 -WARNING: page 4: shared object 172: in computed list but not hint table  
10 -WARNING: page 5: shared object 170: in computed list but not hint table  
11 -WARNING: page 5: shared object 172: in computed list but not hint table  
12 -WARNING: page 6: shared object 170: in computed list but not hint table  
13 -WARNING: page 6: shared object 172: in computed list but not hint table  
14 -WARNING: page 7: shared object 170: in computed list but not hint table  
15 -WARNING: page 7: shared object 172: in computed list but not hint table  
16 -WARNING: page 8: shared object 170: in computed list but not hint table  
17 -WARNING: page 8: shared object 172: in computed list but not hint table  
18 -WARNING: page 9: shared object 170: in computed list but not hint table  
19 -WARNING: page 9: shared object 172: in computed list but not hint table  
20 -WARNING: page 10: shared object 170: in computed list but not hint table  
21 -WARNING: page 10: shared object 172: in computed list but not hint table  
22 -WARNING: page 11: shared object 170: in computed list but not hint table  
23 -WARNING: page 11: shared object 172: in computed list but not hint table  
24 -WARNING: page 12: shared object 170: in computed list but not hint table  
25 -WARNING: page 12: shared object 172: in computed list but not hint table  
26 -WARNING: page 13: shared object 170: in computed list but not hint table  
27 -WARNING: page 13: shared object 172: in computed list but not hint table  
28 -WARNING: page 14: shared object 170: in computed list but not hint table  
29 -WARNING: page 14: shared object 172: in computed list but not hint table  
30 -WARNING: page 15: shared object 170: in computed list but not hint table  
31 -WARNING: page 15: shared object 172: in computed list but not hint table  
32 -WARNING: page 16: shared object 170: in computed list but not hint table  
33 -WARNING: page 16: shared object 172: in computed list but not hint table  
34 -WARNING: page 17: shared object 170: in computed list but not hint table  
35 -WARNING: page 17: shared object 172: in computed list but not hint table  
36 -WARNING: page 18: shared object 170: in computed list but not hint table  
37 -WARNING: page 18: shared object 172: in computed list but not hint table  
38 -WARNING: page 19: shared object 170: in computed list but not hint table  
39 -WARNING: page 19: shared object 172: in computed list but not hint table  
40 -WARNING: page 20: shared object 170: in computed list but not hint table  
41 -WARNING: page 20: shared object 172: in computed list but not hint table  
42 -WARNING: page 21: shared object 170: in computed list but not hint table  
43 -WARNING: page 21: shared object 172: in computed list but not hint table  
44 -WARNING: page 22: shared object 170: in computed list but not hint table  
45 -WARNING: page 22: shared object 172: in computed list but not hint table  
46 -WARNING: page 23: shared object 170: in computed list but not hint table  
47 -WARNING: page 23: shared object 172: in computed list but not hint table  
48 -WARNING: page 24: shared object 170: in computed list but not hint table  
49 -WARNING: page 24: shared object 172: in computed list but not hint table  
50 -WARNING: page 25: shared object 170: in computed list but not hint table  
51 -WARNING: page 25: shared object 172: in computed list but not hint table  
52 -WARNING: page 26: shared object 170: in computed list but not hint table  
53 -WARNING: page 26: shared object 172: in computed list but not hint table  
54 -WARNING: page 27: shared object 170: in computed list but not hint table  
55 -WARNING: page 27: shared object 172: in computed list but not hint table  
56 -WARNING: page 28: shared object 170: in computed list but not hint table  
57 -WARNING: page 28: shared object 172: in computed list but not hint table  
58 -WARNING: page 29: shared object 170: in computed list but not hint table  
59 -WARNING: page 29: shared object 172: in computed list but not hint table  
60 -WARNING: incorrect offset in outlines table: hint table = 1710; computed = 1627  
61 -WARNING: incorrect length in outlines table: hint table = 2124; computed = 2075 1 +WARNING: lin5.pdf: end of first page section (/E) mismatch: /E = 4213; computed = 4004..4005
  2 +WARNING: lin5.pdf: page 1: shared object 170: in computed list but not hint table
  3 +WARNING: lin5.pdf: page 1: shared object 172: in computed list but not hint table
  4 +WARNING: lin5.pdf: page 2: shared object 170: in computed list but not hint table
  5 +WARNING: lin5.pdf: page 2: shared object 172: in computed list but not hint table
  6 +WARNING: lin5.pdf: page 3: shared object 170: in computed list but not hint table
  7 +WARNING: lin5.pdf: page 3: shared object 172: in computed list but not hint table
  8 +WARNING: lin5.pdf: page 4: shared object 170: in computed list but not hint table
  9 +WARNING: lin5.pdf: page 4: shared object 172: in computed list but not hint table
  10 +WARNING: lin5.pdf: page 5: shared object 170: in computed list but not hint table
  11 +WARNING: lin5.pdf: page 5: shared object 172: in computed list but not hint table
  12 +WARNING: lin5.pdf: page 6: shared object 170: in computed list but not hint table
  13 +WARNING: lin5.pdf: page 6: shared object 172: in computed list but not hint table
  14 +WARNING: lin5.pdf: page 7: shared object 170: in computed list but not hint table
  15 +WARNING: lin5.pdf: page 7: shared object 172: in computed list but not hint table
  16 +WARNING: lin5.pdf: page 8: shared object 170: in computed list but not hint table
  17 +WARNING: lin5.pdf: page 8: shared object 172: in computed list but not hint table
  18 +WARNING: lin5.pdf: page 9: shared object 170: in computed list but not hint table
  19 +WARNING: lin5.pdf: page 9: shared object 172: in computed list but not hint table
  20 +WARNING: lin5.pdf: page 10: shared object 170: in computed list but not hint table
  21 +WARNING: lin5.pdf: page 10: shared object 172: in computed list but not hint table
  22 +WARNING: lin5.pdf: page 11: shared object 170: in computed list but not hint table
  23 +WARNING: lin5.pdf: page 11: shared object 172: in computed list but not hint table
  24 +WARNING: lin5.pdf: page 12: shared object 170: in computed list but not hint table
  25 +WARNING: lin5.pdf: page 12: shared object 172: in computed list but not hint table
  26 +WARNING: lin5.pdf: page 13: shared object 170: in computed list but not hint table
  27 +WARNING: lin5.pdf: page 13: shared object 172: in computed list but not hint table
  28 +WARNING: lin5.pdf: page 14: shared object 170: in computed list but not hint table
  29 +WARNING: lin5.pdf: page 14: shared object 172: in computed list but not hint table
  30 +WARNING: lin5.pdf: page 15: shared object 170: in computed list but not hint table
  31 +WARNING: lin5.pdf: page 15: shared object 172: in computed list but not hint table
  32 +WARNING: lin5.pdf: page 16: shared object 170: in computed list but not hint table
  33 +WARNING: lin5.pdf: page 16: shared object 172: in computed list but not hint table
  34 +WARNING: lin5.pdf: page 17: shared object 170: in computed list but not hint table
  35 +WARNING: lin5.pdf: page 17: shared object 172: in computed list but not hint table
  36 +WARNING: lin5.pdf: page 18: shared object 170: in computed list but not hint table
  37 +WARNING: lin5.pdf: page 18: shared object 172: in computed list but not hint table
  38 +WARNING: lin5.pdf: page 19: shared object 170: in computed list but not hint table
  39 +WARNING: lin5.pdf: page 19: shared object 172: in computed list but not hint table
  40 +WARNING: lin5.pdf: page 20: shared object 170: in computed list but not hint table
  41 +WARNING: lin5.pdf: page 20: shared object 172: in computed list but not hint table
  42 +WARNING: lin5.pdf: page 21: shared object 170: in computed list but not hint table
  43 +WARNING: lin5.pdf: page 21: shared object 172: in computed list but not hint table
  44 +WARNING: lin5.pdf: page 22: shared object 170: in computed list but not hint table
  45 +WARNING: lin5.pdf: page 22: shared object 172: in computed list but not hint table
  46 +WARNING: lin5.pdf: page 23: shared object 170: in computed list but not hint table
  47 +WARNING: lin5.pdf: page 23: shared object 172: in computed list but not hint table
  48 +WARNING: lin5.pdf: page 24: shared object 170: in computed list but not hint table
  49 +WARNING: lin5.pdf: page 24: shared object 172: in computed list but not hint table
  50 +WARNING: lin5.pdf: page 25: shared object 170: in computed list but not hint table
  51 +WARNING: lin5.pdf: page 25: shared object 172: in computed list but not hint table
  52 +WARNING: lin5.pdf: page 26: shared object 170: in computed list but not hint table
  53 +WARNING: lin5.pdf: page 26: shared object 172: in computed list but not hint table
  54 +WARNING: lin5.pdf: page 27: shared object 170: in computed list but not hint table
  55 +WARNING: lin5.pdf: page 27: shared object 172: in computed list but not hint table
  56 +WARNING: lin5.pdf: page 28: shared object 170: in computed list but not hint table
  57 +WARNING: lin5.pdf: page 28: shared object 172: in computed list but not hint table
  58 +WARNING: lin5.pdf: page 29: shared object 170: in computed list but not hint table
  59 +WARNING: lin5.pdf: page 29: shared object 172: in computed list but not hint table
  60 +WARNING: lin5.pdf: incorrect offset in outlines table: hint table = 1710; computed = 1627
  61 +WARNING: lin5.pdf: incorrect length in outlines table: hint table = 2124; computed = 2075
62 lin5.pdf: linearization data: 62 lin5.pdf: linearization data:
63 63
64 file_size: 27464 64 file_size: 27464
@@ -316,3 +316,4 @@ first_object: 157 @@ -316,3 +316,4 @@ first_object: 157
316 first_object_offset: 1710 316 first_object_offset: 1710
317 nobjects: 12 317 nobjects: 12
318 group_length: 2124 318 group_length: 2124
  319 +qpdf: operation succeeded with warnings
qpdf/qtest/qpdf/lin6.out
1 -WARNING: end of first page section (/E) mismatch: /E = 2897; computed = 5005..5007  
2 -WARNING: object count mismatch for page 0: hint table = 19; computed = 16  
3 -WARNING: page 0 has shared identifier entries  
4 -WARNING: page 0: shared object 93: in hint table but not computed list  
5 -WARNING: object count mismatch for page 1: hint table = 3; computed = 2  
6 -WARNING: page 1: shared object 98: in hint table but not computed list  
7 -WARNING: page 1: shared object 99: in hint table but not computed list  
8 -WARNING: object count mismatch for page 2: hint table = 3; computed = 2  
9 -WARNING: page 2: shared object 98: in hint table but not computed list  
10 -WARNING: page 2: shared object 99: in hint table but not computed list  
11 -WARNING: object count mismatch for page 3: hint table = 3; computed = 2  
12 -WARNING: page 3: shared object 98: in hint table but not computed list  
13 -WARNING: page 3: shared object 99: in hint table but not computed list  
14 -WARNING: object count mismatch for page 4: hint table = 3; computed = 2  
15 -WARNING: page 4: shared object 98: in hint table but not computed list  
16 -WARNING: page 4: shared object 99: in hint table but not computed list  
17 -WARNING: object count mismatch for page 5: hint table = 3; computed = 2  
18 -WARNING: page 5: shared object 98: in hint table but not computed list  
19 -WARNING: page 5: shared object 99: in hint table but not computed list  
20 -WARNING: object count mismatch for page 6: hint table = 3; computed = 2  
21 -WARNING: page 6: shared object 98: in hint table but not computed list  
22 -WARNING: page 6: shared object 99: in hint table but not computed list  
23 -WARNING: object count mismatch for page 7: hint table = 3; computed = 2  
24 -WARNING: page 7: shared object 98: in hint table but not computed list  
25 -WARNING: page 7: shared object 99: in hint table but not computed list  
26 -WARNING: object count mismatch for page 8: hint table = 3; computed = 2  
27 -WARNING: page 8: shared object 98: in hint table but not computed list  
28 -WARNING: page 8: shared object 99: in hint table but not computed list  
29 -WARNING: object count mismatch for page 9: hint table = 3; computed = 2  
30 -WARNING: page 9: shared object 98: in hint table but not computed list  
31 -WARNING: page 9: shared object 99: in hint table but not computed list  
32 -WARNING: object count mismatch for page 10: hint table = 3; computed = 2  
33 -WARNING: page 10: shared object 98: in hint table but not computed list  
34 -WARNING: page 10: shared object 99: in hint table but not computed list  
35 -WARNING: object count mismatch for page 11: hint table = 3; computed = 2  
36 -WARNING: page 11: shared object 98: in hint table but not computed list  
37 -WARNING: page 11: shared object 99: in hint table but not computed list  
38 -WARNING: object count mismatch for page 12: hint table = 3; computed = 2  
39 -WARNING: page 12: shared object 98: in hint table but not computed list  
40 -WARNING: page 12: shared object 99: in hint table but not computed list  
41 -WARNING: object count mismatch for page 13: hint table = 3; computed = 2  
42 -WARNING: page 13: shared object 98: in hint table but not computed list  
43 -WARNING: page 13: shared object 99: in hint table but not computed list  
44 -WARNING: object count mismatch for page 14: hint table = 3; computed = 2  
45 -WARNING: page 14: shared object 98: in hint table but not computed list  
46 -WARNING: page 14: shared object 99: in hint table but not computed list  
47 -WARNING: object count mismatch for page 15: hint table = 3; computed = 2  
48 -WARNING: page 15: shared object 98: in hint table but not computed list  
49 -WARNING: page 15: shared object 99: in hint table but not computed list  
50 -WARNING: object count mismatch for page 16: hint table = 3; computed = 2  
51 -WARNING: page 16: shared object 98: in hint table but not computed list  
52 -WARNING: page 16: shared object 99: in hint table but not computed list  
53 -WARNING: object count mismatch for page 17: hint table = 3; computed = 2  
54 -WARNING: page 17: shared object 98: in hint table but not computed list  
55 -WARNING: page 17: shared object 99: in hint table but not computed list  
56 -WARNING: object count mismatch for page 18: hint table = 3; computed = 2  
57 -WARNING: page 18: shared object 98: in hint table but not computed list  
58 -WARNING: page 18: shared object 99: in hint table but not computed list  
59 -WARNING: object count mismatch for page 19: hint table = 3; computed = 2  
60 -WARNING: page 19: shared object 98: in hint table but not computed list  
61 -WARNING: page 19: shared object 99: in hint table but not computed list  
62 -WARNING: object count mismatch for page 20: hint table = 3; computed = 2  
63 -WARNING: page 20: shared object 98: in hint table but not computed list  
64 -WARNING: page 20: shared object 99: in hint table but not computed list  
65 -WARNING: object count mismatch for page 21: hint table = 3; computed = 2  
66 -WARNING: page 21: shared object 98: in hint table but not computed list  
67 -WARNING: page 21: shared object 99: in hint table but not computed list  
68 -WARNING: object count mismatch for page 22: hint table = 3; computed = 2  
69 -WARNING: page 22: shared object 98: in hint table but not computed list  
70 -WARNING: page 22: shared object 99: in hint table but not computed list  
71 -WARNING: object count mismatch for page 23: hint table = 3; computed = 2  
72 -WARNING: page 23: shared object 98: in hint table but not computed list  
73 -WARNING: page 23: shared object 99: in hint table but not computed list  
74 -WARNING: object count mismatch for page 24: hint table = 3; computed = 2  
75 -WARNING: page 24: shared object 98: in hint table but not computed list  
76 -WARNING: page 24: shared object 99: in hint table but not computed list  
77 -WARNING: object count mismatch for page 25: hint table = 3; computed = 2  
78 -WARNING: page 25: shared object 98: in hint table but not computed list  
79 -WARNING: page 25: shared object 99: in hint table but not computed list  
80 -WARNING: object count mismatch for page 26: hint table = 3; computed = 2  
81 -WARNING: page 26: shared object 98: in hint table but not computed list  
82 -WARNING: page 26: shared object 99: in hint table but not computed list  
83 -WARNING: object count mismatch for page 27: hint table = 3; computed = 2  
84 -WARNING: page 27: shared object 98: in hint table but not computed list  
85 -WARNING: page 27: shared object 99: in hint table but not computed list  
86 -WARNING: object count mismatch for page 28: hint table = 3; computed = 2  
87 -WARNING: page 28: shared object 98: in hint table but not computed list  
88 -WARNING: page 28: shared object 99: in hint table but not computed list  
89 -WARNING: object count mismatch for page 29: hint table = 3; computed = 2  
90 -WARNING: page 29: shared object 98: in hint table but not computed list  
91 -WARNING: page 29: shared object 99: in hint table but not computed list 1 +WARNING: lin6.pdf: end of first page section (/E) mismatch: /E = 2897; computed = 5005..5007
  2 +WARNING: lin6.pdf: object count mismatch for page 0: hint table = 19; computed = 16
  3 +WARNING: lin6.pdf: page 0 has shared identifier entries
  4 +WARNING: lin6.pdf: page 0: shared object 93: in hint table but not computed list
  5 +WARNING: lin6.pdf: object count mismatch for page 1: hint table = 3; computed = 2
  6 +WARNING: lin6.pdf: page 1: shared object 98: in hint table but not computed list
  7 +WARNING: lin6.pdf: page 1: shared object 99: in hint table but not computed list
  8 +WARNING: lin6.pdf: object count mismatch for page 2: hint table = 3; computed = 2
  9 +WARNING: lin6.pdf: page 2: shared object 98: in hint table but not computed list
  10 +WARNING: lin6.pdf: page 2: shared object 99: in hint table but not computed list
  11 +WARNING: lin6.pdf: object count mismatch for page 3: hint table = 3; computed = 2
  12 +WARNING: lin6.pdf: page 3: shared object 98: in hint table but not computed list
  13 +WARNING: lin6.pdf: page 3: shared object 99: in hint table but not computed list
  14 +WARNING: lin6.pdf: object count mismatch for page 4: hint table = 3; computed = 2
  15 +WARNING: lin6.pdf: page 4: shared object 98: in hint table but not computed list
  16 +WARNING: lin6.pdf: page 4: shared object 99: in hint table but not computed list
  17 +WARNING: lin6.pdf: object count mismatch for page 5: hint table = 3; computed = 2
  18 +WARNING: lin6.pdf: page 5: shared object 98: in hint table but not computed list
  19 +WARNING: lin6.pdf: page 5: shared object 99: in hint table but not computed list
  20 +WARNING: lin6.pdf: object count mismatch for page 6: hint table = 3; computed = 2
  21 +WARNING: lin6.pdf: page 6: shared object 98: in hint table but not computed list
  22 +WARNING: lin6.pdf: page 6: shared object 99: in hint table but not computed list
  23 +WARNING: lin6.pdf: object count mismatch for page 7: hint table = 3; computed = 2
  24 +WARNING: lin6.pdf: page 7: shared object 98: in hint table but not computed list
  25 +WARNING: lin6.pdf: page 7: shared object 99: in hint table but not computed list
  26 +WARNING: lin6.pdf: object count mismatch for page 8: hint table = 3; computed = 2
  27 +WARNING: lin6.pdf: page 8: shared object 98: in hint table but not computed list
  28 +WARNING: lin6.pdf: page 8: shared object 99: in hint table but not computed list
  29 +WARNING: lin6.pdf: object count mismatch for page 9: hint table = 3; computed = 2
  30 +WARNING: lin6.pdf: page 9: shared object 98: in hint table but not computed list
  31 +WARNING: lin6.pdf: page 9: shared object 99: in hint table but not computed list
  32 +WARNING: lin6.pdf: object count mismatch for page 10: hint table = 3; computed = 2
  33 +WARNING: lin6.pdf: page 10: shared object 98: in hint table but not computed list
  34 +WARNING: lin6.pdf: page 10: shared object 99: in hint table but not computed list
  35 +WARNING: lin6.pdf: object count mismatch for page 11: hint table = 3; computed = 2
  36 +WARNING: lin6.pdf: page 11: shared object 98: in hint table but not computed list
  37 +WARNING: lin6.pdf: page 11: shared object 99: in hint table but not computed list
  38 +WARNING: lin6.pdf: object count mismatch for page 12: hint table = 3; computed = 2
  39 +WARNING: lin6.pdf: page 12: shared object 98: in hint table but not computed list
  40 +WARNING: lin6.pdf: page 12: shared object 99: in hint table but not computed list
  41 +WARNING: lin6.pdf: object count mismatch for page 13: hint table = 3; computed = 2
  42 +WARNING: lin6.pdf: page 13: shared object 98: in hint table but not computed list
  43 +WARNING: lin6.pdf: page 13: shared object 99: in hint table but not computed list
  44 +WARNING: lin6.pdf: object count mismatch for page 14: hint table = 3; computed = 2
  45 +WARNING: lin6.pdf: page 14: shared object 98: in hint table but not computed list
  46 +WARNING: lin6.pdf: page 14: shared object 99: in hint table but not computed list
  47 +WARNING: lin6.pdf: object count mismatch for page 15: hint table = 3; computed = 2
  48 +WARNING: lin6.pdf: page 15: shared object 98: in hint table but not computed list
  49 +WARNING: lin6.pdf: page 15: shared object 99: in hint table but not computed list
  50 +WARNING: lin6.pdf: object count mismatch for page 16: hint table = 3; computed = 2
  51 +WARNING: lin6.pdf: page 16: shared object 98: in hint table but not computed list
  52 +WARNING: lin6.pdf: page 16: shared object 99: in hint table but not computed list
  53 +WARNING: lin6.pdf: object count mismatch for page 17: hint table = 3; computed = 2
  54 +WARNING: lin6.pdf: page 17: shared object 98: in hint table but not computed list
  55 +WARNING: lin6.pdf: page 17: shared object 99: in hint table but not computed list
  56 +WARNING: lin6.pdf: object count mismatch for page 18: hint table = 3; computed = 2
  57 +WARNING: lin6.pdf: page 18: shared object 98: in hint table but not computed list
  58 +WARNING: lin6.pdf: page 18: shared object 99: in hint table but not computed list
  59 +WARNING: lin6.pdf: object count mismatch for page 19: hint table = 3; computed = 2
  60 +WARNING: lin6.pdf: page 19: shared object 98: in hint table but not computed list
  61 +WARNING: lin6.pdf: page 19: shared object 99: in hint table but not computed list
  62 +WARNING: lin6.pdf: object count mismatch for page 20: hint table = 3; computed = 2
  63 +WARNING: lin6.pdf: page 20: shared object 98: in hint table but not computed list
  64 +WARNING: lin6.pdf: page 20: shared object 99: in hint table but not computed list
  65 +WARNING: lin6.pdf: object count mismatch for page 21: hint table = 3; computed = 2
  66 +WARNING: lin6.pdf: page 21: shared object 98: in hint table but not computed list
  67 +WARNING: lin6.pdf: page 21: shared object 99: in hint table but not computed list
  68 +WARNING: lin6.pdf: object count mismatch for page 22: hint table = 3; computed = 2
  69 +WARNING: lin6.pdf: page 22: shared object 98: in hint table but not computed list
  70 +WARNING: lin6.pdf: page 22: shared object 99: in hint table but not computed list
  71 +WARNING: lin6.pdf: object count mismatch for page 23: hint table = 3; computed = 2
  72 +WARNING: lin6.pdf: page 23: shared object 98: in hint table but not computed list
  73 +WARNING: lin6.pdf: page 23: shared object 99: in hint table but not computed list
  74 +WARNING: lin6.pdf: object count mismatch for page 24: hint table = 3; computed = 2
  75 +WARNING: lin6.pdf: page 24: shared object 98: in hint table but not computed list
  76 +WARNING: lin6.pdf: page 24: shared object 99: in hint table but not computed list
  77 +WARNING: lin6.pdf: object count mismatch for page 25: hint table = 3; computed = 2
  78 +WARNING: lin6.pdf: page 25: shared object 98: in hint table but not computed list
  79 +WARNING: lin6.pdf: page 25: shared object 99: in hint table but not computed list
  80 +WARNING: lin6.pdf: object count mismatch for page 26: hint table = 3; computed = 2
  81 +WARNING: lin6.pdf: page 26: shared object 98: in hint table but not computed list
  82 +WARNING: lin6.pdf: page 26: shared object 99: in hint table but not computed list
  83 +WARNING: lin6.pdf: object count mismatch for page 27: hint table = 3; computed = 2
  84 +WARNING: lin6.pdf: page 27: shared object 98: in hint table but not computed list
  85 +WARNING: lin6.pdf: page 27: shared object 99: in hint table but not computed list
  86 +WARNING: lin6.pdf: object count mismatch for page 28: hint table = 3; computed = 2
  87 +WARNING: lin6.pdf: page 28: shared object 98: in hint table but not computed list
  88 +WARNING: lin6.pdf: page 28: shared object 99: in hint table but not computed list
  89 +WARNING: lin6.pdf: object count mismatch for page 29: hint table = 3; computed = 2
  90 +WARNING: lin6.pdf: page 29: shared object 98: in hint table but not computed list
  91 +WARNING: lin6.pdf: page 29: shared object 99: in hint table but not computed list
92 lin6.pdf: linearization data: 92 lin6.pdf: linearization data:
93 93
94 file_size: 24824 94 file_size: 24824
@@ -590,3 +590,4 @@ first_object: 100 @@ -590,3 +590,4 @@ first_object: 100
590 first_object_offset: 2897 590 first_object_offset: 2897
591 nobjects: 12 591 nobjects: 12
592 group_length: 2110 592 group_length: 2110
  593 +qpdf: operation succeeded with warnings
qpdf/qtest/qpdf/lin7.out
1 -WARNING: end of first page section (/E) mismatch: /E = 1865; computed = 1655..1656  
2 -WARNING: page 1: shared object 170: in computed list but not hint table  
3 -WARNING: page 1: shared object 172: in computed list but not hint table  
4 -WARNING: page 2: shared object 170: in computed list but not hint table  
5 -WARNING: page 2: shared object 172: in computed list but not hint table  
6 -WARNING: page 3: shared object 170: in computed list but not hint table  
7 -WARNING: page 3: shared object 172: in computed list but not hint table  
8 -WARNING: page 4: shared object 170: in computed list but not hint table  
9 -WARNING: page 4: shared object 172: in computed list but not hint table  
10 -WARNING: page 5: shared object 170: in computed list but not hint table  
11 -WARNING: page 5: shared object 172: in computed list but not hint table  
12 -WARNING: page 6: shared object 170: in computed list but not hint table  
13 -WARNING: page 6: shared object 172: in computed list but not hint table  
14 -WARNING: page 7: shared object 170: in computed list but not hint table  
15 -WARNING: page 7: shared object 172: in computed list but not hint table  
16 -WARNING: page 8: shared object 170: in computed list but not hint table  
17 -WARNING: page 8: shared object 172: in computed list but not hint table  
18 -WARNING: page 9: shared object 170: in computed list but not hint table  
19 -WARNING: page 9: shared object 172: in computed list but not hint table  
20 -WARNING: page 10: shared object 170: in computed list but not hint table  
21 -WARNING: page 10: shared object 172: in computed list but not hint table  
22 -WARNING: page 11: shared object 170: in computed list but not hint table  
23 -WARNING: page 11: shared object 172: in computed list but not hint table  
24 -WARNING: page 12: shared object 170: in computed list but not hint table  
25 -WARNING: page 12: shared object 172: in computed list but not hint table  
26 -WARNING: page 13: shared object 170: in computed list but not hint table  
27 -WARNING: page 13: shared object 172: in computed list but not hint table  
28 -WARNING: page 14: shared object 170: in computed list but not hint table  
29 -WARNING: page 14: shared object 172: in computed list but not hint table  
30 -WARNING: page 15: shared object 170: in computed list but not hint table  
31 -WARNING: page 15: shared object 172: in computed list but not hint table  
32 -WARNING: page 16: shared object 170: in computed list but not hint table  
33 -WARNING: page 16: shared object 172: in computed list but not hint table  
34 -WARNING: page 17: shared object 170: in computed list but not hint table  
35 -WARNING: page 17: shared object 172: in computed list but not hint table  
36 -WARNING: page 18: shared object 170: in computed list but not hint table  
37 -WARNING: page 18: shared object 172: in computed list but not hint table  
38 -WARNING: page 19: shared object 170: in computed list but not hint table  
39 -WARNING: page 19: shared object 172: in computed list but not hint table  
40 -WARNING: page 20: shared object 170: in computed list but not hint table  
41 -WARNING: page 20: shared object 172: in computed list but not hint table  
42 -WARNING: page 21: shared object 170: in computed list but not hint table  
43 -WARNING: page 21: shared object 172: in computed list but not hint table  
44 -WARNING: page 22: shared object 170: in computed list but not hint table  
45 -WARNING: page 22: shared object 172: in computed list but not hint table  
46 -WARNING: page 23: shared object 170: in computed list but not hint table  
47 -WARNING: page 23: shared object 172: in computed list but not hint table  
48 -WARNING: page 24: shared object 170: in computed list but not hint table  
49 -WARNING: page 24: shared object 172: in computed list but not hint table  
50 -WARNING: page 25: shared object 170: in computed list but not hint table  
51 -WARNING: page 25: shared object 172: in computed list but not hint table  
52 -WARNING: page 26: shared object 170: in computed list but not hint table  
53 -WARNING: page 26: shared object 172: in computed list but not hint table  
54 -WARNING: page 27: shared object 170: in computed list but not hint table  
55 -WARNING: page 27: shared object 172: in computed list but not hint table  
56 -WARNING: page 28: shared object 170: in computed list but not hint table  
57 -WARNING: page 28: shared object 172: in computed list but not hint table  
58 -WARNING: page 29: shared object 170: in computed list but not hint table  
59 -WARNING: page 29: shared object 172: in computed list but not hint table 1 +WARNING: lin7.pdf: end of first page section (/E) mismatch: /E = 1865; computed = 1655..1656
  2 +WARNING: lin7.pdf: page 1: shared object 170: in computed list but not hint table
  3 +WARNING: lin7.pdf: page 1: shared object 172: in computed list but not hint table
  4 +WARNING: lin7.pdf: page 2: shared object 170: in computed list but not hint table
  5 +WARNING: lin7.pdf: page 2: shared object 172: in computed list but not hint table
  6 +WARNING: lin7.pdf: page 3: shared object 170: in computed list but not hint table
  7 +WARNING: lin7.pdf: page 3: shared object 172: in computed list but not hint table
  8 +WARNING: lin7.pdf: page 4: shared object 170: in computed list but not hint table
  9 +WARNING: lin7.pdf: page 4: shared object 172: in computed list but not hint table
  10 +WARNING: lin7.pdf: page 5: shared object 170: in computed list but not hint table
  11 +WARNING: lin7.pdf: page 5: shared object 172: in computed list but not hint table
  12 +WARNING: lin7.pdf: page 6: shared object 170: in computed list but not hint table
  13 +WARNING: lin7.pdf: page 6: shared object 172: in computed list but not hint table
  14 +WARNING: lin7.pdf: page 7: shared object 170: in computed list but not hint table
  15 +WARNING: lin7.pdf: page 7: shared object 172: in computed list but not hint table
  16 +WARNING: lin7.pdf: page 8: shared object 170: in computed list but not hint table
  17 +WARNING: lin7.pdf: page 8: shared object 172: in computed list but not hint table
  18 +WARNING: lin7.pdf: page 9: shared object 170: in computed list but not hint table
  19 +WARNING: lin7.pdf: page 9: shared object 172: in computed list but not hint table
  20 +WARNING: lin7.pdf: page 10: shared object 170: in computed list but not hint table
  21 +WARNING: lin7.pdf: page 10: shared object 172: in computed list but not hint table
  22 +WARNING: lin7.pdf: page 11: shared object 170: in computed list but not hint table
  23 +WARNING: lin7.pdf: page 11: shared object 172: in computed list but not hint table
  24 +WARNING: lin7.pdf: page 12: shared object 170: in computed list but not hint table
  25 +WARNING: lin7.pdf: page 12: shared object 172: in computed list but not hint table
  26 +WARNING: lin7.pdf: page 13: shared object 170: in computed list but not hint table
  27 +WARNING: lin7.pdf: page 13: shared object 172: in computed list but not hint table
  28 +WARNING: lin7.pdf: page 14: shared object 170: in computed list but not hint table
  29 +WARNING: lin7.pdf: page 14: shared object 172: in computed list but not hint table
  30 +WARNING: lin7.pdf: page 15: shared object 170: in computed list but not hint table
  31 +WARNING: lin7.pdf: page 15: shared object 172: in computed list but not hint table
  32 +WARNING: lin7.pdf: page 16: shared object 170: in computed list but not hint table
  33 +WARNING: lin7.pdf: page 16: shared object 172: in computed list but not hint table
  34 +WARNING: lin7.pdf: page 17: shared object 170: in computed list but not hint table
  35 +WARNING: lin7.pdf: page 17: shared object 172: in computed list but not hint table
  36 +WARNING: lin7.pdf: page 18: shared object 170: in computed list but not hint table
  37 +WARNING: lin7.pdf: page 18: shared object 172: in computed list but not hint table
  38 +WARNING: lin7.pdf: page 19: shared object 170: in computed list but not hint table
  39 +WARNING: lin7.pdf: page 19: shared object 172: in computed list but not hint table
  40 +WARNING: lin7.pdf: page 20: shared object 170: in computed list but not hint table
  41 +WARNING: lin7.pdf: page 20: shared object 172: in computed list but not hint table
  42 +WARNING: lin7.pdf: page 21: shared object 170: in computed list but not hint table
  43 +WARNING: lin7.pdf: page 21: shared object 172: in computed list but not hint table
  44 +WARNING: lin7.pdf: page 22: shared object 170: in computed list but not hint table
  45 +WARNING: lin7.pdf: page 22: shared object 172: in computed list but not hint table
  46 +WARNING: lin7.pdf: page 23: shared object 170: in computed list but not hint table
  47 +WARNING: lin7.pdf: page 23: shared object 172: in computed list but not hint table
  48 +WARNING: lin7.pdf: page 24: shared object 170: in computed list but not hint table
  49 +WARNING: lin7.pdf: page 24: shared object 172: in computed list but not hint table
  50 +WARNING: lin7.pdf: page 25: shared object 170: in computed list but not hint table
  51 +WARNING: lin7.pdf: page 25: shared object 172: in computed list but not hint table
  52 +WARNING: lin7.pdf: page 26: shared object 170: in computed list but not hint table
  53 +WARNING: lin7.pdf: page 26: shared object 172: in computed list but not hint table
  54 +WARNING: lin7.pdf: page 27: shared object 170: in computed list but not hint table
  55 +WARNING: lin7.pdf: page 27: shared object 172: in computed list but not hint table
  56 +WARNING: lin7.pdf: page 28: shared object 170: in computed list but not hint table
  57 +WARNING: lin7.pdf: page 28: shared object 172: in computed list but not hint table
  58 +WARNING: lin7.pdf: page 29: shared object 170: in computed list but not hint table
  59 +WARNING: lin7.pdf: page 29: shared object 172: in computed list but not hint table
60 lin7.pdf: linearization data: 60 lin7.pdf: linearization data:
61 61
62 file_size: 27408 62 file_size: 27408
@@ -290,3 +290,4 @@ first_object: 88 @@ -290,3 +290,4 @@ first_object: 88
290 first_object_offset: 12129 290 first_object_offset: 12129
291 nobjects: 12 291 nobjects: 12
292 group_length: 2030 292 group_length: 2030
  293 +qpdf: operation succeeded with warnings
qpdf/qtest/qpdf/lin8.out
1 -WARNING: end of first page section (/E) mismatch: /E = 2656; computed = 1768..1770  
2 -WARNING: object count mismatch for page 0: hint table = 7; computed = 4  
3 -WARNING: page 0 has shared identifier entries  
4 -WARNING: page 0: shared object 105: in hint table but not computed list  
5 -WARNING: object count mismatch for page 1: hint table = 3; computed = 2  
6 -WARNING: page 1: shared object 110: in hint table but not computed list  
7 -WARNING: page 1: shared object 111: in hint table but not computed list  
8 -WARNING: object count mismatch for page 2: hint table = 3; computed = 2  
9 -WARNING: page 2: shared object 110: in hint table but not computed list  
10 -WARNING: page 2: shared object 111: in hint table but not computed list  
11 -WARNING: object count mismatch for page 3: hint table = 3; computed = 2  
12 -WARNING: page 3: shared object 110: in hint table but not computed list  
13 -WARNING: page 3: shared object 111: in hint table but not computed list  
14 -WARNING: object count mismatch for page 4: hint table = 3; computed = 2  
15 -WARNING: page 4: shared object 110: in hint table but not computed list  
16 -WARNING: page 4: shared object 111: in hint table but not computed list  
17 -WARNING: object count mismatch for page 5: hint table = 3; computed = 2  
18 -WARNING: page 5: shared object 110: in hint table but not computed list  
19 -WARNING: page 5: shared object 111: in hint table but not computed list  
20 -WARNING: object count mismatch for page 6: hint table = 3; computed = 2  
21 -WARNING: page 6: shared object 110: in hint table but not computed list  
22 -WARNING: page 6: shared object 111: in hint table but not computed list  
23 -WARNING: object count mismatch for page 7: hint table = 3; computed = 2  
24 -WARNING: page 7: shared object 110: in hint table but not computed list  
25 -WARNING: page 7: shared object 111: in hint table but not computed list  
26 -WARNING: object count mismatch for page 8: hint table = 3; computed = 2  
27 -WARNING: page 8: shared object 110: in hint table but not computed list  
28 -WARNING: page 8: shared object 111: in hint table but not computed list  
29 -WARNING: object count mismatch for page 9: hint table = 3; computed = 2  
30 -WARNING: page 9: shared object 110: in hint table but not computed list  
31 -WARNING: page 9: shared object 111: in hint table but not computed list  
32 -WARNING: object count mismatch for page 10: hint table = 3; computed = 2  
33 -WARNING: page 10: shared object 110: in hint table but not computed list  
34 -WARNING: page 10: shared object 111: in hint table but not computed list  
35 -WARNING: object count mismatch for page 11: hint table = 3; computed = 2  
36 -WARNING: page 11: shared object 110: in hint table but not computed list  
37 -WARNING: page 11: shared object 111: in hint table but not computed list  
38 -WARNING: object count mismatch for page 12: hint table = 3; computed = 2  
39 -WARNING: page 12: shared object 110: in hint table but not computed list  
40 -WARNING: page 12: shared object 111: in hint table but not computed list  
41 -WARNING: object count mismatch for page 13: hint table = 3; computed = 2  
42 -WARNING: page 13: shared object 110: in hint table but not computed list  
43 -WARNING: page 13: shared object 111: in hint table but not computed list  
44 -WARNING: object count mismatch for page 14: hint table = 3; computed = 2  
45 -WARNING: page 14: shared object 110: in hint table but not computed list  
46 -WARNING: page 14: shared object 111: in hint table but not computed list  
47 -WARNING: object count mismatch for page 15: hint table = 3; computed = 2  
48 -WARNING: page 15: shared object 110: in hint table but not computed list  
49 -WARNING: page 15: shared object 111: in hint table but not computed list  
50 -WARNING: object count mismatch for page 16: hint table = 3; computed = 2  
51 -WARNING: page 16: shared object 110: in hint table but not computed list  
52 -WARNING: page 16: shared object 111: in hint table but not computed list  
53 -WARNING: object count mismatch for page 17: hint table = 3; computed = 2  
54 -WARNING: page 17: shared object 110: in hint table but not computed list  
55 -WARNING: page 17: shared object 111: in hint table but not computed list  
56 -WARNING: object count mismatch for page 18: hint table = 3; computed = 2  
57 -WARNING: page 18: shared object 110: in hint table but not computed list  
58 -WARNING: page 18: shared object 111: in hint table but not computed list  
59 -WARNING: object count mismatch for page 19: hint table = 3; computed = 2  
60 -WARNING: page 19: shared object 110: in hint table but not computed list  
61 -WARNING: page 19: shared object 111: in hint table but not computed list  
62 -WARNING: object count mismatch for page 20: hint table = 3; computed = 2  
63 -WARNING: page 20: shared object 110: in hint table but not computed list  
64 -WARNING: page 20: shared object 111: in hint table but not computed list  
65 -WARNING: object count mismatch for page 21: hint table = 3; computed = 2  
66 -WARNING: page 21: shared object 110: in hint table but not computed list  
67 -WARNING: page 21: shared object 111: in hint table but not computed list  
68 -WARNING: object count mismatch for page 22: hint table = 3; computed = 2  
69 -WARNING: page 22: shared object 110: in hint table but not computed list  
70 -WARNING: page 22: shared object 111: in hint table but not computed list  
71 -WARNING: object count mismatch for page 23: hint table = 3; computed = 2  
72 -WARNING: page 23: shared object 110: in hint table but not computed list  
73 -WARNING: page 23: shared object 111: in hint table but not computed list  
74 -WARNING: object count mismatch for page 24: hint table = 3; computed = 2  
75 -WARNING: page 24: shared object 110: in hint table but not computed list  
76 -WARNING: page 24: shared object 111: in hint table but not computed list  
77 -WARNING: object count mismatch for page 25: hint table = 3; computed = 2  
78 -WARNING: page 25: shared object 110: in hint table but not computed list  
79 -WARNING: page 25: shared object 111: in hint table but not computed list  
80 -WARNING: object count mismatch for page 26: hint table = 3; computed = 2  
81 -WARNING: page 26: shared object 110: in hint table but not computed list  
82 -WARNING: page 26: shared object 111: in hint table but not computed list  
83 -WARNING: object count mismatch for page 27: hint table = 3; computed = 2  
84 -WARNING: page 27: shared object 110: in hint table but not computed list  
85 -WARNING: page 27: shared object 111: in hint table but not computed list  
86 -WARNING: object count mismatch for page 28: hint table = 3; computed = 2  
87 -WARNING: page 28: shared object 110: in hint table but not computed list  
88 -WARNING: page 28: shared object 111: in hint table but not computed list  
89 -WARNING: object count mismatch for page 29: hint table = 3; computed = 2  
90 -WARNING: page 29: shared object 110: in hint table but not computed list  
91 -WARNING: page 29: shared object 111: in hint table but not computed list 1 +WARNING: lin8.pdf: end of first page section (/E) mismatch: /E = 2656; computed = 1768..1770
  2 +WARNING: lin8.pdf: object count mismatch for page 0: hint table = 7; computed = 4
  3 +WARNING: lin8.pdf: page 0 has shared identifier entries
  4 +WARNING: lin8.pdf: page 0: shared object 105: in hint table but not computed list
  5 +WARNING: lin8.pdf: object count mismatch for page 1: hint table = 3; computed = 2
  6 +WARNING: lin8.pdf: page 1: shared object 110: in hint table but not computed list
  7 +WARNING: lin8.pdf: page 1: shared object 111: in hint table but not computed list
  8 +WARNING: lin8.pdf: object count mismatch for page 2: hint table = 3; computed = 2
  9 +WARNING: lin8.pdf: page 2: shared object 110: in hint table but not computed list
  10 +WARNING: lin8.pdf: page 2: shared object 111: in hint table but not computed list
  11 +WARNING: lin8.pdf: object count mismatch for page 3: hint table = 3; computed = 2
  12 +WARNING: lin8.pdf: page 3: shared object 110: in hint table but not computed list
  13 +WARNING: lin8.pdf: page 3: shared object 111: in hint table but not computed list
  14 +WARNING: lin8.pdf: object count mismatch for page 4: hint table = 3; computed = 2
  15 +WARNING: lin8.pdf: page 4: shared object 110: in hint table but not computed list
  16 +WARNING: lin8.pdf: page 4: shared object 111: in hint table but not computed list
  17 +WARNING: lin8.pdf: object count mismatch for page 5: hint table = 3; computed = 2
  18 +WARNING: lin8.pdf: page 5: shared object 110: in hint table but not computed list
  19 +WARNING: lin8.pdf: page 5: shared object 111: in hint table but not computed list
  20 +WARNING: lin8.pdf: object count mismatch for page 6: hint table = 3; computed = 2
  21 +WARNING: lin8.pdf: page 6: shared object 110: in hint table but not computed list
  22 +WARNING: lin8.pdf: page 6: shared object 111: in hint table but not computed list
  23 +WARNING: lin8.pdf: object count mismatch for page 7: hint table = 3; computed = 2
  24 +WARNING: lin8.pdf: page 7: shared object 110: in hint table but not computed list
  25 +WARNING: lin8.pdf: page 7: shared object 111: in hint table but not computed list
  26 +WARNING: lin8.pdf: object count mismatch for page 8: hint table = 3; computed = 2
  27 +WARNING: lin8.pdf: page 8: shared object 110: in hint table but not computed list
  28 +WARNING: lin8.pdf: page 8: shared object 111: in hint table but not computed list
  29 +WARNING: lin8.pdf: object count mismatch for page 9: hint table = 3; computed = 2
  30 +WARNING: lin8.pdf: page 9: shared object 110: in hint table but not computed list
  31 +WARNING: lin8.pdf: page 9: shared object 111: in hint table but not computed list
  32 +WARNING: lin8.pdf: object count mismatch for page 10: hint table = 3; computed = 2
  33 +WARNING: lin8.pdf: page 10: shared object 110: in hint table but not computed list
  34 +WARNING: lin8.pdf: page 10: shared object 111: in hint table but not computed list
  35 +WARNING: lin8.pdf: object count mismatch for page 11: hint table = 3; computed = 2
  36 +WARNING: lin8.pdf: page 11: shared object 110: in hint table but not computed list
  37 +WARNING: lin8.pdf: page 11: shared object 111: in hint table but not computed list
  38 +WARNING: lin8.pdf: object count mismatch for page 12: hint table = 3; computed = 2
  39 +WARNING: lin8.pdf: page 12: shared object 110: in hint table but not computed list
  40 +WARNING: lin8.pdf: page 12: shared object 111: in hint table but not computed list
  41 +WARNING: lin8.pdf: object count mismatch for page 13: hint table = 3; computed = 2
  42 +WARNING: lin8.pdf: page 13: shared object 110: in hint table but not computed list
  43 +WARNING: lin8.pdf: page 13: shared object 111: in hint table but not computed list
  44 +WARNING: lin8.pdf: object count mismatch for page 14: hint table = 3; computed = 2
  45 +WARNING: lin8.pdf: page 14: shared object 110: in hint table but not computed list
  46 +WARNING: lin8.pdf: page 14: shared object 111: in hint table but not computed list
  47 +WARNING: lin8.pdf: object count mismatch for page 15: hint table = 3; computed = 2
  48 +WARNING: lin8.pdf: page 15: shared object 110: in hint table but not computed list
  49 +WARNING: lin8.pdf: page 15: shared object 111: in hint table but not computed list
  50 +WARNING: lin8.pdf: object count mismatch for page 16: hint table = 3; computed = 2
  51 +WARNING: lin8.pdf: page 16: shared object 110: in hint table but not computed list
  52 +WARNING: lin8.pdf: page 16: shared object 111: in hint table but not computed list
  53 +WARNING: lin8.pdf: object count mismatch for page 17: hint table = 3; computed = 2
  54 +WARNING: lin8.pdf: page 17: shared object 110: in hint table but not computed list
  55 +WARNING: lin8.pdf: page 17: shared object 111: in hint table but not computed list
  56 +WARNING: lin8.pdf: object count mismatch for page 18: hint table = 3; computed = 2
  57 +WARNING: lin8.pdf: page 18: shared object 110: in hint table but not computed list
  58 +WARNING: lin8.pdf: page 18: shared object 111: in hint table but not computed list
  59 +WARNING: lin8.pdf: object count mismatch for page 19: hint table = 3; computed = 2
  60 +WARNING: lin8.pdf: page 19: shared object 110: in hint table but not computed list
  61 +WARNING: lin8.pdf: page 19: shared object 111: in hint table but not computed list
  62 +WARNING: lin8.pdf: object count mismatch for page 20: hint table = 3; computed = 2
  63 +WARNING: lin8.pdf: page 20: shared object 110: in hint table but not computed list
  64 +WARNING: lin8.pdf: page 20: shared object 111: in hint table but not computed list
  65 +WARNING: lin8.pdf: object count mismatch for page 21: hint table = 3; computed = 2
  66 +WARNING: lin8.pdf: page 21: shared object 110: in hint table but not computed list
  67 +WARNING: lin8.pdf: page 21: shared object 111: in hint table but not computed list
  68 +WARNING: lin8.pdf: object count mismatch for page 22: hint table = 3; computed = 2
  69 +WARNING: lin8.pdf: page 22: shared object 110: in hint table but not computed list
  70 +WARNING: lin8.pdf: page 22: shared object 111: in hint table but not computed list
  71 +WARNING: lin8.pdf: object count mismatch for page 23: hint table = 3; computed = 2
  72 +WARNING: lin8.pdf: page 23: shared object 110: in hint table but not computed list
  73 +WARNING: lin8.pdf: page 23: shared object 111: in hint table but not computed list
  74 +WARNING: lin8.pdf: object count mismatch for page 24: hint table = 3; computed = 2
  75 +WARNING: lin8.pdf: page 24: shared object 110: in hint table but not computed list
  76 +WARNING: lin8.pdf: page 24: shared object 111: in hint table but not computed list
  77 +WARNING: lin8.pdf: object count mismatch for page 25: hint table = 3; computed = 2
  78 +WARNING: lin8.pdf: page 25: shared object 110: in hint table but not computed list
  79 +WARNING: lin8.pdf: page 25: shared object 111: in hint table but not computed list
  80 +WARNING: lin8.pdf: object count mismatch for page 26: hint table = 3; computed = 2
  81 +WARNING: lin8.pdf: page 26: shared object 110: in hint table but not computed list
  82 +WARNING: lin8.pdf: page 26: shared object 111: in hint table but not computed list
  83 +WARNING: lin8.pdf: object count mismatch for page 27: hint table = 3; computed = 2
  84 +WARNING: lin8.pdf: page 27: shared object 110: in hint table but not computed list
  85 +WARNING: lin8.pdf: page 27: shared object 111: in hint table but not computed list
  86 +WARNING: lin8.pdf: object count mismatch for page 28: hint table = 3; computed = 2
  87 +WARNING: lin8.pdf: page 28: shared object 110: in hint table but not computed list
  88 +WARNING: lin8.pdf: page 28: shared object 111: in hint table but not computed list
  89 +WARNING: lin8.pdf: object count mismatch for page 29: hint table = 3; computed = 2
  90 +WARNING: lin8.pdf: page 29: shared object 110: in hint table but not computed list
  91 +WARNING: lin8.pdf: page 29: shared object 111: in hint table but not computed list
92 lin8.pdf: linearization data: 92 lin8.pdf: linearization data:
93 93
94 file_size: 24875 94 file_size: 24875
@@ -566,3 +566,4 @@ first_object: 89 @@ -566,3 +566,4 @@ first_object: 89
566 first_object_offset: 20067 566 first_object_offset: 20067
567 nobjects: 12 567 nobjects: 12
568 group_length: 2069 568 group_length: 2069
  569 +qpdf: operation succeeded with warnings
qpdf/qtest/qpdf/lin9.out
1 -WARNING: page 0 has shared identifier entries  
2 -WARNING: page 0: shared object 19: in hint table but not computed list 1 +WARNING: lin9.pdf: page 0 has shared identifier entries
  2 +WARNING: lin9.pdf: page 0: shared object 19: in hint table but not computed list
3 lin9.pdf: linearization data: 3 lin9.pdf: linearization data:
4 4
5 file_size: 3316 5 file_size: 3316
@@ -102,3 +102,4 @@ Shared Object 5: @@ -102,3 +102,4 @@ Shared Object 5:
102 group length: 67 102 group length: 67
103 Shared Object 6: 103 Shared Object 6:
104 group length: 117 104 group length: 117
  105 +qpdf: operation succeeded with warnings
qpdf/qtest/qpdf/linearization-bounds-1.out
@@ -5,5 +5,5 @@ File is linearized @@ -5,5 +5,5 @@ File is linearized
5 WARNING: linearization-bounds-1.pdf (linearization hint stream: object 62 0, offset 12302): expected endstream 5 WARNING: linearization-bounds-1.pdf (linearization hint stream: object 62 0, offset 12302): expected endstream
6 WARNING: linearization-bounds-1.pdf (linearization hint stream: object 62 0, offset 1183): attempting to recover stream length 6 WARNING: linearization-bounds-1.pdf (linearization hint stream: object 62 0, offset 1183): attempting to recover stream length
7 WARNING: linearization-bounds-1.pdf (linearization hint stream: object 62 0, offset 1183): recovered stream length: 106 7 WARNING: linearization-bounds-1.pdf (linearization hint stream: object 62 0, offset 1183): recovered stream length: 106
8 -WARNING: error encountered while checking linearization data: linearization-bounds-1.pdf (linearization hint table, offset 1183): /S (shared object) offset is out of bounds 8 +WARNING: linearization-bounds-1.pdf: error encountered while checking linearization data: linearization-bounds-1.pdf (linearization hint table, offset 1183): /S (shared object) offset is out of bounds
9 qpdf: operation succeeded with warnings 9 qpdf: operation succeeded with warnings
qpdf/qtest/qpdf/linearization-bounds-2.out
@@ -5,5 +5,5 @@ File is linearized @@ -5,5 +5,5 @@ File is linearized
5 WARNING: linearization-bounds-2.pdf (linearization hint stream: object 62 0, offset 1282): expected endstream 5 WARNING: linearization-bounds-2.pdf (linearization hint stream: object 62 0, offset 1282): expected endstream
6 WARNING: linearization-bounds-2.pdf (linearization hint stream: object 62 0, offset 1183): attempting to recover stream length 6 WARNING: linearization-bounds-2.pdf (linearization hint stream: object 62 0, offset 1183): attempting to recover stream length
7 WARNING: linearization-bounds-2.pdf (linearization hint stream: object 62 0, offset 1183): recovered stream length: 106 7 WARNING: linearization-bounds-2.pdf (linearization hint stream: object 62 0, offset 1183): recovered stream length: 106
8 -WARNING: error encountered while checking linearization data: linearization-bounds-2.pdf (linearization hint table, offset 1183): /S (shared object) offset is out of bounds 8 +WARNING: linearization-bounds-2.pdf: error encountered while checking linearization data: linearization-bounds-2.pdf (linearization hint table, offset 1183): /S (shared object) offset is out of bounds
9 qpdf: operation succeeded with warnings 9 qpdf: operation succeeded with warnings
qpdf/qtest/qpdf/linearization-large-vector-alloc.out
@@ -5,5 +5,5 @@ File is linearized @@ -5,5 +5,5 @@ File is linearized
5 WARNING: linearization-large-vector-alloc.pdf (linearization hint stream: object 62 0, offset 1282): expected endstream 5 WARNING: linearization-large-vector-alloc.pdf (linearization hint stream: object 62 0, offset 1282): expected endstream
6 WARNING: linearization-large-vector-alloc.pdf (linearization hint stream: object 62 0, offset 1183): attempting to recover stream length 6 WARNING: linearization-large-vector-alloc.pdf (linearization hint stream: object 62 0, offset 1183): attempting to recover stream length
7 WARNING: linearization-large-vector-alloc.pdf (linearization hint stream: object 62 0, offset 1183): recovered stream length: 106 7 WARNING: linearization-large-vector-alloc.pdf (linearization hint stream: object 62 0, offset 1183): recovered stream length: 106
8 -WARNING: error encountered while checking linearization data: overflow reading bit stream: wanted = 12556; available = 968 8 +WARNING: linearization-large-vector-alloc.pdf: error encountered while checking linearization data: overflow reading bit stream: wanted = 12556; available = 968
9 qpdf: operation succeeded with warnings 9 qpdf: operation succeeded with warnings