mirror of
https://github.com/qpdf/qpdf.git
synced 2025-01-31 02:48:31 +00:00
Convert many more errors to warnings
This commit is contained in:
parent
a4fd4b91c6
commit
428d96dfe1
@ -29,8 +29,8 @@ $td->runtest("no bookmarks",
|
||||
|
||||
$td->runtest("bad",
|
||||
{$td->COMMAND => "pdf-bookmarks 3.pdf"},
|
||||
{$td->STRING => "pdf-bookmarks processing file 3.pdf: " .
|
||||
"3.pdf: not a PDF file\n",
|
||||
{$td->REGEXP => "pdf-bookmarks processing file 3.pdf: " .
|
||||
".*unable to find trailer.*",
|
||||
$td->EXIT_STATUS => 2},
|
||||
$td->NORMALIZE_NEWLINES);
|
||||
|
||||
|
@ -16,7 +16,7 @@ $td->runtest("normal",
|
||||
|
||||
$td->runtest("error",
|
||||
{$td->COMMAND => "pdf-npages bad"},
|
||||
{$td->STRING => "pdf-npages: bad: not a PDF file\n",
|
||||
{$td->REGEXP => "pdf-npages: bad: unable to find trailer.*",
|
||||
$td->EXIT_STATUS => 2},
|
||||
$td->NORMALIZE_NEWLINES);
|
||||
|
||||
|
107
libqpdf/QPDF.cc
107
libqpdf/QPDF.cc
@ -205,7 +205,7 @@ QPDF::getWarnings()
|
||||
void
|
||||
QPDF::parse(char const* password)
|
||||
{
|
||||
PCRE header_re("\\A((?s).*?)%PDF-(1.\\d+)\\b");
|
||||
PCRE header_re("\\A((?s).*?)%PDF-(\\d+.\\d+)\\b");
|
||||
PCRE eof_re("(?s:startxref\\s+(\\d+)\\s+%%EOF\\b)");
|
||||
|
||||
if (password)
|
||||
@ -233,16 +233,17 @@ QPDF::parse(char const* password)
|
||||
this->file = new OffsetInputSource(this->file, global_offset);
|
||||
}
|
||||
this->pdf_version = m1.getMatch(2);
|
||||
if (atof(this->pdf_version.c_str()) < 1.2)
|
||||
{
|
||||
this->tokenizer.allowPoundAnywhereInName();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
QTC::TC("qpdf", "QPDF not a pdf file");
|
||||
throw QPDFExc(qpdf_e_damaged_pdf, this->file->getName(),
|
||||
"", 0, "not a PDF file");
|
||||
warn(QPDFExc(qpdf_e_damaged_pdf, this->file->getName(),
|
||||
"", 0, "can't find PDF header"));
|
||||
this->pdf_version = "1.0";
|
||||
}
|
||||
if (atof(this->pdf_version.c_str()) < 1.2)
|
||||
{
|
||||
this->tokenizer.allowPoundAnywhereInName();
|
||||
}
|
||||
|
||||
// PDF spec says %%EOF must be found within the last 1024 bytes of
|
||||
@ -1152,7 +1153,7 @@ QPDF::readObject(PointerHolder<InputSource> input,
|
||||
{
|
||||
if (this->attempt_recovery)
|
||||
{
|
||||
// may throw an exception
|
||||
warn(e);
|
||||
length = recoverStreamLength(
|
||||
input, objid, generation, stream_offset);
|
||||
}
|
||||
@ -1288,9 +1289,9 @@ QPDF::recoverStreamLength(PointerHolder<InputSource> input,
|
||||
|
||||
if (length == 0)
|
||||
{
|
||||
throw QPDFExc(qpdf_e_damaged_pdf, input->getName(),
|
||||
this->last_object_description, stream_offset,
|
||||
"unable to recover stream data");
|
||||
warn(QPDFExc(qpdf_e_damaged_pdf, input->getName(),
|
||||
this->last_object_description, stream_offset,
|
||||
"unable to recover stream data; treating stream as empty"));
|
||||
}
|
||||
|
||||
QTC::TC("qpdf", "QPDF recovered stream length");
|
||||
@ -1309,6 +1310,10 @@ QPDF::readObjectAtOffset(bool try_recovery,
|
||||
int exp_objid, int exp_generation,
|
||||
int& objid, int& generation)
|
||||
{
|
||||
if (! this->attempt_recovery)
|
||||
{
|
||||
try_recovery = false;
|
||||
}
|
||||
setLastObjectDescription(description, exp_objid, exp_generation);
|
||||
|
||||
// Special case: if offset is 0, just return null. Some PDF
|
||||
@ -1363,16 +1368,27 @@ QPDF::readObjectAtOffset(bool try_recovery,
|
||||
(! ((objid == exp_objid) && (generation == exp_generation))))
|
||||
{
|
||||
QTC::TC("qpdf", "QPDF err wrong objid/generation");
|
||||
throw QPDFExc(qpdf_e_damaged_pdf, this->file->getName(),
|
||||
this->last_object_description, offset,
|
||||
std::string("expected ") +
|
||||
QUtil::int_to_string(exp_objid) + " " +
|
||||
QUtil::int_to_string(exp_generation) + " obj");
|
||||
QPDFExc e(qpdf_e_damaged_pdf, this->file->getName(),
|
||||
this->last_object_description, offset,
|
||||
std::string("expected ") +
|
||||
QUtil::int_to_string(exp_objid) + " " +
|
||||
QUtil::int_to_string(exp_generation) + " obj");
|
||||
if (try_recovery)
|
||||
{
|
||||
// Will be retried below
|
||||
throw e;
|
||||
}
|
||||
else
|
||||
{
|
||||
// We can try reading the object anyway even if the ID
|
||||
// doesn't match.
|
||||
warn(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (QPDFExc& e)
|
||||
{
|
||||
if ((exp_objid >= 0) && try_recovery && this->attempt_recovery)
|
||||
if ((exp_objid >= 0) && try_recovery)
|
||||
{
|
||||
// Try again after reconstructing xref table
|
||||
reconstruct_xref(e);
|
||||
@ -1496,31 +1512,42 @@ QPDF::resolve(int objid, int generation)
|
||||
}
|
||||
|
||||
QPDFXRefEntry const& entry = this->xref_table[og];
|
||||
switch (entry.getType())
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
qpdf_offset_t offset = entry.getOffset();
|
||||
// Object stored in cache by readObjectAtOffset
|
||||
int aobjid;
|
||||
int ageneration;
|
||||
QPDFObjectHandle oh =
|
||||
readObjectAtOffset(true, offset, "", objid, generation,
|
||||
aobjid, ageneration);
|
||||
}
|
||||
break;
|
||||
try
|
||||
{
|
||||
switch (entry.getType())
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
qpdf_offset_t offset = entry.getOffset();
|
||||
// Object stored in cache by readObjectAtOffset
|
||||
int aobjid;
|
||||
int ageneration;
|
||||
QPDFObjectHandle oh =
|
||||
readObjectAtOffset(true, offset, "", objid, generation,
|
||||
aobjid, ageneration);
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
resolveObjectsInStream(entry.getObjStreamNumber());
|
||||
break;
|
||||
case 2:
|
||||
resolveObjectsInStream(entry.getObjStreamNumber());
|
||||
break;
|
||||
|
||||
default:
|
||||
throw QPDFExc(qpdf_e_damaged_pdf, this->file->getName(), "", 0,
|
||||
"object " +
|
||||
QUtil::int_to_string(objid) + "/" +
|
||||
QUtil::int_to_string(generation) +
|
||||
" has unexpected xref entry type");
|
||||
}
|
||||
default:
|
||||
throw QPDFExc(qpdf_e_damaged_pdf, this->file->getName(), "", 0,
|
||||
"object " +
|
||||
QUtil::int_to_string(objid) + "/" +
|
||||
QUtil::int_to_string(generation) +
|
||||
" has unexpected xref entry type");
|
||||
}
|
||||
}
|
||||
catch (QPDFExc& e)
|
||||
{
|
||||
QTC::TC("qpdf", "QPDF resolve failure to null");
|
||||
warn(e);
|
||||
QPDFObjectHandle oh = QPDFObjectHandle::newNull();
|
||||
this->obj_cache[og] =
|
||||
ObjCache(QPDFObjectHandle::ObjAccessor::getObject(oh), -1, -1);
|
||||
}
|
||||
}
|
||||
|
||||
return this->obj_cache[og].object;
|
||||
|
@ -278,3 +278,4 @@ QPDF recursion loop in resolve 0
|
||||
QPDFObjectHandle treat word as string 0
|
||||
QPDFObjectHandle found fake 1
|
||||
QPDFObjectHandle no val for last key 0
|
||||
QPDF resolve failure to null 0
|
||||
|
@ -220,7 +220,7 @@ $td->runtest("C API: qpdf version",
|
||||
|
||||
# Files to reproduce various bugs
|
||||
foreach my $d (
|
||||
["51", "resolve loop", 2],
|
||||
["51", "resolve loop", 3],
|
||||
["99", "object 0", 2],
|
||||
["99b", "object 0", 2],
|
||||
["100", "xref reconstruction loop", 2],
|
||||
@ -228,7 +228,7 @@ foreach my $d (
|
||||
["117", "other infinite loop", 2],
|
||||
["118", "other infinite loop", 2],
|
||||
["119", "other infinite loop", 3],
|
||||
["120", "other infinite loop", 2],
|
||||
["120", "other infinite loop", 3],
|
||||
)
|
||||
{
|
||||
my ($n, $description, $exit_status) = @$d;
|
||||
@ -464,7 +464,7 @@ $td->runtest("EOF terminating literal tokens",
|
||||
$td->NORMALIZE_NEWLINES);
|
||||
$td->runtest("EOF reading token",
|
||||
{$td->COMMAND => "qpdf --check eof-reading-token.pdf"},
|
||||
{$td->FILE => "eof-reading-token.out", $td->EXIT_STATUS => 2},
|
||||
{$td->FILE => "eof-reading-token.out", $td->EXIT_STATUS => 3},
|
||||
$td->NORMALIZE_NEWLINES);
|
||||
$td->runtest("extra header text",
|
||||
{$td->COMMAND => "test_driver 32 minimal.pdf"},
|
||||
@ -794,9 +794,12 @@ $n_tests += @badfiles + 3;
|
||||
# neither Acrobat nor other PDF viewers really care. Tests 12 and 28
|
||||
# have error conditions that used to be fatal but are now considered
|
||||
# non-fatal.
|
||||
my %badtest_overrides = (6 => 0, 12 => 0, 13 => 0,
|
||||
14 => 0, 15 => 0, 17 => 0,
|
||||
28 => 0, 30 => 0, 31 => 0, 36 => 0);
|
||||
my %badtest_overrides = ();
|
||||
for(6, 12..15, 17, 22..28, 30..32, 34, 36)
|
||||
{
|
||||
$badtest_overrides{$_} = 0;
|
||||
}
|
||||
|
||||
for (my $i = 1; $i <= scalar(@badfiles); ++$i)
|
||||
{
|
||||
my $status = $badtest_overrides{$i};
|
||||
@ -835,7 +838,7 @@ $n_tests += @badfiles + 8;
|
||||
# though in some cases it may. Acrobat Reader would not be able to
|
||||
# recover any of these files any better.
|
||||
my %recover_failures = ();
|
||||
for (1, 7, 16, 18..21, 24, 29, 35)
|
||||
for (1, 7, 16, 18..21, 29, 35)
|
||||
{
|
||||
$recover_failures{$_} = 1;
|
||||
}
|
||||
|
@ -1 +1,5 @@
|
||||
bad1.pdf: not a PDF file
|
||||
WARNING: bad1.pdf: can't find PDF header
|
||||
WARNING: bad1.pdf: file is damaged
|
||||
WARNING: bad1.pdf: can't find startxref
|
||||
WARNING: bad1.pdf: Attempting to reconstruct cross-reference table
|
||||
bad1.pdf: unable to find trailer dictionary while recovering damaged file
|
||||
|
@ -1 +1,2 @@
|
||||
bad1.pdf: not a PDF file
|
||||
WARNING: bad1.pdf: can't find PDF header
|
||||
bad1.pdf: can't find startxref
|
||||
|
@ -1,3 +1,4 @@
|
||||
WARNING: bad22.pdf (object 4 0, file position 314): stream dictionary lacks /Length key
|
||||
WARNING: bad22.pdf (object 4 0, file position 341): attempting to recover stream length
|
||||
/QTest is indirect and has type stream (10)
|
||||
/QTest is a stream. Dictionary: << /Qength 44 >>
|
||||
|
@ -1 +1,7 @@
|
||||
bad22.pdf (object 4 0, file position 314): stream dictionary lacks /Length key
|
||||
WARNING: bad22.pdf (object 4 0, file position 314): stream dictionary lacks /Length key
|
||||
/QTest is implicit
|
||||
/QTest is indirect and has type null (2)
|
||||
/QTest is null
|
||||
unparse: 4 0 R
|
||||
unparseResolved: null
|
||||
test 0 done
|
||||
|
@ -1,3 +1,4 @@
|
||||
WARNING: bad23.pdf (object 4 0, file position 314): /Length key in stream dictionary is not an integer
|
||||
WARNING: bad23.pdf (object 4 0, file position 341): attempting to recover stream length
|
||||
/QTest is indirect and has type stream (10)
|
||||
/QTest is a stream. Dictionary: << /Length () >>
|
||||
|
@ -1 +1,7 @@
|
||||
bad23.pdf (object 4 0, file position 314): /Length key in stream dictionary is not an integer
|
||||
WARNING: bad23.pdf (object 4 0, file position 314): /Length key in stream dictionary is not an integer
|
||||
/QTest is implicit
|
||||
/QTest is indirect and has type null (2)
|
||||
/QTest is null
|
||||
unparse: 4 0 R
|
||||
unparseResolved: null
|
||||
test 0 done
|
||||
|
@ -1,2 +1,10 @@
|
||||
WARNING: bad24.pdf (object 4 0, file position 385): expected endstream
|
||||
WARNING: bad24.pdf (object 4 0, file position 341): attempting to recover stream length
|
||||
bad24.pdf (object 4 0, file position 341): unable to recover stream data
|
||||
WARNING: bad24.pdf (object 4 0, file position 341): unable to recover stream data; treating stream as empty
|
||||
WARNING: bad24.pdf (object 4 0, file position 778): EOF while reading token
|
||||
/QTest is implicit
|
||||
/QTest is indirect and has type null (2)
|
||||
/QTest is null
|
||||
unparse: 4 0 R
|
||||
unparseResolved: null
|
||||
test 1 done
|
||||
|
@ -1 +1,7 @@
|
||||
bad24.pdf (object 4 0, file position 385): expected endstream
|
||||
WARNING: bad24.pdf (object 4 0, file position 385): expected endstream
|
||||
/QTest is implicit
|
||||
/QTest is indirect and has type null (2)
|
||||
/QTest is null
|
||||
unparse: 4 0 R
|
||||
unparseResolved: null
|
||||
test 0 done
|
||||
|
@ -1 +1,7 @@
|
||||
bad25.pdf (object 4 0, file position 307): expected n n obj
|
||||
WARNING: bad25.pdf (object 4 0, file position 307): expected n n obj
|
||||
/QTest is implicit
|
||||
/QTest is indirect and has type null (2)
|
||||
/QTest is null
|
||||
unparse: 4 0 R
|
||||
unparseResolved: null
|
||||
test 0 done
|
||||
|
@ -1 +1,7 @@
|
||||
bad26.pdf (object 4 0, file position 307): expected n n obj
|
||||
WARNING: bad26.pdf (object 4 0, file position 307): expected n n obj
|
||||
/QTest is implicit
|
||||
/QTest is indirect and has type null (2)
|
||||
/QTest is null
|
||||
unparse: 4 0 R
|
||||
unparseResolved: null
|
||||
test 0 done
|
||||
|
@ -1 +1,7 @@
|
||||
bad27.pdf (object 4 0, file position 307): expected n n obj
|
||||
WARNING: bad27.pdf (object 4 0, file position 307): expected n n obj
|
||||
/QTest is implicit
|
||||
/QTest is indirect and has type null (2)
|
||||
/QTest is null
|
||||
unparse: 4 0 R
|
||||
unparseResolved: null
|
||||
test 0 done
|
||||
|
@ -1 +1,7 @@
|
||||
bad32.pdf (object 4 0, file position 307): expected 4 0 obj
|
||||
WARNING: bad32.pdf (object 4 0, file position 307): expected 4 0 obj
|
||||
/QTest is implicit
|
||||
/QTest is indirect and has type null (2)
|
||||
/QTest is null
|
||||
unparse: 4 0 R
|
||||
unparseResolved: null
|
||||
test 0 done
|
||||
|
@ -1 +1,7 @@
|
||||
bad34.pdf (object 4 0, file position 322): expected n n obj
|
||||
WARNING: bad34.pdf (object 4 0, file position 322): expected n n obj
|
||||
/QTest is implicit
|
||||
/QTest is indirect and has type null (2)
|
||||
/QTest is null
|
||||
unparse: 4 0 R
|
||||
unparseResolved: null
|
||||
test 0 done
|
||||
|
@ -1 +1,2 @@
|
||||
bad35.pdf (object 1 0, file position 521): supposed object stream 1 has wrong type
|
||||
WARNING: bad35.pdf (object 1 0, file position 521): supposed object stream 1 has wrong type
|
||||
operation for Dictionary object attempted on object of wrong type
|
||||
|
@ -1 +1,2 @@
|
||||
bad35.pdf (object 1 0, file position 521): supposed object stream 1 has wrong type
|
||||
WARNING: bad35.pdf (object 1 0, file position 521): supposed object stream 1 has wrong type
|
||||
operation for Dictionary object attempted on object of wrong type
|
||||
|
@ -1,5 +1,25 @@
|
||||
error: bad1.pdf: not a PDF file
|
||||
warning: bad1.pdf: can't find PDF header
|
||||
code: 5
|
||||
file: bad1.pdf
|
||||
pos : 0
|
||||
text: not a PDF file
|
||||
text: can't find PDF header
|
||||
warning: bad1.pdf: file is damaged
|
||||
code: 5
|
||||
file: bad1.pdf
|
||||
pos : 0
|
||||
text: file is damaged
|
||||
warning: bad1.pdf: can't find startxref
|
||||
code: 5
|
||||
file: bad1.pdf
|
||||
pos : 0
|
||||
text: can't find startxref
|
||||
warning: bad1.pdf: Attempting to reconstruct cross-reference table
|
||||
code: 5
|
||||
file: bad1.pdf
|
||||
pos : 0
|
||||
text: Attempting to reconstruct cross-reference table
|
||||
error: bad1.pdf: unable to find trailer dictionary while recovering damaged file
|
||||
code: 5
|
||||
file: bad1.pdf
|
||||
pos : 0
|
||||
text: unable to find trailer dictionary while recovering damaged file
|
||||
|
@ -2,4 +2,4 @@ checking eof-reading-token.pdf
|
||||
PDF Version: 1.3
|
||||
File is not encrypted
|
||||
File is not linearized
|
||||
object stream 12 (file position 5): EOF while reading token
|
||||
WARNING: object stream 12 (file position 5): EOF while reading token
|
||||
|
@ -1,5 +1,6 @@
|
||||
WARNING: heifer.pdf: file is damaged
|
||||
WARNING: heifer.pdf (file position 92741): xref not found
|
||||
WARNING: heifer.pdf: Attempting to reconstruct cross-reference table
|
||||
WARNING: heifer.pdf (object 2 0, file position 2165): expected endstream
|
||||
WARNING: heifer.pdf (object 2 0, file position 51): attempting to recover stream length
|
||||
qpdf: operation succeeded with warnings; resulting file may have some problems
|
||||
|
@ -7,6 +7,8 @@ WARNING: issue-100.pdf (file position 289): unknown token while reading object;
|
||||
WARNING: issue-100.pdf (file position 294): unknown token while reading object; treating as string
|
||||
WARNING: issue-100.pdf (file position 297): unknown token while reading object; treating as string
|
||||
WARNING: issue-100.pdf (file position 304): unknown token while reading object; treating as string
|
||||
WARNING: issue-100.pdf (file position 308): unexpected )
|
||||
WARNING: issue-100.pdf (object 5 0, file position 418): /Length key in stream dictionary is not an integer
|
||||
WARNING: issue-100.pdf (object 5 0, file position 489): attempting to recover stream length
|
||||
WARNING: issue-100.pdf (trailer, file position 953): expected dictionary key but found non-name object; inserting key /QPDFFake1
|
||||
WARNING: issue-100.pdf (trailer, file position 953): dictionary ended prematurely; using null as value for last key
|
||||
|
@ -3,15 +3,22 @@ WARNING: issue-101.pdf (file position 3526): xref not found
|
||||
WARNING: issue-101.pdf: Attempting to reconstruct cross-reference table
|
||||
WARNING: issue-101.pdf (file position 1242): expected dictionary key but found non-name object; inserting key /QPDFFake1
|
||||
WARNING: issue-101.pdf (file position 1242): dictionary ended prematurely; using null as value for last key
|
||||
WARNING: issue-101.pdf (object 5 0, file position 1438): /Length key in stream dictionary is not an integer
|
||||
WARNING: issue-101.pdf (object 5 0, file position 1509): attempting to recover stream length
|
||||
WARNING: issue-101.pdf (trailer, file position 2026): /Length key in stream dictionary is not an integer
|
||||
WARNING: issue-101.pdf (trailer, file position 2097): attempting to recover stream length
|
||||
WARNING: issue-101.pdf (trailer, file position 2928): unknown token while reading object; treating as string
|
||||
WARNING: issue-101.pdf (trailer, file position 2930): unknown token while reading object; treating as string
|
||||
WARNING: issue-101.pdf (trailer, file position 2928): expected dictionary key but found non-name object; inserting key /QPDFFake1
|
||||
WARNING: issue-101.pdf (trailer, file position 2928): expected dictionary key but found non-name object; inserting key /QPDFFake2
|
||||
WARNING: issue-101.pdf (trailer, file position 2928): expected dictionary key but found non-name object; inserting key /QPDFFake3
|
||||
WARNING: issue-101.pdf (trailer, file position 2925): /Length key in stream dictionary is not an integer
|
||||
WARNING: issue-101.pdf (trailer, file position 2996): attempting to recover stream length
|
||||
WARNING: issue-101.pdf (trailer, file position 3339): /Length key in stream dictionary is not an integer
|
||||
WARNING: issue-101.pdf (trailer, file position 3410): attempting to recover stream length
|
||||
WARNING: issue-101.pdf (trailer, file position 3560): /Length key in stream dictionary is not an integer
|
||||
WARNING: issue-101.pdf (trailer, file position 3631): attempting to recover stream length
|
||||
WARNING: issue-101.pdf (trailer, file position 4113): /Length key in stream dictionary is not an integer
|
||||
WARNING: issue-101.pdf (trailer, file position 4184): attempting to recover stream length
|
||||
issue-101.pdf (trailer, file position 4184): unable to recover stream data
|
||||
WARNING: issue-101.pdf (trailer, file position 4184): unable to recover stream data; treating stream as empty
|
||||
issue-101.pdf: unable to find trailer dictionary while recovering damaged file
|
||||
|
@ -2,5 +2,6 @@ WARNING: issue-117.pdf: file is damaged
|
||||
WARNING: issue-117.pdf: can't find startxref
|
||||
WARNING: issue-117.pdf: Attempting to reconstruct cross-reference table
|
||||
WARNING: issue-117.pdf (file position 66): loop detected resolving object 2 0
|
||||
WARNING: issue-117.pdf (object 2 0, file position 22): /Length key in stream dictionary is not an integer
|
||||
WARNING: issue-117.pdf (object 2 0, file position 67): attempting to recover stream length
|
||||
attempt to make a stream into a direct object
|
||||
|
@ -1,2 +1,3 @@
|
||||
WARNING: issue-118.pdf (file position 732): loop detected resolving object 2 0
|
||||
issue-118.pdf (xref stream: object 8 0, file position 732): supposed object stream 2 is not a stream
|
||||
WARNING: issue-118.pdf (xref stream: object 8 0, file position 732): supposed object stream 2 is not a stream
|
||||
operation for Dictionary object attempted on object of wrong type
|
||||
|
@ -1,2 +1,3 @@
|
||||
WARNING: issue-120.pdf (file position 85): loop detected resolving object 3 0
|
||||
issue-120.pdf (object 6 0, file position 85): supposed object stream 3 is not a stream
|
||||
WARNING: issue-120.pdf (object 6 0, file position 85): supposed object stream 3 is not a stream
|
||||
qpdf: operation succeeded with warnings; resulting file may have some problems
|
||||
|
@ -2,5 +2,8 @@ WARNING: issue-51.pdf: reported number of objects (0) inconsistent with actual n
|
||||
WARNING: issue-51.pdf (object 7 0, file position 553): expected endobj
|
||||
WARNING: issue-51.pdf (object 1 0, file position 359): expected endobj
|
||||
WARNING: issue-51.pdf (file position 70): loop detected resolving object 2 0
|
||||
WARNING: issue-51.pdf (object 2 0, file position 26): /Length key in stream dictionary is not an integer
|
||||
WARNING: issue-51.pdf (object 2 0, file position 71): attempting to recover stream length
|
||||
issue-51.pdf (object 2 0, file position 71): unable to recover stream data
|
||||
WARNING: issue-51.pdf (object 2 0, file position 71): unable to recover stream data; treating stream as empty
|
||||
WARNING: issue-51.pdf (object 2 0, file position 977): EOF while reading token
|
||||
qpdf: operation succeeded with warnings; resulting file may have some problems
|
||||
|
@ -2,5 +2,6 @@ checking linearization-bounds-1.pdf
|
||||
PDF Version: 1.3
|
||||
File is not encrypted
|
||||
File is linearized
|
||||
WARNING: linearization-bounds-1.pdf (linearization hint stream: object 62 0, file position 1001182): EOF while reading token
|
||||
WARNING: linearization-bounds-1.pdf (linearization hint stream: object 62 0, file position 1183): attempting to recover stream length
|
||||
linearization-bounds-1.pdf (linearization hint table, file position 1183): /S (shared object) offset is out of bounds
|
||||
|
@ -2,5 +2,6 @@ checking linearization-bounds-2.pdf
|
||||
PDF Version: 1.3
|
||||
File is not encrypted
|
||||
File is linearized
|
||||
WARNING: linearization-bounds-2.pdf (linearization hint stream: object 62 0, file position 1282): expected endstream
|
||||
WARNING: linearization-bounds-2.pdf (linearization hint stream: object 62 0, file position 1183): attempting to recover stream length
|
||||
linearization-bounds-2.pdf (linearization hint table, file position 1183): /S (shared object) offset is out of bounds
|
||||
|
@ -2,5 +2,6 @@ checking linearization-large-vector-alloc.pdf
|
||||
PDF Version: 1.3
|
||||
File is not encrypted
|
||||
File is linearized
|
||||
WARNING: linearization-large-vector-alloc.pdf (linearization hint stream: object 62 0, file position 1282): expected endstream
|
||||
WARNING: linearization-large-vector-alloc.pdf (linearization hint stream: object 62 0, file position 1183): attempting to recover stream length
|
||||
overflow reading bit stream
|
||||
|
Loading…
x
Reference in New Issue
Block a user