Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 13 additions & 4 deletions src/PdfSharp/Pdf.IO/Parser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1068,20 +1068,29 @@ private PdfTrailer ReadXRefTableAndTrailer(PdfCrossReferenceTable xrefTable)
symbol = ScanNextToken();
if (symbol == Symbol.Integer)
{
int start = _lexer.TokenToInteger;
int length = ReadInteger();
for (int id = start; id < start + length; id++)
for (int idx = 0; idx < length; idx++)
{
int position = ReadInteger();
int generation = ReadInteger();
ReadSymbol(Symbol.Keyword);
string token = _lexer.Token;

// Start entry should be marked as free.
// Skip start entry
if (id == 0)
continue;
//if (idx == 0)
// continue;

// Skip unused entries.
if (token != "n")
continue;

// Some PDF producers don't follow xref specs. Can't assume object number.
int pos = _lexer.Position;
_lexer.Position = position;
int id = ReadInteger();
_lexer.Position = pos;

// Even it is restricted, an object can exists in more than one subsection.
// (PDF Reference Implementation Notes 15).
PdfObjectID objectID = new PdfObjectID(id, generation);
Expand Down