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.
- package/.prettierignore +4 -0
- package/.prettierrc +6 -0
- package/README.md +4 -14
- package/dist/index.d.mts +296 -0
- package/dist/index.d.ts +296 -3
- package/dist/index.js +1979 -18
- package/dist/index.mjs +1940 -0
- package/package.json +12 -25
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/renderer-engine/blocks/barcode.d.ts +0 -3
- package/dist/renderer-engine/blocks/barcode.d.ts.map +0 -1
- package/dist/renderer-engine/blocks/barcode.js +0 -47
- package/dist/renderer-engine/blocks/barcode.js.map +0 -1
- package/dist/renderer-engine/blocks/columns.d.ts +0 -3
- package/dist/renderer-engine/blocks/columns.d.ts.map +0 -1
- package/dist/renderer-engine/blocks/columns.js +0 -105
- package/dist/renderer-engine/blocks/columns.js.map +0 -1
- package/dist/renderer-engine/blocks/image.d.ts +0 -4
- package/dist/renderer-engine/blocks/image.d.ts.map +0 -1
- package/dist/renderer-engine/blocks/image.js +0 -57
- package/dist/renderer-engine/blocks/image.js.map +0 -1
- package/dist/renderer-engine/blocks/index.d.ts +0 -8
- package/dist/renderer-engine/blocks/index.d.ts.map +0 -1
- package/dist/renderer-engine/blocks/index.js +0 -24
- package/dist/renderer-engine/blocks/index.js.map +0 -1
- package/dist/renderer-engine/blocks/key-value-grid.d.ts +0 -3
- package/dist/renderer-engine/blocks/key-value-grid.d.ts.map +0 -1
- package/dist/renderer-engine/blocks/key-value-grid.js +0 -245
- package/dist/renderer-engine/blocks/key-value-grid.js.map +0 -1
- package/dist/renderer-engine/blocks/line.d.ts +0 -3
- package/dist/renderer-engine/blocks/line.d.ts.map +0 -1
- package/dist/renderer-engine/blocks/line.js +0 -35
- package/dist/renderer-engine/blocks/line.js.map +0 -1
- package/dist/renderer-engine/blocks/table.d.ts +0 -4
- package/dist/renderer-engine/blocks/table.d.ts.map +0 -1
- package/dist/renderer-engine/blocks/table.js +0 -201
- package/dist/renderer-engine/blocks/table.js.map +0 -1
- package/dist/renderer-engine/blocks/text.d.ts +0 -3
- package/dist/renderer-engine/blocks/text.d.ts.map +0 -1
- package/dist/renderer-engine/blocks/text.js +0 -52
- package/dist/renderer-engine/blocks/text.js.map +0 -1
- package/dist/renderer-engine/index.d.ts +0 -4
- package/dist/renderer-engine/index.d.ts.map +0 -1
- package/dist/renderer-engine/index.js +0 -215
- package/dist/renderer-engine/index.js.map +0 -1
- package/dist/renderer-engine/utils/block-renderer.d.ts +0 -17
- package/dist/renderer-engine/utils/block-renderer.d.ts.map +0 -1
- package/dist/renderer-engine/utils/block-renderer.js +0 -86
- package/dist/renderer-engine/utils/block-renderer.js.map +0 -1
- package/dist/renderer-engine/utils/context.d.ts +0 -3
- package/dist/renderer-engine/utils/context.d.ts.map +0 -1
- package/dist/renderer-engine/utils/context.js +0 -16
- package/dist/renderer-engine/utils/context.js.map +0 -1
- package/dist/renderer-engine/utils/ensure-space.d.ts +0 -9
- package/dist/renderer-engine/utils/ensure-space.d.ts.map +0 -1
- package/dist/renderer-engine/utils/ensure-space.js +0 -18
- package/dist/renderer-engine/utils/ensure-space.js.map +0 -1
- package/dist/renderer-engine/utils/env.d.ts +0 -3
- package/dist/renderer-engine/utils/env.d.ts.map +0 -1
- package/dist/renderer-engine/utils/env.js +0 -10
- package/dist/renderer-engine/utils/env.js.map +0 -1
- package/dist/renderer-engine/utils/finish-page.d.ts +0 -13
- package/dist/renderer-engine/utils/finish-page.d.ts.map +0 -1
- package/dist/renderer-engine/utils/finish-page.js +0 -27
- package/dist/renderer-engine/utils/finish-page.js.map +0 -1
- package/dist/renderer-engine/utils/footer.d.ts +0 -3
- package/dist/renderer-engine/utils/footer.d.ts.map +0 -1
- package/dist/renderer-engine/utils/footer.js +0 -89
- package/dist/renderer-engine/utils/footer.js.map +0 -1
- package/dist/renderer-engine/utils/header.d.ts +0 -3
- package/dist/renderer-engine/utils/header.d.ts.map +0 -1
- package/dist/renderer-engine/utils/header.js +0 -47
- package/dist/renderer-engine/utils/header.js.map +0 -1
- package/dist/renderer-engine/utils/image-loader.d.ts +0 -4
- package/dist/renderer-engine/utils/image-loader.d.ts.map +0 -1
- package/dist/renderer-engine/utils/image-loader.js +0 -52
- package/dist/renderer-engine/utils/image-loader.js.map +0 -1
- package/dist/renderer-engine/utils/index.d.ts +0 -19
- package/dist/renderer-engine/utils/index.d.ts.map +0 -1
- package/dist/renderer-engine/utils/index.js +0 -35
- package/dist/renderer-engine/utils/index.js.map +0 -1
- package/dist/renderer-engine/utils/layout.d.ts +0 -8
- package/dist/renderer-engine/utils/layout.d.ts.map +0 -1
- package/dist/renderer-engine/utils/layout.js +0 -22
- package/dist/renderer-engine/utils/layout.js.map +0 -1
- package/dist/renderer-engine/utils/measure-block-height.d.ts +0 -8
- package/dist/renderer-engine/utils/measure-block-height.d.ts.map +0 -1
- package/dist/renderer-engine/utils/measure-block-height.js +0 -220
- package/dist/renderer-engine/utils/measure-block-height.js.map +0 -1
- package/dist/renderer-engine/utils/page-background.d.ts +0 -6
- package/dist/renderer-engine/utils/page-background.d.ts.map +0 -1
- package/dist/renderer-engine/utils/page-background.js +0 -30
- package/dist/renderer-engine/utils/page-background.js.map +0 -1
- package/dist/renderer-engine/utils/page-flow.d.ts +0 -3
- package/dist/renderer-engine/utils/page-flow.d.ts.map +0 -1
- package/dist/renderer-engine/utils/page-flow.js +0 -9
- package/dist/renderer-engine/utils/page-flow.js.map +0 -1
- package/dist/renderer-engine/utils/page-limit.d.ts +0 -8
- package/dist/renderer-engine/utils/page-limit.d.ts.map +0 -1
- package/dist/renderer-engine/utils/page-limit.js +0 -15
- package/dist/renderer-engine/utils/page-limit.js.map +0 -1
- package/dist/renderer-engine/utils/qr-bar-code.d.ts +0 -17
- package/dist/renderer-engine/utils/qr-bar-code.d.ts.map +0 -1
- package/dist/renderer-engine/utils/qr-bar-code.js +0 -141
- package/dist/renderer-engine/utils/qr-bar-code.js.map +0 -1
- package/dist/renderer-engine/utils/signature.d.ts +0 -20
- package/dist/renderer-engine/utils/signature.d.ts.map +0 -1
- package/dist/renderer-engine/utils/signature.js +0 -214
- package/dist/renderer-engine/utils/signature.js.map +0 -1
- package/dist/renderer-engine/utils/start-page-layout.d.ts +0 -20
- package/dist/renderer-engine/utils/start-page-layout.d.ts.map +0 -1
- package/dist/renderer-engine/utils/start-page-layout.js +0 -34
- package/dist/renderer-engine/utils/start-page-layout.js.map +0 -1
- package/dist/renderer-engine/utils/styles.d.ts +0 -7
- package/dist/renderer-engine/utils/styles.d.ts.map +0 -1
- package/dist/renderer-engine/utils/styles.js +0 -124
- package/dist/renderer-engine/utils/styles.js.map +0 -1
- package/dist/renderer-engine/utils/watermark.d.ts +0 -11
- package/dist/renderer-engine/utils/watermark.d.ts.map +0 -1
- package/dist/renderer-engine/utils/watermark.js +0 -57
- package/dist/renderer-engine/utils/watermark.js.map +0 -1
- package/dist/types/barcode.d.ts +0 -23
- package/dist/types/barcode.d.ts.map +0 -1
- package/dist/types/barcode.js +0 -11
- package/dist/types/barcode.js.map +0 -1
- package/dist/types/columns.d.ts +0 -14
- package/dist/types/columns.d.ts.map +0 -1
- package/dist/types/columns.js +0 -3
- package/dist/types/columns.js.map +0 -1
- package/dist/types/common.d.ts +0 -102
- package/dist/types/common.d.ts.map +0 -1
- package/dist/types/common.js +0 -3
- package/dist/types/common.js.map +0 -1
- package/dist/types/context.d.ts +0 -17
- package/dist/types/context.d.ts.map +0 -1
- package/dist/types/context.js +0 -3
- package/dist/types/context.js.map +0 -1
- package/dist/types/image.d.ts +0 -13
- package/dist/types/image.d.ts.map +0 -1
- package/dist/types/image.js +0 -3
- package/dist/types/image.js.map +0 -1
- package/dist/types/index.d.ts +0 -13
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -29
- package/dist/types/index.js.map +0 -1
- package/dist/types/key-value-grid.d.ts +0 -34
- package/dist/types/key-value-grid.d.ts.map +0 -1
- package/dist/types/key-value-grid.js +0 -3
- package/dist/types/key-value-grid.js.map +0 -1
- package/dist/types/line.d.ts +0 -11
- package/dist/types/line.d.ts.map +0 -1
- package/dist/types/line.js +0 -3
- package/dist/types/line.js.map +0 -1
- package/dist/types/page-break.d.ts +0 -5
- package/dist/types/page-break.d.ts.map +0 -1
- package/dist/types/page-break.js +0 -3
- package/dist/types/page-break.js.map +0 -1
- package/dist/types/qr.d.ts +0 -22
- package/dist/types/qr.d.ts.map +0 -1
- package/dist/types/qr.js +0 -10
- package/dist/types/qr.js.map +0 -1
- package/dist/types/signature.d.ts +0 -12
- package/dist/types/signature.d.ts.map +0 -1
- package/dist/types/signature.js +0 -3
- package/dist/types/signature.js.map +0 -1
- package/dist/types/table.d.ts +0 -32
- package/dist/types/table.d.ts.map +0 -1
- package/dist/types/table.js +0 -3
- package/dist/types/table.js.map +0 -1
- package/dist/types/text.d.ts +0 -19
- package/dist/types/text.d.ts.map +0 -1
- package/dist/types/text.js +0 -3
- package/dist/types/text.js.map +0 -1
- package/dist/types/utility.d.ts +0 -1
- package/dist/types/utility.d.ts.map +0 -1
- package/dist/types/utility.js +0 -2
- package/dist/types/utility.js.map +0 -1
package/.prettierignore
ADDED
package/.prettierrc
ADDED
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
|
-
##
|
|
139
|
+
## Contributors
|
|
148
140
|
|
|
149
|
-
-
|
|
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
|
|
package/dist/index.d.mts
ADDED
|
@@ -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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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 };
|