av6-pdf-engine 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/dist/index.d.ts +3 -0
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +19 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/renderer-engine/blocks/barcode.d.ts +3 -0
  6. package/dist/renderer-engine/blocks/barcode.d.ts.map +1 -0
  7. package/dist/renderer-engine/blocks/barcode.js +47 -0
  8. package/dist/renderer-engine/blocks/barcode.js.map +1 -0
  9. package/dist/renderer-engine/blocks/columns.d.ts +3 -0
  10. package/dist/renderer-engine/blocks/columns.d.ts.map +1 -0
  11. package/dist/renderer-engine/blocks/columns.js +105 -0
  12. package/dist/renderer-engine/blocks/columns.js.map +1 -0
  13. package/dist/renderer-engine/blocks/image.d.ts +4 -0
  14. package/dist/renderer-engine/blocks/image.d.ts.map +1 -0
  15. package/dist/renderer-engine/blocks/image.js +57 -0
  16. package/dist/renderer-engine/blocks/image.js.map +1 -0
  17. package/dist/renderer-engine/blocks/index.d.ts +8 -0
  18. package/dist/renderer-engine/blocks/index.d.ts.map +1 -0
  19. package/dist/renderer-engine/blocks/index.js +24 -0
  20. package/dist/renderer-engine/blocks/index.js.map +1 -0
  21. package/dist/renderer-engine/blocks/key-value-grid.d.ts +3 -0
  22. package/dist/renderer-engine/blocks/key-value-grid.d.ts.map +1 -0
  23. package/dist/renderer-engine/blocks/key-value-grid.js +245 -0
  24. package/dist/renderer-engine/blocks/key-value-grid.js.map +1 -0
  25. package/dist/renderer-engine/blocks/line.d.ts +3 -0
  26. package/dist/renderer-engine/blocks/line.d.ts.map +1 -0
  27. package/dist/renderer-engine/blocks/line.js +35 -0
  28. package/dist/renderer-engine/blocks/line.js.map +1 -0
  29. package/dist/renderer-engine/blocks/table.d.ts +4 -0
  30. package/dist/renderer-engine/blocks/table.d.ts.map +1 -0
  31. package/dist/renderer-engine/blocks/table.js +201 -0
  32. package/dist/renderer-engine/blocks/table.js.map +1 -0
  33. package/dist/renderer-engine/blocks/text.d.ts +3 -0
  34. package/dist/renderer-engine/blocks/text.d.ts.map +1 -0
  35. package/dist/renderer-engine/blocks/text.js +52 -0
  36. package/dist/renderer-engine/blocks/text.js.map +1 -0
  37. package/dist/renderer-engine/index.d.ts +4 -0
  38. package/dist/renderer-engine/index.d.ts.map +1 -0
  39. package/dist/renderer-engine/index.js +215 -0
  40. package/dist/renderer-engine/index.js.map +1 -0
  41. package/dist/renderer-engine/utils/block-renderer.d.ts +17 -0
  42. package/dist/renderer-engine/utils/block-renderer.d.ts.map +1 -0
  43. package/dist/renderer-engine/utils/block-renderer.js +86 -0
  44. package/dist/renderer-engine/utils/block-renderer.js.map +1 -0
  45. package/dist/renderer-engine/utils/context.d.ts +3 -0
  46. package/dist/renderer-engine/utils/context.d.ts.map +1 -0
  47. package/dist/renderer-engine/utils/context.js +16 -0
  48. package/dist/renderer-engine/utils/context.js.map +1 -0
  49. package/dist/renderer-engine/utils/ensure-space.d.ts +9 -0
  50. package/dist/renderer-engine/utils/ensure-space.d.ts.map +1 -0
  51. package/dist/renderer-engine/utils/ensure-space.js +18 -0
  52. package/dist/renderer-engine/utils/ensure-space.js.map +1 -0
  53. package/dist/renderer-engine/utils/env.d.ts +3 -0
  54. package/dist/renderer-engine/utils/env.d.ts.map +1 -0
  55. package/dist/renderer-engine/utils/env.js +10 -0
  56. package/dist/renderer-engine/utils/env.js.map +1 -0
  57. package/dist/renderer-engine/utils/finish-page.d.ts +13 -0
  58. package/dist/renderer-engine/utils/finish-page.d.ts.map +1 -0
  59. package/dist/renderer-engine/utils/finish-page.js +27 -0
  60. package/dist/renderer-engine/utils/finish-page.js.map +1 -0
  61. package/dist/renderer-engine/utils/footer.d.ts +3 -0
  62. package/dist/renderer-engine/utils/footer.d.ts.map +1 -0
  63. package/dist/renderer-engine/utils/footer.js +89 -0
  64. package/dist/renderer-engine/utils/footer.js.map +1 -0
  65. package/dist/renderer-engine/utils/header.d.ts +3 -0
  66. package/dist/renderer-engine/utils/header.d.ts.map +1 -0
  67. package/dist/renderer-engine/utils/header.js +47 -0
  68. package/dist/renderer-engine/utils/header.js.map +1 -0
  69. package/dist/renderer-engine/utils/image-loader.d.ts +4 -0
  70. package/dist/renderer-engine/utils/image-loader.d.ts.map +1 -0
  71. package/dist/renderer-engine/utils/image-loader.js +52 -0
  72. package/dist/renderer-engine/utils/image-loader.js.map +1 -0
  73. package/dist/renderer-engine/utils/index.d.ts +19 -0
  74. package/dist/renderer-engine/utils/index.d.ts.map +1 -0
  75. package/dist/renderer-engine/utils/index.js +35 -0
  76. package/dist/renderer-engine/utils/index.js.map +1 -0
  77. package/dist/renderer-engine/utils/layout.d.ts +8 -0
  78. package/dist/renderer-engine/utils/layout.d.ts.map +1 -0
  79. package/dist/renderer-engine/utils/layout.js +22 -0
  80. package/dist/renderer-engine/utils/layout.js.map +1 -0
  81. package/dist/renderer-engine/utils/measure-block-height.d.ts +8 -0
  82. package/dist/renderer-engine/utils/measure-block-height.d.ts.map +1 -0
  83. package/dist/renderer-engine/utils/measure-block-height.js +220 -0
  84. package/dist/renderer-engine/utils/measure-block-height.js.map +1 -0
  85. package/dist/renderer-engine/utils/page-background.d.ts +6 -0
  86. package/dist/renderer-engine/utils/page-background.d.ts.map +1 -0
  87. package/dist/renderer-engine/utils/page-background.js +30 -0
  88. package/dist/renderer-engine/utils/page-background.js.map +1 -0
  89. package/dist/renderer-engine/utils/page-flow.d.ts +3 -0
  90. package/dist/renderer-engine/utils/page-flow.d.ts.map +1 -0
  91. package/dist/renderer-engine/utils/page-flow.js +9 -0
  92. package/dist/renderer-engine/utils/page-flow.js.map +1 -0
  93. package/dist/renderer-engine/utils/page-limit.d.ts +8 -0
  94. package/dist/renderer-engine/utils/page-limit.d.ts.map +1 -0
  95. package/dist/renderer-engine/utils/page-limit.js +15 -0
  96. package/dist/renderer-engine/utils/page-limit.js.map +1 -0
  97. package/dist/renderer-engine/utils/qr-bar-code.d.ts +17 -0
  98. package/dist/renderer-engine/utils/qr-bar-code.d.ts.map +1 -0
  99. package/dist/renderer-engine/utils/qr-bar-code.js +141 -0
  100. package/dist/renderer-engine/utils/qr-bar-code.js.map +1 -0
  101. package/dist/renderer-engine/utils/signature.d.ts +20 -0
  102. package/dist/renderer-engine/utils/signature.d.ts.map +1 -0
  103. package/dist/renderer-engine/utils/signature.js +214 -0
  104. package/dist/renderer-engine/utils/signature.js.map +1 -0
  105. package/dist/renderer-engine/utils/start-page-layout.d.ts +20 -0
  106. package/dist/renderer-engine/utils/start-page-layout.d.ts.map +1 -0
  107. package/dist/renderer-engine/utils/start-page-layout.js +34 -0
  108. package/dist/renderer-engine/utils/start-page-layout.js.map +1 -0
  109. package/dist/renderer-engine/utils/styles.d.ts +7 -0
  110. package/dist/renderer-engine/utils/styles.d.ts.map +1 -0
  111. package/dist/renderer-engine/utils/styles.js +124 -0
  112. package/dist/renderer-engine/utils/styles.js.map +1 -0
  113. package/dist/renderer-engine/utils/watermark.d.ts +11 -0
  114. package/dist/renderer-engine/utils/watermark.d.ts.map +1 -0
  115. package/dist/renderer-engine/utils/watermark.js +57 -0
  116. package/dist/renderer-engine/utils/watermark.js.map +1 -0
  117. package/dist/types/barcode.d.ts +23 -0
  118. package/dist/types/barcode.d.ts.map +1 -0
  119. package/dist/types/barcode.js +11 -0
  120. package/dist/types/barcode.js.map +1 -0
  121. package/dist/types/columns.d.ts +14 -0
  122. package/dist/types/columns.d.ts.map +1 -0
  123. package/dist/types/columns.js +3 -0
  124. package/dist/types/columns.js.map +1 -0
  125. package/dist/types/common.d.ts +102 -0
  126. package/dist/types/common.d.ts.map +1 -0
  127. package/dist/types/common.js +3 -0
  128. package/dist/types/common.js.map +1 -0
  129. package/dist/types/context.d.ts +17 -0
  130. package/dist/types/context.d.ts.map +1 -0
  131. package/dist/types/context.js +3 -0
  132. package/dist/types/context.js.map +1 -0
  133. package/dist/types/image.d.ts +13 -0
  134. package/dist/types/image.d.ts.map +1 -0
  135. package/dist/types/image.js +3 -0
  136. package/dist/types/image.js.map +1 -0
  137. package/dist/types/index.d.ts +13 -0
  138. package/dist/types/index.d.ts.map +1 -0
  139. package/dist/types/index.js +29 -0
  140. package/dist/types/index.js.map +1 -0
  141. package/dist/types/key-value-grid.d.ts +34 -0
  142. package/dist/types/key-value-grid.d.ts.map +1 -0
  143. package/dist/types/key-value-grid.js +3 -0
  144. package/dist/types/key-value-grid.js.map +1 -0
  145. package/dist/types/line.d.ts +11 -0
  146. package/dist/types/line.d.ts.map +1 -0
  147. package/dist/types/line.js +3 -0
  148. package/dist/types/line.js.map +1 -0
  149. package/dist/types/page-break.d.ts +5 -0
  150. package/dist/types/page-break.d.ts.map +1 -0
  151. package/dist/types/page-break.js +3 -0
  152. package/dist/types/page-break.js.map +1 -0
  153. package/dist/types/qr.d.ts +22 -0
  154. package/dist/types/qr.d.ts.map +1 -0
  155. package/dist/types/qr.js +10 -0
  156. package/dist/types/qr.js.map +1 -0
  157. package/dist/types/signature.d.ts +12 -0
  158. package/dist/types/signature.d.ts.map +1 -0
  159. package/dist/types/signature.js +3 -0
  160. package/dist/types/signature.js.map +1 -0
  161. package/dist/types/table.d.ts +32 -0
  162. package/dist/types/table.d.ts.map +1 -0
  163. package/dist/types/table.js +3 -0
  164. package/dist/types/table.js.map +1 -0
  165. package/dist/types/text.d.ts +19 -0
  166. package/dist/types/text.d.ts.map +1 -0
  167. package/dist/types/text.js +3 -0
  168. package/dist/types/text.js.map +1 -0
  169. package/dist/types/utility.d.ts +1 -0
  170. package/dist/types/utility.d.ts.map +1 -0
  171. package/dist/types/utility.js +2 -0
  172. package/dist/types/utility.js.map +1 -0
  173. package/package.json +42 -0
@@ -0,0 +1,220 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createMeasureBlockHeight = createMeasureBlockHeight;
4
+ const table_1 = require("../blocks/table");
5
+ const styles_1 = require("./styles");
6
+ function createMeasureBlockHeight(deps) {
7
+ const { doc, styles, computeColumnPixelWidths } = deps;
8
+ const measureText = (b, env) => {
9
+ var _a, _b, _c;
10
+ const tb = (0, styles_1.resolveTextBlock)(styles, b);
11
+ // TextBlock doesn't have marginLeft/right, so use full env width
12
+ const width = Math.max(env.innerWidth, 1);
13
+ doc.font((0, styles_1.getFontNameForText)(tb));
14
+ doc.fontSize((_a = tb.fontSize) !== null && _a !== void 0 ? _a : 10);
15
+ const h = doc.heightOfString((_b = tb.text) !== null && _b !== void 0 ? _b : "", { width });
16
+ // Whatever you use in processTextBlock (keep consistent)
17
+ const gap = (_c = tb.lineGap) !== null && _c !== void 0 ? _c : 4;
18
+ return h + gap;
19
+ };
20
+ const measureImageLike = (mt, mb, h) => (mt !== null && mt !== void 0 ? mt : 0) + h + (mb !== null && mb !== void 0 ? mb : 0);
21
+ const measureImage = (b) => {
22
+ var _a;
23
+ const h = (_a = b.height) !== null && _a !== void 0 ? _a : 50; // fallback; if you want, improve using aspect ratio later
24
+ return measureImageLike(b.marginTop, b.marginBottom, h);
25
+ };
26
+ const measureQr = (b) => {
27
+ var _a;
28
+ const size = (_a = b.size) !== null && _a !== void 0 ? _a : 80;
29
+ return measureImageLike(b.marginTop, b.marginBottom, size);
30
+ };
31
+ const measureBarcode = (b) => {
32
+ var _a;
33
+ const h = (_a = b.height) !== null && _a !== void 0 ? _a : 40;
34
+ return measureImageLike(b.marginTop, b.marginBottom, h);
35
+ };
36
+ const measureLine = (b) => {
37
+ var _a, _b, _c;
38
+ const lw = (_a = b.lineWidth) !== null && _a !== void 0 ? _a : 1;
39
+ const mt = (_b = b.marginTop) !== null && _b !== void 0 ? _b : 0;
40
+ const mb = (_c = b.marginBottom) !== null && _c !== void 0 ? _c : 0;
41
+ return mt + lw + mb;
42
+ };
43
+ const measureTable = (b, env) => {
44
+ var _a, _b, _c, _d;
45
+ const mt = (_a = b.marginTop) !== null && _a !== void 0 ? _a : 0;
46
+ const mb = (_b = b.marginBottom) !== null && _b !== void 0 ? _b : 0;
47
+ const ml = (_c = b.marginLeft) !== null && _c !== void 0 ? _c : 0;
48
+ const mr = (_d = b.marginRight) !== null && _d !== void 0 ? _d : 0;
49
+ const innerWidth = Math.max(env.innerWidth - ml - mr, 1);
50
+ const fakeEnv = {
51
+ marginLeft: 0,
52
+ innerWidth,
53
+ allowPageBreak: false,
54
+ };
55
+ const h = (0, table_1.measureTableHeight)(doc, b, fakeEnv, styles, computeColumnPixelWidths);
56
+ return mt + h + mb;
57
+ };
58
+ const measureColumns = (b, env) => {
59
+ var _a, _b, _c, _d, _e, _f, _g, _h;
60
+ const mt = (_a = b.marginTop) !== null && _a !== void 0 ? _a : 0;
61
+ const mb = (_b = b.marginBottom) !== null && _b !== void 0 ? _b : 0;
62
+ const blockLeft = (_c = b.marginLeft) !== null && _c !== void 0 ? _c : 0;
63
+ const blockRight = (_d = b.marginRight) !== null && _d !== void 0 ? _d : 0;
64
+ const totalWidth = Math.max(env.innerWidth - blockLeft - blockRight, 1);
65
+ const cols = (_e = b.columns) !== null && _e !== void 0 ? _e : [];
66
+ const n = cols.length;
67
+ if (!n)
68
+ return mt + mb;
69
+ let colWidths;
70
+ const mode = (_f = b.mode) !== null && _f !== void 0 ? _f : "fixedGap";
71
+ let gap;
72
+ if (mode === "spaceBetween" && n > 1) {
73
+ if (b.widths && b.widths.length === n) {
74
+ colWidths = computeColumnPixelWidths(b.widths, totalWidth);
75
+ }
76
+ else {
77
+ colWidths = Array(n).fill(totalWidth / n);
78
+ }
79
+ const totalColsWidth = colWidths.reduce((a, x) => a + x, 0);
80
+ const remaining = Math.max(totalWidth - totalColsWidth, 0);
81
+ gap = remaining / (n - 1);
82
+ void gap; // gap doesn't affect height
83
+ }
84
+ else {
85
+ gap = (_g = b.gap) !== null && _g !== void 0 ? _g : 20;
86
+ const totalGapsWidth = gap * (n - 1);
87
+ const widthForCols = Math.max(totalWidth - totalGapsWidth, 1);
88
+ if (b.widths && b.widths.length === n) {
89
+ colWidths = computeColumnPixelWidths(b.widths, widthForCols);
90
+ }
91
+ else {
92
+ colWidths = Array(n).fill(widthForCols / n);
93
+ }
94
+ }
95
+ const heights = [];
96
+ for (let i = 0; i < n; i++) {
97
+ const colBlocks = (_h = cols[i]) !== null && _h !== void 0 ? _h : [];
98
+ const colEnv = {
99
+ marginLeft: 0,
100
+ innerWidth: colWidths[i],
101
+ allowPageBreak: false,
102
+ };
103
+ let colH = 0;
104
+ for (const child of colBlocks) {
105
+ if (!child || child.visible === false)
106
+ continue;
107
+ colH += measure(child, colEnv);
108
+ }
109
+ heights.push(colH);
110
+ }
111
+ const maxH = Math.max(...heights, 0);
112
+ return mt + maxH + mb;
113
+ };
114
+ const measureKeyValueGrid = (b, env) => {
115
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
116
+ const mt = (_a = b.marginTop) !== null && _a !== void 0 ? _a : 0;
117
+ const mb = (_b = b.marginBottom) !== null && _b !== void 0 ? _b : 0;
118
+ const rowGap = (_c = b.rowGap) !== null && _c !== void 0 ? _c : 4;
119
+ const orientation = (_d = b.orientation) !== null && _d !== void 0 ? _d : "horizontal";
120
+ const cols = (_e = b.columns) !== null && _e !== void 0 ? _e : [];
121
+ const colCount = cols.length;
122
+ if (!colCount)
123
+ return mt + mb;
124
+ const blockLeft = (_f = b.marginLeft) !== null && _f !== void 0 ? _f : 0;
125
+ const blockRight = (_g = b.marginRight) !== null && _g !== void 0 ? _g : 0;
126
+ const totalWidth = Math.max(env.innerWidth - blockLeft - blockRight, 1);
127
+ let colWidths;
128
+ if (b.columnWidths && b.columnWidths.length === colCount) {
129
+ const safe = b.columnWidths.map((w) => (w === undefined ? "*" : w));
130
+ colWidths = computeColumnPixelWidths(safe, totalWidth);
131
+ }
132
+ else {
133
+ colWidths = Array(colCount).fill(totalWidth / colCount);
134
+ }
135
+ const separatorText = b.separator;
136
+ const sepBoxWidth = separatorText ? 10 : 0;
137
+ const baseKeyWidthRatio = 0.35;
138
+ const measureKVText = (tb, width) => {
139
+ var _a, _b;
140
+ const r = (0, styles_1.resolveTextBlock)(styles, tb);
141
+ const fontName = (0, styles_1.getFontNameForText)(r);
142
+ doc.font(fontName);
143
+ doc.fontSize((_a = r.fontSize) !== null && _a !== void 0 ? _a : 10);
144
+ return doc.heightOfString((_b = r.text) !== null && _b !== void 0 ? _b : "", { width });
145
+ };
146
+ let totalHeight = mt;
147
+ if (orientation === "vertical") {
148
+ const keyValueGap = (_h = b.verticalKeyValueGap) !== null && _h !== void 0 ? _h : 2;
149
+ let maxColHeight = 0;
150
+ for (let colIndex = 0; colIndex < colCount; colIndex++) {
151
+ const col = (_j = cols[colIndex]) !== null && _j !== void 0 ? _j : [];
152
+ const colWidth = colWidths[colIndex];
153
+ let colHeight = 0;
154
+ for (const item of col) {
155
+ const keyH = measureKVText({ type: "text", text: (_k = item.key) !== null && _k !== void 0 ? _k : "" }, colWidth);
156
+ const valH = measureKVText({ type: "text", text: (_l = item.value) !== null && _l !== void 0 ? _l : "" }, colWidth);
157
+ colHeight += keyH + keyValueGap + valH + rowGap;
158
+ }
159
+ if (colHeight > maxColHeight)
160
+ maxColHeight = colHeight;
161
+ }
162
+ totalHeight += maxColHeight;
163
+ }
164
+ else {
165
+ const maxRows = Math.max(...cols.map((c) => (c ? c.length : 0)), 0);
166
+ for (let rowIndex = 0; rowIndex < maxRows; rowIndex++) {
167
+ let rowHeight = 0;
168
+ for (let colIndex = 0; colIndex < colCount; colIndex++) {
169
+ const item = (_m = cols[colIndex]) === null || _m === void 0 ? void 0 : _m[rowIndex];
170
+ if (!item)
171
+ continue;
172
+ const colWidth = colWidths[colIndex];
173
+ const keyWidthPx = b.keyWidth === "*"
174
+ ? Math.max(colWidth * baseKeyWidthRatio, 20)
175
+ : (_o = b.keyWidth) !== null && _o !== void 0 ? _o : 80;
176
+ const keyH = measureKVText({ type: "text", text: (_p = item.key) !== null && _p !== void 0 ? _p : "" }, keyWidthPx);
177
+ const valueXInsideCol = keyWidthPx + (separatorText ? sepBoxWidth + 4 : 4);
178
+ const valueWidth = Math.max(colWidth - valueXInsideCol, 1);
179
+ const valH = measureKVText({ type: "text", text: (_q = item.value) !== null && _q !== void 0 ? _q : "" }, valueWidth);
180
+ rowHeight = Math.max(rowHeight, Math.max(keyH, valH));
181
+ }
182
+ if (rowHeight > 0)
183
+ totalHeight += rowHeight + rowGap;
184
+ }
185
+ }
186
+ totalHeight += mb;
187
+ return totalHeight;
188
+ };
189
+ const measure = (block, env) => {
190
+ var _a;
191
+ if (!block || block.visible === false)
192
+ return 0;
193
+ switch (block.type) {
194
+ case "text":
195
+ return measureText(block, env);
196
+ case "image":
197
+ return measureImage(block);
198
+ case "qr":
199
+ return measureQr(block);
200
+ case "barcode":
201
+ return measureBarcode(block);
202
+ case "line":
203
+ return measureLine(block);
204
+ case "table":
205
+ return measureTable(block, env);
206
+ case "columns":
207
+ return measureColumns(block, env);
208
+ case "keyValueGrid":
209
+ return measureKeyValueGrid(block, env);
210
+ case "signature":
211
+ return (_a = block.height) !== null && _a !== void 0 ? _a : 0;
212
+ case "pageBreak":
213
+ return 0;
214
+ default:
215
+ return 0;
216
+ }
217
+ };
218
+ return (block, env) => measure(block, env);
219
+ }
220
+ //# sourceMappingURL=measure-block-height.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"measure-block-height.js","sourceRoot":"","sources":["../../../src/renderer-engine/utils/measure-block-height.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { PageBackgroundDef } from "../../types";
2
+ /**
3
+ * Draws a full-page background image with optional opacity.
4
+ */
5
+ export declare function drawPageBackground(doc: PDFKit.PDFDocument, pageBackground?: PageBackgroundDef): void;
6
+ //# sourceMappingURL=page-background.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-background.d.ts","sourceRoot":"","sources":["../../../src/renderer-engine/utils/page-background.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,CAAC,WAAW,EACvB,cAAc,CAAC,EAAE,iBAAiB,GACjC,IAAI,CAuBN"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.drawPageBackground = drawPageBackground;
4
+ /**
5
+ * Draws a full-page background image with optional opacity.
6
+ */
7
+ function drawPageBackground(doc, pageBackground) {
8
+ if (!pageBackground)
9
+ return;
10
+ const { src, opacity = 1 } = pageBackground;
11
+ const pageWidth = doc.page.width;
12
+ const pageHeight = doc.page.height;
13
+ doc.save();
14
+ try {
15
+ if (opacity < 1) {
16
+ doc.opacity(opacity);
17
+ }
18
+ doc.image(src, 0, 0, {
19
+ width: pageWidth,
20
+ height: pageHeight,
21
+ });
22
+ }
23
+ catch (e) {
24
+ // eslint-disable-next-line no-console
25
+ console.warn("Failed to load page background image:", e);
26
+ }
27
+ doc.restore();
28
+ doc.opacity(1);
29
+ }
30
+ //# sourceMappingURL=page-background.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-background.js","sourceRoot":"","sources":["../../../src/renderer-engine/utils/page-background.ts"],"names":[],"mappings":";;AAKA,gDA0BC;AA7BD;;GAEG;AACH,SAAgB,kBAAkB,CAChC,GAAuB,EACvB,cAAkC;IAElC,IAAI,CAAC,cAAc;QAAE,OAAO;IAE5B,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,CAAC,EAAE,GAAG,cAAc,CAAC;IAC5C,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;IACjC,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;IAEnC,GAAG,CAAC,IAAI,EAAE,CAAC;IACX,IAAI,CAAC;QACH,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAChB,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;QAED,GAAG,CAAC,KAAK,CAAC,GAAuC,EAAE,CAAC,EAAE,CAAC,EAAE;YACvD,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,UAAU;SACnB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,sCAAsC;QACtC,OAAO,CAAC,IAAI,CAAC,uCAAuC,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,GAAG,CAAC,OAAO,EAAE,CAAC;IACd,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { PageContext } from "../../types";
2
+ export declare function getBottomLimitForContent(doc: PDFKit.PDFDocument, ctx: PageContext): number;
3
+ //# sourceMappingURL=page-flow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-flow.d.ts","sourceRoot":"","sources":["../../../src/renderer-engine/utils/page-flow.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,MAAM,CAAC,WAAW,EACvB,GAAG,EAAE,WAAW,GACf,MAAM,CAGR"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getBottomLimitForContent = getBottomLimitForContent;
4
+ function getBottomLimitForContent(doc, ctx) {
5
+ var _a;
6
+ const pageBottomForContent = doc.page.height - doc.page.margins.bottom;
7
+ return (_a = ctx.signatureTopY) !== null && _a !== void 0 ? _a : pageBottomForContent;
8
+ }
9
+ //# sourceMappingURL=page-flow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-flow.js","sourceRoot":"","sources":["../../../src/renderer-engine/utils/page-flow.ts"],"names":[],"mappings":";;AAGA,4DAMC;AAND,SAAgB,wBAAwB,CACtC,GAAuB,EACvB,GAAgB;;IAEhB,MAAM,oBAAoB,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IACvE,OAAO,MAAA,GAAG,CAAC,aAAa,mCAAI,oBAAoB,CAAC;AACnD,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { PageContext } from "../../types";
2
+ export type BottomLimitForContentFn = () => number;
3
+ /**
4
+ * Creates a function that returns the current "bottom limit"
5
+ * for content on a page (taking signature reservation into account).
6
+ */
7
+ export declare function createBottomLimitForContent(doc: PDFKit.PDFDocument, ctx: PageContext): BottomLimitForContentFn;
8
+ //# sourceMappingURL=page-limit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-limit.d.ts","sourceRoot":"","sources":["../../../src/renderer-engine/utils/page-limit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,MAAM,uBAAuB,GAAG,MAAM,MAAM,CAAC;AAEnD;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,MAAM,CAAC,WAAW,EACvB,GAAG,EAAE,WAAW,GACf,uBAAuB,CAKzB"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createBottomLimitForContent = createBottomLimitForContent;
4
+ /**
5
+ * Creates a function that returns the current "bottom limit"
6
+ * for content on a page (taking signature reservation into account).
7
+ */
8
+ function createBottomLimitForContent(doc, ctx) {
9
+ return () => {
10
+ var _a;
11
+ const pageBottomForContent = doc.page.height - doc.page.margins.bottom;
12
+ return (_a = ctx.signatureTopY) !== null && _a !== void 0 ? _a : pageBottomForContent;
13
+ };
14
+ }
15
+ //# sourceMappingURL=page-limit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-limit.js","sourceRoot":"","sources":["../../../src/renderer-engine/utils/page-limit.ts"],"names":[],"mappings":";;AASA,kEAQC;AAZD;;;GAGG;AACH,SAAgB,2BAA2B,CACzC,GAAuB,EACvB,GAAgB;IAEhB,OAAO,GAAG,EAAE;;QACV,MAAM,oBAAoB,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACvE,OAAO,MAAA,GAAG,CAAC,aAAa,mCAAI,oBAAoB,CAAC;IACnD,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { BarcodeType, Block } from "../../types";
2
+ /** Generate QR buffer (used when only value is provided). */
3
+ export declare function generateQrBuffer(value: string, size: number, version?: number, errorCorrectionLevel?: "L" | "M" | "Q" | "H"): Promise<Buffer>;
4
+ export declare function mapBarcodeTypeToBcid(bcType?: BarcodeType | null): string;
5
+ export declare function generateBarcodeBuffer(value: string, options?: {
6
+ bcType?: BarcodeType;
7
+ scale?: number;
8
+ barHeight?: number;
9
+ includetext?: boolean;
10
+ textalign?: "left" | "center" | "right";
11
+ }): Promise<Buffer>;
12
+ /**
13
+ * Walks blocks (and nested columns/signature.blocks) and populates `qr.src` / `barcode.src`
14
+ * if only `value` is provided.
15
+ */
16
+ export declare function materializeQrAndBarcodesInBlocks(blocks: Block[]): Promise<Block[]>;
17
+ //# sourceMappingURL=qr-bar-code.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qr-bar-code.d.ts","sourceRoot":"","sources":["../../../src/renderer-engine/utils/qr-bar-code.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,WAAW,EACX,KAAK,EAIN,MAAM,aAAa,CAAC;AAErB,6DAA6D;AAC7D,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,EAChB,oBAAoB,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAC3C,OAAO,CAAC,MAAM,CAAC,CAoBjB;AAED,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,GAAG,MAAM,CAcxE;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;CACpC,GACL,OAAO,CAAC,MAAM,CAAC,CA8CjB;AAED;;;GAGG;AACH,wBAAsB,gCAAgC,CACpD,MAAM,EAAE,KAAK,EAAE,GACd,OAAO,CAAC,KAAK,EAAE,CAAC,CA6DlB"}
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.generateQrBuffer = generateQrBuffer;
7
+ exports.mapBarcodeTypeToBcid = mapBarcodeTypeToBcid;
8
+ exports.generateBarcodeBuffer = generateBarcodeBuffer;
9
+ exports.materializeQrAndBarcodesInBlocks = materializeQrAndBarcodesInBlocks;
10
+ // src/renderer/qrBarcode.ts
11
+ const bwip_js_1 = __importDefault(require("bwip-js"));
12
+ const qrcode_1 = __importDefault(require("qrcode"));
13
+ /** Generate QR buffer (used when only value is provided). */
14
+ function generateQrBuffer(value, size, version, errorCorrectionLevel) {
15
+ const options = {
16
+ width: size,
17
+ margin: 0,
18
+ };
19
+ if (version && version >= 1 && version <= 40) {
20
+ options.version = version;
21
+ }
22
+ options.errorCorrectionLevel = errorCorrectionLevel !== null && errorCorrectionLevel !== void 0 ? errorCorrectionLevel : "M";
23
+ return new Promise((resolve, reject) => {
24
+ qrcode_1.default.toBuffer(value, options, (err, buffer) => {
25
+ if (err) {
26
+ return reject(err);
27
+ }
28
+ resolve(buffer);
29
+ });
30
+ });
31
+ }
32
+ function mapBarcodeTypeToBcid(bcType) {
33
+ switch (bcType) {
34
+ case "EAN13":
35
+ return "ean13";
36
+ case "CODE39":
37
+ return "code39";
38
+ case "ITF":
39
+ return "interleaved2of5";
40
+ case "CODE93":
41
+ return "code93";
42
+ case "CODE128":
43
+ default:
44
+ return "code128";
45
+ }
46
+ }
47
+ function generateBarcodeBuffer(value, options = {}) {
48
+ const { bcType, scale = 3, barHeight = 10, includetext = false, textalign = "center", } = options;
49
+ const bcid = mapBarcodeTypeToBcid(bcType);
50
+ return new Promise((resolve, reject) => {
51
+ let textValue = value;
52
+ if (bcType === "EAN13") {
53
+ const digitsOnly = textValue.replace(/\D/g, "");
54
+ if (digitsOnly.length === 13) {
55
+ textValue = digitsOnly.slice(0, 12);
56
+ }
57
+ else if (digitsOnly.length === 12) {
58
+ textValue = textValue;
59
+ }
60
+ else {
61
+ return reject(new Error(`EAN13 barcode value must have 12 or 13 digits, got "${value}"`));
62
+ }
63
+ }
64
+ const bwipOptions = {
65
+ bcid,
66
+ text: textValue,
67
+ scale,
68
+ height: barHeight,
69
+ includetext,
70
+ };
71
+ bwipOptions.textxalign = textalign;
72
+ bwip_js_1.default.toBuffer(bwipOptions, (err, png) => {
73
+ if (err) {
74
+ return reject(err);
75
+ }
76
+ resolve(png);
77
+ });
78
+ });
79
+ }
80
+ /**
81
+ * Walks blocks (and nested columns/signature.blocks) and populates `qr.src` / `barcode.src`
82
+ * if only `value` is provided.
83
+ */
84
+ async function materializeQrAndBarcodesInBlocks(blocks) {
85
+ var _a;
86
+ const out = [];
87
+ for (const block of blocks) {
88
+ if (block.type === "columns") {
89
+ const colBlock = block;
90
+ const newCols = [];
91
+ for (const col of colBlock.columns) {
92
+ newCols.push(await materializeQrAndBarcodesInBlocks(col));
93
+ }
94
+ out.push({
95
+ ...colBlock,
96
+ columns: newCols,
97
+ });
98
+ }
99
+ else if (block.type === "signature") {
100
+ const sig = block;
101
+ if (sig.blocks && sig.blocks.length) {
102
+ const newInner = await materializeQrAndBarcodesInBlocks(sig.blocks);
103
+ out.push({
104
+ ...sig,
105
+ blocks: newInner,
106
+ });
107
+ }
108
+ else {
109
+ out.push(block);
110
+ }
111
+ }
112
+ else if (block.type === "qr") {
113
+ const qb = { ...block };
114
+ if (!qb.src && qb.value) {
115
+ const size = (_a = qb.size) !== null && _a !== void 0 ? _a : 80;
116
+ const buf = await generateQrBuffer(qb.value, size, qb.qrVersion, qb.errorCorrectionLevel);
117
+ qb.src = buf;
118
+ }
119
+ out.push(qb);
120
+ }
121
+ else if (block.type === "barcode") {
122
+ const bb = { ...block };
123
+ if (!bb.src && bb.value) {
124
+ const buf = await generateBarcodeBuffer(bb.value, {
125
+ bcType: bb.bcType,
126
+ scale: bb.scale,
127
+ barHeight: bb.barHeight,
128
+ includetext: bb.includetext,
129
+ textalign: bb.textalign,
130
+ });
131
+ bb.src = buf;
132
+ }
133
+ out.push(bb);
134
+ }
135
+ else {
136
+ out.push(block);
137
+ }
138
+ }
139
+ return out;
140
+ }
141
+ //# sourceMappingURL=qr-bar-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qr-bar-code.js","sourceRoot":"","sources":["../../../src/renderer-engine/utils/qr-bar-code.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { Block, PageContext, RenderEnv, SignatureBlock, StyleDef } from "../../types";
2
+ export declare function drawSignatureBlock(doc: PDFKit.PDFDocument, block: SignatureBlock, y: number, env: RenderEnv, renderBlockArray: (blocks: Block[], startY: number, env: RenderEnv) => number): void;
3
+ /** Dependencies for the signature reservation logic */
4
+ interface SignatureProcessorDeps {
5
+ doc: PDFKit.PDFDocument;
6
+ ctx: PageContext;
7
+ styles: Record<string, StyleDef>;
8
+ /** Called to finish current page and optionally start a new one */
9
+ finishPage: (addNewPage: boolean) => void;
10
+ /** Returns the base RenderEnv for content for the current page */
11
+ contentEnvFn: (doc: PDFKit.PDFDocument) => RenderEnv;
12
+ }
13
+ /**
14
+ * Creates the `processSignatureBlock` function used in the main renderer.
15
+ * It measures inner content, reserves space at the bottom of the page,
16
+ * and updates `ctx.signature*` fields.
17
+ */
18
+ export declare function createProcessSignatureBlock({ doc, ctx, styles, finishPage, contentEnvFn, }: SignatureProcessorDeps): (block: SignatureBlock) => void;
19
+ export {};
20
+ //# sourceMappingURL=signature.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../../../src/renderer-engine/utils/signature.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EAIL,WAAW,EAEX,SAAS,EACT,cAAc,EACd,QAAQ,EAGT,MAAM,aAAa,CAAC;AAIrB,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,CAAC,WAAW,EACvB,KAAK,EAAE,cAAc,EACrB,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,SAAS,EACd,gBAAgB,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,KAAK,MAAM,QA2C9E;AAED,uDAAuD;AACvD,UAAU,sBAAsB;IAC9B,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC;IACxB,GAAG,EAAE,WAAW,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjC,mEAAmE;IACnE,UAAU,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,kEAAkE;IAClE,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC;CACtD;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,EAC1C,GAAG,EACH,GAAG,EACH,MAAM,EACN,UAAU,EACV,YAAY,GACb,EAAE,sBAAsB,IACf,OAAO,cAAc,UA8L9B"}