Handle cases where no xref table is present (use startxref offset instead) and where trailer is not conform (use values from XRef object if present)

This commit is contained in:
2022-03-14 19:57:25 +01:00
parent ea37dcbded
commit 27b9d8ec3e
2 changed files with 69 additions and 32 deletions

View File

@@ -44,7 +44,8 @@ namespace uPDFParser
{
public:
Parser(int version_major=1, int version_minor=6):
version_major(version_major), version_minor(version_minor), fd(0)
version_major(version_major), version_minor(version_minor),
xrefObject(0), xrefOffset((off_t)-1), fd(0), curOffset(0)
{}
~Parser()
@@ -116,11 +117,12 @@ namespace uPDFParser
Stream* parseStream(Object* object);
Name* parseName(std::string& token);
void repairTrailer();
void writeUpdate(const std::string& filename);
int version_major, version_minor;
std::vector<Object*> _objects;
Object trailer;
Object trailer, *xrefObject;
off_t xrefOffset;
int fd;
off_t curOffset;