av6-pdf-engine 1.0.1 → 1.0.3

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 (178) hide show
  1. package/.prettierignore +4 -0
  2. package/.prettierrc +6 -0
  3. package/README.md +4 -14
  4. package/dist/index.d.mts +296 -0
  5. package/dist/index.d.ts +296 -3
  6. package/dist/index.js +1979 -18
  7. package/dist/index.mjs +1940 -0
  8. package/package.json +12 -25
  9. package/dist/index.d.ts.map +0 -1
  10. package/dist/index.js.map +0 -1
  11. package/dist/renderer-engine/blocks/barcode.d.ts +0 -3
  12. package/dist/renderer-engine/blocks/barcode.d.ts.map +0 -1
  13. package/dist/renderer-engine/blocks/barcode.js +0 -47
  14. package/dist/renderer-engine/blocks/barcode.js.map +0 -1
  15. package/dist/renderer-engine/blocks/columns.d.ts +0 -3
  16. package/dist/renderer-engine/blocks/columns.d.ts.map +0 -1
  17. package/dist/renderer-engine/blocks/columns.js +0 -105
  18. package/dist/renderer-engine/blocks/columns.js.map +0 -1
  19. package/dist/renderer-engine/blocks/image.d.ts +0 -4
  20. package/dist/renderer-engine/blocks/image.d.ts.map +0 -1
  21. package/dist/renderer-engine/blocks/image.js +0 -57
  22. package/dist/renderer-engine/blocks/image.js.map +0 -1
  23. package/dist/renderer-engine/blocks/index.d.ts +0 -8
  24. package/dist/renderer-engine/blocks/index.d.ts.map +0 -1
  25. package/dist/renderer-engine/blocks/index.js +0 -24
  26. package/dist/renderer-engine/blocks/index.js.map +0 -1
  27. package/dist/renderer-engine/blocks/key-value-grid.d.ts +0 -3
  28. package/dist/renderer-engine/blocks/key-value-grid.d.ts.map +0 -1
  29. package/dist/renderer-engine/blocks/key-value-grid.js +0 -245
  30. package/dist/renderer-engine/blocks/key-value-grid.js.map +0 -1
  31. package/dist/renderer-engine/blocks/line.d.ts +0 -3
  32. package/dist/renderer-engine/blocks/line.d.ts.map +0 -1
  33. package/dist/renderer-engine/blocks/line.js +0 -35
  34. package/dist/renderer-engine/blocks/line.js.map +0 -1
  35. package/dist/renderer-engine/blocks/table.d.ts +0 -4
  36. package/dist/renderer-engine/blocks/table.d.ts.map +0 -1
  37. package/dist/renderer-engine/blocks/table.js +0 -201
  38. package/dist/renderer-engine/blocks/table.js.map +0 -1
  39. package/dist/renderer-engine/blocks/text.d.ts +0 -3
  40. package/dist/renderer-engine/blocks/text.d.ts.map +0 -1
  41. package/dist/renderer-engine/blocks/text.js +0 -52
  42. package/dist/renderer-engine/blocks/text.js.map +0 -1
  43. package/dist/renderer-engine/index.d.ts +0 -4
  44. package/dist/renderer-engine/index.d.ts.map +0 -1
  45. package/dist/renderer-engine/index.js +0 -215
  46. package/dist/renderer-engine/index.js.map +0 -1
  47. package/dist/renderer-engine/utils/block-renderer.d.ts +0 -17
  48. package/dist/renderer-engine/utils/block-renderer.d.ts.map +0 -1
  49. package/dist/renderer-engine/utils/block-renderer.js +0 -86
  50. package/dist/renderer-engine/utils/block-renderer.js.map +0 -1
  51. package/dist/renderer-engine/utils/context.d.ts +0 -3
  52. package/dist/renderer-engine/utils/context.d.ts.map +0 -1
  53. package/dist/renderer-engine/utils/context.js +0 -16
  54. package/dist/renderer-engine/utils/context.js.map +0 -1
  55. package/dist/renderer-engine/utils/ensure-space.d.ts +0 -9
  56. package/dist/renderer-engine/utils/ensure-space.d.ts.map +0 -1
  57. package/dist/renderer-engine/utils/ensure-space.js +0 -18
  58. package/dist/renderer-engine/utils/ensure-space.js.map +0 -1
  59. package/dist/renderer-engine/utils/env.d.ts +0 -3
  60. package/dist/renderer-engine/utils/env.d.ts.map +0 -1
  61. package/dist/renderer-engine/utils/env.js +0 -10
  62. package/dist/renderer-engine/utils/env.js.map +0 -1
  63. package/dist/renderer-engine/utils/finish-page.d.ts +0 -13
  64. package/dist/renderer-engine/utils/finish-page.d.ts.map +0 -1
  65. package/dist/renderer-engine/utils/finish-page.js +0 -27
  66. package/dist/renderer-engine/utils/finish-page.js.map +0 -1
  67. package/dist/renderer-engine/utils/footer.d.ts +0 -3
  68. package/dist/renderer-engine/utils/footer.d.ts.map +0 -1
  69. package/dist/renderer-engine/utils/footer.js +0 -89
  70. package/dist/renderer-engine/utils/footer.js.map +0 -1
  71. package/dist/renderer-engine/utils/header.d.ts +0 -3
  72. package/dist/renderer-engine/utils/header.d.ts.map +0 -1
  73. package/dist/renderer-engine/utils/header.js +0 -47
  74. package/dist/renderer-engine/utils/header.js.map +0 -1
  75. package/dist/renderer-engine/utils/image-loader.d.ts +0 -4
  76. package/dist/renderer-engine/utils/image-loader.d.ts.map +0 -1
  77. package/dist/renderer-engine/utils/image-loader.js +0 -52
  78. package/dist/renderer-engine/utils/image-loader.js.map +0 -1
  79. package/dist/renderer-engine/utils/index.d.ts +0 -19
  80. package/dist/renderer-engine/utils/index.d.ts.map +0 -1
  81. package/dist/renderer-engine/utils/index.js +0 -35
  82. package/dist/renderer-engine/utils/index.js.map +0 -1
  83. package/dist/renderer-engine/utils/layout.d.ts +0 -8
  84. package/dist/renderer-engine/utils/layout.d.ts.map +0 -1
  85. package/dist/renderer-engine/utils/layout.js +0 -22
  86. package/dist/renderer-engine/utils/layout.js.map +0 -1
  87. package/dist/renderer-engine/utils/measure-block-height.d.ts +0 -8
  88. package/dist/renderer-engine/utils/measure-block-height.d.ts.map +0 -1
  89. package/dist/renderer-engine/utils/measure-block-height.js +0 -220
  90. package/dist/renderer-engine/utils/measure-block-height.js.map +0 -1
  91. package/dist/renderer-engine/utils/page-background.d.ts +0 -6
  92. package/dist/renderer-engine/utils/page-background.d.ts.map +0 -1
  93. package/dist/renderer-engine/utils/page-background.js +0 -30
  94. package/dist/renderer-engine/utils/page-background.js.map +0 -1
  95. package/dist/renderer-engine/utils/page-flow.d.ts +0 -3
  96. package/dist/renderer-engine/utils/page-flow.d.ts.map +0 -1
  97. package/dist/renderer-engine/utils/page-flow.js +0 -9
  98. package/dist/renderer-engine/utils/page-flow.js.map +0 -1
  99. package/dist/renderer-engine/utils/page-limit.d.ts +0 -8
  100. package/dist/renderer-engine/utils/page-limit.d.ts.map +0 -1
  101. package/dist/renderer-engine/utils/page-limit.js +0 -15
  102. package/dist/renderer-engine/utils/page-limit.js.map +0 -1
  103. package/dist/renderer-engine/utils/qr-bar-code.d.ts +0 -17
  104. package/dist/renderer-engine/utils/qr-bar-code.d.ts.map +0 -1
  105. package/dist/renderer-engine/utils/qr-bar-code.js +0 -141
  106. package/dist/renderer-engine/utils/qr-bar-code.js.map +0 -1
  107. package/dist/renderer-engine/utils/signature.d.ts +0 -20
  108. package/dist/renderer-engine/utils/signature.d.ts.map +0 -1
  109. package/dist/renderer-engine/utils/signature.js +0 -214
  110. package/dist/renderer-engine/utils/signature.js.map +0 -1
  111. package/dist/renderer-engine/utils/start-page-layout.d.ts +0 -20
  112. package/dist/renderer-engine/utils/start-page-layout.d.ts.map +0 -1
  113. package/dist/renderer-engine/utils/start-page-layout.js +0 -34
  114. package/dist/renderer-engine/utils/start-page-layout.js.map +0 -1
  115. package/dist/renderer-engine/utils/styles.d.ts +0 -7
  116. package/dist/renderer-engine/utils/styles.d.ts.map +0 -1
  117. package/dist/renderer-engine/utils/styles.js +0 -124
  118. package/dist/renderer-engine/utils/styles.js.map +0 -1
  119. package/dist/renderer-engine/utils/watermark.d.ts +0 -11
  120. package/dist/renderer-engine/utils/watermark.d.ts.map +0 -1
  121. package/dist/renderer-engine/utils/watermark.js +0 -57
  122. package/dist/renderer-engine/utils/watermark.js.map +0 -1
  123. package/dist/types/barcode.d.ts +0 -23
  124. package/dist/types/barcode.d.ts.map +0 -1
  125. package/dist/types/barcode.js +0 -11
  126. package/dist/types/barcode.js.map +0 -1
  127. package/dist/types/columns.d.ts +0 -14
  128. package/dist/types/columns.d.ts.map +0 -1
  129. package/dist/types/columns.js +0 -3
  130. package/dist/types/columns.js.map +0 -1
  131. package/dist/types/common.d.ts +0 -102
  132. package/dist/types/common.d.ts.map +0 -1
  133. package/dist/types/common.js +0 -3
  134. package/dist/types/common.js.map +0 -1
  135. package/dist/types/context.d.ts +0 -17
  136. package/dist/types/context.d.ts.map +0 -1
  137. package/dist/types/context.js +0 -3
  138. package/dist/types/context.js.map +0 -1
  139. package/dist/types/image.d.ts +0 -13
  140. package/dist/types/image.d.ts.map +0 -1
  141. package/dist/types/image.js +0 -3
  142. package/dist/types/image.js.map +0 -1
  143. package/dist/types/index.d.ts +0 -13
  144. package/dist/types/index.d.ts.map +0 -1
  145. package/dist/types/index.js +0 -29
  146. package/dist/types/index.js.map +0 -1
  147. package/dist/types/key-value-grid.d.ts +0 -34
  148. package/dist/types/key-value-grid.d.ts.map +0 -1
  149. package/dist/types/key-value-grid.js +0 -3
  150. package/dist/types/key-value-grid.js.map +0 -1
  151. package/dist/types/line.d.ts +0 -11
  152. package/dist/types/line.d.ts.map +0 -1
  153. package/dist/types/line.js +0 -3
  154. package/dist/types/line.js.map +0 -1
  155. package/dist/types/page-break.d.ts +0 -5
  156. package/dist/types/page-break.d.ts.map +0 -1
  157. package/dist/types/page-break.js +0 -3
  158. package/dist/types/page-break.js.map +0 -1
  159. package/dist/types/qr.d.ts +0 -22
  160. package/dist/types/qr.d.ts.map +0 -1
  161. package/dist/types/qr.js +0 -10
  162. package/dist/types/qr.js.map +0 -1
  163. package/dist/types/signature.d.ts +0 -12
  164. package/dist/types/signature.d.ts.map +0 -1
  165. package/dist/types/signature.js +0 -3
  166. package/dist/types/signature.js.map +0 -1
  167. package/dist/types/table.d.ts +0 -32
  168. package/dist/types/table.d.ts.map +0 -1
  169. package/dist/types/table.js +0 -3
  170. package/dist/types/table.js.map +0 -1
  171. package/dist/types/text.d.ts +0 -19
  172. package/dist/types/text.d.ts.map +0 -1
  173. package/dist/types/text.js +0 -3
  174. package/dist/types/text.js.map +0 -1
  175. package/dist/types/utility.d.ts +0 -1
  176. package/dist/types/utility.d.ts.map +0 -1
  177. package/dist/types/utility.js +0 -2
  178. package/dist/types/utility.js.map +0 -1
@@ -0,0 +1,4 @@
1
+ node_module
2
+ build
3
+ dist
4
+ .vscode
package/.prettierrc ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "semi": true,
3
+ "singleQuote": false,
4
+ "trailingComma": "es5",
5
+ "printWidth": 120
6
+ }
package/README.md CHANGED
@@ -25,11 +25,7 @@ yarn add av6-pdf-engine
25
25
  ## Quick start
26
26
 
27
27
  ```ts
28
- import {
29
- renderCustomPdfToBuffer,
30
- renderCustomPdf,
31
- CustomDocDefinition,
32
- } from "av6-pdf-engine";
28
+ import { renderCustomPdfToBuffer, renderCustomPdf, CustomDocDefinition } from "av6-pdf-engine";
33
29
 
34
30
  const doc: CustomDocDefinition = {
35
31
  pageSize: "A4",
@@ -83,11 +79,7 @@ const doc: CustomDocDefinition = {
83
79
  { text: "Qty", style: "label", align: "right" },
84
80
  { text: "Total", style: "label", align: "right" },
85
81
  ],
86
- [
87
- { text: "Consulting" },
88
- { text: "12", align: "right" },
89
- { text: "$3,000", align: "right" },
90
- ],
82
+ [{ text: "Consulting" }, { text: "12", align: "right" }, { text: "$3,000", align: "right" }],
91
83
  ],
92
84
  },
93
85
  ],
@@ -144,11 +136,9 @@ Each block supports a `visible` flag so you can skip rendering without mutating
144
136
  - `pageBackground` is painted before header/content on every new page, while `watermark.mode` decides which pages receive the overlay.
145
137
  - Footer callbacks receive `(pageNumber, pageSize)` so you can display pagination, print timestamps, or conditionally hide content.
146
138
 
147
- ## Development
139
+ ## Contributors
148
140
 
149
- - Build TypeScript to `dist/`: `pnpm build`
150
- - Regenerate before publishing: `pnpm prepublishOnly`
151
- - Run the sample script (if you add one) with `pnpm demo` to exercise the renderer locally.
141
+ - [polarizz17](https://github.com/polarizz17)
152
142
 
153
143
  ## License
154
144
 
@@ -0,0 +1,296 @@
1
+ interface SignatureBlock extends BaseBlock {
2
+ type: "signature";
3
+ height: number;
4
+ blocks?: Block[];
5
+ image?: string;
6
+ label?: string;
7
+ width?: number;
8
+ marginLeft?: number;
9
+ marginRight?: number;
10
+ }
11
+
12
+ interface KeyValueItem {
13
+ key: string;
14
+ value: string;
15
+ keyStyle?: StyleRef;
16
+ valueStyle?: StyleRef;
17
+ keyTextStyle?: InlineTextStyle;
18
+ valueTextStyle?: InlineTextStyle;
19
+ keyAlign?: Alignment;
20
+ valueAlign?: Alignment;
21
+ }
22
+ interface KeyValueGridBlock extends BaseBlock {
23
+ type: "keyValueGrid";
24
+ columns: KeyValueItem[][];
25
+ columnGap?: number;
26
+ keyWidth?: Width;
27
+ columnWidths?: (Width | undefined)[];
28
+ orientation?: Orientation;
29
+ verticalKeyValueGap?: number;
30
+ keyStyle?: StyleRef;
31
+ valueStyle?: StyleRef;
32
+ keyTextStyle?: InlineTextStyle;
33
+ valueTextStyle?: InlineTextStyle;
34
+ keyAlign?: Alignment;
35
+ valueAlign?: Alignment;
36
+ separator?: string;
37
+ separatorGap?: number;
38
+ rowGap?: number;
39
+ marginTop?: number;
40
+ marginBottom?: number;
41
+ marginLeft?: number;
42
+ marginRight?: number;
43
+ }
44
+
45
+ interface PageBreakBlock extends BaseBlock {
46
+ type: "pageBreak";
47
+ }
48
+
49
+ interface TableCell {
50
+ text: string;
51
+ italic?: boolean;
52
+ underline?: boolean;
53
+ link?: string;
54
+ strike?: boolean;
55
+ bold?: boolean;
56
+ fontSize?: number;
57
+ font?: FontName;
58
+ align?: Alignment;
59
+ color?: string;
60
+ fillColor?: string;
61
+ style?: StyleRef;
62
+ }
63
+ interface TableBlock extends BaseBlock {
64
+ type: "table";
65
+ headerRows?: number;
66
+ widths: Width[];
67
+ body: TableCell[][];
68
+ layout?: {
69
+ border?: "all" | "none";
70
+ hLineColor?: string;
71
+ vLineColor?: string;
72
+ };
73
+ lineGap?: number;
74
+ marginTop?: number;
75
+ marginBottom?: number;
76
+ marginLeft?: number;
77
+ marginRight?: number;
78
+ }
79
+
80
+ interface ColumnsBlock extends BaseBlock {
81
+ type: "columns";
82
+ columns: Block[][];
83
+ gap?: number;
84
+ widths?: Width[];
85
+ mode?: "fixedGap" | "spaceBetween";
86
+ keepTogether?: boolean;
87
+ marginTop?: number;
88
+ marginBottom?: number;
89
+ marginLeft?: number;
90
+ marginRight?: number;
91
+ }
92
+
93
+ interface LineBlock extends BaseBlock {
94
+ type: "line";
95
+ lineWidth?: number;
96
+ color?: string;
97
+ marginTop?: number;
98
+ marginBottom?: number;
99
+ marginLeft?: number;
100
+ marginRight?: number;
101
+ }
102
+
103
+ type QRErrorLevel = "L" | "M" | "Q" | "H";
104
+ declare const QR_ERROR_LEVEL: {
105
+ LOW: QRErrorLevel;
106
+ MEDIUM: QRErrorLevel;
107
+ QUARTILE: QRErrorLevel;
108
+ HIGH: QRErrorLevel;
109
+ };
110
+ interface QrCodeBlock extends BaseBlock {
111
+ type: "qr";
112
+ value?: string;
113
+ src?: string | Buffer;
114
+ size?: number;
115
+ qrVersion?: number;
116
+ errorCorrectionLevel?: QRErrorLevel;
117
+ align?: Alignment;
118
+ marginTop?: number;
119
+ marginBottom?: number;
120
+ marginLeft?: number;
121
+ marginRight?: number;
122
+ }
123
+
124
+ interface ImageBlock extends BaseBlock {
125
+ type: "image";
126
+ src?: string | Buffer;
127
+ width?: number;
128
+ height?: number;
129
+ align?: Alignment;
130
+ marginTop?: number;
131
+ marginBottom?: number;
132
+ marginLeft?: number;
133
+ marginRight?: number;
134
+ }
135
+
136
+ interface TextBlock extends BaseBlock {
137
+ type: "text";
138
+ text: string;
139
+ fontSize?: number;
140
+ lineGap?: number;
141
+ align?: Alignment;
142
+ bold?: boolean;
143
+ italic?: boolean;
144
+ underline?: boolean;
145
+ strike?: boolean;
146
+ link?: string;
147
+ color?: string;
148
+ font?: FontName;
149
+ style?: StyleRef;
150
+ marginLeft?: number;
151
+ marginRight?: number;
152
+ }
153
+
154
+ type Alignment = "left" | "right" | "center" | "justify";
155
+ type Orientation = "horizontal" | "vertical";
156
+ type Width = number | "*";
157
+ type InlineTextStyle = Omit<TextBlock, "type" | "text" | "style">;
158
+ type BuiltInFont = "Helvetica" | "Helvetica-Bold" | "Helvetica-Oblique" | "Helvetica-BoldOblique" | "Times-Roman" | "Times-Bold" | "Times-Italic" | "Times-BoldItalic" | "Courier" | "Courier-Bold" | "Courier-Oblique" | "Courier-BoldOblique";
159
+ /**
160
+ * FontName:
161
+ * - autocomplete for built-ins
162
+ * - but still allows any custom string when you registerFont
163
+ */
164
+ type FontName = BuiltInFont | (string & {});
165
+ /**
166
+ * Style definition similar to pdfmake's style object.
167
+ * Can be applied to text blocks and table cells.
168
+ */
169
+ interface StyleDef {
170
+ italic?: boolean;
171
+ underline?: boolean;
172
+ link?: string;
173
+ strike?: boolean;
174
+ fontSize?: number;
175
+ lineGap?: number;
176
+ align?: Alignment;
177
+ bold?: boolean;
178
+ color?: string;
179
+ fillColor?: string;
180
+ font?: FontName;
181
+ }
182
+ /** Shared style reference field (single or multiple style names). */
183
+ type StyleRef = string | string[] | undefined;
184
+ interface PageMargins {
185
+ /**
186
+ * TOP is treated as header band height.
187
+ * BOTTOM is treated as footer band height.
188
+ * LEFT/RIGHT are used for content only.
189
+ */
190
+ top: number;
191
+ right: number;
192
+ bottom: number;
193
+ left: number;
194
+ }
195
+ type WatermarkMode = "all" | "first" | "last" | "firstLast" | "exceptFirst" | "exceptLast" | "exceptFirstLast";
196
+ interface WatermarkDef {
197
+ text: string;
198
+ opacity?: number;
199
+ fontSize?: number;
200
+ color?: string;
201
+ angle?: number;
202
+ mode?: WatermarkMode;
203
+ }
204
+ interface PageBackgroundDef {
205
+ /** Path or Buffer for the image to be used as full-page background */
206
+ src?: string | Buffer;
207
+ /** Optional global opacity for background (0–1). Default: 1 */
208
+ opacity?: number;
209
+ }
210
+ interface FontRegistration {
211
+ name: FontName;
212
+ src: string | Buffer;
213
+ }
214
+ interface CustomDocDefinition {
215
+ pageSize?: PDFKit.PDFDocumentOptions["size"];
216
+ margins: PageMargins;
217
+ /** Optional font registrations (custom TTF/OTF) */
218
+ fonts?: FontRegistration[];
219
+ header?: HeaderDef;
220
+ pageBackground?: PageBackgroundDef;
221
+ watermark?: WatermarkDef;
222
+ content: Block[];
223
+ styles?: Record<string, StyleDef>;
224
+ footer?: FooterInput;
225
+ }
226
+ interface HeaderDef {
227
+ blocks: Block[];
228
+ visible?: boolean;
229
+ marginTop?: number;
230
+ marginBottom?: number;
231
+ marginLeft?: number;
232
+ marginRight?: number;
233
+ backgroundColor?: string;
234
+ backgroundImage?: string | Buffer;
235
+ }
236
+ interface FooterDef {
237
+ blocks: Block[];
238
+ visible?: boolean;
239
+ marginTop?: number;
240
+ marginBottom?: number;
241
+ marginLeft?: number;
242
+ marginRight?: number;
243
+ backgroundColor?: string;
244
+ backgroundImage?: string | Buffer;
245
+ }
246
+ type FooterInput = FooterDef | Block | Block[] | ((pageNumber: number, pageSize: {
247
+ width: number;
248
+ height: number;
249
+ }) => FooterDef | Block | Block[] | null | undefined);
250
+ interface BaseBlock {
251
+ visible?: boolean;
252
+ }
253
+ type Block = TextBlock | ImageBlock | QrCodeBlock | BarcodeBlock | LineBlock | ColumnsBlock | TableBlock | PageBreakBlock | KeyValueGridBlock | SignatureBlock;
254
+
255
+ type BarcodeType = "CODE128" | "EAN13" | "CODE39" | "ITF" | "CODE93";
256
+ declare const BARCODE_TYPES: Record<BarcodeType, BarcodeType>;
257
+ interface BarcodeBlock extends BaseBlock {
258
+ type: "barcode";
259
+ value?: string;
260
+ src?: string | Buffer;
261
+ bcType?: BarcodeType;
262
+ width?: number;
263
+ height?: number;
264
+ align?: Alignment;
265
+ marginTop?: number;
266
+ marginBottom?: number;
267
+ marginLeft?: number;
268
+ marginRight?: number;
269
+ orientation?: Orientation;
270
+ rotate?: number;
271
+ scale?: number;
272
+ barHeight?: number;
273
+ includetext?: boolean;
274
+ textalign?: "left" | "center" | "right";
275
+ }
276
+
277
+ interface PageContext {
278
+ pageNumber: number;
279
+ currentY: number;
280
+ signatureBlock: SignatureBlock | null;
281
+ signatureTopY: number | null;
282
+ signatureHeight: number;
283
+ signaturePlaced: boolean;
284
+ afterSignature: boolean;
285
+ inFooter: boolean;
286
+ }
287
+ interface RenderEnv {
288
+ marginLeft: number;
289
+ innerWidth: number;
290
+ allowPageBreak: boolean;
291
+ }
292
+
293
+ declare function renderCustomPdf(def: CustomDocDefinition, outputPath: string): Promise<void>;
294
+ declare function renderCustomPdfToBuffer(def: CustomDocDefinition): Promise<Buffer>;
295
+
296
+ export { type Alignment, BARCODE_TYPES, type BarcodeBlock, type BarcodeType, type BaseBlock, type Block, type BuiltInFont, type ColumnsBlock, type CustomDocDefinition, type FontName, type FontRegistration, type FooterDef, type FooterInput, type HeaderDef, type ImageBlock, type InlineTextStyle, type KeyValueGridBlock, type KeyValueItem, type LineBlock, type Orientation, type PageBackgroundDef, type PageBreakBlock, type PageContext, type PageMargins, type QRErrorLevel, QR_ERROR_LEVEL, type QrCodeBlock, type RenderEnv, type SignatureBlock, type StyleDef, type StyleRef, type TableBlock, type TableCell, type TextBlock, type WatermarkDef, type WatermarkMode, type Width, renderCustomPdf, renderCustomPdfToBuffer };
package/dist/index.d.ts CHANGED
@@ -1,3 +1,296 @@
1
- export * from "./renderer-engine";
2
- export * from "./types";
3
- //# sourceMappingURL=index.d.ts.map
1
+ interface SignatureBlock extends BaseBlock {
2
+ type: "signature";
3
+ height: number;
4
+ blocks?: Block[];
5
+ image?: string;
6
+ label?: string;
7
+ width?: number;
8
+ marginLeft?: number;
9
+ marginRight?: number;
10
+ }
11
+
12
+ interface KeyValueItem {
13
+ key: string;
14
+ value: string;
15
+ keyStyle?: StyleRef;
16
+ valueStyle?: StyleRef;
17
+ keyTextStyle?: InlineTextStyle;
18
+ valueTextStyle?: InlineTextStyle;
19
+ keyAlign?: Alignment;
20
+ valueAlign?: Alignment;
21
+ }
22
+ interface KeyValueGridBlock extends BaseBlock {
23
+ type: "keyValueGrid";
24
+ columns: KeyValueItem[][];
25
+ columnGap?: number;
26
+ keyWidth?: Width;
27
+ columnWidths?: (Width | undefined)[];
28
+ orientation?: Orientation;
29
+ verticalKeyValueGap?: number;
30
+ keyStyle?: StyleRef;
31
+ valueStyle?: StyleRef;
32
+ keyTextStyle?: InlineTextStyle;
33
+ valueTextStyle?: InlineTextStyle;
34
+ keyAlign?: Alignment;
35
+ valueAlign?: Alignment;
36
+ separator?: string;
37
+ separatorGap?: number;
38
+ rowGap?: number;
39
+ marginTop?: number;
40
+ marginBottom?: number;
41
+ marginLeft?: number;
42
+ marginRight?: number;
43
+ }
44
+
45
+ interface PageBreakBlock extends BaseBlock {
46
+ type: "pageBreak";
47
+ }
48
+
49
+ interface TableCell {
50
+ text: string;
51
+ italic?: boolean;
52
+ underline?: boolean;
53
+ link?: string;
54
+ strike?: boolean;
55
+ bold?: boolean;
56
+ fontSize?: number;
57
+ font?: FontName;
58
+ align?: Alignment;
59
+ color?: string;
60
+ fillColor?: string;
61
+ style?: StyleRef;
62
+ }
63
+ interface TableBlock extends BaseBlock {
64
+ type: "table";
65
+ headerRows?: number;
66
+ widths: Width[];
67
+ body: TableCell[][];
68
+ layout?: {
69
+ border?: "all" | "none";
70
+ hLineColor?: string;
71
+ vLineColor?: string;
72
+ };
73
+ lineGap?: number;
74
+ marginTop?: number;
75
+ marginBottom?: number;
76
+ marginLeft?: number;
77
+ marginRight?: number;
78
+ }
79
+
80
+ interface ColumnsBlock extends BaseBlock {
81
+ type: "columns";
82
+ columns: Block[][];
83
+ gap?: number;
84
+ widths?: Width[];
85
+ mode?: "fixedGap" | "spaceBetween";
86
+ keepTogether?: boolean;
87
+ marginTop?: number;
88
+ marginBottom?: number;
89
+ marginLeft?: number;
90
+ marginRight?: number;
91
+ }
92
+
93
+ interface LineBlock extends BaseBlock {
94
+ type: "line";
95
+ lineWidth?: number;
96
+ color?: string;
97
+ marginTop?: number;
98
+ marginBottom?: number;
99
+ marginLeft?: number;
100
+ marginRight?: number;
101
+ }
102
+
103
+ type QRErrorLevel = "L" | "M" | "Q" | "H";
104
+ declare const QR_ERROR_LEVEL: {
105
+ LOW: QRErrorLevel;
106
+ MEDIUM: QRErrorLevel;
107
+ QUARTILE: QRErrorLevel;
108
+ HIGH: QRErrorLevel;
109
+ };
110
+ interface QrCodeBlock extends BaseBlock {
111
+ type: "qr";
112
+ value?: string;
113
+ src?: string | Buffer;
114
+ size?: number;
115
+ qrVersion?: number;
116
+ errorCorrectionLevel?: QRErrorLevel;
117
+ align?: Alignment;
118
+ marginTop?: number;
119
+ marginBottom?: number;
120
+ marginLeft?: number;
121
+ marginRight?: number;
122
+ }
123
+
124
+ interface ImageBlock extends BaseBlock {
125
+ type: "image";
126
+ src?: string | Buffer;
127
+ width?: number;
128
+ height?: number;
129
+ align?: Alignment;
130
+ marginTop?: number;
131
+ marginBottom?: number;
132
+ marginLeft?: number;
133
+ marginRight?: number;
134
+ }
135
+
136
+ interface TextBlock extends BaseBlock {
137
+ type: "text";
138
+ text: string;
139
+ fontSize?: number;
140
+ lineGap?: number;
141
+ align?: Alignment;
142
+ bold?: boolean;
143
+ italic?: boolean;
144
+ underline?: boolean;
145
+ strike?: boolean;
146
+ link?: string;
147
+ color?: string;
148
+ font?: FontName;
149
+ style?: StyleRef;
150
+ marginLeft?: number;
151
+ marginRight?: number;
152
+ }
153
+
154
+ type Alignment = "left" | "right" | "center" | "justify";
155
+ type Orientation = "horizontal" | "vertical";
156
+ type Width = number | "*";
157
+ type InlineTextStyle = Omit<TextBlock, "type" | "text" | "style">;
158
+ type BuiltInFont = "Helvetica" | "Helvetica-Bold" | "Helvetica-Oblique" | "Helvetica-BoldOblique" | "Times-Roman" | "Times-Bold" | "Times-Italic" | "Times-BoldItalic" | "Courier" | "Courier-Bold" | "Courier-Oblique" | "Courier-BoldOblique";
159
+ /**
160
+ * FontName:
161
+ * - autocomplete for built-ins
162
+ * - but still allows any custom string when you registerFont
163
+ */
164
+ type FontName = BuiltInFont | (string & {});
165
+ /**
166
+ * Style definition similar to pdfmake's style object.
167
+ * Can be applied to text blocks and table cells.
168
+ */
169
+ interface StyleDef {
170
+ italic?: boolean;
171
+ underline?: boolean;
172
+ link?: string;
173
+ strike?: boolean;
174
+ fontSize?: number;
175
+ lineGap?: number;
176
+ align?: Alignment;
177
+ bold?: boolean;
178
+ color?: string;
179
+ fillColor?: string;
180
+ font?: FontName;
181
+ }
182
+ /** Shared style reference field (single or multiple style names). */
183
+ type StyleRef = string | string[] | undefined;
184
+ interface PageMargins {
185
+ /**
186
+ * TOP is treated as header band height.
187
+ * BOTTOM is treated as footer band height.
188
+ * LEFT/RIGHT are used for content only.
189
+ */
190
+ top: number;
191
+ right: number;
192
+ bottom: number;
193
+ left: number;
194
+ }
195
+ type WatermarkMode = "all" | "first" | "last" | "firstLast" | "exceptFirst" | "exceptLast" | "exceptFirstLast";
196
+ interface WatermarkDef {
197
+ text: string;
198
+ opacity?: number;
199
+ fontSize?: number;
200
+ color?: string;
201
+ angle?: number;
202
+ mode?: WatermarkMode;
203
+ }
204
+ interface PageBackgroundDef {
205
+ /** Path or Buffer for the image to be used as full-page background */
206
+ src?: string | Buffer;
207
+ /** Optional global opacity for background (0–1). Default: 1 */
208
+ opacity?: number;
209
+ }
210
+ interface FontRegistration {
211
+ name: FontName;
212
+ src: string | Buffer;
213
+ }
214
+ interface CustomDocDefinition {
215
+ pageSize?: PDFKit.PDFDocumentOptions["size"];
216
+ margins: PageMargins;
217
+ /** Optional font registrations (custom TTF/OTF) */
218
+ fonts?: FontRegistration[];
219
+ header?: HeaderDef;
220
+ pageBackground?: PageBackgroundDef;
221
+ watermark?: WatermarkDef;
222
+ content: Block[];
223
+ styles?: Record<string, StyleDef>;
224
+ footer?: FooterInput;
225
+ }
226
+ interface HeaderDef {
227
+ blocks: Block[];
228
+ visible?: boolean;
229
+ marginTop?: number;
230
+ marginBottom?: number;
231
+ marginLeft?: number;
232
+ marginRight?: number;
233
+ backgroundColor?: string;
234
+ backgroundImage?: string | Buffer;
235
+ }
236
+ interface FooterDef {
237
+ blocks: Block[];
238
+ visible?: boolean;
239
+ marginTop?: number;
240
+ marginBottom?: number;
241
+ marginLeft?: number;
242
+ marginRight?: number;
243
+ backgroundColor?: string;
244
+ backgroundImage?: string | Buffer;
245
+ }
246
+ type FooterInput = FooterDef | Block | Block[] | ((pageNumber: number, pageSize: {
247
+ width: number;
248
+ height: number;
249
+ }) => FooterDef | Block | Block[] | null | undefined);
250
+ interface BaseBlock {
251
+ visible?: boolean;
252
+ }
253
+ type Block = TextBlock | ImageBlock | QrCodeBlock | BarcodeBlock | LineBlock | ColumnsBlock | TableBlock | PageBreakBlock | KeyValueGridBlock | SignatureBlock;
254
+
255
+ type BarcodeType = "CODE128" | "EAN13" | "CODE39" | "ITF" | "CODE93";
256
+ declare const BARCODE_TYPES: Record<BarcodeType, BarcodeType>;
257
+ interface BarcodeBlock extends BaseBlock {
258
+ type: "barcode";
259
+ value?: string;
260
+ src?: string | Buffer;
261
+ bcType?: BarcodeType;
262
+ width?: number;
263
+ height?: number;
264
+ align?: Alignment;
265
+ marginTop?: number;
266
+ marginBottom?: number;
267
+ marginLeft?: number;
268
+ marginRight?: number;
269
+ orientation?: Orientation;
270
+ rotate?: number;
271
+ scale?: number;
272
+ barHeight?: number;
273
+ includetext?: boolean;
274
+ textalign?: "left" | "center" | "right";
275
+ }
276
+
277
+ interface PageContext {
278
+ pageNumber: number;
279
+ currentY: number;
280
+ signatureBlock: SignatureBlock | null;
281
+ signatureTopY: number | null;
282
+ signatureHeight: number;
283
+ signaturePlaced: boolean;
284
+ afterSignature: boolean;
285
+ inFooter: boolean;
286
+ }
287
+ interface RenderEnv {
288
+ marginLeft: number;
289
+ innerWidth: number;
290
+ allowPageBreak: boolean;
291
+ }
292
+
293
+ declare function renderCustomPdf(def: CustomDocDefinition, outputPath: string): Promise<void>;
294
+ declare function renderCustomPdfToBuffer(def: CustomDocDefinition): Promise<Buffer>;
295
+
296
+ export { type Alignment, BARCODE_TYPES, type BarcodeBlock, type BarcodeType, type BaseBlock, type Block, type BuiltInFont, type ColumnsBlock, type CustomDocDefinition, type FontName, type FontRegistration, type FooterDef, type FooterInput, type HeaderDef, type ImageBlock, type InlineTextStyle, type KeyValueGridBlock, type KeyValueItem, type LineBlock, type Orientation, type PageBackgroundDef, type PageBreakBlock, type PageContext, type PageMargins, type QRErrorLevel, QR_ERROR_LEVEL, type QrCodeBlock, type RenderEnv, type SignatureBlock, type StyleDef, type StyleRef, type TableBlock, type TableCell, type TextBlock, type WatermarkDef, type WatermarkMode, type Width, renderCustomPdf, renderCustomPdfToBuffer };