Commit f45dacf4cbfab73ce470d0a61d4acee14206ab2b

Authored by Jay Berkenbilt
1 parent 0a71750e

Make recovery logic flexible about where objects end (fixes #573)

Don't assume endobj is at the beginning of the line. This means we are
looking at tokens for every line, but the odds of n n obj appearing in
the middle of the object are likely much lower than endobj not being
at the beginning of the line or missing entirely. This will probably
have a negative impact on recovery time for very large files.
Hopefully it will be worth it.
ChangeLog
  1 +2021-11-07 Jay Berkenbilt <ejb@ql.org>
  2 +
  3 + * Relax xref recovery logic a bit so that files whose objects are
  4 + either missing endobj or have endobj at other than the beginning
  5 + of a line can still be recovered. Fixes #573.
  6 +
1 7 2021-11-04 Jay Berkenbilt <ejb@ql.org>
2 8  
3 9 * Add support for OpenSSL 3. Fixes #568.
... ...
libqpdf/QPDF.cc
... ... @@ -590,7 +590,6 @@ QPDF::reconstruct_xref(QPDFExc&amp; e)
590 590 this->m->file->seek(0, SEEK_END);
591 591 qpdf_offset_t eof = this->m->file->tell();
592 592 this->m->file->seek(0, SEEK_SET);
593   - bool in_obj = false;
594 593 qpdf_offset_t line_start = 0;
595 594 // Don't allow very long tokens here during recovery.
596 595 static size_t const MAX_LEN = 100;
... ... @@ -604,46 +603,36 @@ QPDF::reconstruct_xref(QPDFExc&amp; e)
604 603 this->m->file->tell() - toO(t1.getValue().length());
605 604 if (token_start >= next_line_start)
606 605 {
607   - // don't process yet
  606 + // don't process yet -- wait until we get to the line
  607 + // containing this token
608 608 }
609   - else if (in_obj)
610   - {
611   - if (t1 == QPDFTokenizer::Token(QPDFTokenizer::tt_word, "endobj"))
612   - {
613   - in_obj = false;
614   - }
615   - }
616   - else
  609 + else if (t1.getType() == QPDFTokenizer::tt_integer)
617 610 {
618   - if (t1.getType() == QPDFTokenizer::tt_integer)
  611 + QPDFTokenizer::Token t2 =
  612 + readToken(this->m->file, MAX_LEN);
  613 + QPDFTokenizer::Token t3 =
  614 + readToken(this->m->file, MAX_LEN);
  615 + if ((t2.getType() == QPDFTokenizer::tt_integer) &&
  616 + (t3 == QPDFTokenizer::Token(QPDFTokenizer::tt_word, "obj")))
619 617 {
620   - QPDFTokenizer::Token t2 =
621   - readToken(this->m->file, MAX_LEN);
622   - QPDFTokenizer::Token t3 =
623   - readToken(this->m->file, MAX_LEN);
624   - if ((t2.getType() == QPDFTokenizer::tt_integer) &&
625   - (t3 == QPDFTokenizer::Token(QPDFTokenizer::tt_word, "obj")))
626   - {
627   - in_obj = true;
628   - int obj = QUtil::string_to_int(t1.getValue().c_str());
629   - int gen = QUtil::string_to_int(t2.getValue().c_str());
630   - insertXrefEntry(obj, 1, token_start, gen, true);
631   - }
  618 + int obj = QUtil::string_to_int(t1.getValue().c_str());
  619 + int gen = QUtil::string_to_int(t2.getValue().c_str());
  620 + insertXrefEntry(obj, 1, token_start, gen, true);
632 621 }
633   - else if ((! this->m->trailer.isInitialized()) &&
634   - (t1 == QPDFTokenizer::Token(
635   - QPDFTokenizer::tt_word, "trailer")))
636   - {
637   - QPDFObjectHandle t =
  622 + }
  623 + else if ((! this->m->trailer.isInitialized()) &&
  624 + (t1 == QPDFTokenizer::Token(
  625 + QPDFTokenizer::tt_word, "trailer")))
  626 + {
  627 + QPDFObjectHandle t =
638 628 readObject(this->m->file, "trailer", 0, 0, false);
639   - if (! t.isDictionary())
640   - {
641   - // Oh well. It was worth a try.
642   - }
643   - else
644   - {
645   - setTrailer(t);
646   - }
  629 + if (! t.isDictionary())
  630 + {
  631 + // Oh well. It was worth a try.
  632 + }
  633 + else
  634 + {
  635 + setTrailer(t);
647 636 }
648 637 }
649 638 this->m->file->seek(next_line_start, SEEK_SET);
... ...
qpdf/qtest/qpdf.test
... ... @@ -3193,7 +3193,7 @@ $td-&gt;runtest(&quot;integer type checks&quot;,
3193 3193 show_ntests();
3194 3194 # ----------
3195 3195 $td->notify("--- Recovery Tests ---");
3196   -$n_tests += @badfiles + 9;
  3196 +$n_tests += @badfiles + 11;
3197 3197  
3198 3198 # Recovery tests. These are mostly after-the-fact -- when recovery
3199 3199 # was implemented, some degree of recovery was possible on many of the
... ... @@ -3268,11 +3268,20 @@ $td-&gt;runtest(&quot;xref loop with append&quot;,
3268 3268 {$td->FILE => "append-xref-loop.out",
3269 3269 $td->EXIT_STATUS => 3},
3270 3270 $td->NORMALIZE_NEWLINES);
3271   -
3272 3271 $td->runtest("check output",
3273 3272 {$td->FILE => "a.pdf"},
3274 3273 {$td->FILE => "append-xref-loop-fixed.pdf"});
3275 3274  
  3275 +$td->runtest("endobj not at newline",
  3276 + {$td->COMMAND =>
  3277 + "qpdf --deterministic-id endobj-at-eol.pdf a.pdf"},
  3278 + {$td->FILE => "endobj-at-eol.out",
  3279 + $td->EXIT_STATUS => 3},
  3280 + $td->NORMALIZE_NEWLINES);
  3281 +$td->runtest("check output",
  3282 + {$td->FILE => "a.pdf"},
  3283 + {$td->FILE => "endobj-at-eol-fixed.pdf"});
  3284 +
3276 3285 show_ntests();
3277 3286 # ----------
3278 3287 $td->notify("--- Basic Parsing Tests ---");
... ...
qpdf/qtest/qpdf/endobj-at-eol-fixed.pdf 0 → 100644
No preview for this file type
qpdf/qtest/qpdf/endobj-at-eol.out 0 → 100644
  1 +WARNING: endobj-at-eol.pdf: file is damaged
  2 +WARNING: endobj-at-eol.pdf (offset 523): xref not found
  3 +WARNING: endobj-at-eol.pdf: Attempting to reconstruct cross-reference table
  4 +qpdf: operation succeeded with warnings; resulting file may have some problems
... ...
qpdf/qtest/qpdf/endobj-at-eol.pdf 0 → 100644
No preview for this file type
qpdf/qtest/qpdf/issue-202.out
... ... @@ -2,4 +2,5 @@ WARNING: issue-202.pdf (trailer, offset 55770): ignoring excessively deeply nest
2 2 WARNING: issue-202.pdf: file is damaged
3 3 WARNING: issue-202.pdf (offset 54769): expected trailer dictionary
4 4 WARNING: issue-202.pdf: Attempting to reconstruct cross-reference table
  5 +WARNING: issue-202.pdf (trailer, offset 55770): ignoring excessively deeply nested data structure
5 6 issue-202.pdf: unable to find trailer dictionary while recovering damaged file
... ...
qpdf/qtest/qpdf/issue-335a.out
... ... @@ -802,4 +802,515 @@ WARNING: issue-335a.pdf (trailer, offset 3589): unexpected )
802 802 WARNING: issue-335a.pdf (trailer, offset 3602): unknown token while reading object; treating as string
803 803 WARNING: issue-335a.pdf (trailer, offset 3610): unknown token while reading object; treating as string
804 804 WARNING: issue-335a.pdf (trailer, offset 3610): too many errors; giving up on reading object
805   -issue-335a.pdf: unable to find trailer dictionary while recovering damaged file
  805 +WARNING: issue-335a.pdf (trailer, offset 16485): unknown token while reading object; treating as string
  806 +WARNING: issue-335a.pdf (trailer, offset 16528): unknown token while reading object; treating as string
  807 +WARNING: issue-335a.pdf (trailer, offset 16529): treating unexpected brace token as null
  808 +WARNING: issue-335a.pdf (trailer, offset 16530): unknown token while reading object; treating as string
  809 +WARNING: issue-335a.pdf (trailer, offset 16545): unexpected )
  810 +WARNING: issue-335a.pdf (trailer, offset 16546): unknown token while reading object; treating as string
  811 +WARNING: issue-335a.pdf (trailer, offset 16546): too many errors; giving up on reading object
  812 +WARNING: issue-335a.pdf (trailer, offset 16498): unknown token while reading object; treating as string
  813 +WARNING: issue-335a.pdf (trailer, offset 16513): unexpected )
  814 +WARNING: issue-335a.pdf (trailer, offset 16528): unknown token while reading object; treating as string
  815 +WARNING: issue-335a.pdf (trailer, offset 16529): treating unexpected brace token as null
  816 +WARNING: issue-335a.pdf (trailer, offset 16530): unknown token while reading object; treating as string
  817 +WARNING: issue-335a.pdf (trailer, offset 16545): unexpected )
  818 +WARNING: issue-335a.pdf (trailer, offset 16545): too many errors; giving up on reading object
  819 +WARNING: issue-335a.pdf (trailer, offset 16511): unknown token while reading object; treating as string
  820 +WARNING: issue-335a.pdf (trailer, offset 16512): unexpected )
  821 +WARNING: issue-335a.pdf (trailer, offset 16513): unexpected )
  822 +WARNING: issue-335a.pdf (trailer, offset 16528): unknown token while reading object; treating as string
  823 +WARNING: issue-335a.pdf (trailer, offset 16529): treating unexpected brace token as null
  824 +WARNING: issue-335a.pdf (trailer, offset 16530): unknown token while reading object; treating as string
  825 +WARNING: issue-335a.pdf (trailer, offset 16530): too many errors; giving up on reading object
  826 +WARNING: issue-335a.pdf (trailer, offset 16526): unknown token while reading object; treating as string
  827 +WARNING: issue-335a.pdf (trailer, offset 16527): unexpected )
  828 +WARNING: issue-335a.pdf (trailer, offset 16528): unknown token while reading object; treating as string
  829 +WARNING: issue-335a.pdf (trailer, offset 16529): treating unexpected brace token as null
  830 +WARNING: issue-335a.pdf (trailer, offset 16530): unknown token while reading object; treating as string
  831 +WARNING: issue-335a.pdf (trailer, offset 16545): unexpected )
  832 +WARNING: issue-335a.pdf (trailer, offset 16545): too many errors; giving up on reading object
  833 +WARNING: issue-335a.pdf (trailer, offset 16543): unknown token while reading object; treating as string
  834 +WARNING: issue-335a.pdf (trailer, offset 16544): unexpected )
  835 +WARNING: issue-335a.pdf (trailer, offset 16545): unexpected )
  836 +WARNING: issue-335a.pdf (trailer, offset 16546): unknown token while reading object; treating as string
  837 +WARNING: issue-335a.pdf (trailer, offset 16547): treating unexpected brace token as null
  838 +WARNING: issue-335a.pdf (trailer, offset 16548): unknown token while reading object; treating as string
  839 +WARNING: issue-335a.pdf (trailer, offset 16548): too many errors; giving up on reading object
  840 +WARNING: issue-335a.pdf (trailer, offset 16561): unknown token while reading object; treating as string
  841 +WARNING: issue-335a.pdf (trailer, offset 16562): unexpected )
  842 +WARNING: issue-335a.pdf (trailer, offset 16563): unexpected )
  843 +WARNING: issue-335a.pdf (trailer, offset 16763): treating unexpected brace token as null
  844 +WARNING: issue-335a.pdf (trailer, offset 16764): unknown token while reading object; treating as string
  845 +WARNING: issue-335a.pdf (trailer, offset 16766): treating unexpected brace token as null
  846 +WARNING: issue-335a.pdf (trailer, offset 16766): too many errors; giving up on reading object
  847 +WARNING: issue-335a.pdf (trailer, offset 16575): unknown token while reading object; treating as string
  848 +WARNING: issue-335a.pdf (trailer, offset 16599): unknown token while reading object; treating as string
  849 +WARNING: issue-335a.pdf (trailer, offset 16613): unknown token while reading object; treating as string
  850 +WARNING: issue-335a.pdf (trailer, offset 16614): treating unexpected brace token as null
  851 +WARNING: issue-335a.pdf (trailer, offset 16615): unknown token while reading object; treating as string
  852 +WARNING: issue-335a.pdf (trailer, offset 16739): unexpected )
  853 +WARNING: issue-335a.pdf (trailer, offset 16763): treating unexpected brace token as null
  854 +WARNING: issue-335a.pdf (trailer, offset 16763): too many errors; giving up on reading object
  855 +WARNING: issue-335a.pdf (trailer, offset 16674): unknown token while reading object; treating as string
  856 +WARNING: issue-335a.pdf (trailer, offset 16717): unknown token while reading object; treating as string
  857 +WARNING: issue-335a.pdf (trailer, offset 16718): treating unexpected brace token as null
  858 +WARNING: issue-335a.pdf (trailer, offset 16719): unknown token while reading object; treating as string
  859 +WARNING: issue-335a.pdf (trailer, offset 16734): unexpected )
  860 +WARNING: issue-335a.pdf (trailer, offset 16739): unexpected )
  861 +WARNING: issue-335a.pdf (trailer, offset 16739): too many errors; giving up on reading object
  862 +WARNING: issue-335a.pdf (trailer, offset 16687): unknown token while reading object; treating as string
  863 +WARNING: issue-335a.pdf (trailer, offset 16702): unexpected )
  864 +WARNING: issue-335a.pdf (trailer, offset 16717): unknown token while reading object; treating as string
  865 +WARNING: issue-335a.pdf (trailer, offset 16718): treating unexpected brace token as null
  866 +WARNING: issue-335a.pdf (trailer, offset 16719): unknown token while reading object; treating as string
  867 +WARNING: issue-335a.pdf (trailer, offset 16734): unexpected )
  868 +WARNING: issue-335a.pdf (trailer, offset 16734): too many errors; giving up on reading object
  869 +WARNING: issue-335a.pdf (trailer, offset 16700): unknown token while reading object; treating as string
  870 +WARNING: issue-335a.pdf (trailer, offset 16701): unexpected )
  871 +WARNING: issue-335a.pdf (trailer, offset 16702): unexpected )
  872 +WARNING: issue-335a.pdf (trailer, offset 16717): unknown token while reading object; treating as string
  873 +WARNING: issue-335a.pdf (trailer, offset 16718): treating unexpected brace token as null
  874 +WARNING: issue-335a.pdf (trailer, offset 16719): unknown token while reading object; treating as string
  875 +WARNING: issue-335a.pdf (trailer, offset 16719): too many errors; giving up on reading object
  876 +WARNING: issue-335a.pdf (trailer, offset 16715): unknown token while reading object; treating as string
  877 +WARNING: issue-335a.pdf (trailer, offset 16716): unexpected )
  878 +WARNING: issue-335a.pdf (trailer, offset 16717): unknown token while reading object; treating as string
  879 +WARNING: issue-335a.pdf (trailer, offset 16718): treating unexpected brace token as null
  880 +WARNING: issue-335a.pdf (trailer, offset 16719): unknown token while reading object; treating as string
  881 +WARNING: issue-335a.pdf (trailer, offset 16734): unexpected )
  882 +WARNING: issue-335a.pdf (trailer, offset 16734): too many errors; giving up on reading object
  883 +WARNING: issue-335a.pdf (trailer, offset 16732): unknown token while reading object; treating as string
  884 +WARNING: issue-335a.pdf (trailer, offset 16733): unexpected )
  885 +WARNING: issue-335a.pdf (trailer, offset 16734): unexpected )
  886 +WARNING: issue-335a.pdf (trailer, offset 16739): unexpected )
  887 +WARNING: issue-335a.pdf (trailer, offset 16763): treating unexpected brace token as null
  888 +WARNING: issue-335a.pdf (trailer, offset 16764): unknown token while reading object; treating as string
  889 +WARNING: issue-335a.pdf (trailer, offset 16764): too many errors; giving up on reading object
  890 +WARNING: issue-335a.pdf (trailer, offset 16752): unknown token while reading object; treating as string
  891 +WARNING: issue-335a.pdf (trailer, offset 16761): unknown token while reading object; treating as string
  892 +WARNING: issue-335a.pdf (trailer, offset 16762): unexpected )
  893 +WARNING: issue-335a.pdf (trailer, offset 16763): treating unexpected brace token as null
  894 +WARNING: issue-335a.pdf (trailer, offset 16764): unknown token while reading object; treating as string
  895 +WARNING: issue-335a.pdf (trailer, offset 16766): treating unexpected brace token as null
  896 +WARNING: issue-335a.pdf (trailer, offset 16766): too many errors; giving up on reading object
  897 +WARNING: issue-335a.pdf (trailer, offset 16779): unknown token while reading object; treating as string
  898 +WARNING: issue-335a.pdf (trailer, offset 16782): unknown token while reading object; treating as string
  899 +WARNING: issue-335a.pdf (trailer, offset 16793): unknown token while reading object; treating as string
  900 +WARNING: issue-335a.pdf (trailer, offset 19808): unknown token while reading object; treating as string
  901 +WARNING: issue-335a.pdf (trailer, offset 19810): unknown token while reading object; treating as string
  902 +WARNING: issue-335a.pdf (trailer, offset 19872): name with stray # will not work with PDF >= 1.2
  903 +WARNING: issue-335a.pdf (trailer, offset 19875): unexpected )
  904 +WARNING: issue-335a.pdf (trailer, offset 19875): too many errors; giving up on reading object
  905 +WARNING: issue-335a.pdf (trailer, offset 16793): unknown token while reading object; treating as string
  906 +WARNING: issue-335a.pdf (trailer, offset 19808): unknown token while reading object; treating as string
  907 +WARNING: issue-335a.pdf (trailer, offset 19810): unknown token while reading object; treating as string
  908 +WARNING: issue-335a.pdf (trailer, offset 19872): name with stray # will not work with PDF >= 1.2
  909 +WARNING: issue-335a.pdf (trailer, offset 19875): unexpected )
  910 +WARNING: issue-335a.pdf (trailer, offset 19876): unexpected )
  911 +WARNING: issue-335a.pdf (trailer, offset 19956): unknown token while reading object; treating as string
  912 +WARNING: issue-335a.pdf (trailer, offset 19956): too many errors; giving up on reading object
  913 +WARNING: issue-335a.pdf (trailer, offset 16806): unknown token while reading object; treating as string
  914 +WARNING: issue-335a.pdf (trailer, offset 16821): unexpected )
  915 +WARNING: issue-335a.pdf (trailer, offset 19808): unknown token while reading object; treating as string
  916 +WARNING: issue-335a.pdf (trailer, offset 19810): unknown token while reading object; treating as string
  917 +WARNING: issue-335a.pdf (trailer, offset 19872): name with stray # will not work with PDF >= 1.2
  918 +WARNING: issue-335a.pdf (trailer, offset 19875): unexpected )
  919 +WARNING: issue-335a.pdf (trailer, offset 19876): unexpected )
  920 +WARNING: issue-335a.pdf (trailer, offset 19876): too many errors; giving up on reading object
  921 +WARNING: issue-335a.pdf (trailer, offset 16819): unknown token while reading object; treating as string
  922 +WARNING: issue-335a.pdf (trailer, offset 16820): unexpected )
  923 +WARNING: issue-335a.pdf (trailer, offset 16821): unexpected )
  924 +WARNING: issue-335a.pdf (trailer, offset 19808): unknown token while reading object; treating as string
  925 +WARNING: issue-335a.pdf (trailer, offset 19810): unknown token while reading object; treating as string
  926 +WARNING: issue-335a.pdf (trailer, offset 19872): name with stray # will not work with PDF >= 1.2
  927 +WARNING: issue-335a.pdf (trailer, offset 19875): unexpected )
  928 +WARNING: issue-335a.pdf (trailer, offset 19875): too many errors; giving up on reading object
  929 +WARNING: issue-335a.pdf (trailer, offset 19837): treating unexpected brace token as null
  930 +WARNING: issue-335a.pdf (trailer, offset 19838): unexpected )
  931 +WARNING: issue-335a.pdf (trailer, offset 19871): unexpected )
  932 +WARNING: issue-335a.pdf (trailer, offset 19872): name with stray # will not work with PDF >= 1.2
  933 +WARNING: issue-335a.pdf (trailer, offset 19875): unexpected )
  934 +WARNING: issue-335a.pdf (trailer, offset 19876): unexpected )
  935 +WARNING: issue-335a.pdf (trailer, offset 19956): unknown token while reading object; treating as string
  936 +WARNING: issue-335a.pdf (trailer, offset 19956): too many errors; giving up on reading object
  937 +WARNING: issue-335a.pdf (trailer, offset 19852): unknown token while reading object; treating as string
  938 +WARNING: issue-335a.pdf (trailer, offset 19869): unknown token while reading object; treating as string
  939 +WARNING: issue-335a.pdf (trailer, offset 19870): unexpected )
  940 +WARNING: issue-335a.pdf (trailer, offset 19871): unexpected )
  941 +WARNING: issue-335a.pdf (trailer, offset 19872): name with stray # will not work with PDF >= 1.2
  942 +WARNING: issue-335a.pdf (trailer, offset 19875): unexpected )
  943 +WARNING: issue-335a.pdf (trailer, offset 19876): unexpected )
  944 +WARNING: issue-335a.pdf (trailer, offset 19876): too many errors; giving up on reading object
  945 +WARNING: issue-335a.pdf (trailer, offset 19867): treating unexpected brace token as null
  946 +WARNING: issue-335a.pdf (trailer, offset 19868): unexpected )
  947 +WARNING: issue-335a.pdf (trailer, offset 19869): unknown token while reading object; treating as string
  948 +WARNING: issue-335a.pdf (trailer, offset 19870): unexpected )
  949 +WARNING: issue-335a.pdf (trailer, offset 19871): unexpected )
  950 +WARNING: issue-335a.pdf (trailer, offset 19872): name with stray # will not work with PDF >= 1.2
  951 +WARNING: issue-335a.pdf (trailer, offset 19875): unexpected )
  952 +WARNING: issue-335a.pdf (trailer, offset 19875): too many errors; giving up on reading object
  953 +WARNING: issue-335a.pdf (trailer, offset 19890): unknown token while reading object; treating as string
  954 +WARNING: issue-335a.pdf (trailer, offset 19906): unexpected )
  955 +WARNING: issue-335a.pdf (trailer, offset 19956): unknown token while reading object; treating as string
  956 +WARNING: issue-335a.pdf (trailer, offset 19959): unknown token while reading object; treating as string
  957 +WARNING: issue-335a.pdf (trailer, offset 19968): invalid character (t) in hexstring
  958 +WARNING: issue-335a.pdf (trailer, offset 19971): unknown token while reading object; treating as string
  959 +WARNING: issue-335a.pdf (trailer, offset 19971): too many errors; giving up on reading object
  960 +WARNING: issue-335a.pdf (trailer, offset 19904): treating unexpected brace token as null
  961 +WARNING: issue-335a.pdf (trailer, offset 19905): unexpected )
  962 +WARNING: issue-335a.pdf (trailer, offset 19906): unexpected )
  963 +WARNING: issue-335a.pdf (trailer, offset 19956): unknown token while reading object; treating as string
  964 +WARNING: issue-335a.pdf (trailer, offset 19959): unknown token while reading object; treating as string
  965 +WARNING: issue-335a.pdf (trailer, offset 19968): invalid character (t) in hexstring
  966 +WARNING: issue-335a.pdf (trailer, offset 19968): too many errors; giving up on reading object
  967 +WARNING: issue-335a.pdf (trailer, offset 19920): unknown token while reading object; treating as string
  968 +WARNING: issue-335a.pdf (trailer, offset 19954): unexpected )
  969 +WARNING: issue-335a.pdf (trailer, offset 19956): unknown token while reading object; treating as string
  970 +WARNING: issue-335a.pdf (trailer, offset 19959): unknown token while reading object; treating as string
  971 +WARNING: issue-335a.pdf (trailer, offset 19968): invalid character (t) in hexstring
  972 +WARNING: issue-335a.pdf (trailer, offset 19971): unknown token while reading object; treating as string
  973 +WARNING: issue-335a.pdf (trailer, offset 19971): too many errors; giving up on reading object
  974 +WARNING: issue-335a.pdf (trailer, offset 19968): invalid character (t) in hexstring
  975 +WARNING: issue-335a.pdf (trailer, offset 19971): unknown token while reading object; treating as string
  976 +WARNING: issue-335a.pdf (trailer, offset 20092): unknown token while reading object; treating as string
  977 +WARNING: issue-335a.pdf (trailer, offset 20103): unknown token while reading object; treating as string
  978 +WARNING: issue-335a.pdf (trailer, offset 20110): unknown token while reading object; treating as string
  979 +WARNING: issue-335a.pdf (trailer, offset 20114): unknown token while reading object; treating as string
  980 +WARNING: issue-335a.pdf (trailer, offset 20114): too many errors; giving up on reading object
  981 +WARNING: issue-335a.pdf (trailer, offset 20164): unexpected >
  982 +WARNING: issue-335a.pdf (trailer, offset 20170): unknown token while reading object; treating as string
  983 +WARNING: issue-335a.pdf (trailer, offset 20173): unknown token while reading object; treating as string
  984 +WARNING: issue-335a.pdf (trailer, offset 20186): unknown token while reading object; treating as string
  985 +WARNING: issue-335a.pdf (trailer, offset 20189): unknown token while reading object; treating as string
  986 +WARNING: issue-335a.pdf (trailer, offset 20219): unknown token while reading object; treating as string
  987 +WARNING: issue-335a.pdf (trailer, offset 20219): too many errors; giving up on reading object
  988 +WARNING: issue-335a.pdf (trailer, offset 20230): unknown token while reading object; treating as string
  989 +WARNING: issue-335a.pdf (trailer, offset 20232): unexpected )
  990 +WARNING: issue-335a.pdf (trailer, offset 20233): unexpected )
  991 +WARNING: issue-335a.pdf (trailer, offset 20234): unknown token while reading object; treating as string
  992 +WARNING: issue-335a.pdf (trailer, offset 20236): invalid character ({) in hexstring
  993 +WARNING: issue-335a.pdf (trailer, offset 20238): treating unexpected brace token as null
  994 +WARNING: issue-335a.pdf (trailer, offset 20238): too many errors; giving up on reading object
  995 +WARNING: issue-335a.pdf (trailer, offset 20424): unknown token while reading object; treating as string
  996 +WARNING: issue-335a.pdf (trailer, offset 20431): unknown token while reading object; treating as string
  997 +WARNING: issue-335a.pdf (trailer, offset 20446): unknown token while reading object; treating as string
  998 +WARNING: issue-335a.pdf (trailer, offset 20601): unexpected )
  999 +WARNING: issue-335a.pdf (trailer, offset 20602): unknown token while reading object; treating as string
  1000 +WARNING: issue-335a.pdf (trailer, offset 20604): invalid character ({) in hexstring
  1001 +WARNING: issue-335a.pdf (trailer, offset 20604): too many errors; giving up on reading object
  1002 +WARNING: issue-335a.pdf (trailer, offset 20446): unknown token while reading object; treating as string
  1003 +WARNING: issue-335a.pdf (trailer, offset 20601): unexpected )
  1004 +WARNING: issue-335a.pdf (trailer, offset 20602): unknown token while reading object; treating as string
  1005 +WARNING: issue-335a.pdf (trailer, offset 20604): invalid character ({) in hexstring
  1006 +WARNING: issue-335a.pdf (trailer, offset 20606): treating unexpected brace token as null
  1007 +WARNING: issue-335a.pdf (trailer, offset 20607): treating unexpected brace token as null
  1008 +WARNING: issue-335a.pdf (trailer, offset 20607): too many errors; giving up on reading object
  1009 +WARNING: issue-335a.pdf (trailer, offset 20598): unknown token while reading object; treating as string
  1010 +WARNING: issue-335a.pdf (trailer, offset 20600): unexpected )
  1011 +WARNING: issue-335a.pdf (trailer, offset 20601): unexpected )
  1012 +WARNING: issue-335a.pdf (trailer, offset 20602): unknown token while reading object; treating as string
  1013 +WARNING: issue-335a.pdf (trailer, offset 20604): invalid character ({) in hexstring
  1014 +WARNING: issue-335a.pdf (trailer, offset 20606): treating unexpected brace token as null
  1015 +WARNING: issue-335a.pdf (trailer, offset 20606): too many errors; giving up on reading object
  1016 +WARNING: issue-335a.pdf (trailer, offset 20684): unknown token while reading object; treating as string
  1017 +WARNING: issue-335a.pdf (trailer, offset 20683): expected dictionary key but found non-name object; inserting key /QPDFFake1
  1018 +WARNING: issue-335a.pdf (trailer, offset 20748): stream keyword followed by extraneous whitespace
  1019 +WARNING: issue-335a.pdf (trailer, offset 20679): stream dictionary lacks /Length key
  1020 +WARNING: issue-335a.pdf (trailer, offset 20749): attempting to recover stream length
  1021 +WARNING: issue-335a.pdf (trailer, offset 20749): unable to recover stream data; treating stream as empty
  1022 +WARNING: issue-335a.pdf (trailer, offset 20756): /Length key in stream dictionary is not an integer
  1023 +WARNING: issue-335a.pdf (trailer, offset 20787): attempting to recover stream length
  1024 +WARNING: issue-335a.pdf (trailer, offset 20787): unable to recover stream data; treating stream as empty
  1025 +WARNING: issue-335a.pdf (trailer, offset 20812): unknown token while reading object; treating as string
  1026 +WARNING: issue-335a.pdf (trailer, offset 20803): expected dictionary key but found non-name object; inserting key /QPDFFake1
  1027 +WARNING: issue-335a.pdf (trailer, offset 20803): dictionary has duplicated key /Length; last occurrence overrides earlier ones
  1028 +WARNING: issue-335a.pdf (trailer, offset 20843): stream keyword followed by extraneous whitespace
  1029 +WARNING: issue-335a.pdf (trailer, offset 20800): /Length key in stream dictionary is not an integer
  1030 +WARNING: issue-335a.pdf (trailer, offset 20844): attempting to recover stream length
  1031 +WARNING: issue-335a.pdf (trailer, offset 20844): unable to recover stream data; treating stream as empty
  1032 +WARNING: issue-335a.pdf (trailer, offset 20851): /Length key in stream dictionary is not an integer
  1033 +WARNING: issue-335a.pdf (trailer, offset 20882): attempting to recover stream length
  1034 +WARNING: issue-335a.pdf (trailer, offset 20882): unable to recover stream data; treating stream as empty
  1035 +WARNING: issue-335a.pdf (trailer, offset 20914): unknown token while reading object; treating as string
  1036 +WARNING: issue-335a.pdf (trailer, offset 20898): expected dictionary key but found non-name object; inserting key /QPDFFake1
  1037 +WARNING: issue-335a.pdf (trailer, offset 20895): /Length key in stream dictionary is not an integer
  1038 +WARNING: issue-335a.pdf (trailer, offset 20929): attempting to recover stream length
  1039 +WARNING: issue-335a.pdf (trailer, offset 20929): unable to recover stream data; treating stream as empty
  1040 +WARNING: issue-335a.pdf (trailer, offset 20949): unexpected >
  1041 +WARNING: issue-335a.pdf (trailer, offset 20957): unexpected >
  1042 +WARNING: issue-335a.pdf (trailer, offset 20958): unknown token while reading object; treating as string
  1043 +WARNING: issue-335a.pdf (trailer, offset 20960): unexpected >
  1044 +WARNING: issue-335a.pdf (trailer, offset 20961): unknown token while reading object; treating as string
  1045 +WARNING: issue-335a.pdf (trailer, offset 20972): treating unexpected brace token as null
  1046 +WARNING: issue-335a.pdf (trailer, offset 20973): unexpected )
  1047 +WARNING: issue-335a.pdf (trailer, offset 20973): too many errors; giving up on reading object
  1048 +WARNING: issue-335a.pdf (trailer, offset 21042): unknown token while reading object; treating as string
  1049 +WARNING: issue-335a.pdf (trailer, offset 21026): expected dictionary key but found non-name object; inserting key /QPDFFake1
  1050 +WARNING: issue-335a.pdf (trailer, offset 21023): /Length key in stream dictionary is not an integer
  1051 +WARNING: issue-335a.pdf (trailer, offset 21057): attempting to recover stream length
  1052 +WARNING: issue-335a.pdf (trailer, offset 21057): unable to recover stream data; treating stream as empty
  1053 +WARNING: issue-335a.pdf (trailer, offset 21077): unexpected >
  1054 +WARNING: issue-335a.pdf (trailer, offset 21085): unexpected >
  1055 +WARNING: issue-335a.pdf (trailer, offset 21086): unknown token while reading object; treating as string
  1056 +WARNING: issue-335a.pdf (trailer, offset 21088): unexpected >
  1057 +WARNING: issue-335a.pdf (trailer, offset 21089): unknown token while reading object; treating as string
  1058 +WARNING: issue-335a.pdf (trailer, offset 21100): treating unexpected brace token as null
  1059 +WARNING: issue-335a.pdf (trailer, offset 21101): unexpected )
  1060 +WARNING: issue-335a.pdf (trailer, offset 21101): too many errors; giving up on reading object
  1061 +WARNING: issue-335a.pdf (trailer, offset 21118): unknown token while reading object; treating as string
  1062 +WARNING: issue-335a.pdf (trailer, offset 21158): unexpected )
  1063 +WARNING: issue-335a.pdf (trailer, offset 21202): unknown token while reading object; treating as string
  1064 +WARNING: issue-335a.pdf (trailer, offset 21205): treating unexpected brace token as null
  1065 +WARNING: issue-335a.pdf (trailer, offset 21207): unknown token while reading object; treating as string
  1066 +WARNING: issue-335a.pdf (trailer, offset 21212): unknown token while reading object; treating as string
  1067 +WARNING: issue-335a.pdf (trailer, offset 21212): too many errors; giving up on reading object
  1068 +WARNING: issue-335a.pdf (trailer, offset 21132): unknown token while reading object; treating as string
  1069 +WARNING: issue-335a.pdf (trailer, offset 21138): unknown token while reading object; treating as string
  1070 +WARNING: issue-335a.pdf (trailer, offset 21156): unknown token while reading object; treating as string
  1071 +WARNING: issue-335a.pdf (trailer, offset 21157): unexpected )
  1072 +WARNING: issue-335a.pdf (trailer, offset 21158): unexpected )
  1073 +WARNING: issue-335a.pdf (trailer, offset 21202): unknown token while reading object; treating as string
  1074 +WARNING: issue-335a.pdf (trailer, offset 21202): too many errors; giving up on reading object
  1075 +WARNING: issue-335a.pdf (trailer, offset 21154): treating unexpected brace token as null
  1076 +WARNING: issue-335a.pdf (trailer, offset 21155): unexpected )
  1077 +WARNING: issue-335a.pdf (trailer, offset 21156): unknown token while reading object; treating as string
  1078 +WARNING: issue-335a.pdf (trailer, offset 21157): unexpected )
  1079 +WARNING: issue-335a.pdf (trailer, offset 21158): unexpected )
  1080 +WARNING: issue-335a.pdf (trailer, offset 21202): unknown token while reading object; treating as string
  1081 +WARNING: issue-335a.pdf (trailer, offset 21202): too many errors; giving up on reading object
  1082 +WARNING: issue-335a.pdf (trailer, offset 21172): unknown token while reading object; treating as string
  1083 +WARNING: issue-335a.pdf (trailer, offset 21199): unknown token while reading object; treating as string
  1084 +WARNING: issue-335a.pdf (trailer, offset 21201): unexpected )
  1085 +WARNING: issue-335a.pdf (trailer, offset 21202): unknown token while reading object; treating as string
  1086 +WARNING: issue-335a.pdf (trailer, offset 21205): treating unexpected brace token as null
  1087 +WARNING: issue-335a.pdf (trailer, offset 21207): unknown token while reading object; treating as string
  1088 +WARNING: issue-335a.pdf (trailer, offset 21207): too many errors; giving up on reading object
  1089 +WARNING: issue-335a.pdf (trailer, offset 21228): treating unexpected brace token as null
  1090 +WARNING: issue-335a.pdf (trailer, offset 21229): unexpected )
  1091 +WARNING: issue-335a.pdf (trailer, offset 21230): unknown token while reading object; treating as string
  1092 +WARNING: issue-335a.pdf (trailer, offset 21262): unknown token while reading object; treating as string
  1093 +WARNING: issue-335a.pdf (trailer, offset 21267): unknown token while reading object; treating as string
  1094 +WARNING: issue-335a.pdf (trailer, offset 21277): unknown token while reading object; treating as string
  1095 +WARNING: issue-335a.pdf (trailer, offset 21277): too many errors; giving up on reading object
  1096 +WARNING: issue-335a.pdf (trailer, offset 21277): unknown token while reading object; treating as string
  1097 +WARNING: issue-335a.pdf (trailer, offset 21287): unknown token while reading object; treating as string
  1098 +WARNING: issue-335a.pdf (trailer, offset 21389): unexpected dictionary close token
  1099 +WARNING: issue-335a.pdf (trailer, offset 21392): unknown token while reading object; treating as string
  1100 +WARNING: issue-335a.pdf (trailer, offset 21400): unknown token while reading object; treating as string
  1101 +WARNING: issue-335a.pdf (trailer, offset 21430): unknown token while reading object; treating as string
  1102 +WARNING: issue-335a.pdf (trailer, offset 21438): unknown token while reading object; treating as string
  1103 +WARNING: issue-335a.pdf (trailer, offset 21441): unknown token while reading object; treating as string
  1104 +WARNING: issue-335a.pdf (trailer, offset 21444): unknown token while reading object; treating as string
  1105 +WARNING: issue-335a.pdf (trailer, offset 21452): invalid character (-) in hexstring
  1106 +WARNING: issue-335a.pdf (trailer, offset 21819): unknown token while reading object; treating as string
  1107 +WARNING: issue-335a.pdf (trailer, offset 21819): too many errors; giving up on reading object
  1108 +WARNING: issue-335a.pdf (trailer, offset 21287): unknown token while reading object; treating as string
  1109 +WARNING: issue-335a.pdf (trailer, offset 21389): unexpected dictionary close token
  1110 +WARNING: issue-335a.pdf (trailer, offset 21392): unknown token while reading object; treating as string
  1111 +WARNING: issue-335a.pdf (trailer, offset 21400): unknown token while reading object; treating as string
  1112 +WARNING: issue-335a.pdf (trailer, offset 21430): unknown token while reading object; treating as string
  1113 +WARNING: issue-335a.pdf (trailer, offset 21438): unknown token while reading object; treating as string
  1114 +WARNING: issue-335a.pdf (trailer, offset 21441): unknown token while reading object; treating as string
  1115 +WARNING: issue-335a.pdf (trailer, offset 21444): unknown token while reading object; treating as string
  1116 +WARNING: issue-335a.pdf (trailer, offset 21452): invalid character (-) in hexstring
  1117 +WARNING: issue-335a.pdf (trailer, offset 21819): unknown token while reading object; treating as string
  1118 +WARNING: issue-335a.pdf (trailer, offset 21819): too many errors; giving up on reading object
  1119 +WARNING: issue-335a.pdf (trailer, offset 21407): /Length key in stream dictionary is not an integer
  1120 +WARNING: issue-335a.pdf (trailer, offset 21438): attempting to recover stream length
  1121 +WARNING: issue-335a.pdf (trailer, offset 21438): unable to recover stream data; treating stream as empty
  1122 +WARNING: issue-335a.pdf (trailer, offset 21452): invalid character (-) in hexstring
  1123 +WARNING: issue-335a.pdf (trailer, offset 21837): unknown token while reading object; treating as string
  1124 +WARNING: issue-335a.pdf (trailer, offset 21850): expected dictionary key but found non-name object; inserting key /QPDFFake1
  1125 +WARNING: issue-335a.pdf (trailer, offset 21892): unknown token while reading object; treating as string
  1126 +WARNING: issue-335a.pdf (trailer, offset 21900): unknown token while reading object; treating as string
  1127 +WARNING: issue-335a.pdf (trailer, offset 21903): unknown token while reading object; treating as string
  1128 +WARNING: issue-335a.pdf (trailer, offset 21906): unknown token while reading object; treating as string
  1129 +WARNING: issue-335a.pdf (trailer, offset 21918): unknown token while reading object; treating as string
  1130 +WARNING: issue-335a.pdf (trailer, offset 21925): unknown token while reading object; treating as string
  1131 +WARNING: issue-335a.pdf (trailer, offset 21925): too many errors; giving up on reading object
  1132 +WARNING: issue-335a.pdf (trailer, offset 21918): unknown token while reading object; treating as string
  1133 +WARNING: issue-335a.pdf (trailer, offset 21925): unknown token while reading object; treating as string
  1134 +WARNING: issue-335a.pdf (trailer, offset 21937): unknown token while reading object; treating as string
  1135 +WARNING: issue-335a.pdf (trailer, offset 21962): unknown token while reading object; treating as string
  1136 +WARNING: issue-335a.pdf (trailer, offset 21991): unknown token while reading object; treating as string
  1137 +WARNING: issue-335a.pdf (trailer, offset 22000): invalid character (t) in hexstring
  1138 +WARNING: issue-335a.pdf (trailer, offset 22003): unknown token while reading object; treating as string
  1139 +WARNING: issue-335a.pdf (trailer, offset 22028): unexpected >
  1140 +WARNING: issue-335a.pdf (trailer, offset 22030): unknown token while reading object; treating as string
  1141 +WARNING: issue-335a.pdf (trailer, offset 22038): unknown token while reading object; treating as string
  1142 +WARNING: issue-335a.pdf (trailer, offset 21936): expected dictionary key but found non-name object; inserting key /QPDFFake1
  1143 +WARNING: issue-335a.pdf (trailer, offset 21936): expected dictionary key but found non-name object; inserting key /QPDFFake2
  1144 +WARNING: issue-335a.pdf (trailer, offset 21936): expected dictionary key but found non-name object; inserting key /QPDFFake3
  1145 +WARNING: issue-335a.pdf (trailer, offset 21936): expected dictionary key but found non-name object; inserting key /QPDFFake4
  1146 +WARNING: issue-335a.pdf (trailer, offset 21936): expected dictionary key but found non-name object; inserting key /QPDFFake5
  1147 +WARNING: issue-335a.pdf (trailer, offset 21936): expected dictionary key but found non-name object; inserting key /QPDFFake6
  1148 +WARNING: issue-335a.pdf (trailer, offset 21936): dictionary has duplicated key /Length; last occurrence overrides earlier ones
  1149 +WARNING: issue-335a.pdf (trailer, offset 21936): expected dictionary key but found non-name object; inserting key /QPDFFake7
  1150 +WARNING: issue-335a.pdf (trailer, offset 21936): expected dictionary key but found non-name object; inserting key /QPDFFake8
  1151 +WARNING: issue-335a.pdf (trailer, offset 21936): expected dictionary key but found non-name object; inserting key /QPDFFake9
  1152 +WARNING: issue-335a.pdf (trailer, offset 22044): unknown token while reading object; treating as string
  1153 +WARNING: issue-335a.pdf (trailer, offset 22052): unknown token while reading object; treating as string
  1154 +WARNING: issue-335a.pdf (trailer, offset 22064): unknown token while reading object; treating as string
  1155 +WARNING: issue-335a.pdf (trailer, offset 22064): too many errors; giving up on reading object
  1156 +WARNING: issue-335a.pdf (trailer, offset 21937): unknown token while reading object; treating as string
  1157 +WARNING: issue-335a.pdf (trailer, offset 21962): unknown token while reading object; treating as string
  1158 +WARNING: issue-335a.pdf (trailer, offset 21991): unknown token while reading object; treating as string
  1159 +WARNING: issue-335a.pdf (trailer, offset 22000): invalid character (t) in hexstring
  1160 +WARNING: issue-335a.pdf (trailer, offset 22003): unknown token while reading object; treating as string
  1161 +WARNING: issue-335a.pdf (trailer, offset 22028): unexpected >
  1162 +WARNING: issue-335a.pdf (trailer, offset 22030): unknown token while reading object; treating as string
  1163 +WARNING: issue-335a.pdf (trailer, offset 22038): unknown token while reading object; treating as string
  1164 +WARNING: issue-335a.pdf (trailer, offset 21936): expected dictionary key but found non-name object; inserting key /QPDFFake1
  1165 +WARNING: issue-335a.pdf (trailer, offset 21936): expected dictionary key but found non-name object; inserting key /QPDFFake2
  1166 +WARNING: issue-335a.pdf (trailer, offset 21936): expected dictionary key but found non-name object; inserting key /QPDFFake3
  1167 +WARNING: issue-335a.pdf (trailer, offset 21936): expected dictionary key but found non-name object; inserting key /QPDFFake4
  1168 +WARNING: issue-335a.pdf (trailer, offset 21936): expected dictionary key but found non-name object; inserting key /QPDFFake5
  1169 +WARNING: issue-335a.pdf (trailer, offset 21936): expected dictionary key but found non-name object; inserting key /QPDFFake6
  1170 +WARNING: issue-335a.pdf (trailer, offset 21936): dictionary has duplicated key /Length; last occurrence overrides earlier ones
  1171 +WARNING: issue-335a.pdf (trailer, offset 21936): expected dictionary key but found non-name object; inserting key /QPDFFake7
  1172 +WARNING: issue-335a.pdf (trailer, offset 21936): expected dictionary key but found non-name object; inserting key /QPDFFake8
  1173 +WARNING: issue-335a.pdf (trailer, offset 21936): expected dictionary key but found non-name object; inserting key /QPDFFake9
  1174 +WARNING: issue-335a.pdf (trailer, offset 21932): /Length key in stream dictionary is not an integer
  1175 +WARNING: issue-335a.pdf (trailer, offset 22052): attempting to recover stream length
  1176 +WARNING: issue-335a.pdf (trailer, offset 22052): unable to recover stream data; treating stream as empty
  1177 +WARNING: issue-335a.pdf (trailer, offset 22000): invalid character (t) in hexstring
  1178 +WARNING: issue-335a.pdf (trailer, offset 22088): unknown token while reading object; treating as string
  1179 +WARNING: issue-335a.pdf (trailer, offset 22087): expected dictionary key but found non-name object; inserting key /QPDFFake1
  1180 +WARNING: issue-335a.pdf (trailer, offset 22083): /Length key in stream dictionary is not an integer
  1181 +WARNING: issue-335a.pdf (trailer, offset 22136): attempting to recover stream length
  1182 +WARNING: issue-335a.pdf (trailer, offset 22136): unable to recover stream data; treating stream as empty
  1183 +WARNING: issue-335a.pdf (trailer, offset 22178): unknown token while reading object; treating as string
  1184 +WARNING: issue-335a.pdf (trailer, offset 22190): unknown token while reading object; treating as string
  1185 +WARNING: issue-335a.pdf (trailer, offset 22202): unknown token while reading object; treating as string
  1186 +WARNING: issue-335a.pdf (trailer, offset 22218): unknown token while reading object; treating as string
  1187 +WARNING: issue-335a.pdf (trailer, offset 22201): expected dictionary key but found non-name object; inserting key /QPDFFake1
  1188 +WARNING: issue-335a.pdf (trailer, offset 22201): expected dictionary key but found non-name object; inserting key /QPDFFake2
  1189 +WARNING: issue-335a.pdf (trailer, offset 22230): unknown token while reading object; treating as string
  1190 +WARNING: issue-335a.pdf (trailer, offset 22238): unknown token while reading object; treating as string
  1191 +WARNING: issue-335a.pdf (trailer, offset 22177): expected dictionary key but found non-name object; inserting key /QPDFFake1
  1192 +WARNING: issue-335a.pdf (trailer, offset 22177): expected dictionary key but found non-name object; inserting key /QPDFFake2
  1193 +WARNING: issue-335a.pdf (trailer, offset 22177): expected dictionary key but found non-name object; inserting key /QPDFFake3
  1194 +WARNING: issue-335a.pdf (trailer, offset 22177): expected dictionary key but found non-name object; inserting key /QPDFFake4
  1195 +WARNING: issue-335a.pdf (trailer, offset 22177): expected dictionary key but found non-name object; inserting key /QPDFFake5
  1196 +WARNING: issue-335a.pdf (trailer, offset 22276): stream keyword followed by carriage return only
  1197 +WARNING: issue-335a.pdf (trailer, offset 22173): /Length key in stream dictionary is not an integer
  1198 +WARNING: issue-335a.pdf (trailer, offset 22276): attempting to recover stream length
  1199 +WARNING: issue-335a.pdf (trailer, offset 22276): unable to recover stream data; treating stream as empty
  1200 +WARNING: issue-335a.pdf (trailer, offset 22202): unknown token while reading object; treating as string
  1201 +WARNING: issue-335a.pdf (trailer, offset 22218): unknown token while reading object; treating as string
  1202 +WARNING: issue-335a.pdf (trailer, offset 22201): expected dictionary key but found non-name object; inserting key /QPDFFake1
  1203 +WARNING: issue-335a.pdf (trailer, offset 22201): expected dictionary key but found non-name object; inserting key /QPDFFake2
  1204 +WARNING: issue-335a.pdf (trailer, offset 22197): stream dictionary lacks /Length key
  1205 +WARNING: issue-335a.pdf (trailer, offset 22238): attempting to recover stream length
  1206 +WARNING: issue-335a.pdf (trailer, offset 22238): unable to recover stream data; treating stream as empty
  1207 +WARNING: issue-335a.pdf (trailer, offset 22327): unknown token while reading object; treating as string
  1208 +WARNING: issue-335a.pdf (trailer, offset 22336): unknown token while reading object; treating as string
  1209 +WARNING: issue-335a.pdf (trailer, offset 22338): unknown token while reading object; treating as string
  1210 +WARNING: issue-335a.pdf (trailer, offset 22355): unknown token while reading object; treating as string
  1211 +WARNING: issue-335a.pdf (trailer, offset 22360): unknown token while reading object; treating as string
  1212 +WARNING: issue-335a.pdf (trailer, offset 22326): expected dictionary key but found non-name object; inserting key /QPDFFake1
  1213 +WARNING: issue-335a.pdf (trailer, offset 22326): expected dictionary key but found non-name object; inserting key /QPDFFake2
  1214 +WARNING: issue-335a.pdf (trailer, offset 22326): expected dictionary key but found non-name object; inserting key /QPDFFake3
  1215 +WARNING: issue-335a.pdf (trailer, offset 22326): expected dictionary key but found non-name object; inserting key /QPDFFake4
  1216 +WARNING: issue-335a.pdf (trailer, offset 22326): expected dictionary key but found non-name object; inserting key /QPDFFake5
  1217 +WARNING: issue-335a.pdf (trailer, offset 22322): /Length key in stream dictionary is not an integer
  1218 +WARNING: issue-335a.pdf (trailer, offset 22373): attempting to recover stream length
  1219 +WARNING: issue-335a.pdf (trailer, offset 22373): unable to recover stream data; treating stream as empty
  1220 +WARNING: issue-335a.pdf (trailer, offset 22437): unknown token while reading object; treating as string
  1221 +WARNING: issue-335a.pdf (trailer, offset 22436): expected dictionary key but found non-name object; inserting key /QPDFFake1
  1222 +WARNING: issue-335a.pdf (trailer, offset 22432): /Length key in stream dictionary is not an integer
  1223 +WARNING: issue-335a.pdf (trailer, offset 22484): attempting to recover stream length
  1224 +WARNING: issue-335a.pdf (trailer, offset 22484): unable to recover stream data; treating stream as empty
  1225 +WARNING: issue-335a.pdf (trailer, offset 22650): unknown token while reading object; treating as string
  1226 +WARNING: issue-335a.pdf (trailer, offset 22656): unknown token while reading object; treating as string
  1227 +WARNING: issue-335a.pdf (trailer, offset 22675): unknown token while reading object; treating as string
  1228 +WARNING: issue-335a.pdf (trailer, offset 22687): unknown token while reading object; treating as string
  1229 +WARNING: issue-335a.pdf (trailer, offset 22690): unknown token while reading object; treating as string
  1230 +WARNING: issue-335a.pdf (trailer, offset 22702): unknown token while reading object; treating as string
  1231 +WARNING: issue-335a.pdf (trailer, offset 22701): expected dictionary key but found non-name object; inserting key /QPDFFake1
  1232 +WARNING: issue-335a.pdf (trailer, offset 22740): unknown token while reading object; treating as string
  1233 +WARNING: issue-335a.pdf (trailer, offset 22748): unknown token while reading object; treating as string
  1234 +WARNING: issue-335a.pdf (trailer, offset 22761): unknown token while reading object; treating as string
  1235 +WARNING: issue-335a.pdf (trailer, offset 22791): unknown token while reading object; treating as string
  1236 +WARNING: issue-335a.pdf (trailer, offset 22794): unexpected >
  1237 +WARNING: issue-335a.pdf (trailer, offset 22796): unknown token while reading object; treating as string
  1238 +WARNING: issue-335a.pdf (trailer, offset 22804): unknown token while reading object; treating as string
  1239 +WARNING: issue-335a.pdf (trailer, offset 22686): expected dictionary key but found non-name object; inserting key /QPDFFake1
  1240 +WARNING: issue-335a.pdf (trailer, offset 22686): expected dictionary key but found non-name object; inserting key /QPDFFake2
  1241 +WARNING: issue-335a.pdf (trailer, offset 22686): expected dictionary key but found non-name object; inserting key /QPDFFake3
  1242 +WARNING: issue-335a.pdf (trailer, offset 22686): expected dictionary key but found non-name object; inserting key /QPDFFake4
  1243 +WARNING: issue-335a.pdf (trailer, offset 22686): expected dictionary key but found non-name object; inserting key /QPDFFake5
  1244 +WARNING: issue-335a.pdf (trailer, offset 22686): expected dictionary key but found non-name object; inserting key /QPDFFake6
  1245 +WARNING: issue-335a.pdf (trailer, offset 22686): expected dictionary key but found non-name object; inserting key /QPDFFake7
  1246 +WARNING: issue-335a.pdf (trailer, offset 22686): expected dictionary key but found non-name object; inserting key /QPDFFake8
  1247 +WARNING: issue-335a.pdf (trailer, offset 22686): expected dictionary key but found non-name object; inserting key /QPDFFake9
  1248 +WARNING: issue-335a.pdf (trailer, offset 22686): expected dictionary key but found non-name object; inserting key /QPDFFake10
  1249 +WARNING: issue-335a.pdf (trailer, offset 22686): expected dictionary key but found non-name object; inserting key /QPDFFake11
  1250 +WARNING: issue-335a.pdf (trailer, offset 22810): unknown token while reading object; treating as string
  1251 +WARNING: issue-335a.pdf (trailer, offset 22817): unknown token while reading object; treating as string
  1252 +WARNING: issue-335a.pdf (trailer, offset 22817): too many errors; giving up on reading object
  1253 +WARNING: issue-335a.pdf (trailer, offset 22687): unknown token while reading object; treating as string
  1254 +WARNING: issue-335a.pdf (trailer, offset 22690): unknown token while reading object; treating as string
  1255 +WARNING: issue-335a.pdf (trailer, offset 22702): unknown token while reading object; treating as string
  1256 +WARNING: issue-335a.pdf (trailer, offset 22701): expected dictionary key but found non-name object; inserting key /QPDFFake1
  1257 +WARNING: issue-335a.pdf (trailer, offset 22740): unknown token while reading object; treating as string
  1258 +WARNING: issue-335a.pdf (trailer, offset 22748): unknown token while reading object; treating as string
  1259 +WARNING: issue-335a.pdf (trailer, offset 22761): unknown token while reading object; treating as string
  1260 +WARNING: issue-335a.pdf (trailer, offset 22791): unknown token while reading object; treating as string
  1261 +WARNING: issue-335a.pdf (trailer, offset 22794): unexpected >
  1262 +WARNING: issue-335a.pdf (trailer, offset 22796): unknown token while reading object; treating as string
  1263 +WARNING: issue-335a.pdf (trailer, offset 22804): unknown token while reading object; treating as string
  1264 +WARNING: issue-335a.pdf (trailer, offset 22686): expected dictionary key but found non-name object; inserting key /QPDFFake1
  1265 +WARNING: issue-335a.pdf (trailer, offset 22686): expected dictionary key but found non-name object; inserting key /QPDFFake2
  1266 +WARNING: issue-335a.pdf (trailer, offset 22686): expected dictionary key but found non-name object; inserting key /QPDFFake3
  1267 +WARNING: issue-335a.pdf (trailer, offset 22686): expected dictionary key but found non-name object; inserting key /QPDFFake4
  1268 +WARNING: issue-335a.pdf (trailer, offset 22686): expected dictionary key but found non-name object; inserting key /QPDFFake5
  1269 +WARNING: issue-335a.pdf (trailer, offset 22686): expected dictionary key but found non-name object; inserting key /QPDFFake6
  1270 +WARNING: issue-335a.pdf (trailer, offset 22686): expected dictionary key but found non-name object; inserting key /QPDFFake7
  1271 +WARNING: issue-335a.pdf (trailer, offset 22686): expected dictionary key but found non-name object; inserting key /QPDFFake8
  1272 +WARNING: issue-335a.pdf (trailer, offset 22686): expected dictionary key but found non-name object; inserting key /QPDFFake9
  1273 +WARNING: issue-335a.pdf (trailer, offset 22686): expected dictionary key but found non-name object; inserting key /QPDFFake10
  1274 +WARNING: issue-335a.pdf (trailer, offset 22686): expected dictionary key but found non-name object; inserting key /QPDFFake11
  1275 +WARNING: issue-335a.pdf (trailer, offset 22817): stream keyword followed by carriage return only
  1276 +WARNING: issue-335a.pdf (trailer, offset 22682): stream dictionary lacks /Length key
  1277 +WARNING: issue-335a.pdf (trailer, offset 22817): attempting to recover stream length
  1278 +WARNING: issue-335a.pdf (trailer, offset 22817): unable to recover stream data; treating stream as empty
  1279 +WARNING: issue-335a.pdf (trailer, offset 22702): unknown token while reading object; treating as string
  1280 +WARNING: issue-335a.pdf (trailer, offset 22701): expected dictionary key but found non-name object; inserting key /QPDFFake1
  1281 +WARNING: issue-335a.pdf (trailer, offset 22697): /Length key in stream dictionary is not an integer
  1282 +WARNING: issue-335a.pdf (trailer, offset 22748): attempting to recover stream length
  1283 +WARNING: issue-335a.pdf (trailer, offset 22748): unable to recover stream data; treating stream as empty
  1284 +WARNING: issue-335a.pdf (trailer, offset 22845): unknown token while reading object; treating as string
  1285 +WARNING: issue-335a.pdf (trailer, offset 22869): unknown token while reading object; treating as string
  1286 +WARNING: issue-335a.pdf (trailer, offset 22844): expected dictionary key but found non-name object; inserting key /QPDFFake1
  1287 +WARNING: issue-335a.pdf (trailer, offset 22844): expected dictionary key but found non-name object; inserting key /QPDFFake2
  1288 +WARNING: issue-335a.pdf (trailer, offset 22844): expected dictionary key but found non-name object; inserting key /QPDFFake3
  1289 +WARNING: issue-335a.pdf (trailer, offset 22898): expected endstream
  1290 +WARNING: issue-335a.pdf (trailer, offset 22882): attempting to recover stream length
  1291 +WARNING: issue-335a.pdf (trailer, offset 22882): unable to recover stream data; treating stream as empty
  1292 +WARNING: issue-335a.pdf (trailer, offset 23098): invalid character (t) in hexstring
  1293 +WARNING: issue-335a.pdf (trailer, offset 23101): unknown token while reading object; treating as string
  1294 +WARNING: issue-335a.pdf (trailer, offset 23108): unknown token while reading object; treating as string
  1295 +WARNING: issue-335a.pdf (trailer, offset 23130): unknown token while reading object; treating as string
  1296 +WARNING: issue-335a.pdf (trailer, offset 23147): unknown token while reading object; treating as string
  1297 +WARNING: issue-335a.pdf (trailer, offset 23155): unknown token while reading object; treating as string
  1298 +WARNING: issue-335a.pdf (trailer, offset 23155): too many errors; giving up on reading object
  1299 +WARNING: issue-335a.pdf (trailer, offset 23108): unknown token while reading object; treating as string
  1300 +WARNING: issue-335a.pdf (trailer, offset 23130): unknown token while reading object; treating as string
  1301 +WARNING: issue-335a.pdf (trailer, offset 23147): unknown token while reading object; treating as string
  1302 +WARNING: issue-335a.pdf (trailer, offset 23155): unknown token while reading object; treating as string
  1303 +WARNING: issue-335a.pdf (trailer, offset 23196): unknown token while reading object; treating as string
  1304 +WARNING: issue-335a.pdf (trailer, offset 23324): unknown token while reading object; treating as string
  1305 +WARNING: issue-335a.pdf (trailer, offset 23324): too many errors; giving up on reading object
  1306 +WARNING: issue-335a.pdf (trailer, offset 23411): dictionary ended prematurely; using null as value for last key
  1307 +WARNING: issue-335a.pdf (object 5 0, offset 23451): invalid character (ÿ) in hexstring
  1308 +WARNING: issue-335a.pdf (object 5 0, offset 23458): unknown token while reading object; treating as string
  1309 +WARNING: issue-335a.pdf (object 5 0, offset 23444): expected dictionary key but found non-name object; inserting key /QPDFFake1
  1310 +WARNING: issue-335a.pdf (object 5 0, offset 23444): expected dictionary key but found non-name object; inserting key /QPDFFake2
  1311 +WARNING: issue-335a.pdf (object 5 0, offset 23440): /Length key in stream dictionary is not an integer
  1312 +WARNING: issue-335a.pdf (object 5 0, offset 23485): attempting to recover stream length
  1313 +WARNING: issue-335a.pdf (object 5 0, offset 23485): unable to recover stream data; treating stream as empty
  1314 +WARNING: issue-335a.pdf (object 5 0, offset 24974): expected endobj
  1315 +WARNING: issue-335a.pdf (object 5 0, offset 24974): EOF after endobj
  1316 +issue-335a.pdf (offset 24974): unable to find /Root dictionary
... ...