You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
153 lines
5.0 KiB
153 lines
5.0 KiB
5 months ago
|
/**
|
||
|
* @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
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
});
|