[api-minor] Implement securityHandler in the scripting API (bug 1731578)
This commit is contained in:
parent
1ab9a6e36e
commit
91fc643ff9
@ -1689,6 +1689,7 @@ const CipherTransformFactory = (function CipherTransformFactoryClosure() {
|
||||
if (!isName(filter, "Standard")) {
|
||||
throw new FormatError("unknown encryption method");
|
||||
}
|
||||
this.filterName = filter.name;
|
||||
this.dict = dict;
|
||||
const algorithm = dict.get("V");
|
||||
if (
|
||||
|
@ -1161,6 +1161,9 @@ class PDFDocument {
|
||||
const docInfo = {
|
||||
PDFFormatVersion: version,
|
||||
Language: this.catalog.lang,
|
||||
EncryptFilterName: this.xref.encrypt
|
||||
? this.xref.encrypt.filterName
|
||||
: null,
|
||||
IsLinearized: !!this.linearization,
|
||||
IsAcroFormPresent: this.formInfo.hasAcroForm,
|
||||
IsXFAPresent: this.formInfo.hasXfa,
|
||||
|
@ -66,6 +66,7 @@ class Doc extends PDFObject {
|
||||
this._numPages = data.numPages || 1;
|
||||
this._pageNum = data.pageNum || 0;
|
||||
this._producer = data.Producer || "";
|
||||
this._securityHandler = data.EncryptFilterName || null;
|
||||
this._subject = data.Subject || "";
|
||||
this._title = data.Title || "";
|
||||
this._URL = data.URL || "";
|
||||
@ -522,7 +523,7 @@ class Doc extends PDFObject {
|
||||
}
|
||||
|
||||
get securityHandler() {
|
||||
return null;
|
||||
return this._securityHandler;
|
||||
}
|
||||
|
||||
set securityHandler(_) {
|
||||
|
@ -896,4 +896,26 @@ describe("Interaction", () => {
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe("in secHandler.pdf", () => {
|
||||
let pages;
|
||||
|
||||
beforeAll(async () => {
|
||||
pages = await loadAndWait("secHandler.pdf", "#\\32 5R");
|
||||
});
|
||||
|
||||
afterAll(async () => {
|
||||
await closePages(pages);
|
||||
});
|
||||
it("must print securityHandler value in a text field", async () => {
|
||||
await Promise.all(
|
||||
pages.map(async ([browserName, page]) => {
|
||||
const text = await actAndWaitForInput(page, "#\\32 5R", async () => {
|
||||
await page.click("[data-annotation-id='26R']");
|
||||
});
|
||||
expect(text).withContext(`In ${browserName}`).toEqual("Standard");
|
||||
})
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
1
test/pdfs/.gitignore
vendored
1
test/pdfs/.gitignore
vendored
@ -477,3 +477,4 @@
|
||||
!issue12337.pdf
|
||||
!pr12564.pdf
|
||||
!pr12828.pdf
|
||||
!secHandler.pdf
|
||||
|
BIN
test/pdfs/secHandler.pdf
Normal file
BIN
test/pdfs/secHandler.pdf
Normal file
Binary file not shown.
@ -1166,6 +1166,7 @@ describe("api", function () {
|
||||
// The following are PDF.js specific, non-standard, properties.
|
||||
expect(info.PDFFormatVersion).toEqual("1.7");
|
||||
expect(info.Language).toEqual("en");
|
||||
expect(info.EncryptFilterName).toEqual(null);
|
||||
expect(info.IsLinearized).toEqual(false);
|
||||
expect(info.IsAcroFormPresent).toEqual(false);
|
||||
expect(info.IsXFAPresent).toEqual(false);
|
||||
@ -1201,6 +1202,7 @@ describe("api", function () {
|
||||
// The following are PDF.js specific, non-standard, properties.
|
||||
expect(info.PDFFormatVersion).toEqual("1.4");
|
||||
expect(info.Language).toEqual(null);
|
||||
expect(info.EncryptFilterName).toEqual(null);
|
||||
expect(info.IsLinearized).toEqual(false);
|
||||
expect(info.IsAcroFormPresent).toEqual(false);
|
||||
expect(info.IsXFAPresent).toEqual(false);
|
||||
@ -1223,6 +1225,7 @@ describe("api", function () {
|
||||
// The following are PDF.js specific, non-standard, properties.
|
||||
expect(info.PDFFormatVersion).toEqual(null);
|
||||
expect(info.Language).toEqual(null);
|
||||
expect(info.EncryptFilterName).toEqual(null);
|
||||
expect(info.IsLinearized).toEqual(false);
|
||||
expect(info.IsAcroFormPresent).toEqual(false);
|
||||
expect(info.IsXFAPresent).toEqual(false);
|
||||
|
Loading…
Reference in New Issue
Block a user