UNPKG

@pdfme/pdf-lib

Version:

Create and modify PDF files with JavaScript

116 lines 6.03 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const fs_1 = __importDefault(require("fs")); const index_1 = require("../../../src/index"); const fancyFieldsPdfBytes = fs_1.default.readFileSync('assets/pdfs/fancy_fields.pdf'); describe(`PDFTextField`, () => { it(`can read its value`, async () => { const pdfDoc = await index_1.PDFDocument.load(fancyFieldsPdfBytes); const form = pdfDoc.getForm(); const prefix = form.getTextField('Prefix ⚽️'); const firstName = form.getTextField('First Name 🚀'); const middleInitial = form.getTextField('MiddleInitial 🎳'); const lastName = form.getTextField('LastName 🛩'); expect(prefix.getText()).toEqual('Ms.'); expect(firstName.getText()).toEqual('Cedar'); expect(middleInitial.getText()).toEqual('M'); expect(lastName.getText()).toEqual('Lightningtwirls'); }); it(`can read its alignment`, async () => { const pdfDoc = await index_1.PDFDocument.load(fancyFieldsPdfBytes); const form = pdfDoc.getForm(); const prefix = form.getTextField('Prefix ⚽️'); const firstName = form.getTextField('First Name 🚀'); const middleInitial = form.getTextField('MiddleInitial 🎳'); const lastName = form.getTextField('LastName 🛩'); expect(prefix.getAlignment()).toEqual(index_1.TextAlignment.Center); expect(firstName.getAlignment()).toEqual(index_1.TextAlignment.Left); expect(middleInitial.getAlignment()).toEqual(index_1.TextAlignment.Center); expect(lastName.getAlignment()).toEqual(index_1.TextAlignment.Right); }); it(`can write a value`, async () => { const pdfDoc = await index_1.PDFDocument.load(fancyFieldsPdfBytes); const form = pdfDoc.getForm(); const prefix = form.getTextField('Prefix ⚽️'); const firstName = form.getTextField('First Name 🚀'); const middleInitial = form.getTextField('MiddleInitial 🎳'); const lastName = form.getTextField('LastName 🛩'); prefix.setText('Some boats 🚤'); firstName.setText('Chili peppers 🌶'); middleInitial.setText('Pineapplez 🍍'); lastName.setText('And christmas trees! 🎄'); expect(prefix.getText()).toEqual('Some boats 🚤'); expect(firstName.getText()).toEqual('Chili peppers 🌶'); expect(middleInitial.getText()).toEqual('Pineapplez 🍍'); expect(lastName.getText()).toEqual('And christmas trees! 🎄'); }); it(`can read its flag states`, async () => { const pdfDoc = await index_1.PDFDocument.load(fancyFieldsPdfBytes); const form = pdfDoc.getForm(); const prefix = form.getTextField('Prefix ⚽️'); expect(prefix.isExported()).toBe(true); expect(prefix.isReadOnly()).toBe(false); expect(prefix.isRequired()).toBe(false); expect(prefix.isFileSelector()).toBe(false); expect(prefix.isMultiline()).toBe(false); expect(prefix.isPassword()).toBe(false); expect(prefix.isRichFormatted()).toBe(false); expect(prefix.isScrollable()).toBe(true); expect(prefix.isSpellChecked()).toBe(true); expect(prefix.isCombed()).toBe(false); }); it(`throws an error when setting text that exceeds the max length`, async () => { const pdfDoc = await index_1.PDFDocument.create(); const form = pdfDoc.getForm(); const textField = form.createTextField('foo.bar'); textField.setMaxLength(5); expect(() => textField.setText('abcde')).not.toThrow(); expect(() => textField.setText('abcdef')).toThrow(); }); it(`throws an error when setting a max length less than the text length`, async () => { const pdfDoc = await index_1.PDFDocument.create(); const form = pdfDoc.getForm(); const textField = form.createTextField('foo.bar'); textField.setText('abcdef'); expect(() => textField.setMaxLength(undefined)).not.toThrow(); expect(() => textField.setMaxLength(6)).not.toThrow(); expect(() => textField.setMaxLength(7)).not.toThrow(); expect(() => textField.setMaxLength(5)).toThrow(); }); it(`produces printable widgets when added to a page`, async () => { const pdfDoc = await index_1.PDFDocument.create(); const page = pdfDoc.addPage(); const form = pdfDoc.getForm(); const textField = form.createTextField('a.new.text.field'); const widgets = () => textField.acroField.getWidgets(); expect(widgets().length).toBe(0); textField.addToPage(page); expect(widgets().length).toBe(1); expect(widgets()[0].hasFlag(index_1.AnnotationFlags.Print)).toBe(true); }); it(`sets page reference when added to a page`, async () => { const pdfDoc = await index_1.PDFDocument.create(); const page = pdfDoc.addPage(); const form = pdfDoc.getForm(); const textField = form.createTextField('a.new.text.field'); const widgets = () => textField.acroField.getWidgets(); expect(widgets().length).toBe(0); textField.addToPage(page); expect(widgets().length).toBe(1); expect(widgets()[0].P()).toBe(page.ref); }); it(`sets the 'hidden' flag when passed options.hidden`, async () => { const pdfDoc = await index_1.PDFDocument.create(); const page = pdfDoc.addPage(); const form = pdfDoc.getForm(); const textField = form.createTextField('a.hidden.text.field'); const widgets = () => textField.acroField.getWidgets(); textField.addToPage(page, { hidden: true }); expect(widgets().length).toBe(1); expect(widgets()[0].hasFlag(index_1.AnnotationFlags.Hidden)).toBe(true); }); }); //# sourceMappingURL=PDFTextField.spec.js.map