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:
commit
8bfebf1c24
6 changed files with 62 additions and 1 deletions
|
@ -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;
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue