smalot / pdfparser

PdfParser, a standalone PHP library, provides various tools to extract data from a PDF file.
GNU Lesser General Public License v3.0
2.3k stars 534 forks source link

Account for inaccurate offsets in getXrefData() #692

Closed GreyWyvern closed 3 months ago

GreyWyvern commented 3 months ago

Type of pull request

About

Normally offset pointers to xref keywords in a PDF document are exact to the byte. However, in some cases the pointer may point to some whitespace before the xref keyword. Adobe Acrobat takes these 'errors' in stride, displaying the document anyway, and so should PdfParser.

Clean up the getXrefData() function in RawDataParser.php. It now only needs to do one preg_match_all() and pushes the caret past whitespace when looking for xref keywords.

Use existing Issue557.pdf to create a new file: Issue673.pdf where the last /Prev 13486 command has been decremented to /Prev 13485. Trying to parse this file would cause an Exception without this fix. Resolves #673.

Checklist for code / configuration changes

In case you changed the code/configuration, please read each of the following checkboxes as they contain valuable information: