pdfkit 0.8.3 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +121 -111
  3. package/js/{font/data → data}/Courier-Bold.afm +0 -0
  4. package/js/{font/data → data}/Courier-BoldOblique.afm +0 -0
  5. package/js/{font/data → data}/Courier-Oblique.afm +0 -0
  6. package/js/{font/data → data}/Courier.afm +0 -0
  7. package/js/{font/data → data}/Helvetica-Bold.afm +0 -0
  8. package/js/{font/data → data}/Helvetica-BoldOblique.afm +0 -0
  9. package/js/{font/data → data}/Helvetica-Oblique.afm +0 -0
  10. package/js/{font/data → data}/Helvetica.afm +0 -0
  11. package/js/{font/data → data}/Symbol.afm +0 -0
  12. package/js/{font/data → data}/Times-Bold.afm +0 -0
  13. package/js/{font/data → data}/Times-BoldItalic.afm +0 -0
  14. package/js/{font/data → data}/Times-Italic.afm +0 -0
  15. package/js/{font/data → data}/Times-Roman.afm +0 -0
  16. package/js/{font/data → data}/ZapfDingbats.afm +0 -0
  17. package/js/pdfkit.es5.js +6202 -0
  18. package/js/pdfkit.es5.js.map +1 -0
  19. package/js/pdfkit.esnext.js +5549 -0
  20. package/js/pdfkit.esnext.js.map +1 -0
  21. package/js/pdfkit.js +5581 -0
  22. package/js/pdfkit.js.map +1 -0
  23. package/js/pdfkit.standalone.js +65118 -0
  24. package/js/virtual-fs.js +70 -0
  25. package/package.json +52 -22
  26. package/.npmignore +0 -8
  27. package/Makefile +0 -30
  28. package/js/data.js +0 -192
  29. package/js/document.js +0 -247
  30. package/js/font/afm.js +0 -170
  31. package/js/font/data/MustRead.html +0 -19
  32. package/js/font/embedded.js +0 -234
  33. package/js/font/standard.js +0 -124
  34. package/js/font.js +0 -75
  35. package/js/gradient.js +0 -240
  36. package/js/image/jpeg.js +0 -78
  37. package/js/image/png.js +0 -158
  38. package/js/image.js +0 -53
  39. package/js/line_wrapper.js +0 -252
  40. package/js/mixins/annotations.js +0 -133
  41. package/js/mixins/color.js +0 -298
  42. package/js/mixins/fonts.js +0 -71
  43. package/js/mixins/images.js +0 -111
  44. package/js/mixins/text.js +0 -344
  45. package/js/mixins/vector.js +0 -302
  46. package/js/object.js +0 -115
  47. package/js/page.js +0 -170
  48. package/js/path.js +0 -366
  49. package/js/reference.js +0 -109
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdfkit.es5.js","sources":["../lib/abstract_reference.js","../lib/name_tree.js","../lib/object.js","../lib/reference.js","../lib/page.js","../lib/saslprep/lib/util.js","../lib/saslprep/lib/code-points.js","../lib/saslprep/index.js","../lib/security.js","../lib/gradient.js","../lib/mixins/color.js","../lib/path.js","../lib/mixins/vector.js","../lib/font/afm.js","../lib/font.js","../lib/font/standard.js","../lib/font/embedded.js","../lib/font_factory.js","../lib/mixins/fonts.js","../lib/line_wrapper.js","../lib/mixins/text.js","../lib/image/jpeg.js","../lib/image/png.js","../lib/image.js","../lib/mixins/images.js","../lib/mixins/annotations.js","../lib/outline.js","../lib/mixins/outline.js","../lib/mixins/acroform.js","../lib/document.js"],"sourcesContent":["/*\nPDFAbstractReference - abstract class for PDF reference\n*/\n\nclass PDFAbstractReference {\n toString() {\n throw new Error('Must be implemented by subclasses');\n }\n}\n\nexport default PDFAbstractReference;\n","/*\nPDFNameTree - represents a name tree object\n*/\n\nimport PDFObject from './object';\n\nclass PDFNameTree {\n\n constructor() {\n this._items = {};\n }\n\n add(key, val) {\n return this._items[key] = val;\n }\n\n get(key) {\n return this._items[key];\n }\n\n toString() {\n // Needs to be sorted by key\n const sortedKeys = (Object.keys(this._items)).sort((a, b) => a.localeCompare(b));\n\n const out = ['<<'];\n if (sortedKeys.length > 1) {\n const first = sortedKeys[0], last = sortedKeys[sortedKeys.length - 1];\n out.push(` /Limits ${PDFObject.convert([new String(first), new String(last)])}`);\n }\n out.push(' /Names [');\n for (let key of sortedKeys) {\n out.push(` ${PDFObject.convert(new String(key))} ${PDFObject.convert(this._items[key])}`);\n }\n out.push(']');\n out.push('>>');\n return out.join('\\n');\n }\n}\n\nexport default PDFNameTree;","/*\nPDFObject - converts JavaScript types into their corresponding PDF types.\nBy Devon Govett\n*/\n\nimport PDFAbstractReference from './abstract_reference';\nimport PDFNameTree from './name_tree';\n\nconst pad = (str, length) => (Array(length + 1).join('0') + str).slice(-length);\n\nconst escapableRe = /[\\n\\r\\t\\b\\f\\(\\)\\\\]/g;\nconst escapable = {\n '\\n': '\\\\n',\n '\\r': '\\\\r',\n '\\t': '\\\\t',\n '\\b': '\\\\b',\n '\\f': '\\\\f',\n '\\\\': '\\\\\\\\',\n '(': '\\\\(',\n ')': '\\\\)'\n};\n\n// Convert little endian UTF-16 to big endian\nconst swapBytes = function(buff) {\n const l = buff.length;\n if (l & 0x01) {\n throw new Error('Buffer length must be even');\n } else {\n for (let i = 0, end = l - 1; i < end; i += 2) {\n const a = buff[i];\n buff[i] = buff[i + 1];\n buff[i + 1] = a;\n }\n }\n\n return buff;\n};\n\nclass PDFObject {\n static convert(object, encryptFn = null) {\n // String literals are converted to the PDF name type\n if (typeof object === 'string') {\n return `/${object}`;\n\n // String objects are converted to PDF strings (UTF-16)\n } else if (object instanceof String) {\n let string = object;\n // Detect if this is a unicode string\n let isUnicode = false;\n for (let i = 0, end = string.length; i < end; i++) {\n if (string.charCodeAt(i) > 0x7f) {\n isUnicode = true;\n break;\n }\n }\n\n // If so, encode it as big endian UTF-16\n let stringBuffer;\n if (isUnicode) {\n stringBuffer = swapBytes(Buffer.from(`\\ufeff${string}`, 'utf16le'));\n } else {\n stringBuffer = Buffer.from(string.valueOf(), 'ascii');\n }\n\n // Encrypt the string when necessary\n if (encryptFn) {\n string = encryptFn(stringBuffer).toString('binary');\n } else {\n string = stringBuffer.toString('binary');\n }\n\n // Escape characters as required by the spec\n string = string.replace(escapableRe, c => escapable[c]);\n\n return `(${string})`;\n\n // Buffers are converted to PDF hex strings\n } else if (Buffer.isBuffer(object)) {\n return `<${object.toString('hex')}>`;\n } else if (object instanceof PDFAbstractReference || object instanceof PDFNameTree) {\n return object.toString();\n } else if (object instanceof Date) {\n let string =\n `D:${pad(object.getUTCFullYear(), 4)}` +\n pad(object.getUTCMonth() + 1, 2) +\n pad(object.getUTCDate(), 2) +\n pad(object.getUTCHours(), 2) +\n pad(object.getUTCMinutes(), 2) +\n pad(object.getUTCSeconds(), 2) +\n 'Z';\n\n // Encrypt the string when necessary\n if (encryptFn) {\n string = encryptFn(new Buffer(string, 'ascii')).toString('binary');\n\n // Escape characters as required by the spec\n string = string.replace(escapableRe, c => escapable[c]);\n }\n\n return `(${string})`;\n } else if (Array.isArray(object)) {\n const items = object.map(e => PDFObject.convert(e, encryptFn)).join(' ');\n return `[${items}]`;\n } else if ({}.toString.call(object) === '[object Object]') {\n const out = ['<<'];\n for (let key in object) {\n const val = object[key];\n out.push(`/${key} ${PDFObject.convert(val, encryptFn)}`);\n }\n\n out.push('>>');\n return out.join('\\n');\n } else if (typeof object === 'number') {\n return PDFObject.number(object);\n } else {\n return `${object}`;\n }\n }\n\n static number(n) {\n if (n > -1e21 && n < 1e21) {\n return Math.round(n * 1e6) / 1e6;\n }\n\n throw new Error(`unsupported number: ${n}`);\n }\n}\n\nexport default PDFObject;\n","/*\nPDFReference - represents a reference to another object in the PDF object heirarchy\nBy Devon Govett\n*/\n\nimport zlib from 'zlib';\nimport PDFAbstractReference from './abstract_reference';\nimport PDFObject from './object';\n\nclass PDFReference extends PDFAbstractReference {\n constructor(document, id, data = {}) {\n super();\n this.document = document;\n this.id = id;\n this.data = data;\n this.gen = 0;\n this.compress = this.document.compress && !this.data.Filter;\n this.uncompressedLength = 0;\n this.buffer = [];\n }\n\n write(chunk) {\n if (!Buffer.isBuffer(chunk)) {\n chunk = new Buffer(chunk + '\\n', 'binary');\n }\n\n this.uncompressedLength += chunk.length;\n if (this.data.Length == null) {\n this.data.Length = 0;\n }\n this.buffer.push(chunk);\n this.data.Length += chunk.length;\n if (this.compress) {\n return (this.data.Filter = 'FlateDecode');\n }\n }\n\n end(chunk) {\n if (chunk) {\n this.write(chunk);\n }\n return this.finalize();\n }\n\n finalize() {\n this.offset = this.document._offset;\n\n const encryptFn = this.document._security\n ? this.document._security.getEncryptFn(this.id, this.gen)\n : null;\n\n if (this.buffer.length) {\n this.buffer = Buffer.concat(this.buffer);\n if (this.compress) {\n this.buffer = zlib.deflateSync(this.buffer);\n }\n\n if (encryptFn) {\n this.buffer = encryptFn(this.buffer);\n }\n\n this.data.Length = this.buffer.length;\n }\n\n this.document._write(`${this.id} ${this.gen} obj`);\n this.document._write(PDFObject.convert(this.data, encryptFn));\n\n if (this.buffer.length) {\n this.document._write('stream');\n this.document._write(this.buffer);\n\n this.buffer = []; // free up memory\n this.document._write('\\nendstream');\n }\n\n this.document._write('endobj');\n this.document._refEnd(this);\n }\n toString() {\n return `${this.id} ${this.gen} R`;\n }\n}\n\nexport default PDFReference;\n","/*\nPDFPage - represents a single page in the PDF document\nBy Devon Govett\n*/\n\nconst DEFAULT_MARGINS = {\n top: 72,\n left: 72,\n bottom: 72,\n right: 72\n};\n\nconst SIZES = {\n '4A0': [4767.87, 6740.79],\n '2A0': [3370.39, 4767.87],\n A0: [2383.94, 3370.39],\n A1: [1683.78, 2383.94],\n A2: [1190.55, 1683.78],\n A3: [841.89, 1190.55],\n A4: [595.28, 841.89],\n A5: [419.53, 595.28],\n A6: [297.64, 419.53],\n A7: [209.76, 297.64],\n A8: [147.4, 209.76],\n A9: [104.88, 147.4],\n A10: [73.7, 104.88],\n B0: [2834.65, 4008.19],\n B1: [2004.09, 2834.65],\n B2: [1417.32, 2004.09],\n B3: [1000.63, 1417.32],\n B4: [708.66, 1000.63],\n B5: [498.9, 708.66],\n B6: [354.33, 498.9],\n B7: [249.45, 354.33],\n B8: [175.75, 249.45],\n B9: [124.72, 175.75],\n B10: [87.87, 124.72],\n C0: [2599.37, 3676.54],\n C1: [1836.85, 2599.37],\n C2: [1298.27, 1836.85],\n C3: [918.43, 1298.27],\n C4: [649.13, 918.43],\n C5: [459.21, 649.13],\n C6: [323.15, 459.21],\n C7: [229.61, 323.15],\n C8: [161.57, 229.61],\n C9: [113.39, 161.57],\n C10: [79.37, 113.39],\n RA0: [2437.8, 3458.27],\n RA1: [1729.13, 2437.8],\n RA2: [1218.9, 1729.13],\n RA3: [864.57, 1218.9],\n RA4: [609.45, 864.57],\n SRA0: [2551.18, 3628.35],\n SRA1: [1814.17, 2551.18],\n SRA2: [1275.59, 1814.17],\n SRA3: [907.09, 1275.59],\n SRA4: [637.8, 907.09],\n EXECUTIVE: [521.86, 756.0],\n FOLIO: [612.0, 936.0],\n LEGAL: [612.0, 1008.0],\n LETTER: [612.0, 792.0],\n TABLOID: [792.0, 1224.0]\n};\n\nclass PDFPage {\n constructor(document, options = {}) {\n this.document = document;\n this.size = options.size || 'letter';\n this.layout = options.layout || 'portrait';\n\n // process margins\n if (typeof options.margin === 'number') {\n this.margins = {\n top: options.margin,\n left: options.margin,\n bottom: options.margin,\n right: options.margin\n };\n\n // default to 1 inch margins\n } else {\n this.margins = options.margins || DEFAULT_MARGINS;\n }\n\n // calculate page dimensions\n const dimensions = Array.isArray(this.size)\n ? this.size\n : SIZES[this.size.toUpperCase()];\n this.width = dimensions[this.layout === 'portrait' ? 0 : 1];\n this.height = dimensions[this.layout === 'portrait' ? 1 : 0];\n\n this.content = this.document.ref();\n\n // Initialize the Font, XObject, and ExtGState dictionaries\n this.resources = this.document.ref({\n ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI']\n });\n\n // The page dictionary\n this.dictionary = this.document.ref({\n Type: 'Page',\n Parent: this.document._root.data.Pages,\n MediaBox: [0, 0, this.width, this.height],\n Contents: this.content,\n Resources: this.resources\n });\n }\n\n // Lazily create these dictionaries\n get fonts() {\n const data = this.resources.data;\n return data.Font != null ? data.Font : (data.Font = {});\n }\n\n get xobjects() {\n const data = this.resources.data;\n return data.XObject != null ? data.XObject : (data.XObject = {});\n }\n\n get ext_gstates() {\n const data = this.resources.data;\n return data.ExtGState != null ? data.ExtGState : (data.ExtGState = {});\n }\n\n get patterns() {\n const data = this.resources.data;\n return data.Pattern != null ? data.Pattern : (data.Pattern = {});\n }\n\n get annotations() {\n const data = this.dictionary.data;\n return data.Annots != null ? data.Annots : (data.Annots = []);\n }\n\n maxY() {\n return this.height - this.margins.bottom;\n }\n\n write(chunk) {\n return this.content.write(chunk);\n }\n\n end() {\n this.dictionary.end();\n this.resources.end();\n return this.content.end();\n }\n}\n\nexport default PDFPage;\n","/**\n * Check if value is in a range group.\n * @param {number} value\n * @param {number[]} rangeGroup\n * @returns {boolean}\n */\nfunction inRange(value, rangeGroup) {\n if (value < rangeGroup[0]) return false;\n let startRange = 0;\n let endRange = rangeGroup.length / 2;\n while (startRange <= endRange) {\n const middleRange = Math.floor((startRange + endRange) / 2);\n\n // actual array index\n const arrayIndex = middleRange * 2;\n\n // Check if value is in range pointed by actual index\n if (\n value >= rangeGroup[arrayIndex] &&\n value <= rangeGroup[arrayIndex + 1]\n ) {\n return true;\n }\n\n if (value > rangeGroup[arrayIndex + 1]) {\n // Search Right Side Of Array\n startRange = middleRange + 1;\n } else {\n // Search Left Side Of Array\n endRange = middleRange - 1;\n }\n }\n return false;\n}\n\nexport { inRange };\n","import { inRange } from './util';\n\n/* eslint-disable prettier/prettier */\n/**\n * A.1 Unassigned code points in Unicode 3.2\n * @link https://tools.ietf.org/html/rfc3454#appendix-A.1\n */\nconst unassigned_code_points = [\n 0x0221,\n 0x0221,\n 0x0234,\n 0x024f,\n 0x02ae,\n 0x02af,\n 0x02ef,\n 0x02ff,\n 0x0350,\n 0x035f,\n 0x0370,\n 0x0373,\n 0x0376,\n 0x0379,\n 0x037b,\n 0x037d,\n 0x037f,\n 0x0383,\n 0x038b,\n 0x038b,\n 0x038d,\n 0x038d,\n 0x03a2,\n 0x03a2,\n 0x03cf,\n 0x03cf,\n 0x03f7,\n 0x03ff,\n 0x0487,\n 0x0487,\n 0x04cf,\n 0x04cf,\n 0x04f6,\n 0x04f7,\n 0x04fa,\n 0x04ff,\n 0x0510,\n 0x0530,\n 0x0557,\n 0x0558,\n 0x0560,\n 0x0560,\n 0x0588,\n 0x0588,\n 0x058b,\n 0x0590,\n 0x05a2,\n 0x05a2,\n 0x05ba,\n 0x05ba,\n 0x05c5,\n 0x05cf,\n 0x05eb,\n 0x05ef,\n 0x05f5,\n 0x060b,\n 0x060d,\n 0x061a,\n 0x061c,\n 0x061e,\n 0x0620,\n 0x0620,\n 0x063b,\n 0x063f,\n 0x0656,\n 0x065f,\n 0x06ee,\n 0x06ef,\n 0x06ff,\n 0x06ff,\n 0x070e,\n 0x070e,\n 0x072d,\n 0x072f,\n 0x074b,\n 0x077f,\n 0x07b2,\n 0x0900,\n 0x0904,\n 0x0904,\n 0x093a,\n 0x093b,\n 0x094e,\n 0x094f,\n 0x0955,\n 0x0957,\n 0x0971,\n 0x0980,\n 0x0984,\n 0x0984,\n 0x098d,\n 0x098e,\n 0x0991,\n 0x0992,\n 0x09a9,\n 0x09a9,\n 0x09b1,\n 0x09b1,\n 0x09b3,\n 0x09b5,\n 0x09ba,\n 0x09bb,\n 0x09bd,\n 0x09bd,\n 0x09c5,\n 0x09c6,\n 0x09c9,\n 0x09ca,\n 0x09ce,\n 0x09d6,\n 0x09d8,\n 0x09db,\n 0x09de,\n 0x09de,\n 0x09e4,\n 0x09e5,\n 0x09fb,\n 0x0a01,\n 0x0a03,\n 0x0a04,\n 0x0a0b,\n 0x0a0e,\n 0x0a11,\n 0x0a12,\n 0x0a29,\n 0x0a29,\n 0x0a31,\n 0x0a31,\n 0x0a34,\n 0x0a34,\n 0x0a37,\n 0x0a37,\n 0x0a3a,\n 0x0a3b,\n 0x0a3d,\n 0x0a3d,\n 0x0a43,\n 0x0a46,\n 0x0a49,\n 0x0a4a,\n 0x0a4e,\n 0x0a58,\n 0x0a5d,\n 0x0a5d,\n 0x0a5f,\n 0x0a65,\n 0x0a75,\n 0x0a80,\n 0x0a84,\n 0x0a84,\n 0x0a8c,\n 0x0a8c,\n 0x0a8e,\n 0x0a8e,\n 0x0a92,\n 0x0a92,\n 0x0aa9,\n 0x0aa9,\n 0x0ab1,\n 0x0ab1,\n 0x0ab4,\n 0x0ab4,\n 0x0aba,\n 0x0abb,\n 0x0ac6,\n 0x0ac6,\n 0x0aca,\n 0x0aca,\n 0x0ace,\n 0x0acf,\n 0x0ad1,\n 0x0adf,\n 0x0ae1,\n 0x0ae5,\n 0x0af0,\n 0x0b00,\n 0x0b04,\n 0x0b04,\n 0x0b0d,\n 0x0b0e,\n 0x0b11,\n 0x0b12,\n 0x0b29,\n 0x0b29,\n 0x0b31,\n 0x0b31,\n 0x0b34,\n 0x0b35,\n 0x0b3a,\n 0x0b3b,\n 0x0b44,\n 0x0b46,\n 0x0b49,\n 0x0b4a,\n 0x0b4e,\n 0x0b55,\n 0x0b58,\n 0x0b5b,\n 0x0b5e,\n 0x0b5e,\n 0x0b62,\n 0x0b65,\n 0x0b71,\n 0x0b81,\n 0x0b84,\n 0x0b84,\n 0x0b8b,\n 0x0b8d,\n 0x0b91,\n 0x0b91,\n 0x0b96,\n 0x0b98,\n 0x0b9b,\n 0x0b9b,\n 0x0b9d,\n 0x0b9d,\n 0x0ba0,\n 0x0ba2,\n 0x0ba5,\n 0x0ba7,\n 0x0bab,\n 0x0bad,\n 0x0bb6,\n 0x0bb6,\n 0x0bba,\n 0x0bbd,\n 0x0bc3,\n 0x0bc5,\n 0x0bc9,\n 0x0bc9,\n 0x0bce,\n 0x0bd6,\n 0x0bd8,\n 0x0be6,\n 0x0bf3,\n 0x0c00,\n 0x0c04,\n 0x0c04,\n 0x0c0d,\n 0x0c0d,\n 0x0c11,\n 0x0c11,\n 0x0c29,\n 0x0c29,\n 0x0c34,\n 0x0c34,\n 0x0c3a,\n 0x0c3d,\n 0x0c45,\n 0x0c45,\n 0x0c49,\n 0x0c49,\n 0x0c4e,\n 0x0c54,\n 0x0c57,\n 0x0c5f,\n 0x0c62,\n 0x0c65,\n 0x0c70,\n 0x0c81,\n 0x0c84,\n 0x0c84,\n 0x0c8d,\n 0x0c8d,\n 0x0c91,\n 0x0c91,\n 0x0ca9,\n 0x0ca9,\n 0x0cb4,\n 0x0cb4,\n 0x0cba,\n 0x0cbd,\n 0x0cc5,\n 0x0cc5,\n 0x0cc9,\n 0x0cc9,\n 0x0cce,\n 0x0cd4,\n 0x0cd7,\n 0x0cdd,\n 0x0cdf,\n 0x0cdf,\n 0x0ce2,\n 0x0ce5,\n 0x0cf0,\n 0x0d01,\n 0x0d04,\n 0x0d04,\n 0x0d0d,\n 0x0d0d,\n 0x0d11,\n 0x0d11,\n 0x0d29,\n 0x0d29,\n 0x0d3a,\n 0x0d3d,\n 0x0d44,\n 0x0d45,\n 0x0d49,\n 0x0d49,\n 0x0d4e,\n 0x0d56,\n 0x0d58,\n 0x0d5f,\n 0x0d62,\n 0x0d65,\n 0x0d70,\n 0x0d81,\n 0x0d84,\n 0x0d84,\n 0x0d97,\n 0x0d99,\n 0x0db2,\n 0x0db2,\n 0x0dbc,\n 0x0dbc,\n 0x0dbe,\n 0x0dbf,\n 0x0dc7,\n 0x0dc9,\n 0x0dcb,\n 0x0dce,\n 0x0dd5,\n 0x0dd5,\n 0x0dd7,\n 0x0dd7,\n 0x0de0,\n 0x0df1,\n 0x0df5,\n 0x0e00,\n 0x0e3b,\n 0x0e3e,\n 0x0e5c,\n 0x0e80,\n 0x0e83,\n 0x0e83,\n 0x0e85,\n 0x0e86,\n 0x0e89,\n 0x0e89,\n 0x0e8b,\n 0x0e8c,\n 0x0e8e,\n 0x0e93,\n 0x0e98,\n 0x0e98,\n 0x0ea0,\n 0x0ea0,\n 0x0ea4,\n 0x0ea4,\n 0x0ea6,\n 0x0ea6,\n 0x0ea8,\n 0x0ea9,\n 0x0eac,\n 0x0eac,\n 0x0eba,\n 0x0eba,\n 0x0ebe,\n 0x0ebf,\n 0x0ec5,\n 0x0ec5,\n 0x0ec7,\n 0x0ec7,\n 0x0ece,\n 0x0ecf,\n 0x0eda,\n 0x0edb,\n 0x0ede,\n 0x0eff,\n 0x0f48,\n 0x0f48,\n 0x0f6b,\n 0x0f70,\n 0x0f8c,\n 0x0f8f,\n 0x0f98,\n 0x0f98,\n 0x0fbd,\n 0x0fbd,\n 0x0fcd,\n 0x0fce,\n 0x0fd0,\n 0x0fff,\n 0x1022,\n 0x1022,\n 0x1028,\n 0x1028,\n 0x102b,\n 0x102b,\n 0x1033,\n 0x1035,\n 0x103a,\n 0x103f,\n 0x105a,\n 0x109f,\n 0x10c6,\n 0x10cf,\n 0x10f9,\n 0x10fa,\n 0x10fc,\n 0x10ff,\n 0x115a,\n 0x115e,\n 0x11a3,\n 0x11a7,\n 0x11fa,\n 0x11ff,\n 0x1207,\n 0x1207,\n 0x1247,\n 0x1247,\n 0x1249,\n 0x1249,\n 0x124e,\n 0x124f,\n 0x1257,\n 0x1257,\n 0x1259,\n 0x1259,\n 0x125e,\n 0x125f,\n 0x1287,\n 0x1287,\n 0x1289,\n 0x1289,\n 0x128e,\n 0x128f,\n 0x12af,\n 0x12af,\n 0x12b1,\n 0x12b1,\n 0x12b6,\n 0x12b7,\n 0x12bf,\n 0x12bf,\n 0x12c1,\n 0x12c1,\n 0x12c6,\n 0x12c7,\n 0x12cf,\n 0x12cf,\n 0x12d7,\n 0x12d7,\n 0x12ef,\n 0x12ef,\n 0x130f,\n 0x130f,\n 0x1311,\n 0x1311,\n 0x1316,\n 0x1317,\n 0x131f,\n 0x131f,\n 0x1347,\n 0x1347,\n 0x135b,\n 0x1360,\n 0x137d,\n 0x139f,\n 0x13f5,\n 0x1400,\n 0x1677,\n 0x167f,\n 0x169d,\n 0x169f,\n 0x16f1,\n 0x16ff,\n 0x170d,\n 0x170d,\n 0x1715,\n 0x171f,\n 0x1737,\n 0x173f,\n 0x1754,\n 0x175f,\n 0x176d,\n 0x176d,\n 0x1771,\n 0x1771,\n 0x1774,\n 0x177f,\n 0x17dd,\n 0x17df,\n 0x17ea,\n 0x17ff,\n 0x180f,\n 0x180f,\n 0x181a,\n 0x181f,\n 0x1878,\n 0x187f,\n 0x18aa,\n 0x1dff,\n 0x1e9c,\n 0x1e9f,\n 0x1efa,\n 0x1eff,\n 0x1f16,\n 0x1f17,\n 0x1f1e,\n 0x1f1f,\n 0x1f46,\n 0x1f47,\n 0x1f4e,\n 0x1f4f,\n 0x1f58,\n 0x1f58,\n 0x1f5a,\n 0x1f5a,\n 0x1f5c,\n 0x1f5c,\n 0x1f5e,\n 0x1f5e,\n 0x1f7e,\n 0x1f7f,\n 0x1fb5,\n 0x1fb5,\n 0x1fc5,\n 0x1fc5,\n 0x1fd4,\n 0x1fd5,\n 0x1fdc,\n 0x1fdc,\n 0x1ff0,\n 0x1ff1,\n 0x1ff5,\n 0x1ff5,\n 0x1fff,\n 0x1fff,\n 0x2053,\n 0x2056,\n 0x2058,\n 0x205e,\n 0x2064,\n 0x2069,\n 0x2072,\n 0x2073,\n 0x208f,\n 0x209f,\n 0x20b2,\n 0x20cf,\n 0x20eb,\n 0x20ff,\n 0x213b,\n 0x213c,\n 0x214c,\n 0x2152,\n 0x2184,\n 0x218f,\n 0x23cf,\n 0x23ff,\n 0x2427,\n 0x243f,\n 0x244b,\n 0x245f,\n 0x24ff,\n 0x24ff,\n 0x2614,\n 0x2615,\n 0x2618,\n 0x2618,\n 0x267e,\n 0x267f,\n 0x268a,\n 0x2700,\n 0x2705,\n 0x2705,\n 0x270a,\n 0x270b,\n 0x2728,\n 0x2728,\n 0x274c,\n 0x274c,\n 0x274e,\n 0x274e,\n 0x2753,\n 0x2755,\n 0x2757,\n 0x2757,\n 0x275f,\n 0x2760,\n 0x2795,\n 0x2797,\n 0x27b0,\n 0x27b0,\n 0x27bf,\n 0x27cf,\n 0x27ec,\n 0x27ef,\n 0x2b00,\n 0x2e7f,\n 0x2e9a,\n 0x2e9a,\n 0x2ef4,\n 0x2eff,\n 0x2fd6,\n 0x2fef,\n 0x2ffc,\n 0x2fff,\n 0x3040,\n 0x3040,\n 0x3097,\n 0x3098,\n 0x3100,\n 0x3104,\n 0x312d,\n 0x3130,\n 0x318f,\n 0x318f,\n 0x31b8,\n 0x31ef,\n 0x321d,\n 0x321f,\n 0x3244,\n 0x3250,\n 0x327c,\n 0x327e,\n 0x32cc,\n 0x32cf,\n 0x32ff,\n 0x32ff,\n 0x3377,\n 0x337a,\n 0x33de,\n 0x33df,\n 0x33ff,\n 0x33ff,\n 0x4db6,\n 0x4dff,\n 0x9fa6,\n 0x9fff,\n 0xa48d,\n 0xa48f,\n 0xa4c7,\n 0xabff,\n 0xd7a4,\n 0xd7ff,\n 0xfa2e,\n 0xfa2f,\n 0xfa6b,\n 0xfaff,\n 0xfb07,\n 0xfb12,\n 0xfb18,\n 0xfb1c,\n 0xfb37,\n 0xfb37,\n 0xfb3d,\n 0xfb3d,\n 0xfb3f,\n 0xfb3f,\n 0xfb42,\n 0xfb42,\n 0xfb45,\n 0xfb45,\n 0xfbb2,\n 0xfbd2,\n 0xfd40,\n 0xfd4f,\n 0xfd90,\n 0xfd91,\n 0xfdc8,\n 0xfdcf,\n 0xfdfd,\n 0xfdff,\n 0xfe10,\n 0xfe1f,\n 0xfe24,\n 0xfe2f,\n 0xfe47,\n 0xfe48,\n 0xfe53,\n 0xfe53,\n 0xfe67,\n 0xfe67,\n 0xfe6c,\n 0xfe6f,\n 0xfe75,\n 0xfe75,\n 0xfefd,\n 0xfefe,\n 0xff00,\n 0xff00,\n 0xffbf,\n 0xffc1,\n 0xffc8,\n 0xffc9,\n 0xffd0,\n 0xffd1,\n 0xffd8,\n 0xffd9,\n 0xffdd,\n 0xffdf,\n 0xffe7,\n 0xffe7,\n 0xffef,\n 0xfff8,\n 0x10000,\n 0x102ff,\n 0x1031f,\n 0x1031f,\n 0x10324,\n 0x1032f,\n 0x1034b,\n 0x103ff,\n 0x10426,\n 0x10427,\n 0x1044e,\n 0x1cfff,\n 0x1d0f6,\n 0x1d0ff,\n 0x1d127,\n 0x1d129,\n 0x1d1de,\n 0x1d3ff,\n 0x1d455,\n 0x1d455,\n 0x1d49d,\n 0x1d49d,\n 0x1d4a0,\n 0x1d4a1,\n 0x1d4a3,\n 0x1d4a4,\n 0x1d4a7,\n 0x1d4a8,\n 0x1d4ad,\n 0x1d4ad,\n 0x1d4ba,\n 0x1d4ba,\n 0x1d4bc,\n 0x1d4bc,\n 0x1d4c1,\n 0x1d4c1,\n 0x1d4c4,\n 0x1d4c4,\n 0x1d506,\n 0x1d506,\n 0x1d50b,\n 0x1d50c,\n 0x1d515,\n 0x1d515,\n 0x1d51d,\n 0x1d51d,\n 0x1d53a,\n 0x1d53a,\n 0x1d53f,\n 0x1d53f,\n 0x1d545,\n 0x1d545,\n 0x1d547,\n 0x1d549,\n 0x1d551,\n 0x1d551,\n 0x1d6a4,\n 0x1d6a7,\n 0x1d7ca,\n 0x1d7cd,\n 0x1d800,\n 0x1fffd,\n 0x2a6d7,\n 0x2f7ff,\n 0x2fa1e,\n 0x2fffd,\n 0x30000,\n 0x3fffd,\n 0x40000,\n 0x4fffd,\n 0x50000,\n 0x5fffd,\n 0x60000,\n 0x6fffd,\n 0x70000,\n 0x7fffd,\n 0x80000,\n 0x8fffd,\n 0x90000,\n 0x9fffd,\n 0xa0000,\n 0xafffd,\n 0xb0000,\n 0xbfffd,\n 0xc0000,\n 0xcfffd,\n 0xd0000,\n 0xdfffd,\n 0xe0000,\n 0xe0000,\n 0xe0002,\n 0xe001f,\n 0xe0080,\n 0xefffd\n];\n/* eslint-enable */\n\nconst isUnassignedCodePoint = character =>\n inRange(character, unassigned_code_points);\n\n/* eslint-disable prettier/prettier */\n/**\n * B.1 Commonly mapped to nothing\n * @link https://tools.ietf.org/html/rfc3454#appendix-B.1\n */\nconst commonly_mapped_to_nothing = [\n 0x00ad,\n 0x00ad,\n 0x034f,\n 0x034f,\n 0x1806,\n 0x1806,\n 0x180b,\n 0x180b,\n 0x180c,\n 0x180c,\n 0x180d,\n 0x180d,\n 0x200b,\n 0x200b,\n 0x200c,\n 0x200c,\n 0x200d,\n 0x200d,\n 0x2060,\n 0x2060,\n 0xfe00,\n 0xfe00,\n 0xfe01,\n 0xfe01,\n 0xfe02,\n 0xfe02,\n 0xfe03,\n 0xfe03,\n 0xfe04,\n 0xfe04,\n 0xfe05,\n 0xfe05,\n 0xfe06,\n 0xfe06,\n 0xfe07,\n 0xfe07,\n 0xfe08,\n 0xfe08,\n 0xfe09,\n 0xfe09,\n 0xfe0a,\n 0xfe0a,\n 0xfe0b,\n 0xfe0b,\n 0xfe0c,\n 0xfe0c,\n 0xfe0d,\n 0xfe0d,\n 0xfe0e,\n 0xfe0e,\n 0xfe0f,\n 0xfe0f,\n 0xfeff,\n 0xfeff\n];\n/* eslint-enable */\n\nconst isCommonlyMappedToNothing = character =>\n inRange(character, commonly_mapped_to_nothing);\n\n/* eslint-disable prettier/prettier */\n/**\n * C.1.2 Non-ASCII space characters\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.1.2\n */\nconst non_ASCII_space_characters = [\n 0x00a0,\n 0x00a0 /* NO-BREAK SPACE */,\n 0x1680,\n 0x1680 /* OGHAM SPACE MARK */,\n 0x2000,\n 0x2000 /* EN QUAD */,\n 0x2001,\n 0x2001 /* EM QUAD */,\n 0x2002,\n 0x2002 /* EN SPACE */,\n 0x2003,\n 0x2003 /* EM SPACE */,\n 0x2004,\n 0x2004 /* THREE-PER-EM SPACE */,\n 0x2005,\n 0x2005 /* FOUR-PER-EM SPACE */,\n 0x2006,\n 0x2006 /* SIX-PER-EM SPACE */,\n 0x2007,\n 0x2007 /* FIGURE SPACE */,\n 0x2008,\n 0x2008 /* PUNCTUATION SPACE */,\n 0x2009,\n 0x2009 /* THIN SPACE */,\n 0x200a,\n 0x200a /* HAIR SPACE */,\n 0x200b,\n 0x200b /* ZERO WIDTH SPACE */,\n 0x202f,\n 0x202f /* NARROW NO-BREAK SPACE */,\n 0x205f,\n 0x205f /* MEDIUM MATHEMATICAL SPACE */,\n 0x3000,\n 0x3000 /* IDEOGRAPHIC SPACE */\n];\n/* eslint-enable */\n\nconst isNonASCIISpaceCharacter = character =>\n inRange(character, non_ASCII_space_characters);\n\n/* eslint-disable prettier/prettier */\nconst non_ASCII_controls_characters = [\n /**\n * C.2.2 Non-ASCII control characters\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.2.2\n */\n 0x0080,\n 0x009f /* [CONTROL CHARACTERS] */,\n 0x06dd,\n 0x06dd /* ARABIC END OF AYAH */,\n 0x070f,\n 0x070f /* SYRIAC ABBREVIATION MARK */,\n 0x180e,\n 0x180e /* MONGOLIAN VOWEL SEPARATOR */,\n 0x200c,\n 0x200c /* ZERO WIDTH NON-JOINER */,\n 0x200d,\n 0x200d /* ZERO WIDTH JOINER */,\n 0x2028,\n 0x2028 /* LINE SEPARATOR */,\n 0x2029,\n 0x2029 /* PARAGRAPH SEPARATOR */,\n 0x2060,\n 0x2060 /* WORD JOINER */,\n 0x2061,\n 0x2061 /* FUNCTION APPLICATION */,\n 0x2062,\n 0x2062 /* INVISIBLE TIMES */,\n 0x2063,\n 0x2063 /* INVISIBLE SEPARATOR */,\n 0x206a,\n 0x206f /* [CONTROL CHARACTERS] */,\n 0xfeff,\n 0xfeff /* ZERO WIDTH NO-BREAK SPACE */,\n 0xfff9,\n 0xfffc /* [CONTROL CHARACTERS] */,\n 0x1d173,\n 0x1d17a /* [MUSICAL CONTROL CHARACTERS] */\n];\n\nconst non_character_codepoints = [\n /**\n * C.4 Non-character code points\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.4\n */\n 0xfdd0,\n 0xfdef /* [NONCHARACTER CODE POINTS] */,\n 0xfffe,\n 0xffff /* [NONCHARACTER CODE POINTS] */,\n 0x1fffe,\n 0x1ffff /* [NONCHARACTER CODE POINTS] */,\n 0x2fffe,\n 0x2ffff /* [NONCHARACTER CODE POINTS] */,\n 0x3fffe,\n 0x3ffff /* [NONCHARACTER CODE POINTS] */,\n 0x4fffe,\n 0x4ffff /* [NONCHARACTER CODE POINTS] */,\n 0x5fffe,\n 0x5ffff /* [NONCHARACTER CODE POINTS] */,\n 0x6fffe,\n 0x6ffff /* [NONCHARACTER CODE POINTS] */,\n 0x7fffe,\n 0x7ffff /* [NONCHARACTER CODE POINTS] */,\n 0x8fffe,\n 0x8ffff /* [NONCHARACTER CODE POINTS] */,\n 0x9fffe,\n 0x9ffff /* [NONCHARACTER CODE POINTS] */,\n 0xafffe,\n 0xaffff /* [NONCHARACTER CODE POINTS] */,\n 0xbfffe,\n 0xbffff /* [NONCHARACTER CODE POINTS] */,\n 0xcfffe,\n 0xcffff /* [NONCHARACTER CODE POINTS] */,\n 0xdfffe,\n 0xdffff /* [NONCHARACTER CODE POINTS] */,\n 0xefffe,\n 0xeffff /* [NONCHARACTER CODE POINTS] */,\n 0x10fffe,\n 0x10ffff /* [NONCHARACTER CODE POINTS] */\n];\n\n/**\n * 2.3. Prohibited Output\n */\nconst prohibited_characters = [\n /**\n * C.2.1 ASCII control characters\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.2.1\n */\n 0,\n 0x001f /* [CONTROL CHARACTERS] */,\n 0x007f,\n 0x007f /* DELETE */,\n\n /**\n * C.8 Change display properties or are deprecated\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.8\n */\n 0x0340,\n 0x0340 /* COMBINING GRAVE TONE MARK */,\n 0x0341,\n 0x0341 /* COMBINING ACUTE TONE MARK */,\n 0x200e,\n 0x200e /* LEFT-TO-RIGHT MARK */,\n 0x200f,\n 0x200f /* RIGHT-TO-LEFT MARK */,\n 0x202a,\n 0x202a /* LEFT-TO-RIGHT EMBEDDING */,\n 0x202b,\n 0x202b /* RIGHT-TO-LEFT EMBEDDING */,\n 0x202c,\n 0x202c /* POP DIRECTIONAL FORMATTING */,\n 0x202d,\n 0x202d /* LEFT-TO-RIGHT OVERRIDE */,\n 0x202e,\n 0x202e /* RIGHT-TO-LEFT OVERRIDE */,\n 0x206a,\n 0x206a /* INHIBIT SYMMETRIC SWAPPING */,\n 0x206b,\n 0x206b /* ACTIVATE SYMMETRIC SWAPPING */,\n 0x206c,\n 0x206c /* INHIBIT ARABIC FORM SHAPING */,\n 0x206d,\n 0x206d /* ACTIVATE ARABIC FORM SHAPING */,\n 0x206e,\n 0x206e /* NATIONAL DIGIT SHAPES */,\n 0x206f,\n 0x206f /* NOMINAL DIGIT SHAPES */,\n\n /**\n * C.7 Inappropriate for canonical representation\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.7\n */\n 0x2ff0,\n 0x2ffb /* [IDEOGRAPHIC DESCRIPTION CHARACTERS] */,\n\n /**\n * C.5 Surrogate codes\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.5\n */\n 0xd800,\n 0xdfff,\n\n /**\n * C.3 Private use\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.3\n */\n 0xe000,\n 0xf8ff /* [PRIVATE USE, PLANE 0] */,\n\n /**\n * C.6 Inappropriate for plain text\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.6\n */\n 0xfff9,\n 0xfff9 /* INTERLINEAR ANNOTATION ANCHOR */,\n 0xfffa,\n 0xfffa /* INTERLINEAR ANNOTATION SEPARATOR */,\n 0xfffb,\n 0xfffb /* INTERLINEAR ANNOTATION TERMINATOR */,\n 0xfffc,\n 0xfffc /* OBJECT REPLACEMENT CHARACTER */,\n 0xfffd,\n 0xfffd /* REPLACEMENT CHARACTER */,\n\n /**\n * C.9 Tagging characters\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.9\n */\n 0xe0001,\n 0xe0001 /* LANGUAGE TAG */,\n 0xe0020,\n 0xe007f /* [TAGGING CHARACTERS] */,\n\n /**\n * C.3 Private use\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.3\n */\n\n 0xf0000,\n 0xffffd /* [PRIVATE USE, PLANE 15] */,\n 0x100000,\n 0x10fffd /* [PRIVATE USE, PLANE 16] */\n];\n/* eslint-enable */\n\nconst isProhibitedCharacter = character =>\n inRange(character, non_ASCII_space_characters) ||\n inRange(character, prohibited_characters) ||\n inRange(character, non_ASCII_controls_characters) ||\n inRange(character, non_character_codepoints);\n\n/* eslint-disable prettier/prettier */\n/**\n * D.1 Characters with bidirectional property \"R\" or \"AL\"\n * @link https://tools.ietf.org/html/rfc3454#appendix-D.1\n */\nconst bidirectional_r_al = [\n 0x05be,\n 0x05be,\n 0x05c0,\n 0x05c0,\n 0x05c3,\n 0x05c3,\n 0x05d0,\n 0x05ea,\n 0x05f0,\n 0x05f4,\n 0x061b,\n 0x061b,\n 0x061f,\n 0x061f,\n 0x0621,\n 0x063a,\n 0x0640,\n 0x064a,\n 0x066d,\n 0x066f,\n 0x0671,\n 0x06d5,\n 0x06dd,\n 0x06dd,\n 0x06e5,\n 0x06e6,\n 0x06fa,\n 0x06fe,\n 0x0700,\n 0x070d,\n 0x0710,\n 0x0710,\n 0x0712,\n 0x072c,\n 0x0780,\n 0x07a5,\n 0x07b1,\n 0x07b1,\n 0x200f,\n 0x200f,\n 0xfb1d,\n 0xfb1d,\n 0xfb1f,\n 0xfb28,\n 0xfb2a,\n 0xfb36,\n 0xfb38,\n 0xfb3c,\n 0xfb3e,\n 0xfb3e,\n 0xfb40,\n 0xfb41,\n 0xfb43,\n 0xfb44,\n 0xfb46,\n 0xfbb1,\n 0xfbd3,\n 0xfd3d,\n 0xfd50,\n 0xfd8f,\n 0xfd92,\n 0xfdc7,\n 0xfdf0,\n 0xfdfc,\n 0xfe70,\n 0xfe74,\n 0xfe76,\n 0xfefc\n];\n/* eslint-enable */\n\nconst isBidirectionalRAL = character => inRange(character, bidirectional_r_al);\n\n/* eslint-disable prettier/prettier */\n/**\n * D.2 Characters with bidirectional property \"L\"\n * @link https://tools.ietf.org/html/rfc3454#appendix-D.2\n */\nconst bidirectional_l = [\n 0x0041,\n 0x005a,\n 0x0061,\n 0x007a,\n 0x00aa,\n 0x00aa,\n 0x00b5,\n 0x00b5,\n 0x00ba,\n 0x00ba,\n 0x00c0,\n 0x00d6,\n 0x00d8,\n 0x00f6,\n 0x00f8,\n 0x0220,\n 0x0222,\n 0x0233,\n 0x0250,\n 0x02ad,\n 0x02b0,\n 0x02b8,\n 0x02bb,\n 0x02c1,\n 0x02d0,\n 0x02d1,\n 0x02e0,\n 0x02e4,\n 0x02ee,\n 0x02ee,\n 0x037a,\n 0x037a,\n 0x0386,\n 0x0386,\n 0x0388,\n 0x038a,\n 0x038c,\n 0x038c,\n 0x038e,\n 0x03a1,\n 0x03a3,\n 0x03ce,\n 0x03d0,\n 0x03f5,\n 0x0400,\n 0x0482,\n 0x048a,\n 0x04ce,\n 0x04d0,\n 0x04f5,\n 0x04f8,\n 0x04f9,\n 0x0500,\n 0x050f,\n 0x0531,\n 0x0556,\n 0x0559,\n 0x055f,\n 0x0561,\n 0x0587,\n 0x0589,\n 0x0589,\n 0x0903,\n 0x0903,\n 0x0905,\n 0x0939,\n 0x093d,\n 0x0940,\n 0x0949,\n 0x094c,\n 0x0950,\n 0x0950,\n 0x0958,\n 0x0961,\n 0x0964,\n 0x0970,\n 0x0982,\n 0x0983,\n 0x0985,\n 0x098c,\n 0x098f,\n 0x0990,\n 0x0993,\n 0x09a8,\n 0x09aa,\n 0x09b0,\n 0x09b2,\n 0x09b2,\n 0x09b6,\n 0x09b9,\n 0x09be,\n 0x09c0,\n 0x09c7,\n 0x09c8,\n 0x09cb,\n 0x09cc,\n 0x09d7,\n 0x09d7,\n 0x09dc,\n 0x09dd,\n 0x09df,\n 0x09e1,\n 0x09e6,\n 0x09f1,\n 0x09f4,\n 0x09fa,\n 0x0a05,\n 0x0a0a,\n 0x0a0f,\n 0x0a10,\n 0x0a13,\n 0x0a28,\n 0x0a2a,\n 0x0a30,\n 0x0a32,\n 0x0a33,\n 0x0a35,\n 0x0a36,\n 0x0a38,\n 0x0a39,\n 0x0a3e,\n 0x0a40,\n 0x0a59,\n 0x0a5c,\n 0x0a5e,\n 0x0a5e,\n 0x0a66,\n 0x0a6f,\n 0x0a72,\n 0x0a74,\n 0x0a83,\n 0x0a83,\n 0x0a85,\n 0x0a8b,\n 0x0a8d,\n 0x0a8d,\n 0x0a8f,\n 0x0a91,\n 0x0a93,\n 0x0aa8,\n 0x0aaa,\n 0x0ab0,\n 0x0ab2,\n 0x0ab3,\n 0x0ab5,\n 0x0ab9,\n 0x0abd,\n 0x0ac0,\n 0x0ac9,\n 0x0ac9,\n 0x0acb,\n 0x0acc,\n 0x0ad0,\n 0x0ad0,\n 0x0ae0,\n 0x0ae0,\n 0x0ae6,\n 0x0aef,\n 0x0b02,\n 0x0b03,\n 0x0b05,\n 0x0b0c,\n 0x0b0f,\n 0x0b10,\n 0x0b13,\n 0x0b28,\n 0x0b2a,\n 0x0b30,\n 0x0b32,\n 0x0b33,\n 0x0b36,\n 0x0b39,\n 0x0b3d,\n 0x0b3e,\n 0x0b40,\n 0x0b40,\n 0x0b47,\n 0x0b48,\n 0x0b4b,\n 0x0b4c,\n 0x0b57,\n 0x0b57,\n 0x0b5c,\n 0x0b5d,\n 0x0b5f,\n 0x0b61,\n 0x0b66,\n 0x0b70,\n 0x0b83,\n 0x0b83,\n 0x0b85,\n 0x0b8a,\n 0x0b8e,\n 0x0b90,\n 0x0b92,\n 0x0b95,\n 0x0b99,\n 0x0b9a,\n 0x0b9c,\n 0x0b9c,\n 0x0b9e,\n 0x0b9f,\n 0x0ba3,\n 0x0ba4,\n 0x0ba8,\n 0x0baa,\n 0x0bae,\n 0x0bb5,\n 0x0bb7,\n 0x0bb9,\n 0x0bbe,\n 0x0bbf,\n 0x0bc1,\n 0x0bc2,\n 0x0bc6,\n 0x0bc8,\n 0x0bca,\n 0x0bcc,\n 0x0bd7,\n 0x0bd7,\n 0x0be7,\n 0x0bf2,\n 0x0c01,\n 0x0c03,\n 0x0c05,\n 0x0c0c,\n 0x0c0e,\n 0x0c10,\n 0x0c12,\n 0x0c28,\n 0x0c2a,\n 0x0c33,\n 0x0c35,\n 0x0c39,\n 0x0c41,\n 0x0c44,\n 0x0c60,\n 0x0c61,\n 0x0c66,\n 0x0c6f,\n 0x0c82,\n 0x0c83,\n 0x0c85,\n 0x0c8c,\n 0x0c8e,\n 0x0c90,\n 0x0c92,\n 0x0ca8,\n 0x0caa,\n 0x0cb3,\n 0x0cb5,\n 0x0cb9,\n 0x0cbe,\n 0x0cbe,\n 0x0cc0,\n 0x0cc4,\n 0x0cc7,\n 0x0cc8,\n 0x0cca,\n 0x0ccb,\n 0x0cd5,\n 0x0cd6,\n 0x0cde,\n 0x0cde,\n 0x0ce0,\n 0x0ce1,\n 0x0ce6,\n 0x0cef,\n 0x0d02,\n 0x0d03,\n 0x0d05,\n 0x0d0c,\n 0x0d0e,\n 0x0d10,\n 0x0d12,\n 0x0d28,\n 0x0d2a,\n 0x0d39,\n 0x0d3e,\n 0x0d40,\n 0x0d46,\n 0x0d48,\n 0x0d4a,\n 0x0d4c,\n 0x0d57,\n 0x0d57,\n 0x0d60,\n 0x0d61,\n 0x0d66,\n 0x0d6f,\n 0x0d82,\n 0x0d83,\n 0x0d85,\n 0x0d96,\n 0x0d9a,\n 0x0db1,\n 0x0db3,\n 0x0dbb,\n 0x0dbd,\n 0x0dbd,\n 0x0dc0,\n 0x0dc6,\n 0x0dcf,\n 0x0dd1,\n 0x0dd8,\n 0x0ddf,\n 0x0df2,\n 0x0df4,\n 0x0e01,\n 0x0e30,\n 0x0e32,\n 0x0e33,\n 0x0e40,\n 0x0e46,\n 0x0e4f,\n 0x0e5b,\n 0x0e81,\n 0x0e82,\n 0x0e84,\n 0x0e84,\n 0x0e87,\n 0x0e88,\n 0x0e8a,\n 0x0e8a,\n 0x0e8d,\n 0x0e8d,\n 0x0e94,\n 0x0e97,\n 0x0e99,\n 0x0e9f,\n 0x0ea1,\n 0x0ea3,\n 0x0ea5,\n 0x0ea5,\n 0x0ea7,\n 0x0ea7,\n 0x0eaa,\n 0x0eab,\n 0x0ead,\n 0x0eb0,\n 0x0eb2,\n 0x0eb3,\n 0x0ebd,\n 0x0ebd,\n 0x0ec0,\n 0x0ec4,\n 0x0ec6,\n 0x0ec6,\n 0x0ed0,\n 0x0ed9,\n 0x0edc,\n 0x0edd,\n 0x0f00,\n 0x0f17,\n 0x0f1a,\n 0x0f34,\n 0x0f36,\n 0x0f36,\n 0x0f38,\n 0x0f38,\n 0x0f3e,\n 0x0f47,\n 0x0f49,\n 0x0f6a,\n 0x0f7f,\n 0x0f7f,\n 0x0f85,\n 0x0f85,\n 0x0f88,\n 0x0f8b,\n 0x0fbe,\n 0x0fc5,\n 0x0fc7,\n 0x0fcc,\n 0x0fcf,\n 0x0fcf,\n 0x1000,\n 0x1021,\n 0x1023,\n 0x1027,\n 0x1029,\n 0x102a,\n 0x102c,\n 0x102c,\n 0x1031,\n 0x1031,\n 0x1038,\n 0x1038,\n 0x1040,\n 0x1057,\n 0x10a0,\n 0x10c5,\n 0x10d0,\n 0x10f8,\n 0x10fb,\n 0x10fb,\n 0x1100,\n 0x1159,\n 0x115f,\n 0x11a2,\n 0x11a8,\n 0x11f9,\n 0x1200,\n 0x1206,\n 0x1208,\n 0x1246,\n 0x1248,\n 0x1248,\n 0x124a,\n 0x124d,\n 0x1250,\n 0x1256,\n 0x1258,\n 0x1258,\n 0x125a,\n 0x125d,\n 0x1260,\n 0x1286,\n 0x1288,\n 0x1288,\n 0x128a,\n 0x128d,\n 0x1290,\n 0x12ae,\n 0x12b0,\n 0x12b0,\n 0x12b2,\n 0x12b5,\n 0x12b8,\n 0x12be,\n 0x12c0,\n 0x12c0,\n 0x12c2,\n 0x12c5,\n 0x12c8,\n 0x12ce,\n 0x12d0,\n 0x12d6,\n 0x12d8,\n 0x12ee,\n 0x12f0,\n 0x130e,\n 0x1310,\n 0x1310,\n 0x1312,\n 0x1315,\n 0x1318,\n 0x131e,\n 0x1320,\n 0x1346,\n 0x1348,\n 0x135a,\n 0x1361,\n 0x137c,\n 0x13a0,\n 0x13f4,\n 0x1401,\n 0x1676,\n 0x1681,\n 0x169a,\n 0x16a0,\n 0x16f0,\n 0x1700,\n 0x170c,\n 0x170e,\n 0x1711,\n 0x1720,\n 0x1731,\n 0x1735,\n 0x1736,\n 0x1740,\n 0x1751,\n 0x1760,\n 0x176c,\n 0x176e,\n 0x1770,\n 0x1780,\n 0x17b6,\n 0x17be,\n 0x17c5,\n 0x17c7,\n 0x17c8,\n 0x17d4,\n 0x17da,\n 0x17dc,\n 0x17dc,\n 0x17e0,\n 0x17e9,\n 0x1810,\n 0x1819,\n 0x1820,\n 0x1877,\n 0x1880,\n 0x18a8,\n 0x1e00,\n 0x1e9b,\n 0x1ea0,\n 0x1ef9,\n 0x1f00,\n 0x1f15,\n 0x1f18,\n 0x1f1d,\n 0x1f20,\n 0x1f45,\n 0x1f48,\n 0x1f4d,\n 0x1f50,\n 0x1f57,\n 0x1f59,\n 0x1f59,\n 0x1f5b,\n 0x1f5b,\n 0x1f5d,\n 0x1f5d,\n 0x1f5f,\n 0x1f7d,\n 0x1f80,\n 0x1fb4,\n 0x1fb6,\n 0x1fbc,\n 0x1fbe,\n 0x1fbe,\n 0x1fc2,\n 0x1fc4,\n 0x1fc6,\n 0x1fcc,\n 0x1fd0,\n 0x1fd3,\n 0x1fd6,\n 0x1fdb,\n 0x1fe0,\n 0x1fec,\n 0x1ff2,\n 0x1ff4,\n 0x1ff6,\n 0x1ffc,\n 0x200e,\n 0x200e,\n 0x2071,\n 0x2071,\n 0x207f,\n 0x207f,\n 0x2102,\n 0x2102,\n 0x2107,\n 0x2107,\n 0x210a,\n 0x2113,\n 0x2115,\n 0x2115,\n 0x2119,\n 0x211d,\n 0x2124,\n 0x2124,\n 0x2126,\n 0x2126,\n 0x2128,\n 0x2128,\n 0x212a,\n 0x212d,\n 0x212f,\n 0x2131,\n 0x2133,\n 0x2139,\n 0x213d,\n 0x213f,\n 0x2145,\n 0x2149,\n 0x2160,\n 0x2183,\n 0x2336,\n 0x237a,\n 0x2395,\n 0x2395,\n 0x249c,\n 0x24e9,\n 0x3005,\n 0x3007,\n 0x3021,\n 0x3029,\n 0x3031,\n 0x3035,\n 0x3038,\n 0x303c,\n 0x3041,\n 0x3096,\n 0x309d,\n 0x309f,\n 0x30a1,\n 0x30fa,\n 0x30fc,\n 0x30ff,\n 0x3105,\n 0x312c,\n 0x3131,\n 0x318e,\n 0x3190,\n 0x31b7,\n 0x31f0,\n 0x321c,\n 0x3220,\n 0x3243,\n 0x3260,\n 0x327b,\n 0x327f,\n 0x32b0,\n 0x32c0,\n 0x32cb,\n 0x32d0,\n 0x32fe,\n 0x3300,\n 0x3376,\n 0x337b,\n 0x33dd,\n 0x33e0,\n 0x33fe,\n 0x3400,\n 0x4db5,\n 0x4e00,\n 0x9fa5,\n 0xa000,\n 0xa48c,\n 0xac00,\n 0xd7a3,\n 0xd800,\n 0xfa2d,\n 0xfa30,\n 0xfa6a,\n 0xfb00,\n 0xfb06,\n 0xfb13,\n 0xfb17,\n 0xff21,\n 0xff3a,\n 0xff41,\n 0xff5a,\n 0xff66,\n 0xffbe,\n 0xffc2,\n 0xffc7,\n 0xffca,\n 0xffcf,\n 0xffd2,\n 0xffd7,\n 0xffda,\n 0xffdc,\n 0x10300,\n 0x1031e,\n 0x10320,\n 0x10323,\n 0x10330,\n 0x1034a,\n 0x10400,\n 0x10425,\n 0x10428,\n 0x1044d,\n 0x1d000,\n 0x1d0f5,\n 0x1d100,\n 0x1d126,\n 0x1d12a,\n 0x1d166,\n 0x1d16a,\n 0x1d172,\n 0x1d183,\n 0x1d184,\n 0x1d18c,\n 0x1d1a9,\n 0x1d1ae,\n 0x1d1dd,\n 0x1d400,\n 0x1d454,\n 0x1d456,\n 0x1d49c,\n 0x1d49e,\n 0x1d49f,\n 0x1d4a2,\n 0x1d4a2,\n 0x1d4a5,\n 0x1d4a6,\n 0x1d4a9,\n 0x1d4ac,\n 0x1d4ae,\n 0x1d4b9,\n 0x1d4bb,\n 0x1d4bb,\n 0x1d4bd,\n 0x1d4c0,\n 0x1d4c2,\n 0x1d4c3,\n 0x1d4c5,\n 0x1d505,\n 0x1d507,\n 0x1d50a,\n 0x1d50d,\n 0x1d514,\n 0x1d516,\n 0x1d51c,\n 0x1d51e,\n 0x1d539,\n 0x1d53b,\n 0x1d53e,\n 0x1d540,\n 0x1d544,\n 0x1d546,\n 0x1d546,\n 0x1d54a,\n 0x1d550,\n 0x1d552,\n 0x1d6a3,\n 0x1d6a8,\n 0x1d7c9,\n 0x20000,\n 0x2a6d6,\n 0x2f800,\n 0x2fa1d,\n 0xf0000,\n 0xffffd,\n 0x100000,\n 0x10fffd\n];\n/* eslint-enable */\n\nconst isBidirectionalL = character => inRange(character, bidirectional_l);\n\nexport {\n isUnassignedCodePoint,\n isCommonlyMappedToNothing,\n isNonASCIISpaceCharacter,\n isProhibitedCharacter,\n isBidirectionalRAL,\n isBidirectionalL\n};\n","import {\n isUnassignedCodePoint,\n isCommonlyMappedToNothing,\n isNonASCIISpaceCharacter,\n isProhibitedCharacter,\n isBidirectionalRAL,\n isBidirectionalL\n} from './lib/code-points';\n\n// 2.1. Mapping\n\n/**\n * non-ASCII space characters [StringPrep, C.1.2] that can be\n * mapped to SPACE (U+0020)\n */\nconst mapping2space = isNonASCIISpaceCharacter;\n\n/**\n * the \"commonly mapped to nothing\" characters [StringPrep, B.1]\n * that can be mapped to nothing.\n */\nconst mapping2nothing = isCommonlyMappedToNothing;\n\n// utils\nconst getCodePoint = character => character.codePointAt(0);\nconst first = x => x[0];\nconst last = x => x[x.length - 1];\n\n/**\n * Convert provided string into an array of Unicode Code Points.\n * Based on https://stackoverflow.com/a/21409165/1556249\n * and https://www.npmjs.com/package/code-point-at.\n * @param {string} input\n * @returns {number[]}\n */\nfunction toCodePoints(input) {\n const codepoints = [];\n const size = input.length;\n\n for (let i = 0; i < size; i += 1) {\n const before = input.charCodeAt(i);\n\n if (before >= 0xd800 && before <= 0xdbff && size > i + 1) {\n const next = input.charCodeAt(i + 1);\n\n if (next >= 0xdc00 && next <= 0xdfff) {\n codepoints.push((before - 0xd800) * 0x400 + next - 0xdc00 + 0x10000);\n i += 1;\n continue;\n }\n }\n\n codepoints.push(before);\n }\n\n return codepoints;\n}\n\n/**\n * SASLprep.\n * @param {string} input\n * @param {Object} opts\n * @param {boolean} opts.allowUnassigned\n * @returns {string}\n */\nfunction saslprep(input, opts = {}) {\n if (typeof input !== 'string') {\n throw new TypeError('Expected string.');\n }\n\n if (input.length === 0) {\n return '';\n }\n\n // 1. Map\n const mapped_input = toCodePoints(input)\n // 1.1 mapping to space\n .map(character => (mapping2space(character) ? 0x20 : character))\n // 1.2 mapping to nothing\n .filter(character => !mapping2nothing(character));\n\n // 2. Normalize\n const normalized_input = String.fromCodePoint\n .apply(null, mapped_input)\n .normalize('NFKC');\n\n const normalized_map = toCodePoints(normalized_input);\n\n // 3. Prohibit\n const hasProhibited = normalized_map.some(isProhibitedCharacter);\n\n if (hasProhibited) {\n throw new Error(\n 'Prohibited character, see https://tools.ietf.org/html/rfc4013#section-2.3'\n );\n }\n\n // Unassigned Code Points\n if (opts.allowUnassigned !== true) {\n const hasUnassigned = normalized_map.some(isUnassignedCodePoint);\n\n if (hasUnassigned) {\n throw new Error(\n 'Unassigned code point, see https://tools.ietf.org/html/rfc4013#section-2.5'\n );\n }\n }\n\n // 4. check bidi\n\n const hasBidiRAL = normalized_map.some(isBidirectionalRAL);\n\n const hasBidiL = normalized_map.some(isBidirectionalL);\n\n // 4.1 If a string contains any RandALCat character, the string MUST NOT\n // contain any LCat character.\n if (hasBidiRAL && hasBidiL) {\n throw new Error(\n 'String must not contain RandALCat and LCat at the same time,' +\n ' see https://tools.ietf.org/html/rfc3454#section-6'\n );\n }\n\n /**\n * 4.2 If a string contains any RandALCat character, a RandALCat\n * character MUST be the first character of the string, and a\n * RandALCat character MUST be the last character of the string.\n */\n\n const isFirstBidiRAL = isBidirectionalRAL(\n getCodePoint(first(normalized_input))\n );\n const isLastBidiRAL = isBidirectionalRAL(\n getCodePoint(last(normalized_input))\n );\n\n if (hasBidiRAL && !(isFirstBidiRAL && isLastBidiRAL)) {\n throw new Error(\n 'Bidirectional RandALCat character must be the first and the last' +\n ' character of the string, see https://tools.ietf.org/html/rfc3454#section-6'\n );\n }\n\n return normalized_input;\n}\n\nexport default saslprep;\n","/*\n PDFSecurity - represents PDF security settings\n By Yang Liu <hi@zesik.com>\n */\n\nimport CryptoJS from 'crypto-js';\nimport saslprep from './saslprep/index';\n\nclass PDFSecurity {\n static generateFileID(info = {}) {\n let infoStr = `${info.CreationDate.getTime()}\\n`;\n\n for (let key in info) {\n if (!info.hasOwnProperty(key)) {\n continue;\n }\n infoStr += `${key}: ${info[key]}\\n`;\n }\n\n return wordArrayToBuffer(CryptoJS.MD5(infoStr));\n }\n\n static generateRandomWordArray(bytes) {\n return CryptoJS.lib.WordArray.random(bytes);\n }\n\n static create(document, options = {}) {\n if (!options.ownerPassword && !options.userPassword) {\n return null;\n }\n return new PDFSecurity(document, options);\n }\n\n constructor(document, options = {}) {\n if (!options.ownerPassword && !options.userPassword) {\n throw new Error('None of owner password and user password is defined.');\n }\n\n this.document = document;\n this._setupEncryption(options);\n }\n\n _setupEncryption(options) {\n switch (options.pdfVersion) {\n case '1.4':\n case '1.5':\n this.version = 2;\n break;\n case '1.6':\n case '1.7':\n this.version = 4;\n break;\n case '1.7ext3':\n this.version = 5;\n break;\n default:\n this.version = 1;\n break;\n }\n\n const encDict = {\n Filter: 'Standard'\n };\n\n switch (this.version) {\n case 1:\n case 2:\n case 4:\n this._setupEncryptionV1V2V4(this.version, encDict, options);\n break;\n case 5:\n this._setupEncryptionV5(encDict, options);\n break;\n }\n\n this.dictionary = this.document.ref(encDict);\n }\n\n _setupEncryptionV1V2V4(v, encDict, options) {\n let r, permissions;\n switch (v) {\n case 1:\n r = 2;\n this.keyBits = 40;\n permissions = getPermissionsR2(options.permissions);\n break;\n case 2:\n r = 3;\n this.keyBits = 128;\n permissions = getPermissionsR3(options.permissions);\n break;\n case 4:\n r = 4;\n this.keyBits = 128;\n permissions = getPermissionsR3(options.permissions);\n break;\n }\n\n const paddedUserPassword = processPasswordR2R3R4(options.userPassword);\n const paddedOwnerPassword = options.ownerPassword\n ? processPasswordR2R3R4(options.ownerPassword)\n : paddedUserPassword;\n\n const ownerPasswordEntry = getOwnerPasswordR2R3R4(\n r,\n this.keyBits,\n paddedUserPassword,\n paddedOwnerPassword\n );\n this.encryptionKey = getEncryptionKeyR2R3R4(\n r,\n this.keyBits,\n this.document._id,\n paddedUserPassword,\n ownerPasswordEntry,\n permissions\n );\n let userPasswordEntry;\n if (r === 2) {\n userPasswordEntry = getUserPasswordR2(this.encryptionKey);\n } else {\n userPasswordEntry = getUserPasswordR3R4(\n this.document._id,\n this.encryptionKey\n );\n }\n\n encDict.V = v;\n if (v >= 2) {\n encDict.Length = this.keyBits;\n }\n if (v === 4) {\n encDict.CF = {\n StdCF: {\n AuthEvent: 'DocOpen',\n CFM: 'AESV2',\n Length: this.keyBits / 8\n }\n };\n encDict.StmF = 'StdCF';\n encDict.StrF = 'StdCF';\n }\n encDict.R = r;\n encDict.O = wordArrayToBuffer(ownerPasswordEntry);\n encDict.U = wordArrayToBuffer(userPasswordEntry);\n encDict.P = permissions;\n }\n\n _setupEncryptionV5(encDict, options) {\n this.keyBits = 256;\n const permissions = getPermissionsR3(options);\n\n const processedUserPassword = processPasswordR5(options.userPassword);\n const processedOwnerPassword = options.ownerPassword\n ? processPasswordR5(options.ownerPassword)\n : processedUserPassword;\n\n this.encryptionKey = getEncryptionKeyR5(\n PDFSecurity.generateRandomWordArray\n );\n const userPasswordEntry = getUserPasswordR5(\n processedUserPassword,\n PDFSecurity.generateRandomWordArray\n );\n const userKeySalt = CryptoJS.lib.WordArray.create(\n userPasswordEntry.words.slice(10, 12),\n 8\n );\n const userEncryptionKeyEntry = getUserEncryptionKeyR5(\n processedUserPassword,\n userKeySalt,\n this.encryptionKey\n );\n const ownerPasswordEntry = getOwnerPasswordR5(\n processedOwnerPassword,\n userPasswordEntry,\n PDFSecurity.generateRandomWordArray\n );\n const ownerKeySalt = CryptoJS.lib.WordArray.create(\n ownerPasswordEntry.words.slice(10, 12),\n 8\n );\n const ownerEncryptionKeyEntry = getOwnerEncryptionKeyR5(\n processedOwnerPassword,\n ownerKeySalt,\n userPasswordEntry,\n this.encryptionKey\n );\n const permsEntry = getEncryptedPermissionsR5(\n permissions,\n this.encryptionKey,\n PDFSecurity.generateRandomWordArray\n );\n\n encDict.V = 5;\n encDict.Length = this.keyBits;\n encDict.CF = {\n StdCF: {\n AuthEvent: 'DocOpen',\n CFM: 'AESV3',\n Length: this.keyBits / 8\n }\n };\n encDict.StmF = 'StdCF';\n encDict.StrF = 'StdCF';\n encDict.R = 5;\n encDict.O = wordArrayToBuffer(ownerPasswordEntry);\n encDict.OE = wordArrayToBuffer(ownerEncryptionKeyEntry);\n encDict.U = wordArrayToBuffer(userPasswordEntry);\n encDict.UE = wordArrayToBuffer(userEncryptionKeyEntry);\n encDict.P = permissions;\n encDict.Perms = wordArrayToBuffer(permsEntry);\n }\n\n getEncryptFn(obj, gen) {\n let digest;\n if (this.version < 5) {\n digest = this.encryptionKey\n .clone()\n .concat(\n CryptoJS.lib.WordArray.create(\n [\n ((obj & 0xff) << 24) |\n ((obj & 0xff00) << 8) |\n ((obj >> 8) & 0xff00) |\n (gen & 0xff),\n (gen & 0xff00) << 16\n ],\n 5\n )\n );\n }\n\n if (this.version === 1 || this.version === 2) {\n let key = CryptoJS.MD5(digest);\n key.sigBytes = Math.min(16, this.keyBits / 8 + 5);\n return buffer =>\n wordArrayToBuffer(\n CryptoJS.RC4.encrypt(CryptoJS.lib.WordArray.create(buffer), key)\n .ciphertext\n );\n }\n\n let key;\n if (this.version === 4) {\n key = CryptoJS.MD5(\n digest.concat(CryptoJS.lib.WordArray.create([0x73416c54], 4))\n );\n } else {\n key = this.encryptionKey;\n }\n\n const iv = PDFSecurity.generateRandomWordArray(16);\n const options = {\n mode: CryptoJS.mode.CBC,\n padding: CryptoJS.pad.Pkcs7,\n iv\n };\n\n return buffer =>\n wordArrayToBuffer(\n iv\n .clone()\n .concat(\n CryptoJS.AES.encrypt(\n CryptoJS.lib.WordArray.create(buffer),\n key,\n options\n ).ciphertext\n )\n );\n }\n\n end() {\n this.dictionary.end();\n }\n}\n\nfunction getPermissionsR2(permissionObject = {}) {\n let permissions = 0xffffffc0 >> 0;\n if (permissionObject.printing) {\n permissions |= 0b000000000100;\n }\n if (permissionObject.modifying) {\n permissions |= 0b000000001000;\n }\n if (permissionObject.copying) {\n permissions |= 0b000000010000;\n }\n if (permissionObject.annotating) {\n permissions |= 0b000000100000;\n }\n return permissions;\n}\n\nfunction getPermissionsR3(permissionObject = {}) {\n let permissions = 0xfffff0c0 >> 0;\n if (permissionObject.printing === 'lowResolution') {\n permissions |= 0b000000000100;\n }\n if (permissionObject.printing === 'highResolution') {\n permissions |= 0b100000000100;\n }\n if (permissionObject.modifying) {\n permissions |= 0b000000001000;\n }\n if (permissionObject.copying) {\n permissions |= 0b000000010000;\n }\n if (permissionObject.annotating) {\n permissions |= 0b000000100000;\n }\n if (permissionObject.fillingForms) {\n permissions |= 0b000100000000;\n }\n if (permissionObject.contentAccessibility) {\n permissions |= 0b001000000000;\n }\n if (permissionObject.documentAssembly) {\n permissions |= 0b010000000000;\n }\n return permissions;\n}\n\nfunction getUserPasswordR2(encryptionKey) {\n return CryptoJS.RC4.encrypt(processPasswordR2R3R4(), encryptionKey)\n .ciphertext;\n}\n\nfunction getUserPasswordR3R4(documentId, encryptionKey) {\n const key = encryptionKey.clone();\n let cipher = CryptoJS.MD5(\n processPasswordR2R3R4().concat(CryptoJS.lib.WordArray.create(documentId))\n );\n for (let i = 0; i < 20; i++) {\n const xorRound = Math.ceil(key.sigBytes / 4);\n for (let j = 0; j < xorRound; j++) {\n key.words[j] =\n encryptionKey.words[j] ^ (i | (i << 8) | (i << 16) | (i << 24));\n }\n cipher = CryptoJS.RC4.encrypt(cipher, key).ciphertext;\n }\n return cipher.concat(CryptoJS.lib.WordArray.create(null, 16));\n}\n\nfunction getOwnerPasswordR2R3R4(\n r,\n keyBits,\n paddedUserPassword,\n paddedOwnerPassword\n) {\n let digest = paddedOwnerPassword;\n let round = r >= 3 ? 51 : 1;\n for (let i = 0; i < round; i++) {\n digest = CryptoJS.MD5(digest);\n }\n\n const key = digest.clone();\n key.sigBytes = keyBits / 8;\n let cipher = paddedUserPassword;\n round = r >= 3 ? 20 : 1;\n for (let i = 0; i < round; i++) {\n const xorRound = Math.ceil(key.sigBytes / 4);\n for (let j = 0; j < xorRound; j++) {\n key.words[j] = digest.words[j] ^ (i | (i << 8) | (i << 16) | (i << 24));\n }\n cipher = CryptoJS.RC4.encrypt(cipher, key).ciphertext;\n }\n return cipher;\n}\n\nfunction getEncryptionKeyR2R3R4(\n r,\n keyBits,\n documentId,\n paddedUserPassword,\n ownerPasswordEntry,\n permissions\n) {\n let key = paddedUserPassword\n .clone()\n .concat(ownerPasswordEntry)\n .concat(CryptoJS.lib.WordArray.create([lsbFirstWord(permissions)], 4))\n .concat(CryptoJS.lib.WordArray.create(documentId));\n const round = r >= 3 ? 51 : 1;\n for (let i = 0; i < round; i++) {\n key = CryptoJS.MD5(key);\n key.sigBytes = keyBits / 8;\n }\n return key;\n}\n\nfunction getUserPasswordR5(processedUserPassword, generateRandomWordArray) {\n const validationSalt = generateRandomWordArray(8);\n const keySalt = generateRandomWordArray(8);\n return CryptoJS.SHA256(processedUserPassword.clone().concat(validationSalt))\n .concat(validationSalt)\n .concat(keySalt);\n}\n\nfunction getUserEncryptionKeyR5(\n processedUserPassword,\n userKeySalt,\n encryptionKey\n) {\n const key = CryptoJS.SHA256(\n processedUserPassword.clone().concat(userKeySalt)\n );\n const options = {\n mode: CryptoJS.mode.CBC,\n padding: CryptoJS.pad.NoPadding,\n iv: CryptoJS.lib.WordArray.create(null, 16)\n };\n return CryptoJS.AES.encrypt(encryptionKey, key, options).ciphertext;\n}\n\nfunction getOwnerPasswordR5(\n processedOwnerPassword,\n userPasswordEntry,\n generateRandomWordArray\n) {\n const validationSalt = generateRandomWordArray(8);\n const keySalt = generateRandomWordArray(8);\n return CryptoJS.SHA256(\n processedOwnerPassword\n .clone()\n .concat(validationSalt)\n .concat(userPasswordEntry)\n )\n .concat(validationSalt)\n .concat(keySalt);\n}\n\nfunction getOwnerEncryptionKeyR5(\n processedOwnerPassword,\n ownerKeySalt,\n userPasswordEntry,\n encryptionKey\n) {\n const key = CryptoJS.SHA256(\n processedOwnerPassword\n .clone()\n .concat(ownerKeySalt)\n .concat(userPasswordEntry)\n );\n const options = {\n mode: CryptoJS.mode.CBC,\n padding: CryptoJS.pad.NoPadding,\n iv: CryptoJS.lib.WordArray.create(null, 16)\n };\n return CryptoJS.AES.encrypt(encryptionKey, key, options).ciphertext;\n}\n\nfunction getEncryptionKeyR5(generateRandomWordArray) {\n return generateRandomWordArray(32);\n}\n\nfunction getEncryptedPermissionsR5(\n permissions,\n encryptionKey,\n generateRandomWordArray\n) {\n const cipher = CryptoJS.lib.WordArray.create(\n [lsbFirstWord(permissions), 0xffffffff, 0x54616462],\n 12\n ).concat(generateRandomWordArray(4));\n const options = {\n mode: CryptoJS.mode.ECB,\n padding: CryptoJS.pad.NoPadding\n };\n return CryptoJS.AES.encrypt(cipher, encryptionKey, options).ciphertext;\n}\n\nfunction processPasswordR2R3R4(password = '') {\n const out = new Buffer(32);\n const length = password.length;\n let index = 0;\n while (index < length && index < 32) {\n const code = password.charCodeAt(index);\n if (code > 0xff) {\n throw new Error('Password contains one or more invalid characters.');\n }\n out[index] = code;\n index++;\n }\n while (index < 32) {\n out[index] = PASSWORD_PADDING[index - length];\n index++;\n }\n return CryptoJS.lib.WordArray.create(out);\n}\n\nfunction processPasswordR5(password = '') {\n password = unescape(encodeURIComponent(saslprep(password)));\n const length = Math.min(127, password.length);\n const out = new Buffer(length);\n\n for (let i = 0; i < length; i++) {\n out[i] = password.charCodeAt(i);\n }\n\n return CryptoJS.lib.WordArray.create(out);\n}\n\nfunction lsbFirstWord(data) {\n return (\n ((data & 0xff) << 24) |\n ((data & 0xff00) << 8) |\n ((data >> 8) & 0xff00) |\n ((data >> 24) & 0xff)\n );\n}\n\nfunction wordArrayToBuffer(wordArray) {\n const byteArray = [];\n for (let i = 0; i < wordArray.sigBytes; i++) {\n byteArray.push(\n (wordArray.words[Math.floor(i / 4)] >> (8 * (3 - (i % 4)))) & 0xff\n );\n }\n return Buffer.from(byteArray);\n}\n\nconst PASSWORD_PADDING = [\n 0x28,\n 0xbf,\n 0x4e,\n 0x5e,\n 0x4e,\n 0x75,\n 0x8a,\n 0x41,\n 0x64,\n 0x00,\n 0x4e,\n 0x56,\n 0xff,\n 0xfa,\n 0x01,\n 0x08,\n 0x2e,\n 0x2e,\n 0x00,\n 0xb6,\n 0xd0,\n 0x68,\n 0x3e,\n 0x80,\n 0x2f,\n 0x0c,\n 0xa9,\n 0xfe,\n 0x64,\n 0x53,\n 0x69,\n 0x7a\n];\n\nexport default PDFSecurity;\n","import PDFObject from './object';\n\nconst { number } = PDFObject;\n\nclass PDFGradient {\n constructor(doc) {\n this.doc = doc;\n this.stops = [];\n this.embedded = false;\n this.transform = [1, 0, 0, 1, 0, 0];\n }\n\n stop(pos, color, opacity) {\n if (opacity == null) {\n opacity = 1;\n }\n color = this.doc._normalizeColor(color);\n\n if (this.stops.length === 0) {\n if (color.length === 3) {\n this._colorSpace = 'DeviceRGB';\n } else if (color.length === 4) {\n this._colorSpace = 'DeviceCMYK';\n } else if (color.length === 1) {\n this._colorSpace = 'DeviceGray';\n } else {\n throw new Error('Unknown color space');\n }\n } else if (\n (this._colorSpace === 'DeviceRGB' && color.length !== 3) ||\n (this._colorSpace === 'DeviceCMYK' && color.length !== 4) ||\n (this._colorSpace === 'DeviceGray' && color.length !== 1)\n ) {\n throw new Error('All gradient stops must use the same color space');\n }\n\n opacity = Math.max(0, Math.min(1, opacity));\n this.stops.push([pos, color, opacity]);\n return this;\n }\n\n setTransform(m11, m12, m21, m22, dx, dy) {\n this.transform = [m11, m12, m21, m22, dx, dy];\n return this;\n }\n\n embed(m) {\n let fn;\n const stopsLength = this.stops.length;\n if (stopsLength === 0) {\n return;\n }\n this.embedded = true;\n this.matrix = m;\n\n // if the last stop comes before 100%, add a copy at 100%\n const last = this.stops[stopsLength - 1];\n if (last[0] < 1) {\n this.stops.push([1, last[1], last[2]]);\n }\n\n const bounds = [];\n const encode = [];\n const stops = [];\n\n for (let i = 0; i < stopsLength - 1; i++) {\n encode.push(0, 1);\n if (i + 2 !== stopsLength) {\n bounds.push(this.stops[i + 1][0]);\n }\n\n fn = this.doc.ref({\n FunctionType: 2,\n Domain: [0, 1],\n C0: this.stops[i + 0][1],\n C1: this.stops[i + 1][1],\n N: 1\n });\n\n stops.push(fn);\n fn.end();\n }\n\n // if there are only two stops, we don't need a stitching function\n if (stopsLength === 1) {\n fn = stops[0];\n } else {\n fn = this.doc.ref({\n FunctionType: 3, // stitching function\n Domain: [0, 1],\n Functions: stops,\n Bounds: bounds,\n Encode: encode\n });\n\n fn.end();\n }\n\n this.id = `Sh${++this.doc._gradCount}`;\n\n const shader = this.shader(fn);\n shader.end();\n\n const pattern = this.doc.ref({\n Type: 'Pattern',\n PatternType: 2,\n Shading: shader,\n Matrix: this.matrix.map(number)\n });\n\n pattern.end();\n\n if (this.stops.some(stop => stop[2] < 1)) {\n let grad = this.opacityGradient();\n grad._colorSpace = 'DeviceGray';\n\n for (let stop of this.stops) {\n grad.stop(stop[0], [stop[2]]);\n }\n\n grad = grad.embed(this.matrix);\n\n const pageBBox = [0, 0, this.doc.page.width, this.doc.page.height];\n\n const form = this.doc.ref({\n Type: 'XObject',\n Subtype: 'Form',\n FormType: 1,\n BBox: pageBBox,\n Group: {\n Type: 'Group',\n S: 'Transparency',\n CS: 'DeviceGray'\n },\n Resources: {\n ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI'],\n Pattern: {\n Sh1: grad\n }\n }\n });\n\n form.write('/Pattern cs /Sh1 scn');\n form.end(`${pageBBox.join(' ')} re f`);\n\n const gstate = this.doc.ref({\n Type: 'ExtGState',\n SMask: {\n Type: 'Mask',\n S: 'Luminosity',\n G: form\n }\n });\n\n gstate.end();\n\n const opacityPattern = this.doc.ref({\n Type: 'Pattern',\n PatternType: 1,\n PaintType: 1,\n TilingType: 2,\n BBox: pageBBox,\n XStep: pageBBox[2],\n YStep: pageBBox[3],\n Resources: {\n ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI'],\n Pattern: {\n Sh1: pattern\n },\n ExtGState: {\n Gs1: gstate\n }\n }\n });\n\n opacityPattern.write('/Gs1 gs /Pattern cs /Sh1 scn');\n opacityPattern.end(`${pageBBox.join(' ')} re f`);\n\n this.doc.page.patterns[this.id] = opacityPattern;\n } else {\n this.doc.page.patterns[this.id] = pattern;\n }\n\n return pattern;\n }\n\n apply(op) {\n // apply gradient transform to existing document ctm\n const [m0, m1, m2, m3, m4, m5] = this.doc._ctm;\n const [m11, m12, m21, m22, dx, dy] = this.transform;\n const m = [\n m0 * m11 + m2 * m12,\n m1 * m11 + m3 * m12,\n m0 * m21 + m2 * m22,\n m1 * m21 + m3 * m22,\n m0 * dx + m2 * dy + m4,\n m1 * dx + m3 * dy + m5\n ];\n\n if (!this.embedded || m.join(' ') !== this.matrix.join(' ')) {\n this.embed(m);\n }\n return this.doc.addContent(`/${this.id} ${op}`);\n }\n}\n\nclass PDFLinearGradient extends PDFGradient {\n constructor(doc, x1, y1, x2, y2) {\n super(doc);\n this.x1 = x1;\n this.y1 = y1;\n this.x2 = x2;\n this.y2 = y2;\n }\n\n shader(fn) {\n return this.doc.ref({\n ShadingType: 2,\n ColorSpace: this._colorSpace,\n Coords: [this.x1, this.y1, this.x2, this.y2],\n Function: fn,\n Extend: [true, true]\n });\n }\n\n opacityGradient() {\n return new PDFLinearGradient(this.doc, this.x1, this.y1, this.x2, this.y2);\n }\n}\n\nclass PDFRadialGradient extends PDFGradient {\n constructor(doc, x1, y1, r1, x2, y2, r2) {\n super(doc);\n this.doc = doc;\n this.x1 = x1;\n this.y1 = y1;\n this.r1 = r1;\n this.x2 = x2;\n this.y2 = y2;\n this.r2 = r2;\n }\n\n shader(fn) {\n return this.doc.ref({\n ShadingType: 3,\n ColorSpace: this._colorSpace,\n Coords: [this.x1, this.y1, this.r1, this.x2, this.y2, this.r2],\n Function: fn,\n Extend: [true, true]\n });\n }\n\n opacityGradient() {\n return new PDFRadialGradient(\n this.doc,\n this.x1,\n this.y1,\n this.r1,\n this.x2,\n this.y2,\n this.r2\n );\n }\n}\n\nexport default { PDFGradient, PDFLinearGradient, PDFRadialGradient };\n","import Gradient from '../gradient';\n\nconst { PDFGradient, PDFLinearGradient, PDFRadialGradient } = Gradient;\n\nexport default {\n initColor() {\n // The opacity dictionaries\n this._opacityRegistry = {};\n this._opacityCount = 0;\n return (this._gradCount = 0);\n },\n\n _normalizeColor(color) {\n if (color instanceof PDFGradient) {\n return color;\n }\n\n if (typeof color === 'string') {\n if (color.charAt(0) === '#') {\n if (color.length === 4) {\n color = color.replace(\n /#([0-9A-F])([0-9A-F])([0-9A-F])/i,\n '#$1$1$2$2$3$3'\n );\n }\n const hex = parseInt(color.slice(1), 16);\n color = [hex >> 16, (hex >> 8) & 0xff, hex & 0xff];\n } else if (namedColors[color]) {\n color = namedColors[color];\n }\n }\n\n if (Array.isArray(color)) {\n // RGB\n if (color.length === 3) {\n color = color.map(part => part / 255);\n // CMYK\n } else if (color.length === 4) {\n color = color.map(part => part / 100);\n }\n return color;\n }\n\n return null;\n },\n\n _setColor(color, stroke) {\n color = this._normalizeColor(color);\n if (!color) {\n return false;\n }\n\n const op = stroke ? 'SCN' : 'scn';\n\n if (color instanceof PDFGradient) {\n this._setColorSpace('Pattern', stroke);\n color.apply(op);\n } else {\n const space = color.length === 4 ? 'DeviceCMYK' : 'DeviceRGB';\n this._setColorSpace(space, stroke);\n\n color = color.join(' ');\n this.addContent(`${color} ${op}`);\n }\n\n return true;\n },\n\n _setColorSpace(space, stroke) {\n const op = stroke ? 'CS' : 'cs';\n return this.addContent(`/${space} ${op}`);\n },\n\n fillColor(color, opacity) {\n const set = this._setColor(color, false);\n if (set) {\n this.fillOpacity(opacity);\n }\n\n // save this for text wrapper, which needs to reset\n // the fill color on new pages\n this._fillColor = [color, opacity];\n return this;\n },\n\n strokeColor(color, opacity) {\n const set = this._setColor(color, true);\n if (set) {\n this.strokeOpacity(opacity);\n }\n return this;\n },\n\n opacity(opacity) {\n this._doOpacity(opacity, opacity);\n return this;\n },\n\n fillOpacity(opacity) {\n this._doOpacity(opacity, null);\n return this;\n },\n\n strokeOpacity(opacity) {\n this._doOpacity(null, opacity);\n return this;\n },\n\n _doOpacity(fillOpacity, strokeOpacity) {\n let dictionary, name;\n if (fillOpacity == null && strokeOpacity == null) {\n return;\n }\n\n if (fillOpacity != null) {\n fillOpacity = Math.max(0, Math.min(1, fillOpacity));\n }\n if (strokeOpacity != null) {\n strokeOpacity = Math.max(0, Math.min(1, strokeOpacity));\n }\n const key = `${fillOpacity}_${strokeOpacity}`;\n\n if (this._opacityRegistry[key]) {\n [dictionary, name] = this._opacityRegistry[key];\n } else {\n dictionary = { Type: 'ExtGState' };\n\n if (fillOpacity != null) {\n dictionary.ca = fillOpacity;\n }\n if (strokeOpacity != null) {\n dictionary.CA = strokeOpacity;\n }\n\n dictionary = this.ref(dictionary);\n dictionary.end();\n const id = ++this._opacityCount;\n name = `Gs${id}`;\n this._opacityRegistry[key] = [dictionary, name];\n }\n\n this.page.ext_gstates[name] = dictionary;\n return this.addContent(`/${name} gs`);\n },\n\n linearGradient(x1, y1, x2, y2) {\n return new PDFLinearGradient(this, x1, y1, x2, y2);\n },\n\n radialGradient(x1, y1, r1, x2, y2, r2) {\n return new PDFRadialGradient(this, x1, y1, r1, x2, y2, r2);\n }\n};\n\nvar namedColors = {\n aliceblue: [240, 248, 255],\n antiquewhite: [250, 235, 215],\n aqua: [0, 255, 255],\n aquamarine: [127, 255, 212],\n azure: [240, 255, 255],\n beige: [245, 245, 220],\n bisque: [255, 228, 196],\n black: [0, 0, 0],\n blanchedalmond: [255, 235, 205],\n blue: [0, 0, 255],\n blueviolet: [138, 43, 226],\n brown: [165, 42, 42],\n burlywood: [222, 184, 135],\n cadetblue: [95, 158, 160],\n chartreuse: [127, 255, 0],\n chocolate: [210, 105, 30],\n coral: [255, 127, 80],\n cornflowerblue: [100, 149, 237],\n cornsilk: [255, 248, 220],\n crimson: [220, 20, 60],\n cyan: [0, 255, 255],\n darkblue: [0, 0, 139],\n darkcyan: [0, 139, 139],\n darkgoldenrod: [184, 134, 11],\n darkgray: [169, 169, 169],\n darkgreen: [0, 100, 0],\n darkgrey: [169, 169, 169],\n darkkhaki: [189, 183, 107],\n darkmagenta: [139, 0, 139],\n darkolivegreen: [85, 107, 47],\n darkorange: [255, 140, 0],\n darkorchid: [153, 50, 204],\n darkred: [139, 0, 0],\n darksalmon: [233, 150, 122],\n darkseagreen: [143, 188, 143],\n darkslateblue: [72, 61, 139],\n darkslategray: [47, 79, 79],\n darkslategrey: [47, 79, 79],\n darkturquoise: [0, 206, 209],\n darkviolet: [148, 0, 211],\n deeppink: [255, 20, 147],\n deepskyblue: [0, 191, 255],\n dimgray: [105, 105, 105],\n dimgrey: [105, 105, 105],\n dodgerblue: [30, 144, 255],\n firebrick: [178, 34, 34],\n floralwhite: [255, 250, 240],\n forestgreen: [34, 139, 34],\n fuchsia: [255, 0, 255],\n gainsboro: [220, 220, 220],\n ghostwhite: [248, 248, 255],\n gold: [255, 215, 0],\n goldenrod: [218, 165, 32],\n gray: [128, 128, 128],\n grey: [128, 128, 128],\n green: [0, 128, 0],\n greenyellow: [173, 255, 47],\n honeydew: [240, 255, 240],\n hotpink: [255, 105, 180],\n indianred: [205, 92, 92],\n indigo: [75, 0, 130],\n ivory: [255, 255, 240],\n khaki: [240, 230, 140],\n lavender: [230, 230, 250],\n lavenderblush: [255, 240, 245],\n lawngreen: [124, 252, 0],\n lemonchiffon: [255, 250, 205],\n lightblue: [173, 216, 230],\n lightcoral: [240, 128, 128],\n lightcyan: [224, 255, 255],\n lightgoldenrodyellow: [250, 250, 210],\n lightgray: [211, 211, 211],\n lightgreen: [144, 238, 144],\n lightgrey: [211, 211, 211],\n lightpink: [255, 182, 193],\n lightsalmon: [255, 160, 122],\n lightseagreen: [32, 178, 170],\n lightskyblue: [135, 206, 250],\n lightslategray: [119, 136, 153],\n lightslategrey: [119, 136, 153],\n lightsteelblue: [176, 196, 222],\n lightyellow: [255, 255, 224],\n lime: [0, 255, 0],\n limegreen: [50, 205, 50],\n linen: [250, 240, 230],\n magenta: [255, 0, 255],\n maroon: [128, 0, 0],\n mediumaquamarine: [102, 205, 170],\n mediumblue: [0, 0, 205],\n mediumorchid: [186, 85, 211],\n mediumpurple: [147, 112, 219],\n mediumseagreen: [60, 179, 113],\n mediumslateblue: [123, 104, 238],\n mediumspringgreen: [0, 250, 154],\n mediumturquoise: [72, 209, 204],\n mediumvioletred: [199, 21, 133],\n midnightblue: [25, 25, 112],\n mintcream: [245, 255, 250],\n mistyrose: [255, 228, 225],\n moccasin: [255, 228, 181],\n navajowhite: [255, 222, 173],\n navy: [0, 0, 128],\n oldlace: [253, 245, 230],\n olive: [128, 128, 0],\n olivedrab: [107, 142, 35],\n orange: [255, 165, 0],\n orangered: [255, 69, 0],\n orchid: [218, 112, 214],\n palegoldenrod: [238, 232, 170],\n palegreen: [152, 251, 152],\n paleturquoise: [175, 238, 238],\n palevioletred: [219, 112, 147],\n papayawhip: [255, 239, 213],\n peachpuff: [255, 218, 185],\n peru: [205, 133, 63],\n pink: [255, 192, 203],\n plum: [221, 160, 221],\n powderblue: [176, 224, 230],\n purple: [128, 0, 128],\n red: [255, 0, 0],\n rosybrown: [188, 143, 143],\n royalblue: [65, 105, 225],\n saddlebrown: [139, 69, 19],\n salmon: [250, 128, 114],\n sandybrown: [244, 164, 96],\n seagreen: [46, 139, 87],\n seashell: [255, 245, 238],\n sienna: [160, 82, 45],\n silver: [192, 192, 192],\n skyblue: [135, 206, 235],\n slateblue: [106, 90, 205],\n slategray: [112, 128, 144],\n slategrey: [112, 128, 144],\n snow: [255, 250, 250],\n springgreen: [0, 255, 127],\n steelblue: [70, 130, 180],\n tan: [210, 180, 140],\n teal: [0, 128, 128],\n thistle: [216, 191, 216],\n tomato: [255, 99, 71],\n turquoise: [64, 224, 208],\n violet: [238, 130, 238],\n wheat: [245, 222, 179],\n white: [255, 255, 255],\n whitesmoke: [245, 245, 245],\n yellow: [255, 255, 0],\n yellowgreen: [154, 205, 50]\n};\n","let cx, cy, px, py, sx, sy;\n\ncx = cy = px = py = sx = sy = 0;\n\nconst parameters = {\n A: 7,\n a: 7,\n C: 6,\n c: 6,\n H: 1,\n h: 1,\n L: 2,\n l: 2,\n M: 2,\n m: 2,\n Q: 4,\n q: 4,\n S: 4,\n s: 4,\n T: 2,\n t: 2,\n V: 1,\n v: 1,\n Z: 0,\n z: 0\n};\n\nconst parse = function(path) {\n let cmd;\n const ret = [];\n let args = [];\n let curArg = '';\n let foundDecimal = false;\n let params = 0;\n\n for (let c of path) {\n if (parameters[c] != null) {\n params = parameters[c];\n if (cmd) {\n // save existing command\n if (curArg.length > 0) {\n args[args.length] = +curArg;\n }\n ret[ret.length] = { cmd, args };\n\n args = [];\n curArg = '';\n foundDecimal = false;\n }\n\n cmd = c;\n } else if (\n [' ', ','].includes(c) ||\n (c === '-' && curArg.length > 0 && curArg[curArg.length - 1] !== 'e') ||\n (c === '.' && foundDecimal)\n ) {\n if (curArg.length === 0) {\n continue;\n }\n\n if (args.length === params) {\n // handle reused commands\n ret[ret.length] = { cmd, args };\n args = [+curArg];\n\n // handle assumed commands\n if (cmd === 'M') {\n cmd = 'L';\n }\n if (cmd === 'm') {\n cmd = 'l';\n }\n } else {\n args[args.length] = +curArg;\n }\n\n foundDecimal = c === '.';\n\n // fix for negative numbers or repeated decimals with no delimeter between commands\n curArg = ['-', '.'].includes(c) ? c : '';\n } else {\n curArg += c;\n if (c === '.') {\n foundDecimal = true;\n }\n }\n }\n\n // add the last command\n if (curArg.length > 0) {\n if (args.length === params) {\n // handle reused commands\n ret[ret.length] = { cmd, args };\n args = [+curArg];\n\n // handle assumed commands\n if (cmd === 'M') {\n cmd = 'L';\n }\n if (cmd === 'm') {\n cmd = 'l';\n }\n } else {\n args[args.length] = +curArg;\n }\n }\n\n ret[ret.length] = { cmd, args };\n\n return ret;\n};\n\nconst apply = function(commands, doc) {\n // current point, control point, and subpath starting point\n cx = cy = px = py = sx = sy = 0;\n\n // run the commands\n for (let i = 0; i < commands.length; i++) {\n const c = commands[i];\n if (typeof runners[c.cmd] === 'function') {\n runners[c.cmd](doc, c.args);\n }\n }\n};\n\nconst runners = {\n M(doc, a) {\n cx = a[0];\n cy = a[1];\n px = py = null;\n sx = cx;\n sy = cy;\n return doc.moveTo(cx, cy);\n },\n\n m(doc, a) {\n cx += a[0];\n cy += a[1];\n px = py = null;\n sx = cx;\n sy = cy;\n return doc.moveTo(cx, cy);\n },\n\n C(doc, a) {\n cx = a[4];\n cy = a[5];\n px = a[2];\n py = a[3];\n return doc.bezierCurveTo(...a);\n },\n\n c(doc, a) {\n doc.bezierCurveTo(\n a[0] + cx,\n a[1] + cy,\n a[2] + cx,\n a[3] + cy,\n a[4] + cx,\n a[5] + cy\n );\n px = cx + a[2];\n py = cy + a[3];\n cx += a[4];\n return (cy += a[5]);\n },\n\n S(doc, a) {\n if (px === null) {\n px = cx;\n py = cy;\n }\n\n doc.bezierCurveTo(cx - (px - cx), cy - (py - cy), a[0], a[1], a[2], a[3]);\n px = a[0];\n py = a[1];\n cx = a[2];\n return (cy = a[3]);\n },\n\n s(doc, a) {\n if (px === null) {\n px = cx;\n py = cy;\n }\n\n doc.bezierCurveTo(\n cx - (px - cx),\n cy - (py - cy),\n cx + a[0],\n cy + a[1],\n cx + a[2],\n cy + a[3]\n );\n px = cx + a[0];\n py = cy + a[1];\n cx += a[2];\n return (cy += a[3]);\n },\n\n Q(doc, a) {\n px = a[0];\n py = a[1];\n cx = a[2];\n cy = a[3];\n return doc.quadraticCurveTo(a[0], a[1], cx, cy);\n },\n\n q(doc, a) {\n doc.quadraticCurveTo(a[0] + cx, a[1] + cy, a[2] + cx, a[3] + cy);\n px = cx + a[0];\n py = cy + a[1];\n cx += a[2];\n return (cy += a[3]);\n },\n\n T(doc, a) {\n if (px === null) {\n px = cx;\n py = cy;\n } else {\n px = cx - (px - cx);\n py = cy - (py - cy);\n }\n\n doc.quadraticCurveTo(px, py, a[0], a[1]);\n px = cx - (px - cx);\n py = cy - (py - cy);\n cx = a[0];\n return (cy = a[1]);\n },\n\n t(doc, a) {\n if (px === null) {\n px = cx;\n py = cy;\n } else {\n px = cx - (px - cx);\n py = cy - (py - cy);\n }\n\n doc.quadraticCurveTo(px, py, cx + a[0], cy + a[1]);\n cx += a[0];\n return (cy += a[1]);\n },\n\n A(doc, a) {\n solveArc(doc, cx, cy, a);\n cx = a[5];\n return (cy = a[6]);\n },\n\n a(doc, a) {\n a[5] += cx;\n a[6] += cy;\n solveArc(doc, cx, cy, a);\n cx = a[5];\n return (cy = a[6]);\n },\n\n L(doc, a) {\n cx = a[0];\n cy = a[1];\n px = py = null;\n return doc.lineTo(cx, cy);\n },\n\n l(doc, a) {\n cx += a[0];\n cy += a[1];\n px = py = null;\n return doc.lineTo(cx, cy);\n },\n\n H(doc, a) {\n cx = a[0];\n px = py = null;\n return doc.lineTo(cx, cy);\n },\n\n h(doc, a) {\n cx += a[0];\n px = py = null;\n return doc.lineTo(cx, cy);\n },\n\n V(doc, a) {\n cy = a[0];\n px = py = null;\n return doc.lineTo(cx, cy);\n },\n\n v(doc, a) {\n cy += a[0];\n px = py = null;\n return doc.lineTo(cx, cy);\n },\n\n Z(doc) {\n doc.closePath();\n cx = sx;\n return (cy = sy);\n },\n\n z(doc) {\n doc.closePath();\n cx = sx;\n return (cy = sy);\n }\n};\n\nconst solveArc = function(doc, x, y, coords) {\n const [rx, ry, rot, large, sweep, ex, ey] = coords;\n const segs = arcToSegments(ex, ey, rx, ry, large, sweep, rot, x, y);\n\n for (let seg of segs) {\n const bez = segmentToBezier(...seg);\n doc.bezierCurveTo(...bez);\n }\n};\n\n// from Inkscape svgtopdf, thanks!\nconst arcToSegments = function(x, y, rx, ry, large, sweep, rotateX, ox, oy) {\n const th = rotateX * (Math.PI / 180);\n const sin_th = Math.sin(th);\n const cos_th = Math.cos(th);\n rx = Math.abs(rx);\n ry = Math.abs(ry);\n px = cos_th * (ox - x) * 0.5 + sin_th * (oy - y) * 0.5;\n py = cos_th * (oy - y) * 0.5 - sin_th * (ox - x) * 0.5;\n let pl = (px * px) / (rx * rx) + (py * py) / (ry * ry);\n if (pl > 1) {\n pl = Math.sqrt(pl);\n rx *= pl;\n ry *= pl;\n }\n\n const a00 = cos_th / rx;\n const a01 = sin_th / rx;\n const a10 = -sin_th / ry;\n const a11 = cos_th / ry;\n const x0 = a00 * ox + a01 * oy;\n const y0 = a10 * ox + a11 * oy;\n const x1 = a00 * x + a01 * y;\n const y1 = a10 * x + a11 * y;\n\n const d = (x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0);\n let sfactor_sq = 1 / d - 0.25;\n if (sfactor_sq < 0) {\n sfactor_sq = 0;\n }\n let sfactor = Math.sqrt(sfactor_sq);\n if (sweep === large) {\n sfactor = -sfactor;\n }\n\n const xc = 0.5 * (x0 + x1) - sfactor * (y1 - y0);\n const yc = 0.5 * (y0 + y1) + sfactor * (x1 - x0);\n\n const th0 = Math.atan2(y0 - yc, x0 - xc);\n const th1 = Math.atan2(y1 - yc, x1 - xc);\n\n let th_arc = th1 - th0;\n if (th_arc < 0 && sweep === 1) {\n th_arc += 2 * Math.PI;\n } else if (th_arc > 0 && sweep === 0) {\n th_arc -= 2 * Math.PI;\n }\n\n const segments = Math.ceil(Math.abs(th_arc / (Math.PI * 0.5 + 0.001)));\n const result = [];\n\n for (let i = 0; i < segments; i++) {\n const th2 = th0 + (i * th_arc) / segments;\n const th3 = th0 + ((i + 1) * th_arc) / segments;\n result[i] = [xc, yc, th2, th3, rx, ry, sin_th, cos_th];\n }\n\n return result;\n};\n\nconst segmentToBezier = function(cx, cy, th0, th1, rx, ry, sin_th, cos_th) {\n const a00 = cos_th * rx;\n const a01 = -sin_th * ry;\n const a10 = sin_th * rx;\n const a11 = cos_th * ry;\n\n const th_half = 0.5 * (th1 - th0);\n const t =\n ((8 / 3) * Math.sin(th_half * 0.5) * Math.sin(th_half * 0.5)) /\n Math.sin(th_half);\n const x1 = cx + Math.cos(th0) - t * Math.sin(th0);\n const y1 = cy + Math.sin(th0) + t * Math.cos(th0);\n const x3 = cx + Math.cos(th1);\n const y3 = cy + Math.sin(th1);\n const x2 = x3 + t * Math.sin(th1);\n const y2 = y3 - t * Math.cos(th1);\n\n return [\n a00 * x1 + a01 * y1,\n a10 * x1 + a11 * y1,\n a00 * x2 + a01 * y2,\n a10 * x2 + a11 * y2,\n a00 * x3 + a01 * y3,\n a10 * x3 + a11 * y3\n ];\n};\n\nclass SVGPath {\n static apply(doc, path) {\n const commands = parse(path);\n apply(commands, doc);\n }\n}\n\nexport default SVGPath;\n","import SVGPath from '../path';\nimport PDFObject from '../object';\n\nconst { number } = PDFObject;\n\n// This constant is used to approximate a symmetrical arc using a cubic\n// Bezier curve.\nconst KAPPA = 4.0 * ((Math.sqrt(2) - 1.0) / 3.0);\nexport default {\n initVector() {\n this._ctm = [1, 0, 0, 1, 0, 0]; // current transformation matrix\n return (this._ctmStack = []);\n },\n\n save() {\n this._ctmStack.push(this._ctm.slice());\n // TODO: save/restore colorspace and styles so not setting it unnessesarily all the time?\n return this.addContent('q');\n },\n\n restore() {\n this._ctm = this._ctmStack.pop() || [1, 0, 0, 1, 0, 0];\n return this.addContent('Q');\n },\n\n closePath() {\n return this.addContent('h');\n },\n\n lineWidth(w) {\n return this.addContent(`${number(w)} w`);\n },\n\n _CAP_STYLES: {\n BUTT: 0,\n ROUND: 1,\n SQUARE: 2\n },\n\n lineCap(c) {\n if (typeof c === 'string') {\n c = this._CAP_STYLES[c.toUpperCase()];\n }\n return this.addContent(`${c} J`);\n },\n\n _JOIN_STYLES: {\n MITER: 0,\n ROUND: 1,\n BEVEL: 2\n },\n\n lineJoin(j) {\n if (typeof j === 'string') {\n j = this._JOIN_STYLES[j.toUpperCase()];\n }\n return this.addContent(`${j} j`);\n },\n\n miterLimit(m) {\n return this.addContent(`${number(m)} M`);\n },\n\n dash(length, options = {}) {\n const originalLength = length;\n if (!Array.isArray(length)) {\n length = [length, options.space || length];\n }\n\n const valid = length.every(x => Number.isFinite(x) && x > 0);\n if(!valid) {\n throw new Error(`dash(${JSON.stringify(originalLength)}, ${JSON.stringify(options)}) invalid, lengths must be numeric and greater than zero`);\n }\n\n length = length.map(number).join(' ');\n return this.addContent(`[${length}] ${number(options.phase || 0)} d`);\n },\n\n undash() {\n return this.addContent('[] 0 d');\n },\n\n moveTo(x, y) {\n return this.addContent(`${number(x)} ${number(y)} m`);\n },\n\n lineTo(x, y) {\n return this.addContent(`${number(x)} ${number(y)} l`);\n },\n\n bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) {\n return this.addContent(\n `${number(cp1x)} ${number(cp1y)} ${number(cp2x)} ${number(cp2y)} ${number(\n x\n )} ${number(y)} c`\n );\n },\n\n quadraticCurveTo(cpx, cpy, x, y) {\n return this.addContent(\n `${number(cpx)} ${number(cpy)} ${number(x)} ${number(y)} v`\n );\n },\n\n rect(x, y, w, h) {\n return this.addContent(\n `${number(x)} ${number(y)} ${number(w)} ${number(h)} re`\n );\n },\n\n roundedRect(x, y, w, h, r) {\n if (r == null) {\n r = 0;\n }\n r = Math.min(r, 0.5 * w, 0.5 * h);\n\n // amount to inset control points from corners (see `ellipse`)\n const c = r * (1.0 - KAPPA);\n\n this.moveTo(x + r, y);\n this.lineTo(x + w - r, y);\n this.bezierCurveTo(x + w - c, y, x + w, y + c, x + w, y + r);\n this.lineTo(x + w, y + h - r);\n this.bezierCurveTo(x + w, y + h - c, x + w - c, y + h, x + w - r, y + h);\n this.lineTo(x + r, y + h);\n this.bezierCurveTo(x + c, y + h, x, y + h - c, x, y + h - r);\n this.lineTo(x, y + r);\n this.bezierCurveTo(x, y + c, x + c, y, x + r, y);\n return this.closePath();\n },\n\n ellipse(x, y, r1, r2) {\n // based on http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas/2173084#2173084\n if (r2 == null) {\n r2 = r1;\n }\n x -= r1;\n y -= r2;\n const ox = r1 * KAPPA;\n const oy = r2 * KAPPA;\n const xe = x + r1 * 2;\n const ye = y + r2 * 2;\n const xm = x + r1;\n const ym = y + r2;\n\n this.moveTo(x, ym);\n this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y);\n this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym);\n this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye);\n this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym);\n return this.closePath();\n },\n\n circle(x, y, radius) {\n return this.ellipse(x, y, radius);\n },\n\n arc(x, y, radius, startAngle, endAngle, anticlockwise) {\n if (anticlockwise == null) {\n anticlockwise = false;\n }\n const TWO_PI = 2.0 * Math.PI;\n const HALF_PI = 0.5 * Math.PI;\n\n let deltaAng = endAngle - startAngle;\n\n if (Math.abs(deltaAng) > TWO_PI) {\n // draw only full circle if more than that is specified\n deltaAng = TWO_PI;\n } else if (deltaAng !== 0 && anticlockwise !== deltaAng < 0) {\n // necessary to flip direction of rendering\n const dir = anticlockwise ? -1 : 1;\n deltaAng = dir * TWO_PI + deltaAng;\n }\n\n const numSegs = Math.ceil(Math.abs(deltaAng) / HALF_PI);\n const segAng = deltaAng / numSegs;\n const handleLen = (segAng / HALF_PI) * KAPPA * radius;\n let curAng = startAngle;\n\n // component distances between anchor point and control point\n let deltaCx = -Math.sin(curAng) * handleLen;\n let deltaCy = Math.cos(curAng) * handleLen;\n\n // anchor point\n let ax = x + Math.cos(curAng) * radius;\n let ay = y + Math.sin(curAng) * radius;\n\n // calculate and render segments\n this.moveTo(ax, ay);\n\n for (let segIdx = 0; segIdx < numSegs; segIdx++) {\n // starting control point\n const cp1x = ax + deltaCx;\n const cp1y = ay + deltaCy;\n\n // step angle\n curAng += segAng;\n\n // next anchor point\n ax = x + Math.cos(curAng) * radius;\n ay = y + Math.sin(curAng) * radius;\n\n // next control point delta\n deltaCx = -Math.sin(curAng) * handleLen;\n deltaCy = Math.cos(curAng) * handleLen;\n\n // ending control point\n const cp2x = ax - deltaCx;\n const cp2y = ay - deltaCy;\n\n // render segment\n this.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, ax, ay);\n }\n\n return this;\n },\n\n polygon(...points) {\n this.moveTo(...(points.shift() || []));\n for (let point of points) {\n this.lineTo(...(point || []));\n }\n return this.closePath();\n },\n\n path(path) {\n SVGPath.apply(this, path);\n return this;\n },\n\n _windingRule(rule) {\n if (/even-?odd/.test(rule)) {\n return '*';\n }\n\n return '';\n },\n\n fill(color, rule) {\n if (/(even-?odd)|(non-?zero)/.test(color)) {\n rule = color;\n color = null;\n }\n\n if (color) {\n this.fillColor(color);\n }\n return this.addContent(`f${this._windingRule(rule)}`);\n },\n\n stroke(color) {\n if (color) {\n this.strokeColor(color);\n }\n return this.addContent('S');\n },\n\n fillAndStroke(fillColor, strokeColor, rule) {\n if (strokeColor == null) {\n strokeColor = fillColor;\n }\n const isFillRule = /(even-?odd)|(non-?zero)/;\n if (isFillRule.test(fillColor)) {\n rule = fillColor;\n fillColor = null;\n }\n\n if (isFillRule.test(strokeColor)) {\n rule = strokeColor;\n strokeColor = fillColor;\n }\n\n if (fillColor) {\n this.fillColor(fillColor);\n this.strokeColor(strokeColor);\n }\n\n return this.addContent(`B${this._windingRule(rule)}`);\n },\n\n clip(rule) {\n return this.addContent(`W${this._windingRule(rule)} n`);\n },\n\n transform(m11, m12, m21, m22, dx, dy) {\n // keep track of the current transformation matrix\n const m = this._ctm;\n const [m0, m1, m2, m3, m4, m5] = m;\n m[0] = m0 * m11 + m2 * m12;\n m[1] = m1 * m11 + m3 * m12;\n m[2] = m0 * m21 + m2 * m22;\n m[3] = m1 * m21 + m3 * m22;\n m[4] = m0 * dx + m2 * dy + m4;\n m[5] = m1 * dx + m3 * dy + m5;\n\n const values = [m11, m12, m21, m22, dx, dy].map(v => number(v)).join(' ');\n return this.addContent(`${values} cm`);\n },\n\n translate(x, y) {\n return this.transform(1, 0, 0, 1, x, y);\n },\n\n rotate(angle, options = {}) {\n let y;\n const rad = (angle * Math.PI) / 180;\n const cos = Math.cos(rad);\n const sin = Math.sin(rad);\n let x = (y = 0);\n\n if (options.origin != null) {\n [x, y] = options.origin;\n const x1 = x * cos - y * sin;\n const y1 = x * sin + y * cos;\n x -= x1;\n y -= y1;\n }\n\n return this.transform(cos, sin, -sin, cos, x, y);\n },\n\n scale(xFactor, yFactor, options = {}) {\n let y;\n if (yFactor == null) {\n yFactor = xFactor;\n }\n if (typeof yFactor === 'object') {\n options = yFactor;\n yFactor = xFactor;\n }\n\n let x = (y = 0);\n if (options.origin != null) {\n [x, y] = options.origin;\n x -= xFactor * x;\n y -= yFactor * y;\n }\n\n return this.transform(xFactor, 0, 0, yFactor, x, y);\n }\n};\n","import fs from 'fs';\n\nconst WIN_ANSI_MAP = {\n 402: 131,\n 8211: 150,\n 8212: 151,\n 8216: 145,\n 8217: 146,\n 8218: 130,\n 8220: 147,\n 8221: 148,\n 8222: 132,\n 8224: 134,\n 8225: 135,\n 8226: 149,\n 8230: 133,\n 8364: 128,\n 8240: 137,\n 8249: 139,\n 8250: 155,\n 710: 136,\n 8482: 153,\n 338: 140,\n 339: 156,\n 732: 152,\n 352: 138,\n 353: 154,\n 376: 159,\n 381: 142,\n 382: 158\n};\n\nconst characters = `\\\n.notdef .notdef .notdef .notdef\n.notdef .notdef .notdef .notdef\n.notdef .notdef .notdef .notdef\n.notdef .notdef .notdef .notdef\n.notdef .notdef .notdef .notdef\n.notdef .notdef .notdef .notdef\n.notdef .notdef .notdef .notdef\n.notdef .notdef .notdef .notdef\n \nspace exclam quotedbl numbersign\ndollar percent ampersand quotesingle\nparenleft parenright asterisk plus\ncomma hyphen period slash\nzero one two three\nfour five six seven\neight nine colon semicolon\nless equal greater question\n \nat A B C\nD E F G\nH I J K\nL M N O\nP Q R S\nT U V W\nX Y Z bracketleft\nbackslash bracketright asciicircum underscore\n \ngrave a b c\nd e f g\nh i j k\nl m n o\np q r s\nt u v w\nx y z braceleft\nbar braceright asciitilde .notdef\n \nEuro .notdef quotesinglbase florin\nquotedblbase ellipsis dagger daggerdbl\ncircumflex perthousand Scaron guilsinglleft\nOE .notdef Zcaron .notdef\n.notdef quoteleft quoteright quotedblleft\nquotedblright bullet endash emdash\ntilde trademark scaron guilsinglright\noe .notdef zcaron ydieresis\n \nspace exclamdown cent sterling\ncurrency yen brokenbar section\ndieresis copyright ordfeminine guillemotleft\nlogicalnot hyphen registered macron\ndegree plusminus twosuperior threesuperior\nacute mu paragraph periodcentered\ncedilla onesuperior ordmasculine guillemotright\nonequarter onehalf threequarters questiondown\n \nAgrave Aacute Acircumflex Atilde\nAdieresis Aring AE Ccedilla\nEgrave Eacute Ecircumflex Edieresis\nIgrave Iacute Icircumflex Idieresis\nEth Ntilde Ograve Oacute\nOcircumflex Otilde Odieresis multiply\nOslash Ugrave Uacute Ucircumflex\nUdieresis Yacute Thorn germandbls\n \nagrave aacute acircumflex atilde\nadieresis aring ae ccedilla\negrave eacute ecircumflex edieresis\nigrave iacute icircumflex idieresis\neth ntilde ograve oacute\nocircumflex otilde odieresis divide\noslash ugrave uacute ucircumflex\nudieresis yacute thorn ydieresis\\\n`.split(/\\s+/);\n\nclass AFMFont {\n static open(filename) {\n return new AFMFont(fs.readFileSync(filename, 'utf8'));\n }\n\n constructor(contents) {\n this.contents = contents;\n this.attributes = {};\n this.glyphWidths = {};\n this.boundingBoxes = {};\n this.kernPairs = {};\n\n this.parse();\n // todo: remove charWidths since appears to not be used\n this.charWidths = new Array(256);\n for (let char = 0; char <= 255; char++) {\n this.charWidths[char] = this.glyphWidths[characters[char]];\n }\n\n this.bbox = this.attributes['FontBBox'].split(/\\s+/).map(e => +e);\n this.ascender = +(this.attributes['Ascender'] || 0);\n this.descender = +(this.attributes['Descender'] || 0);\n this.xHeight = +(this.attributes['XHeight'] || 0);\n this.capHeight = +(this.attributes['CapHeight'] || 0);\n this.lineGap =\n this.bbox[3] - this.bbox[1] - (this.ascender - this.descender);\n }\n\n parse() {\n let section = '';\n for (let line of this.contents.split('\\n')) {\n var match;\n var a;\n if ((match = line.match(/^Start(\\w+)/))) {\n section = match[1];\n continue;\n } else if ((match = line.match(/^End(\\w+)/))) {\n section = '';\n continue;\n }\n\n switch (section) {\n case 'FontMetrics':\n match = line.match(/(^\\w+)\\s+(.*)/);\n var key = match[1];\n var value = match[2];\n\n if ((a = this.attributes[key])) {\n if (!Array.isArray(a)) {\n a = this.attributes[key] = [a];\n }\n a.push(value);\n } else {\n this.attributes[key] = value;\n }\n break;\n\n case 'CharMetrics':\n if (!/^CH?\\s/.test(line)) {\n continue;\n }\n var name = line.match(/\\bN\\s+(\\.?\\w+)\\s*;/)[1];\n this.glyphWidths[name] = +line.match(/\\bWX\\s+(\\d+)\\s*;/)[1];\n break;\n\n case 'KernPairs':\n match = line.match(/^KPX\\s+(\\.?\\w+)\\s+(\\.?\\w+)\\s+(-?\\d+)/);\n if (match) {\n this.kernPairs[match[1] + '\\0' + match[2]] = parseInt(match[3]);\n }\n break;\n }\n }\n }\n\n encodeText(text) {\n const res = [];\n for (let i = 0, len = text.length; i < len; i++) {\n let char = text.charCodeAt(i);\n char = WIN_ANSI_MAP[char] || char;\n res.push(char.toString(16));\n }\n\n return res;\n }\n\n glyphsForString(string) {\n const glyphs = [];\n\n for (let i = 0, len = string.length; i < len; i++) {\n const charCode = string.charCodeAt(i);\n glyphs.push(this.characterToGlyph(charCode));\n }\n\n return glyphs;\n }\n\n characterToGlyph(character) {\n return characters[WIN_ANSI_MAP[character] || character] || '.notdef';\n }\n\n widthOfGlyph(glyph) {\n return this.glyphWidths[glyph] || 0;\n }\n\n getKernPair(left, right) {\n return this.kernPairs[left + '\\0' + right] || 0;\n }\n\n advancesForGlyphs(glyphs) {\n const advances = [];\n\n for (let index = 0; index < glyphs.length; index++) {\n const left = glyphs[index];\n const right = glyphs[index + 1];\n advances.push(this.widthOfGlyph(left) + this.getKernPair(left, right));\n }\n\n return advances;\n }\n}\n\nexport default AFMFont;\n","class PDFFont {\n constructor() {}\n\n encode() {\n throw new Error('Must be implemented by subclasses');\n }\n\n widthOfString() {\n throw new Error('Must be implemented by subclasses');\n }\n\n ref() {\n return this.dictionary != null\n ? this.dictionary\n : (this.dictionary = this.document.ref());\n }\n\n finalize() {\n if (this.embedded || this.dictionary == null) {\n return;\n }\n\n this.embed();\n return (this.embedded = true);\n }\n\n embed() {\n throw new Error('Must be implemented by subclasses');\n }\n\n lineHeight(size, includeGap) {\n if (includeGap == null) {\n includeGap = false;\n }\n const gap = includeGap ? this.lineGap : 0;\n return ((this.ascender + gap - this.descender) / 1000) * size;\n }\n}\n\nexport default PDFFont;\n","import AFMFont from './afm';\nimport PDFFont from '../font';\nimport fs from 'fs';\n\n// This insanity is so bundlers can inline the font files\nconst STANDARD_FONTS = {\n Courier() {\n return fs.readFileSync(__dirname + '/data/Courier.afm', 'utf8');\n },\n 'Courier-Bold'() {\n return fs.readFileSync(__dirname + '/data/Courier-Bold.afm', 'utf8');\n },\n 'Courier-Oblique'() {\n return fs.readFileSync(__dirname + '/data/Courier-Oblique.afm', 'utf8');\n },\n 'Courier-BoldOblique'() {\n return fs.readFileSync(__dirname + '/data/Courier-BoldOblique.afm', 'utf8');\n },\n Helvetica() {\n return fs.readFileSync(__dirname + '/data/Helvetica.afm', 'utf8');\n },\n 'Helvetica-Bold'() {\n return fs.readFileSync(__dirname + '/data/Helvetica-Bold.afm', 'utf8');\n },\n 'Helvetica-Oblique'() {\n return fs.readFileSync(__dirname + '/data/Helvetica-Oblique.afm', 'utf8');\n },\n 'Helvetica-BoldOblique'() {\n return fs.readFileSync(\n __dirname + '/data/Helvetica-BoldOblique.afm',\n 'utf8'\n );\n },\n 'Times-Roman'() {\n return fs.readFileSync(__dirname + '/data/Times-Roman.afm', 'utf8');\n },\n 'Times-Bold'() {\n return fs.readFileSync(__dirname + '/data/Times-Bold.afm', 'utf8');\n },\n 'Times-Italic'() {\n return fs.readFileSync(__dirname + '/data/Times-Italic.afm', 'utf8');\n },\n 'Times-BoldItalic'() {\n return fs.readFileSync(__dirname + '/data/Times-BoldItalic.afm', 'utf8');\n },\n Symbol() {\n return fs.readFileSync(__dirname + '/data/Symbol.afm', 'utf8');\n },\n ZapfDingbats() {\n return fs.readFileSync(__dirname + '/data/ZapfDingbats.afm', 'utf8');\n }\n};\n\nclass StandardFont extends PDFFont {\n constructor(document, name, id) {\n super();\n this.document = document;\n this.name = name;\n this.id = id;\n this.font = new AFMFont(STANDARD_FONTS[this.name]());\n ({\n ascender: this.ascender,\n descender: this.descender,\n bbox: this.bbox,\n lineGap: this.lineGap,\n xHeight: this.xHeight,\n capHeight: this.capHeight\n } = this.font);\n }\n\n embed() {\n this.dictionary.data = {\n Type: 'Font',\n BaseFont: this.name,\n Subtype: 'Type1',\n Encoding: 'WinAnsiEncoding'\n };\n\n return this.dictionary.end();\n }\n\n encode(text) {\n const encoded = this.font.encodeText(text);\n const glyphs = this.font.glyphsForString(`${text}`);\n const advances = this.font.advancesForGlyphs(glyphs);\n const positions = [];\n for (let i = 0; i < glyphs.length; i++) {\n const glyph = glyphs[i];\n positions.push({\n xAdvance: advances[i],\n yAdvance: 0,\n xOffset: 0,\n yOffset: 0,\n advanceWidth: this.font.widthOfGlyph(glyph)\n });\n }\n\n return [encoded, positions];\n }\n\n widthOfString(string, size) {\n const glyphs = this.font.glyphsForString(`${string}`);\n const advances = this.font.advancesForGlyphs(glyphs);\n\n let width = 0;\n for (let advance of advances) {\n width += advance;\n }\n\n const scale = size / 1000;\n return width * scale;\n }\n\n static isStandardFont(name) {\n return name in STANDARD_FONTS;\n }\n}\n\nexport default StandardFont;\n","import PDFFont from '../font';\n\nconst toHex = function(num) {\n return `0000${num.toString(16)}`.slice(-4);\n};\n\nclass EmbeddedFont extends PDFFont {\n constructor(document, font, id) {\n super();\n this.document = document;\n this.font = font;\n this.id = id;\n this.subset = this.font.createSubset();\n this.unicode = [[0]];\n this.widths = [this.font.getGlyph(0).advanceWidth];\n\n this.name = this.font.postscriptName;\n this.scale = 1000 / this.font.unitsPerEm;\n this.ascender = this.font.ascent * this.scale;\n this.descender = this.font.descent * this.scale;\n this.xHeight = this.font.xHeight * this.scale;\n this.capHeight = this.font.capHeight * this.scale;\n this.lineGap = this.font.lineGap * this.scale;\n this.bbox = this.font.bbox;\n\n if (document.options.fontLayoutCache !== false) {\n this.layoutCache = Object.create(null);\n }\n }\n\n layoutRun(text, features) {\n const run = this.font.layout(text, features);\n\n // Normalize position values\n for (let i = 0; i < run.positions.length; i++) {\n const position = run.positions[i];\n for (let key in position) {\n position[key] *= this.scale;\n }\n\n position.advanceWidth = run.glyphs[i].advanceWidth * this.scale;\n }\n\n return run;\n }\n\n layoutCached(text) {\n if (!this.layoutCache) {\n return this.layoutRun(text);\n }\n let cached;\n if ((cached = this.layoutCache[text])) {\n return cached;\n }\n\n const run = this.layoutRun(text);\n this.layoutCache[text] = run;\n return run;\n }\n\n layout(text, features, onlyWidth) {\n // Skip the cache if any user defined features are applied\n if (features) {\n return this.layoutRun(text, features);\n }\n\n let glyphs = onlyWidth ? null : [];\n let positions = onlyWidth ? null : [];\n let advanceWidth = 0;\n\n // Split the string by words to increase cache efficiency.\n // For this purpose, spaces and tabs are a good enough delimeter.\n let last = 0;\n let index = 0;\n while (index <= text.length) {\n var needle;\n if (\n (index === text.length && last < index) ||\n ((needle = text.charAt(index)), [' ', '\\t'].includes(needle))\n ) {\n const run = this.layoutCached(text.slice(last, ++index));\n if (!onlyWidth) {\n glyphs = glyphs.concat(run.glyphs);\n positions = positions.concat(run.positions);\n }\n\n advanceWidth += run.advanceWidth;\n last = index;\n } else {\n index++;\n }\n }\n\n return { glyphs, positions, advanceWidth };\n }\n\n encode(text, features) {\n const { glyphs, positions } = this.layout(text, features);\n\n const res = [];\n for (let i = 0; i < glyphs.length; i++) {\n const glyph = glyphs[i];\n const gid = this.subset.includeGlyph(glyph.id);\n res.push(`0000${gid.toString(16)}`.slice(-4));\n\n if (this.widths[gid] == null) {\n this.widths[gid] = glyph.advanceWidth * this.scale;\n }\n if (this.unicode[gid] == null) {\n this.unicode[gid] = glyph.codePoints;\n }\n }\n\n return [res, positions];\n }\n\n widthOfString(string, size, features) {\n const width = this.layout(string, features, true).advanceWidth;\n const scale = size / 1000;\n return width * scale;\n }\n\n embed() {\n const isCFF = this.subset.cff != null;\n const fontFile = this.document.ref();\n\n if (isCFF) {\n fontFile.data.Subtype = 'CIDFontType0C';\n }\n\n this.subset\n .encodeStream()\n .on('data', data => fontFile.write(data))\n .on('end', () => fontFile.end());\n\n const familyClass =\n ((this.font['OS/2'] != null\n ? this.font['OS/2'].sFamilyClass\n : undefined) || 0) >> 8;\n let flags = 0;\n if (this.font.post.isFixedPitch) {\n flags |= 1 << 0;\n }\n if (1 <= familyClass && familyClass <= 7) {\n flags |= 1 << 1;\n }\n flags |= 1 << 2; // assume the font uses non-latin characters\n if (familyClass === 10) {\n flags |= 1 << 3;\n }\n if (this.font.head.macStyle.italic) {\n flags |= 1 << 6;\n }\n\n // generate a tag (6 uppercase letters. 16 is the char code offset from '1' to 'A'. 74 will map to 'Z')\n const tag = [1, 2, 3, 4, 5, 6]\n .map(i => String.fromCharCode((this.id.charCodeAt(i) || 74) + 16))\n .join('');\n const name = tag + '+' + this.font.postscriptName;\n\n const { bbox } = this.font;\n const descriptor = this.document.ref({\n Type: 'FontDescriptor',\n FontName: name,\n Flags: flags,\n FontBBox: [\n bbox.minX * this.scale,\n bbox.minY * this.scale,\n bbox.maxX * this.scale,\n bbox.maxY * this.scale\n ],\n ItalicAngle: this.font.italicAngle,\n Ascent: this.ascender,\n Descent: this.descender,\n CapHeight: (this.font.capHeight || this.font.ascent) * this.scale,\n XHeight: (this.font.xHeight || 0) * this.scale,\n StemV: 0\n }); // not sure how to calculate this\n\n if (isCFF) {\n descriptor.data.FontFile3 = fontFile;\n } else {\n descriptor.data.FontFile2 = fontFile;\n }\n\n descriptor.end();\n\n const descendantFontData = {\n Type: 'Font',\n Subtype: 'CIDFontType0',\n BaseFont: name,\n CIDSystemInfo: {\n Registry: new String('Adobe'),\n Ordering: new String('Identity'),\n Supplement: 0\n },\n FontDescriptor: descriptor,\n W: [0, this.widths]\n };\n\n if (!isCFF) {\n descendantFontData.Subtype = 'CIDFontType2';\n descendantFontData.CIDToGIDMap = 'Identity';\n }\n\n const descendantFont = this.document.ref(descendantFontData);\n\n descendantFont.end();\n\n this.dictionary.data = {\n Type: 'Font',\n Subtype: 'Type0',\n BaseFont: name,\n Encoding: 'Identity-H',\n DescendantFonts: [descendantFont],\n ToUnicode: this.toUnicodeCmap()\n };\n\n return this.dictionary.end();\n }\n\n // Maps the glyph ids encoded in the PDF back to unicode strings\n // Because of ligature substitutions and the like, there may be one or more\n // unicode characters represented by each glyph.\n toUnicodeCmap() {\n const cmap = this.document.ref();\n\n const entries = [];\n for (let codePoints of this.unicode) {\n const encoded = [];\n\n // encode codePoints to utf16\n for (let value of codePoints) {\n if (value > 0xffff) {\n value -= 0x10000;\n encoded.push(toHex(((value >>> 10) & 0x3ff) | 0xd800));\n value = 0xdc00 | (value & 0x3ff);\n }\n\n encoded.push(toHex(value));\n }\n\n entries.push(`<${encoded.join(' ')}>`);\n }\n\n cmap.end(`\\\n/CIDInit /ProcSet findresource begin\n12 dict begin\nbegincmap\n/CIDSystemInfo <<\n /Registry (Adobe)\n /Ordering (UCS)\n /Supplement 0\n>> def\n/CMapName /Adobe-Identity-UCS def\n/CMapType 2 def\n1 begincodespacerange\n<0000><ffff>\nendcodespacerange\n1 beginbfrange\n<0000> <${toHex(entries.length - 1)}> [${entries.join(' ')}]\nendbfrange\nendcmap\nCMapName currentdict /CMap defineresource pop\nend\nend\\\n`);\n\n return cmap;\n }\n}\n\nexport default EmbeddedFont;\n","import fs from 'fs';\nimport fontkit from 'fontkit';\nimport StandardFont from './font/standard';\nimport EmbeddedFont from './font/embedded';\n\nclass PDFFontFactory {\n static open(document, src, family, id) {\n let font;\n if (typeof src === 'string') {\n if (StandardFont.isStandardFont(src)) {\n return new StandardFont(document, src, id);\n }\n\n src = fs.readFileSync(src);\n }\n if (Buffer.isBuffer(src)) {\n font = fontkit.create(src, family);\n } else if (src instanceof Uint8Array) {\n font = fontkit.create(new Buffer(src), family);\n } else if (src instanceof ArrayBuffer) {\n font = fontkit.create(new Buffer(new Uint8Array(src)), family);\n }\n\n if (font == null) {\n throw new Error('Not a supported font format or standard PDF font.');\n }\n\n return new EmbeddedFont(document, font, id);\n }\n}\n\nexport default PDFFontFactory;\n","import PDFFontFactory from '../font_factory';\n\nexport default {\n initFonts(defaultFont = 'Helvetica') {\n // Lookup table for embedded fonts\n this._fontFamilies = {};\n this._fontCount = 0;\n\n // Font state\n this._fontSize = 12;\n this._font = null;\n\n this._registeredFonts = {};\n\n // Set the default font\n if (defaultFont) {\n this.font(defaultFont);\n }\n },\n\n font(src, family, size) {\n let cacheKey, font;\n if (typeof family === 'number') {\n size = family;\n family = null;\n }\n\n // check registered fonts if src is a string\n if (typeof src === 'string' && this._registeredFonts[src]) {\n cacheKey = src;\n ({ src, family } = this._registeredFonts[src]);\n } else {\n cacheKey = family || src;\n if (typeof cacheKey !== 'string') {\n cacheKey = null;\n }\n }\n\n if (size != null) {\n this.fontSize(size);\n }\n\n // fast path: check if the font is already in the PDF\n if ((font = this._fontFamilies[cacheKey])) {\n this._font = font;\n return this;\n }\n\n // load the font\n const id = `F${++this._fontCount}`;\n this._font = PDFFontFactory.open(this, src, family, id);\n\n // check for existing font familes with the same name already in the PDF\n // useful if the font was passed as a buffer\n if ((font = this._fontFamilies[this._font.name])) {\n this._font = font;\n return this;\n }\n\n // save the font for reuse later\n if (cacheKey) {\n this._fontFamilies[cacheKey] = this._font;\n }\n\n if (this._font.name) {\n this._fontFamilies[this._font.name] = this._font;\n }\n\n return this;\n },\n\n fontSize(_fontSize) {\n this._fontSize = _fontSize;\n return this;\n },\n\n currentLineHeight(includeGap) {\n if (includeGap == null) {\n includeGap = false;\n }\n return this._font.lineHeight(this._fontSize, includeGap);\n },\n\n registerFont(name, src, family) {\n this._registeredFonts[name] = {\n src,\n family\n };\n\n return this;\n }\n};\n","import { EventEmitter } from 'events';\nimport LineBreaker from 'linebreak';\n\nclass LineWrapper extends EventEmitter {\n constructor(document, options) {\n super();\n this.document = document;\n this.indent = options.indent || 0;\n this.characterSpacing = options.characterSpacing || 0;\n this.wordSpacing = options.wordSpacing === 0;\n this.columns = options.columns || 1;\n this.columnGap = options.columnGap != null ? options.columnGap : 18; // 1/4 inch\n this.lineWidth =\n (options.width - this.columnGap * (this.columns - 1)) / this.columns;\n this.spaceLeft = this.lineWidth;\n this.startX = this.document.x;\n this.startY = this.document.y;\n this.column = 1;\n this.ellipsis = options.ellipsis;\n this.continuedX = 0;\n this.features = options.features;\n\n // calculate the maximum Y position the text can appear at\n if (options.height != null) {\n this.height = options.height;\n this.maxY = this.startY + options.height;\n } else {\n this.maxY = this.document.page.maxY();\n }\n\n // handle paragraph indents\n this.on('firstLine', options => {\n // if this is the first line of the text segment, and\n // we're continuing where we left off, indent that much\n // otherwise use the user specified indent option\n const indent = this.continuedX || this.indent;\n this.document.x += indent;\n this.lineWidth -= indent;\n\n return this.once('line', () => {\n this.document.x -= indent;\n this.lineWidth += indent;\n if (options.continued && !this.continuedX) {\n this.continuedX = this.indent;\n }\n if (!options.continued) {\n return (this.continuedX = 0);\n }\n });\n });\n\n // handle left aligning last lines of paragraphs\n this.on('lastLine', options => {\n const { align } = options;\n if (align === 'justify') {\n options.align = 'left';\n }\n this.lastLine = true;\n\n return this.once('line', () => {\n this.document.y += options.paragraphGap || 0;\n options.align = align;\n return (this.lastLine = false);\n });\n });\n }\n\n wordWidth(word) {\n return (\n this.document.widthOfString(word, this) +\n this.characterSpacing +\n this.wordSpacing\n );\n }\n\n eachWord(text, fn) {\n // setup a unicode line breaker\n let bk;\n const breaker = new LineBreaker(text);\n let last = null;\n const wordWidths = Object.create(null);\n\n while ((bk = breaker.nextBreak())) {\n var shouldContinue;\n let word = text.slice(\n (last != null ? last.position : undefined) || 0,\n bk.position\n );\n let w =\n wordWidths[word] != null\n ? wordWidths[word]\n : (wordWidths[word] = this.wordWidth(word));\n\n // if the word is longer than the whole line, chop it up\n // TODO: break by grapheme clusters, not JS string characters\n if (w > this.lineWidth + this.continuedX) {\n // make some fake break objects\n let lbk = last;\n const fbk = {};\n\n while (word.length) {\n // fit as much of the word as possible into the space we have\n var l, mightGrow;\n if (w > this.spaceLeft) {\n // start our check at the end of our available space - this method is faster than a loop of each character and it resolves\n // an issue with long loops when processing massive words, such as a huge number of spaces\n l = Math.ceil(this.spaceLeft / (w / word.length));\n w = this.wordWidth(word.slice(0, l));\n mightGrow = w <= this.spaceLeft && l < word.length;\n } else {\n l = word.length;\n }\n let mustShrink = w > this.spaceLeft && l > 0;\n // shrink or grow word as necessary after our near-guess above\n while (mustShrink || mightGrow) {\n if (mustShrink) {\n w = this.wordWidth(word.slice(0, --l));\n mustShrink = w > this.spaceLeft && l > 0;\n } else {\n w = this.wordWidth(word.slice(0, ++l));\n mustShrink = w > this.spaceLeft && l > 0;\n mightGrow = w <= this.spaceLeft && l < word.length;\n }\n }\n\n // check for the edge case where a single character cannot fit into a line.\n if (l === 0 && this.spaceLeft === this.lineWidth) {\n l = 1;\n }\n\n // send a required break unless this is the last piece and a linebreak is not specified\n fbk.required = bk.required || l < word.length;\n shouldContinue = fn(word.slice(0, l), w, fbk, lbk);\n lbk = { required: false };\n\n // get the remaining piece of the word\n word = word.slice(l);\n w = this.wordWidth(word);\n\n if (shouldContinue === false) {\n break;\n }\n }\n } else {\n // otherwise just emit the break as it was given to us\n shouldContinue = fn(word, w, bk, last);\n }\n\n if (shouldContinue === false) {\n break;\n }\n last = bk;\n }\n }\n\n wrap(text, options) {\n // override options from previous continued fragments\n if (options.indent != null) {\n this.indent = options.indent;\n }\n if (options.characterSpacing != null) {\n this.characterSpacing = options.characterSpacing;\n }\n if (options.wordSpacing != null) {\n this.wordSpacing = options.wordSpacing;\n }\n if (options.ellipsis != null) {\n this.ellipsis = options.ellipsis;\n }\n\n // make sure we're actually on the page\n // and that the first line of is never by\n // itself at the bottom of a page (orphans)\n const nextY = this.document.y + this.document.currentLineHeight(true);\n if (this.document.y > this.maxY || nextY > this.maxY) {\n this.nextSection();\n }\n\n let buffer = '';\n let textWidth = 0;\n let wc = 0;\n let lc = 0;\n\n let { y } = this.document; // used to reset Y pos if options.continued (below)\n const emitLine = () => {\n options.textWidth = textWidth + this.wordSpacing * (wc - 1);\n options.wordCount = wc;\n options.lineWidth = this.lineWidth;\n ({ y } = this.document);\n this.emit('line', buffer, options, this);\n return lc++;\n };\n\n this.emit('sectionStart', options, this);\n\n this.eachWord(text, (word, w, bk, last) => {\n if (last == null || last.required) {\n this.emit('firstLine', options, this);\n this.spaceLeft = this.lineWidth;\n }\n\n if (w <= this.spaceLeft) {\n buffer += word;\n textWidth += w;\n wc++;\n }\n\n if (bk.required || w > this.spaceLeft) {\n // if the user specified a max height and an ellipsis, and is about to pass the\n // max height and max columns after the next line, append the ellipsis\n const lh = this.document.currentLineHeight(true);\n if (\n this.height != null &&\n this.ellipsis &&\n this.document.y + lh * 2 > this.maxY &&\n this.column >= this.columns\n ) {\n if (this.ellipsis === true) {\n this.ellipsis = '…';\n } // map default ellipsis character\n buffer = buffer.replace(/\\s+$/, '');\n textWidth = this.wordWidth(buffer + this.ellipsis);\n\n // remove characters from the buffer until the ellipsis fits\n // to avoid inifinite loop need to stop while-loop if buffer is empty string\n while (buffer && textWidth > this.lineWidth) {\n buffer = buffer.slice(0, -1).replace(/\\s+$/, '');\n textWidth = this.wordWidth(buffer + this.ellipsis);\n }\n // need to add ellipsis only if there is enough space for it\n if (textWidth <= this.lineWidth) {\n buffer = buffer + this.ellipsis;\n }\n\n textWidth = this.wordWidth(buffer);\n }\n\n if (bk.required) {\n if (w > this.spaceLeft) {\n emitLine();\n buffer = word;\n textWidth = w;\n wc = 1;\n }\n\n this.emit('lastLine', options, this);\n }\n\n emitLine();\n\n // if we've reached the edge of the page,\n // continue on a new page or column\n if (this.document.y + lh > this.maxY) {\n const shouldContinue = this.nextSection();\n\n // stop if we reached the maximum height\n if (!shouldContinue) {\n wc = 0;\n buffer = '';\n return false;\n }\n }\n\n // reset the space left and buffer\n if (bk.required) {\n this.spaceLeft = this.lineWidth;\n buffer = '';\n textWidth = 0;\n return (wc = 0);\n } else {\n // reset the space left and buffer\n this.spaceLeft = this.lineWidth - w;\n buffer = word;\n textWidth = w;\n return (wc = 1);\n }\n } else {\n return (this.spaceLeft -= w);\n }\n });\n\n if (wc > 0) {\n this.emit('lastLine', options, this);\n emitLine();\n }\n\n this.emit('sectionEnd', options, this);\n\n // if the wrap is set to be continued, save the X position\n // to start the first line of the next segment at, and reset\n // the y position\n if (options.continued === true) {\n if (lc > 1) {\n this.continuedX = 0;\n }\n this.continuedX += options.textWidth || 0;\n return (this.document.y = y);\n } else {\n return (this.document.x = this.startX);\n }\n }\n\n nextSection(options) {\n this.emit('sectionEnd', options, this);\n\n if (++this.column > this.columns) {\n // if a max height was specified by the user, we're done.\n // otherwise, the default is to make a new page at the bottom.\n if (this.height != null) {\n return false;\n }\n\n this.document.addPage();\n this.column = 1;\n this.startY = this.document.page.margins.top;\n this.maxY = this.document.page.maxY();\n this.document.x = this.startX;\n if (this.document._fillColor) {\n this.document.fillColor(...this.document._fillColor);\n }\n this.emit('pageBreak', options, this);\n } else {\n this.document.x += this.lineWidth + this.columnGap;\n this.document.y = this.startY;\n this.emit('columnBreak', options, this);\n }\n\n this.emit('sectionStart', options, this);\n return true;\n }\n}\n\nexport default LineWrapper;\n","import LineWrapper from '../line_wrapper';\nimport PDFObject from '../object';\n\nconst { number } = PDFObject;\n\nexport default {\n initText() {\n this._line = this._line.bind(this);\n // Current coordinates\n this.x = 0;\n this.y = 0;\n return (this._lineGap = 0);\n },\n\n lineGap(_lineGap) {\n this._lineGap = _lineGap;\n return this;\n },\n\n moveDown(lines) {\n if (lines == null) {\n lines = 1;\n }\n this.y += this.currentLineHeight(true) * lines + this._lineGap;\n return this;\n },\n\n moveUp(lines) {\n if (lines == null) {\n lines = 1;\n }\n this.y -= this.currentLineHeight(true) * lines + this._lineGap;\n return this;\n },\n\n _text(text, x, y, options, lineCallback) {\n options = this._initOptions(x, y, options);\n\n // Convert text to a string\n text = text == null ? '' : `${text}`;\n\n // if the wordSpacing option is specified, remove multiple consecutive spaces\n if (options.wordSpacing) {\n text = text.replace(/\\s{2,}/g, ' ');\n }\n\n // word wrapping\n if (options.width) {\n let wrapper = this._wrapper;\n if (!wrapper) {\n wrapper = new LineWrapper(this, options);\n wrapper.on('line', lineCallback);\n }\n\n this._wrapper = options.continued ? wrapper : null;\n this._textOptions = options.continued ? options : null;\n wrapper.wrap(text, options);\n\n // render paragraphs as single lines\n } else {\n for (let line of text.split('\\n')) {\n lineCallback(line, options);\n }\n }\n\n return this;\n },\n\n text(text, x, y, options) {\n return this._text(text, x, y, options, this._line);\n },\n\n widthOfString(string, options = {}) {\n return (\n this._font.widthOfString(string, this._fontSize, options.features) +\n (options.characterSpacing || 0) * (string.length - 1)\n );\n },\n\n heightOfString(text, options) {\n const { x, y } = this;\n\n options = this._initOptions(options);\n options.height = Infinity; // don't break pages\n\n const lineGap = options.lineGap || this._lineGap || 0;\n this._text(text, this.x, this.y, options, () => {\n return (this.y += this.currentLineHeight(true) + lineGap);\n });\n\n const height = this.y - y;\n this.x = x;\n this.y = y;\n\n return height;\n },\n\n list(list, x, y, options, wrapper) {\n options = this._initOptions(x, y, options);\n\n const listType = options.listType || 'bullet';\n const unit = Math.round((this._font.ascender / 1000) * this._fontSize);\n const midLine = unit / 2;\n const r = options.bulletRadius || unit / 3;\n const indent =\n options.textIndent || (listType === 'bullet' ? r * 5 : unit * 2);\n const itemIndent =\n options.bulletIndent || (listType === 'bullet' ? r * 8 : unit * 2);\n\n let level = 1;\n const items = [];\n const levels = [];\n const numbers = [];\n\n var flatten = function(list) {\n let n = 1;\n for (let i = 0; i < list.length; i++) {\n const item = list[i];\n if (Array.isArray(item)) {\n level++;\n flatten(item);\n level--;\n } else {\n items.push(item);\n levels.push(level);\n if (listType !== 'bullet') {\n numbers.push(n++);\n }\n }\n }\n };\n\n flatten(list);\n\n const label = function(n) {\n switch (listType) {\n case 'numbered':\n return `${n}.`;\n case 'lettered':\n var letter = String.fromCharCode(((n - 1) % 26) + 65);\n var times = Math.floor((n - 1) / 26 + 1);\n var text = Array(times + 1).join(letter);\n return `${text}.`;\n }\n };\n\n wrapper = new LineWrapper(this, options);\n wrapper.on('line', this._line);\n\n level = 1;\n let i = 0;\n wrapper.on('firstLine', () => {\n let l;\n if ((l = levels[i++]) !== level) {\n const diff = itemIndent * (l - level);\n this.x += diff;\n wrapper.lineWidth -= diff;\n level = l;\n }\n\n switch (listType) {\n case 'bullet':\n this.circle(this.x - indent + r, this.y + midLine, r);\n return this.fill();\n case 'numbered':\n case 'lettered':\n var text = label(numbers[i - 1]);\n return this._fragment(text, this.x - indent, this.y, options);\n }\n });\n\n wrapper.on('sectionStart', () => {\n const pos = indent + itemIndent * (level - 1);\n this.x += pos;\n return (wrapper.lineWidth -= pos);\n });\n\n wrapper.on('sectionEnd', () => {\n const pos = indent + itemIndent * (level - 1);\n this.x -= pos;\n return (wrapper.lineWidth += pos);\n });\n\n wrapper.wrap(items.join('\\n'), options);\n\n return this;\n },\n\n _initOptions(x = {}, y, options = {}) {\n if (typeof x === 'object') {\n options = x;\n x = null;\n }\n\n // clone options object\n const result = Object.assign({}, options);\n\n // extend options with previous values for continued text\n if (this._textOptions) {\n for (let key in this._textOptions) {\n const val = this._textOptions[key];\n if (key !== 'continued') {\n if (result[key] === undefined) {\n result[key] = val;\n }\n }\n }\n }\n\n // Update the current position\n if (x != null) {\n this.x = x;\n }\n if (y != null) {\n this.y = y;\n }\n\n // wrap to margins if no x or y position passed\n if (result.lineBreak !== false) {\n if (result.width == null) {\n result.width = this.page.width - this.x - this.page.margins.right;\n }\n result.width = Math.max(result.width, 0);\n }\n\n if (!result.columns) {\n result.columns = 0;\n }\n if (result.columnGap == null) {\n result.columnGap = 18;\n } // 1/4 inch\n\n return result;\n },\n\n _line(text, options = {}, wrapper) {\n this._fragment(text, this.x, this.y, options);\n const lineGap = options.lineGap || this._lineGap || 0;\n\n if (!wrapper) {\n return (this.x += this.widthOfString(text));\n } else {\n return (this.y += this.currentLineHeight(true) + lineGap);\n }\n },\n\n _fragment(text, x, y, options) {\n let dy, encoded, i, positions, textWidth, words;\n text = `${text}`.replace(/\\n/g, '');\n if (text.length === 0) {\n return;\n }\n\n // handle options\n const align = options.align || 'left';\n let wordSpacing = options.wordSpacing || 0;\n const characterSpacing = options.characterSpacing || 0;\n\n // text alignments\n if (options.width) {\n switch (align) {\n case 'right':\n textWidth = this.widthOfString(text.replace(/\\s+$/, ''), options);\n x += options.lineWidth - textWidth;\n break;\n\n case 'center':\n x += options.lineWidth / 2 - options.textWidth / 2;\n break;\n\n case 'justify':\n // calculate the word spacing value\n words = text.trim().split(/\\s+/);\n textWidth = this.widthOfString(text.replace(/\\s+/g, ''), options);\n var spaceWidth = this.widthOfString(' ') + characterSpacing;\n wordSpacing = Math.max(\n 0,\n (options.lineWidth - textWidth) / Math.max(1, words.length - 1) -\n spaceWidth\n );\n break;\n }\n }\n\n // text baseline alignments based on http://wiki.apache.org/xmlgraphics-fop/LineLayout/AlignmentHandling\n if (typeof options.baseline === 'number') {\n dy = -options.baseline;\n } else {\n switch (options.baseline) {\n case 'svg-middle':\n dy = 0.5 * this._font.xHeight;\n break;\n case 'middle':\n case 'svg-central':\n dy = 0.5 * (this._font.descender + this._font.ascender);\n break;\n case 'bottom':\n case 'ideographic':\n dy = this._font.descender;\n break;\n case 'alphabetic':\n dy = 0;\n break;\n case 'mathematical':\n dy = 0.5 * this._font.ascender;\n break;\n case 'hanging':\n dy = 0.8 * this._font.ascender;\n break;\n case 'top':\n dy = this._font.ascender;\n break;\n default:\n dy = this._font.ascender;\n }\n dy = (dy / 1000) * this._fontSize;\n }\n\n // calculate the actual rendered width of the string after word and character spacing\n const renderedWidth =\n options.textWidth +\n wordSpacing * (options.wordCount - 1) +\n characterSpacing * (text.length - 1);\n\n // create link annotations if the link option is given\n if (options.link != null) {\n this.link(x, y, renderedWidth, this.currentLineHeight(), options.link);\n }\n if (options.goTo != null) {\n this.goTo(x, y, renderedWidth, this.currentLineHeight(), options.goTo);\n }\n if (options.destination != null) {\n this.addNamedDestination(options.destination, 'XYZ', x, y, null);\n }\n\n // create underline or strikethrough line\n if (options.underline || options.strike) {\n this.save();\n if (!options.stroke) {\n this.strokeColor(...(this._fillColor || []));\n }\n\n const lineWidth =\n this._fontSize < 10 ? 0.5 : Math.floor(this._fontSize / 10);\n this.lineWidth(lineWidth);\n\n const d = options.underline ? 1 : 2;\n let lineY = y + this.currentLineHeight() / d;\n if (options.underline) {\n lineY -= lineWidth;\n }\n\n this.moveTo(x, lineY);\n this.lineTo(x + renderedWidth, lineY);\n this.stroke();\n this.restore();\n }\n\n this.save();\n\n // oblique (angle in degrees or boolean)\n if (options.oblique) {\n let skew;\n if (typeof options.oblique === 'number') {\n skew = -Math.tan((options.oblique * Math.PI) / 180);\n } else {\n skew = -0.25;\n }\n this.transform(1, 0, 0, 1, x, y);\n this.transform(1, 0, skew, 1, -skew * dy, 0);\n this.transform(1, 0, 0, 1, -x, -y);\n }\n\n // flip coordinate system\n this.transform(1, 0, 0, -1, 0, this.page.height);\n y = this.page.height - y - dy;\n\n // add current font to page if necessary\n if (this.page.fonts[this._font.id] == null) {\n this.page.fonts[this._font.id] = this._font.ref();\n }\n\n // begin the text object\n this.addContent('BT');\n\n // text position\n this.addContent(`1 0 0 1 ${number(x)} ${number(y)} Tm`);\n\n // font and font size\n this.addContent(`/${this._font.id} ${number(this._fontSize)} Tf`);\n\n // rendering mode\n const mode = options.fill && options.stroke ? 2 : options.stroke ? 1 : 0;\n if (mode) {\n this.addContent(`${mode} Tr`);\n }\n\n // Character spacing\n if (characterSpacing) {\n this.addContent(`${number(characterSpacing)} Tc`);\n }\n\n // Add the actual text\n // If we have a word spacing value, we need to encode each word separately\n // since the normal Tw operator only works on character code 32, which isn't\n // used for embedded fonts.\n if (wordSpacing) {\n words = text.trim().split(/\\s+/);\n wordSpacing += this.widthOfString(' ') + characterSpacing;\n wordSpacing *= 1000 / this._fontSize;\n\n encoded = [];\n positions = [];\n for (let word of words) {\n const [encodedWord, positionsWord] = this._font.encode(\n word,\n options.features\n );\n encoded = encoded.concat(encodedWord);\n positions = positions.concat(positionsWord);\n\n // add the word spacing to the end of the word\n // clone object because of cache\n const space = {};\n const object = positions[positions.length - 1];\n for (let key in object) {\n const val = object[key];\n space[key] = val;\n }\n space.xAdvance += wordSpacing;\n positions[positions.length - 1] = space;\n }\n } else {\n [encoded, positions] = this._font.encode(text, options.features);\n }\n\n const scale = this._fontSize / 1000;\n const commands = [];\n let last = 0;\n let hadOffset = false;\n\n // Adds a segment of text to the TJ command buffer\n const addSegment = cur => {\n if (last < cur) {\n const hex = encoded.slice(last, cur).join('');\n const advance =\n positions[cur - 1].xAdvance - positions[cur - 1].advanceWidth;\n commands.push(`<${hex}> ${number(-advance)}`);\n }\n\n return (last = cur);\n };\n\n // Flushes the current TJ commands to the output stream\n const flush = i => {\n addSegment(i);\n\n if (commands.length > 0) {\n this.addContent(`[${commands.join(' ')}] TJ`);\n return (commands.length = 0);\n }\n };\n\n for (i = 0; i < positions.length; i++) {\n // If we have an x or y offset, we have to break out of the current TJ command\n // so we can move the text position.\n const pos = positions[i];\n if (pos.xOffset || pos.yOffset) {\n // Flush the current buffer\n flush(i);\n\n // Move the text position and flush just the current character\n this.addContent(\n `1 0 0 1 ${number(x + pos.xOffset * scale)} ${number(\n y + pos.yOffset * scale\n )} Tm`\n );\n flush(i + 1);\n\n hadOffset = true;\n } else {\n // If the last character had an offset, reset the text position\n if (hadOffset) {\n this.addContent(`1 0 0 1 ${number(x)} ${number(y)} Tm`);\n hadOffset = false;\n }\n\n // Group segments that don't have any advance adjustments\n if (pos.xAdvance - pos.advanceWidth !== 0) {\n addSegment(i + 1);\n }\n }\n\n x += pos.xAdvance * scale;\n }\n\n // Flush any remaining commands\n flush(i);\n\n // end the text object\n this.addContent('ET');\n\n // restore flipped coordinate system\n return this.restore();\n }\n};\n","const MARKERS = [\n 0xffc0,\n 0xffc1,\n 0xffc2,\n 0xffc3,\n 0xffc5,\n 0xffc6,\n 0xffc7,\n 0xffc8,\n 0xffc9,\n 0xffca,\n 0xffcb,\n 0xffcc,\n 0xffcd,\n 0xffce,\n 0xffcf\n];\n\nconst COLOR_SPACE_MAP = {\n 1: 'DeviceGray',\n 3: 'DeviceRGB',\n 4: 'DeviceCMYK'\n};\n\nclass JPEG {\n constructor(data, label) {\n let marker;\n this.data = data;\n this.label = label;\n if (this.data.readUInt16BE(0) !== 0xffd8) {\n throw 'SOI not found in JPEG';\n }\n\n let pos = 2;\n while (pos < this.data.length) {\n marker = this.data.readUInt16BE(pos);\n pos += 2;\n if (MARKERS.includes(marker)) {\n break;\n }\n pos += this.data.readUInt16BE(pos);\n }\n\n if (!MARKERS.includes(marker)) {\n throw 'Invalid JPEG.';\n }\n pos += 2;\n\n this.bits = this.data[pos++];\n this.height = this.data.readUInt16BE(pos);\n pos += 2;\n\n this.width = this.data.readUInt16BE(pos);\n pos += 2;\n\n const channels = this.data[pos++];\n this.colorSpace = COLOR_SPACE_MAP[channels];\n\n this.obj = null;\n }\n\n embed(document) {\n if (this.obj) {\n return;\n }\n\n this.obj = document.ref({\n Type: 'XObject',\n Subtype: 'Image',\n BitsPerComponent: this.bits,\n Width: this.width,\n Height: this.height,\n ColorSpace: this.colorSpace,\n Filter: 'DCTDecode'\n });\n\n // add extra decode params for CMYK images. By swapping the\n // min and max values from the default, we invert the colors. See\n // section 4.8.4 of the spec.\n if (this.colorSpace === 'DeviceCMYK') {\n this.obj.data['Decode'] = [1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0];\n }\n\n this.obj.end(this.data);\n\n // free memory\n return (this.data = null);\n }\n}\n\nexport default JPEG;\n","import zlib from 'zlib';\nimport PNG from 'png-js';\n\nclass PNGImage {\n constructor(data, label) {\n this.label = label;\n this.image = new PNG(data);\n this.width = this.image.width;\n this.height = this.image.height;\n this.imgData = this.image.imgData;\n this.obj = null;\n }\n\n embed(document) {\n let dataDecoded = false;\n\n this.document = document;\n if (this.obj) {\n return;\n }\n\n const hasAlphaChannel = this.image.hasAlphaChannel;\n const isInterlaced = this.image.interlaceMethod === 1;\n\n this.obj = this.document.ref({\n Type: 'XObject',\n Subtype: 'Image',\n BitsPerComponent: hasAlphaChannel ? 8 : this.image.bits,\n Width: this.width,\n Height: this.height,\n Filter: 'FlateDecode'\n });\n\n if (!hasAlphaChannel) {\n const params = this.document.ref({\n Predictor: isInterlaced ? 1 : 15,\n Colors: this.image.colors,\n BitsPerComponent: this.image.bits,\n Columns: this.width\n });\n\n this.obj.data['DecodeParms'] = params;\n params.end();\n }\n\n if (this.image.palette.length === 0) {\n this.obj.data['ColorSpace'] = this.image.colorSpace;\n } else {\n // embed the color palette in the PDF as an object stream\n const palette = this.document.ref();\n palette.end(new Buffer(this.image.palette));\n\n // build the color space array for the image\n this.obj.data['ColorSpace'] = [\n 'Indexed',\n 'DeviceRGB',\n this.image.palette.length / 3 - 1,\n palette\n ];\n }\n\n // For PNG color types 0, 2 and 3, the transparency data is stored in\n // a dedicated PNG chunk.\n if (this.image.transparency.grayscale != null) {\n // Use Color Key Masking (spec section 4.8.5)\n // An array with N elements, where N is two times the number of color components.\n const val = this.image.transparency.grayscale;\n this.obj.data['Mask'] = [val, val];\n } else if (this.image.transparency.rgb) {\n // Use Color Key Masking (spec section 4.8.5)\n // An array with N elements, where N is two times the number of color components.\n const { rgb } = this.image.transparency;\n const mask = [];\n for (let x of rgb) {\n mask.push(x, x);\n }\n\n this.obj.data['Mask'] = mask;\n } else if (this.image.transparency.indexed) {\n // Create a transparency SMask for the image based on the data\n // in the PLTE and tRNS sections. See below for details on SMasks.\n dataDecoded = true;\n return this.loadIndexedAlphaChannel();\n } else if (hasAlphaChannel) {\n // For PNG color types 4 and 6, the transparency data is stored as a alpha\n // channel mixed in with the main image data. Separate this data out into an\n // SMask object and store it separately in the PDF.\n dataDecoded = true;\n return this.splitAlphaChannel();\n }\n\n if (isInterlaced && !dataDecoded) {\n return this.decodeData();\n }\n\n this.finalize();\n }\n\n finalize() {\n if (this.alphaChannel) {\n const sMask = this.document.ref({\n Type: 'XObject',\n Subtype: 'Image',\n Height: this.height,\n Width: this.width,\n BitsPerComponent: 8,\n Filter: 'FlateDecode',\n ColorSpace: 'DeviceGray',\n Decode: [0, 1]\n });\n\n sMask.end(this.alphaChannel);\n this.obj.data['SMask'] = sMask;\n }\n\n // add the actual image data\n this.obj.end(this.imgData);\n\n // free memory\n this.image = null;\n return (this.imgData = null);\n }\n\n splitAlphaChannel() {\n return this.image.decodePixels(pixels => {\n let a, p;\n const colorCount = this.image.colors;\n const pixelCount = this.width * this.height;\n const imgData = new Buffer(pixelCount * colorCount);\n const alphaChannel = new Buffer(pixelCount);\n\n let i = (p = a = 0);\n const len = pixels.length;\n // For 16bit images copy only most significant byte (MSB) - PNG data is always stored in network byte order (MSB first)\n const skipByteCount = this.image.bits === 16 ? 1 : 0;\n while (i < len) {\n for (let colorIndex = 0; colorIndex < colorCount; colorIndex++) {\n imgData[p++] = pixels[i++];\n i += skipByteCount;\n }\n alphaChannel[a++] = pixels[i++];\n i += skipByteCount;\n }\n\n this.imgData = zlib.deflateSync(imgData);\n this.alphaChannel = zlib.deflateSync(alphaChannel);\n return this.finalize();\n });\n }\n\n loadIndexedAlphaChannel() {\n const transparency = this.image.transparency.indexed;\n return this.image.decodePixels(pixels => {\n const alphaChannel = new Buffer(this.width * this.height);\n\n let i = 0;\n for (let j = 0, end = pixels.length; j < end; j++) {\n alphaChannel[i++] = transparency[pixels[j]];\n }\n\n this.alphaChannel = zlib.deflateSync(alphaChannel);\n return this.finalize();\n });\n }\n\n decodeData() {\n this.image.decodePixels(pixels => {\n this.imgData = zlib.deflateSync(pixels);\n this.finalize();\n });\n }\n}\n\nexport default PNGImage;\n","/*\nPDFImage - embeds images in PDF documents\nBy Devon Govett\n*/\n\nimport fs from 'fs';\nimport JPEG from './image/jpeg';\nimport PNG from './image/png';\n\nclass PDFImage {\n static open(src, label) {\n let data;\n if (Buffer.isBuffer(src)) {\n data = src;\n } else if (src instanceof ArrayBuffer) {\n data = new Buffer(new Uint8Array(src));\n } else {\n let match;\n if ((match = /^data:.+;base64,(.*)$/.exec(src))) {\n data = new Buffer(match[1], 'base64');\n } else {\n data = fs.readFileSync(src);\n if (!data) {\n return;\n }\n }\n }\n\n if (data[0] === 0xff && data[1] === 0xd8) {\n return new JPEG(data, label);\n } else if (data[0] === 0x89 && data.toString('ascii', 1, 4) === 'PNG') {\n return new PNG(data, label);\n } else {\n throw new Error('Unknown image format.');\n }\n }\n}\n\nexport default PDFImage;\n","import PDFImage from '../image';\n\nexport default {\n initImages() {\n this._imageRegistry = {};\n return (this._imageCount = 0);\n },\n\n image(src, x, y, options = {}) {\n let bh, bp, bw, image, ip, left, left1;\n if (typeof x === 'object') {\n options = x;\n x = null;\n }\n\n x = (left = x != null ? x : options.x) != null ? left : this.x;\n y = (left1 = y != null ? y : options.y) != null ? left1 : this.y;\n\n if (typeof src === 'string') {\n image = this._imageRegistry[src];\n }\n\n if (!image) {\n if (src.width && src.height) {\n image = src;\n } else {\n image = this.openImage(src);\n }\n }\n\n if (!image.obj) {\n image.embed(this);\n }\n\n if (this.page.xobjects[image.label] == null) {\n this.page.xobjects[image.label] = image.obj;\n }\n\n let w = options.width || image.width;\n let h = options.height || image.height;\n\n if (options.width && !options.height) {\n const wp = w / image.width;\n w = image.width * wp;\n h = image.height * wp;\n } else if (options.height && !options.width) {\n const hp = h / image.height;\n w = image.width * hp;\n h = image.height * hp;\n } else if (options.scale) {\n w = image.width * options.scale;\n h = image.height * options.scale;\n } else if (options.fit) {\n [bw, bh] = options.fit;\n bp = bw / bh;\n ip = image.width / image.height;\n if (ip > bp) {\n w = bw;\n h = bw / ip;\n } else {\n h = bh;\n w = bh * ip;\n }\n } else if (options.cover) {\n [bw, bh] = options.cover;\n bp = bw / bh;\n ip = image.width / image.height;\n if (ip > bp) {\n h = bh;\n w = bh * ip;\n } else {\n w = bw;\n h = bw / ip;\n }\n }\n\n if (options.fit || options.cover) {\n if (options.align === 'center') {\n x = x + bw / 2 - w / 2;\n } else if (options.align === 'right') {\n x = x + bw - w;\n }\n\n if (options.valign === 'center') {\n y = y + bh / 2 - h / 2;\n } else if (options.valign === 'bottom') {\n y = y + bh - h;\n }\n }\n\n // create link annotations if the link option is given\n if (options.link != null) {\n this.link(x, y, w, h, options.link);\n }\n if (options.goTo != null) {\n this.goTo(x, y, w, h, options.goTo);\n }\n if (options.destination != null) {\n this.addNamedDestination(options.destination, 'XYZ', x, y, null);\n }\n\n // Set the current y position to below the image if it is in the document flow\n if (this.y === y) {\n this.y += h;\n }\n\n this.save();\n this.transform(w, 0, 0, -h, x, y + h);\n this.addContent(`/${image.label} Do`);\n this.restore();\n\n return this;\n },\n\n openImage(src) {\n let image;\n if (typeof src === 'string') {\n image = this._imageRegistry[src];\n }\n\n if (!image) {\n image = PDFImage.open(src, `I${++this._imageCount}`);\n if (typeof src === 'string') {\n this._imageRegistry[src] = image;\n }\n }\n\n return image;\n }\n};\n","export default {\n annotate(x, y, w, h, options) {\n options.Type = 'Annot';\n options.Rect = this._convertRect(x, y, w, h);\n options.Border = [0, 0, 0];\n\n if (options.Subtype === 'Link' && typeof options.F === 'undefined') {\n options.F = 1 << 2; // Print Annotation Flag\n }\n\n if (options.Subtype !== 'Link') {\n if (options.C == null) {\n options.C = this._normalizeColor(options.color || [0, 0, 0]);\n }\n } // convert colors\n delete options.color;\n\n if (typeof options.Dest === 'string') {\n options.Dest = new String(options.Dest);\n }\n\n // Capitalize keys\n for (let key in options) {\n const val = options[key];\n options[key[0].toUpperCase() + key.slice(1)] = val;\n }\n\n const ref = this.ref(options);\n this.page.annotations.push(ref);\n ref.end();\n return this;\n },\n\n note(x, y, w, h, contents, options = {}) {\n options.Subtype = 'Text';\n options.Contents = new String(contents);\n options.Name = 'Comment';\n if (options.color == null) {\n options.color = [243, 223, 92];\n }\n return this.annotate(x, y, w, h, options);\n },\n\n goTo(x, y, w, h, name, options = {}) {\n options.Subtype = 'Link';\n options.A = this.ref({\n S: 'GoTo',\n D: new String(name)\n });\n options.A.end();\n return this.annotate(x, y, w, h, options);\n },\n\n link(x, y, w, h, url, options = {}) {\n options.Subtype = 'Link';\n\n if (typeof url === 'number') {\n // Link to a page in the document (the page must already exist)\n const pages = this._root.data.Pages.data;\n if (url >= 0 && url < pages.Kids.length) {\n options.A = this.ref({\n S: 'GoTo',\n D: [pages.Kids[url], 'XYZ', null, null, null]\n });\n options.A.end();\n } else {\n throw new Error(`The document has no page ${url}`);\n }\n } else {\n // Link to an external url\n options.A = this.ref({\n S: 'URI',\n URI: new String(url)\n });\n options.A.end();\n }\n\n return this.annotate(x, y, w, h, options);\n },\n\n _markup(x, y, w, h, options = {}) {\n const [x1, y1, x2, y2] = this._convertRect(x, y, w, h);\n options.QuadPoints = [x1, y2, x2, y2, x1, y1, x2, y1];\n options.Contents = new String();\n return this.annotate(x, y, w, h, options);\n },\n\n highlight(x, y, w, h, options = {}) {\n options.Subtype = 'Highlight';\n if (options.color == null) {\n options.color = [241, 238, 148];\n }\n return this._markup(x, y, w, h, options);\n },\n\n underline(x, y, w, h, options = {}) {\n options.Subtype = 'Underline';\n return this._markup(x, y, w, h, options);\n },\n\n strike(x, y, w, h, options = {}) {\n options.Subtype = 'StrikeOut';\n return this._markup(x, y, w, h, options);\n },\n\n lineAnnotation(x1, y1, x2, y2, options = {}) {\n options.Subtype = 'Line';\n options.Contents = new String();\n options.L = [x1, this.page.height - y1, x2, this.page.height - y2];\n return this.annotate(x1, y1, x2, y2, options);\n },\n\n rectAnnotation(x, y, w, h, options = {}) {\n options.Subtype = 'Square';\n options.Contents = new String();\n return this.annotate(x, y, w, h, options);\n },\n\n ellipseAnnotation(x, y, w, h, options = {}) {\n options.Subtype = 'Circle';\n options.Contents = new String();\n return this.annotate(x, y, w, h, options);\n },\n\n textAnnotation(x, y, w, h, text, options = {}) {\n options.Subtype = 'FreeText';\n options.Contents = new String(text);\n options.DA = new String();\n return this.annotate(x, y, w, h, options);\n },\n\n _convertRect(x1, y1, w, h) {\n // flip y1 and y2\n let y2 = y1;\n y1 += h;\n\n // make x2\n let x2 = x1 + w;\n\n // apply current transformation matrix to points\n const [m0, m1, m2, m3, m4, m5] = this._ctm;\n x1 = m0 * x1 + m2 * y1 + m4;\n y1 = m1 * x1 + m3 * y1 + m5;\n x2 = m0 * x2 + m2 * y2 + m4;\n y2 = m1 * x2 + m3 * y2 + m5;\n\n return [x1, y1, x2, y2];\n }\n};\n","class PDFOutline {\n constructor(document, parent, title, dest, options = { expanded: false }) {\n this.document = document;\n this.options = options;\n this.outlineData = {};\n\n if (dest !== null) {\n this.outlineData['Dest'] = [dest.dictionary, 'Fit'];\n }\n\n if (parent !== null) {\n this.outlineData['Parent'] = parent;\n }\n\n if (title !== null) {\n this.outlineData['Title'] = new String(title);\n }\n\n this.dictionary = this.document.ref(this.outlineData);\n this.children = [];\n }\n\n addItem(title, options = { expanded: false }) {\n const result = new PDFOutline(\n this.document,\n this.dictionary,\n title,\n this.document.page,\n options\n );\n this.children.push(result);\n\n return result;\n }\n\n endOutline() {\n if (this.children.length > 0) {\n if (this.options.expanded) {\n this.outlineData.Count = this.children.length;\n }\n\n const first = this.children[0],\n last = this.children[this.children.length - 1];\n this.outlineData.First = first.dictionary;\n this.outlineData.Last = last.dictionary;\n\n for (let i = 0, len = this.children.length; i < len; i++) {\n const child = this.children[i];\n if (i > 0) {\n child.outlineData.Prev = this.children[i - 1].dictionary;\n }\n if (i < this.children.length - 1) {\n child.outlineData.Next = this.children[i + 1].dictionary;\n }\n child.endOutline();\n }\n }\n\n return this.dictionary.end();\n }\n}\n\nexport default PDFOutline;\n","import PDFOutline from '../outline';\n\nexport default {\n initOutline() {\n return (this.outline = new PDFOutline(this, null, null, null));\n },\n\n endOutline() {\n this.outline.endOutline();\n if (this.outline.children.length > 0) {\n this._root.data.Outlines = this.outline.dictionary;\n return (this._root.data.PageMode = 'UseOutlines');\n }\n }\n};\n","const FIELD_FLAGS = {\n readOnly: 1,\n required: 2,\n noExport: 4,\n multiline: 0x1000,\n password: 0x2000,\n toggleToOffButton: 0x4000,\n radioButton: 0x8000,\n pushButton: 0x10000,\n combo: 0x20000,\n edit: 0x40000,\n sort: 0x80000,\n multiSelect: 0x200000,\n noSpell: 0x400000\n};\nconst FIELD_JUSTIFY = {\n left: 0,\n center: 1,\n right: 2\n};\nconst VALUE_MAP = { value: 'V', defaultValue: 'DV' };\nconst FORMAT_SPECIAL = {\n zip: '0',\n zipPlus4: '1',\n zip4: '1',\n phone: '2',\n ssn: '3'\n};\nconst FORMAT_DEFAULT = {\n number: {\n nDec: 0,\n sepComma: false,\n negStyle: 'MinusBlack',\n currency: '',\n currencyPrepend: true\n },\n percent: {\n nDec: 0,\n sepComma: false\n }\n};\n\nexport default {\n /**\n * Must call if adding AcroForms to a document. Must also call font() before\n * this method to set the default font.\n */\n initForm() {\n if (!this._font) {\n throw new Error('Must set a font before calling initForm method');\n }\n this._acroform = {\n fonts: {},\n defaultFont: this._font.name\n };\n this._acroform.fonts[this._font.id] = this._font.ref();\n\n let data = {\n Fields: [],\n NeedAppearances: true,\n DA: new String(`/${this._font.id} 0 Tf 0 g`),\n DR: {\n Font: {}\n }\n };\n data.DR.Font[this._font.id] = this._font.ref();\n const AcroForm = this.ref(data);\n this._root.data.AcroForm = AcroForm;\n return this;\n },\n\n /**\n * Called automatically by document.js\n */\n endAcroForm() {\n if (this._root.data.AcroForm) {\n if (\n !Object.keys(this._acroform.fonts).length &&\n !this._acroform.defaultFont\n ) {\n throw new Error('No fonts specified for PDF form');\n }\n let fontDict = this._root.data.AcroForm.data.DR.Font;\n Object.keys(this._acroform.fonts).forEach(name => {\n fontDict[name] = this._acroform.fonts[name];\n });\n this._root.data.AcroForm.data.Fields.forEach(fieldRef => {\n this._endChild(fieldRef);\n });\n this._root.data.AcroForm.end();\n }\n return this;\n },\n\n _endChild(ref) {\n if (Array.isArray(ref.data.Kids)) {\n ref.data.Kids.forEach(childRef => {\n this._endChild(childRef);\n });\n ref.end();\n }\n return this;\n },\n\n /**\n * Creates and adds a form field to the document. Form fields are intermediate\n * nodes in a PDF form that are used to specify form name heirarchy and form\n * value defaults.\n * @param {string} name - field name (T attribute in field dictionary)\n * @param {object} options - other attributes to include in field dictionary\n */\n formField(name, options = {}) {\n let fieldDict = this._fieldDict(name, null, options);\n let fieldRef = this.ref(fieldDict);\n this._addToParent(fieldRef);\n return fieldRef;\n },\n\n /**\n * Creates and adds a Form Annotation to the document. Form annotations are\n * called Widget annotations internally within a PDF file.\n * @param {string} name - form field name (T attribute of widget annotation\n * dictionary)\n * @param {number} x\n * @param {number} y\n * @param {number} w\n * @param {number} h\n * @param {object} options\n */\n formAnnotation(name, type, x, y, w, h, options = {}) {\n let fieldDict = this._fieldDict(name, type, options);\n fieldDict.Subtype = 'Widget';\n if (fieldDict.F === undefined) {\n fieldDict.F = 4; // print the annotation\n }\n\n // Add Field annot to page, and get it's ref\n this.annotate(x, y, w, h, fieldDict);\n let annotRef = this.page.annotations[this.page.annotations.length - 1];\n\n return this._addToParent(annotRef);\n },\n\n formText(name, x, y, w, h, options = {}) {\n return this.formAnnotation(name, 'text', x, y, w, h, options);\n },\n\n formPushButton(name, x, y, w, h, options = {}) {\n return this.formAnnotation(name, 'pushButton', x, y, w, h, options);\n },\n\n formCombo(name, x, y, w, h, options = {}) {\n return this.formAnnotation(name, 'combo', x, y, w, h, options);\n },\n\n formList(name, x, y, w, h, options = {}) {\n return this.formAnnotation(name, 'list', x, y, w, h, options);\n },\n\n formRadioButton(name, x, y, w, h, options = {}) {\n return this.formAnnotation(name, 'radioButton', x, y, w, h, options);\n },\n\n formCheckbox(name, x, y, w, h, options = {}) {\n return this.formAnnotation(name, 'checkbox', x, y, w, h, options);\n },\n\n _addToParent(fieldRef) {\n let parent = fieldRef.data.Parent;\n if (parent) {\n if (!parent.data.Kids) {\n parent.data.Kids = [];\n }\n parent.data.Kids.push(fieldRef);\n } else {\n this._root.data.AcroForm.data.Fields.push(fieldRef);\n }\n return this;\n },\n\n _fieldDict(name, type, options = {}) {\n if (!this._acroform) {\n throw new Error(\n 'Call document.initForms() method before adding form elements to document'\n );\n }\n let opts = Object.assign({}, options);\n if (type !== null) {\n opts = this._resolveType(type, options);\n }\n opts = this._resolveFlags(opts);\n opts = this._resolveJustify(opts);\n opts = this._resolveFont(opts);\n opts = this._resolveStrings(opts);\n opts = this._resolveColors(opts);\n opts = this._resolveFormat(opts);\n opts.T = new String(name);\n if (opts.parent) {\n opts.Parent = opts.parent;\n delete opts.parent;\n }\n return opts;\n },\n\n _resolveType(type, opts) {\n if (type === 'text') {\n opts.FT = 'Tx';\n } else if (type === 'pushButton') {\n opts.FT = 'Btn';\n opts.pushButton = true;\n } else if (type === 'radioButton') {\n opts.FT = 'Btn';\n opts.radioButton = true;\n } else if (type === 'checkbox') {\n opts.FT = 'Btn';\n } else if (type === 'combo') {\n opts.FT = 'Ch';\n opts.combo = true;\n } else if (type === 'list') {\n opts.FT = 'Ch';\n } else {\n throw new Error(`Invalid form annotation type '${type}'`);\n }\n return opts;\n },\n\n _resolveFormat(opts) {\n const f = opts.format;\n if (f && f.type) {\n let fnKeystroke;\n let fnFormat;\n let params = '';\n if (FORMAT_SPECIAL[f.type] !== undefined) {\n fnKeystroke = `AFSpecial_Keystroke`;\n fnFormat = `AFSpecial_Format`;\n params = FORMAT_SPECIAL[f.type];\n } else {\n let format = f.type.charAt(0).toUpperCase() + f.type.slice(1);\n fnKeystroke = `AF${format}_Keystroke`;\n fnFormat = `AF${format}_Format`;\n\n if (f.type === 'date') {\n fnKeystroke += 'Ex';\n params = String(f.param);\n } else if (f.type === 'time') {\n params = String(f.param);\n } else if (f.type === 'number') {\n let p = Object.assign({}, FORMAT_DEFAULT.number, f);\n params = String(\n [\n String(p.nDec),\n p.sepComma ? '0' : '1',\n '\"' + p.negStyle + '\"',\n 'null',\n '\"' + p.currency + '\"',\n String(p.currencyPrepend)\n ].join(',')\n );\n } else if (f.type === 'percent') {\n let p = Object.assign({}, FORMAT_DEFAULT.percent, f);\n params = String([String(p.nDec), p.sepComma ? '0' : '1'].join(','));\n }\n }\n opts.AA = opts.AA ? opts.AA : {};\n opts.AA.K = {\n S: 'JavaScript',\n JS: new String(`${fnKeystroke}(${params});`)\n };\n opts.AA.F = {\n S: 'JavaScript',\n JS: new String(`${fnFormat}(${params});`)\n };\n }\n delete opts.format;\n return opts;\n },\n\n _resolveColors(opts) {\n let color = this._normalizeColor(opts.backgroundColor);\n if (color) {\n if (!opts.MK) {\n opts.MK = {};\n }\n opts.MK.BG = color;\n }\n color = this._normalizeColor(opts.borderColor);\n if (color) {\n if (!opts.MK) {\n opts.MK = {};\n }\n opts.MK.BC = color;\n }\n delete opts.backgroundColor;\n delete opts.borderColor;\n return opts;\n },\n\n _resolveFlags(options) {\n let result = 0;\n Object.keys(options).forEach(key => {\n if (FIELD_FLAGS[key]) {\n result |= FIELD_FLAGS[key];\n delete options[key];\n }\n });\n if (result !== 0) {\n options.Ff = options.Ff ? options.Ff : 0;\n options.Ff |= result;\n }\n return options;\n },\n\n _resolveJustify(options) {\n let result = 0;\n if (options.align !== undefined) {\n if (typeof FIELD_JUSTIFY[options.align] === 'number') {\n result = FIELD_JUSTIFY[options.align];\n }\n delete options.align;\n }\n if (result !== 0) {\n options.Q = result; // default\n }\n return options;\n },\n\n _resolveFont(options) {\n // add current font to document-level AcroForm dict if necessary\n if (this._acroform.fonts[this._font.id] === null) {\n this._acroform.fonts[this._font.id] = this._font.ref();\n }\n\n // add current font to field's resource dict (RD) if not the default acroform font\n if (this._acroform.defaultFont !== this._font.name) {\n options.DR = { Font: {} };\n options.DR.Font[this._font.id] = this._font.ref();\n options.DA = new String(`/${this._font.id} 0 Tf 0 g`);\n }\n return options;\n },\n\n _resolveStrings(options) {\n let select = [];\n function appendChoices(a) {\n if (Array.isArray(a)) {\n for (let idx = 0; idx < a.length; idx++) {\n if (typeof a[idx] === 'string') {\n select.push(new String(a[idx]));\n } else {\n select.push(a[idx]);\n }\n }\n }\n }\n appendChoices(options.Opt);\n if (options.select) {\n appendChoices(options.select);\n delete options.select;\n }\n if (select.length) {\n options.Opt = select;\n }\n\n if (options.value || options.defaultValue) {\n let x = 0;\n }\n Object.keys(VALUE_MAP).forEach(key => {\n if (options[key] !== undefined) {\n options[VALUE_MAP[key]] = options[key];\n delete options[key];\n }\n });\n ['V', 'DV'].forEach(key => {\n if (typeof options[key] === 'string') {\n options[key] = new String(options[key]);\n }\n });\n\n if (options.MK && options.MK.CA) {\n options.MK.CA = new String(options.MK.CA);\n }\n if (options.label) {\n options.MK = options.MK ? options.MK : {};\n options.MK.CA = new String(options.label);\n delete options.label;\n }\n return options;\n }\n};\n","/*\nPDFDocument - represents an entire PDF document\nBy Devon Govett\n*/\n\nimport stream from 'stream';\nimport fs from 'fs';\nimport PDFObject from './object';\nimport PDFReference from './reference';\nimport PDFPage from './page';\nimport PDFNameTree from './name_tree';\nimport PDFSecurity from './security';\nimport ColorMixin from './mixins/color';\nimport VectorMixin from './mixins/vector';\nimport FontsMixin from './mixins/fonts';\nimport TextMixin from './mixins/text';\nimport ImagesMixin from './mixins/images';\nimport AnnotationsMixin from './mixins/annotations';\nimport OutlineMixin from './mixins/outline';\nimport AcroFormMixin from './mixins/acroform';\n\nclass PDFDocument extends stream.Readable {\n constructor(options = {}) {\n super(options);\n this.options = options;\n\n // PDF version\n switch (options.pdfVersion) {\n case '1.4':\n this.version = 1.4;\n break;\n case '1.5':\n this.version = 1.5;\n break;\n case '1.6':\n this.version = 1.6;\n break;\n case '1.7':\n case '1.7ext3':\n this.version = 1.7;\n break;\n default:\n this.version = 1.3;\n break;\n }\n\n // Whether streams should be compressed\n this.compress =\n this.options.compress != null ? this.options.compress : true;\n\n this._pageBuffer = [];\n this._pageBufferStart = 0;\n\n // The PDF object store\n this._offsets = [];\n this._waiting = 0;\n this._ended = false;\n this._offset = 0;\n const Pages = this.ref({\n Type: 'Pages',\n Count: 0,\n Kids: []\n });\n\n const Names = this.ref({\n Dests: new PDFNameTree()\n });\n\n this._root = this.ref({\n Type: 'Catalog',\n Pages,\n Names\n });\n\n // The current page\n this.page = null;\n\n // Initialize mixins\n this.initColor();\n this.initVector();\n this.initFonts(options.font);\n this.initText();\n this.initImages();\n this.initOutline();\n\n // Initialize the metadata\n this.info = {\n Producer: 'PDFKit',\n Creator: 'PDFKit',\n CreationDate: new Date()\n };\n\n if (this.options.info) {\n for (let key in this.options.info) {\n const val = this.options.info[key];\n this.info[key] = val;\n }\n }\n\n // Generate file ID\n this._id = PDFSecurity.generateFileID(this.info);\n\n // Initialize security settings\n this._security = PDFSecurity.create(this, options);\n\n // Write the header\n // PDF version\n this._write(`%PDF-${this.version}`);\n\n // 4 binary chars, as recommended by the spec\n this._write('%\\xFF\\xFF\\xFF\\xFF');\n\n // Add the first page\n if (this.options.autoFirstPage !== false) {\n this.addPage();\n }\n }\n\n addPage(options) {\n // end the current page if needed\n if (options == null) {\n ({ options } = this);\n }\n if (!this.options.bufferPages) {\n this.flushPages();\n }\n\n // create a page object\n this.page = new PDFPage(this, options);\n this._pageBuffer.push(this.page);\n\n // add the page to the object store\n const pages = this._root.data.Pages.data;\n pages.Kids.push(this.page.dictionary);\n pages.Count++;\n\n // reset x and y coordinates\n this.x = this.page.margins.left;\n this.y = this.page.margins.top;\n\n // flip PDF coordinate system so that the origin is in\n // the top left rather than the bottom left\n this._ctm = [1, 0, 0, 1, 0, 0];\n this.transform(1, 0, 0, -1, 0, this.page.height);\n\n this.emit('pageAdded');\n\n return this;\n }\n\n bufferedPageRange() {\n return { start: this._pageBufferStart, count: this._pageBuffer.length };\n }\n\n switchToPage(n) {\n let page;\n if (!(page = this._pageBuffer[n - this._pageBufferStart])) {\n throw new Error(\n `switchToPage(${n}) out of bounds, current buffer covers pages ${\n this._pageBufferStart\n } to ${this._pageBufferStart + this._pageBuffer.length - 1}`\n );\n }\n\n return (this.page = page);\n }\n\n flushPages() {\n // this local variable exists so we're future-proof against\n // reentrant calls to flushPages.\n const pages = this._pageBuffer;\n this._pageBuffer = [];\n this._pageBufferStart += pages.length;\n for (let page of pages) {\n page.end();\n }\n }\n\n addNamedDestination(name, ...args) {\n if (args.length === 0) {\n args = ['XYZ', null, null, null];\n }\n if (args[0] === 'XYZ' && args[2] !== null) {\n args[2] = this.page.height - args[2];\n }\n args.unshift(this.page.dictionary);\n this._root.data.Names.data.Dests.add(name, args);\n }\n\n addNamedJavaScript(name, js) {\n if (!this._root.data.Names.data.JavaScript) {\n this._root.data.Names.data.JavaScript = new PDFNameTree();\n }\n let data = {\n JS: new String(js),\n S: 'JavaScript'\n };\n this._root.data.Names.data.JavaScript.add(name, data);\n }\n\n ref(data) {\n const ref = new PDFReference(this, this._offsets.length + 1, data);\n this._offsets.push(null); // placeholder for this object's offset once it is finalized\n this._waiting++;\n return ref;\n }\n\n _read() {}\n // do nothing, but this method is required by node\n\n _write(data) {\n if (!Buffer.isBuffer(data)) {\n data = new Buffer(data + '\\n', 'binary');\n }\n\n this.push(data);\n return (this._offset += data.length);\n }\n\n addContent(data) {\n this.page.write(data);\n return this;\n }\n\n _refEnd(ref) {\n this._offsets[ref.id - 1] = ref.offset;\n if (--this._waiting === 0 && this._ended) {\n this._finalize();\n return (this._ended = false);\n }\n }\n\n write(filename, fn) {\n // print a deprecation warning with a stacktrace\n const err = new Error(`\\\nPDFDocument#write is deprecated, and will be removed in a future version of PDFKit. \\\nPlease pipe the document into a Node stream.\\\n`);\n\n console.warn(err.stack);\n\n this.pipe(fs.createWriteStream(filename));\n this.end();\n return this.once('end', fn);\n }\n\n end() {\n this.flushPages();\n this._info = this.ref();\n for (let key in this.info) {\n let val = this.info[key];\n if (typeof val === 'string') {\n val = new String(val);\n }\n\n let entry = this.ref(val);\n entry.end();\n\n this._info.data[key] = entry;\n }\n\n this._info.end();\n\n for (let name in this._fontFamilies) {\n const font = this._fontFamilies[name];\n font.finalize();\n }\n\n this.endOutline();\n\n this._root.end();\n this._root.data.Pages.end();\n this._root.data.Names.end();\n this.endAcroForm();\n\n if (this._security) {\n this._security.end();\n }\n\n if (this._waiting === 0) {\n return this._finalize();\n } else {\n return (this._ended = true);\n }\n }\n\n _finalize(fn) {\n // generate xref\n const xRefOffset = this._offset;\n this._write('xref');\n this._write(`0 ${this._offsets.length + 1}`);\n this._write('0000000000 65535 f ');\n\n for (let offset of this._offsets) {\n offset = `0000000000${offset}`.slice(-10);\n this._write(offset + ' 00000 n ');\n }\n\n // trailer\n const trailer = {\n Size: this._offsets.length + 1,\n Root: this._root,\n Info: this._info,\n ID: [this._id, this._id]\n };\n if (this._security) {\n trailer.Encrypt = this._security.dictionary;\n }\n\n this._write('trailer');\n this._write(PDFObject.convert(trailer));\n\n this._write('startxref');\n this._write(`${xRefOffset}`);\n this._write('%%EOF');\n\n // end the stream\n return this.push(null);\n }\n\n toString() {\n return '[object PDFDocument]';\n }\n}\n\nconst mixin = methods => {\n Object.assign(PDFDocument.prototype, methods);\n};\n\nmixin(ColorMixin);\nmixin(VectorMixin);\nmixin(FontsMixin);\nmixin(TextMixin);\nmixin(ImagesMixin);\nmixin(AnnotationsMixin);\nmixin(OutlineMixin);\nmixin(AcroFormMixin);\n\nexport default PDFDocument;\n"],"names":["PDFAbstractReference","Error","PDFNameTree","_items","key","val","sortedKeys","Object","keys","sort","a","b","localeCompare","out","length","first","last","push","PDFObject","convert","String","join","pad","str","Array","slice","escapableRe","escapable","swapBytes","buff","l","i","end","object","encryptFn","string","isUnicode","charCodeAt","stringBuffer","Buffer","from","valueOf","toString","replace","c","isBuffer","Date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","isArray","items","map","e","call","number","n","Math","round","PDFReference","document","id","data","gen","compress","Filter","uncompressedLength","buffer","chunk","Length","write","finalize","offset","_offset","_security","getEncryptFn","concat","zlib","deflateSync","_write","_refEnd","DEFAULT_MARGINS","top","left","bottom","right","SIZES","A0","A1","A2","A3","A4","A5","A6","A7","A8","A9","A10","B0","B1","B2","B3","B4","B5","B6","B7","B8","B9","B10","C0","C1","C2","C3","C4","C5","C6","C7","C8","C9","C10","RA0","RA1","RA2","RA3","RA4","SRA0","SRA1","SRA2","SRA3","SRA4","EXECUTIVE","FOLIO","LEGAL","LETTER","TABLOID","PDFPage","options","size","layout","margin","margins","dimensions","toUpperCase","width","height","content","ref","resources","ProcSet","dictionary","Type","Parent","_root","Pages","MediaBox","Contents","Resources","Font","XObject","ExtGState","Pattern","Annots","inRange","value","rangeGroup","startRange","endRange","middleRange","floor","arrayIndex","unassigned_code_points","isUnassignedCodePoint","character","commonly_mapped_to_nothing","isCommonlyMappedToNothing","non_ASCII_space_characters","isNonASCIISpaceCharacter","non_ASCII_controls_characters","non_character_codepoints","prohibited_characters","isProhibitedCharacter","bidirectional_r_al","isBidirectionalRAL","bidirectional_l","isBidirectionalL","mapping2space","mapping2nothing","getCodePoint","codePointAt","x","toCodePoints","input","codepoints","before","next","saslprep","opts","TypeError","mapped_input","filter","normalized_input","fromCodePoint","apply","normalize","normalized_map","hasProhibited","some","allowUnassigned","hasUnassigned","hasBidiRAL","hasBidiL","isFirstBidiRAL","isLastBidiRAL","PDFSecurity","info","infoStr","CreationDate","getTime","hasOwnProperty","wordArrayToBuffer","CryptoJS","MD5","bytes","lib","WordArray","random","ownerPassword","userPassword","_setupEncryption","pdfVersion","version","encDict","_setupEncryptionV1V2V4","_setupEncryptionV5","v","r","permissions","keyBits","getPermissionsR2","getPermissionsR3","paddedUserPassword","processPasswordR2R3R4","paddedOwnerPassword","ownerPasswordEntry","getOwnerPasswordR2R3R4","encryptionKey","getEncryptionKeyR2R3R4","_id","userPasswordEntry","getUserPasswordR2","getUserPasswordR3R4","V","CF","StdCF","AuthEvent","CFM","StmF","StrF","R","O","U","P","processedUserPassword","processPasswordR5","processedOwnerPassword","getEncryptionKeyR5","generateRandomWordArray","getUserPasswordR5","userKeySalt","create","words","userEncryptionKeyEntry","getUserEncryptionKeyR5","getOwnerPasswordR5","ownerKeySalt","ownerEncryptionKeyEntry","getOwnerEncryptionKeyR5","permsEntry","getEncryptedPermissionsR5","OE","UE","Perms","obj","digest","clone","sigBytes","min","RC4","encrypt","ciphertext","iv","mode","CBC","padding","Pkcs7","AES","permissionObject","printing","modifying","copying","annotating","fillingForms","contentAccessibility","documentAssembly","documentId","cipher","xorRound","ceil","j","lsbFirstWord","validationSalt","keySalt","SHA256","NoPadding","ECB","password","index","code","PASSWORD_PADDING","unescape","encodeURIComponent","wordArray","byteArray","PDFGradient","doc","stops","embedded","transform","pos","color","opacity","_normalizeColor","_colorSpace","max","m11","m12","m21","m22","dx","dy","m","fn","stopsLength","matrix","bounds","encode","FunctionType","Domain","N","Functions","Bounds","Encode","_gradCount","shader","pattern","PatternType","Shading","Matrix","stop","grad","opacityGradient","embed","pageBBox","page","form","Subtype","FormType","BBox","Group","S","CS","Sh1","gstate","SMask","G","opacityPattern","PaintType","TilingType","XStep","YStep","Gs1","patterns","op","_ctm","m0","m1","m2","m3","m4","m5","addContent","PDFLinearGradient","x1","y1","x2","y2","ShadingType","ColorSpace","Coords","Function","Extend","PDFRadialGradient","r1","r2","Gradient","initColor","_opacityRegistry","_opacityCount","charAt","hex","parseInt","namedColors","part","_setColor","stroke","_setColorSpace","space","fillColor","set","fillOpacity","_fillColor","strokeColor","strokeOpacity","_doOpacity","name","ca","CA","ext_gstates","linearGradient","radialGradient","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","cx","cy","px","py","sx","sy","parameters","A","C","H","h","L","M","Q","q","s","T","t","Z","z","parse","path","cmd","ret","args","curArg","foundDecimal","params","includes","commands","runners","moveTo","bezierCurveTo","quadraticCurveTo","solveArc","lineTo","closePath","y","coords","rx","ry","rot","large","sweep","ex","ey","segs","arcToSegments","seg","bez","segmentToBezier","rotateX","ox","oy","th","PI","sin_th","sin","cos_th","cos","abs","pl","sqrt","a00","a01","a10","a11","x0","y0","d","sfactor_sq","sfactor","xc","yc","th0","atan2","th1","th_arc","segments","result","th2","th3","th_half","x3","y3","SVGPath","KAPPA","initVector","_ctmStack","save","restore","pop","lineWidth","w","_CAP_STYLES","BUTT","ROUND","SQUARE","lineCap","_JOIN_STYLES","MITER","BEVEL","lineJoin","miterLimit","dash","originalLength","valid","every","Number","isFinite","JSON","stringify","phase","undash","cp1x","cp1y","cp2x","cp2y","cpx","cpy","rect","roundedRect","ellipse","xe","ye","xm","ym","circle","radius","arc","startAngle","endAngle","anticlockwise","TWO_PI","HALF_PI","deltaAng","dir","numSegs","segAng","handleLen","curAng","deltaCx","deltaCy","ax","ay","segIdx","polygon","points","shift","point","_windingRule","rule","test","fill","fillAndStroke","isFillRule","clip","values","translate","rotate","angle","rad","origin","scale","xFactor","yFactor","WIN_ANSI_MAP","characters","split","AFMFont","filename","fs","readFileSync","contents","attributes","glyphWidths","boundingBoxes","kernPairs","charWidths","char","bbox","ascender","descender","xHeight","capHeight","lineGap","section","line","match","text","res","len","glyphs","charCode","characterToGlyph","glyph","advances","widthOfGlyph","getKernPair","PDFFont","includeGap","gap","STANDARD_FONTS","Courier","__dirname","Helvetica","Symbol","ZapfDingbats","StandardFont","font","BaseFont","Encoding","encoded","encodeText","glyphsForString","advancesForGlyphs","positions","xAdvance","yAdvance","xOffset","yOffset","advanceWidth","advance","toHex","num","EmbeddedFont","subset","createSubset","unicode","widths","getGlyph","postscriptName","unitsPerEm","ascent","descent","fontLayoutCache","layoutCache","features","run","position","layoutRun","cached","onlyWidth","needle","layoutCached","gid","includeGlyph","codePoints","isCFF","cff","fontFile","encodeStream","on","familyClass","sFamilyClass","undefined","flags","post","isFixedPitch","head","macStyle","italic","tag","fromCharCode","descriptor","FontName","Flags","FontBBox","minX","minY","maxX","maxY","ItalicAngle","italicAngle","Ascent","Descent","CapHeight","XHeight","StemV","FontFile3","FontFile2","descendantFontData","CIDSystemInfo","Registry","Ordering","Supplement","FontDescriptor","W","CIDToGIDMap","descendantFont","DescendantFonts","ToUnicode","toUnicodeCmap","cmap","entries","PDFFontFactory","src","family","isStandardFont","fontkit","Uint8Array","ArrayBuffer","initFonts","defaultFont","_fontFamilies","_fontCount","_fontSize","_font","_registeredFonts","cacheKey","fontSize","open","currentLineHeight","lineHeight","registerFont","LineWrapper","indent","characterSpacing","wordSpacing","columns","columnGap","spaceLeft","startX","startY","column","ellipsis","continuedX","once","continued","align","lastLine","paragraphGap","word","widthOfString","bk","breaker","LineBreaker","wordWidths","nextBreak","shouldContinue","wordWidth","lbk","fbk","mightGrow","mustShrink","required","nextY","nextSection","textWidth","wc","lc","emitLine","wordCount","emit","eachWord","lh","addPage","EventEmitter","initText","_line","bind","_lineGap","moveDown","lines","moveUp","_text","lineCallback","_initOptions","wrapper","_wrapper","_textOptions","wrap","heightOfString","Infinity","list","listType","unit","midLine","bulletRadius","textIndent","itemIndent","bulletIndent","level","levels","numbers","flatten","item","label","letter","times","diff","_fragment","assign","lineBreak","trim","spaceWidth","baseline","renderedWidth","link","goTo","destination","addNamedDestination","underline","strike","lineY","oblique","skew","fonts","encodedWord","positionsWord","hadOffset","addSegment","cur","flush","MARKERS","COLOR_SPACE_MAP","JPEG","marker","readUInt16BE","bits","channels","colorSpace","BitsPerComponent","Width","Height","PNGImage","image","PNG","imgData","dataDecoded","hasAlphaChannel","isInterlaced","interlaceMethod","Predictor","Colors","colors","Columns","palette","transparency","grayscale","rgb","mask","indexed","loadIndexedAlphaChannel","splitAlphaChannel","decodeData","alphaChannel","sMask","Decode","decodePixels","pixels","p","colorCount","pixelCount","skipByteCount","colorIndex","PDFImage","exec","initImages","_imageRegistry","_imageCount","bh","bp","bw","ip","left1","openImage","xobjects","wp","hp","fit","cover","valign","annotate","Rect","_convertRect","Border","F","Dest","annotations","note","Name","D","url","pages","Kids","URI","_markup","QuadPoints","highlight","lineAnnotation","rectAnnotation","ellipseAnnotation","textAnnotation","DA","PDFOutline","parent","title","dest","expanded","outlineData","children","Count","First","Last","child","Prev","Next","endOutline","initOutline","outline","Outlines","PageMode","FIELD_FLAGS","readOnly","noExport","multiline","toggleToOffButton","radioButton","pushButton","combo","edit","multiSelect","noSpell","FIELD_JUSTIFY","center","VALUE_MAP","defaultValue","FORMAT_SPECIAL","zip","zipPlus4","zip4","phone","ssn","FORMAT_DEFAULT","nDec","sepComma","negStyle","currency","currencyPrepend","percent","initForm","_acroform","Fields","NeedAppearances","DR","AcroForm","endAcroForm","fontDict","forEach","fieldRef","_endChild","childRef","formField","fieldDict","_fieldDict","_addToParent","formAnnotation","type","annotRef","formText","formPushButton","formCombo","formList","formRadioButton","formCheckbox","_resolveType","_resolveFlags","_resolveJustify","_resolveFont","_resolveStrings","_resolveColors","_resolveFormat","FT","f","format","fnKeystroke","fnFormat","param","AA","K","JS","backgroundColor","MK","BG","borderColor","BC","Ff","select","appendChoices","idx","Opt","PDFDocument","_pageBuffer","_pageBufferStart","_offsets","_waiting","_ended","Names","Dests","Producer","Creator","generateFileID","autoFirstPage","bufferPages","flushPages","start","count","unshift","add","js","JavaScript","_finalize","err","console","warn","stack","pipe","createWriteStream","_info","entry","xRefOffset","trailer","Size","Root","Info","ID","Encrypt","stream","Readable","mixin","methods","prototype","ColorMixin","VectorMixin","FontsMixin","TextMixin","ImagesMixin","AnnotationsMixin","OutlineMixin","AcroFormMixin"],"mappings":"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"}