1
0
Fork 0
mirror of https://github.com/mozilla/pdf.js.git synced 2025-04-20 15:18:08 +02:00

Merge pull request #16188 from calixteman/bug1823296

Use the position of the previous xref stream if any when saving a pdf (bug 1823296)
This commit is contained in:
calixteman 2023-03-21 21:21:49 +01:00 committed by GitHub
commit 8bfebf1c24
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 62 additions and 1 deletions

View file

@ -660,6 +660,7 @@ class WorkerMessageHandler {
});
}
const lastXRefStreamPos = xref.lastXRefStreamPos;
newXrefInfo = {
rootRef: xref.trailer.getRaw("Root") || null,
encryptRef: xref.trailer.getRaw("Encrypt") || null,
@ -667,7 +668,8 @@ class WorkerMessageHandler {
infoRef: xref.trailer.getRaw("Info") || null,
info: infoObj,
fileIds: xref.trailer.get("ID") || null,
startXRef,
startXRef:
lastXRefStreamPos === null ? startXRef : lastXRefStreamPos,
filename,
};
}
@ -836,6 +838,11 @@ class WorkerMessageHandler {
handler.on("GetXFADatasets", function (data) {
return pdfManager.ensureDoc("xfaDatasets");
});
handler.on("GetXRefPrevValue", function (data) {
return pdfManager
.ensureXRef("trailer")
.then(trailer => trailer.get("Prev"));
});
}
return workerHandlerName;

View file

@ -756,6 +756,11 @@ class XRef {
throw new XRefParseException();
}
get lastXRefStreamPos() {
const pos = Object.keys(this.xrefstms);
return pos.length === 0 ? null : Math.max(...pos);
}
getEntry(i) {
const xrefEntry = this.entries[i];
if (xrefEntry && !xrefEntry.free && xrefEntry.offset) {

View file

@ -777,6 +777,11 @@ class PDFDocumentProxy {
return this._transport.getXFADatasets();
},
});
Object.defineProperty(this, "getXRefPrevValue", {
value: () => {
return this._transport.getXRefPrevValue();
},
});
}
}
@ -2397,6 +2402,11 @@ class WorkerTransport {
return this.messageHandler.sendWithPromise("GetXFADatasets", null);
},
});
Object.defineProperty(this, "getXRefPrevValue", {
value: () => {
return this.messageHandler.sendWithPromise("GetXRefPrevValue", null);
},
});
}
}