UNPKG

@pdfme/pdf-lib

Version:

Create and modify PDF files with JavaScript

77 lines 3.52 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const fontkit_1 = __importDefault(require("@pdf-lib/fontkit")); const standard_fonts_1 = require("@pdf-lib/standard-fonts"); const fs_1 = __importDefault(require("fs")); const core_1 = require("../../src/core"); const utils_1 = require("../../src/utils"); const font = core_1.StandardFontEmbedder.for(standard_fonts_1.FontNames.Helvetica); const textSize = 24; const computeTextWidth = (text) => font.widthOfTextAtSize(text, textSize); describe(`breakTextIntoLines`, () => { it(`handles empty wordBreaks arrays`, () => { const input = 'foobar-quxbaz'; const expected = ['foobar-quxbaz']; const actual = (0, utils_1.breakTextIntoLines)(input, [], 21, computeTextWidth); expect(actual).toEqual(expected); }); it(`handles trailing newlines`, () => { const input = 'foo\n'; const expected = ['foo']; const actual = (0, utils_1.breakTextIntoLines)(input, [], 21, computeTextWidth); expect(actual).toEqual(expected); }); it(`handles trailing carriage returns`, () => { const input = 'foo\r'; const expected = ['foo']; const actual = (0, utils_1.breakTextIntoLines)(input, [], 21, computeTextWidth); expect(actual).toEqual(expected); }); it(`always breaks lines when EOLs are encountered`, () => { const input = 'foo\nbar-qux\rbaz\n'; const expected = ['foo', 'bar-qux', 'baz']; const actual = (0, utils_1.breakTextIntoLines)(input, [], 90000, computeTextWidth); expect(actual).toEqual(expected); }); it(`breaks at the last possible 'wordBreak' before exceeding 'maxWidth' (1)`, () => { const input = 'Lorem Test ipsum dolor sit amet, consectetur adipiscing\nelit'; const expected = [ 'Lorem T', 'est ipsu', 'm dolor s', 'it amet, c', 'onsectet', 'ur adipis', 'cing', 'elit', ]; const actual = (0, utils_1.breakTextIntoLines)(input, ['', 'Test'], 100, computeTextWidth); expect(actual).toEqual(expected); }); it(`breaks at the last possible 'wordBreak' before exceeding 'maxWidth' (2)`, () => { const input = 'Foo%bar%baz'; const expected = ['Foo%', 'bar%baz']; const actual = (0, utils_1.breakTextIntoLines)(input, ['%'], 100, computeTextWidth); expect(actual).toEqual(expected); }); it(`handles non-ascii code points and empty breaks`, async () => { const sourceHansBytes = fs_1.default.readFileSync('assets/fonts/source_hans_jp/SourceHanSerifJP-Regular.otf'); const sourceHansFont = await core_1.CustomFontEmbedder.for(fontkit_1.default, sourceHansBytes); const input = '遅未亮惑職界転藤柔索名午納,問通桑転加料演載満経信回込町者訟窃。'; const expected = [ '遅未亮惑職', '界転藤柔索', '名午納,問', '通桑転加料', '演載満経信', '回込町者訟', '窃。', ]; const actual = (0, utils_1.breakTextIntoLines)(input, [''], 125, (text) => sourceHansFont.widthOfTextAtSize(text, 24)); expect(actual).toEqual(expected); }); }); //# sourceMappingURL=strings.spec.js.map