mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-20 15:18:08 +02:00
[api-minor] Support accessing both the original and modified PDF fingerprint
The PDF.js API has only ever supported accessing the original file ID, however the second one that (should) exist in *modified* documents have thus far been completely inaccessible through the API. That seems like a simple oversight, caused e.g. by the viewer not needing it, since it really shouldn't hurt to provide API-users with the ability to check if a PDF document has been modified since its creation.[1] Please refer to https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000_2008.pdf#G13.2261661 for additional information. For an example of how to update existing code to use the new API, please see the changes in the `web/app.js` file included in this patch. *Please note:* While I'm not sure if we'll ever be able to remove the old `PDFDocumentProxy.fingerprint` getter, given that it's existed since "forever", that probably isn't a big deal given that it's now limited to only `GENERIC`-builds. --- [1] Although this obviously depends on the PDF software following the specification, by updating the second file ID as intended.
This commit is contained in:
parent
f9d506cf50
commit
661c60ecc9
5 changed files with 77 additions and 33 deletions
|
@ -503,10 +503,25 @@ describe("api", function () {
|
|||
expect(pdfDocument.numPages).toEqual(3);
|
||||
});
|
||||
|
||||
it("gets fingerprint", function () {
|
||||
expect(pdfDocument.fingerprint).toEqual(
|
||||
"ea8b35919d6279a369e835bde778611b"
|
||||
it("gets fingerprints", function () {
|
||||
expect(pdfDocument.fingerprints).toEqual([
|
||||
"ea8b35919d6279a369e835bde778611b",
|
||||
null,
|
||||
]);
|
||||
});
|
||||
|
||||
it("gets fingerprints, from modified document", async function () {
|
||||
const loadingTask = getDocument(
|
||||
buildGetDocumentParams("annotation-tx.pdf")
|
||||
);
|
||||
const pdfDoc = await loadingTask.promise;
|
||||
|
||||
expect(pdfDoc.fingerprints).toEqual([
|
||||
"3ebd77c320274649a68f10dbf3b9f882",
|
||||
"e7087346aa4b4ae0911c1f1643b57345",
|
||||
]);
|
||||
|
||||
await loadingTask.destroy();
|
||||
});
|
||||
|
||||
it("gets page", async function () {
|
||||
|
@ -1203,13 +1218,13 @@ describe("api", function () {
|
|||
loadingTask1.promise,
|
||||
loadingTask2.promise,
|
||||
]);
|
||||
const fingerprint1 = data[0].fingerprint;
|
||||
const fingerprint2 = data[1].fingerprint;
|
||||
const fingerprints1 = data[0].fingerprints;
|
||||
const fingerprints2 = data[1].fingerprints;
|
||||
|
||||
expect(fingerprint1).not.toEqual(fingerprint2);
|
||||
expect(fingerprints1).not.toEqual(fingerprints2);
|
||||
|
||||
expect(fingerprint1).toEqual("2f695a83d6e7553c24fc08b7ac69712d");
|
||||
expect(fingerprint2).toEqual("04c7126b34a46b6d4d6e7a1eff7edcb6");
|
||||
expect(fingerprints1).toEqual(["2f695a83d6e7553c24fc08b7ac69712d", null]);
|
||||
expect(fingerprints2).toEqual(["04c7126b34a46b6d4d6e7a1eff7edcb6", null]);
|
||||
|
||||
await Promise.all([loadingTask1.destroy(), loadingTask2.destroy()]);
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue