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,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createBlockRenderer = createBlockRenderer;
4
+ const blocks_1 = require("../blocks");
5
+ const utils_1 = require("../utils");
6
+ /**
7
+ * Factory that returns renderBlock + renderBlockArray wired with all dependencies.
8
+ */
9
+ function createBlockRenderer(deps) {
10
+ const { doc, ctx, styles, computeColumnPixelWidths, finishPage, processSignatureBlock, } = deps;
11
+ const bottomLimitForContent = (0, utils_1.createBottomLimitForContent)(doc, ctx);
12
+ const ensureSpaceFor = (0, utils_1.createEnsureSpaceFor)(ctx, bottomLimitForContent, finishPage);
13
+ const measureBlockHeight = (0, utils_1.createMeasureBlockHeight)({
14
+ doc,
15
+ styles,
16
+ computeColumnPixelWidths,
17
+ });
18
+ const renderBlock = (block, y, env) => {
19
+ if (block.visible === false) {
20
+ return y !== null && y !== void 0 ? y : ctx.currentY;
21
+ }
22
+ switch (block.type) {
23
+ case "text":
24
+ return (0, blocks_1.processTextBlock)(doc, ctx, styles, block, y, env, ensureSpaceFor);
25
+ case "image":
26
+ return (0, blocks_1.processImageBlock)(doc, ctx, block, y, env, ensureSpaceFor);
27
+ case "qr": {
28
+ const qb = block;
29
+ const imageLike = {
30
+ type: "image",
31
+ src: qb.src,
32
+ width: qb.size,
33
+ height: qb.size,
34
+ align: qb.align,
35
+ marginTop: qb.marginTop,
36
+ marginBottom: qb.marginBottom,
37
+ marginLeft: qb.marginLeft,
38
+ marginRight: qb.marginRight,
39
+ };
40
+ return (0, blocks_1.processImageBlock)(doc, ctx, imageLike, y, env, ensureSpaceFor);
41
+ }
42
+ case "barcode":
43
+ return (0, blocks_1.processBarcodeBlock)(doc, ctx, block, y, env, ensureSpaceFor);
44
+ case "line":
45
+ return (0, blocks_1.processLineBlock)(doc, ctx, block, y, env, ensureSpaceFor);
46
+ case "table":
47
+ return (0, blocks_1.processTableBlock)(doc, ctx, styles, block, y, env, computeColumnPixelWidths, bottomLimitForContent, finishPage);
48
+ case "columns":
49
+ return (0, blocks_1.processColumnsBlock)(ctx, block, y, env, computeColumnPixelWidths, renderBlock, ensureSpaceFor, measureBlockHeight);
50
+ case "keyValueGrid":
51
+ return (0, blocks_1.processKeyValueGridBlock)(doc, ctx, styles, block, y, env, computeColumnPixelWidths, ensureSpaceFor);
52
+ case "signature":
53
+ if (!env.allowPageBreak) {
54
+ throw new Error("Signature block is only allowed in main content flow.");
55
+ }
56
+ if (y !== null) {
57
+ throw new Error("Signature block must be part of main flow, not drawn at explicit Y.");
58
+ }
59
+ processSignatureBlock(block);
60
+ return ctx.currentY;
61
+ case "pageBreak":
62
+ if (!env.allowPageBreak || ctx.inFooter) {
63
+ return y !== null && y !== void 0 ? y : ctx.currentY;
64
+ }
65
+ finishPage(true);
66
+ return ctx.currentY;
67
+ default:
68
+ return ctx.currentY;
69
+ }
70
+ };
71
+ const renderBlockArray = (blocks, startY, env) => {
72
+ let localY = startY;
73
+ for (const block of blocks) {
74
+ if (block.visible === false) {
75
+ continue;
76
+ }
77
+ localY = renderBlock(block, localY, env);
78
+ }
79
+ return localY;
80
+ };
81
+ return {
82
+ renderBlock,
83
+ renderBlockArray,
84
+ };
85
+ }
86
+ //# sourceMappingURL=block-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-renderer.js","sourceRoot":"","sources":["../../../src/renderer-engine/utils/block-renderer.ts"],"names":[],"mappings":";;AA+CA,kDAqKC;AArMD,sCAQmB;AACnB,oCAKkB;AAelB;;GAEG;AACH,SAAgB,mBAAmB,CAAC,IAAuB;IACzD,MAAM,EACJ,GAAG,EACH,GAAG,EACH,MAAM,EACN,wBAAwB,EACxB,UAAU,EACV,qBAAqB,GACtB,GAAG,IAAI,CAAC;IAET,MAAM,qBAAqB,GAAG,IAAA,mCAA2B,EAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAEpE,MAAM,cAAc,GAAqB,IAAA,4BAAoB,EAC3D,GAAG,EACH,qBAAqB,EACrB,UAAU,CACX,CAAC;IAEF,MAAM,kBAAkB,GAAG,IAAA,gCAAwB,EAAC;QAClD,GAAG;QACH,MAAM;QACN,wBAAwB;KACzB,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,CAClB,KAAY,EACZ,CAAgB,EAChB,GAAc,EACN,EAAE;QACV,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YAC5B,OAAO,CAAC,aAAD,CAAC,cAAD,CAAC,GAAI,GAAG,CAAC,QAAQ,CAAC;QAC3B,CAAC;QACD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,MAAM;gBACT,OAAO,IAAA,yBAAgB,EACrB,GAAG,EACH,GAAG,EACH,MAAM,EACN,KAAkB,EAClB,CAAC,EACD,GAAG,EACH,cAAc,CACf,CAAC;YAEJ,KAAK,OAAO;gBACV,OAAO,IAAA,0BAAiB,EACtB,GAAG,EACH,GAAG,EACH,KAAmB,EACnB,CAAC,EACD,GAAG,EACH,cAAc,CACf,CAAC;YAEJ,KAAK,IAAI,CAAC,CAAC,CAAC;gBACV,MAAM,EAAE,GAAG,KAAoB,CAAC;gBAChC,MAAM,SAAS,GAAe;oBAC5B,IAAI,EAAE,OAAO;oBACb,GAAG,EAAE,EAAE,CAAC,GAAI;oBACZ,KAAK,EAAE,EAAE,CAAC,IAAI;oBACd,MAAM,EAAE,EAAE,CAAC,IAAI;oBACf,KAAK,EAAE,EAAE,CAAC,KAAK;oBACf,SAAS,EAAE,EAAE,CAAC,SAAS;oBACvB,YAAY,EAAE,EAAE,CAAC,YAAY;oBAC7B,UAAU,EAAE,EAAE,CAAC,UAAU;oBACzB,WAAW,EAAE,EAAE,CAAC,WAAW;iBAC5B,CAAC;gBACF,OAAO,IAAA,0BAAiB,EAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC;YACxE,CAAC;YAED,KAAK,SAAS;gBACZ,OAAO,IAAA,4BAAmB,EAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC;YAEtE,KAAK,MAAM;gBACT,OAAO,IAAA,yBAAgB,EACrB,GAAG,EACH,GAAG,EACH,KAAkB,EAClB,CAAC,EACD,GAAG,EACH,cAAc,CACf,CAAC;YAEJ,KAAK,OAAO;gBACV,OAAO,IAAA,0BAAiB,EACtB,GAAG,EACH,GAAG,EACH,MAAM,EACN,KAAmB,EACnB,CAAC,EACD,GAAG,EACH,wBAAwB,EACxB,qBAAqB,EACrB,UAAU,CACX,CAAC;YAEJ,KAAK,SAAS;gBACZ,OAAO,IAAA,4BAAmB,EACxB,GAAG,EACH,KAAqB,EACrB,CAAC,EACD,GAAG,EACH,wBAAwB,EACxB,WAAW,EACX,cAAc,EACd,kBAAkB,CACnB,CAAC;YAEJ,KAAK,cAAc;gBACjB,OAAO,IAAA,iCAAwB,EAC7B,GAAG,EACH,GAAG,EACH,MAAM,EACN,KAA0B,EAC1B,CAAC,EACD,GAAG,EACH,wBAAwB,EACxB,cAAc,CACf,CAAC;YAEJ,KAAK,WAAW;gBACd,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;oBACxB,MAAM,IAAI,KAAK,CACb,uDAAuD,CACxD,CAAC;gBACJ,CAAC;gBACD,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;oBACf,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE,CAAC;gBACJ,CAAC;gBACD,qBAAqB,CAAC,KAAuB,CAAC,CAAC;gBAC/C,OAAO,GAAG,CAAC,QAAQ,CAAC;YAEtB,KAAK,WAAW;gBACd,IAAI,CAAC,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;oBACxC,OAAO,CAAC,aAAD,CAAC,cAAD,CAAC,GAAI,GAAG,CAAC,QAAQ,CAAC;gBAC3B,CAAC;gBACD,UAAU,CAAC,IAAI,CAAC,CAAC;gBACjB,OAAO,GAAG,CAAC,QAAQ,CAAC;YAEtB;gBACE,OAAO,GAAG,CAAC,QAAQ,CAAC;QACxB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,CACvB,MAAe,EACf,MAAc,EACd,GAAc,EACN,EAAE;QACV,IAAI,MAAM,GAAG,MAAM,CAAC;QACpB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;gBAC5B,SAAS;YACX,CAAC;YACD,MAAM,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,OAAO;QACL,WAAW;QACX,gBAAgB;KACjB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { PageContext } from "../../types";
2
+ export declare function createInitialContext(doc: PDFKit.PDFDocument): PageContext;
3
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/renderer-engine/utils/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,GAAG,WAAW,CAWzE"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createInitialContext = createInitialContext;
4
+ function createInitialContext(doc) {
5
+ return {
6
+ pageNumber: 1,
7
+ currentY: doc.page.margins.top,
8
+ signatureBlock: null,
9
+ signatureTopY: null,
10
+ signatureHeight: 0,
11
+ signaturePlaced: false,
12
+ afterSignature: false,
13
+ inFooter: false,
14
+ };
15
+ }
16
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/renderer-engine/utils/context.ts"],"names":[],"mappings":";;AAEA,oDAWC;AAXD,SAAgB,oBAAoB,CAAC,GAAuB;IAC1D,OAAO;QACL,UAAU,EAAE,CAAC;QACb,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG;QAC9B,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,IAAI;QACnB,eAAe,EAAE,CAAC;QAClB,eAAe,EAAE,KAAK;QACtB,cAAc,EAAE,KAAK;QACrB,QAAQ,EAAE,KAAK;KAChB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { PageContext, RenderEnv } from "../../types";
2
+ import { BottomLimitForContentFn } from "../utils";
3
+ export type EnsureSpaceForFn = (heightNeeded: number, env: RenderEnv) => void;
4
+ /**
5
+ * Creates the `ensureSpaceFor` helper:
6
+ * - if current block doesn't fit in remaining space, calls `finishPage(true)`
7
+ */
8
+ export declare function createEnsureSpaceFor(ctx: PageContext, bottomLimitForContent: BottomLimitForContentFn, finishPage: (addNewPage: boolean) => void): EnsureSpaceForFn;
9
+ //# sourceMappingURL=ensure-space.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensure-space.d.ts","sourceRoot":"","sources":["../../../src/renderer-engine/utils/ensure-space.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAEnD,MAAM,MAAM,gBAAgB,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,KAAK,IAAI,CAAC;AAE9E;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,WAAW,EAChB,qBAAqB,EAAE,uBAAuB,EAC9C,UAAU,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,GACxC,gBAAgB,CASlB"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createEnsureSpaceFor = createEnsureSpaceFor;
4
+ /**
5
+ * Creates the `ensureSpaceFor` helper:
6
+ * - if current block doesn't fit in remaining space, calls `finishPage(true)`
7
+ */
8
+ function createEnsureSpaceFor(ctx, bottomLimitForContent, finishPage) {
9
+ return (heightNeeded, env) => {
10
+ if (!env.allowPageBreak || ctx.inFooter)
11
+ return;
12
+ const bottomLimit = bottomLimitForContent();
13
+ if (ctx.currentY + heightNeeded > bottomLimit) {
14
+ finishPage(true);
15
+ }
16
+ };
17
+ }
18
+ //# sourceMappingURL=ensure-space.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensure-space.js","sourceRoot":"","sources":["../../../src/renderer-engine/utils/ensure-space.ts"],"names":[],"mappings":";;AASA,oDAaC;AAjBD;;;GAGG;AACH,SAAgB,oBAAoB,CAClC,GAAgB,EAChB,qBAA8C,EAC9C,UAAyC;IAEzC,OAAO,CAAC,YAAoB,EAAE,GAAc,EAAE,EAAE;QAC9C,IAAI,CAAC,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC,QAAQ;YAAE,OAAO;QAEhD,MAAM,WAAW,GAAG,qBAAqB,EAAE,CAAC;QAC5C,IAAI,GAAG,CAAC,QAAQ,GAAG,YAAY,GAAG,WAAW,EAAE,CAAC;YAC9C,UAAU,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { RenderEnv } from "../../types";
2
+ export declare const contentEnv: (doc: PDFKit.PDFDocument) => RenderEnv;
3
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../src/renderer-engine/utils/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,CAAC,WAAW,KAAG,SAInD,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.contentEnv = void 0;
4
+ const contentEnv = (doc) => ({
5
+ marginLeft: doc.page.margins.left,
6
+ innerWidth: doc.page.width - doc.page.margins.left - doc.page.margins.right,
7
+ allowPageBreak: true,
8
+ });
9
+ exports.contentEnv = contentEnv;
10
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../../src/renderer-engine/utils/env.ts"],"names":[],"mappings":";;;AAEO,MAAM,UAAU,GAAG,CAAC,GAAuB,EAAa,EAAE,CAAC,CAAC;IACjE,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI;IACjC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK;IAC3E,cAAc,EAAE,IAAI;CACrB,CAAC,CAAC;AAJU,QAAA,UAAU,cAIpB"}
@@ -0,0 +1,13 @@
1
+ import { Block, CustomDocDefinition, PageContext, RenderEnv } from "../../types";
2
+ export type RenderBlockArrayFn = (blocks: Block[], startY: number, env: RenderEnv) => number;
3
+ export interface FinishPageParams {
4
+ addNewPage: boolean;
5
+ doc: PDFKit.PDFDocument;
6
+ def: CustomDocDefinition;
7
+ ctx: PageContext;
8
+ footerBandHeight: number;
9
+ renderBlockArray: RenderBlockArrayFn;
10
+ startNewPageLayout: () => void;
11
+ }
12
+ export declare function finishPage({ addNewPage, doc, def, ctx, footerBandHeight, renderBlockArray, startNewPageLayout, }: FinishPageParams): void;
13
+ //# sourceMappingURL=finish-page.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"finish-page.d.ts","sourceRoot":"","sources":["../../../src/renderer-engine/utils/finish-page.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,mBAAmB,EACnB,WAAW,EACX,SAAS,EACV,MAAM,aAAa,CAAC;AASrB,MAAM,MAAM,kBAAkB,GAAG,CAC/B,MAAM,EAAE,KAAK,EAAE,EACf,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,SAAS,KACX,MAAM,CAAC;AAEZ,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,OAAO,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC;IACxB,GAAG,EAAE,mBAAmB,CAAC;IACzB,GAAG,EAAE,WAAW,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,kBAAkB,CAAC;IACrC,kBAAkB,EAAE,MAAM,IAAI,CAAC;CAChC;AAED,wBAAgB,UAAU,CAAC,EACzB,UAAU,EACV,GAAG,EACH,GAAG,EACH,GAAG,EACH,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,GACnB,EAAE,gBAAgB,QA8BlB"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.finishPage = finishPage;
4
+ const utils_1 = require("../utils");
5
+ function finishPage({ addNewPage, doc, def, ctx, footerBandHeight, renderBlockArray, startNewPageLayout, }) {
6
+ var _a;
7
+ const mode = (_a = def.watermark) === null || _a === void 0 ? void 0 : _a.mode;
8
+ // Watermark modes that depend on knowing "is this the last page?"
9
+ if (def.watermark && (0, utils_1.watermarkUsesLast)(mode)) {
10
+ const isLast = !addNewPage;
11
+ (0, utils_1.drawWatermarkForPage)(doc, def.watermark, ctx.pageNumber, isLast);
12
+ }
13
+ // Draw reserved signature band
14
+ if (ctx.signatureBlock && ctx.signatureTopY !== null) {
15
+ const env = (0, utils_1.contentEnv)(doc);
16
+ (0, utils_1.drawSignatureBlock)(doc, ctx.signatureBlock, ctx.signatureTopY, env, renderBlockArray);
17
+ }
18
+ // Footer
19
+ (0, utils_1.drawFooter)(doc, def, ctx, footerBandHeight, renderBlockArray);
20
+ // Next page
21
+ if (addNewPage) {
22
+ doc.addPage();
23
+ ctx.pageNumber += 1;
24
+ startNewPageLayout();
25
+ }
26
+ }
27
+ //# sourceMappingURL=finish-page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"finish-page.js","sourceRoot":"","sources":["../../../src/renderer-engine/utils/finish-page.ts"],"names":[],"mappings":";;AA8BA,gCAsCC;AA9DD,oCAMkB;AAkBlB,SAAgB,UAAU,CAAC,EACzB,UAAU,EACV,GAAG,EACH,GAAG,EACH,GAAG,EACH,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,GACD;;IACjB,MAAM,IAAI,GAAG,MAAA,GAAG,CAAC,SAAS,0CAAE,IAAI,CAAC;IAEjC,kEAAkE;IAClE,IAAI,GAAG,CAAC,SAAS,IAAI,IAAA,yBAAiB,EAAC,IAAI,CAAC,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,CAAC,UAAU,CAAC;QAC3B,IAAA,4BAAoB,EAAC,GAAG,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACnE,CAAC;IAED,+BAA+B;IAC/B,IAAI,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;QACrD,MAAM,GAAG,GAAG,IAAA,kBAAU,EAAC,GAAG,CAAC,CAAC;QAC5B,IAAA,0BAAkB,EAChB,GAAG,EACH,GAAG,CAAC,cAAc,EAClB,GAAG,CAAC,aAAa,EACjB,GAAG,EACH,gBAAgB,CACjB,CAAC;IACJ,CAAC;IAED,SAAS;IACT,IAAA,kBAAU,EAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;IAE9D,YAAY;IACZ,IAAI,UAAU,EAAE,CAAC;QACf,GAAG,CAAC,OAAO,EAAE,CAAC;QACd,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC;QACpB,kBAAkB,EAAE,CAAC;IACvB,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Block, CustomDocDefinition, PageContext, RenderEnv } from "../../types";
2
+ export declare function drawFooter(doc: PDFKit.PDFDocument, def: CustomDocDefinition, ctx: PageContext, footerBandHeight: number, renderBlockArray: (blocks: Block[], startY: number, env: RenderEnv) => number): void;
3
+ //# sourceMappingURL=footer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"footer.d.ts","sourceRoot":"","sources":["../../../src/renderer-engine/utils/footer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,mBAAmB,EAGnB,WAAW,EACX,SAAS,EACV,MAAM,aAAa,CAAC;AA8CrB,wBAAgB,UAAU,CACxB,GAAG,EAAE,MAAM,CAAC,WAAW,EACvB,GAAG,EAAE,mBAAmB,EACxB,GAAG,EAAE,WAAW,EAChB,gBAAgB,EAAE,MAAM,EACxB,gBAAgB,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,KAAK,MAAM,QAyD9E"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.drawFooter = drawFooter;
4
+ function normalizeFooter(input, ctx, doc) {
5
+ if (!input)
6
+ return null;
7
+ if (typeof input === "function") {
8
+ const result = input(ctx.pageNumber, {
9
+ width: doc.page.width,
10
+ height: doc.page.height,
11
+ });
12
+ if (!result)
13
+ return null;
14
+ return normalizeFooter(result, ctx, doc);
15
+ }
16
+ if (input.blocks &&
17
+ Array.isArray(input.blocks)) {
18
+ const f = input;
19
+ return {
20
+ visible: f.visible,
21
+ blocks: f.blocks,
22
+ marginTop: f.marginTop,
23
+ marginBottom: f.marginBottom,
24
+ marginLeft: f.marginLeft,
25
+ marginRight: f.marginRight,
26
+ backgroundColor: f.backgroundColor,
27
+ backgroundImage: f.backgroundImage,
28
+ };
29
+ }
30
+ if (input.type) {
31
+ return { blocks: [input] };
32
+ }
33
+ if (Array.isArray(input)) {
34
+ return { blocks: input };
35
+ }
36
+ return null;
37
+ }
38
+ function drawFooter(doc, def, ctx, footerBandHeight, renderBlockArray) {
39
+ var _a, _b;
40
+ const footerConfig = def.footer;
41
+ if (!footerConfig)
42
+ return;
43
+ const layout = normalizeFooter(footerConfig, ctx, doc);
44
+ if (!layout || !layout.blocks.length)
45
+ return;
46
+ if (layout.visible === false)
47
+ return;
48
+ const bandHeight = footerBandHeight;
49
+ if (!bandHeight)
50
+ return;
51
+ const { marginTop = 4, backgroundColor, backgroundImage, blocks } = layout;
52
+ const footerMarginLeft = (_a = layout.marginLeft) !== null && _a !== void 0 ? _a : 0;
53
+ const footerMarginRight = (_b = layout.marginRight) !== null && _b !== void 0 ? _b : 0;
54
+ const contentWidth = doc.page.width - footerMarginLeft - footerMarginRight;
55
+ const footerEnv = {
56
+ marginLeft: footerMarginLeft,
57
+ innerWidth: contentWidth,
58
+ allowPageBreak: false,
59
+ };
60
+ const pageHeight = doc.page.height;
61
+ const bandTop = pageHeight - bandHeight;
62
+ if (backgroundColor) {
63
+ doc.save();
64
+ doc.rect(0, bandTop, doc.page.width, bandHeight).fill(backgroundColor);
65
+ doc.restore();
66
+ }
67
+ if (backgroundImage) {
68
+ try {
69
+ doc.image(backgroundImage, 0, bandTop, {
70
+ width: doc.page.width,
71
+ height: bandHeight,
72
+ });
73
+ }
74
+ catch (e) {
75
+ // eslint-disable-next-line no-console
76
+ console.warn("Failed to load footer background image:", e);
77
+ }
78
+ }
79
+ doc.save();
80
+ doc.rect(footerMarginLeft, bandTop, contentWidth, bandHeight).clip();
81
+ // translate into footer band
82
+ doc.translate(0, bandTop);
83
+ ctx.inFooter = true;
84
+ const localStartY = marginTop;
85
+ renderBlockArray(blocks, localStartY, footerEnv);
86
+ ctx.inFooter = false;
87
+ doc.restore();
88
+ }
89
+ //# sourceMappingURL=footer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"footer.js","sourceRoot":"","sources":["../../../src/renderer-engine/utils/footer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Block, CustomDocDefinition, HeaderDef, RenderEnv } from "../../types";
2
+ export declare function drawHeader(doc: PDFKit.PDFDocument, def: CustomDocDefinition, headerBandHeight: number, header: HeaderDef | undefined, renderBlockArray: (blocks: Block[], startY: number, env: RenderEnv) => number): void;
3
+ //# sourceMappingURL=header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../src/renderer-engine/utils/header.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE/E,wBAAgB,UAAU,CACxB,GAAG,EAAE,MAAM,CAAC,WAAW,EACvB,GAAG,EAAE,mBAAmB,EACxB,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,SAAS,GAAG,SAAS,EAC7B,gBAAgB,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,KAAK,MAAM,QA8C9E"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.drawHeader = drawHeader;
4
+ function drawHeader(doc, def, headerBandHeight, header, renderBlockArray) {
5
+ var _a, _b, _c;
6
+ if (!header || !header.blocks.length)
7
+ return;
8
+ if (header.visible === false)
9
+ return;
10
+ if (!headerBandHeight)
11
+ return;
12
+ const bandTop = 0;
13
+ const bandHeight = def.margins.top;
14
+ const headerMarginLeft = (_a = header.marginLeft) !== null && _a !== void 0 ? _a : 0;
15
+ const headerMarginRight = (_b = header.marginRight) !== null && _b !== void 0 ? _b : 0;
16
+ const contentWidth = doc.page.width - headerMarginLeft - headerMarginRight;
17
+ const headerEnv = {
18
+ marginLeft: headerMarginLeft,
19
+ innerWidth: contentWidth,
20
+ allowPageBreak: false,
21
+ };
22
+ if (header.backgroundColor) {
23
+ doc.save();
24
+ doc
25
+ .rect(0, bandTop, doc.page.width, bandHeight)
26
+ .fill(header.backgroundColor);
27
+ doc.restore();
28
+ }
29
+ if (header.backgroundImage) {
30
+ try {
31
+ doc.image(header.backgroundImage, 0, bandTop, {
32
+ width: doc.page.width,
33
+ height: bandHeight,
34
+ });
35
+ }
36
+ catch (e) {
37
+ // eslint-disable-next-line no-console
38
+ console.warn("Failed to load header background image:", e);
39
+ }
40
+ }
41
+ doc.save();
42
+ doc.rect(headerMarginLeft, bandTop, contentWidth, bandHeight).clip();
43
+ const startY = bandTop + ((_c = header.marginTop) !== null && _c !== void 0 ? _c : 0);
44
+ renderBlockArray(header.blocks, startY, headerEnv);
45
+ doc.restore();
46
+ }
47
+ //# sourceMappingURL=header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header.js","sourceRoot":"","sources":["../../../src/renderer-engine/utils/header.ts"],"names":[],"mappings":";;AAEA,gCAmDC;AAnDD,SAAgB,UAAU,CACxB,GAAuB,EACvB,GAAwB,EACxB,gBAAwB,EACxB,MAA6B,EAC7B,gBAA6E;;IAE7E,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO;IAC7C,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK;QAAE,OAAO;IACrC,IAAI,CAAC,gBAAgB;QAAE,OAAO;IAE9B,MAAM,OAAO,GAAG,CAAC,CAAC;IAClB,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;IAEnC,MAAM,gBAAgB,GAAG,MAAA,MAAM,CAAC,UAAU,mCAAI,CAAC,CAAC;IAChD,MAAM,iBAAiB,GAAG,MAAA,MAAM,CAAC,WAAW,mCAAI,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,gBAAgB,GAAG,iBAAiB,CAAC;IAE3E,MAAM,SAAS,GAAc;QAC3B,UAAU,EAAE,gBAAgB;QAC5B,UAAU,EAAE,YAAY;QACxB,cAAc,EAAE,KAAK;KACtB,CAAC;IAEF,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;QAC3B,GAAG,CAAC,IAAI,EAAE,CAAC;QACX,GAAG;aACA,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC;aAC5C,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAChC,GAAG,CAAC,OAAO,EAAE,CAAC;IAChB,CAAC;IAED,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,EAAE,OAAO,EAAE;gBAC5C,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK;gBACrB,MAAM,EAAE,UAAU;aACnB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,sCAAsC;YACtC,OAAO,CAAC,IAAI,CAAC,yCAAyC,EAAE,CAAC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,GAAG,CAAC,IAAI,EAAE,CAAC;IACX,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;IAErE,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC,MAAA,MAAM,CAAC,SAAS,mCAAI,CAAC,CAAC,CAAC;IACjD,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAEnD,GAAG,CAAC,OAAO,EAAE,CAAC;AAChB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function normalizeImageSrc(src: string | Buffer | undefined): Promise<string | Buffer | undefined>;
2
+ import { Block } from "../../types";
3
+ export declare function materializeImagesInBlocks(blocks: Block[]): Promise<Block[]>;
4
+ //# sourceMappingURL=image-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-loader.d.ts","sourceRoot":"","sources":["../../../src/renderer-engine/utils/image-loader.ts"],"names":[],"mappings":"AAEA,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAC/B,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,CAgBtC;AAED,OAAO,EAAE,KAAK,EAAc,MAAM,aAAa,CAAC;AAEhD,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,KAAK,EAAE,GACd,OAAO,CAAC,KAAK,EAAE,CAAC,CA2BlB"}
@@ -0,0 +1,52 @@
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.normalizeImageSrc = normalizeImageSrc;
7
+ exports.materializeImagesInBlocks = materializeImagesInBlocks;
8
+ const axios_1 = __importDefault(require("axios"));
9
+ async function normalizeImageSrc(src) {
10
+ if (!src)
11
+ return src;
12
+ // Already a Buffer -> fine
13
+ if (Buffer.isBuffer(src))
14
+ return src;
15
+ // Remote URL -> download to Buffer
16
+ if (src.startsWith("http://") || src.startsWith("https://")) {
17
+ const res = await axios_1.default.get(src, {
18
+ responseType: "arraybuffer",
19
+ });
20
+ return Buffer.from(res.data);
21
+ }
22
+ // Otherwise treat as local file path
23
+ return src;
24
+ }
25
+ async function materializeImagesInBlocks(blocks) {
26
+ const out = [];
27
+ for (const block of blocks) {
28
+ if (block.type === "image") {
29
+ const img = { ...block };
30
+ img.src = await normalizeImageSrc(img.src);
31
+ out.push(img);
32
+ }
33
+ else if (block.type === "columns") {
34
+ // recurse into columns
35
+ out.push({
36
+ ...block,
37
+ columns: await Promise.all(block.columns.map((col) => materializeImagesInBlocks(col))),
38
+ });
39
+ }
40
+ else if (block.type === "signature" && block.blocks) {
41
+ out.push({
42
+ ...block,
43
+ blocks: await materializeImagesInBlocks(block.blocks),
44
+ });
45
+ }
46
+ else {
47
+ out.push(block);
48
+ }
49
+ }
50
+ return out;
51
+ }
52
+ //# sourceMappingURL=image-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-loader.js","sourceRoot":"","sources":["../../../src/renderer-engine/utils/image-loader.ts"],"names":[],"mappings":";;;;;AAEA,8CAkBC;AAID,8DA6BC;AArDD,kDAA0B;AAEnB,KAAK,UAAU,iBAAiB,CACrC,GAAgC;IAEhC,IAAI,CAAC,GAAG;QAAE,OAAO,GAAG,CAAC;IAErB,2BAA2B;IAC3B,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IAErC,mCAAmC;IACnC,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5D,MAAM,GAAG,GAAG,MAAM,eAAK,CAAC,GAAG,CAAc,GAAG,EAAE;YAC5C,YAAY,EAAE,aAAa;SAC5B,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,qCAAqC;IACrC,OAAO,GAAG,CAAC;AACb,CAAC;AAIM,KAAK,UAAU,yBAAyB,CAC7C,MAAe;IAEf,MAAM,GAAG,GAAY,EAAE,CAAC;IAExB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,EAAE,GAAI,KAAoB,EAAE,CAAC;YACzC,GAAG,CAAC,GAAG,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC3C,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACpC,uBAAuB;YACvB,GAAG,CAAC,IAAI,CAAC;gBACP,GAAG,KAAK;gBACR,OAAO,EAAE,MAAM,OAAO,CAAC,GAAG,CACxB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAC3D;aACF,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACtD,GAAG,CAAC,IAAI,CAAC;gBACP,GAAG,KAAK;gBACR,MAAM,EAAE,MAAM,yBAAyB,CAAC,KAAK,CAAC,MAAM,CAAC;aACtD,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,19 @@
1
+ export * from "./block-renderer";
2
+ export * from "./context";
3
+ export * from "./ensure-space";
4
+ export * from "./env";
5
+ export * from "./finish-page";
6
+ export * from "./footer";
7
+ export * from "./header";
8
+ export * from "./image-loader";
9
+ export * from "./layout";
10
+ export * from "./measure-block-height";
11
+ export * from "./page-background";
12
+ export * from "./page-flow";
13
+ export * from "./page-limit";
14
+ export * from "./qr-bar-code";
15
+ export * from "./signature";
16
+ export * from "./start-page-layout";
17
+ export * from "./styles";
18
+ export * from "./watermark";
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/renderer-engine/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,OAAO,CAAC;AACtB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./block-renderer"), exports);
18
+ __exportStar(require("./context"), exports);
19
+ __exportStar(require("./ensure-space"), exports);
20
+ __exportStar(require("./env"), exports);
21
+ __exportStar(require("./finish-page"), exports);
22
+ __exportStar(require("./footer"), exports);
23
+ __exportStar(require("./header"), exports);
24
+ __exportStar(require("./image-loader"), exports);
25
+ __exportStar(require("./layout"), exports);
26
+ __exportStar(require("./measure-block-height"), exports);
27
+ __exportStar(require("./page-background"), exports);
28
+ __exportStar(require("./page-flow"), exports);
29
+ __exportStar(require("./page-limit"), exports);
30
+ __exportStar(require("./qr-bar-code"), exports);
31
+ __exportStar(require("./signature"), exports);
32
+ __exportStar(require("./start-page-layout"), exports);
33
+ __exportStar(require("./styles"), exports);
34
+ __exportStar(require("./watermark"), exports);
35
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/renderer-engine/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,4CAA0B;AAC1B,iDAA+B;AAC/B,wCAAsB;AACtB,gDAA8B;AAC9B,2CAAyB;AACzB,2CAAyB;AACzB,iDAA+B;AAC/B,2CAAyB;AACzB,yDAAuC;AACvC,oDAAkC;AAClC,8CAA4B;AAC5B,+CAA6B;AAC7B,gDAA8B;AAC9B,8CAA4B;AAC5B,sDAAoC;AACpC,2CAAyB;AACzB,8CAA4B"}
@@ -0,0 +1,8 @@
1
+ import { Width } from "../../types";
2
+ /**
3
+ * Compute pixel widths for a set of column width descriptors.
4
+ * - number: fixed width
5
+ * - "*": flex unit
6
+ */
7
+ export declare function computeColumnPixelWidths(widths: Width[], totalWidth: number): number[];
8
+ //# sourceMappingURL=layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../src/renderer-engine/utils/layout.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,KAAK,EAAE,EACf,UAAU,EAAE,MAAM,GACjB,MAAM,EAAE,CAaV"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.computeColumnPixelWidths = computeColumnPixelWidths;
4
+ /**
5
+ * Compute pixel widths for a set of column width descriptors.
6
+ * - number: fixed width
7
+ * - "*": flex unit
8
+ */
9
+ function computeColumnPixelWidths(widths, totalWidth) {
10
+ let fixedTotal = 0;
11
+ let starCount = 0;
12
+ widths.forEach((w) => {
13
+ if (w === "*")
14
+ starCount++;
15
+ else
16
+ fixedTotal += w;
17
+ });
18
+ const remaining = Math.max(totalWidth - fixedTotal, 0);
19
+ const starWidth = starCount > 0 ? remaining / starCount : 0;
20
+ return widths.map((w) => (w === "*" ? starWidth : w));
21
+ }
22
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../src/renderer-engine/utils/layout.ts"],"names":[],"mappings":";;AAQA,4DAgBC;AArBD;;;;GAIG;AACH,SAAgB,wBAAwB,CACtC,MAAe,EACf,UAAkB;IAElB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACnB,IAAI,CAAC,KAAK,GAAG;YAAE,SAAS,EAAE,CAAC;;YACtB,UAAU,IAAI,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5D,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { Block, RenderEnv, StyleDef } from "../../types";
2
+ export type MeasureBlockHeightFn = (block: Block, env: RenderEnv) => number;
3
+ export declare function createMeasureBlockHeight(deps: {
4
+ doc: PDFKit.PDFDocument;
5
+ styles: Record<string, StyleDef>;
6
+ computeColumnPixelWidths: (widths: (number | "*")[], totalWidth: number) => number[];
7
+ }): MeasureBlockHeightFn;
8
+ //# sourceMappingURL=measure-block-height.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"measure-block-height.d.ts","sourceRoot":"","sources":["../../../src/renderer-engine/utils/measure-block-height.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,EAML,SAAS,EAET,QAAQ,EAGT,MAAM,aAAa,CAAC;AAIrB,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,KAAK,MAAM,CAAC;AAE5E,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjC,wBAAwB,EAAE,CACxB,MAAM,EAAE,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,EACxB,UAAU,EAAE,MAAM,KACf,MAAM,EAAE,CAAC;CACf,GAAG,oBAAoB,CA6QvB"}