/** * @licstart The following is the entire license notice for the * Javascript code in this page * * Copyright 2020 Mozilla Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * @licend The above is the entire license notice for the * Javascript code in this page */ "use strict"; var _test_utils = require("./test_utils.js"); var _primitives = require("../../core/primitives.js"); var _document = require("../../core/document.js"); var _stream = require("../../core/stream.js"); describe("document", function () { describe("Page", function () { it("should create correct objId/fontId using the idFactory", function () { const idFactory1 = (0, _test_utils.createIdFactory)(0); const idFactory2 = (0, _test_utils.createIdFactory)(1); expect(idFactory1.createObjId()).toEqual("p0_1"); expect(idFactory1.createObjId()).toEqual("p0_2"); expect(idFactory1.createFontId()).toEqual("f1"); expect(idFactory1.createFontId()).toEqual("f2"); expect(idFactory1.getDocId()).toEqual("g_d0"); expect(idFactory2.createObjId()).toEqual("p1_1"); expect(idFactory2.createObjId()).toEqual("p1_2"); expect(idFactory2.createFontId()).toEqual("f1"); expect(idFactory2.createFontId()).toEqual("f2"); expect(idFactory2.getDocId()).toEqual("g_d0"); expect(idFactory1.createObjId()).toEqual("p0_3"); expect(idFactory1.createObjId()).toEqual("p0_4"); expect(idFactory1.createFontId()).toEqual("f3"); expect(idFactory1.createFontId()).toEqual("f4"); expect(idFactory1.getDocId()).toEqual("g_d0"); }); }); describe("PDFDocument", function () { const pdfManager = { get docId() { return "d0"; } }; const stream = new _stream.StringStream("Dummy_PDF_data"); function getDocument(acroForm) { const pdfDocument = new _document.PDFDocument(pdfManager, stream); pdfDocument.catalog = { acroForm }; return pdfDocument; } it("should get form info when no form data is present", function () { const pdfDocument = getDocument(null); expect(pdfDocument.formInfo).toEqual({ hasAcroForm: false, hasXfa: false }); }); it("should get form info when XFA is present", function () { const acroForm = new _primitives.Dict(); acroForm.set("XFA", []); let pdfDocument = getDocument(acroForm); expect(pdfDocument.formInfo).toEqual({ hasAcroForm: false, hasXfa: false }); acroForm.set("XFA", ["foo", "bar"]); pdfDocument = getDocument(acroForm); expect(pdfDocument.formInfo).toEqual({ hasAcroForm: false, hasXfa: true }); acroForm.set("XFA", new _stream.StringStream("")); pdfDocument = getDocument(acroForm); expect(pdfDocument.formInfo).toEqual({ hasAcroForm: false, hasXfa: false }); acroForm.set("XFA", new _stream.StringStream("non-empty")); pdfDocument = getDocument(acroForm); expect(pdfDocument.formInfo).toEqual({ hasAcroForm: false, hasXfa: true }); }); it("should get form info when AcroForm is present", function () { const acroForm = new _primitives.Dict(); acroForm.set("Fields", []); let pdfDocument = getDocument(acroForm); expect(pdfDocument.formInfo).toEqual({ hasAcroForm: false, hasXfa: false }); acroForm.set("Fields", ["foo", "bar"]); pdfDocument = getDocument(acroForm); expect(pdfDocument.formInfo).toEqual({ hasAcroForm: true, hasXfa: false }); acroForm.set("Fields", ["foo", "bar"]); acroForm.set("SigFlags", 2); pdfDocument = getDocument(acroForm); expect(pdfDocument.formInfo).toEqual({ hasAcroForm: true, hasXfa: false }); const annotationDict = new _primitives.Dict(); annotationDict.set("FT", _primitives.Name.get("Sig")); annotationDict.set("Rect", [0, 0, 0, 0]); const annotationRef = _primitives.Ref.get(11, 0); const kidsDict = new _primitives.Dict(); kidsDict.set("Kids", [annotationRef]); const kidsRef = _primitives.Ref.get(10, 0); pdfDocument.xref = new _test_utils.XRefMock([{ ref: annotationRef, data: annotationDict }, { ref: kidsRef, data: kidsDict }]); acroForm.set("Fields", [kidsRef]); acroForm.set("SigFlags", 3); pdfDocument = getDocument(acroForm); expect(pdfDocument.formInfo).toEqual({ hasAcroForm: false, hasXfa: false }); }); }); });