{"version":3,"file":"static/js/vendors-3531e194.feb88f41.js","mappings":"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","sources":["../node_modules/pdf-lib/src/api/objects.ts","../node_modules/pdf-lib/src/api/svgPath.ts","../node_modules/pdf-lib/src/api/operations.ts","../node_modules/pdf-lib/src/api/operators.ts","../node_modules/pdf-lib/src/api/rotations.ts","../node_modules/pdf-lib/src/api/sizes.ts","../node_modules/pdf-lib/src/api/text/alignment.ts","../node_modules/pdf-lib/src/api/text/layout.ts","../node_modules/pdf-lib/src/core/PDFContext.ts","../node_modules/pdf-lib/src/core/PDFObjectCopier.ts","../node_modules/pdf-lib/src/core/acroform/PDFAcroField.ts","../node_modules/pdf-lib/src/core/acroform/PDFAcroTerminal.ts","../node_modules/pdf-lib/src/core/acroform/PDFAcroButton.ts","../node_modules/pdf-lib/src/core/acroform/PDFAcroCheckBox.ts","../node_modules/pdf-lib/src/core/acroform/flags.ts","../node_modules/pdf-lib/src/core/acroform/PDFAcroChoice.ts","../node_modules/pdf-lib/src/core/acroform/PDFAcroComboBox.ts","../node_modules/pdf-lib/src/core/acroform/PDFAcroNonTerminal.ts","../node_modules/pdf-lib/src/core/acroform/PDFAcroSignature.ts","../node_modules/pdf-lib/src/core/acroform/PDFAcroText.ts","../node_modules/pdf-lib/src/core/acroform/PDFAcroPushButton.ts","../node_modules/pdf-lib/src/core/acroform/PDFAcroRadioButton.ts","../node_modules/pdf-lib/src/core/acroform/PDFAcroListBox.ts","../node_modules/pdf-lib/src/core/acroform/utils.ts","../node_modules/pdf-lib/src/core/acroform/PDFAcroForm.ts","../node_modules/pdf-lib/src/core/annotation/AppearanceCharacteristics.ts","../node_modules/pdf-lib/src/core/annotation/PDFAnnotation.ts","../node_modules/pdf-lib/src/core/annotation/BorderStyle.ts","../node_modules/pdf-lib/src/core/annotation/PDFWidgetAnnotation.ts","../node_modules/pdf-lib/src/core/annotation/flags.ts","../node_modules/pdf-lib/src/core/document/PDFCrossRefSection.ts","../node_modules/pdf-lib/src/core/document/PDFHeader.ts","../node_modules/pdf-lib/src/core/document/PDFTrailer.ts","../node_modules/pdf-lib/src/core/document/PDFTrailerDict.ts","../node_modules/pdf-lib/src/core/embedders/CMap.ts","../node_modules/pdf-lib/src/core/embedders/CustomFontEmbedder.ts","../node_modules/pdf-lib/src/core/embedders/FontFlags.ts","../node_modules/pdf-lib/src/core/embedders/CustomFontSubsetEmbedder.ts","../node_modules/pdf-lib/src/core/embedders/FileEmbedder.ts","../node_modules/pdf-lib/src/core/embedders/JavaScriptEmbedder.ts","../node_modules/pdf-lib/src/core/embedders/JpegEmbedder.ts","../node_modules/pdf-lib/src/core/embedders/PDFPageEmbedder.ts","../node_modules/pdf-lib/src/core/embedders/PngEmbedder.ts","../node_modules/pdf-lib/src/core/embedders/StandardFontEmbedder.ts","../node_modules/pdf-lib/src/core/errors.ts"],"sourcesContent":["import { PDFName, PDFNumber } from 'src/core';\n\nexport const asPDFName = (name: string | PDFName) =>\n name instanceof PDFName ? name : PDFName.of(name);\n\nexport const asPDFNumber = (num: number | PDFNumber) =>\n num instanceof PDFNumber ? num : PDFNumber.of(num);\n\nexport const asNumber = (num: number | PDFNumber) =>\n num instanceof PDFNumber ? num.asNumber() : num;\n","// Originated from pdfkit Copyright (c) 2014 Devon Govett\n// https://github.com/foliojs/pdfkit/blob/1e62e6ffe24b378eb890df507a47610f4c4a7b24/lib/path.js\n// MIT LICENSE\n// Updated for pdf-lib & TypeScript by Jeremy Messenger\n\nimport {\n appendBezierCurve,\n appendQuadraticCurve,\n closePath,\n lineTo,\n moveTo,\n} from 'src/api/operators';\nimport { PDFOperator } from 'src/core';\n\nlet cx: number = 0;\nlet cy: number = 0;\nlet px: number | null = 0;\nlet py: number | null = 0;\nlet sx: number = 0;\nlet sy: number = 0;\n\nconst parameters = new Map([\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\ninterface Cmd {\n cmd?: string;\n args: number[];\n}\n\nconst parse = (path: string) => {\n let cmd;\n const ret: Cmd[] = [];\n let args: number[] = [];\n let curArg = '';\n let foundDecimal = false;\n let params = 0;\n\n for (const c of path) {\n if (parameters.has(c)) {\n params = parameters.get(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 = (commands: Cmd[]) => {\n // current point, control point, and subpath starting point\n cx = cy = px = py = sx = sy = 0;\n\n // run the commands\n let cmds: PDFOperator[] = [];\n for (let i = 0; i < commands.length; i++) {\n const c = commands[i];\n if (c.cmd && typeof runners[c.cmd] === 'function') {\n const cmd = runners[c.cmd](c.args);\n if (Array.isArray(cmd)) {\n cmds = cmds.concat(cmd);\n } else {\n cmds.push(cmd);\n }\n }\n }\n return cmds;\n};\n\ninterface CmdToOperatorsMap {\n [cmd: string]: (a: number[]) => PDFOperator | PDFOperator[];\n}\n\nconst runners: CmdToOperatorsMap = {\n M(a) {\n cx = a[0];\n cy = a[1];\n px = py = null;\n sx = cx;\n sy = cy;\n return moveTo(cx, cy);\n },\n\n m(a) {\n cx += a[0];\n cy += a[1];\n px = py = null;\n sx = cx;\n sy = cy;\n return moveTo(cx, cy);\n },\n\n C(a) {\n cx = a[4];\n cy = a[5];\n px = a[2];\n py = a[3];\n return appendBezierCurve(a[0], a[1], a[2], a[3], a[4], a[5]);\n },\n\n c(a) {\n const cmd = appendBezierCurve(\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 cy += a[5];\n return cmd;\n },\n\n S(a) {\n if (px === null || py === null) {\n px = cx;\n py = cy;\n }\n\n const cmd = appendBezierCurve(\n cx - (px - cx),\n cy - (py - cy),\n a[0],\n a[1],\n a[2],\n a[3],\n );\n px = a[0];\n py = a[1];\n cx = a[2];\n cy = a[3];\n return cmd;\n },\n\n s(a) {\n if (px === null || py === null) {\n px = cx;\n py = cy;\n }\n\n const cmd = appendBezierCurve(\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 cy += a[3];\n return cmd;\n },\n\n Q(a) {\n px = a[0];\n py = a[1];\n cx = a[2];\n cy = a[3];\n return appendQuadraticCurve(a[0], a[1], cx, cy);\n },\n\n q(a) {\n const cmd = appendQuadraticCurve(\n a[0] + cx,\n a[1] + cy,\n a[2] + cx,\n a[3] + cy,\n );\n px = cx + a[0];\n py = cy + a[1];\n cx += a[2];\n cy += a[3];\n return cmd;\n },\n\n T(a) {\n if (px === null || py === null) {\n px = cx;\n py = cy;\n } else {\n px = cx - (px - cx);\n py = cy - (py - cy);\n }\n\n const cmd = appendQuadraticCurve(px, py, a[0], a[1]);\n px = cx - (px - cx);\n py = cy - (py - cy);\n cx = a[0];\n cy = a[1];\n return cmd;\n },\n\n t(a) {\n if (px === null || py === null) {\n px = cx;\n py = cy;\n } else {\n px = cx - (px - cx);\n py = cy - (py - cy);\n }\n\n const cmd = appendQuadraticCurve(px, py, cx + a[0], cy + a[1]);\n cx += a[0];\n cy += a[1];\n return cmd;\n },\n\n A(a) {\n const cmds = solveArc(cx, cy, a);\n cx = a[5];\n cy = a[6];\n return cmds;\n },\n\n a(a) {\n a[5] += cx;\n a[6] += cy;\n const cmds = solveArc(cx, cy, a);\n cx = a[5];\n cy = a[6];\n return cmds;\n },\n\n L(a) {\n cx = a[0];\n cy = a[1];\n px = py = null;\n return lineTo(cx, cy);\n },\n\n l(a) {\n cx += a[0];\n cy += a[1];\n px = py = null;\n return lineTo(cx, cy);\n },\n\n H(a) {\n cx = a[0];\n px = py = null;\n return lineTo(cx, cy);\n },\n\n h(a) {\n cx += a[0];\n px = py = null;\n return lineTo(cx, cy);\n },\n\n V(a) {\n cy = a[0];\n px = py = null;\n return lineTo(cx, cy);\n },\n\n v(a) {\n cy += a[0];\n px = py = null;\n return lineTo(cx, cy);\n },\n\n Z() {\n const cmd = closePath();\n cx = sx;\n cy = sy;\n return cmd;\n },\n\n z() {\n const cmd = closePath();\n cx = sx;\n cy = sy;\n return cmd;\n },\n};\n\nconst solveArc = (x: number, y: number, coords: number[]) => {\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 const cmds: PDFOperator[] = [];\n for (const seg of segs) {\n const bez = segmentToBezier(...seg);\n cmds.push(appendBezierCurve(...bez));\n }\n return cmds;\n};\n\ntype Segment = [number, number, number, number, number, number, number, number];\ntype Bezier = [number, number, number, number, number, number];\n\n// from Inkscape svgtopdf, thanks!\nconst arcToSegments = (\n x: number,\n y: number,\n rx: number,\n ry: number,\n large: number,\n sweep: number,\n rotateX: number,\n ox: number,\n oy: number,\n) => {\n const th = rotateX * (Math.PI / 180);\n const sinTh = Math.sin(th);\n const cosTh = Math.cos(th);\n rx = Math.abs(rx);\n ry = Math.abs(ry);\n px = cosTh * (ox - x) * 0.5 + sinTh * (oy - y) * 0.5;\n py = cosTh * (oy - y) * 0.5 - sinTh * (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 = cosTh / rx;\n const a01 = sinTh / rx;\n const a10 = -sinTh / ry;\n const a11 = cosTh / 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 sfactorSq = 1 / d - 0.25;\n if (sfactorSq < 0) {\n sfactorSq = 0;\n }\n let sfactor = Math.sqrt(sfactorSq);\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 thArc = th1 - th0;\n if (thArc < 0 && sweep === 1) {\n thArc += 2 * Math.PI;\n } else if (thArc > 0 && sweep === 0) {\n thArc -= 2 * Math.PI;\n }\n\n const segments = Math.ceil(Math.abs(thArc / (Math.PI * 0.5 + 0.001)));\n const result: Segment[] = [];\n\n for (let i = 0; i < segments; i++) {\n const th2 = th0 + (i * thArc) / segments;\n const th3 = th0 + ((i + 1) * thArc) / segments;\n result[i] = [xc, yc, th2, th3, rx, ry, sinTh, cosTh];\n }\n\n return result;\n};\n\nconst segmentToBezier = (\n cx1: number,\n cy1: number,\n th0: number,\n th1: number,\n rx: number,\n ry: number,\n sinTh: number,\n cosTh: number,\n) => {\n const a00 = cosTh * rx;\n const a01 = -sinTh * ry;\n const a10 = sinTh * rx;\n const a11 = cosTh * ry;\n\n const thHalf = 0.5 * (th1 - th0);\n const t =\n ((8 / 3) * Math.sin(thHalf * 0.5) * Math.sin(thHalf * 0.5)) /\n Math.sin(thHalf);\n const x1 = cx1 + Math.cos(th0) - t * Math.sin(th0);\n const y1 = cy1 + Math.sin(th0) + t * Math.cos(th0);\n const x3 = cx1 + Math.cos(th1);\n const y3 = cy1 + Math.sin(th1);\n const x2 = x3 + t * Math.sin(th1);\n const y2 = y3 - t * Math.cos(th1);\n\n const result: Bezier = [\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 return result;\n};\n\nexport const svgPathToOperators = (path: string) => apply(parse(path));\n","import { Color, setFillingColor, setStrokingColor } from 'src/api/colors';\nimport {\n beginText,\n closePath,\n drawObject,\n endText,\n fill,\n fillAndStroke,\n lineTo,\n moveTo,\n nextLine,\n popGraphicsState,\n pushGraphicsState,\n rotateAndSkewTextRadiansAndTranslate,\n rotateRadians,\n scale,\n setFontAndSize,\n setLineHeight,\n setLineWidth,\n showText,\n skewRadians,\n stroke,\n translate,\n LineCapStyle,\n setLineCap,\n rotateDegrees,\n setGraphicsState,\n setDashPattern,\n beginMarkedContent,\n endMarkedContent,\n clip,\n endPath,\n appendBezierCurve,\n} from 'src/api/operators';\nimport { Rotation, degrees, toRadians } from 'src/api/rotations';\nimport { svgPathToOperators } from 'src/api/svgPath';\nimport { PDFHexString, PDFName, PDFNumber, PDFOperator } from 'src/core';\nimport { asNumber } from 'src/api/objects';\n\nexport interface DrawTextOptions {\n color: Color;\n font: string | PDFName;\n size: number | PDFNumber;\n rotate: Rotation;\n xSkew: Rotation;\n ySkew: Rotation;\n x: number | PDFNumber;\n y: number | PDFNumber;\n graphicsState?: string | PDFName;\n}\n\nexport const drawText = (\n line: PDFHexString,\n options: DrawTextOptions,\n): PDFOperator[] =>\n [\n pushGraphicsState(),\n options.graphicsState && setGraphicsState(options.graphicsState),\n beginText(),\n setFillingColor(options.color),\n setFontAndSize(options.font, options.size),\n rotateAndSkewTextRadiansAndTranslate(\n toRadians(options.rotate),\n toRadians(options.xSkew),\n toRadians(options.ySkew),\n options.x,\n options.y,\n ),\n showText(line),\n endText(),\n popGraphicsState(),\n ].filter(Boolean) as PDFOperator[];\n\nexport interface DrawLinesOfTextOptions extends DrawTextOptions {\n lineHeight: number | PDFNumber;\n}\n\nexport const drawLinesOfText = (\n lines: PDFHexString[],\n options: DrawLinesOfTextOptions,\n): PDFOperator[] => {\n const operators = [\n pushGraphicsState(),\n options.graphicsState && setGraphicsState(options.graphicsState),\n beginText(),\n setFillingColor(options.color),\n setFontAndSize(options.font, options.size),\n setLineHeight(options.lineHeight),\n rotateAndSkewTextRadiansAndTranslate(\n toRadians(options.rotate),\n toRadians(options.xSkew),\n toRadians(options.ySkew),\n options.x,\n options.y,\n ),\n ].filter(Boolean) as PDFOperator[];\n\n for (let idx = 0, len = lines.length; idx < len; idx++) {\n operators.push(showText(lines[idx]), nextLine());\n }\n\n operators.push(endText(), popGraphicsState());\n return operators;\n};\n\nexport const drawImage = (\n name: string | PDFName,\n options: {\n x: number | PDFNumber;\n y: number | PDFNumber;\n width: number | PDFNumber;\n height: number | PDFNumber;\n rotate: Rotation;\n xSkew: Rotation;\n ySkew: Rotation;\n graphicsState?: string | PDFName;\n },\n): PDFOperator[] =>\n [\n pushGraphicsState(),\n options.graphicsState && setGraphicsState(options.graphicsState),\n translate(options.x, options.y),\n rotateRadians(toRadians(options.rotate)),\n scale(options.width, options.height),\n skewRadians(toRadians(options.xSkew), toRadians(options.ySkew)),\n drawObject(name),\n popGraphicsState(),\n ].filter(Boolean) as PDFOperator[];\n\nexport const drawPage = (\n name: string | PDFName,\n options: {\n x: number | PDFNumber;\n y: number | PDFNumber;\n xScale: number | PDFNumber;\n yScale: number | PDFNumber;\n rotate: Rotation;\n xSkew: Rotation;\n ySkew: Rotation;\n graphicsState?: string | PDFName;\n },\n): PDFOperator[] =>\n [\n pushGraphicsState(),\n options.graphicsState && setGraphicsState(options.graphicsState),\n translate(options.x, options.y),\n rotateRadians(toRadians(options.rotate)),\n scale(options.xScale, options.yScale),\n skewRadians(toRadians(options.xSkew), toRadians(options.ySkew)),\n drawObject(name),\n popGraphicsState(),\n ].filter(Boolean) as PDFOperator[];\n\nexport const drawLine = (options: {\n start: { x: number | PDFNumber; y: number | PDFNumber };\n end: { x: number | PDFNumber; y: number | PDFNumber };\n thickness: number | PDFNumber;\n color: Color | undefined;\n dashArray?: (number | PDFNumber)[];\n dashPhase?: number | PDFNumber;\n lineCap?: LineCapStyle;\n graphicsState?: string | PDFName;\n}) =>\n [\n pushGraphicsState(),\n options.graphicsState && setGraphicsState(options.graphicsState),\n options.color && setStrokingColor(options.color),\n setLineWidth(options.thickness),\n setDashPattern(options.dashArray ?? [], options.dashPhase ?? 0),\n moveTo(options.start.x, options.start.y),\n options.lineCap && setLineCap(options.lineCap),\n moveTo(options.start.x, options.start.y),\n lineTo(options.end.x, options.end.y),\n stroke(),\n popGraphicsState(),\n ].filter(Boolean) as PDFOperator[];\n\nexport const drawRectangle = (options: {\n x: number | PDFNumber;\n y: number | PDFNumber;\n width: number | PDFNumber;\n height: number | PDFNumber;\n borderWidth: number | PDFNumber;\n color: Color | undefined;\n borderColor: Color | undefined;\n rotate: Rotation;\n xSkew: Rotation;\n ySkew: Rotation;\n borderLineCap?: LineCapStyle;\n borderDashArray?: (number | PDFNumber)[];\n borderDashPhase?: number | PDFNumber;\n graphicsState?: string | PDFName;\n}) =>\n [\n pushGraphicsState(),\n options.graphicsState && setGraphicsState(options.graphicsState),\n options.color && setFillingColor(options.color),\n options.borderColor && setStrokingColor(options.borderColor),\n setLineWidth(options.borderWidth),\n options.borderLineCap && setLineCap(options.borderLineCap),\n setDashPattern(options.borderDashArray ?? [], options.borderDashPhase ?? 0),\n translate(options.x, options.y),\n rotateRadians(toRadians(options.rotate)),\n skewRadians(toRadians(options.xSkew), toRadians(options.ySkew)),\n moveTo(0, 0),\n lineTo(0, options.height),\n lineTo(options.width, options.height),\n lineTo(options.width, 0),\n closePath(),\n\n // prettier-ignore\n options.color && options.borderWidth ? fillAndStroke()\n : options.color ? fill()\n : options.borderColor ? stroke()\n : closePath(),\n\n popGraphicsState(),\n ].filter(Boolean) as PDFOperator[];\n\nconst KAPPA = 4.0 * ((Math.sqrt(2) - 1.0) / 3.0);\n\n/** @deprecated */\nexport const drawEllipsePath = (config: {\n x: number | PDFNumber;\n y: number | PDFNumber;\n xScale: number | PDFNumber;\n yScale: number | PDFNumber;\n}): PDFOperator[] => {\n let x = asNumber(config.x);\n let y = asNumber(config.y);\n const xScale = asNumber(config.xScale);\n const yScale = asNumber(config.yScale);\n\n x -= xScale;\n y -= yScale;\n\n const ox = xScale * KAPPA;\n const oy = yScale * KAPPA;\n const xe = x + xScale * 2;\n const ye = y + yScale * 2;\n const xm = x + xScale;\n const ym = y + yScale;\n\n return [\n pushGraphicsState(),\n moveTo(x, ym),\n appendBezierCurve(x, ym - oy, xm - ox, y, xm, y),\n appendBezierCurve(xm + ox, y, xe, ym - oy, xe, ym),\n appendBezierCurve(xe, ym + oy, xm + ox, ye, xm, ye),\n appendBezierCurve(xm - ox, ye, x, ym + oy, x, ym),\n popGraphicsState(),\n ];\n};\n\nconst drawEllipseCurves = (config: {\n x: number | PDFNumber;\n y: number | PDFNumber;\n xScale: number | PDFNumber;\n yScale: number | PDFNumber;\n rotate: Rotation;\n}): PDFOperator[] => {\n const centerX = asNumber(config.x);\n const centerY = asNumber(config.y);\n const xScale = asNumber(config.xScale);\n const yScale = asNumber(config.yScale);\n\n const x = -xScale;\n const y = -yScale;\n\n const ox = xScale * KAPPA;\n const oy = yScale * KAPPA;\n const xe = x + xScale * 2;\n const ye = y + yScale * 2;\n const xm = x + xScale;\n const ym = y + yScale;\n\n return [\n translate(centerX, centerY),\n rotateRadians(toRadians(config.rotate)),\n moveTo(x, ym),\n appendBezierCurve(x, ym - oy, xm - ox, y, xm, y),\n appendBezierCurve(xm + ox, y, xe, ym - oy, xe, ym),\n appendBezierCurve(xe, ym + oy, xm + ox, ye, xm, ye),\n appendBezierCurve(xm - ox, ye, x, ym + oy, x, ym),\n ];\n};\n\nexport const drawEllipse = (options: {\n x: number | PDFNumber;\n y: number | PDFNumber;\n xScale: number | PDFNumber;\n yScale: number | PDFNumber;\n rotate?: Rotation;\n color: Color | undefined;\n borderColor: Color | undefined;\n borderWidth: number | PDFNumber;\n borderDashArray?: (number | PDFNumber)[];\n borderDashPhase?: number | PDFNumber;\n graphicsState?: string | PDFName;\n borderLineCap?: LineCapStyle;\n}) =>\n [\n pushGraphicsState(),\n options.graphicsState && setGraphicsState(options.graphicsState),\n options.color && setFillingColor(options.color),\n options.borderColor && setStrokingColor(options.borderColor),\n setLineWidth(options.borderWidth),\n options.borderLineCap && setLineCap(options.borderLineCap),\n setDashPattern(options.borderDashArray ?? [], options.borderDashPhase ?? 0),\n\n // The `drawEllipsePath` branch is only here for backwards compatibility.\n // See https://github.com/Hopding/pdf-lib/pull/511#issuecomment-667685655.\n ...(options.rotate === undefined\n ? drawEllipsePath({\n x: options.x,\n y: options.y,\n xScale: options.xScale,\n yScale: options.yScale,\n })\n : drawEllipseCurves({\n x: options.x,\n y: options.y,\n xScale: options.xScale,\n yScale: options.yScale,\n rotate: options.rotate ?? degrees(0),\n })),\n\n // prettier-ignore\n options.color && options.borderWidth ? fillAndStroke()\n : options.color ? fill()\n : options.borderColor ? stroke()\n : closePath(),\n\n popGraphicsState(),\n ].filter(Boolean) as PDFOperator[];\n\nexport const drawSvgPath = (\n path: string,\n options: {\n x: number | PDFNumber;\n y: number | PDFNumber;\n rotate?: Rotation;\n scale: number | PDFNumber | undefined;\n color: Color | undefined;\n borderColor: Color | undefined;\n borderWidth: number | PDFNumber;\n borderDashArray?: (number | PDFNumber)[];\n borderDashPhase?: number | PDFNumber;\n borderLineCap?: LineCapStyle;\n graphicsState?: string | PDFName;\n },\n) =>\n [\n pushGraphicsState(),\n options.graphicsState && setGraphicsState(options.graphicsState),\n\n translate(options.x, options.y),\n rotateRadians(toRadians(options.rotate ?? degrees(0))),\n\n // SVG path Y axis is opposite pdf-lib's\n options.scale ? scale(options.scale, -options.scale) : scale(1, -1),\n\n options.color && setFillingColor(options.color),\n options.borderColor && setStrokingColor(options.borderColor),\n options.borderWidth && setLineWidth(options.borderWidth),\n options.borderLineCap && setLineCap(options.borderLineCap),\n\n setDashPattern(options.borderDashArray ?? [], options.borderDashPhase ?? 0),\n\n ...svgPathToOperators(path),\n\n // prettier-ignore\n options.color && options.borderWidth ? fillAndStroke()\n : options.color ? fill()\n : options.borderColor ? stroke()\n : closePath(),\n\n popGraphicsState(),\n ].filter(Boolean) as PDFOperator[];\n\nexport const drawCheckMark = (options: {\n x: number | PDFNumber;\n y: number | PDFNumber;\n size: number | PDFNumber;\n thickness: number | PDFNumber;\n color: Color | undefined;\n}) => {\n const size = asNumber(options.size);\n\n /*********************** Define Check Mark Points ***************************/\n // A check mark is defined by three points in some coordinate space. Here, we\n // define these points in a unit coordinate system, where the range of the x\n // and y axis are both [-1, 1].\n //\n // Note that we do not hard code `p1y` in case we wish to change the\n // size/shape of the check mark in the future. We want the check mark to\n // always form a right angle. This means that the dot product between (p1-p2)\n // and (p3-p2) should be zero:\n //\n // (p1x-p2x) * (p3x-p2x) + (p1y-p2y) * (p3y-p2y) = 0\n //\n // We can now rejigger this equation to solve for `p1y`:\n //\n // (p1y-p2y) * (p3y-p2y) = -((p1x-p2x) * (p3x-p2x))\n // (p1y-p2y) = -((p1x-p2x) * (p3x-p2x)) / (p3y-p2y)\n // p1y = -((p1x-p2x) * (p3x-p2x)) / (p3y-p2y) + p2y\n //\n // Thanks to my friend Joel Walker (https://github.com/JWalker1995) for\n // devising the above equation and unit coordinate system approach!\n\n // (x, y) coords of the check mark's bottommost point\n const p2x = -1 + 0.75;\n const p2y = -1 + 0.51;\n\n // (x, y) coords of the check mark's topmost point\n const p3y = 1 - 0.525;\n const p3x = 1 - 0.31;\n\n // (x, y) coords of the check mark's center (vertically) point\n const p1x = -1 + 0.325;\n const p1y = -((p1x - p2x) * (p3x - p2x)) / (p3y - p2y) + p2y;\n /****************************************************************************/\n\n return [\n pushGraphicsState(),\n options.color && setStrokingColor(options.color),\n setLineWidth(options.thickness),\n\n translate(options.x, options.y),\n moveTo(p1x * size, p1y * size),\n lineTo(p2x * size, p2y * size),\n lineTo(p3x * size, p3y * size),\n\n stroke(),\n popGraphicsState(),\n ].filter(Boolean) as PDFOperator[];\n};\n\n// prettier-ignore\nexport const rotateInPlace = (options: {\n width: number | PDFNumber;\n height: number | PDFNumber;\n rotation: 0 | 90 | 180 | 270;\n}) =>\n options.rotation === 0 ? [\n translate(0, 0),\n rotateDegrees(0)\n ]\n : options.rotation === 90 ? [\n translate(options.width, 0),\n rotateDegrees(90)\n ]\n : options.rotation === 180 ? [\n translate(options.width, options.height),\n rotateDegrees(180)\n ]\n : options.rotation === 270 ? [\n translate(0, options.height),\n rotateDegrees(270)\n ]\n : []; // Invalid rotation - noop\n\nexport const drawCheckBox = (options: {\n x: number | PDFNumber;\n y: number | PDFNumber;\n width: number | PDFNumber;\n height: number | PDFNumber;\n thickness: number | PDFNumber;\n borderWidth: number | PDFNumber;\n markColor: Color | undefined;\n color: Color | undefined;\n borderColor: Color | undefined;\n filled: boolean;\n}) => {\n const outline = drawRectangle({\n x: options.x,\n y: options.y,\n width: options.width,\n height: options.height,\n borderWidth: options.borderWidth,\n color: options.color,\n borderColor: options.borderColor,\n rotate: degrees(0),\n xSkew: degrees(0),\n ySkew: degrees(0),\n });\n\n if (!options.filled) return outline;\n\n const width = asNumber(options.width);\n const height = asNumber(options.height);\n\n const checkMarkSize = Math.min(width, height) / 2;\n\n const checkMark = drawCheckMark({\n x: width / 2,\n y: height / 2,\n size: checkMarkSize,\n thickness: options.thickness,\n color: options.markColor,\n });\n\n return [pushGraphicsState(), ...outline, ...checkMark, popGraphicsState()];\n};\n\nexport const drawRadioButton = (options: {\n x: number | PDFNumber;\n y: number | PDFNumber;\n width: number | PDFNumber;\n height: number | PDFNumber;\n borderWidth: number | PDFNumber;\n dotColor: Color | undefined;\n color: Color | undefined;\n borderColor: Color | undefined;\n filled: boolean;\n}) => {\n const width = asNumber(options.width);\n const height = asNumber(options.height);\n\n const outlineScale = Math.min(width, height) / 2;\n\n const outline = drawEllipse({\n x: options.x,\n y: options.y,\n xScale: outlineScale,\n yScale: outlineScale,\n color: options.color,\n borderColor: options.borderColor,\n borderWidth: options.borderWidth,\n });\n\n if (!options.filled) return outline;\n\n const dot = drawEllipse({\n x: options.x,\n y: options.y,\n xScale: outlineScale * 0.45,\n yScale: outlineScale * 0.45,\n color: options.dotColor,\n borderColor: undefined,\n borderWidth: 0,\n });\n\n return [pushGraphicsState(), ...outline, ...dot, popGraphicsState()];\n};\n\nexport const drawButton = (options: {\n x: number | PDFNumber;\n y: number | PDFNumber;\n width: number | PDFNumber;\n height: number | PDFNumber;\n borderWidth: number | PDFNumber;\n color: Color | undefined;\n borderColor: Color | undefined;\n textLines: { encoded: PDFHexString; x: number; y: number }[];\n textColor: Color;\n font: string | PDFName;\n fontSize: number | PDFNumber;\n}) => {\n const x = asNumber(options.x);\n const y = asNumber(options.y);\n const width = asNumber(options.width);\n const height = asNumber(options.height);\n\n const background = drawRectangle({\n x,\n y,\n width,\n height,\n borderWidth: options.borderWidth,\n color: options.color,\n borderColor: options.borderColor,\n rotate: degrees(0),\n xSkew: degrees(0),\n ySkew: degrees(0),\n });\n\n const lines = drawTextLines(options.textLines, {\n color: options.textColor,\n font: options.font,\n size: options.fontSize,\n rotate: degrees(0),\n xSkew: degrees(0),\n ySkew: degrees(0),\n });\n\n return [pushGraphicsState(), ...background, ...lines, popGraphicsState()];\n};\n\nexport interface DrawTextLinesOptions {\n color: Color;\n font: string | PDFName;\n size: number | PDFNumber;\n rotate: Rotation;\n xSkew: Rotation;\n ySkew: Rotation;\n}\n\nexport const drawTextLines = (\n lines: { encoded: PDFHexString; x: number; y: number }[],\n options: DrawTextLinesOptions,\n): PDFOperator[] => {\n const operators = [\n beginText(),\n setFillingColor(options.color),\n setFontAndSize(options.font, options.size),\n ];\n\n for (let idx = 0, len = lines.length; idx < len; idx++) {\n const { encoded, x, y } = lines[idx];\n operators.push(\n rotateAndSkewTextRadiansAndTranslate(\n toRadians(options.rotate),\n toRadians(options.xSkew),\n toRadians(options.ySkew),\n x,\n y,\n ),\n showText(encoded),\n );\n }\n\n operators.push(endText());\n\n return operators;\n};\n\nexport const drawTextField = (options: {\n x: number | PDFNumber;\n y: number | PDFNumber;\n width: number | PDFNumber;\n height: number | PDFNumber;\n borderWidth: number | PDFNumber;\n color: Color | undefined;\n borderColor: Color | undefined;\n textLines: { encoded: PDFHexString; x: number; y: number }[];\n textColor: Color;\n font: string | PDFName;\n fontSize: number | PDFNumber;\n padding: number | PDFNumber;\n}) => {\n const x = asNumber(options.x);\n const y = asNumber(options.y);\n const width = asNumber(options.width);\n const height = asNumber(options.height);\n const borderWidth = asNumber(options.borderWidth);\n const padding = asNumber(options.padding);\n\n const clipX = x + borderWidth / 2 + padding;\n const clipY = y + borderWidth / 2 + padding;\n const clipWidth = width - (borderWidth / 2 + padding) * 2;\n const clipHeight = height - (borderWidth / 2 + padding) * 2;\n\n const clippingArea = [\n moveTo(clipX, clipY),\n lineTo(clipX, clipY + clipHeight),\n lineTo(clipX + clipWidth, clipY + clipHeight),\n lineTo(clipX + clipWidth, clipY),\n closePath(),\n clip(),\n endPath(),\n ];\n\n const background = drawRectangle({\n x,\n y,\n width,\n height,\n borderWidth: options.borderWidth,\n color: options.color,\n borderColor: options.borderColor,\n rotate: degrees(0),\n xSkew: degrees(0),\n ySkew: degrees(0),\n });\n\n const lines = drawTextLines(options.textLines, {\n color: options.textColor,\n font: options.font,\n size: options.fontSize,\n rotate: degrees(0),\n xSkew: degrees(0),\n ySkew: degrees(0),\n });\n\n const markedContent = [\n beginMarkedContent('Tx'),\n pushGraphicsState(),\n ...lines,\n popGraphicsState(),\n endMarkedContent(),\n ];\n\n return [\n pushGraphicsState(),\n ...background,\n ...clippingArea,\n ...markedContent,\n popGraphicsState(),\n ];\n};\n\nexport const drawOptionList = (options: {\n x: number | PDFNumber;\n y: number | PDFNumber;\n width: number | PDFNumber;\n height: number | PDFNumber;\n borderWidth: number | PDFNumber;\n color: Color | undefined;\n borderColor: Color | undefined;\n textLines: { encoded: PDFHexString; x: number; y: number; height: number }[];\n textColor: Color;\n font: string | PDFName;\n fontSize: number | PDFNumber;\n lineHeight: number | PDFNumber;\n selectedLines: number[];\n selectedColor: Color;\n padding: number | PDFNumber;\n}) => {\n const x = asNumber(options.x);\n const y = asNumber(options.y);\n const width = asNumber(options.width);\n const height = asNumber(options.height);\n const lineHeight = asNumber(options.lineHeight);\n const borderWidth = asNumber(options.borderWidth);\n const padding = asNumber(options.padding);\n\n const clipX = x + borderWidth / 2 + padding;\n const clipY = y + borderWidth / 2 + padding;\n const clipWidth = width - (borderWidth / 2 + padding) * 2;\n const clipHeight = height - (borderWidth / 2 + padding) * 2;\n\n const clippingArea = [\n moveTo(clipX, clipY),\n lineTo(clipX, clipY + clipHeight),\n lineTo(clipX + clipWidth, clipY + clipHeight),\n lineTo(clipX + clipWidth, clipY),\n closePath(),\n clip(),\n endPath(),\n ];\n\n const background = drawRectangle({\n x,\n y,\n width,\n height,\n borderWidth: options.borderWidth,\n color: options.color,\n borderColor: options.borderColor,\n rotate: degrees(0),\n xSkew: degrees(0),\n ySkew: degrees(0),\n });\n\n const highlights: PDFOperator[] = [];\n for (let idx = 0, len = options.selectedLines.length; idx < len; idx++) {\n const line = options.textLines[options.selectedLines[idx]];\n highlights.push(\n ...drawRectangle({\n x: line.x - padding,\n y: line.y - (lineHeight - line.height) / 2,\n width: width - borderWidth,\n height: line.height + (lineHeight - line.height) / 2,\n borderWidth: 0,\n color: options.selectedColor,\n borderColor: undefined,\n rotate: degrees(0),\n xSkew: degrees(0),\n ySkew: degrees(0),\n }),\n );\n }\n\n const lines = drawTextLines(options.textLines, {\n color: options.textColor,\n font: options.font,\n size: options.fontSize,\n rotate: degrees(0),\n xSkew: degrees(0),\n ySkew: degrees(0),\n });\n\n const markedContent = [\n beginMarkedContent('Tx'),\n pushGraphicsState(),\n ...lines,\n popGraphicsState(),\n endMarkedContent(),\n ];\n\n return [\n pushGraphicsState(),\n ...background,\n ...highlights,\n ...clippingArea,\n ...markedContent,\n popGraphicsState(),\n ];\n};\n","import { asNumber, asPDFName, asPDFNumber } from 'src/api/objects';\nimport { degreesToRadians } from 'src/api/rotations';\nimport {\n PDFHexString,\n PDFName,\n PDFNumber,\n PDFOperator,\n PDFOperatorNames as Ops,\n} from 'src/core';\n\n/* ==================== Clipping Path Operators ==================== */\n\nexport const clip = () => PDFOperator.of(Ops.ClipNonZero);\nexport const clipEvenOdd = () => PDFOperator.of(Ops.ClipEvenOdd);\n\n/* ==================== Graphics State Operators ==================== */\n\nconst { cos, sin, tan } = Math;\n\nexport const concatTransformationMatrix = (\n a: number | PDFNumber,\n b: number | PDFNumber,\n c: number | PDFNumber,\n d: number | PDFNumber,\n e: number | PDFNumber,\n f: number | PDFNumber,\n) =>\n PDFOperator.of(Ops.ConcatTransformationMatrix, [\n asPDFNumber(a),\n asPDFNumber(b),\n asPDFNumber(c),\n asPDFNumber(d),\n asPDFNumber(e),\n asPDFNumber(f),\n ]);\n\nexport const translate = (xPos: number | PDFNumber, yPos: number | PDFNumber) =>\n concatTransformationMatrix(1, 0, 0, 1, xPos, yPos);\n\nexport const scale = (xPos: number | PDFNumber, yPos: number | PDFNumber) =>\n concatTransformationMatrix(xPos, 0, 0, yPos, 0, 0);\n\nexport const rotateRadians = (angle: number | PDFNumber) =>\n concatTransformationMatrix(\n cos(asNumber(angle)),\n sin(asNumber(angle)),\n -sin(asNumber(angle)),\n cos(asNumber(angle)),\n 0,\n 0,\n );\n\nexport const rotateDegrees = (angle: number | PDFNumber) =>\n rotateRadians(degreesToRadians(asNumber(angle)));\n\nexport const skewRadians = (\n xSkewAngle: number | PDFNumber,\n ySkewAngle: number | PDFNumber,\n) =>\n concatTransformationMatrix(\n 1,\n tan(asNumber(xSkewAngle)),\n tan(asNumber(ySkewAngle)),\n 1,\n 0,\n 0,\n );\n\nexport const skewDegrees = (\n xSkewAngle: number | PDFNumber,\n ySkewAngle: number | PDFNumber,\n) =>\n skewRadians(\n degreesToRadians(asNumber(xSkewAngle)),\n degreesToRadians(asNumber(ySkewAngle)),\n );\n\nexport const setDashPattern = (\n dashArray: (number | PDFNumber)[],\n dashPhase: number | PDFNumber,\n) =>\n PDFOperator.of(Ops.SetLineDashPattern, [\n `[${dashArray.map(asPDFNumber).join(' ')}]`,\n asPDFNumber(dashPhase),\n ]);\n\nexport const restoreDashPattern = () => setDashPattern([], 0);\n\nexport enum LineCapStyle {\n Butt = 0,\n Round = 1,\n Projecting = 2,\n}\n\nexport const setLineCap = (style: LineCapStyle) =>\n PDFOperator.of(Ops.SetLineCapStyle, [asPDFNumber(style)]);\n\nexport enum LineJoinStyle {\n Miter = 0,\n Round = 1,\n Bevel = 2,\n}\n\nexport const setLineJoin = (style: LineJoinStyle) =>\n PDFOperator.of(Ops.SetLineJoinStyle, [asPDFNumber(style)]);\n\nexport const setGraphicsState = (state: string | PDFName) =>\n PDFOperator.of(Ops.SetGraphicsStateParams, [asPDFName(state)]);\n\nexport const pushGraphicsState = () => PDFOperator.of(Ops.PushGraphicsState);\n\nexport const popGraphicsState = () => PDFOperator.of(Ops.PopGraphicsState);\n\nexport const setLineWidth = (width: number | PDFNumber) =>\n PDFOperator.of(Ops.SetLineWidth, [asPDFNumber(width)]);\n\n/* ==================== Path Construction Operators ==================== */\n\nexport const appendBezierCurve = (\n x1: number | PDFNumber,\n y1: number | PDFNumber,\n x2: number | PDFNumber,\n y2: number | PDFNumber,\n x3: number | PDFNumber,\n y3: number | PDFNumber,\n) =>\n PDFOperator.of(Ops.AppendBezierCurve, [\n asPDFNumber(x1),\n asPDFNumber(y1),\n asPDFNumber(x2),\n asPDFNumber(y2),\n asPDFNumber(x3),\n asPDFNumber(y3),\n ]);\n\nexport const appendQuadraticCurve = (\n x1: number | PDFNumber,\n y1: number | PDFNumber,\n x2: number | PDFNumber,\n y2: number | PDFNumber,\n) =>\n PDFOperator.of(Ops.CurveToReplicateInitialPoint, [\n asPDFNumber(x1),\n asPDFNumber(y1),\n asPDFNumber(x2),\n asPDFNumber(y2),\n ]);\n\nexport const closePath = () => PDFOperator.of(Ops.ClosePath);\n\nexport const moveTo = (xPos: number | PDFNumber, yPos: number | PDFNumber) =>\n PDFOperator.of(Ops.MoveTo, [asPDFNumber(xPos), asPDFNumber(yPos)]);\n\nexport const lineTo = (xPos: number | PDFNumber, yPos: number | PDFNumber) =>\n PDFOperator.of(Ops.LineTo, [asPDFNumber(xPos), asPDFNumber(yPos)]);\n\n/**\n * @param xPos x coordinate for the lower left corner of the rectangle\n * @param yPos y coordinate for the lower left corner of the rectangle\n * @param width width of the rectangle\n * @param height height of the rectangle\n */\nexport const rectangle = (\n xPos: number | PDFNumber,\n yPos: number | PDFNumber,\n width: number | PDFNumber,\n height: number | PDFNumber,\n) =>\n PDFOperator.of(Ops.AppendRectangle, [\n asPDFNumber(xPos),\n asPDFNumber(yPos),\n asPDFNumber(width),\n asPDFNumber(height),\n ]);\n\n/**\n * @param xPos x coordinate for the lower left corner of the square\n * @param yPos y coordinate for the lower left corner of the square\n * @param size width and height of the square\n */\nexport const square = (xPos: number, yPos: number, size: number) =>\n rectangle(xPos, yPos, size, size);\n\n/* ==================== Path Painting Operators ==================== */\n\nexport const stroke = () => PDFOperator.of(Ops.StrokePath);\n\nexport const fill = () => PDFOperator.of(Ops.FillNonZero);\n\nexport const fillAndStroke = () => PDFOperator.of(Ops.FillNonZeroAndStroke);\n\nexport const endPath = () => PDFOperator.of(Ops.EndPath);\n\n/* ==================== Text Positioning Operators ==================== */\n\nexport const nextLine = () => PDFOperator.of(Ops.NextLine);\n\nexport const moveText = (x: number | PDFNumber, y: number | PDFNumber) =>\n PDFOperator.of(Ops.MoveText, [asPDFNumber(x), asPDFNumber(y)]);\n\n/* ==================== Text Showing Operators ==================== */\n\nexport const showText = (text: PDFHexString) =>\n PDFOperator.of(Ops.ShowText, [text]);\n\n/* ==================== Text State Operators ==================== */\n\nexport const beginText = () => PDFOperator.of(Ops.BeginText);\nexport const endText = () => PDFOperator.of(Ops.EndText);\n\nexport const setFontAndSize = (\n name: string | PDFName,\n size: number | PDFNumber,\n) => PDFOperator.of(Ops.SetFontAndSize, [asPDFName(name), asPDFNumber(size)]);\n\nexport const setCharacterSpacing = (spacing: number | PDFNumber) =>\n PDFOperator.of(Ops.SetCharacterSpacing, [asPDFNumber(spacing)]);\n\nexport const setWordSpacing = (spacing: number | PDFNumber) =>\n PDFOperator.of(Ops.SetWordSpacing, [asPDFNumber(spacing)]);\n\n/** @param squeeze horizontal character spacing */\nexport const setCharacterSqueeze = (squeeze: number | PDFNumber) =>\n PDFOperator.of(Ops.SetTextHorizontalScaling, [asPDFNumber(squeeze)]);\n\nexport const setLineHeight = (lineHeight: number | PDFNumber) =>\n PDFOperator.of(Ops.SetTextLineHeight, [asPDFNumber(lineHeight)]);\n\nexport const setTextRise = (rise: number | PDFNumber) =>\n PDFOperator.of(Ops.SetTextRise, [asPDFNumber(rise)]);\n\nexport enum TextRenderingMode {\n Fill = 0,\n Outline = 1,\n FillAndOutline = 2,\n Invisible = 3,\n FillAndClip = 4,\n OutlineAndClip = 5,\n FillAndOutlineAndClip = 6,\n Clip = 7,\n}\n\nexport const setTextRenderingMode = (mode: TextRenderingMode) =>\n PDFOperator.of(Ops.SetTextRenderingMode, [asPDFNumber(mode)]);\n\nexport const setTextMatrix = (\n a: number | PDFNumber,\n b: number | PDFNumber,\n c: number | PDFNumber,\n d: number | PDFNumber,\n e: number | PDFNumber,\n f: number | PDFNumber,\n) =>\n PDFOperator.of(Ops.SetTextMatrix, [\n asPDFNumber(a),\n asPDFNumber(b),\n asPDFNumber(c),\n asPDFNumber(d),\n asPDFNumber(e),\n asPDFNumber(f),\n ]);\n\nexport const rotateAndSkewTextRadiansAndTranslate = (\n rotationAngle: number | PDFNumber,\n xSkewAngle: number | PDFNumber,\n ySkewAngle: number | PDFNumber,\n x: number | PDFNumber,\n y: number | PDFNumber,\n) =>\n setTextMatrix(\n cos(asNumber(rotationAngle)),\n sin(asNumber(rotationAngle)) + tan(asNumber(xSkewAngle)),\n -sin(asNumber(rotationAngle)) + tan(asNumber(ySkewAngle)),\n cos(asNumber(rotationAngle)),\n x,\n y,\n );\n\nexport const rotateAndSkewTextDegreesAndTranslate = (\n rotationAngle: number | PDFNumber,\n xSkewAngle: number | PDFNumber,\n ySkewAngle: number | PDFNumber,\n x: number | PDFNumber,\n y: number | PDFNumber,\n) =>\n rotateAndSkewTextRadiansAndTranslate(\n degreesToRadians(asNumber(rotationAngle)),\n degreesToRadians(asNumber(xSkewAngle)),\n degreesToRadians(asNumber(ySkewAngle)),\n x,\n y,\n );\n\n/* ==================== XObject Operator ==================== */\n\nexport const drawObject = (name: string | PDFName) =>\n PDFOperator.of(Ops.DrawObject, [asPDFName(name)]);\n\n/* ==================== Color Operators ==================== */\n\nexport const setFillingGrayscaleColor = (gray: number | PDFNumber) =>\n PDFOperator.of(Ops.NonStrokingColorGray, [asPDFNumber(gray)]);\n\nexport const setStrokingGrayscaleColor = (gray: number | PDFNumber) =>\n PDFOperator.of(Ops.StrokingColorGray, [asPDFNumber(gray)]);\n\nexport const setFillingRgbColor = (\n red: number | PDFNumber,\n green: number | PDFNumber,\n blue: number | PDFNumber,\n) =>\n PDFOperator.of(Ops.NonStrokingColorRgb, [\n asPDFNumber(red),\n asPDFNumber(green),\n asPDFNumber(blue),\n ]);\n\nexport const setStrokingRgbColor = (\n red: number | PDFNumber,\n green: number | PDFNumber,\n blue: number | PDFNumber,\n) =>\n PDFOperator.of(Ops.StrokingColorRgb, [\n asPDFNumber(red),\n asPDFNumber(green),\n asPDFNumber(blue),\n ]);\n\nexport const setFillingCmykColor = (\n cyan: number | PDFNumber,\n magenta: number | PDFNumber,\n yellow: number | PDFNumber,\n key: number | PDFNumber,\n) =>\n PDFOperator.of(Ops.NonStrokingColorCmyk, [\n asPDFNumber(cyan),\n asPDFNumber(magenta),\n asPDFNumber(yellow),\n asPDFNumber(key),\n ]);\n\nexport const setStrokingCmykColor = (\n cyan: number | PDFNumber,\n magenta: number | PDFNumber,\n yellow: number | PDFNumber,\n key: number | PDFNumber,\n) =>\n PDFOperator.of(Ops.StrokingColorCmyk, [\n asPDFNumber(cyan),\n asPDFNumber(magenta),\n asPDFNumber(yellow),\n asPDFNumber(key),\n ]);\n\n/* ==================== Marked Content Operators ==================== */\n\nexport const beginMarkedContent = (tag: string | PDFName) =>\n PDFOperator.of(Ops.BeginMarkedContent, [asPDFName(tag)]);\n\nexport const endMarkedContent = () => PDFOperator.of(Ops.EndMarkedContent);\n","import { assertIs, error } from 'src/utils';\n\nexport enum RotationTypes {\n Degrees = 'degrees',\n Radians = 'radians',\n}\n\nexport interface Radians {\n type: RotationTypes.Radians;\n angle: number;\n}\n\nexport interface Degrees {\n type: RotationTypes.Degrees;\n angle: number;\n}\n\nexport type Rotation = Radians | Degrees;\n\nexport const radians = (radianAngle: number): Radians => {\n assertIs(radianAngle, 'radianAngle', ['number']);\n return { type: RotationTypes.Radians, angle: radianAngle };\n};\n\nexport const degrees = (degreeAngle: number): Degrees => {\n assertIs(degreeAngle, 'degreeAngle', ['number']);\n return { type: RotationTypes.Degrees, angle: degreeAngle };\n};\n\nconst { Radians, Degrees } = RotationTypes;\n\nexport const degreesToRadians = (degree: number) => (degree * Math.PI) / 180;\nexport const radiansToDegrees = (radian: number) => (radian * 180) / Math.PI;\n\n// prettier-ignore\nexport const toRadians = (rotation: Rotation) => \n rotation.type === Radians ? rotation.angle\n : rotation.type === Degrees ? degreesToRadians(rotation.angle)\n : error(`Invalid rotation: ${JSON.stringify(rotation)}`);\n\n// prettier-ignore\nexport const toDegrees = (rotation: Rotation) => \n rotation.type === Radians ? radiansToDegrees(rotation.angle)\n : rotation.type === Degrees ? rotation.angle\n : error(`Invalid rotation: ${JSON.stringify(rotation)}`);\n\nexport const reduceRotation = (degreeAngle = 0) => {\n const quadrants = (degreeAngle / 90) % 4;\n if (quadrants === 0) return 0;\n if (quadrants === 1) return 90;\n if (quadrants === 2) return 180;\n if (quadrants === 3) return 270;\n return 0; // `degreeAngle` is not a multiple of 90\n};\n\nexport const adjustDimsForRotation = (\n dims: { width: number; height: number },\n degreeAngle = 0,\n) => {\n const rotation = reduceRotation(degreeAngle);\n return rotation === 90 || rotation === 270\n ? { width: dims.height, height: dims.width }\n : { width: dims.width, height: dims.height };\n};\n\nexport const rotateRectangle = (\n rectangle: {\n x: number;\n y: number;\n width: number;\n height: number;\n },\n borderWidth = 0,\n degreeAngle = 0,\n) => {\n const { x, y, width: w, height: h } = rectangle;\n\n const r = reduceRotation(degreeAngle);\n const b = borderWidth / 2;\n\n // prettier-ignore\n if (r === 0) return { x: x - b, y: y - b, width: w, height: h };\n else if (r === 90) return { x: x - h + b, y: y - b, width: h, height: w };\n else if (r === 180) return { x: x - w + b, y: y - h + b, width: w, height: h };\n else if (r === 270) return { x: x - b, y: y - w + b, width: h, height: w };\n else return { x: x - b, y: y - b, width: w, height: h };\n};\n","export const PageSizes = {\n '4A0': [4767.87, 6740.79] as [number, number],\n '2A0': [3370.39, 4767.87] as [number, number],\n A0: [2383.94, 3370.39] as [number, number],\n A1: [1683.78, 2383.94] as [number, number],\n A2: [1190.55, 1683.78] as [number, number],\n A3: [841.89, 1190.55] as [number, number],\n A4: [595.28, 841.89] as [number, number],\n A5: [419.53, 595.28] as [number, number],\n A6: [297.64, 419.53] as [number, number],\n A7: [209.76, 297.64] as [number, number],\n A8: [147.4, 209.76] as [number, number],\n A9: [104.88, 147.4] as [number, number],\n A10: [73.7, 104.88] as [number, number],\n B0: [2834.65, 4008.19] as [number, number],\n B1: [2004.09, 2834.65] as [number, number],\n B2: [1417.32, 2004.09] as [number, number],\n B3: [1000.63, 1417.32] as [number, number],\n B4: [708.66, 1000.63] as [number, number],\n B5: [498.9, 708.66] as [number, number],\n B6: [354.33, 498.9] as [number, number],\n B7: [249.45, 354.33] as [number, number],\n B8: [175.75, 249.45] as [number, number],\n B9: [124.72, 175.75] as [number, number],\n B10: [87.87, 124.72] as [number, number],\n C0: [2599.37, 3676.54] as [number, number],\n C1: [1836.85, 2599.37] as [number, number],\n C2: [1298.27, 1836.85] as [number, number],\n C3: [918.43, 1298.27] as [number, number],\n C4: [649.13, 918.43] as [number, number],\n C5: [459.21, 649.13] as [number, number],\n C6: [323.15, 459.21] as [number, number],\n C7: [229.61, 323.15] as [number, number],\n C8: [161.57, 229.61] as [number, number],\n C9: [113.39, 161.57] as [number, number],\n C10: [79.37, 113.39] as [number, number],\n RA0: [2437.8, 3458.27] as [number, number],\n RA1: [1729.13, 2437.8] as [number, number],\n RA2: [1218.9, 1729.13] as [number, number],\n RA3: [864.57, 1218.9] as [number, number],\n RA4: [609.45, 864.57] as [number, number],\n SRA0: [2551.18, 3628.35] as [number, number],\n SRA1: [1814.17, 2551.18] as [number, number],\n SRA2: [1275.59, 1814.17] as [number, number],\n SRA3: [907.09, 1275.59] as [number, number],\n SRA4: [637.8, 907.09] as [number, number],\n Executive: [521.86, 756.0] as [number, number],\n Folio: [612.0, 936.0] as [number, number],\n Legal: [612.0, 1008.0] as [number, number],\n Letter: [612.0, 792.0] as [number, number],\n Tabloid: [792.0, 1224.0] as [number, number],\n};\n","export enum TextAlignment {\n Left = 0,\n Center = 1,\n Right = 2,\n}\n","import PDFFont from 'src/api/PDFFont';\nimport { CombedTextLayoutError } from 'src/api/errors';\nimport { TextAlignment } from 'src/api/text/alignment';\n\nimport { PDFHexString } from 'src/core';\nimport {\n cleanText,\n lineSplit,\n mergeLines,\n charAtIndex,\n charSplit,\n} from 'src/utils';\n\nexport interface TextPosition {\n text: string;\n encoded: PDFHexString;\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nexport interface LayoutBounds {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nconst MIN_FONT_SIZE = 4;\nconst MAX_FONT_SIZE = 500;\n\nconst computeFontSize = (\n lines: string[],\n font: PDFFont,\n bounds: LayoutBounds,\n multiline: boolean = false,\n) => {\n let fontSize = MIN_FONT_SIZE;\n\n while (fontSize < MAX_FONT_SIZE) {\n let linesUsed = 0;\n\n for (\n let lineIdx = 0, lineLen = lines.length;\n lineIdx < lineLen;\n lineIdx++\n ) {\n linesUsed += 1;\n\n const line = lines[lineIdx];\n const words = line.split(' ');\n\n // Layout the words using the current `fontSize`, line wrapping\n // whenever we reach the end of the current line.\n let spaceInLineRemaining = bounds.width;\n for (let idx = 0, len = words.length; idx < len; idx++) {\n const isLastWord = idx === len - 1;\n const word = isLastWord ? words[idx] : words[idx] + ' ';\n const widthOfWord = font.widthOfTextAtSize(word, fontSize);\n spaceInLineRemaining -= widthOfWord;\n if (spaceInLineRemaining <= 0) {\n linesUsed += 1;\n spaceInLineRemaining = bounds.width - widthOfWord;\n }\n }\n }\n\n // Return if we exceeded the allowed width\n if (!multiline && linesUsed > lines.length) return fontSize - 1;\n\n const height = font.heightAtSize(fontSize);\n const lineHeight = height + height * 0.2;\n const totalHeight = lineHeight * linesUsed;\n\n // Return if we exceeded the allowed height\n if (totalHeight > Math.abs(bounds.height)) return fontSize - 1;\n\n fontSize += 1;\n }\n\n return fontSize;\n};\n\nconst computeCombedFontSize = (\n line: string,\n font: PDFFont,\n bounds: LayoutBounds,\n cellCount: number,\n) => {\n const cellWidth = bounds.width / cellCount;\n const cellHeight = bounds.height;\n\n let fontSize = MIN_FONT_SIZE;\n\n const chars = charSplit(line);\n while (fontSize < MAX_FONT_SIZE) {\n for (let idx = 0, len = chars.length; idx < len; idx++) {\n const c = chars[idx];\n const tooLong = font.widthOfTextAtSize(c, fontSize) > cellWidth * 0.75;\n if (tooLong) return fontSize - 1;\n }\n\n const height = font.heightAtSize(fontSize, { descender: false });\n if (height > cellHeight) return fontSize - 1;\n\n fontSize += 1;\n }\n\n return fontSize;\n};\n\nexport interface LayoutTextOptions {\n alignment: TextAlignment;\n fontSize?: number;\n font: PDFFont;\n bounds: LayoutBounds;\n}\n\nexport interface MultilineTextLayout {\n bounds: LayoutBounds;\n lines: TextPosition[];\n fontSize: number;\n lineHeight: number;\n}\n\nconst lastIndexOfWhitespace = (line: string) => {\n for (let idx = line.length; idx > 0; idx--) {\n if (/\\s/.test(line[idx])) return idx;\n }\n return undefined;\n};\n\nconst splitOutLines = (\n input: string,\n maxWidth: number,\n font: PDFFont,\n fontSize: number,\n) => {\n let lastWhitespaceIdx = input.length;\n while (lastWhitespaceIdx > 0) {\n const line = input.substring(0, lastWhitespaceIdx);\n const encoded = font.encodeText(line);\n const width = font.widthOfTextAtSize(line, fontSize);\n if (width < maxWidth) {\n const remainder = input.substring(lastWhitespaceIdx) || undefined;\n return { line, encoded, width, remainder };\n }\n lastWhitespaceIdx = lastIndexOfWhitespace(line) ?? 0;\n }\n\n // We were unable to split the input enough to get a chunk that would fit\n // within the specified `maxWidth` so we'll just return everything\n return {\n line: input,\n encoded: font.encodeText(input),\n width: font.widthOfTextAtSize(input, fontSize),\n remainder: undefined,\n };\n};\n\nexport const layoutMultilineText = (\n text: string,\n { alignment, fontSize, font, bounds }: LayoutTextOptions,\n): MultilineTextLayout => {\n const lines = lineSplit(cleanText(text));\n\n if (fontSize === undefined || fontSize === 0) {\n fontSize = computeFontSize(lines, font, bounds, true);\n }\n const height = font.heightAtSize(fontSize);\n const lineHeight = height + height * 0.2;\n\n const textLines: TextPosition[] = [];\n\n let minX = bounds.x;\n let minY = bounds.y;\n let maxX = bounds.x + bounds.width;\n let maxY = bounds.y + bounds.height;\n\n let y = bounds.y + bounds.height;\n for (let idx = 0, len = lines.length; idx < len; idx++) {\n let prevRemainder: string | undefined = lines[idx];\n while (prevRemainder !== undefined) {\n const { line, encoded, width, remainder } = splitOutLines(\n prevRemainder,\n bounds.width,\n font,\n fontSize,\n );\n\n // prettier-ignore\n const x = (\n alignment === TextAlignment.Left ? bounds.x\n : alignment === TextAlignment.Center ? bounds.x + (bounds.width / 2) - (width / 2)\n : alignment === TextAlignment.Right ? bounds.x + bounds.width - width\n : bounds.x\n );\n\n y -= lineHeight;\n\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x + width > maxX) maxX = x + width;\n if (y + height > maxY) maxY = y + height;\n\n textLines.push({ text: line, encoded, width, height, x, y });\n\n // Only trim lines that we had to split ourselves. So we won't trim lines\n // that the user provided themselves with whitespace.\n prevRemainder = remainder?.trim();\n }\n }\n\n return {\n fontSize,\n lineHeight,\n lines: textLines,\n bounds: {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n },\n };\n};\n\nexport interface LayoutCombedTextOptions {\n fontSize?: number;\n font: PDFFont;\n bounds: LayoutBounds;\n cellCount: number;\n}\n\nexport interface CombedTextLayout {\n bounds: LayoutBounds;\n cells: TextPosition[];\n fontSize: number;\n}\n\nexport const layoutCombedText = (\n text: string,\n { fontSize, font, bounds, cellCount }: LayoutCombedTextOptions,\n): CombedTextLayout => {\n const line = mergeLines(cleanText(text));\n\n if (line.length > cellCount) {\n throw new CombedTextLayoutError(line.length, cellCount);\n }\n\n if (fontSize === undefined || fontSize === 0) {\n fontSize = computeCombedFontSize(line, font, bounds, cellCount);\n }\n\n const cellWidth = bounds.width / cellCount;\n\n const height = font.heightAtSize(fontSize, { descender: false });\n const y = bounds.y + (bounds.height / 2 - height / 2);\n\n const cells: TextPosition[] = [];\n\n let minX = bounds.x;\n let minY = bounds.y;\n let maxX = bounds.x + bounds.width;\n let maxY = bounds.y + bounds.height;\n\n let cellOffset = 0;\n let charOffset = 0;\n while (cellOffset < cellCount) {\n const [char, charLength] = charAtIndex(line, charOffset);\n\n const encoded = font.encodeText(char);\n const width = font.widthOfTextAtSize(char, fontSize);\n\n const cellCenter = bounds.x + (cellWidth * cellOffset + cellWidth / 2);\n const x = cellCenter - width / 2;\n\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x + width > maxX) maxX = x + width;\n if (y + height > maxY) maxY = y + height;\n\n cells.push({ text: line, encoded, width, height, x, y });\n\n cellOffset += 1;\n charOffset += charLength;\n }\n\n return {\n fontSize,\n cells,\n bounds: {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n },\n };\n};\n\nexport interface LayoutSinglelineTextOptions {\n alignment: TextAlignment;\n fontSize?: number;\n font: PDFFont;\n bounds: LayoutBounds;\n}\n\nexport interface SinglelineTextLayout {\n bounds: LayoutBounds;\n line: TextPosition;\n fontSize: number;\n}\n\nexport const layoutSinglelineText = (\n text: string,\n { alignment, fontSize, font, bounds }: LayoutSinglelineTextOptions,\n): SinglelineTextLayout => {\n const line = mergeLines(cleanText(text));\n\n if (fontSize === undefined || fontSize === 0) {\n fontSize = computeFontSize([line], font, bounds);\n }\n\n const encoded = font.encodeText(line);\n const width = font.widthOfTextAtSize(line, fontSize);\n const height = font.heightAtSize(fontSize, { descender: false });\n\n // prettier-ignore\n const x = (\n alignment === TextAlignment.Left ? bounds.x\n : alignment === TextAlignment.Center ? bounds.x + (bounds.width / 2) - (width / 2)\n : alignment === TextAlignment.Right ? bounds.x + bounds.width - width\n : bounds.x\n );\n\n const y = bounds.y + (bounds.height / 2 - height / 2);\n\n return {\n fontSize,\n line: { text: line, encoded, width, height, x, y },\n bounds: { x, y, width, height },\n };\n};\n","import pako from 'pako';\n\nimport PDFHeader from 'src/core/document/PDFHeader';\nimport { UnexpectedObjectTypeError } from 'src/core/errors';\nimport PDFArray from 'src/core/objects/PDFArray';\nimport PDFBool from 'src/core/objects/PDFBool';\nimport PDFDict from 'src/core/objects/PDFDict';\nimport PDFHexString from 'src/core/objects/PDFHexString';\nimport PDFName from 'src/core/objects/PDFName';\nimport PDFNull from 'src/core/objects/PDFNull';\nimport PDFNumber from 'src/core/objects/PDFNumber';\nimport PDFObject from 'src/core/objects/PDFObject';\nimport PDFRawStream from 'src/core/objects/PDFRawStream';\nimport PDFRef from 'src/core/objects/PDFRef';\nimport PDFStream from 'src/core/objects/PDFStream';\nimport PDFString from 'src/core/objects/PDFString';\nimport PDFOperator from 'src/core/operators/PDFOperator';\nimport Ops from 'src/core/operators/PDFOperatorNames';\nimport PDFContentStream from 'src/core/structures/PDFContentStream';\nimport { typedArrayFor } from 'src/utils';\nimport { SimpleRNG } from 'src/utils/rng';\n\ntype LookupKey = PDFRef | PDFObject | undefined;\n\ninterface LiteralObject {\n [name: string]: Literal | PDFObject;\n}\n\ninterface LiteralArray {\n [index: number]: Literal | PDFObject;\n}\n\ntype Literal =\n | LiteralObject\n | LiteralArray\n | string\n | number\n | boolean\n | null\n | undefined;\n\nconst byAscendingObjectNumber = (\n [a]: [PDFRef, PDFObject],\n [b]: [PDFRef, PDFObject],\n) => a.objectNumber - b.objectNumber;\n\nclass PDFContext {\n static create = () => new PDFContext();\n\n largestObjectNumber: number;\n header: PDFHeader;\n trailerInfo: {\n Root?: PDFObject;\n Encrypt?: PDFObject;\n Info?: PDFObject;\n ID?: PDFObject;\n };\n rng: SimpleRNG;\n\n private readonly indirectObjects: Map;\n\n private pushGraphicsStateContentStreamRef?: PDFRef;\n private popGraphicsStateContentStreamRef?: PDFRef;\n\n private constructor() {\n this.largestObjectNumber = 0;\n this.header = PDFHeader.forVersion(1, 7);\n this.trailerInfo = {};\n\n this.indirectObjects = new Map();\n this.rng = SimpleRNG.withSeed(1);\n }\n\n assign(ref: PDFRef, object: PDFObject): void {\n this.indirectObjects.set(ref, object);\n if (ref.objectNumber > this.largestObjectNumber) {\n this.largestObjectNumber = ref.objectNumber;\n }\n }\n\n nextRef(): PDFRef {\n this.largestObjectNumber += 1;\n return PDFRef.of(this.largestObjectNumber);\n }\n\n register(object: PDFObject): PDFRef {\n const ref = this.nextRef();\n this.assign(ref, object);\n return ref;\n }\n\n delete(ref: PDFRef): boolean {\n return this.indirectObjects.delete(ref);\n }\n\n lookupMaybe(ref: LookupKey, type: typeof PDFArray): PDFArray | undefined;\n lookupMaybe(ref: LookupKey, type: typeof PDFBool): PDFBool | undefined;\n lookupMaybe(ref: LookupKey, type: typeof PDFDict): PDFDict | undefined;\n lookupMaybe(\n ref: LookupKey,\n type: typeof PDFHexString,\n ): PDFHexString | undefined;\n lookupMaybe(ref: LookupKey, type: typeof PDFName): PDFName | undefined;\n lookupMaybe(ref: LookupKey, type: typeof PDFNull): typeof PDFNull | undefined;\n lookupMaybe(ref: LookupKey, type: typeof PDFNumber): PDFNumber | undefined;\n lookupMaybe(ref: LookupKey, type: typeof PDFStream): PDFStream | undefined;\n lookupMaybe(ref: LookupKey, type: typeof PDFRef): PDFRef | undefined;\n lookupMaybe(ref: LookupKey, type: typeof PDFString): PDFString | undefined;\n lookupMaybe(\n ref: LookupKey,\n type1: typeof PDFString,\n type2: typeof PDFHexString,\n ): PDFString | PDFHexString | undefined;\n\n lookupMaybe(ref: LookupKey, ...types: any[]) {\n // TODO: `preservePDFNull` is for backwards compatibility. Should be\n // removed in next breaking API change.\n const preservePDFNull = types.includes(PDFNull);\n\n const result = ref instanceof PDFRef ? this.indirectObjects.get(ref) : ref;\n\n if (!result || (result === PDFNull && !preservePDFNull)) return undefined;\n\n for (let idx = 0, len = types.length; idx < len; idx++) {\n const type = types[idx];\n if (type === PDFNull) {\n if (result === PDFNull) return result;\n } else {\n if (result instanceof type) return result;\n }\n }\n throw new UnexpectedObjectTypeError(types, result);\n }\n\n lookup(ref: LookupKey): PDFObject | undefined;\n lookup(ref: LookupKey, type: typeof PDFArray): PDFArray;\n lookup(ref: LookupKey, type: typeof PDFBool): PDFBool;\n lookup(ref: LookupKey, type: typeof PDFDict): PDFDict;\n lookup(ref: LookupKey, type: typeof PDFHexString): PDFHexString;\n lookup(ref: LookupKey, type: typeof PDFName): PDFName;\n lookup(ref: LookupKey, type: typeof PDFNull): typeof PDFNull;\n lookup(ref: LookupKey, type: typeof PDFNumber): PDFNumber;\n lookup(ref: LookupKey, type: typeof PDFStream): PDFStream;\n lookup(ref: LookupKey, type: typeof PDFRef): PDFRef;\n lookup(ref: LookupKey, type: typeof PDFString): PDFString;\n lookup(\n ref: LookupKey,\n type1: typeof PDFString,\n type2: typeof PDFHexString,\n ): PDFString | PDFHexString;\n\n lookup(ref: LookupKey, ...types: any[]) {\n const result = ref instanceof PDFRef ? this.indirectObjects.get(ref) : ref;\n\n if (types.length === 0) return result;\n\n for (let idx = 0, len = types.length; idx < len; idx++) {\n const type = types[idx];\n if (type === PDFNull) {\n if (result === PDFNull) return result;\n } else {\n if (result instanceof type) return result;\n }\n }\n\n throw new UnexpectedObjectTypeError(types, result);\n }\n\n getObjectRef(pdfObject: PDFObject): PDFRef | undefined {\n const entries = Array.from(this.indirectObjects.entries());\n for (let idx = 0, len = entries.length; idx < len; idx++) {\n const [ref, object] = entries[idx];\n if (object === pdfObject) {\n return ref;\n }\n }\n\n return undefined;\n }\n\n enumerateIndirectObjects(): [PDFRef, PDFObject][] {\n return Array.from(this.indirectObjects.entries()).sort(\n byAscendingObjectNumber,\n );\n }\n\n obj(literal: null | undefined): typeof PDFNull;\n obj(literal: string): PDFName;\n obj(literal: number): PDFNumber;\n obj(literal: boolean): PDFBool;\n obj(literal: LiteralObject): PDFDict;\n obj(literal: LiteralArray): PDFArray;\n\n obj(literal: Literal) {\n if (literal instanceof PDFObject) {\n return literal;\n } else if (literal === null || literal === undefined) {\n return PDFNull;\n } else if (typeof literal === 'string') {\n return PDFName.of(literal);\n } else if (typeof literal === 'number') {\n return PDFNumber.of(literal);\n } else if (typeof literal === 'boolean') {\n return literal ? PDFBool.True : PDFBool.False;\n } else if (Array.isArray(literal)) {\n const array = PDFArray.withContext(this);\n for (let idx = 0, len = literal.length; idx < len; idx++) {\n array.push(this.obj(literal[idx]));\n }\n return array;\n } else {\n const dict = PDFDict.withContext(this);\n const keys = Object.keys(literal);\n for (let idx = 0, len = keys.length; idx < len; idx++) {\n const key = keys[idx];\n const value = (literal as LiteralObject)[key] as any;\n if (value !== undefined) dict.set(PDFName.of(key), this.obj(value));\n }\n return dict;\n }\n }\n\n stream(\n contents: string | Uint8Array,\n dict: LiteralObject = {},\n ): PDFRawStream {\n return PDFRawStream.of(this.obj(dict), typedArrayFor(contents));\n }\n\n flateStream(\n contents: string | Uint8Array,\n dict: LiteralObject = {},\n ): PDFRawStream {\n return this.stream(pako.deflate(typedArrayFor(contents)), {\n ...dict,\n Filter: 'FlateDecode',\n });\n }\n\n contentStream(\n operators: PDFOperator[],\n dict: LiteralObject = {},\n ): PDFContentStream {\n return PDFContentStream.of(this.obj(dict), operators);\n }\n\n formXObject(\n operators: PDFOperator[],\n dict: LiteralObject = {},\n ): PDFContentStream {\n return this.contentStream(operators, {\n BBox: this.obj([0, 0, 0, 0]),\n Matrix: this.obj([1, 0, 0, 1, 0, 0]),\n ...dict,\n Type: 'XObject',\n Subtype: 'Form',\n });\n }\n\n /*\n * Reference to PDFContentStream that contains a single PDFOperator: `q`.\n * Used by [[PDFPageLeaf]] instances to ensure that when content streams are\n * added to a modified PDF, they start in the default, unchanged graphics\n * state.\n */\n getPushGraphicsStateContentStream(): PDFRef {\n if (this.pushGraphicsStateContentStreamRef) {\n return this.pushGraphicsStateContentStreamRef;\n }\n const dict = this.obj({});\n const op = PDFOperator.of(Ops.PushGraphicsState);\n const stream = PDFContentStream.of(dict, [op]);\n this.pushGraphicsStateContentStreamRef = this.register(stream);\n return this.pushGraphicsStateContentStreamRef;\n }\n\n /*\n * Reference to PDFContentStream that contains a single PDFOperator: `Q`.\n * Used by [[PDFPageLeaf]] instances to ensure that when content streams are\n * added to a modified PDF, they start in the default, unchanged graphics\n * state.\n */\n getPopGraphicsStateContentStream(): PDFRef {\n if (this.popGraphicsStateContentStreamRef) {\n return this.popGraphicsStateContentStreamRef;\n }\n const dict = this.obj({});\n const op = PDFOperator.of(Ops.PopGraphicsState);\n const stream = PDFContentStream.of(dict, [op]);\n this.popGraphicsStateContentStreamRef = this.register(stream);\n return this.popGraphicsStateContentStreamRef;\n }\n\n addRandomSuffix(prefix: string, suffixLength = 4): string {\n return `${prefix}-${Math.floor(this.rng.nextInt() * 10 ** suffixLength)}`;\n }\n}\n\nexport default PDFContext;\n","import PDFArray from 'src/core/objects/PDFArray';\nimport PDFDict from 'src/core/objects/PDFDict';\nimport PDFName from 'src/core/objects/PDFName';\nimport PDFObject from 'src/core/objects/PDFObject';\nimport PDFRef from 'src/core/objects/PDFRef';\nimport PDFStream from 'src/core/objects/PDFStream';\nimport PDFContext from 'src/core/PDFContext';\nimport PDFPageLeaf from 'src/core/structures/PDFPageLeaf';\n\n/**\n * PDFObjectCopier copies PDFObjects from a src context to a dest context.\n * The primary use case for this is to copy pages between PDFs.\n *\n * _Copying_ an object with a PDFObjectCopier is different from _cloning_ an\n * object with its [[PDFObject.clone]] method:\n *\n * ```\n * const src: PDFContext = ...\n * const dest: PDFContext = ...\n * const originalObject: PDFObject = ...\n * const copiedObject = PDFObjectCopier.for(src, dest).copy(originalObject);\n * const clonedObject = originalObject.clone();\n * ```\n *\n * Copying an object is equivalent to cloning it and then copying over any other\n * objects that it references. Note that only dictionaries, arrays, and streams\n * (or structures build from them) can contain indirect references to other\n * objects. Copying a PDFObject that is not a dictionary, array, or stream is\n * supported, but is equivalent to cloning it.\n */\nclass PDFObjectCopier {\n static for = (src: PDFContext, dest: PDFContext) =>\n new PDFObjectCopier(src, dest);\n\n private readonly src: PDFContext;\n private readonly dest: PDFContext;\n private readonly traversedObjects = new Map();\n\n private constructor(src: PDFContext, dest: PDFContext) {\n this.src = src;\n this.dest = dest;\n }\n\n // prettier-ignore\n copy = (object: T): T => (\n object instanceof PDFPageLeaf ? this.copyPDFPage(object)\n : object instanceof PDFDict ? this.copyPDFDict(object)\n : object instanceof PDFArray ? this.copyPDFArray(object)\n : object instanceof PDFStream ? this.copyPDFStream(object)\n : object instanceof PDFRef ? this.copyPDFIndirectObject(object)\n : object.clone()\n ) as T;\n\n private copyPDFPage = (originalPage: PDFPageLeaf): PDFPageLeaf => {\n const clonedPage = originalPage.clone();\n\n // Move any entries that the originalPage is inheriting from its parent\n // tree nodes directly into originalPage so they are preserved during\n // the copy.\n const { InheritableEntries } = PDFPageLeaf;\n for (let idx = 0, len = InheritableEntries.length; idx < len; idx++) {\n const key = PDFName.of(InheritableEntries[idx]);\n const value = clonedPage.getInheritableAttribute(key)!;\n if (!clonedPage.get(key) && value) clonedPage.set(key, value);\n }\n\n // Remove the parent reference to prevent the whole donor document's page\n // tree from being copied when we only need a single page.\n clonedPage.delete(PDFName.of('Parent'));\n\n return this.copyPDFDict(clonedPage) as PDFPageLeaf;\n };\n\n private copyPDFDict = (originalDict: PDFDict): PDFDict => {\n if (this.traversedObjects.has(originalDict)) {\n return this.traversedObjects.get(originalDict) as PDFDict;\n }\n\n const clonedDict = originalDict.clone(this.dest);\n this.traversedObjects.set(originalDict, clonedDict);\n\n const entries = originalDict.entries();\n\n for (let idx = 0, len = entries.length; idx < len; idx++) {\n const [key, value] = entries[idx];\n clonedDict.set(key, this.copy(value));\n }\n\n return clonedDict;\n };\n\n private copyPDFArray = (originalArray: PDFArray): PDFArray => {\n if (this.traversedObjects.has(originalArray)) {\n return this.traversedObjects.get(originalArray) as PDFArray;\n }\n\n const clonedArray = originalArray.clone(this.dest);\n this.traversedObjects.set(originalArray, clonedArray);\n\n for (let idx = 0, len = originalArray.size(); idx < len; idx++) {\n const value = originalArray.get(idx);\n clonedArray.set(idx, this.copy(value));\n }\n\n return clonedArray;\n };\n\n private copyPDFStream = (originalStream: PDFStream): PDFStream => {\n if (this.traversedObjects.has(originalStream)) {\n return this.traversedObjects.get(originalStream) as PDFStream;\n }\n\n const clonedStream = originalStream.clone(this.dest);\n this.traversedObjects.set(originalStream, clonedStream);\n\n const entries = originalStream.dict.entries();\n for (let idx = 0, len = entries.length; idx < len; idx++) {\n const [key, value] = entries[idx];\n clonedStream.dict.set(key, this.copy(value));\n }\n\n return clonedStream;\n };\n\n private copyPDFIndirectObject = (ref: PDFRef): PDFRef => {\n const alreadyMapped = this.traversedObjects.has(ref);\n\n if (!alreadyMapped) {\n const newRef = this.dest.nextRef();\n this.traversedObjects.set(ref, newRef);\n\n const dereferencedValue = this.src.lookup(ref);\n if (dereferencedValue) {\n const cloned = this.copy(dereferencedValue);\n this.dest.assign(newRef, cloned);\n }\n }\n\n return this.traversedObjects.get(ref) as PDFRef;\n };\n}\n\nexport default PDFObjectCopier;\n","import PDFDict from 'src/core/objects/PDFDict';\nimport PDFString from 'src/core/objects/PDFString';\nimport PDFHexString from 'src/core/objects/PDFHexString';\nimport PDFName from 'src/core/objects/PDFName';\nimport PDFObject from 'src/core/objects/PDFObject';\nimport PDFNumber from 'src/core/objects/PDFNumber';\nimport PDFArray from 'src/core/objects/PDFArray';\nimport PDFRef from 'src/core/objects/PDFRef';\nimport { findLastMatch } from 'src/utils';\nimport { MissingDAEntryError, MissingTfOperatorError } from 'src/core/errors';\n\n// Examples:\n// `/Helv 12 Tf` -> ['Helv', '12']\n// `/HeBo 8.00 Tf` -> ['HeBo', '8.00']\n// `/HeBo Tf` -> ['HeBo', undefined]\nconst tfRegex = /\\/([^\\0\\t\\n\\f\\r\\ ]+)[\\0\\t\\n\\f\\r\\ ]*(\\d*\\.\\d+|\\d+)?[\\0\\t\\n\\f\\r\\ ]+Tf/;\n\nclass PDFAcroField {\n readonly dict: PDFDict;\n readonly ref: PDFRef;\n\n protected constructor(dict: PDFDict, ref: PDFRef) {\n this.dict = dict;\n this.ref = ref;\n }\n\n T(): PDFString | PDFHexString | undefined {\n return this.dict.lookupMaybe(PDFName.of('T'), PDFString, PDFHexString);\n }\n\n Ff(): PDFNumber | undefined {\n const numberOrRef = this.getInheritableAttribute(PDFName.of('Ff'));\n return this.dict.context.lookupMaybe(numberOrRef, PDFNumber);\n }\n\n V(): PDFObject | undefined {\n const valueOrRef = this.getInheritableAttribute(PDFName.of('V'));\n return this.dict.context.lookup(valueOrRef);\n }\n\n Kids(): PDFArray | undefined {\n return this.dict.lookupMaybe(PDFName.of('Kids'), PDFArray);\n }\n\n // Parent(): PDFDict | undefined {\n // return this.dict.lookupMaybe(PDFName.of('Parent'), PDFDict);\n // }\n\n DA(): PDFString | PDFHexString | undefined {\n const da = this.dict.lookup(PDFName.of('DA'));\n if (da instanceof PDFString || da instanceof PDFHexString) return da;\n return undefined;\n }\n\n setKids(kids: PDFObject[]) {\n this.dict.set(PDFName.of('Kids'), this.dict.context.obj(kids));\n }\n\n getParent(): PDFAcroField | undefined {\n // const parent = this.Parent();\n // if (!parent) return undefined;\n // return new PDFAcroField(parent);\n\n const parentRef = this.dict.get(PDFName.of('Parent'));\n if (parentRef instanceof PDFRef) {\n const parent = this.dict.lookup(PDFName.of('Parent'), PDFDict);\n return new PDFAcroField(parent, parentRef);\n }\n\n return undefined;\n }\n\n setParent(parent: PDFRef | undefined) {\n if (!parent) this.dict.delete(PDFName.of('Parent'));\n else this.dict.set(PDFName.of('Parent'), parent);\n }\n\n getFullyQualifiedName(): string | undefined {\n const parent = this.getParent();\n if (!parent) return this.getPartialName();\n return `${parent.getFullyQualifiedName()}.${this.getPartialName()}`;\n }\n\n getPartialName(): string | undefined {\n return this.T()?.decodeText();\n }\n\n setPartialName(partialName: string | undefined) {\n if (!partialName) this.dict.delete(PDFName.of('T'));\n else this.dict.set(PDFName.of('T'), PDFHexString.fromText(partialName));\n }\n\n setDefaultAppearance(appearance: string) {\n this.dict.set(PDFName.of('DA'), PDFString.of(appearance));\n }\n\n getDefaultAppearance(): string | undefined {\n const DA = this.DA();\n\n if (DA instanceof PDFHexString) {\n return DA.decodeText();\n }\n\n return DA?.asString();\n }\n\n setFontSize(fontSize: number) {\n const name = this.getFullyQualifiedName() ?? '';\n\n const da = this.getDefaultAppearance();\n if (!da) throw new MissingDAEntryError(name);\n\n const daMatch = findLastMatch(da, tfRegex);\n if (!daMatch.match) throw new MissingTfOperatorError(name);\n\n const daStart = da.slice(0, daMatch.pos - daMatch.match[0].length);\n const daEnd = daMatch.pos <= da.length ? da.slice(daMatch.pos) : '';\n const fontName = daMatch.match[1];\n const modifiedDa = `${daStart} /${fontName} ${fontSize} Tf ${daEnd}`;\n\n this.setDefaultAppearance(modifiedDa);\n }\n\n getFlags(): number {\n return this.Ff()?.asNumber() ?? 0;\n }\n\n setFlags(flags: number) {\n this.dict.set(PDFName.of('Ff'), PDFNumber.of(flags));\n }\n\n hasFlag(flag: number): boolean {\n const flags = this.getFlags();\n return (flags & flag) !== 0;\n }\n\n setFlag(flag: number) {\n const flags = this.getFlags();\n this.setFlags(flags | flag);\n }\n\n clearFlag(flag: number) {\n const flags = this.getFlags();\n this.setFlags(flags & ~flag);\n }\n\n setFlagTo(flag: number, enable: boolean) {\n if (enable) this.setFlag(flag);\n else this.clearFlag(flag);\n }\n\n getInheritableAttribute(name: PDFName): PDFObject | undefined {\n let attribute: PDFObject | undefined;\n this.ascend((node) => {\n if (!attribute) attribute = node.dict.get(name);\n });\n return attribute;\n }\n\n ascend(visitor: (node: PDFAcroField) => any): void {\n visitor(this);\n const parent = this.getParent();\n if (parent) parent.ascend(visitor);\n }\n}\n\nexport default PDFAcroField;\n","import PDFDict from 'src/core/objects/PDFDict';\nimport PDFName from 'src/core/objects/PDFName';\nimport PDFRef from 'src/core/objects/PDFRef';\nimport PDFAcroField from 'src/core/acroform/PDFAcroField';\nimport PDFWidgetAnnotation from 'src/core/annotation/PDFWidgetAnnotation';\nimport { IndexOutOfBoundsError } from 'src/core/errors';\n\nclass PDFAcroTerminal extends PDFAcroField {\n static fromDict = (dict: PDFDict, ref: PDFRef) =>\n new PDFAcroTerminal(dict, ref);\n\n FT(): PDFName {\n const nameOrRef = this.getInheritableAttribute(PDFName.of('FT'));\n return this.dict.context.lookup(nameOrRef, PDFName);\n }\n\n getWidgets(): PDFWidgetAnnotation[] {\n const kidDicts = this.Kids();\n\n // This field is itself a widget\n if (!kidDicts) return [PDFWidgetAnnotation.fromDict(this.dict)];\n\n // This field's kids are its widgets\n const widgets = new Array(kidDicts.size());\n for (let idx = 0, len = kidDicts.size(); idx < len; idx++) {\n const dict = kidDicts.lookup(idx, PDFDict);\n widgets[idx] = PDFWidgetAnnotation.fromDict(dict);\n }\n\n return widgets;\n }\n\n addWidget(ref: PDFRef) {\n const { Kids } = this.normalizedEntries();\n Kids.push(ref);\n }\n\n removeWidget(idx: number) {\n const kidDicts = this.Kids();\n\n if (!kidDicts) {\n // This field is itself a widget\n if (idx !== 0) throw new IndexOutOfBoundsError(idx, 0, 0);\n this.setKids([]);\n } else {\n // This field's kids are its widgets\n if (idx < 0 || idx > kidDicts.size()) {\n throw new IndexOutOfBoundsError(idx, 0, kidDicts.size());\n }\n kidDicts.remove(idx);\n }\n }\n\n normalizedEntries() {\n let Kids = this.Kids();\n\n // If this field is itself a widget (because it was only rendered once in\n // the document, so the field and widget properties were merged) then we\n // add itself to the `Kids` array. The alternative would be to try\n // splitting apart the widget properties and creating a separate object\n // for them.\n if (!Kids) {\n Kids = this.dict.context.obj([this.ref]);\n this.dict.set(PDFName.of('Kids'), Kids);\n }\n\n return { Kids };\n }\n}\n\nexport default PDFAcroTerminal;\n","import PDFObject from 'src/core/objects/PDFObject';\nimport PDFString from 'src/core/objects/PDFString';\nimport PDFHexString from 'src/core/objects/PDFHexString';\nimport PDFArray from 'src/core/objects/PDFArray';\nimport PDFName from 'src/core/objects/PDFName';\nimport PDFRef from 'src/core/objects/PDFRef';\nimport PDFAcroTerminal from 'src/core/acroform/PDFAcroTerminal';\nimport { IndexOutOfBoundsError } from 'src/core/errors';\n\nclass PDFAcroButton extends PDFAcroTerminal {\n Opt(): PDFString | PDFHexString | PDFArray | undefined {\n return this.dict.lookupMaybe(\n PDFName.of('Opt'),\n PDFString,\n PDFHexString,\n PDFArray,\n );\n }\n\n setOpt(opt: PDFObject[]) {\n this.dict.set(PDFName.of('Opt'), this.dict.context.obj(opt));\n }\n\n getExportValues(): (PDFString | PDFHexString)[] | undefined {\n const opt = this.Opt();\n\n if (!opt) return undefined;\n\n if (opt instanceof PDFString || opt instanceof PDFHexString) {\n return [opt];\n }\n\n const values: (PDFString | PDFHexString)[] = [];\n for (let idx = 0, len = opt.size(); idx < len; idx++) {\n const value = opt.lookup(idx);\n if (value instanceof PDFString || value instanceof PDFHexString) {\n values.push(value);\n }\n }\n\n return values;\n }\n\n removeExportValue(idx: number) {\n const opt = this.Opt();\n\n if (!opt) return;\n\n if (opt instanceof PDFString || opt instanceof PDFHexString) {\n if (idx !== 0) throw new IndexOutOfBoundsError(idx, 0, 0);\n this.setOpt([]);\n } else {\n if (idx < 0 || idx > opt.size()) {\n throw new IndexOutOfBoundsError(idx, 0, opt.size());\n }\n opt.remove(idx);\n }\n }\n\n // Enforce use use of /Opt even if it isn't strictly necessary\n normalizeExportValues() {\n const exportValues = this.getExportValues() ?? [];\n\n const Opt: (PDFString | PDFHexString)[] = [];\n\n const widgets = this.getWidgets();\n for (let idx = 0, len = widgets.length; idx < len; idx++) {\n const widget = widgets[idx];\n const exportVal =\n exportValues[idx] ??\n PDFHexString.fromText(widget.getOnValue()?.decodeText() ?? '');\n Opt.push(exportVal);\n }\n\n this.setOpt(Opt);\n }\n\n /**\n * Reuses existing opt if one exists with the same value (assuming\n * `useExistingIdx` is `true`). Returns index of existing (or new) opt.\n */\n addOpt(opt: PDFHexString | PDFString, useExistingOptIdx: boolean): number {\n this.normalizeExportValues();\n\n const optText = opt.decodeText();\n\n let existingIdx: number | undefined;\n if (useExistingOptIdx) {\n const exportValues = this.getExportValues() ?? [];\n for (let idx = 0, len = exportValues.length; idx < len; idx++) {\n const exportVal = exportValues[idx];\n if (exportVal.decodeText() === optText) existingIdx = idx;\n }\n }\n\n const Opt = this.Opt() as PDFArray;\n Opt.push(opt);\n\n return existingIdx ?? Opt.size() - 1;\n }\n\n addWidgetWithOpt(\n widget: PDFRef,\n opt: PDFHexString | PDFString,\n useExistingOptIdx: boolean,\n ) {\n const optIdx = this.addOpt(opt, useExistingOptIdx);\n const apStateValue = PDFName.of(String(optIdx));\n this.addWidget(widget);\n return apStateValue;\n }\n}\n\nexport default PDFAcroButton;\n","import PDFContext from 'src/core/PDFContext';\nimport PDFRef from 'src/core/objects/PDFRef';\nimport PDFDict from 'src/core/objects/PDFDict';\nimport PDFName from 'src/core/objects/PDFName';\nimport PDFAcroButton from 'src/core/acroform/PDFAcroButton';\nimport { InvalidAcroFieldValueError } from 'src/core/errors';\n\nclass PDFAcroCheckBox extends PDFAcroButton {\n static fromDict = (dict: PDFDict, ref: PDFRef) =>\n new PDFAcroCheckBox(dict, ref);\n\n static create = (context: PDFContext) => {\n const dict = context.obj({\n FT: 'Btn',\n Kids: [],\n });\n const ref = context.register(dict);\n return new PDFAcroCheckBox(dict, ref);\n };\n\n setValue(value: PDFName) {\n const onValue = this.getOnValue() ?? PDFName.of('Yes');\n if (value !== onValue && value !== PDFName.of('Off')) {\n throw new InvalidAcroFieldValueError();\n }\n\n this.dict.set(PDFName.of('V'), value);\n\n const widgets = this.getWidgets();\n for (let idx = 0, len = widgets.length; idx < len; idx++) {\n const widget = widgets[idx];\n const state = widget.getOnValue() === value ? value : PDFName.of('Off');\n widget.setAppearanceState(state);\n }\n }\n\n getValue(): PDFName {\n const v = this.V();\n if (v instanceof PDFName) return v;\n return PDFName.of('Off');\n }\n\n getOnValue(): PDFName | undefined {\n const [widget] = this.getWidgets();\n return widget?.getOnValue();\n }\n}\n\nexport default PDFAcroCheckBox;\n","const flag = (bitIndex: number) => 1 << bitIndex;\n\n/** From PDF spec table 221 */\nexport enum AcroFieldFlags {\n /**\n * If set, the user may not change the value of the field. Any associated\n * widget annotations will not interact with the user; that is, they will not\n * respond to mouse clicks or change their appearance in response to mouse\n * motions. This flag is useful for fields whose values are computed or\n * imported from a database.\n */\n ReadOnly = flag(1 - 1),\n\n /**\n * If set, the field shall have a value at the time it is exported by a\n * submit-form action (see 12.7.5.2, \"Submit-Form Action\").\n */\n Required = flag(2 - 1),\n\n /**\n * If set, the field shall not be exported by a submit-form action\n * (see 12.7.5.2, \"Submit-Form Action\").\n */\n NoExport = flag(3 - 1),\n}\n\n/** From PDF spec table 226 */\nexport enum AcroButtonFlags {\n /**\n * (Radio buttons only) If set, exactly one radio button shall be selected at\n * all times; selecting the currently selected button has no effect. If clear,\n * clicking the selected button deselects it, leaving no button selected.\n */\n NoToggleToOff = flag(15 - 1),\n\n /**\n * If set, the field is a set of radio buttons; if clear, the field is a check\n * box. This flag may be set only if the Pushbutton flag is clear.\n */\n Radio = flag(16 - 1),\n\n /**\n * If set, the field is a pushbutton that does not retain a permanent value.\n */\n PushButton = flag(17 - 1),\n\n /**\n * If set, a group of radio buttons within a radio button field that use the\n * same value for the on state will turn on and off in unison; that is if one\n * is checked, they are all checked. If clear, the buttons are mutually\n * exclusive (the same behavior as HTML radio buttons).\n */\n RadiosInUnison = flag(26 - 1),\n}\n\n/** From PDF spec table 228 */\nexport enum AcroTextFlags {\n /**\n * If set, the field may contain multiple lines of text; if clear, the field's\n * text shall be restricted to a single line.\n */\n Multiline = flag(13 - 1),\n\n /**\n * If set, the field is intended for entering a secure password that should\n * not be echoed visibly to the screen. Characters typed from the keyboard\n * shall instead be echoed in some unreadable form, such as asterisks or\n * bullet characters.\n * > NOTE To protect password confidentiality, readers should never store\n * > the value of the text field in the PDF file if this flag is set.\n */\n Password = flag(14 - 1),\n\n /**\n * If set, the text entered in the field represents the pathname of a file\n * whose contents shall be submitted as the value of the field.\n */\n FileSelect = flag(21 - 1),\n\n /**\n * If set, text entered in the field shall not be spell-checked.\n */\n DoNotSpellCheck = flag(23 - 1),\n\n /**\n * If set, the field shall not scroll (horizontally for single-line fields,\n * vertically for multiple-line fields) to accommodate more text than fits\n * within its annotation rectangle. Once the field is full, no further text\n * shall be accepted for interactive form filling; for non-interactive form\n * filling, the filler should take care not to add more character than will\n * visibly fit in the defined area.\n */\n DoNotScroll = flag(24 - 1),\n\n /**\n * May be set only if the MaxLen entry is present in the text field dictionary\n * (see Table 229) and if the Multiline, Password, and FileSelect flags are\n * clear. If set, the field shall be automatically divided into as many\n * equally spaced positions, or combs, as the value of MaxLen, and the text\n * is laid out into those combs.\n */\n Comb = flag(25 - 1),\n\n /**\n * If set, the value of this field shall be a rich text string\n * (see 12.7.3.4, \"Rich Text Strings\"). If the field has a value, the RV\n * entry of the field dictionary (Table 222) shall specify the rich text\n * string.\n */\n RichText = flag(26 - 1),\n}\n\n/** From PDF spec table 230 */\nexport enum AcroChoiceFlags {\n /**\n * If set, the field is a combo box; if clear, the field is a list box.\n */\n Combo = flag(18 - 1),\n\n /**\n * If set, the combo box shall include an editable text box as well as a\n * drop-down list; if clear, it shall include only a drop-down list. This\n * flag shall be used only if the Combo flag is set.\n */\n Edit = flag(19 - 1),\n\n /**\n * If set, the field's option items shall be sorted alphabetically. This flag\n * is intended for use by writers, not by readers. Conforming readers shall\n * display the options in the order in which they occur in the Opt array\n * (see Table 231).\n */\n Sort = flag(20 - 1),\n\n /**\n * If set, more than one of the field's option items may be selected\n * simultaneously; if clear, at most one item shall be selected.\n */\n MultiSelect = flag(22 - 1),\n\n /**\n * If set, text entered in the field shall not be spell-checked. This flag\n * shall not be used unless the Combo and Edit flags are both set.\n */\n DoNotSpellCheck = flag(23 - 1),\n\n /**\n * If set, the new value shall be committed as soon as a selection is made\n * (commonly with the pointing device). In this case, supplying a value for\n * a field involves three actions: selecting the field for fill-in,\n * selecting a choice for the fill-in value, and leaving that field, which\n * finalizes or \"commits\" the data choice and triggers any actions associated\n * with the entry or changing of this data. If this flag is on, then\n * processing does not wait for leaving the field action to occur, but\n * immediately proceeds to the third step.\n *\n * This option enables applications to perform an action once a selection is\n * made, without requiring the user to exit the field. If clear, the new\n * value is not committed until the user exits the field.\n */\n CommitOnSelChange = flag(27 - 1),\n}\n","import PDFAcroTerminal from 'src/core/acroform/PDFAcroTerminal';\nimport PDFHexString from 'src/core/objects/PDFHexString';\nimport PDFString from 'src/core/objects/PDFString';\nimport PDFArray from 'src/core/objects/PDFArray';\nimport PDFName from 'src/core/objects/PDFName';\nimport { AcroChoiceFlags } from 'src/core/acroform/flags';\nimport {\n InvalidAcroFieldValueError,\n MultiSelectValueError,\n} from 'src/core/errors';\n\nclass PDFAcroChoice extends PDFAcroTerminal {\n setValues(values: (PDFString | PDFHexString)[]) {\n if (\n this.hasFlag(AcroChoiceFlags.Combo) &&\n !this.hasFlag(AcroChoiceFlags.Edit) &&\n !this.valuesAreValid(values)\n ) {\n throw new InvalidAcroFieldValueError();\n }\n\n if (values.length === 0) {\n this.dict.delete(PDFName.of('V'));\n }\n if (values.length === 1) {\n this.dict.set(PDFName.of('V'), values[0]);\n }\n if (values.length > 1) {\n if (!this.hasFlag(AcroChoiceFlags.MultiSelect)) {\n throw new MultiSelectValueError();\n }\n this.dict.set(PDFName.of('V'), this.dict.context.obj(values));\n }\n\n this.updateSelectedIndices(values);\n }\n\n valuesAreValid(values: (PDFString | PDFHexString)[]): boolean {\n const options = this.getOptions();\n for (let idx = 0, len = values.length; idx < len; idx++) {\n const val = values[idx].decodeText();\n if (!options.find((o) => val === (o.display || o.value).decodeText())) {\n return false;\n }\n }\n return true;\n }\n\n updateSelectedIndices(values: (PDFString | PDFHexString)[]) {\n if (values.length > 1) {\n const indices = new Array(values.length);\n const options = this.getOptions();\n for (let idx = 0, len = values.length; idx < len; idx++) {\n const val = values[idx].decodeText();\n indices[idx] = options.findIndex(\n (o) => val === (o.display || o.value).decodeText(),\n );\n }\n this.dict.set(PDFName.of('I'), this.dict.context.obj(indices.sort()));\n } else {\n this.dict.delete(PDFName.of('I'));\n }\n }\n\n getValues(): (PDFString | PDFHexString)[] {\n const v = this.V();\n\n if (v instanceof PDFString || v instanceof PDFHexString) return [v];\n\n if (v instanceof PDFArray) {\n const values: (PDFString | PDFHexString)[] = [];\n\n for (let idx = 0, len = v.size(); idx < len; idx++) {\n const value = v.lookup(idx);\n if (value instanceof PDFString || value instanceof PDFHexString) {\n values.push(value);\n }\n }\n\n return values;\n }\n\n return [];\n }\n\n Opt(): PDFArray | PDFString | PDFHexString | undefined {\n return this.dict.lookupMaybe(\n PDFName.of('Opt'),\n PDFString,\n PDFHexString,\n PDFArray,\n );\n }\n\n setOptions(\n options: {\n value: PDFString | PDFHexString;\n display?: PDFString | PDFHexString;\n }[],\n ) {\n const newOpt = new Array(options.length);\n for (let idx = 0, len = options.length; idx < len; idx++) {\n const { value, display } = options[idx];\n newOpt[idx] = this.dict.context.obj([value, display || value]);\n }\n this.dict.set(PDFName.of('Opt'), this.dict.context.obj(newOpt));\n }\n\n getOptions(): {\n value: PDFString | PDFHexString;\n display: PDFString | PDFHexString;\n }[] {\n const Opt = this.Opt();\n\n // Not supposed to happen - Opt _should_ always be `PDFArray | undefined`\n if (Opt instanceof PDFString || Opt instanceof PDFHexString) {\n return [{ value: Opt, display: Opt }];\n }\n\n if (Opt instanceof PDFArray) {\n const res: {\n value: PDFString | PDFHexString;\n display: PDFString | PDFHexString;\n }[] = [];\n\n for (let idx = 0, len = Opt.size(); idx < len; idx++) {\n const item = Opt.lookup(idx);\n\n // If `item` is a string, use that as both the export and text value\n if (item instanceof PDFString || item instanceof PDFHexString) {\n res.push({ value: item, display: item });\n }\n\n // If `item` is an array of one, treat it the same as just a string,\n // if it's an array of two then `item[0]` is the export value and\n // `item[1]` is the text value\n if (item instanceof PDFArray) {\n if (item.size() > 0) {\n const first = item.lookup(0, PDFString, PDFHexString);\n const second = item.lookupMaybe(1, PDFString, PDFHexString);\n res.push({ value: first, display: second || first });\n }\n }\n }\n\n return res;\n }\n\n return [];\n }\n}\n\nexport default PDFAcroChoice;\n","import PDFDict from 'src/core/objects/PDFDict';\nimport PDFAcroChoice from 'src/core/acroform/PDFAcroChoice';\nimport PDFContext from 'src/core/PDFContext';\nimport PDFRef from 'src/core/objects/PDFRef';\nimport { AcroChoiceFlags } from 'src/core/acroform/flags';\n\nclass PDFAcroComboBox extends PDFAcroChoice {\n static fromDict = (dict: PDFDict, ref: PDFRef) =>\n new PDFAcroComboBox(dict, ref);\n\n static create = (context: PDFContext) => {\n const dict = context.obj({\n FT: 'Ch',\n Ff: AcroChoiceFlags.Combo,\n Kids: [],\n });\n const ref = context.register(dict);\n return new PDFAcroComboBox(dict, ref);\n };\n}\n\nexport default PDFAcroComboBox;\n","import PDFDict from 'src/core/objects/PDFDict';\nimport PDFRef from 'src/core/objects/PDFRef';\nimport PDFName from 'src/core/objects/PDFName';\nimport PDFContext from 'src/core/PDFContext';\nimport PDFAcroField from 'src/core/acroform/PDFAcroField';\n\nclass PDFAcroNonTerminal extends PDFAcroField {\n static fromDict = (dict: PDFDict, ref: PDFRef) =>\n new PDFAcroNonTerminal(dict, ref);\n\n static create = (context: PDFContext) => {\n const dict = context.obj({});\n const ref = context.register(dict);\n return new PDFAcroNonTerminal(dict, ref);\n };\n\n addField(field: PDFRef) {\n const { Kids } = this.normalizedEntries();\n Kids?.push(field);\n }\n\n normalizedEntries() {\n let Kids = this.Kids();\n\n if (!Kids) {\n Kids = this.dict.context.obj([]);\n this.dict.set(PDFName.of('Kids'), Kids);\n }\n\n return { Kids };\n }\n}\n\nexport default PDFAcroNonTerminal;\n","import PDFDict from 'src/core/objects/PDFDict';\nimport PDFRef from 'src/core/objects/PDFRef';\nimport PDFAcroTerminal from 'src/core/acroform/PDFAcroTerminal';\n\nclass PDFAcroSignature extends PDFAcroTerminal {\n static fromDict = (dict: PDFDict, ref: PDFRef) =>\n new PDFAcroSignature(dict, ref);\n}\n\nexport default PDFAcroSignature;\n","import PDFContext from 'src/core/PDFContext';\nimport PDFDict from 'src/core/objects/PDFDict';\nimport PDFNumber from 'src/core/objects/PDFNumber';\nimport PDFString from 'src/core/objects/PDFString';\nimport PDFHexString from 'src/core/objects/PDFHexString';\nimport PDFName from 'src/core/objects/PDFName';\nimport PDFRef from 'src/core/objects/PDFRef';\nimport PDFAcroTerminal from 'src/core/acroform/PDFAcroTerminal';\n\nclass PDFAcroText extends PDFAcroTerminal {\n static fromDict = (dict: PDFDict, ref: PDFRef) => new PDFAcroText(dict, ref);\n\n static create = (context: PDFContext) => {\n const dict = context.obj({\n FT: 'Tx',\n Kids: [],\n });\n const ref = context.register(dict);\n return new PDFAcroText(dict, ref);\n };\n\n MaxLen(): PDFNumber | undefined {\n const maxLen = this.dict.lookup(PDFName.of('MaxLen'));\n if (maxLen instanceof PDFNumber) return maxLen;\n return undefined;\n }\n\n Q(): PDFNumber | undefined {\n const q = this.dict.lookup(PDFName.of('Q'));\n if (q instanceof PDFNumber) return q;\n return undefined;\n }\n\n setMaxLength(maxLength: number) {\n this.dict.set(PDFName.of('MaxLen'), PDFNumber.of(maxLength));\n }\n\n removeMaxLength() {\n this.dict.delete(PDFName.of('MaxLen'));\n }\n\n getMaxLength(): number | undefined {\n return this.MaxLen()?.asNumber();\n }\n\n setQuadding(quadding: 0 | 1 | 2) {\n this.dict.set(PDFName.of('Q'), PDFNumber.of(quadding));\n }\n\n getQuadding(): number | undefined {\n return this.Q()?.asNumber();\n }\n\n setValue(value: PDFHexString | PDFString) {\n this.dict.set(PDFName.of('V'), value);\n\n // const widgets = this.getWidgets();\n // for (let idx = 0, len = widgets.length; idx < len; idx++) {\n // const widget = widgets[idx];\n // const state = widget.getOnValue() === value ? value : PDFName.of('Off');\n // widget.setAppearanceState(state);\n // }\n }\n\n removeValue() {\n this.dict.delete(PDFName.of('V'));\n }\n\n getValue(): PDFString | PDFHexString | undefined {\n const v = this.V();\n if (v instanceof PDFString || v instanceof PDFHexString) return v;\n return undefined;\n }\n}\n\nexport default PDFAcroText;\n","import PDFDict from 'src/core/objects/PDFDict';\nimport PDFAcroButton from 'src/core/acroform/PDFAcroButton';\nimport PDFContext from 'src/core/PDFContext';\nimport PDFRef from 'src/core/objects/PDFRef';\nimport { AcroButtonFlags } from 'src/core/acroform/flags';\n\nclass PDFAcroPushButton extends PDFAcroButton {\n static fromDict = (dict: PDFDict, ref: PDFRef) =>\n new PDFAcroPushButton(dict, ref);\n\n static create = (context: PDFContext) => {\n const dict = context.obj({\n FT: 'Btn',\n Ff: AcroButtonFlags.PushButton,\n Kids: [],\n });\n const ref = context.register(dict);\n return new PDFAcroPushButton(dict, ref);\n };\n}\n\nexport default PDFAcroPushButton;\n","import PDFRef from 'src/core/objects/PDFRef';\nimport PDFDict from 'src/core/objects/PDFDict';\nimport PDFName from 'src/core/objects/PDFName';\nimport PDFAcroButton from 'src/core/acroform/PDFAcroButton';\nimport PDFContext from 'src/core/PDFContext';\nimport { AcroButtonFlags } from 'src/core/acroform/flags';\nimport { InvalidAcroFieldValueError } from 'src/core/errors';\n\nclass PDFAcroRadioButton extends PDFAcroButton {\n static fromDict = (dict: PDFDict, ref: PDFRef) =>\n new PDFAcroRadioButton(dict, ref);\n\n static create = (context: PDFContext) => {\n const dict = context.obj({\n FT: 'Btn',\n Ff: AcroButtonFlags.Radio,\n Kids: [],\n });\n const ref = context.register(dict);\n return new PDFAcroRadioButton(dict, ref);\n };\n\n setValue(value: PDFName) {\n const onValues = this.getOnValues();\n if (!onValues.includes(value) && value !== PDFName.of('Off')) {\n throw new InvalidAcroFieldValueError();\n }\n\n this.dict.set(PDFName.of('V'), value);\n\n const widgets = this.getWidgets();\n for (let idx = 0, len = widgets.length; idx < len; idx++) {\n const widget = widgets[idx];\n const state = widget.getOnValue() === value ? value : PDFName.of('Off');\n widget.setAppearanceState(state);\n }\n }\n\n getValue(): PDFName {\n const v = this.V();\n if (v instanceof PDFName) return v;\n return PDFName.of('Off');\n }\n\n getOnValues(): PDFName[] {\n const widgets = this.getWidgets();\n\n const onValues: PDFName[] = [];\n for (let idx = 0, len = widgets.length; idx < len; idx++) {\n const onValue = widgets[idx].getOnValue();\n if (onValue) onValues.push(onValue);\n }\n\n return onValues;\n }\n}\n\nexport default PDFAcroRadioButton;\n","import PDFDict from 'src/core/objects/PDFDict';\nimport PDFAcroChoice from 'src/core/acroform/PDFAcroChoice';\nimport PDFContext from 'src/core/PDFContext';\nimport PDFRef from 'src/core/objects/PDFRef';\n\nclass PDFAcroListBox extends PDFAcroChoice {\n static fromDict = (dict: PDFDict, ref: PDFRef) =>\n new PDFAcroListBox(dict, ref);\n\n static create = (context: PDFContext) => {\n const dict = context.obj({\n FT: 'Ch',\n Kids: [],\n });\n const ref = context.register(dict);\n return new PDFAcroListBox(dict, ref);\n };\n}\n\nexport default PDFAcroListBox;\n","import PDFObject from 'src/core/objects/PDFObject';\nimport PDFNumber from 'src/core/objects/PDFNumber';\nimport PDFDict from 'src/core/objects/PDFDict';\nimport PDFName from 'src/core/objects/PDFName';\nimport PDFArray from 'src/core/objects/PDFArray';\nimport PDFRef from 'src/core/objects/PDFRef';\n\nimport PDFAcroField from 'src/core/acroform/PDFAcroField';\nimport PDFAcroTerminal from 'src/core/acroform/PDFAcroTerminal';\nimport PDFAcroNonTerminal from 'src/core/acroform/PDFAcroNonTerminal';\nimport PDFAcroButton from 'src/core/acroform/PDFAcroButton';\nimport PDFAcroSignature from 'src/core/acroform/PDFAcroSignature';\nimport PDFAcroChoice from 'src/core/acroform/PDFAcroChoice';\nimport PDFAcroText from 'src/core/acroform/PDFAcroText';\nimport PDFAcroPushButton from 'src/core/acroform/PDFAcroPushButton';\nimport PDFAcroRadioButton from 'src/core/acroform/PDFAcroRadioButton';\nimport PDFAcroCheckBox from 'src/core/acroform/PDFAcroCheckBox';\nimport PDFAcroComboBox from 'src/core/acroform/PDFAcroComboBox';\nimport PDFAcroListBox from 'src/core/acroform/PDFAcroListBox';\nimport { AcroButtonFlags, AcroChoiceFlags } from 'src/core/acroform/flags';\n\nexport const createPDFAcroFields = (\n kidDicts?: PDFArray,\n): [PDFAcroField, PDFRef][] => {\n if (!kidDicts) return [];\n\n const kids: [PDFAcroField, PDFRef][] = [];\n for (let idx = 0, len = kidDicts.size(); idx < len; idx++) {\n const ref = kidDicts.get(idx);\n const dict = kidDicts.lookup(idx);\n // if (dict instanceof PDFDict) kids.push(PDFAcroField.fromDict(dict));\n if (ref instanceof PDFRef && dict instanceof PDFDict) {\n kids.push([createPDFAcroField(dict, ref), ref]);\n }\n }\n\n return kids;\n};\n\nexport const createPDFAcroField = (\n dict: PDFDict,\n ref: PDFRef,\n): PDFAcroField => {\n const isNonTerminal = isNonTerminalAcroField(dict);\n if (isNonTerminal) return PDFAcroNonTerminal.fromDict(dict, ref);\n return createPDFAcroTerminal(dict, ref);\n};\n\n// TODO: Maybe just check if the dict is *not* a widget? That might be better.\n\n// According to the PDF spec:\n//\n// > A field's children in the hierarchy may also include widget annotations\n// > that define its appearance on the page. A field that has children that\n// > are fields is called a non-terminal field. A field that does not have\n// > children that are fields is called a terminal field.\n//\n// The spec is not entirely clear about how to determine whether a given\n// dictionary represents an acrofield or a widget annotation. So we will assume\n// that a dictionary is an acrofield if it is a member of the `/Kids` array\n// and it contains a `/T` entry (widgets do not have `/T` entries). This isn't\n// a bullet proof solution, because the `/T` entry is technically defined as\n// optional for acrofields by the PDF spec. But in practice all acrofields seem\n// to have a `/T` entry defined.\nconst isNonTerminalAcroField = (dict: PDFDict): boolean => {\n const kids = dict.lookup(PDFName.of('Kids'));\n\n if (kids instanceof PDFArray) {\n for (let idx = 0, len = kids.size(); idx < len; idx++) {\n const kid = kids.lookup(idx);\n const kidIsField = kid instanceof PDFDict && kid.has(PDFName.of('T'));\n if (kidIsField) return true;\n }\n }\n\n return false;\n};\n\nconst createPDFAcroTerminal = (dict: PDFDict, ref: PDFRef): PDFAcroTerminal => {\n const ftNameOrRef = getInheritableAttribute(dict, PDFName.of('FT'));\n const type = dict.context.lookup(ftNameOrRef, PDFName);\n\n if (type === PDFName.of('Btn')) return createPDFAcroButton(dict, ref);\n if (type === PDFName.of('Ch')) return createPDFAcroChoice(dict, ref);\n if (type === PDFName.of('Tx')) return PDFAcroText.fromDict(dict, ref);\n if (type === PDFName.of('Sig')) return PDFAcroSignature.fromDict(dict, ref);\n\n // We should never reach this line. But there are a lot of weird PDFs out\n // there. So, just to be safe, we'll try to handle things gracefully instead\n // of throwing an error.\n return PDFAcroTerminal.fromDict(dict, ref);\n};\n\nconst createPDFAcroButton = (dict: PDFDict, ref: PDFRef): PDFAcroButton => {\n const ffNumberOrRef = getInheritableAttribute(dict, PDFName.of('Ff'));\n const ffNumber = dict.context.lookupMaybe(ffNumberOrRef, PDFNumber);\n const flags = ffNumber?.asNumber() ?? 0;\n\n if (flagIsSet(flags, AcroButtonFlags.PushButton)) {\n return PDFAcroPushButton.fromDict(dict, ref);\n } else if (flagIsSet(flags, AcroButtonFlags.Radio)) {\n return PDFAcroRadioButton.fromDict(dict, ref);\n } else {\n return PDFAcroCheckBox.fromDict(dict, ref);\n }\n};\n\nconst createPDFAcroChoice = (dict: PDFDict, ref: PDFRef): PDFAcroChoice => {\n const ffNumberOrRef = getInheritableAttribute(dict, PDFName.of('Ff'));\n const ffNumber = dict.context.lookupMaybe(ffNumberOrRef, PDFNumber);\n const flags = ffNumber?.asNumber() ?? 0;\n\n if (flagIsSet(flags, AcroChoiceFlags.Combo)) {\n return PDFAcroComboBox.fromDict(dict, ref);\n } else {\n return PDFAcroListBox.fromDict(dict, ref);\n }\n};\n\nconst flagIsSet = (flags: number, flag: number): boolean =>\n (flags & flag) !== 0;\n\nconst getInheritableAttribute = (startNode: PDFDict, name: PDFName) => {\n let attribute: PDFObject | undefined;\n ascend(startNode, (node) => {\n if (!attribute) attribute = node.get(name);\n });\n return attribute;\n};\n\nconst ascend = (startNode: PDFDict, visitor: (node: PDFDict) => any) => {\n visitor(startNode);\n const Parent = startNode.lookupMaybe(PDFName.of('Parent'), PDFDict);\n if (Parent) ascend(Parent, visitor);\n};\n","import PDFContext from 'src/core/PDFContext';\nimport PDFDict from 'src/core/objects/PDFDict';\nimport PDFArray from 'src/core/objects/PDFArray';\nimport PDFName from 'src/core/objects/PDFName';\nimport PDFRef from 'src/core/objects/PDFRef';\nimport PDFAcroField from 'src/core/acroform/PDFAcroField';\nimport PDFAcroNonTerminal from 'src/core/acroform/PDFAcroNonTerminal';\nimport {\n createPDFAcroField,\n createPDFAcroFields,\n} from 'src/core/acroform/utils';\n\nclass PDFAcroForm {\n readonly dict: PDFDict;\n\n static fromDict = (dict: PDFDict) => new PDFAcroForm(dict);\n\n static create = (context: PDFContext) => {\n const dict = context.obj({ Fields: [] });\n return new PDFAcroForm(dict);\n };\n\n private constructor(dict: PDFDict) {\n this.dict = dict;\n }\n\n Fields(): PDFArray | undefined {\n const fields = this.dict.lookup(PDFName.of('Fields'));\n if (fields instanceof PDFArray) return fields;\n return undefined;\n }\n\n getFields(): [PDFAcroField, PDFRef][] {\n const { Fields } = this.normalizedEntries();\n\n const fields = new Array(Fields.size());\n for (let idx = 0, len = Fields.size(); idx < len; idx++) {\n const ref = Fields.get(idx) as PDFRef;\n const dict = Fields.lookup(idx, PDFDict);\n fields[idx] = [createPDFAcroField(dict, ref), ref];\n }\n\n return fields;\n }\n\n getAllFields(): [PDFAcroField, PDFRef][] {\n const allFields: [PDFAcroField, PDFRef][] = [];\n\n const pushFields = (fields?: [PDFAcroField, PDFRef][]) => {\n if (!fields) return;\n for (let idx = 0, len = fields.length; idx < len; idx++) {\n const field = fields[idx];\n allFields.push(field);\n const [fieldModel] = field;\n if (fieldModel instanceof PDFAcroNonTerminal) {\n pushFields(createPDFAcroFields(fieldModel.Kids()));\n }\n }\n };\n\n pushFields(this.getFields());\n\n return allFields;\n }\n\n addField(field: PDFRef) {\n const { Fields } = this.normalizedEntries();\n Fields?.push(field);\n }\n\n removeField(field: PDFAcroField): void {\n const parent = field.getParent();\n const fields =\n parent === undefined ? this.normalizedEntries().Fields : parent.Kids();\n\n const index = fields?.indexOf(field.ref);\n if (fields === undefined || index === undefined) {\n throw new Error(\n `Tried to remove inexistent field ${field.getFullyQualifiedName()}`,\n );\n }\n\n fields.remove(index);\n\n if (parent !== undefined && fields.size() === 0) {\n this.removeField(parent);\n }\n }\n\n normalizedEntries() {\n let Fields = this.Fields();\n\n if (!Fields) {\n Fields = this.dict.context.obj([]);\n this.dict.set(PDFName.of('Fields'), Fields);\n }\n\n return { Fields };\n }\n}\n\nexport default PDFAcroForm;\n","import PDFDict from 'src/core/objects/PDFDict';\nimport PDFName from 'src/core/objects/PDFName';\nimport PDFNumber from 'src/core/objects/PDFNumber';\nimport PDFArray from 'src/core/objects/PDFArray';\nimport PDFHexString from 'src/core/objects/PDFHexString';\nimport PDFString from 'src/core/objects/PDFString';\n\nclass AppearanceCharacteristics {\n readonly dict: PDFDict;\n\n static fromDict = (dict: PDFDict): AppearanceCharacteristics =>\n new AppearanceCharacteristics(dict);\n\n protected constructor(dict: PDFDict) {\n this.dict = dict;\n }\n\n R(): PDFNumber | undefined {\n const R = this.dict.lookup(PDFName.of('R'));\n if (R instanceof PDFNumber) return R;\n return undefined;\n }\n\n BC(): PDFArray | undefined {\n const BC = this.dict.lookup(PDFName.of('BC'));\n if (BC instanceof PDFArray) return BC;\n return undefined;\n }\n\n BG(): PDFArray | undefined {\n const BG = this.dict.lookup(PDFName.of('BG'));\n if (BG instanceof PDFArray) return BG;\n return undefined;\n }\n\n CA(): PDFHexString | PDFString | undefined {\n const CA = this.dict.lookup(PDFName.of('CA'));\n if (CA instanceof PDFHexString || CA instanceof PDFString) return CA;\n return undefined;\n }\n\n RC(): PDFHexString | PDFString | undefined {\n const RC = this.dict.lookup(PDFName.of('RC'));\n if (RC instanceof PDFHexString || RC instanceof PDFString) return RC;\n return undefined;\n }\n\n AC(): PDFHexString | PDFString | undefined {\n const AC = this.dict.lookup(PDFName.of('AC'));\n if (AC instanceof PDFHexString || AC instanceof PDFString) return AC;\n return undefined;\n }\n\n getRotation(): number | undefined {\n return this.R()?.asNumber();\n }\n\n getBorderColor(): number[] | undefined {\n const BC = this.BC();\n\n if (!BC) return undefined;\n\n const components: number[] = [];\n for (let idx = 0, len = BC?.size(); idx < len; idx++) {\n const component = BC.get(idx);\n if (component instanceof PDFNumber) components.push(component.asNumber());\n }\n\n return components;\n }\n\n getBackgroundColor(): number[] | undefined {\n const BG = this.BG();\n\n if (!BG) return undefined;\n\n const components: number[] = [];\n for (let idx = 0, len = BG?.size(); idx < len; idx++) {\n const component = BG.get(idx);\n if (component instanceof PDFNumber) components.push(component.asNumber());\n }\n\n return components;\n }\n\n getCaptions(): { normal?: string; rollover?: string; down?: string } {\n const CA = this.CA();\n const RC = this.RC();\n const AC = this.AC();\n\n return {\n normal: CA?.decodeText(),\n rollover: RC?.decodeText(),\n down: AC?.decodeText(),\n };\n }\n\n setRotation(rotation: number) {\n const R = this.dict.context.obj(rotation);\n this.dict.set(PDFName.of('R'), R);\n }\n\n setBorderColor(color: number[]) {\n const BC = this.dict.context.obj(color);\n this.dict.set(PDFName.of('BC'), BC);\n }\n\n setBackgroundColor(color: number[]) {\n const BG = this.dict.context.obj(color);\n this.dict.set(PDFName.of('BG'), BG);\n }\n\n setCaptions(captions: { normal: string; rollover?: string; down?: string }) {\n const CA = PDFHexString.fromText(captions.normal);\n this.dict.set(PDFName.of('CA'), CA);\n\n if (captions.rollover) {\n const RC = PDFHexString.fromText(captions.rollover);\n this.dict.set(PDFName.of('RC'), RC);\n } else {\n this.dict.delete(PDFName.of('RC'));\n }\n\n if (captions.down) {\n const AC = PDFHexString.fromText(captions.down);\n this.dict.set(PDFName.of('AC'), AC);\n } else {\n this.dict.delete(PDFName.of('AC'));\n }\n }\n}\n\nexport default AppearanceCharacteristics;\n","import PDFDict from 'src/core/objects/PDFDict';\nimport PDFName from 'src/core/objects/PDFName';\nimport PDFStream from 'src/core/objects/PDFStream';\nimport PDFArray from 'src/core/objects/PDFArray';\nimport PDFRef from 'src/core/objects/PDFRef';\nimport PDFNumber from 'src/core/objects/PDFNumber';\n\nclass PDFAnnotation {\n readonly dict: PDFDict;\n\n static fromDict = (dict: PDFDict): PDFAnnotation => new PDFAnnotation(dict);\n\n protected constructor(dict: PDFDict) {\n this.dict = dict;\n }\n\n // This is technically required by the PDF spec\n Rect(): PDFArray | undefined {\n return this.dict.lookup(PDFName.of('Rect'), PDFArray);\n }\n\n AP(): PDFDict | undefined {\n return this.dict.lookupMaybe(PDFName.of('AP'), PDFDict);\n }\n\n F(): PDFNumber | undefined {\n const numberOrRef = this.dict.lookup(PDFName.of('F'));\n return this.dict.context.lookupMaybe(numberOrRef, PDFNumber);\n }\n\n getRectangle(): { x: number; y: number; width: number; height: number } {\n const Rect = this.Rect();\n return Rect?.asRectangle() ?? { x: 0, y: 0, width: 0, height: 0 };\n }\n\n setRectangle(rect: { x: number; y: number; width: number; height: number }) {\n const { x, y, width, height } = rect;\n const Rect = this.dict.context.obj([x, y, x + width, y + height]);\n this.dict.set(PDFName.of('Rect'), Rect);\n }\n\n getAppearanceState(): PDFName | undefined {\n const AS = this.dict.lookup(PDFName.of('AS'));\n if (AS instanceof PDFName) return AS;\n return undefined;\n }\n\n setAppearanceState(state: PDFName) {\n this.dict.set(PDFName.of('AS'), state);\n }\n\n setAppearances(appearances: PDFDict) {\n this.dict.set(PDFName.of('AP'), appearances);\n }\n\n ensureAP(): PDFDict {\n let AP = this.AP();\n if (!AP) {\n AP = this.dict.context.obj({});\n this.dict.set(PDFName.of('AP'), AP);\n }\n return AP;\n }\n\n getNormalAppearance(): PDFRef | PDFDict {\n const AP = this.ensureAP();\n const N = AP.get(PDFName.of('N'));\n if (N instanceof PDFRef || N instanceof PDFDict) return N;\n\n throw new Error(`Unexpected N type: ${N?.constructor.name}`);\n }\n\n /** @param appearance A PDFDict or PDFStream (direct or ref) */\n setNormalAppearance(appearance: PDFRef | PDFDict) {\n const AP = this.ensureAP();\n AP.set(PDFName.of('N'), appearance);\n }\n\n /** @param appearance A PDFDict or PDFStream (direct or ref) */\n setRolloverAppearance(appearance: PDFRef | PDFDict) {\n const AP = this.ensureAP();\n AP.set(PDFName.of('R'), appearance);\n }\n\n /** @param appearance A PDFDict or PDFStream (direct or ref) */\n setDownAppearance(appearance: PDFRef | PDFDict) {\n const AP = this.ensureAP();\n AP.set(PDFName.of('D'), appearance);\n }\n\n removeRolloverAppearance() {\n const AP = this.AP();\n AP?.delete(PDFName.of('R'));\n }\n\n removeDownAppearance() {\n const AP = this.AP();\n AP?.delete(PDFName.of('D'));\n }\n\n getAppearances():\n | {\n normal: PDFStream | PDFDict;\n rollover?: PDFStream | PDFDict;\n down?: PDFStream | PDFDict;\n }\n | undefined {\n const AP = this.AP();\n\n if (!AP) return undefined;\n\n const N = AP.lookup(PDFName.of('N'), PDFDict, PDFStream);\n const R = AP.lookupMaybe(PDFName.of('R'), PDFDict, PDFStream);\n const D = AP.lookupMaybe(PDFName.of('D'), PDFDict, PDFStream);\n\n return { normal: N, rollover: R, down: D };\n }\n\n getFlags(): number {\n return this.F()?.asNumber() ?? 0;\n }\n\n setFlags(flags: number) {\n this.dict.set(PDFName.of('F'), PDFNumber.of(flags));\n }\n\n hasFlag(flag: number): boolean {\n const flags = this.getFlags();\n return (flags & flag) !== 0;\n }\n\n setFlag(flag: number) {\n const flags = this.getFlags();\n this.setFlags(flags | flag);\n }\n\n clearFlag(flag: number) {\n const flags = this.getFlags();\n this.setFlags(flags & ~flag);\n }\n\n setFlagTo(flag: number, enable: boolean) {\n if (enable) this.setFlag(flag);\n else this.clearFlag(flag);\n }\n}\n\nexport default PDFAnnotation;\n","import PDFDict from 'src/core/objects/PDFDict';\nimport PDFName from 'src/core/objects/PDFName';\nimport PDFNumber from 'src/core/objects/PDFNumber';\n\n// TODO: Also handle the `/S` and `/D` entries\nclass BorderStyle {\n readonly dict: PDFDict;\n\n static fromDict = (dict: PDFDict): BorderStyle => new BorderStyle(dict);\n\n protected constructor(dict: PDFDict) {\n this.dict = dict;\n }\n\n W(): PDFNumber | undefined {\n const W = this.dict.lookup(PDFName.of('W'));\n if (W instanceof PDFNumber) return W;\n return undefined;\n }\n\n getWidth(): number | undefined {\n return this.W()?.asNumber() ?? 1;\n }\n\n setWidth(width: number) {\n const W = this.dict.context.obj(width);\n this.dict.set(PDFName.of('W'), W);\n }\n}\n\nexport default BorderStyle;\n","import PDFDict from 'src/core/objects/PDFDict';\nimport PDFName from 'src/core/objects/PDFName';\nimport PDFRef from 'src/core/objects/PDFRef';\nimport PDFString from 'src/core/objects/PDFString';\nimport PDFHexString from 'src/core/objects/PDFHexString';\nimport PDFContext from 'src/core/PDFContext';\nimport BorderStyle from 'src/core/annotation/BorderStyle';\nimport PDFAnnotation from 'src/core/annotation/PDFAnnotation';\nimport AppearanceCharacteristics from 'src/core/annotation/AppearanceCharacteristics';\n\nclass PDFWidgetAnnotation extends PDFAnnotation {\n static fromDict = (dict: PDFDict): PDFWidgetAnnotation =>\n new PDFWidgetAnnotation(dict);\n\n static create = (context: PDFContext, parent: PDFRef) => {\n const dict = context.obj({\n Type: 'Annot',\n Subtype: 'Widget',\n Rect: [0, 0, 0, 0],\n Parent: parent,\n });\n return new PDFWidgetAnnotation(dict);\n };\n\n MK(): PDFDict | undefined {\n const MK = this.dict.lookup(PDFName.of('MK'));\n if (MK instanceof PDFDict) return MK;\n return undefined;\n }\n\n BS(): PDFDict | undefined {\n const BS = this.dict.lookup(PDFName.of('BS'));\n if (BS instanceof PDFDict) return BS;\n return undefined;\n }\n\n DA(): PDFString | PDFHexString | undefined {\n const da = this.dict.lookup(PDFName.of('DA'));\n if (da instanceof PDFString || da instanceof PDFHexString) return da;\n return undefined;\n }\n\n P(): PDFRef | undefined {\n const P = this.dict.get(PDFName.of('P'));\n if (P instanceof PDFRef) return P;\n return undefined;\n }\n\n setP(page: PDFRef) {\n this.dict.set(PDFName.of('P'), page);\n }\n\n setDefaultAppearance(appearance: string) {\n this.dict.set(PDFName.of('DA'), PDFString.of(appearance));\n }\n\n getDefaultAppearance(): string | undefined {\n const DA = this.DA();\n\n if (DA instanceof PDFHexString) {\n return DA.decodeText();\n }\n\n return DA?.asString();\n }\n\n getAppearanceCharacteristics(): AppearanceCharacteristics | undefined {\n const MK = this.MK();\n if (MK) return AppearanceCharacteristics.fromDict(MK);\n return undefined;\n }\n\n getOrCreateAppearanceCharacteristics(): AppearanceCharacteristics {\n const MK = this.MK();\n if (MK) return AppearanceCharacteristics.fromDict(MK);\n\n const ac = AppearanceCharacteristics.fromDict(this.dict.context.obj({}));\n this.dict.set(PDFName.of('MK'), ac.dict);\n return ac;\n }\n\n getBorderStyle(): BorderStyle | undefined {\n const BS = this.BS();\n if (BS) return BorderStyle.fromDict(BS);\n return undefined;\n }\n\n getOrCreateBorderStyle(): BorderStyle {\n const BS = this.BS();\n if (BS) return BorderStyle.fromDict(BS);\n\n const bs = BorderStyle.fromDict(this.dict.context.obj({}));\n this.dict.set(PDFName.of('BS'), bs.dict);\n return bs;\n }\n\n getOnValue(): PDFName | undefined {\n const normal = this.getAppearances()?.normal;\n\n if (normal instanceof PDFDict) {\n const keys = normal.keys();\n for (let idx = 0, len = keys.length; idx < len; idx++) {\n const key = keys[idx];\n if (key !== PDFName.of('Off')) return key;\n }\n }\n\n return undefined;\n }\n}\n\nexport default PDFWidgetAnnotation;\n","const flag = (bitIndex: number) => 1 << bitIndex;\n\n/** From PDF spec table 165 */\nexport enum AnnotationFlags {\n /**\n * If set, do not display the annotation if it does not belong to one of the\n * standard annotation types and no annotation handler is available. If clear,\n * display such an unknown annotation using an appearance stream specified by\n * its appearance dictionary, if any.\n */\n Invisible = flag(1 - 1),\n\n /**\n * If set, do not display or print the annotation or allow it to interact with\n * the user, regardless of its annotation type or whether an annotation\n * handler is available.\n *\n * In cases where screen space is limited, the ability to hide and show\n * annotations selectively can be used in combination with appearance streams\n * to display auxiliary pop-up information similar in function to online help\n * systems.\n */\n Hidden = flag(2 - 1),\n\n /**\n * If set, print the annotation when the page is printed. If clear, never\n * print the annotation, regardless of whether it is displayed on the screen.\n *\n * This can be useful for annotations representing interactive pushbuttons,\n * which would serve no meaningful purpose on the printed page.\n */\n Print = flag(3 - 1),\n\n /**\n * If set, do not scale the annotation’s appearance to match the magnification\n * of the page. The location of the annotation on the page (defined by the\n * upper-left corner of its annotation rectangle) shall remain fixed,\n * regardless of the page magnification.\n */\n NoZoom = flag(4 - 1),\n\n /**\n * If set, do not rotate the annotation’s appearance to match the rotation of\n * the page. The upper-left corner of the annotation rectangle shall remain in\n * a fixed location on the page, regardless of the page rotation.\n */\n NoRotate = flag(5 - 1),\n\n /**\n * If set, do not display the annotation on the screen or allow it to interact\n * with the user. The annotation may be printed (depending on the setting of\n * the Print flag) but should be considered hidden for purposes of on-screen\n * display and user interaction.\n */\n NoView = flag(6 - 1),\n\n /**\n * If set, do not allow the annotation to interact with the user. The\n * annotation may be displayed or printed (depending on the settings of the\n * NoView and Print flags) but should not respond to mouse clicks or change\n * its appearance in response to mouse motions.\n *\n * This flag shall be ignored for widget annotations; its function is\n * subsumed by the ReadOnly flag of the associated form field.\n */\n ReadOnly = flag(7 - 1),\n\n /**\n * If set, do not allow the annotation to be deleted or its properties\n * (including position and size) to be modified by the user. However, this\n * flag does not restrict changes to the annotation’s contents, such as the\n * value of a form field.\n */\n Locked = flag(8 - 1),\n\n /**\n * If set, invert the interpretation of the NoView flag for certain events.\n *\n * A typical use is to have an annotation that appears only when a mouse\n * cursor is held over it.\n */\n ToggleNoView = flag(9 - 1),\n\n /**\n * If set, do not allow the contents of the annotation to be modified by the\n * user. This flag does not restrict deletion of the annotation or changes to\n * other annotation properties, such as position and size.\n */\n LockedContents = flag(10 - 1),\n}\n","import PDFRef from 'src/core/objects/PDFRef';\nimport CharCodes from 'src/core/syntax/CharCodes';\nimport { copyStringIntoBuffer, padStart } from 'src/utils';\n\nexport interface Entry {\n ref: PDFRef;\n offset: number;\n deleted: boolean;\n}\n\n/**\n * Entries should be added using the [[addEntry]] and [[addDeletedEntry]]\n * methods **in order of ascending object number**.\n */\nclass PDFCrossRefSection {\n static create = () =>\n new PDFCrossRefSection({\n ref: PDFRef.of(0, 65535),\n offset: 0,\n deleted: true,\n });\n\n static createEmpty = () => new PDFCrossRefSection();\n\n private subsections: Entry[][];\n private chunkIdx: number;\n private chunkLength: number;\n\n private constructor(firstEntry: Entry | void) {\n this.subsections = firstEntry ? [[firstEntry]] : [];\n this.chunkIdx = 0;\n this.chunkLength = firstEntry ? 1 : 0;\n }\n\n addEntry(ref: PDFRef, offset: number): void {\n this.append({ ref, offset, deleted: false });\n }\n\n addDeletedEntry(ref: PDFRef, nextFreeObjectNumber: number): void {\n this.append({ ref, offset: nextFreeObjectNumber, deleted: true });\n }\n\n toString(): string {\n let section = `xref\\n`;\n\n for (\n let rangeIdx = 0, rangeLen = this.subsections.length;\n rangeIdx < rangeLen;\n rangeIdx++\n ) {\n const range = this.subsections[rangeIdx];\n section += `${range[0].ref.objectNumber} ${range.length}\\n`;\n for (\n let entryIdx = 0, entryLen = range.length;\n entryIdx < entryLen;\n entryIdx++\n ) {\n const entry = range[entryIdx];\n section += padStart(String(entry.offset), 10, '0');\n section += ' ';\n section += padStart(String(entry.ref.generationNumber), 5, '0');\n section += ' ';\n section += entry.deleted ? 'f' : 'n';\n section += ' \\n';\n }\n }\n\n return section;\n }\n\n sizeInBytes(): number {\n let size = 5;\n for (let idx = 0, len = this.subsections.length; idx < len; idx++) {\n const subsection = this.subsections[idx];\n const subsectionLength = subsection.length;\n const [firstEntry] = subsection;\n size += 2;\n size += String(firstEntry.ref.objectNumber).length;\n size += String(subsectionLength).length;\n size += 20 * subsectionLength;\n }\n return size;\n }\n\n copyBytesInto(buffer: Uint8Array, offset: number): number {\n const initialOffset = offset;\n\n buffer[offset++] = CharCodes.x;\n buffer[offset++] = CharCodes.r;\n buffer[offset++] = CharCodes.e;\n buffer[offset++] = CharCodes.f;\n buffer[offset++] = CharCodes.Newline;\n\n offset += this.copySubsectionsIntoBuffer(this.subsections, buffer, offset);\n\n return offset - initialOffset;\n }\n\n private copySubsectionsIntoBuffer(\n subsections: Entry[][],\n buffer: Uint8Array,\n offset: number,\n ): number {\n const initialOffset = offset;\n const length = subsections.length;\n\n for (let idx = 0; idx < length; idx++) {\n const subsection = this.subsections[idx];\n\n const firstObjectNumber = String(subsection[0].ref.objectNumber);\n offset += copyStringIntoBuffer(firstObjectNumber, buffer, offset);\n buffer[offset++] = CharCodes.Space;\n\n const rangeLength = String(subsection.length);\n offset += copyStringIntoBuffer(rangeLength, buffer, offset);\n buffer[offset++] = CharCodes.Newline;\n\n offset += this.copyEntriesIntoBuffer(subsection, buffer, offset);\n }\n\n return offset - initialOffset;\n }\n\n private copyEntriesIntoBuffer(\n entries: Entry[],\n buffer: Uint8Array,\n offset: number,\n ): number {\n const length = entries.length;\n\n for (let idx = 0; idx < length; idx++) {\n const entry = entries[idx];\n\n const entryOffset = padStart(String(entry.offset), 10, '0');\n offset += copyStringIntoBuffer(entryOffset, buffer, offset);\n buffer[offset++] = CharCodes.Space;\n\n const entryGen = padStart(String(entry.ref.generationNumber), 5, '0');\n offset += copyStringIntoBuffer(entryGen, buffer, offset);\n buffer[offset++] = CharCodes.Space;\n\n buffer[offset++] = entry.deleted ? CharCodes.f : CharCodes.n;\n\n buffer[offset++] = CharCodes.Space;\n buffer[offset++] = CharCodes.Newline;\n }\n\n return 20 * length;\n }\n\n private append(currEntry: Entry): void {\n if (this.chunkLength === 0) {\n this.subsections.push([currEntry]);\n this.chunkIdx = 0;\n this.chunkLength = 1;\n return;\n }\n\n const chunk = this.subsections[this.chunkIdx];\n const prevEntry = chunk[this.chunkLength - 1];\n\n if (currEntry.ref.objectNumber - prevEntry.ref.objectNumber > 1) {\n this.subsections.push([currEntry]);\n this.chunkIdx += 1;\n this.chunkLength = 1;\n } else {\n chunk.push(currEntry);\n this.chunkLength += 1;\n }\n }\n}\n\nexport default PDFCrossRefSection;\n","import CharCodes from 'src/core/syntax/CharCodes';\nimport { charFromCode, copyStringIntoBuffer } from 'src/utils';\n\nclass PDFHeader {\n static forVersion = (major: number, minor: number) =>\n new PDFHeader(major, minor);\n\n private readonly major: string;\n private readonly minor: string;\n\n private constructor(major: number, minor: number) {\n this.major = String(major);\n this.minor = String(minor);\n }\n\n toString(): string {\n const bc = charFromCode(129);\n return `%PDF-${this.major}.${this.minor}\\n%${bc}${bc}${bc}${bc}`;\n }\n\n sizeInBytes(): number {\n return 12 + this.major.length + this.minor.length;\n }\n\n copyBytesInto(buffer: Uint8Array, offset: number): number {\n const initialOffset = offset;\n\n buffer[offset++] = CharCodes.Percent;\n buffer[offset++] = CharCodes.P;\n buffer[offset++] = CharCodes.D;\n buffer[offset++] = CharCodes.F;\n buffer[offset++] = CharCodes.Dash;\n\n offset += copyStringIntoBuffer(this.major, buffer, offset);\n buffer[offset++] = CharCodes.Period;\n offset += copyStringIntoBuffer(this.minor, buffer, offset);\n buffer[offset++] = CharCodes.Newline;\n\n buffer[offset++] = CharCodes.Percent;\n buffer[offset++] = 129;\n buffer[offset++] = 129;\n buffer[offset++] = 129;\n buffer[offset++] = 129;\n\n return offset - initialOffset;\n }\n}\n\nexport default PDFHeader;\n","import CharCodes from 'src/core/syntax/CharCodes';\nimport { copyStringIntoBuffer } from 'src/utils';\n\nclass PDFTrailer {\n static forLastCrossRefSectionOffset = (offset: number) =>\n new PDFTrailer(offset);\n\n private readonly lastXRefOffset: string;\n\n private constructor(lastXRefOffset: number) {\n this.lastXRefOffset = String(lastXRefOffset);\n }\n\n toString(): string {\n return `startxref\\n${this.lastXRefOffset}\\n%%EOF`;\n }\n\n sizeInBytes(): number {\n return 16 + this.lastXRefOffset.length;\n }\n\n copyBytesInto(buffer: Uint8Array, offset: number): number {\n const initialOffset = offset;\n\n buffer[offset++] = CharCodes.s;\n buffer[offset++] = CharCodes.t;\n buffer[offset++] = CharCodes.a;\n buffer[offset++] = CharCodes.r;\n buffer[offset++] = CharCodes.t;\n buffer[offset++] = CharCodes.x;\n buffer[offset++] = CharCodes.r;\n buffer[offset++] = CharCodes.e;\n buffer[offset++] = CharCodes.f;\n buffer[offset++] = CharCodes.Newline;\n\n offset += copyStringIntoBuffer(this.lastXRefOffset, buffer, offset);\n\n buffer[offset++] = CharCodes.Newline;\n buffer[offset++] = CharCodes.Percent;\n buffer[offset++] = CharCodes.Percent;\n buffer[offset++] = CharCodes.E;\n buffer[offset++] = CharCodes.O;\n buffer[offset++] = CharCodes.F;\n\n return offset - initialOffset;\n }\n}\n\nexport default PDFTrailer;\n","import PDFDict from 'src/core/objects/PDFDict';\nimport CharCodes from 'src/core/syntax/CharCodes';\n\nclass PDFTrailerDict {\n static of = (dict: PDFDict) => new PDFTrailerDict(dict);\n\n readonly dict: PDFDict;\n\n private constructor(dict: PDFDict) {\n this.dict = dict;\n }\n\n toString(): string {\n return `trailer\\n${this.dict.toString()}`;\n }\n\n sizeInBytes(): number {\n return 8 + this.dict.sizeInBytes();\n }\n\n copyBytesInto(buffer: Uint8Array, offset: number): number {\n const initialOffset = offset;\n\n buffer[offset++] = CharCodes.t;\n buffer[offset++] = CharCodes.r;\n buffer[offset++] = CharCodes.a;\n buffer[offset++] = CharCodes.i;\n buffer[offset++] = CharCodes.l;\n buffer[offset++] = CharCodes.e;\n buffer[offset++] = CharCodes.r;\n buffer[offset++] = CharCodes.Newline;\n\n offset += this.dict.copyBytesInto(buffer, offset);\n\n return offset - initialOffset;\n }\n}\n\nexport default PDFTrailerDict;\n","import { Glyph } from 'src/types/fontkit';\n\nimport { toHexString, toHexStringOfMinLength } from 'src/utils';\nimport {\n hasSurrogates,\n highSurrogate,\n isWithinBMP,\n lowSurrogate,\n} from 'src/utils/unicode';\n\n/** [fontId, codePoint] */\ntype BfChar = [string, string];\n\n/** `glyphs` should be an array of unique glyphs */\nexport const createCmap = (glyphs: Glyph[], glyphId: (g?: Glyph) => number) => {\n const bfChars: BfChar[] = new Array(glyphs.length);\n for (let idx = 0, len = glyphs.length; idx < len; idx++) {\n const glyph = glyphs[idx];\n const id = cmapHexFormat(cmapHexString(glyphId(glyph)));\n const unicode = cmapHexFormat(...glyph.codePoints.map(cmapCodePointFormat));\n bfChars[idx] = [id, unicode];\n }\n\n return fillCmapTemplate(bfChars);\n};\n\n/* =============================== Templates ================================ */\n\nconst fillCmapTemplate = (bfChars: BfChar[]) => `\\\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>\nendcodespacerange\n${bfChars.length} beginbfchar\n${bfChars.map(([glyphId, codePoint]) => `${glyphId} ${codePoint}`).join('\\n')}\nendbfchar\nendcmap\nCMapName currentdict /CMap defineresource pop\nend\nend\\\n`;\n\n/* =============================== Utilities ================================ */\n\nconst cmapHexFormat = (...values: string[]) => `<${values.join('')}>`;\n\nconst cmapHexString = (value: number) => toHexStringOfMinLength(value, 4);\n\nconst cmapCodePointFormat = (codePoint: number) => {\n if (isWithinBMP(codePoint)) return cmapHexString(codePoint);\n\n if (hasSurrogates(codePoint)) {\n const hs = highSurrogate(codePoint);\n const ls = lowSurrogate(codePoint);\n return `${cmapHexString(hs)}${cmapHexString(ls)}`;\n }\n\n const hex = toHexString(codePoint);\n const msg = `0x${hex} is not a valid UTF-8 or UTF-16 codepoint.`;\n throw new Error(msg);\n};\n","import { Font, Fontkit, Glyph, TypeFeatures } from 'src/types/fontkit';\n\nimport { createCmap } from 'src/core/embedders/CMap';\nimport { deriveFontFlags } from 'src/core/embedders/FontFlags';\nimport PDFHexString from 'src/core/objects/PDFHexString';\nimport PDFRef from 'src/core/objects/PDFRef';\nimport PDFString from 'src/core/objects/PDFString';\nimport PDFContext from 'src/core/PDFContext';\nimport {\n byAscendingId,\n Cache,\n sortedUniq,\n toHexStringOfMinLength,\n} from 'src/utils';\n\n/**\n * A note of thanks to the developers of https://github.com/foliojs/pdfkit, as\n * this class borrows from:\n * https://github.com/devongovett/pdfkit/blob/e71edab0dd4657b5a767804ba86c94c58d01fbca/lib/image/jpeg.coffee\n */\nclass CustomFontEmbedder {\n static async for(\n fontkit: Fontkit,\n fontData: Uint8Array,\n customName?: string,\n fontFeatures?: TypeFeatures,\n ) {\n const font = await fontkit.create(fontData);\n return new CustomFontEmbedder(font, fontData, customName, fontFeatures);\n }\n\n readonly font: Font;\n readonly scale: number;\n readonly fontData: Uint8Array;\n readonly fontName: string;\n readonly customName: string | undefined;\n readonly fontFeatures: TypeFeatures | undefined;\n\n protected baseFontName: string;\n protected glyphCache: Cache;\n\n protected constructor(\n font: Font,\n fontData: Uint8Array,\n customName?: string,\n fontFeatures?: TypeFeatures,\n ) {\n this.font = font;\n this.scale = 1000 / this.font.unitsPerEm;\n this.fontData = fontData;\n this.fontName = this.font.postscriptName || 'Font';\n this.customName = customName;\n this.fontFeatures = fontFeatures;\n\n this.baseFontName = '';\n this.glyphCache = Cache.populatedBy(this.allGlyphsInFontSortedById);\n }\n\n /**\n * Encode the JavaScript string into this font. (JavaScript encodes strings in\n * Unicode, but embedded fonts use their own custom encodings)\n */\n encodeText(text: string): PDFHexString {\n const { glyphs } = this.font.layout(text, this.fontFeatures);\n const hexCodes = new Array(glyphs.length);\n for (let idx = 0, len = glyphs.length; idx < len; idx++) {\n hexCodes[idx] = toHexStringOfMinLength(glyphs[idx].id, 4);\n }\n return PDFHexString.of(hexCodes.join(''));\n }\n\n // The advanceWidth takes into account kerning automatically, so we don't\n // have to do that manually like we do for the standard fonts.\n widthOfTextAtSize(text: string, size: number): number {\n const { glyphs } = this.font.layout(text, this.fontFeatures);\n let totalWidth = 0;\n for (let idx = 0, len = glyphs.length; idx < len; idx++) {\n totalWidth += glyphs[idx].advanceWidth * this.scale;\n }\n const scale = size / 1000;\n return totalWidth * scale;\n }\n\n heightOfFontAtSize(\n size: number,\n options: { descender?: boolean } = {},\n ): number {\n const { descender = true } = options;\n\n const { ascent, descent, bbox } = this.font;\n const yTop = (ascent || bbox.maxY) * this.scale;\n const yBottom = (descent || bbox.minY) * this.scale;\n\n let height = yTop - yBottom;\n if (!descender) height -= Math.abs(descent) || 0;\n\n return (height / 1000) * size;\n }\n\n sizeOfFontAtHeight(height: number): number {\n const { ascent, descent, bbox } = this.font;\n const yTop = (ascent || bbox.maxY) * this.scale;\n const yBottom = (descent || bbox.minY) * this.scale;\n return (1000 * height) / (yTop - yBottom);\n }\n\n embedIntoContext(context: PDFContext, ref?: PDFRef): Promise {\n this.baseFontName =\n this.customName || context.addRandomSuffix(this.fontName);\n return this.embedFontDict(context, ref);\n }\n\n protected async embedFontDict(\n context: PDFContext,\n ref?: PDFRef,\n ): Promise {\n const cidFontDictRef = await this.embedCIDFontDict(context);\n const unicodeCMapRef = this.embedUnicodeCmap(context);\n\n const fontDict = context.obj({\n Type: 'Font',\n Subtype: 'Type0',\n BaseFont: this.baseFontName,\n Encoding: 'Identity-H',\n DescendantFonts: [cidFontDictRef],\n ToUnicode: unicodeCMapRef,\n });\n\n if (ref) {\n context.assign(ref, fontDict);\n return ref;\n } else {\n return context.register(fontDict);\n }\n }\n\n protected isCFF(): boolean {\n return this.font.cff;\n }\n\n protected async embedCIDFontDict(context: PDFContext): Promise {\n const fontDescriptorRef = await this.embedFontDescriptor(context);\n\n const cidFontDict = context.obj({\n Type: 'Font',\n Subtype: this.isCFF() ? 'CIDFontType0' : 'CIDFontType2',\n CIDToGIDMap: 'Identity',\n BaseFont: this.baseFontName,\n CIDSystemInfo: {\n Registry: PDFString.of('Adobe'),\n Ordering: PDFString.of('Identity'),\n Supplement: 0,\n },\n FontDescriptor: fontDescriptorRef,\n W: this.computeWidths(),\n });\n\n return context.register(cidFontDict);\n }\n\n protected async embedFontDescriptor(context: PDFContext): Promise {\n const fontStreamRef = await this.embedFontStream(context);\n\n const { scale } = this;\n const { italicAngle, ascent, descent, capHeight, xHeight } = this.font;\n const { minX, minY, maxX, maxY } = this.font.bbox;\n\n const fontDescriptor = context.obj({\n Type: 'FontDescriptor',\n FontName: this.baseFontName,\n Flags: deriveFontFlags(this.font),\n FontBBox: [minX * scale, minY * scale, maxX * scale, maxY * scale],\n ItalicAngle: italicAngle,\n Ascent: ascent * scale,\n Descent: descent * scale,\n CapHeight: (capHeight || ascent) * scale,\n XHeight: (xHeight || 0) * scale,\n\n // Not sure how to compute/find this, nor is anybody else really:\n // https://stackoverflow.com/questions/35485179/stemv-value-of-the-truetype-font\n StemV: 0,\n\n [this.isCFF() ? 'FontFile3' : 'FontFile2']: fontStreamRef,\n });\n\n return context.register(fontDescriptor);\n }\n\n protected async serializeFont(): Promise {\n return this.fontData;\n }\n\n protected async embedFontStream(context: PDFContext): Promise {\n const fontStream = context.flateStream(await this.serializeFont(), {\n Subtype: this.isCFF() ? 'CIDFontType0C' : undefined,\n });\n return context.register(fontStream);\n }\n\n protected embedUnicodeCmap(context: PDFContext): PDFRef {\n const cmap = createCmap(this.glyphCache.access(), this.glyphId.bind(this));\n const cmapStream = context.flateStream(cmap);\n return context.register(cmapStream);\n }\n\n protected glyphId(glyph?: Glyph): number {\n return glyph ? glyph.id : -1;\n }\n\n protected computeWidths(): (number | number[])[] {\n const glyphs = this.glyphCache.access();\n\n const widths: (number | number[])[] = [];\n let currSection: number[] = [];\n\n for (let idx = 0, len = glyphs.length; idx < len; idx++) {\n const currGlyph = glyphs[idx];\n const prevGlyph = glyphs[idx - 1];\n\n const currGlyphId = this.glyphId(currGlyph);\n const prevGlyphId = this.glyphId(prevGlyph);\n\n if (idx === 0) {\n widths.push(currGlyphId);\n } else if (currGlyphId - prevGlyphId !== 1) {\n widths.push(currSection);\n widths.push(currGlyphId);\n currSection = [];\n }\n\n currSection.push(currGlyph.advanceWidth * this.scale);\n }\n\n widths.push(currSection);\n\n return widths;\n }\n\n private allGlyphsInFontSortedById = (): Glyph[] => {\n const glyphs: Glyph[] = new Array(this.font.characterSet.length);\n for (let idx = 0, len = glyphs.length; idx < len; idx++) {\n const codePoint = this.font.characterSet[idx];\n glyphs[idx] = this.font.glyphForCodePoint(codePoint);\n }\n return sortedUniq(glyphs.sort(byAscendingId), (g) => g.id);\n };\n}\n\nexport default CustomFontEmbedder;\n","import { Font } from 'src/types/fontkit';\n\nexport interface FontFlagOptions {\n fixedPitch?: boolean;\n serif?: boolean;\n symbolic?: boolean;\n script?: boolean;\n nonsymbolic?: boolean;\n italic?: boolean;\n allCap?: boolean;\n smallCap?: boolean;\n forceBold?: boolean;\n}\n\n// prettier-ignore\nconst makeFontFlags = (options: FontFlagOptions) => {\n let flags = 0;\n\n const flipBit = (bit: number) => { flags |= (1 << (bit - 1)); };\n\n if (options.fixedPitch) flipBit(1);\n if (options.serif) flipBit(2);\n if (options.symbolic) flipBit(3);\n if (options.script) flipBit(4);\n if (options.nonsymbolic) flipBit(6);\n if (options.italic) flipBit(7);\n if (options.allCap) flipBit(17);\n if (options.smallCap) flipBit(18);\n if (options.forceBold) flipBit(19);\n\n return flags;\n};\n\n// From: https://github.com/foliojs/pdfkit/blob/83f5f7243172a017adcf6a7faa5547c55982c57b/lib/font/embedded.js#L123-L129\nexport const deriveFontFlags = (font: Font): number => {\n const familyClass = font['OS/2'] ? font['OS/2'].sFamilyClass : 0;\n const flags = makeFontFlags({\n fixedPitch: font.post.isFixedPitch,\n serif: 1 <= familyClass && familyClass <= 7,\n symbolic: true, // Assume the font uses non-latin characters\n script: familyClass === 10,\n italic: font.head.macStyle.italic,\n });\n return flags;\n};\n","import { Font, Fontkit, Glyph, Subset, TypeFeatures } from 'src/types/fontkit';\n\nimport CustomFontEmbedder from 'src/core/embedders/CustomFontEmbedder';\nimport PDFHexString from 'src/core/objects/PDFHexString';\nimport { Cache, mergeUint8Arrays, toHexStringOfMinLength } from 'src/utils';\n\n/**\n * A note of thanks to the developers of https://github.com/foliojs/pdfkit, as\n * this class borrows from:\n * https://github.com/devongovett/pdfkit/blob/e71edab0dd4657b5a767804ba86c94c58d01fbca/lib/image/jpeg.coffee\n */\nclass CustomFontSubsetEmbedder extends CustomFontEmbedder {\n static async for(\n fontkit: Fontkit,\n fontData: Uint8Array,\n customFontName?: string,\n fontFeatures?: TypeFeatures,\n ) {\n const font = await fontkit.create(fontData);\n return new CustomFontSubsetEmbedder(\n font,\n fontData,\n customFontName,\n fontFeatures,\n );\n }\n\n private readonly subset: Subset;\n private readonly glyphs: Glyph[];\n private readonly glyphIdMap: Map;\n\n private constructor(\n font: Font,\n fontData: Uint8Array,\n customFontName?: string,\n fontFeatures?: TypeFeatures,\n ) {\n super(font, fontData, customFontName, fontFeatures);\n\n this.subset = this.font.createSubset();\n this.glyphs = [];\n this.glyphCache = Cache.populatedBy(() => this.glyphs);\n this.glyphIdMap = new Map();\n }\n\n encodeText(text: string): PDFHexString {\n const { glyphs } = this.font.layout(text, this.fontFeatures);\n const hexCodes = new Array(glyphs.length);\n\n for (let idx = 0, len = glyphs.length; idx < len; idx++) {\n const glyph = glyphs[idx];\n const subsetGlyphId = this.subset.includeGlyph(glyph);\n\n this.glyphs[subsetGlyphId - 1] = glyph;\n this.glyphIdMap.set(glyph.id, subsetGlyphId);\n\n hexCodes[idx] = toHexStringOfMinLength(subsetGlyphId, 4);\n }\n\n this.glyphCache.invalidate();\n return PDFHexString.of(hexCodes.join(''));\n }\n\n protected isCFF(): boolean {\n return (this.subset as any).cff;\n }\n\n protected glyphId(glyph?: Glyph): number {\n return glyph ? this.glyphIdMap.get(glyph.id)! : -1;\n }\n\n protected serializeFont(): Promise {\n return new Promise((resolve, reject) => {\n const parts: Uint8Array[] = [];\n this.subset\n .encodeStream()\n .on('data', (bytes) => parts.push(bytes))\n .on('end', () => resolve(mergeUint8Arrays(parts)))\n .on('error' as any, (err) => reject(err));\n });\n }\n}\n\nexport default CustomFontSubsetEmbedder;\n","import PDFString from 'src/core/objects/PDFString';\nimport PDFHexString from 'src/core/objects/PDFHexString';\nimport PDFContext from 'src/core/PDFContext';\nimport PDFRef from 'src/core/objects/PDFRef';\n\n/**\n * From the PDF-A3 specification, section **3.1. Requirements - General**.\n * See:\n * * https://www.pdfa.org/wp-content/uploads/2018/10/PDF20_AN002-AF.pdf\n */\nexport enum AFRelationship {\n Source = 'Source',\n Data = 'Data',\n Alternative = 'Alternative',\n Supplement = 'Supplement',\n EncryptedPayload = 'EncryptedPayload',\n FormData = 'EncryptedPayload',\n Schema = 'Schema',\n Unspecified = 'Unspecified',\n}\n\nexport interface EmbeddedFileOptions {\n mimeType?: string;\n description?: string;\n creationDate?: Date;\n modificationDate?: Date;\n afRelationship?: AFRelationship;\n}\n\nclass FileEmbedder {\n static for(\n bytes: Uint8Array,\n fileName: string,\n options: EmbeddedFileOptions = {},\n ) {\n return new FileEmbedder(bytes, fileName, options);\n }\n\n private readonly fileData: Uint8Array;\n readonly fileName: string;\n readonly options: EmbeddedFileOptions;\n\n private constructor(\n fileData: Uint8Array,\n fileName: string,\n options: EmbeddedFileOptions = {},\n ) {\n this.fileData = fileData;\n this.fileName = fileName;\n this.options = options;\n }\n\n async embedIntoContext(context: PDFContext, ref?: PDFRef): Promise {\n const {\n mimeType,\n description,\n creationDate,\n modificationDate,\n afRelationship,\n } = this.options;\n\n const embeddedFileStream = context.flateStream(this.fileData, {\n Type: 'EmbeddedFile',\n Subtype: mimeType ?? undefined,\n Params: {\n Size: this.fileData.length,\n CreationDate: creationDate\n ? PDFString.fromDate(creationDate)\n : undefined,\n ModDate: modificationDate\n ? PDFString.fromDate(modificationDate)\n : undefined,\n },\n });\n const embeddedFileStreamRef = context.register(embeddedFileStream);\n\n const fileSpecDict = context.obj({\n Type: 'Filespec',\n F: PDFString.of(this.fileName), // TODO: Assert that this is plain ASCII\n UF: PDFHexString.fromText(this.fileName),\n EF: { F: embeddedFileStreamRef },\n Desc: description ? PDFHexString.fromText(description) : undefined,\n AFRelationship: afRelationship ?? undefined,\n });\n\n if (ref) {\n context.assign(ref, fileSpecDict);\n return ref;\n } else {\n return context.register(fileSpecDict);\n }\n }\n}\n\nexport default FileEmbedder;\n","import PDFHexString from 'src/core/objects/PDFHexString';\nimport PDFContext from 'src/core/PDFContext';\nimport PDFRef from 'src/core/objects/PDFRef';\n\nclass JavaScriptEmbedder {\n static for(script: string, scriptName: string) {\n return new JavaScriptEmbedder(script, scriptName);\n }\n\n private readonly script: string;\n readonly scriptName: string;\n\n private constructor(script: string, scriptName: string) {\n this.script = script;\n this.scriptName = scriptName;\n }\n\n async embedIntoContext(context: PDFContext, ref?: PDFRef): Promise {\n const jsActionDict = context.obj({\n Type: 'Action',\n S: 'JavaScript',\n JS: PDFHexString.fromText(this.script),\n });\n\n if (ref) {\n context.assign(ref, jsActionDict);\n return ref;\n } else {\n return context.register(jsActionDict);\n }\n }\n}\n\nexport default JavaScriptEmbedder;\n","import PDFRef from 'src/core/objects/PDFRef';\nimport PDFContext from 'src/core/PDFContext';\n\n// prettier-ignore\nconst MARKERS = [\n 0xffc0, 0xffc1, 0xffc2,\n 0xffc3, 0xffc5, 0xffc6,\n 0xffc7, 0xffc8, 0xffc9,\n 0xffca, 0xffcb, 0xffcc,\n 0xffcd, 0xffce, 0xffcf,\n];\n\nenum ColorSpace {\n DeviceGray = 'DeviceGray',\n DeviceRGB = 'DeviceRGB',\n DeviceCMYK = 'DeviceCMYK',\n}\n\nconst ChannelToColorSpace: { [idx: number]: ColorSpace | undefined } = {\n 1: ColorSpace.DeviceGray,\n 3: ColorSpace.DeviceRGB,\n 4: ColorSpace.DeviceCMYK,\n};\n\n/**\n * A note of thanks to the developers of https://github.com/foliojs/pdfkit, as\n * this class borrows from:\n * https://github.com/foliojs/pdfkit/blob/a6af76467ce06bd6a2af4aa7271ccac9ff152a7d/lib/image/jpeg.js\n */\nclass JpegEmbedder {\n static async for(imageData: Uint8Array) {\n const dataView = new DataView(imageData.buffer);\n\n const soi = dataView.getUint16(0);\n if (soi !== 0xffd8) throw new Error('SOI not found in JPEG');\n\n let pos = 2;\n let marker: number;\n\n while (pos < dataView.byteLength) {\n marker = dataView.getUint16(pos);\n pos += 2;\n if (MARKERS.includes(marker)) break;\n pos += dataView.getUint16(pos);\n }\n\n if (!MARKERS.includes(marker!)) throw new Error('Invalid JPEG');\n pos += 2;\n\n const bitsPerComponent = dataView.getUint8(pos++);\n const height = dataView.getUint16(pos);\n pos += 2;\n\n const width = dataView.getUint16(pos);\n pos += 2;\n\n const channelByte = dataView.getUint8(pos++);\n const channelName = ChannelToColorSpace[channelByte];\n\n if (!channelName) throw new Error('Unknown JPEG channel.');\n\n const colorSpace = channelName;\n\n return new JpegEmbedder(\n imageData,\n bitsPerComponent,\n width,\n height,\n colorSpace,\n );\n }\n\n readonly bitsPerComponent: number;\n readonly height: number;\n readonly width: number;\n readonly colorSpace: ColorSpace;\n\n private readonly imageData: Uint8Array;\n\n private constructor(\n imageData: Uint8Array,\n bitsPerComponent: number,\n width: number,\n height: number,\n colorSpace: ColorSpace,\n ) {\n this.imageData = imageData;\n this.bitsPerComponent = bitsPerComponent;\n this.width = width;\n this.height = height;\n this.colorSpace = colorSpace;\n }\n\n async embedIntoContext(context: PDFContext, ref?: PDFRef): Promise {\n const xObject = context.stream(this.imageData, {\n Type: 'XObject',\n Subtype: 'Image',\n BitsPerComponent: this.bitsPerComponent,\n Width: this.width,\n Height: this.height,\n ColorSpace: this.colorSpace,\n Filter: 'DCTDecode',\n\n // CMYK JPEG streams in PDF are typically stored complemented,\n // with 1 as 'off' and 0 as 'on' (PDF 32000-1:2008, 8.6.4.4).\n //\n // Standalone CMYK JPEG (usually exported by Photoshop) are\n // stored inverse, with 0 as 'off' and 1 as 'on', like RGB.\n //\n // Applying a swap here as a hedge that most bytes passing\n // through this method will benefit from it.\n Decode:\n this.colorSpace === ColorSpace.DeviceCMYK\n ? [1, 0, 1, 0, 1, 0, 1, 0]\n : undefined,\n });\n\n if (ref) {\n context.assign(ref, xObject);\n return ref;\n } else {\n return context.register(xObject);\n }\n }\n}\n\nexport default JpegEmbedder;\n","import {\n MissingPageContentsEmbeddingError,\n UnrecognizedStreamTypeError,\n} from 'src/core/errors';\nimport PDFArray from 'src/core/objects/PDFArray';\nimport PDFNumber from 'src/core/objects/PDFNumber';\nimport PDFRawStream from 'src/core/objects/PDFRawStream';\nimport PDFRef from 'src/core/objects/PDFRef';\nimport PDFStream from 'src/core/objects/PDFStream';\nimport PDFContext from 'src/core/PDFContext';\nimport { decodePDFRawStream } from 'src/core/streams/decode';\nimport PDFContentStream from 'src/core/structures/PDFContentStream';\nimport PDFPageLeaf from 'src/core/structures/PDFPageLeaf';\nimport CharCodes from 'src/core/syntax/CharCodes';\nimport { TransformationMatrix } from 'src/types/matrix';\nimport { mergeIntoTypedArray } from 'src/utils';\n\n/**\n * Represents a page bounding box.\n * Usually `left` and `bottom` are 0 and right, top are equal\n * to width, height if you want to clip to the whole page.\n *\n * y\n * ^\n * | +--------+ (width,height)\n * | | |\n * | | Page |\n * | | |\n * | | |\n * (0,0) | +--------+\n * +----------> x\n */\nexport interface PageBoundingBox {\n left: number /** The left of the bounding box */;\n bottom: number /** The bottom of the bounding box */;\n right: number /** The right of the bounding box */;\n top: number /** The top of the bounding box */;\n}\n\nconst fullPageBoundingBox = (page: PDFPageLeaf) => {\n const mediaBox = page.MediaBox();\n\n const width =\n mediaBox.lookup(2, PDFNumber).asNumber() -\n mediaBox.lookup(0, PDFNumber).asNumber();\n\n const height =\n mediaBox.lookup(3, PDFNumber).asNumber() -\n mediaBox.lookup(1, PDFNumber).asNumber();\n\n return { left: 0, bottom: 0, right: width, top: height };\n};\n\n// Returns the identity matrix, modified to position the content of the given\n// bounding box at (0, 0).\nconst boundingBoxAdjustedMatrix = (\n bb: PageBoundingBox,\n): TransformationMatrix => [1, 0, 0, 1, -bb.left, -bb.bottom];\n\nclass PDFPageEmbedder {\n static async for(\n page: PDFPageLeaf,\n boundingBox?: PageBoundingBox,\n transformationMatrix?: TransformationMatrix,\n ) {\n return new PDFPageEmbedder(page, boundingBox, transformationMatrix);\n }\n\n readonly width: number;\n readonly height: number;\n readonly boundingBox: PageBoundingBox;\n readonly transformationMatrix: TransformationMatrix;\n\n private readonly page: PDFPageLeaf;\n\n private constructor(\n page: PDFPageLeaf,\n boundingBox?: PageBoundingBox,\n transformationMatrix?: TransformationMatrix,\n ) {\n this.page = page;\n\n const bb = boundingBox ?? fullPageBoundingBox(page);\n\n this.width = bb.right - bb.left;\n this.height = bb.top - bb.bottom;\n this.boundingBox = bb;\n this.transformationMatrix =\n transformationMatrix ?? boundingBoxAdjustedMatrix(bb);\n }\n\n async embedIntoContext(context: PDFContext, ref?: PDFRef): Promise {\n const { Contents, Resources } = this.page.normalizedEntries();\n\n if (!Contents) throw new MissingPageContentsEmbeddingError();\n const decodedContents = this.decodeContents(Contents);\n\n const { left, bottom, right, top } = this.boundingBox;\n const xObject = context.flateStream(decodedContents, {\n Type: 'XObject',\n Subtype: 'Form',\n FormType: 1,\n BBox: [left, bottom, right, top],\n Matrix: this.transformationMatrix,\n Resources,\n });\n\n if (ref) {\n context.assign(ref, xObject);\n return ref;\n } else {\n return context.register(xObject);\n }\n }\n\n // `contents` is an array of streams which are merged to include them in the XObject.\n // This methods extracts each stream and joins them with a newline character.\n private decodeContents(contents: PDFArray) {\n const newline = Uint8Array.of(CharCodes.Newline);\n const decodedContents: Uint8Array[] = [];\n\n for (let idx = 0, len = contents.size(); idx < len; idx++) {\n const stream = contents.lookup(idx, PDFStream);\n\n let content: Uint8Array;\n if (stream instanceof PDFRawStream) {\n content = decodePDFRawStream(stream).decode();\n } else if (stream instanceof PDFContentStream) {\n content = stream.getUnencodedContents();\n } else {\n throw new UnrecognizedStreamTypeError(stream);\n }\n\n decodedContents.push(content, newline);\n }\n\n return mergeIntoTypedArray(...decodedContents);\n }\n}\n\nexport default PDFPageEmbedder;\n","import PDFRef from 'src/core/objects/PDFRef';\nimport PDFContext from 'src/core/PDFContext';\nimport { PNG } from 'src/utils/png';\n\n/**\n * A note of thanks to the developers of https://github.com/foliojs/pdfkit, as\n * this class borrows from:\n * https://github.com/devongovett/pdfkit/blob/e71edab0dd4657b5a767804ba86c94c58d01fbca/lib/image/png.coffee\n */\nclass PngEmbedder {\n static async for(imageData: Uint8Array) {\n const png = PNG.load(imageData);\n return new PngEmbedder(png);\n }\n\n readonly bitsPerComponent: number;\n readonly height: number;\n readonly width: number;\n readonly colorSpace: 'DeviceRGB';\n\n private readonly image: PNG;\n\n private constructor(png: PNG) {\n this.image = png;\n this.bitsPerComponent = png.bitsPerComponent;\n this.width = png.width;\n this.height = png.height;\n this.colorSpace = 'DeviceRGB';\n }\n\n async embedIntoContext(context: PDFContext, ref?: PDFRef): Promise {\n const SMask = this.embedAlphaChannel(context);\n\n const xObject = context.flateStream(this.image.rgbChannel, {\n Type: 'XObject',\n Subtype: 'Image',\n BitsPerComponent: this.image.bitsPerComponent,\n Width: this.image.width,\n Height: this.image.height,\n ColorSpace: this.colorSpace,\n SMask,\n });\n\n if (ref) {\n context.assign(ref, xObject);\n return ref;\n } else {\n return context.register(xObject);\n }\n }\n\n private embedAlphaChannel(context: PDFContext): PDFRef | undefined {\n if (!this.image.alphaChannel) return undefined;\n\n const xObject = context.flateStream(this.image.alphaChannel, {\n Type: 'XObject',\n Subtype: 'Image',\n Height: this.image.height,\n Width: this.image.width,\n BitsPerComponent: this.image.bitsPerComponent,\n ColorSpace: 'DeviceGray',\n Decode: [0, 1],\n });\n\n return context.register(xObject);\n }\n}\n\nexport default PngEmbedder;\n","import {\n Encodings,\n Font,\n FontNames,\n EncodingType,\n} from '@pdf-lib/standard-fonts';\n\nimport PDFHexString from 'src/core/objects/PDFHexString';\nimport PDFRef from 'src/core/objects/PDFRef';\nimport PDFContext from 'src/core/PDFContext';\nimport { toCodePoint, toHexString } from 'src/utils';\n\nexport interface Glyph {\n code: number;\n name: string;\n}\n\n/**\n * A note of thanks to the developers of https://github.com/foliojs/pdfkit, as\n * this class borrows from:\n * https://github.com/foliojs/pdfkit/blob/f91bdd61c164a72ea06be1a43dc0a412afc3925f/lib/font/afm.coffee\n */\nclass StandardFontEmbedder {\n static for = (fontName: FontNames, customName?: string) =>\n new StandardFontEmbedder(fontName, customName);\n\n readonly font: Font;\n readonly encoding: EncodingType;\n readonly fontName: string;\n readonly customName: string | undefined;\n\n private constructor(fontName: FontNames, customName?: string) {\n // prettier-ignore\n this.encoding = (\n fontName === FontNames.ZapfDingbats ? Encodings.ZapfDingbats\n : fontName === FontNames.Symbol ? Encodings.Symbol\n : Encodings.WinAnsi\n );\n this.font = Font.load(fontName);\n this.fontName = this.font.FontName;\n this.customName = customName;\n }\n\n /**\n * Encode the JavaScript string into this font. (JavaScript encodes strings in\n * Unicode, but standard fonts use either WinAnsi, ZapfDingbats, or Symbol\n * encodings)\n */\n encodeText(text: string): PDFHexString {\n const glyphs = this.encodeTextAsGlyphs(text);\n const hexCodes = new Array(glyphs.length);\n for (let idx = 0, len = glyphs.length; idx < len; idx++) {\n hexCodes[idx] = toHexString(glyphs[idx].code);\n }\n return PDFHexString.of(hexCodes.join(''));\n }\n\n widthOfTextAtSize(text: string, size: number): number {\n const glyphs = this.encodeTextAsGlyphs(text);\n let totalWidth = 0;\n\n for (let idx = 0, len = glyphs.length; idx < len; idx++) {\n const left = glyphs[idx].name;\n const right = (glyphs[idx + 1] || {}).name;\n const kernAmount = this.font.getXAxisKerningForPair(left, right) || 0;\n totalWidth += this.widthOfGlyph(left) + kernAmount;\n }\n\n const scale = size / 1000;\n return totalWidth * scale;\n }\n\n heightOfFontAtSize(\n size: number,\n options: { descender?: boolean } = {},\n ): number {\n const { descender = true } = options;\n\n const { Ascender, Descender, FontBBox } = this.font;\n const yTop = Ascender || FontBBox[3];\n const yBottom = Descender || FontBBox[1];\n\n let height = yTop - yBottom;\n if (!descender) height += Descender || 0;\n\n return (height / 1000) * size;\n }\n\n sizeOfFontAtHeight(height: number): number {\n const { Ascender, Descender, FontBBox } = this.font;\n const yTop = Ascender || FontBBox[3];\n const yBottom = Descender || FontBBox[1];\n return (1000 * height) / (yTop - yBottom);\n }\n\n embedIntoContext(context: PDFContext, ref?: PDFRef): PDFRef {\n const fontDict = context.obj({\n Type: 'Font',\n Subtype: 'Type1',\n BaseFont: this.customName || this.fontName,\n\n Encoding:\n this.encoding === Encodings.WinAnsi ? 'WinAnsiEncoding' : undefined,\n });\n\n if (ref) {\n context.assign(ref, fontDict);\n return ref;\n } else {\n return context.register(fontDict);\n }\n }\n\n private widthOfGlyph(glyphName: string): number {\n // Default to 250 if font doesn't specify a width\n return this.font.getWidthOfGlyph(glyphName) || 250;\n }\n\n private encodeTextAsGlyphs(text: string): Glyph[] {\n const codePoints = Array.from(text);\n const glyphs: Glyph[] = new Array(codePoints.length);\n for (let idx = 0, len = codePoints.length; idx < len; idx++) {\n const codePoint = toCodePoint(codePoints[idx])!;\n glyphs[idx] = this.encoding.encodeUnicodeCodePoint(codePoint);\n }\n return glyphs;\n }\n}\n\nexport default StandardFontEmbedder;\n","// tslint:disable: max-classes-per-file\nimport PDFObject from 'src/core/objects/PDFObject';\nimport { arrayAsString } from 'src/utils';\n\nexport class MethodNotImplementedError extends Error {\n constructor(className: string, methodName: string) {\n const msg = `Method ${className}.${methodName}() not implemented`;\n super(msg);\n }\n}\n\nexport class PrivateConstructorError extends Error {\n constructor(className: string) {\n const msg = `Cannot construct ${className} - it has a private constructor`;\n super(msg);\n }\n}\n\nexport class UnexpectedObjectTypeError extends Error {\n constructor(expected: any | any[], actual: any) {\n const name = (t: any) => t?.name ?? t?.constructor?.name;\n\n const expectedTypes = Array.isArray(expected)\n ? expected.map(name)\n : [name(expected)];\n\n const msg =\n `Expected instance of ${expectedTypes.join(' or ')}, ` +\n `but got instance of ${actual ? name(actual) : actual}`;\n\n super(msg);\n }\n}\n\nexport class UnsupportedEncodingError extends Error {\n constructor(encoding: string) {\n const msg = `${encoding} stream encoding not supported`;\n super(msg);\n }\n}\n\nexport class ReparseError extends Error {\n constructor(className: string, methodName: string) {\n const msg = `Cannot call ${className}.${methodName}() more than once`;\n super(msg);\n }\n}\n\nexport class MissingCatalogError extends Error {\n constructor(ref?: PDFObject) {\n const msg = `Missing catalog (ref=${ref})`;\n super(msg);\n }\n}\n\nexport class MissingPageContentsEmbeddingError extends Error {\n constructor() {\n const msg = `Can't embed page with missing Contents`;\n super(msg);\n }\n}\n\nexport class UnrecognizedStreamTypeError extends Error {\n constructor(stream: any) {\n const streamType = stream?.contructor?.name ?? stream?.name ?? stream;\n const msg = `Unrecognized stream type: ${streamType}`;\n super(msg);\n }\n}\n\nexport class PageEmbeddingMismatchedContextError extends Error {\n constructor() {\n const msg = `Found mismatched contexts while embedding pages. All pages in the array passed to \\`PDFDocument.embedPages()\\` must be from the same document.`;\n super(msg);\n }\n}\n\nexport class PDFArrayIsNotRectangleError extends Error {\n constructor(size: number) {\n const msg = `Attempted to convert PDFArray with ${size} elements to rectangle, but must have exactly 4 elements.`;\n super(msg);\n }\n}\n\nexport class InvalidPDFDateStringError extends Error {\n constructor(value: string) {\n const msg = `Attempted to convert \"${value}\" to a date, but it does not match the PDF date string format.`;\n super(msg);\n }\n}\n\nexport class InvalidTargetIndexError extends Error {\n constructor(targetIndex: number, Count: number) {\n const msg = `Invalid targetIndex specified: targetIndex=${targetIndex} must be less than Count=${Count}`;\n super(msg);\n }\n}\n\nexport class CorruptPageTreeError extends Error {\n constructor(targetIndex: number, operation: string) {\n const msg = `Failed to ${operation} at targetIndex=${targetIndex} due to corrupt page tree: It is likely that one or more 'Count' entries are invalid`;\n super(msg);\n }\n}\n\nexport class IndexOutOfBoundsError extends Error {\n constructor(index: number, min: number, max: number) {\n const msg = `index should be at least ${min} and at most ${max}, but was actually ${index}`;\n super(msg);\n }\n}\n\nexport class InvalidAcroFieldValueError extends Error {\n constructor() {\n const msg = `Attempted to set invalid field value`;\n super(msg);\n }\n}\n\nexport class MultiSelectValueError extends Error {\n constructor() {\n const msg = `Attempted to select multiple values for single-select field`;\n super(msg);\n }\n}\n\nexport class MissingDAEntryError extends Error {\n constructor(fieldName: string) {\n const msg = `No /DA (default appearance) entry found for field: ${fieldName}`;\n super(msg);\n }\n}\n\nexport class MissingTfOperatorError extends Error {\n constructor(fieldName: string) {\n const msg = `No Tf operator found for DA of field: ${fieldName}`;\n super(msg);\n }\n}\n\n/***** Parser Errors ******/\n\nexport interface Position {\n line: number;\n column: number;\n offset: number;\n}\n\nexport class NumberParsingError extends Error {\n constructor(pos: Position, value: string) {\n const msg =\n `Failed to parse number ` +\n `(line:${pos.line} col:${pos.column} offset=${pos.offset}): \"${value}\"`;\n super(msg);\n }\n}\n\nexport class PDFParsingError extends Error {\n constructor(pos: Position, details: string) {\n const msg =\n `Failed to parse PDF document ` +\n `(line:${pos.line} col:${pos.column} offset=${pos.offset}): ${details}`;\n super(msg);\n }\n}\n\nexport class NextByteAssertionError extends PDFParsingError {\n constructor(pos: Position, expectedByte: number, actualByte: number) {\n const msg = `Expected next byte to be ${expectedByte} but it was actually ${actualByte}`;\n super(pos, msg);\n }\n}\n\nexport class PDFObjectParsingError extends PDFParsingError {\n constructor(pos: Position, byte: number) {\n const msg = `Failed to parse PDF object starting with the following byte: ${byte}`;\n super(pos, msg);\n }\n}\n\nexport class PDFInvalidObjectParsingError extends PDFParsingError {\n constructor(pos: Position) {\n const msg = `Failed to parse invalid PDF object`;\n super(pos, msg);\n }\n}\n\nexport class PDFStreamParsingError extends PDFParsingError {\n constructor(pos: Position) {\n const msg = `Failed to parse PDF stream`;\n super(pos, msg);\n }\n}\n\nexport class UnbalancedParenthesisError extends PDFParsingError {\n constructor(pos: Position) {\n const msg = `Failed to parse PDF literal string due to unbalanced parenthesis`;\n super(pos, msg);\n }\n}\n\nexport class StalledParserError extends PDFParsingError {\n constructor(pos: Position) {\n const msg = `Parser stalled`;\n super(pos, msg);\n }\n}\n\nexport class MissingPDFHeaderError extends PDFParsingError {\n constructor(pos: Position) {\n const msg = `No PDF header found`;\n super(pos, msg);\n }\n}\n\nexport class MissingKeywordError extends PDFParsingError {\n constructor(pos: Position, keyword: number[]) {\n const msg = `Did not find expected keyword '${arrayAsString(keyword)}'`;\n super(pos, msg);\n }\n}\n"],"names":["asPDFName","name","PDFName","of","asPDFNumber","num","PDFNumber","asNumber","cx","cy","px","py","sx","sy","parameters","Map","runners","M","a","moveTo","m","C","appendBezierCurve","c","cmd","S","s","Q","appendQuadraticCurve","q","T","t","A","cmds","solveArc","L","lineTo","l","H","h","V","v","Z","closePath","z","x","y","coords","rx","ry","rot","large","sweep","ex","ey","_i","segs_1","arcToSegments","length","seg","bez","segmentToBezier","apply","push","rotateX","ox","oy","th","Math","PI","sinTh","sin","cosTh","cos","abs","pl","sqrt","a00","a01","a10","a11","x0","y0","x1","y1","sfactorSq","sfactor","xc","yc","th0","atan2","thArc","segments","ceil","result","i","th2","th3","cx1","cy1","th1","thHalf","x3","y3","x2","y2","svgPathToOperators","path","commands","args","Array","isArray","concat","ret","curArg","foundDecimal","params","path_1","has","get","includes","parse","drawLinesOfText","lines","options","operators","pushGraphicsState","graphicsState","setGraphicsState","beginText","setFillingColor","color","setFontAndSize","font","size","setLineHeight","lineHeight","rotateAndSkewTextRadiansAndTranslate","toRadians","rotate","xSkew","ySkew","filter","Boolean","idx","len","showText","nextLine","endText","popGraphicsState","drawImage","translate","rotateRadians","scale","width","height","skewRadians","drawObject","drawPage","xScale","yScale","drawLine","setStrokingColor","setLineWidth","thickness","setDashPattern","_a","dashArray","_b","dashPhase","start","lineCap","setLineCap","end","stroke","drawRectangle","borderColor","borderWidth","borderLineCap","borderDashArray","borderDashPhase","fillAndStroke","fill","KAPPA","drawEllipse","config","xe","ye","xm","ym","__spreadArrays","undefined","centerX","centerY","drawEllipseCurves","_c","degrees","drawSvgPath","rotateInPlace","rotation","rotateDegrees","drawCheckBox","outline","filled","checkMark","p2x","p2y","p1x","p1y","drawCheckMark","min","markColor","drawRadioButton","outlineScale","dot","dotColor","drawButton","background","drawTextLines","textLines","textColor","fontSize","encoded","drawTextField","padding","clipX","clipY","clipWidth","clipHeight","clippingArea","clip","endPath","markedContent","beginMarkedContent","endMarkedContent","drawOptionList","highlights","selectedLines","line","selectedColor","LineCapStyle","PDFOperator","Ops","ClipNonZero","tan","concatTransformationMatrix","b","d","e","f","ConcatTransformationMatrix","xPos","yPos","angle","degreesToRadians","xSkewAngle","ySkewAngle","SetLineDashPattern","map","join","LineJoinStyle","style","SetLineCapStyle","TextRenderingMode","state","SetGraphicsStateParams","PushGraphicsState","PopGraphicsState","SetLineWidth","AppendBezierCurve","CurveToReplicateInitialPoint","ClosePath","MoveTo","LineTo","StrokePath","FillNonZero","FillNonZeroAndStroke","EndPath","NextLine","text","ShowText","BeginText","EndText","SetFontAndSize","SetTextLineHeight","rotationAngle","SetTextMatrix","DrawObject","setFillingGrayscaleColor","gray","NonStrokingColorGray","setStrokingGrayscaleColor","StrokingColorGray","setFillingRgbColor","red","green","blue","NonStrokingColorRgb","setStrokingRgbColor","StrokingColorRgb","setFillingCmykColor","cyan","magenta","yellow","key","NonStrokingColorCmyk","setStrokingCmykColor","StrokingColorCmyk","tag","BeginMarkedContent","EndMarkedContent","RotationTypes","degreeAngle","assertIs","type","Degrees","Radians","degree","error","JSON","stringify","toDegrees","reduceRotation","quadrants","adjustDimsForRotation","dims","rotateRectangle","rectangle","w","r","PageSizes","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","TextAlignment","computeFontSize","bounds","multiline","linesUsed","lineIdx","lineLen","words","split","spaceInLineRemaining","word","widthOfWord","widthOfTextAtSize","heightAtSize","lastIndexOfWhitespace","test","splitOutLines","input","maxWidth","lastWhitespaceIdx","substring","encodeText","remainder","layoutMultilineText","alignment","lineSplit","cleanText","minX","minY","maxX","maxY","prevRemainder","Left","Center","Right","trim","layoutCombedText","cellCount","mergeLines","CombedTextLayoutError","cellWidth","cellHeight","chars","charSplit","descender","computeCombedFontSize","cells","cellOffset","charOffset","charAtIndex","char","charLength","layoutSinglelineText","byAscendingObjectNumber","objectNumber","PDFContext","this","largestObjectNumber","header","PDFHeader","forVersion","trailerInfo","indirectObjects","rng","SimpleRNG","withSeed","prototype","assign","ref","object","set","nextRef","PDFRef","register","delete","lookupMaybe","types","arguments","preservePDFNull","PDFNull","UnexpectedObjectTypeError","lookup","getObjectRef","pdfObject","entries","from","enumerateIndirectObjects","sort","obj","literal","PDFObject","PDFBool","True","False","array","PDFArray","withContext","dict","PDFDict","keys","Object","value","stream","contents","PDFRawStream","typedArrayFor","flateStream","pako","__assign","Filter","contentStream","PDFContentStream","formXObject","BBox","Matrix","Type","Subtype","getPushGraphicsStateContentStream","pushGraphicsStateContentStreamRef","op","getPopGraphicsStateContentStream","popGraphicsStateContentStreamRef","addRandomSuffix","prefix","suffixLength","floor","nextInt","pow","create","PDFObjectCopier","src","dest","_this","traversedObjects","copy","PDFPageLeaf","copyPDFPage","copyPDFDict","copyPDFArray","PDFStream","copyPDFStream","copyPDFIndirectObject","clone","originalPage","clonedPage","InheritableEntries","getInheritableAttribute","originalDict","clonedDict","originalArray","clonedArray","originalStream","clonedStream","newRef","dereferencedValue","cloned","for","tfRegex","PDFAcroField","PDFString","PDFHexString","Ff","numberOrRef","context","valueOrRef","Kids","DA","da","setKids","kids","getParent","parentRef","setParent","parent","getFullyQualifiedName","getPartialName","decodeText","setPartialName","partialName","fromText","setDefaultAppearance","appearance","getDefaultAppearance","asString","setFontSize","MissingDAEntryError","daMatch","findLastMatch","match","MissingTfOperatorError","daStart","slice","pos","daEnd","modifiedDa","getFlags","setFlags","flags","hasFlag","flag","setFlag","clearFlag","setFlagTo","enable","attribute","ascend","node","visitor","_super","PDFAcroTerminal","__extends","FT","nameOrRef","getWidgets","kidDicts","PDFWidgetAnnotation","fromDict","widgets","addWidget","normalizedEntries","removeWidget","IndexOutOfBoundsError","remove","PDFAcroButton","Opt","setOpt","opt","getExportValues","values","removeExportValue","normalizeExportValues","exportValues","widget","exportVal","_d","getOnValue","addOpt","useExistingOptIdx","existingIdx","optText","addWidgetWithOpt","optIdx","apStateValue","String","PDFAcroCheckBox","setValue","InvalidAcroFieldValueError","setAppearanceState","getValue","AcroFieldFlags","AcroButtonFlags","AcroTextFlags","AcroChoiceFlags","bitIndex","PDFAcroChoice","setValues","Combo","Edit","valuesAreValid","MultiSelect","MultiSelectValueError","updateSelectedIndices","getOptions","val","find","o","display","indices","findIndex","getValues","setOptions","newOpt","res","item","first","second","PDFAcroComboBox","PDFAcroNonTerminal","addField","field","PDFAcroSignature","PDFAcroText","MaxLen","maxLen","setMaxLength","maxLength","removeMaxLength","getMaxLength","setQuadding","quadding","getQuadding","removeValue","PDFAcroPushButton","PushButton","PDFAcroRadioButton","getOnValues","onValues","onValue","Radio","PDFAcroListBox","createPDFAcroFields","createPDFAcroField","isNonTerminalAcroField","createPDFAcroTerminal","kid","ftNameOrRef","createPDFAcroButton","createPDFAcroChoice","ffNumberOrRef","ffNumber","flagIsSet","startNode","Parent","PDFAcroForm","Fields","fields","getFields","getAllFields","allFields","pushFields","fieldModel","removeField","index","indexOf","Error","AppearanceCharacteristics","R","BC","BG","CA","RC","AC","getRotation","getBorderColor","components","component","getBackgroundColor","getCaptions","normal","rollover","down","setRotation","setBorderColor","setBackgroundColor","setCaptions","captions","PDFAnnotation","Rect","AP","F","getRectangle","asRectangle","setRectangle","rect","getAppearanceState","AS","setAppearances","appearances","ensureAP","getNormalAppearance","N","constructor","setNormalAppearance","setRolloverAppearance","setDownAppearance","removeRolloverAppearance","removeDownAppearance","getAppearances","BorderStyle","W","getWidth","setWidth","MK","BS","P","setP","page","getAppearanceCharacteristics","getOrCreateAppearanceCharacteristics","ac","getBorderStyle","getOrCreateBorderStyle","bs","AnnotationFlags","PDFCrossRefSection","firstEntry","subsections","chunkIdx","chunkLength","addEntry","offset","append","deleted","addDeletedEntry","nextFreeObjectNumber","toString","section","rangeIdx","rangeLen","range","entryIdx","entryLen","entry","padStart","generationNumber","sizeInBytes","subsection","subsectionLength","copyBytesInto","buffer","initialOffset","CharCodes","Newline","copySubsectionsIntoBuffer","firstObjectNumber","copyStringIntoBuffer","Space","rangeLength","copyEntriesIntoBuffer","entryOffset","entryGen","n","currEntry","chunk","prevEntry","createEmpty","major","minor","bc","charFromCode","Percent","D","Dash","Period","PDFTrailer","lastXRefOffset","E","O","forLastCrossRefSectionOffset","PDFTrailerDict","fillCmapTemplate","bfChars","cmapHexFormat","cmapHexString","toHexStringOfMinLength","cmapCodePointFormat","codePoint","isWithinBMP","hasSurrogates","hs","highSurrogate","ls","lowSurrogate","hex","toHexString","CustomFontEmbedder","fontData","customName","fontFeatures","allGlyphsInFontSortedById","glyphs","characterSet","glyphForCodePoint","sortedUniq","byAscendingId","g","id","unitsPerEm","fontName","postscriptName","baseFontName","glyphCache","Cache","populatedBy","fontkit","sent","layout","hexCodes","totalWidth","advanceWidth","heightOfFontAtSize","ascent","descent","bbox","sizeOfFontAtHeight","embedIntoContext","embedFontDict","embedCIDFontDict","cidFontDictRef","unicodeCMapRef","embedUnicodeCmap","fontDict","BaseFont","Encoding","DescendantFonts","ToUnicode","isCFF","cff","embedFontDescriptor","fontDescriptorRef","cidFontDict","CIDToGIDMap","CIDSystemInfo","Registry","Ordering","Supplement","FontDescriptor","computeWidths","embedFontStream","fontStreamRef","italicAngle","capHeight","xHeight","fontDescriptor","FontName","Flags","familyClass","sFamilyClass","fixedPitch","post","isFixedPitch","serif","symbolic","script","italic","head","macStyle","flipBit","bit","nonsymbolic","allCap","smallCap","forceBold","FontBBox","ItalicAngle","Ascent","Descent","CapHeight","XHeight","StemV","serializeFont","fontStream","cmap","glyphId","glyph","unicode","codePoints","createCmap","access","bind","cmapStream","widths","currSection","currGlyph","prevGlyph","currGlyphId","prevGlyphId","CustomFontSubsetEmbedder","customFontName","call","subset","createSubset","glyphIdMap","subsetGlyphId","includeGlyph","invalidate","Promise","resolve","reject","parts","encodeStream","on","bytes","mergeUint8Arrays","err","AFRelationship","FileEmbedder","fileData","fileName","mimeType","description","creationDate","modificationDate","afRelationship","embeddedFileStream","Params","Size","CreationDate","fromDate","ModDate","embeddedFileStreamRef","fileSpecDict","UF","EF","Desc","JavaScriptEmbedder","scriptName","jsActionDict","JS","ColorSpace","MARKERS","ChannelToColorSpace","DeviceGray","DeviceRGB","DeviceCMYK","JpegEmbedder","imageData","bitsPerComponent","colorSpace","dataView","DataView","getUint16","byteLength","marker","getUint8","channelByte","channelName","xObject","BitsPerComponent","Width","Height","Decode","PDFPageEmbedder","boundingBox","transformationMatrix","bb","mediaBox","MediaBox","left","bottom","right","top","fullPageBoundingBox","boundingBoxAdjustedMatrix","Contents","Resources","MissingPageContentsEmbeddingError","decodedContents","decodeContents","FormType","newline","Uint8Array","content","decodePDFRawStream","decode","UnrecognizedStreamTypeError","getUnencodedContents","mergeIntoTypedArray","PngEmbedder","png","image","PNG","load","SMask","embedAlphaChannel","rgbChannel","alphaChannel","StandardFontEmbedder","encoding","FontNames","ZapfDingbats","Encodings","Symbol","WinAnsi","Font","encodeTextAsGlyphs","code","kernAmount","getXAxisKerningForPair","widthOfGlyph","Ascender","Descender","glyphName","getWidthOfGlyph","toCodePoint","encodeUnicodeCodePoint","MethodNotImplementedError","className","methodName","msg","PrivateConstructorError","expected","actual","UnsupportedEncodingError","ReparseError","MissingCatalogError","contructor","PageEmbeddingMismatchedContextError","PDFArrayIsNotRectangleError","InvalidPDFDateStringError","InvalidTargetIndexError","targetIndex","Count","CorruptPageTreeError","operation","max","fieldName","NumberParsingError","column","PDFParsingError","details","NextByteAssertionError","expectedByte","actualByte","PDFObjectParsingError","byte","PDFInvalidObjectParsingError","PDFStreamParsingError","UnbalancedParenthesisError","StalledParserError","MissingPDFHeaderError","MissingKeywordError","keyword","arrayAsString"],"sourceRoot":""}