@ic-labs/invoice-kit 0.1.7 → 0.1.9
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/README.md +45 -6
- package/dist/core/factories.d.ts.map +1 -1
- package/dist/core/factories.js +2 -1
- package/dist/core/factories.js.map +1 -1
- package/dist/core/types.d.ts +11 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/validation.d.ts.map +1 -1
- package/dist/core/validation.js +17 -0
- package/dist/core/validation.js.map +1 -1
- package/dist/renderers/pdf-support.d.ts +32 -0
- package/dist/renderers/pdf-support.d.ts.map +1 -0
- package/dist/renderers/pdf-support.js +197 -0
- package/dist/renderers/pdf-support.js.map +1 -0
- package/dist/renderers/pdf.d.ts.map +1 -1
- package/dist/renderers/pdf.js +79 -174
- package/dist/renderers/pdf.js.map +1 -1
- package/package.json +3 -1
package/README.md
CHANGED
|
@@ -16,6 +16,8 @@ It is designed for real business usage, not a demo. The package provides typed d
|
|
|
16
16
|
- Lightweight runtime based on `pdfkit`
|
|
17
17
|
- Clean factories for all document types
|
|
18
18
|
- Automatic subtotal, discount, VAT, taxable base, and total calculations
|
|
19
|
+
- Multi-page item tables for longer documents
|
|
20
|
+
- Automated `node:test` coverage for totals, validation, sparse documents, and pagination
|
|
19
21
|
- Moroccan defaults:
|
|
20
22
|
- currency: `MAD`
|
|
21
23
|
- VAT label: `TVA`
|
|
@@ -27,6 +29,7 @@ It is designed for real business usage, not a demo. The package provides typed d
|
|
|
27
29
|
- local transfer: bank name, holder name, RIB
|
|
28
30
|
- international transfer: bank name, holder name, SWIFT, IBAN
|
|
29
31
|
- Remote logo URL support in PDF headers
|
|
32
|
+
- Optional document color palette customization
|
|
30
33
|
- Optional multiline footer rendered at the extreme bottom of the page
|
|
31
34
|
- Delivery notes rendered without pricing information
|
|
32
35
|
|
|
@@ -64,6 +67,11 @@ const invoice = createInvoice({
|
|
|
64
67
|
paymentTerms: {
|
|
65
68
|
label: "Paiement sous 30 jours"
|
|
66
69
|
},
|
|
70
|
+
colors: {
|
|
71
|
+
primary: "#7c3aed",
|
|
72
|
+
mutedText: "#8b5cf6",
|
|
73
|
+
border: "#ddd6fe"
|
|
74
|
+
},
|
|
67
75
|
footer: "IC Labs SARL\ncontact@iclabs.ma\n+212600000000",
|
|
68
76
|
bankInfo: {
|
|
69
77
|
type: "local",
|
|
@@ -162,6 +170,7 @@ Available modules:
|
|
|
162
170
|
- `footer?: string`
|
|
163
171
|
- `paymentTerms?: PaymentTerms`
|
|
164
172
|
- `bankInfo?: BankInfo`
|
|
173
|
+
- `colors?: DocumentColors`
|
|
165
174
|
- `locale?: "fr-MA" | "ar-MA"`
|
|
166
175
|
- `title?: string`
|
|
167
176
|
|
|
@@ -188,6 +197,29 @@ createQuote({
|
|
|
188
197
|
- when multiple lines are provided, rendering starts higher so the last line ends at the bottom edge
|
|
189
198
|
- if `footer` is omitted, the PDF falls back to the document title and number only when one of them exists
|
|
190
199
|
|
|
200
|
+
### `colors`
|
|
201
|
+
|
|
202
|
+
```ts
|
|
203
|
+
interface DocumentColors {
|
|
204
|
+
primary?: string;
|
|
205
|
+
onPrimary?: string;
|
|
206
|
+
text?: string;
|
|
207
|
+
metaText?: string;
|
|
208
|
+
mutedText?: string;
|
|
209
|
+
border?: string;
|
|
210
|
+
footerText?: string;
|
|
211
|
+
}
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
- `colors` is an optional top-level module for customizing the PDF palette
|
|
215
|
+
- all color values are optional and must use hex format like `#173d73`
|
|
216
|
+
- omitted color slots fall back to the default library palette
|
|
217
|
+
- `primary` is used for the header accent, item table header, and final total row
|
|
218
|
+
- `onPrimary` is used for text rendered on top of `primary`
|
|
219
|
+
- `text`, `metaText`, and `mutedText` cover body text, metadata, and section labels
|
|
220
|
+
- `border` controls table and totals borders
|
|
221
|
+
- `footerText` controls the footer color
|
|
222
|
+
|
|
191
223
|
### `Issuer`
|
|
192
224
|
|
|
193
225
|
```ts
|
|
@@ -384,7 +416,7 @@ const quote = createQuote({
|
|
|
384
416
|
|
|
385
417
|
### Arabic PDF rendering
|
|
386
418
|
|
|
387
|
-
Arabic labels are supported,
|
|
419
|
+
Arabic labels are supported. The renderer first tries your explicit `toPDF({ fonts })` values, then falls back to common system Arabic fonts when available.
|
|
388
420
|
|
|
389
421
|
```ts
|
|
390
422
|
await quote.toPDF({
|
|
@@ -396,7 +428,15 @@ await quote.toPDF({
|
|
|
396
428
|
});
|
|
397
429
|
```
|
|
398
430
|
|
|
399
|
-
|
|
431
|
+
If no compatible system font is installed, provide Arabic-capable font files explicitly.
|
|
432
|
+
|
|
433
|
+
Common fallback families the library tries automatically include Noto Naskh Arabic, Noto Sans Arabic, Amiri, and DejaVu Sans.
|
|
434
|
+
|
|
435
|
+
## Testing
|
|
436
|
+
|
|
437
|
+
- `npm test` builds the library and runs the automated `node:test` suite
|
|
438
|
+
- automated tests cover totals, VAT edge cases, validation, sparse document modules, delivery note normalization, and table pagination
|
|
439
|
+
- `npm run smoke` still generates end-to-end sample PDFs for manual inspection
|
|
400
440
|
|
|
401
441
|
## Remote Logo Support
|
|
402
442
|
|
|
@@ -437,10 +477,9 @@ The library validates document input before building the document model.
|
|
|
437
477
|
|
|
438
478
|
Examples of enforced rules:
|
|
439
479
|
|
|
440
|
-
- `number` must be present
|
|
441
480
|
- provided issuer, seller, and client names must be non-empty
|
|
442
481
|
- provided address lines must be non-empty
|
|
443
|
-
-
|
|
482
|
+
- items are validated only when you provide them
|
|
444
483
|
- provided item quantity must be greater than zero
|
|
445
484
|
- priced financial items require `unitPrice` or `price`
|
|
446
485
|
- negative prices are rejected
|
|
@@ -448,6 +487,7 @@ Examples of enforced rules:
|
|
|
448
487
|
- `vatRate` must be between `0` and `1`
|
|
449
488
|
- `issuer.logo` must be a valid `http` or `https` URL
|
|
450
489
|
- bank fields must be present according to bank mode
|
|
490
|
+
- color overrides must use hex values like `#173d73`
|
|
451
491
|
|
|
452
492
|
## Rendering Behavior
|
|
453
493
|
|
|
@@ -601,9 +641,8 @@ That means a release requires a version bump before pushing to `main`.
|
|
|
601
641
|
|
|
602
642
|
## Limitations
|
|
603
643
|
|
|
604
|
-
- multi-page table layout is not implemented yet
|
|
605
644
|
- remote logos currently support PNG/JPEG only
|
|
606
|
-
- Arabic PDF output
|
|
645
|
+
- Arabic PDF output still depends on Arabic-capable fonts being installed or provided explicitly
|
|
607
646
|
- delivery notes intentionally do not display financial values
|
|
608
647
|
|
|
609
648
|
## License
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factories.d.ts","sourceRoot":"","sources":["../../src/core/factories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAyB,aAAa,EAAgB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"factories.d.ts","sourceRoot":"","sources":["../../src/core/factories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAyB,aAAa,EAAgB,MAAM,YAAY,CAAC;AA4CrF,eAAO,MAAM,aAAa,UAHuB,aAAa,KAAG,gBAGjB,CAAC;AACjD,eAAO,MAAM,WAAW,UAJyB,aAAa,KAAG,gBAIrB,CAAC;AAC7C,eAAO,MAAM,mBAAmB,UALiB,aAAa,KAAG,gBAKL,CAAC;AAC7D,eAAO,MAAM,kBAAkB,UANkB,aAAa,KAAG,gBAMP,CAAC"}
|
package/dist/core/factories.js
CHANGED
|
@@ -30,7 +30,8 @@ const createBusinessDocument = (options) => {
|
|
|
30
30
|
...(options.paymentTerms ? { paymentTerms: options.paymentTerms } : {}),
|
|
31
31
|
...(options.bankInfo ? { bankInfo: options.bankInfo } : {}),
|
|
32
32
|
...(options.notes ? { notes: options.notes } : {}),
|
|
33
|
-
...(options.footer ? { footer: options.footer } : {})
|
|
33
|
+
...(options.footer ? { footer: options.footer } : {}),
|
|
34
|
+
...(options.colors ? { colors: options.colors } : {})
|
|
34
35
|
});
|
|
35
36
|
};
|
|
36
37
|
const withType = (type) => (input) => createBusinessDocument({ ...input, type });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factories.js","sourceRoot":"","sources":["../../src/core/factories.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"factories.js","sourceRoot":"","sources":["../../src/core/factories.ts"],"names":[],"mappings":"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"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -54,6 +54,15 @@ export interface InternationalBankInfo {
|
|
|
54
54
|
iban: string;
|
|
55
55
|
}
|
|
56
56
|
export type BankInfo = LocalBankInfo | InternationalBankInfo;
|
|
57
|
+
export interface DocumentColors {
|
|
58
|
+
primary?: string;
|
|
59
|
+
onPrimary?: string;
|
|
60
|
+
text?: string;
|
|
61
|
+
metaText?: string;
|
|
62
|
+
mutedText?: string;
|
|
63
|
+
border?: string;
|
|
64
|
+
footerText?: string;
|
|
65
|
+
}
|
|
57
66
|
export interface DocumentInput {
|
|
58
67
|
number?: string;
|
|
59
68
|
issuer?: Issuer;
|
|
@@ -69,6 +78,7 @@ export interface DocumentInput {
|
|
|
69
78
|
footer?: string;
|
|
70
79
|
paymentTerms?: PaymentTerms;
|
|
71
80
|
bankInfo?: BankInfo;
|
|
81
|
+
colors?: DocumentColors;
|
|
72
82
|
locale?: LocaleCode;
|
|
73
83
|
title?: string;
|
|
74
84
|
}
|
|
@@ -96,6 +106,7 @@ export interface BusinessDocumentData {
|
|
|
96
106
|
bankInfo?: BankInfo;
|
|
97
107
|
notes?: string;
|
|
98
108
|
footer?: string;
|
|
109
|
+
colors?: DocumentColors;
|
|
99
110
|
locale: LocaleCode;
|
|
100
111
|
totals?: DocumentTotals;
|
|
101
112
|
}
|
package/dist/core/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/core/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAY,qBAAqB,EAA+
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/core/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAY,qBAAqB,EAA+D,MAAM,YAAY,CAAC;AAgH/H,eAAO,MAAM,qBAAqB,GAAI,OAAO,qBAAqB,KAAG,IAqDpE,CAAC"}
|
package/dist/core/validation.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
const HEX_COLOR_PATTERN = /^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/;
|
|
1
2
|
const assertNonEmptyString = (value, field) => {
|
|
2
3
|
if (value.trim().length === 0) {
|
|
3
4
|
throw new Error(`${field} must be a non-empty string.`);
|
|
@@ -70,6 +71,19 @@ const validateBankInfo = (bankInfo) => {
|
|
|
70
71
|
assertNonEmptyString(bankInfo.swiftCode, "bankInfo.swiftCode");
|
|
71
72
|
assertNonEmptyString(bankInfo.iban, "bankInfo.iban");
|
|
72
73
|
};
|
|
74
|
+
const validateColors = (colors) => {
|
|
75
|
+
const colorFields = ["primary", "onPrimary", "text", "metaText", "mutedText", "border", "footerText"];
|
|
76
|
+
for (const field of colorFields) {
|
|
77
|
+
const value = colors[field];
|
|
78
|
+
if (value === undefined) {
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
assertNonEmptyString(value, `colors.${field}`);
|
|
82
|
+
if (!HEX_COLOR_PATTERN.test(value)) {
|
|
83
|
+
throw new Error(`colors.${field} must be a valid hex color like #173d73.`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
};
|
|
73
87
|
export const validateDocumentInput = (input) => {
|
|
74
88
|
const requiresPricing = input.type !== "deliveryNote";
|
|
75
89
|
if (input.number !== undefined) {
|
|
@@ -108,5 +122,8 @@ export const validateDocumentInput = (input) => {
|
|
|
108
122
|
if (input.bankInfo) {
|
|
109
123
|
validateBankInfo(input.bankInfo);
|
|
110
124
|
}
|
|
125
|
+
if (input.colors) {
|
|
126
|
+
validateColors(input.colors);
|
|
127
|
+
}
|
|
111
128
|
};
|
|
112
129
|
//# sourceMappingURL=validation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/core/validation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/core/validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { BankInfo, BusinessDocumentData, DocumentColors, Party, PdfRenderOptions } from "../core/types.js";
|
|
2
|
+
import { getLabels } from "../locales/index.js";
|
|
3
|
+
export declare const PAGE: {
|
|
4
|
+
margin: number;
|
|
5
|
+
width: number;
|
|
6
|
+
height: number;
|
|
7
|
+
footerOffset: number;
|
|
8
|
+
headerTop: number;
|
|
9
|
+
lineGap: number;
|
|
10
|
+
};
|
|
11
|
+
export declare const DEFAULT_COLORS: Required<DocumentColors>;
|
|
12
|
+
export declare const collectPdf: (doc: PDFKit.PDFDocument) => Promise<Uint8Array>;
|
|
13
|
+
export declare const fetchLogo: (logoUrl: string) => Promise<Buffer>;
|
|
14
|
+
export declare const useFont: (doc: PDFKit.PDFDocument, fontPath: string | undefined, fallback: "Helvetica" | "Helvetica-Bold") => void;
|
|
15
|
+
export declare const resolvePdfFonts: (document: BusinessDocumentData, options?: PdfRenderOptions) => {
|
|
16
|
+
regular?: string;
|
|
17
|
+
bold?: string;
|
|
18
|
+
} | undefined;
|
|
19
|
+
export declare const truncateText: (doc: PDFKit.PDFDocument, value: string, width: number) => string;
|
|
20
|
+
export declare const drawFixedText: (doc: PDFKit.PDFDocument, text: string, x: number, y: number, options: PDFKit.Mixins.TextOptions) => number;
|
|
21
|
+
export declare const normalizeFooterText: (footer: string) => string;
|
|
22
|
+
export declare const ensureSectionSpace: (doc: PDFKit.PDFDocument, y: number, requiredHeight: number) => number;
|
|
23
|
+
export declare const drawLabelValue: (doc: PDFKit.PDFDocument, x: number, y: number, label: string, value: string, width: number, align: "left" | "right", color: string) => number;
|
|
24
|
+
export declare const resolveColors: (colors?: DocumentColors) => Required<DocumentColors>;
|
|
25
|
+
export declare const getMaxRowHeight: (doc: PDFKit.PDFDocument, cells: Array<{
|
|
26
|
+
text: string;
|
|
27
|
+
width: number;
|
|
28
|
+
options: PDFKit.Mixins.TextOptions;
|
|
29
|
+
}>, minHeight: number) => number;
|
|
30
|
+
export declare const buildPartyLines: (party: Party | undefined, labels: ReturnType<typeof getLabels>, includeName?: boolean) => string[];
|
|
31
|
+
export declare const buildBankLines: (bankInfo: BankInfo, labels: ReturnType<typeof getLabels>) => string[];
|
|
32
|
+
//# sourceMappingURL=pdf-support.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdf-support.d.ts","sourceRoot":"","sources":["../../src/renderers/pdf-support.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,oBAAoB,EAAE,cAAc,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAChH,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,eAAO,MAAM,IAAI;;;;;;;CAOhB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,cAAc,CAQnD,CAAC;AA2EF,eAAO,MAAM,UAAU,GAAU,KAAK,MAAM,CAAC,WAAW,KAAG,OAAO,CAAC,UAAU,CAazE,CAAC;AAEL,eAAO,MAAM,SAAS,GAAU,SAAS,MAAM,KAAG,OAAO,CAAC,MAAM,CAiB/D,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,KAAK,MAAM,CAAC,WAAW,EAAE,UAAU,MAAM,GAAG,SAAS,EAAE,UAAU,WAAW,GAAG,gBAAgB,KAAG,IAOzH,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,UAAU,oBAAoB,EAC9B,UAAU,gBAAgB,KACzB;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAmBxC,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,KAAK,MAAM,CAAC,WAAW,EAAE,OAAO,MAAM,EAAE,OAAO,MAAM,KAAG,MAWpF,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,KAAK,MAAM,CAAC,WAAW,EACvB,MAAM,MAAM,EACZ,GAAG,MAAM,EACT,GAAG,MAAM,EACT,SAAS,MAAM,CAAC,MAAM,CAAC,WAAW,KACjC,MAWF,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,QAAQ,MAAM,KAAG,MAItC,CAAC;AAEhB,eAAO,MAAM,kBAAkB,GAAI,KAAK,MAAM,CAAC,WAAW,EAAE,GAAG,MAAM,EAAE,gBAAgB,MAAM,KAAG,MAS/F,CAAC;AAEF,eAAO,MAAM,cAAc,GACzB,KAAK,MAAM,CAAC,WAAW,EACvB,GAAG,MAAM,EACT,GAAG,MAAM,EACT,OAAO,MAAM,EACb,OAAO,MAAM,EACb,OAAO,MAAM,EACb,OAAO,MAAM,GAAG,OAAO,EACvB,OAAO,MAAM,KACZ,MAGF,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,SAAS,cAAc,KAAG,QAAQ,CAAC,cAAc,CAG7E,CAAC;AAaH,eAAO,MAAM,eAAe,GAC1B,KAAK,MAAM,CAAC,WAAW,EACvB,OAAO,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAA;CAAE,CAAC,EACjF,WAAW,MAAM,KAChB,MAEU,CAAC;AAEd,eAAO,MAAM,eAAe,GAAI,OAAO,KAAK,GAAG,SAAS,EAAE,QAAQ,UAAU,CAAC,OAAO,SAAS,CAAC,EAAE,qBAAkB,KAAG,MAAM,EAgB1H,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,UAAU,QAAQ,EAAE,QAAQ,UAAU,CAAC,OAAO,SAAS,CAAC,KAAG,MAAM,EAW/F,CAAC"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { getLabels } from "../locales/index.js";
|
|
3
|
+
export const PAGE = {
|
|
4
|
+
margin: 48,
|
|
5
|
+
width: 595.28,
|
|
6
|
+
height: 841.89,
|
|
7
|
+
footerOffset: 64,
|
|
8
|
+
headerTop: 42,
|
|
9
|
+
lineGap: 14
|
|
10
|
+
};
|
|
11
|
+
export const DEFAULT_COLORS = {
|
|
12
|
+
primary: "#173d73",
|
|
13
|
+
onPrimary: "#ffffff",
|
|
14
|
+
text: "#111827",
|
|
15
|
+
metaText: "#4b5563",
|
|
16
|
+
mutedText: "#6b7280",
|
|
17
|
+
border: "#d1d5db",
|
|
18
|
+
footerText: "#9ca3af"
|
|
19
|
+
};
|
|
20
|
+
const COMMON_ARABIC_FONT_SETS = [
|
|
21
|
+
{
|
|
22
|
+
regular: "/usr/share/fonts/truetype/noto/NotoNaskhArabic-Regular.ttf",
|
|
23
|
+
bold: "/usr/share/fonts/truetype/noto/NotoNaskhArabic-Bold.ttf"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
regular: "/usr/share/fonts/opentype/noto/NotoNaskhArabic-Regular.ttf",
|
|
27
|
+
bold: "/usr/share/fonts/opentype/noto/NotoNaskhArabic-Bold.ttf"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
regular: "/usr/share/fonts/truetype/noto/NotoSansArabic-Regular.ttf",
|
|
31
|
+
bold: "/usr/share/fonts/truetype/noto/NotoSansArabic-Bold.ttf"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
regular: "/usr/share/fonts/opentype/noto/NotoSansArabic-Regular.ttf",
|
|
35
|
+
bold: "/usr/share/fonts/opentype/noto/NotoSansArabic-Bold.ttf"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
regular: "/usr/share/fonts/truetype/amiri/Amiri-Regular.ttf",
|
|
39
|
+
bold: "/usr/share/fonts/truetype/amiri/Amiri-Bold.ttf"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
regular: "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf",
|
|
43
|
+
bold: "/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
regular: "/Library/Fonts/Arial Unicode.ttf",
|
|
47
|
+
bold: "/Library/Fonts/Arial Unicode.ttf"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
regular: "/System/Library/Fonts/Supplemental/Arial Unicode.ttf",
|
|
51
|
+
bold: "/System/Library/Fonts/Supplemental/Arial Unicode.ttf"
|
|
52
|
+
}
|
|
53
|
+
];
|
|
54
|
+
const isPngBuffer = (buffer) => buffer.length >= 8
|
|
55
|
+
&& buffer[0] === 0x89
|
|
56
|
+
&& buffer[1] === 0x50
|
|
57
|
+
&& buffer[2] === 0x4e
|
|
58
|
+
&& buffer[3] === 0x47;
|
|
59
|
+
const isJpegBuffer = (buffer) => buffer.length >= 3
|
|
60
|
+
&& buffer[0] === 0xff
|
|
61
|
+
&& buffer[1] === 0xd8
|
|
62
|
+
&& buffer[2] === 0xff;
|
|
63
|
+
const normalizeFontPair = (regular, bold) => {
|
|
64
|
+
if (!regular && !bold) {
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
regular: regular ?? bold,
|
|
69
|
+
bold: bold ?? regular
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
const resolveSystemArabicFonts = () => {
|
|
73
|
+
for (const candidate of COMMON_ARABIC_FONT_SETS) {
|
|
74
|
+
if (existsSync(candidate.regular) && existsSync(candidate.bold)) {
|
|
75
|
+
return { regular: candidate.regular, bold: candidate.bold };
|
|
76
|
+
}
|
|
77
|
+
if (existsSync(candidate.regular)) {
|
|
78
|
+
return { regular: candidate.regular, bold: candidate.regular };
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return undefined;
|
|
82
|
+
};
|
|
83
|
+
export const collectPdf = async (doc) => new Promise((resolve, reject) => {
|
|
84
|
+
const chunks = [];
|
|
85
|
+
doc.on("data", (chunk) => {
|
|
86
|
+
chunks.push(chunk);
|
|
87
|
+
});
|
|
88
|
+
doc.on("end", () => {
|
|
89
|
+
resolve(new Uint8Array(Buffer.concat(chunks)));
|
|
90
|
+
});
|
|
91
|
+
doc.on("error", reject);
|
|
92
|
+
});
|
|
93
|
+
export const fetchLogo = async (logoUrl) => {
|
|
94
|
+
const response = await fetch(logoUrl);
|
|
95
|
+
if (!response.ok) {
|
|
96
|
+
throw new Error(`Unable to fetch logo from ${logoUrl}: ${response.status} ${response.statusText}`);
|
|
97
|
+
}
|
|
98
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
99
|
+
const buffer = Buffer.from(arrayBuffer);
|
|
100
|
+
if (isPngBuffer(buffer) || isJpegBuffer(buffer)) {
|
|
101
|
+
return buffer;
|
|
102
|
+
}
|
|
103
|
+
throw new Error(`Unsupported logo format at ${logoUrl}. Remote logos currently support PNG and JPEG only.`);
|
|
104
|
+
};
|
|
105
|
+
export const useFont = (doc, fontPath, fallback) => {
|
|
106
|
+
if (fontPath) {
|
|
107
|
+
doc.font(fontPath);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
doc.font(fallback);
|
|
111
|
+
};
|
|
112
|
+
export const resolvePdfFonts = (document, options) => {
|
|
113
|
+
const explicitFonts = normalizeFontPair(options?.fonts?.regular, options?.fonts?.bold);
|
|
114
|
+
if (document.locale !== "ar-MA") {
|
|
115
|
+
return explicitFonts;
|
|
116
|
+
}
|
|
117
|
+
if (explicitFonts) {
|
|
118
|
+
return explicitFonts;
|
|
119
|
+
}
|
|
120
|
+
const systemFonts = resolveSystemArabicFonts();
|
|
121
|
+
if (systemFonts) {
|
|
122
|
+
return systemFonts;
|
|
123
|
+
}
|
|
124
|
+
throw new Error("Arabic PDF rendering requires Arabic-capable fonts. Provide options.fonts.regular/options.fonts.bold or install a common system font such as Noto Naskh Arabic, Noto Sans Arabic, Amiri, or DejaVu Sans.");
|
|
125
|
+
};
|
|
126
|
+
export const truncateText = (doc, value, width) => {
|
|
127
|
+
if (doc.widthOfString(value) <= width) {
|
|
128
|
+
return value;
|
|
129
|
+
}
|
|
130
|
+
let truncated = value;
|
|
131
|
+
while (truncated.length > 0 && doc.widthOfString(`${truncated}...`) > width) {
|
|
132
|
+
truncated = truncated.slice(0, -1);
|
|
133
|
+
}
|
|
134
|
+
return truncated.length > 0 ? `${truncated}...` : "...";
|
|
135
|
+
};
|
|
136
|
+
export const drawFixedText = (doc, text, x, y, options) => {
|
|
137
|
+
const previousX = doc.x;
|
|
138
|
+
const previousY = doc.y;
|
|
139
|
+
doc.x = x;
|
|
140
|
+
doc.y = y;
|
|
141
|
+
doc.text(text, x, y, options);
|
|
142
|
+
doc.x = previousX;
|
|
143
|
+
doc.y = previousY;
|
|
144
|
+
return y + doc.heightOfString(text, options);
|
|
145
|
+
};
|
|
146
|
+
export const normalizeFooterText = (footer) => footer
|
|
147
|
+
.split(/\r?\n/)
|
|
148
|
+
.map((line) => line.trim())
|
|
149
|
+
.join("\n");
|
|
150
|
+
export const ensureSectionSpace = (doc, y, requiredHeight) => {
|
|
151
|
+
const contentBottom = PAGE.height - PAGE.margin - 8;
|
|
152
|
+
if (y + requiredHeight <= contentBottom) {
|
|
153
|
+
return y;
|
|
154
|
+
}
|
|
155
|
+
doc.addPage();
|
|
156
|
+
return PAGE.margin;
|
|
157
|
+
};
|
|
158
|
+
export const drawLabelValue = (doc, x, y, label, value, width, align, color) => {
|
|
159
|
+
doc.fillColor(color).fontSize(10);
|
|
160
|
+
return drawFixedText(doc, `${label}: ${value}`, x, y, { width, align });
|
|
161
|
+
};
|
|
162
|
+
export const resolveColors = (colors) => ({
|
|
163
|
+
...DEFAULT_COLORS,
|
|
164
|
+
...colors
|
|
165
|
+
});
|
|
166
|
+
const getWrappedRowHeight = (doc, text, width, minHeight, options) => {
|
|
167
|
+
const textHeight = doc.heightOfString(text, { ...options, width });
|
|
168
|
+
return Math.max(minHeight, Math.ceil(textHeight + 12));
|
|
169
|
+
};
|
|
170
|
+
export const getMaxRowHeight = (doc, cells, minHeight) => cells.reduce((maxHeight, cell) => (Math.max(maxHeight, getWrappedRowHeight(doc, cell.text, cell.width, minHeight, cell.options))), minHeight);
|
|
171
|
+
export const buildPartyLines = (party, labels, includeName = true) => {
|
|
172
|
+
if (!party) {
|
|
173
|
+
return [];
|
|
174
|
+
}
|
|
175
|
+
return [
|
|
176
|
+
includeName ? (party.name ?? "") : "",
|
|
177
|
+
...(party.addressLines ?? []),
|
|
178
|
+
[party.city, party.country].filter(Boolean).join(", "),
|
|
179
|
+
party.phone ? `Tel: ${party.phone}` : "",
|
|
180
|
+
party.email ? `Email: ${party.email}` : "",
|
|
181
|
+
party.taxId ? `${labels.if}: ${party.taxId}` : "",
|
|
182
|
+
party.ice ? `${labels.ice}: ${party.ice}` : "",
|
|
183
|
+
party.if ? `${labels.if}: ${party.if}` : "",
|
|
184
|
+
party.rc ? `${labels.rc}: ${party.rc}` : ""
|
|
185
|
+
].filter((line) => line.length > 0);
|
|
186
|
+
};
|
|
187
|
+
export const buildBankLines = (bankInfo, labels) => {
|
|
188
|
+
const baseLines = [
|
|
189
|
+
`${labels.bankName}: ${bankInfo.bankName}`,
|
|
190
|
+
`${labels.holderName}: ${bankInfo.holderName}`
|
|
191
|
+
];
|
|
192
|
+
if (bankInfo.type === "local") {
|
|
193
|
+
return [...baseLines, `${labels.rib}: ${bankInfo.rib}`];
|
|
194
|
+
}
|
|
195
|
+
return [...baseLines, `${labels.swiftCode}: ${bankInfo.swiftCode}`, `${labels.iban}: ${bankInfo.iban}`];
|
|
196
|
+
};
|
|
197
|
+
//# sourceMappingURL=pdf-support.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdf-support.js","sourceRoot":"","sources":["../../src/renderers/pdf-support.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf.d.ts","sourceRoot":"","sources":["../../src/renderers/pdf.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"pdf.d.ts","sourceRoot":"","sources":["../../src/renderers/pdf.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAoB/E,eAAO,MAAM,iBAAiB,GAC5B,UAAU,oBAAoB,EAC9B,UAAU,gBAAgB,KACzB,OAAO,CAAC,UAAU,CA8WpB,CAAC"}
|
package/dist/renderers/pdf.js
CHANGED
|
@@ -1,133 +1,11 @@
|
|
|
1
1
|
import PDFDocument from "pdfkit";
|
|
2
2
|
import { getLabels } from "../locales/index.js";
|
|
3
3
|
import { formatDate, formatMoney } from "../utils/formatting.js";
|
|
4
|
-
|
|
5
|
-
margin: 48,
|
|
6
|
-
width: 595.28,
|
|
7
|
-
height: 841.89,
|
|
8
|
-
footerOffset: 64,
|
|
9
|
-
headerTop: 42,
|
|
10
|
-
lineGap: 14
|
|
11
|
-
};
|
|
12
|
-
const collectPdf = async (doc) => new Promise((resolve, reject) => {
|
|
13
|
-
const chunks = [];
|
|
14
|
-
doc.on("data", (chunk) => {
|
|
15
|
-
chunks.push(chunk);
|
|
16
|
-
});
|
|
17
|
-
doc.on("end", () => {
|
|
18
|
-
resolve(new Uint8Array(Buffer.concat(chunks)));
|
|
19
|
-
});
|
|
20
|
-
doc.on("error", reject);
|
|
21
|
-
});
|
|
22
|
-
const isPngBuffer = (buffer) => buffer.length >= 8
|
|
23
|
-
&& buffer[0] === 0x89
|
|
24
|
-
&& buffer[1] === 0x50
|
|
25
|
-
&& buffer[2] === 0x4e
|
|
26
|
-
&& buffer[3] === 0x47;
|
|
27
|
-
const isJpegBuffer = (buffer) => buffer.length >= 3
|
|
28
|
-
&& buffer[0] === 0xff
|
|
29
|
-
&& buffer[1] === 0xd8
|
|
30
|
-
&& buffer[2] === 0xff;
|
|
31
|
-
const fetchLogo = async (logoUrl) => {
|
|
32
|
-
const response = await fetch(logoUrl);
|
|
33
|
-
if (!response.ok) {
|
|
34
|
-
throw new Error(`Unable to fetch logo from ${logoUrl}: ${response.status} ${response.statusText}`);
|
|
35
|
-
}
|
|
36
|
-
const arrayBuffer = await response.arrayBuffer();
|
|
37
|
-
const buffer = Buffer.from(arrayBuffer);
|
|
38
|
-
if (isPngBuffer(buffer) || isJpegBuffer(buffer)) {
|
|
39
|
-
return buffer;
|
|
40
|
-
}
|
|
41
|
-
throw new Error(`Unsupported logo format at ${logoUrl}. Remote logos currently support PNG and JPEG only.`);
|
|
42
|
-
};
|
|
43
|
-
const useFont = (doc, fontPath, fallback) => {
|
|
44
|
-
if (fontPath) {
|
|
45
|
-
doc.font(fontPath);
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
doc.font(fallback);
|
|
49
|
-
};
|
|
50
|
-
const requireArabicFontsIfNeeded = (document, options) => {
|
|
51
|
-
if (document.locale !== "ar-MA") {
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
if (!options?.fonts?.regular || !options.fonts.bold) {
|
|
55
|
-
throw new Error("Arabic PDF rendering requires options.fonts.regular and options.fonts.bold pointing to Arabic-capable TTF/OTF font files.");
|
|
56
|
-
}
|
|
57
|
-
};
|
|
58
|
-
const truncateText = (doc, value, width) => {
|
|
59
|
-
if (doc.widthOfString(value) <= width) {
|
|
60
|
-
return value;
|
|
61
|
-
}
|
|
62
|
-
let truncated = value;
|
|
63
|
-
while (truncated.length > 0 && doc.widthOfString(`${truncated}...`) > width) {
|
|
64
|
-
truncated = truncated.slice(0, -1);
|
|
65
|
-
}
|
|
66
|
-
return truncated.length > 0 ? `${truncated}...` : "...";
|
|
67
|
-
};
|
|
68
|
-
const drawFixedText = (doc, text, x, y, options) => {
|
|
69
|
-
const previousX = doc.x;
|
|
70
|
-
const previousY = doc.y;
|
|
71
|
-
doc.x = x;
|
|
72
|
-
doc.y = y;
|
|
73
|
-
doc.text(text, x, y, options);
|
|
74
|
-
doc.x = previousX;
|
|
75
|
-
doc.y = previousY;
|
|
76
|
-
return y + doc.heightOfString(text, options);
|
|
77
|
-
};
|
|
78
|
-
const normalizeFooterText = (footer) => footer
|
|
79
|
-
.split(/\r?\n/)
|
|
80
|
-
.map((line) => line.trim())
|
|
81
|
-
.join("\n");
|
|
82
|
-
const ensureSectionSpace = (doc, y, requiredHeight) => {
|
|
83
|
-
const contentBottom = PAGE.height - PAGE.margin - 8;
|
|
84
|
-
if (y + requiredHeight <= contentBottom) {
|
|
85
|
-
return y;
|
|
86
|
-
}
|
|
87
|
-
doc.addPage();
|
|
88
|
-
return PAGE.margin;
|
|
89
|
-
};
|
|
90
|
-
const drawLabelValue = (doc, x, y, label, value, width, align) => {
|
|
91
|
-
doc.fillColor("#1b2430").fontSize(10);
|
|
92
|
-
return drawFixedText(doc, `${label}: ${value}`, x, y, { width, align });
|
|
93
|
-
};
|
|
94
|
-
const getWrappedRowHeight = (doc, text, width, minHeight, options) => {
|
|
95
|
-
const textHeight = doc.heightOfString(text, { ...options, width });
|
|
96
|
-
return Math.max(minHeight, Math.ceil(textHeight + 12));
|
|
97
|
-
};
|
|
98
|
-
const getMaxRowHeight = (doc, cells, minHeight) => {
|
|
99
|
-
const tallestCell = cells.reduce((maxHeight, cell) => (Math.max(maxHeight, getWrappedRowHeight(doc, cell.text, cell.width, minHeight, cell.options))), minHeight);
|
|
100
|
-
return tallestCell;
|
|
101
|
-
};
|
|
102
|
-
const buildPartyLines = (party, labels, includeName = true) => {
|
|
103
|
-
if (!party) {
|
|
104
|
-
return [];
|
|
105
|
-
}
|
|
106
|
-
return [
|
|
107
|
-
includeName ? (party.name ?? "") : "",
|
|
108
|
-
...(party.addressLines ?? []),
|
|
109
|
-
[party.city, party.country].filter(Boolean).join(", "),
|
|
110
|
-
party.phone ? `Tel: ${party.phone}` : "",
|
|
111
|
-
party.email ? `Email: ${party.email}` : "",
|
|
112
|
-
party.taxId ? `${labels.if}: ${party.taxId}` : "",
|
|
113
|
-
party.ice ? `${labels.ice}: ${party.ice}` : "",
|
|
114
|
-
party.if ? `${labels.if}: ${party.if}` : "",
|
|
115
|
-
party.rc ? `${labels.rc}: ${party.rc}` : ""
|
|
116
|
-
].filter((line) => line.length > 0);
|
|
117
|
-
};
|
|
118
|
-
const buildBankLines = (bankInfo, labels) => {
|
|
119
|
-
const baseLines = [
|
|
120
|
-
`${labels.bankName}: ${bankInfo.bankName}`,
|
|
121
|
-
`${labels.holderName}: ${bankInfo.holderName}`
|
|
122
|
-
];
|
|
123
|
-
if (bankInfo.type === "local") {
|
|
124
|
-
return [...baseLines, `${labels.rib}: ${bankInfo.rib}`];
|
|
125
|
-
}
|
|
126
|
-
return [...baseLines, `${labels.swiftCode}: ${bankInfo.swiftCode}`, `${labels.iban}: ${bankInfo.iban}`];
|
|
127
|
-
};
|
|
4
|
+
import { PAGE, buildBankLines, buildPartyLines, collectPdf, drawFixedText, drawLabelValue, ensureSectionSpace, fetchLogo, getMaxRowHeight, normalizeFooterText, resolveColors, resolvePdfFonts, truncateText, useFont } from "./pdf-support.js";
|
|
128
5
|
export const renderDocumentPdf = async (document, options) => {
|
|
129
|
-
requireArabicFontsIfNeeded(document, options);
|
|
130
6
|
const labels = getLabels(document.locale);
|
|
7
|
+
const colors = resolveColors(document.colors);
|
|
8
|
+
const fonts = resolvePdfFonts(document, options);
|
|
131
9
|
const isArabic = document.locale === "ar-MA";
|
|
132
10
|
const isDeliveryNote = document.type === "deliveryNote";
|
|
133
11
|
const align = isArabic ? "right" : "left";
|
|
@@ -151,6 +29,7 @@ export const renderDocumentPdf = async (document, options) => {
|
|
|
151
29
|
const trailingSectionGapY = 14;
|
|
152
30
|
const notesBodyOffsetY = 14;
|
|
153
31
|
const trailingBottomGapY = 10;
|
|
32
|
+
const contentBottomY = PAGE.height - PAGE.margin - 8;
|
|
154
33
|
// pdfkit is chosen because it stays lightweight while supporting custom TTF/OTF fonts,
|
|
155
34
|
// which is necessary for Arabic-capable PDF output in a Node-only library.
|
|
156
35
|
const doc = new PDFDocument({
|
|
@@ -167,6 +46,14 @@ export const renderDocumentPdf = async (document, options) => {
|
|
|
167
46
|
const logoBuffer = document.issuer?.logo ? await fetchLogo(document.issuer.logo) : null;
|
|
168
47
|
const issuerTextX = leftColumnX + (logoBuffer ? 92 : 0);
|
|
169
48
|
const issuerTextWidth = logoBuffer ? 148 : 240;
|
|
49
|
+
const ensureTableRowSpace = (currentY, rowHeight, drawHeader) => {
|
|
50
|
+
if (currentY + rowHeight <= contentBottomY) {
|
|
51
|
+
return currentY;
|
|
52
|
+
}
|
|
53
|
+
doc.addPage();
|
|
54
|
+
drawHeader(PAGE.margin);
|
|
55
|
+
return PAGE.margin + 24;
|
|
56
|
+
};
|
|
170
57
|
if (logoBuffer) {
|
|
171
58
|
doc.image(logoBuffer, leftColumnX, PAGE.headerTop, {
|
|
172
59
|
fit: logoFit
|
|
@@ -176,8 +63,8 @@ export const renderDocumentPdf = async (document, options) => {
|
|
|
176
63
|
const issuerName = document.issuer?.name;
|
|
177
64
|
const issuerLines = buildPartyLines(document.issuer, labels, false);
|
|
178
65
|
if (issuerName) {
|
|
179
|
-
useFont(doc,
|
|
180
|
-
doc.fillColor(
|
|
66
|
+
useFont(doc, fonts?.bold, "Helvetica-Bold");
|
|
67
|
+
doc.fillColor(colors.primary).fontSize(17);
|
|
181
68
|
drawFixedText(doc, issuerName, issuerTextX, PAGE.headerTop + issuerNameOffsetY, {
|
|
182
69
|
width: issuerTextWidth,
|
|
183
70
|
align
|
|
@@ -185,8 +72,8 @@ export const renderDocumentPdf = async (document, options) => {
|
|
|
185
72
|
issuerHeaderBottomY = PAGE.headerTop + issuerDetailsOffsetY - 2;
|
|
186
73
|
}
|
|
187
74
|
if (issuerLines.length > 0) {
|
|
188
|
-
useFont(doc,
|
|
189
|
-
doc.fillColor(
|
|
75
|
+
useFont(doc, fonts?.regular, "Helvetica");
|
|
76
|
+
doc.fillColor(colors.text).fontSize(9);
|
|
190
77
|
issuerHeaderBottomY = drawFixedText(doc, issuerLines.join("\n"), issuerTextX, PAGE.headerTop + (issuerName ? issuerDetailsOffsetY : 0), {
|
|
191
78
|
width: issuerTextWidth,
|
|
192
79
|
align,
|
|
@@ -198,8 +85,8 @@ export const renderDocumentPdf = async (document, options) => {
|
|
|
198
85
|
const bankLines = !isDeliveryNote && document.bankInfo ? buildBankLines(document.bankInfo, labels) : null;
|
|
199
86
|
let titleBottomY = PAGE.headerTop;
|
|
200
87
|
if (document.title) {
|
|
201
|
-
useFont(doc,
|
|
202
|
-
doc.fillColor(
|
|
88
|
+
useFont(doc, fonts?.bold, "Helvetica-Bold");
|
|
89
|
+
doc.fillColor(colors.text).fontSize(20);
|
|
203
90
|
titleBottomY = drawFixedText(doc, document.title, rightColumnX, PAGE.headerTop, {
|
|
204
91
|
width: columnWidth,
|
|
205
92
|
align,
|
|
@@ -208,37 +95,37 @@ export const renderDocumentPdf = async (document, options) => {
|
|
|
208
95
|
}
|
|
209
96
|
let metaBottomY = titleBottomY;
|
|
210
97
|
if (document.number) {
|
|
211
|
-
useFont(doc,
|
|
212
|
-
doc.fillColor(
|
|
98
|
+
useFont(doc, fonts?.regular, "Helvetica");
|
|
99
|
+
doc.fillColor(colors.metaText).fontSize(9);
|
|
213
100
|
metaBottomY = drawFixedText(doc, `${labels.number}: ${document.number}`, rightColumnX, titleBottomY + titleMetaGapY, {
|
|
214
101
|
width: columnWidth,
|
|
215
102
|
align
|
|
216
103
|
});
|
|
217
104
|
}
|
|
218
105
|
if (document.issueDate) {
|
|
219
|
-
metaBottomY = Math.max(metaBottomY, drawLabelValue(doc, metaTopX, metaBottomY + metaRowGapY, labels.issueDate, formatDate(document.issueDate, document.locale), columnWidth, align));
|
|
106
|
+
metaBottomY = Math.max(metaBottomY, drawLabelValue(doc, metaTopX, metaBottomY + metaRowGapY, labels.issueDate, formatDate(document.issueDate, document.locale), columnWidth, align, colors.metaText));
|
|
220
107
|
}
|
|
221
108
|
if (document.dueDate) {
|
|
222
|
-
metaBottomY = Math.max(metaBottomY, drawLabelValue(doc, metaTopX, metaBottomY + metaRowGapY, labels.dueDate, formatDate(document.dueDate, document.locale), columnWidth, align));
|
|
109
|
+
metaBottomY = Math.max(metaBottomY, drawLabelValue(doc, metaTopX, metaBottomY + metaRowGapY, labels.dueDate, formatDate(document.dueDate, document.locale), columnWidth, align, colors.metaText));
|
|
223
110
|
}
|
|
224
111
|
if (!isDeliveryNote && document.currency) {
|
|
225
|
-
metaBottomY = Math.max(metaBottomY, drawLabelValue(doc, metaTopX, metaBottomY + metaRowGapY, labels.currency, document.currency, columnWidth, align));
|
|
112
|
+
metaBottomY = Math.max(metaBottomY, drawLabelValue(doc, metaTopX, metaBottomY + metaRowGapY, labels.currency, document.currency, columnWidth, align, colors.metaText));
|
|
226
113
|
}
|
|
227
114
|
const minimumHeaderBottomY = PAGE.headerTop + (isDeliveryNote ? 72 : 48);
|
|
228
115
|
const headerBottomY = Math.max(metaBottomY, issuerHeaderBottomY, minimumHeaderBottomY);
|
|
229
116
|
let y = headerBottomY + tableTopGapY;
|
|
230
117
|
if (sellerLines.length > 0 || clientLines.length > 0 || bankLines) {
|
|
231
118
|
const sectionsTopY = headerBottomY + sectionGapY;
|
|
232
|
-
useFont(doc,
|
|
233
|
-
doc.fillColor(
|
|
119
|
+
useFont(doc, fonts?.bold, "Helvetica-Bold");
|
|
120
|
+
doc.fillColor(colors.mutedText).fontSize(10);
|
|
234
121
|
if (sellerLines.length > 0) {
|
|
235
122
|
drawFixedText(doc, labels.seller, leftColumnX, sectionsTopY, { width: columnWidth, align });
|
|
236
123
|
}
|
|
237
124
|
if (clientLines.length > 0) {
|
|
238
125
|
drawFixedText(doc, labels.client, rightColumnX, sectionsTopY, { width: columnWidth, align });
|
|
239
126
|
}
|
|
240
|
-
useFont(doc,
|
|
241
|
-
doc.fillColor(
|
|
127
|
+
useFont(doc, fonts?.regular, "Helvetica");
|
|
128
|
+
doc.fillColor(colors.text).fontSize(9);
|
|
242
129
|
let leftSectionBottomY = sectionsTopY;
|
|
243
130
|
if (sellerLines.length > 0) {
|
|
244
131
|
leftSectionBottomY = drawFixedText(doc, sellerLines.join("\n"), leftColumnX, sectionsTopY + sectionBodyOffsetY, {
|
|
@@ -248,11 +135,11 @@ export const renderDocumentPdf = async (document, options) => {
|
|
|
248
135
|
});
|
|
249
136
|
}
|
|
250
137
|
if (bankLines) {
|
|
251
|
-
useFont(doc,
|
|
252
|
-
doc.fillColor(
|
|
138
|
+
useFont(doc, fonts?.bold, "Helvetica-Bold");
|
|
139
|
+
doc.fillColor(colors.mutedText).fontSize(9);
|
|
253
140
|
drawFixedText(doc, labels.bankDetails, leftColumnX, leftSectionBottomY + bankSectionGapY, { width: columnWidth, align });
|
|
254
|
-
useFont(doc,
|
|
255
|
-
doc.fillColor(
|
|
141
|
+
useFont(doc, fonts?.regular, "Helvetica");
|
|
142
|
+
doc.fillColor(colors.text).fontSize(9);
|
|
256
143
|
leftSectionBottomY = drawFixedText(doc, bankLines.join("\n"), leftColumnX, leftSectionBottomY + bankSectionBodyOffsetY, {
|
|
257
144
|
width: 270,
|
|
258
145
|
align,
|
|
@@ -272,8 +159,6 @@ export const renderDocumentPdf = async (document, options) => {
|
|
|
272
159
|
const items = document.items ?? [];
|
|
273
160
|
const hasItems = items.length > 0;
|
|
274
161
|
if (hasItems) {
|
|
275
|
-
doc.fillColor("#173d73").rect(tableX, y, tableWidth, 24).fill();
|
|
276
|
-
useFont(doc, options?.fonts?.bold, "Helvetica-Bold");
|
|
277
162
|
if (isDeliveryNote) {
|
|
278
163
|
const columns = {
|
|
279
164
|
itemX: tableX + 12,
|
|
@@ -281,11 +166,20 @@ export const renderDocumentPdf = async (document, options) => {
|
|
|
281
166
|
quantityX: tableX + 400,
|
|
282
167
|
quantityWidth: 50
|
|
283
168
|
};
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
169
|
+
const drawHeader = (headerY) => {
|
|
170
|
+
doc.fillColor(colors.primary).rect(tableX, headerY, tableWidth, 24).fill();
|
|
171
|
+
useFont(doc, fonts?.bold, "Helvetica-Bold");
|
|
172
|
+
doc.fillColor(colors.onPrimary).fontSize(10);
|
|
173
|
+
drawFixedText(doc, labels.item, columns.itemX, headerY + 7, { width: columns.itemWidth, align });
|
|
174
|
+
drawFixedText(doc, labels.quantity, columns.quantityX, headerY + 7, { width: columns.quantityWidth, align: "right" });
|
|
175
|
+
};
|
|
176
|
+
if (y + 24 > contentBottomY) {
|
|
177
|
+
doc.addPage();
|
|
178
|
+
y = PAGE.margin;
|
|
179
|
+
}
|
|
180
|
+
drawHeader(y);
|
|
287
181
|
y += 24;
|
|
288
|
-
useFont(doc,
|
|
182
|
+
useFont(doc, fonts?.regular, "Helvetica");
|
|
289
183
|
for (const item of items) {
|
|
290
184
|
const itemLabel = item.description ? `${item.name} - ${item.description}` : item.name;
|
|
291
185
|
const quantityLabel = `${item.quantity}${item.unit ? ` ${item.unit}` : ""}`;
|
|
@@ -293,8 +187,9 @@ export const renderDocumentPdf = async (document, options) => {
|
|
|
293
187
|
{ text: itemLabel, width: columns.itemWidth, options: { align, lineGap: 1 } },
|
|
294
188
|
{ text: quantityLabel, width: columns.quantityWidth, options: { align: "right", lineGap: 1 } }
|
|
295
189
|
], 24);
|
|
296
|
-
|
|
297
|
-
doc.
|
|
190
|
+
y = ensureTableRowSpace(y, rowHeight, drawHeader);
|
|
191
|
+
doc.strokeColor(colors.border).lineWidth(1).rect(tableX, y, tableWidth, rowHeight).stroke();
|
|
192
|
+
doc.fillColor(colors.text).fontSize(10);
|
|
298
193
|
drawFixedText(doc, truncateText(doc, itemLabel, columns.itemWidth), columns.itemX, y + 8, {
|
|
299
194
|
width: columns.itemWidth,
|
|
300
195
|
align
|
|
@@ -318,13 +213,22 @@ export const renderDocumentPdf = async (document, options) => {
|
|
|
318
213
|
amountX: tableX + 392,
|
|
319
214
|
amountWidth: 95
|
|
320
215
|
};
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
216
|
+
const drawHeader = (headerY) => {
|
|
217
|
+
doc.fillColor(colors.primary).rect(tableX, headerY, tableWidth, 24).fill();
|
|
218
|
+
useFont(doc, fonts?.bold, "Helvetica-Bold");
|
|
219
|
+
doc.fillColor(colors.onPrimary).fontSize(10);
|
|
220
|
+
drawFixedText(doc, labels.item, columns.itemX, headerY + 7, { width: columns.itemWidth, align });
|
|
221
|
+
drawFixedText(doc, labels.quantity, columns.quantityX, headerY + 7, { width: columns.quantityWidth, align: "right" });
|
|
222
|
+
drawFixedText(doc, labels.unitPrice, columns.unitPriceX, headerY + 7, { width: columns.unitPriceWidth, align: "right" });
|
|
223
|
+
drawFixedText(doc, labels.amount, columns.amountX, headerY + 7, { width: columns.amountWidth, align: "right" });
|
|
224
|
+
};
|
|
225
|
+
if (y + 24 > contentBottomY) {
|
|
226
|
+
doc.addPage();
|
|
227
|
+
y = PAGE.margin;
|
|
228
|
+
}
|
|
229
|
+
drawHeader(y);
|
|
326
230
|
y += 24;
|
|
327
|
-
useFont(doc,
|
|
231
|
+
useFont(doc, fonts?.regular, "Helvetica");
|
|
328
232
|
for (const item of items) {
|
|
329
233
|
const itemLabel = item.description ? `${item.name} - ${item.description}` : item.name;
|
|
330
234
|
const quantityLabel = `${item.quantity}${item.unit ? ` ${item.unit}` : ""}`;
|
|
@@ -332,8 +236,9 @@ export const renderDocumentPdf = async (document, options) => {
|
|
|
332
236
|
{ text: itemLabel, width: columns.itemWidth, options: { align, lineGap: 1 } },
|
|
333
237
|
{ text: quantityLabel, width: columns.quantityWidth, options: { align: "right", lineGap: 1 } }
|
|
334
238
|
], 24);
|
|
335
|
-
|
|
336
|
-
doc.
|
|
239
|
+
y = ensureTableRowSpace(y, rowHeight, drawHeader);
|
|
240
|
+
doc.strokeColor(colors.border).lineWidth(1).rect(tableX, y, tableWidth, rowHeight).stroke();
|
|
241
|
+
doc.fillColor(colors.text).fontSize(10);
|
|
337
242
|
drawFixedText(doc, itemLabel, columns.itemX, y + 8, {
|
|
338
243
|
width: columns.itemWidth,
|
|
339
244
|
align,
|
|
@@ -384,11 +289,11 @@ export const renderDocumentPdf = async (document, options) => {
|
|
|
384
289
|
y += trailingSectionGapY;
|
|
385
290
|
let trailingBottomY = y;
|
|
386
291
|
if (notes.length > 0) {
|
|
387
|
-
useFont(doc,
|
|
388
|
-
doc.fillColor(
|
|
292
|
+
useFont(doc, fonts?.bold, "Helvetica-Bold");
|
|
293
|
+
doc.fillColor(colors.mutedText).fontSize(10);
|
|
389
294
|
drawFixedText(doc, labels.notes, PAGE.margin, y, { width: notesWidth, align });
|
|
390
|
-
useFont(doc,
|
|
391
|
-
doc.fillColor(
|
|
295
|
+
useFont(doc, fonts?.regular, "Helvetica");
|
|
296
|
+
doc.fillColor(colors.text).fontSize(9);
|
|
392
297
|
trailingBottomY = drawFixedText(doc, notes.join("\n"), PAGE.margin, y + notesBodyOffsetY, {
|
|
393
298
|
width: notesWidth,
|
|
394
299
|
align,
|
|
@@ -397,10 +302,10 @@ export const renderDocumentPdf = async (document, options) => {
|
|
|
397
302
|
}
|
|
398
303
|
totals.forEach(([label, value], index) => {
|
|
399
304
|
const isTotal = index === totals.length - 1;
|
|
400
|
-
doc.fillColor(isTotal ?
|
|
401
|
-
doc.strokeColor(
|
|
402
|
-
useFont(doc, isTotal ?
|
|
403
|
-
doc.fillColor(isTotal ?
|
|
305
|
+
doc.fillColor(isTotal ? colors.primary : "white").rect(totalsX, y, 220, 24).fill();
|
|
306
|
+
doc.strokeColor(colors.border).lineWidth(1).rect(totalsX, y, 220, 24).stroke();
|
|
307
|
+
useFont(doc, isTotal ? fonts?.bold : fonts?.regular, isTotal ? "Helvetica-Bold" : "Helvetica");
|
|
308
|
+
doc.fillColor(isTotal ? colors.onPrimary : colors.text).fontSize(10);
|
|
404
309
|
drawFixedText(doc, label, totalsX + 10, y + 7, { width: 105, align: "left" });
|
|
405
310
|
drawFixedText(doc, truncateText(doc, value, 85), totalsX + 125, y + 7, { width: 85, align: "right" });
|
|
406
311
|
y += 24;
|
|
@@ -411,14 +316,14 @@ export const renderDocumentPdf = async (document, options) => {
|
|
|
411
316
|
const notesHeight = 12 + 12 + doc.heightOfString(notes.join("\n"), { width: tableWidth, align, lineGap: 1 }) + 8;
|
|
412
317
|
y = ensureSectionSpace(doc, y + trailingSectionGapY, notesHeight) - trailingSectionGapY;
|
|
413
318
|
y += trailingSectionGapY;
|
|
414
|
-
useFont(doc,
|
|
415
|
-
doc.fillColor(
|
|
319
|
+
useFont(doc, fonts?.bold, "Helvetica-Bold");
|
|
320
|
+
doc.fillColor(colors.mutedText).fontSize(10);
|
|
416
321
|
drawFixedText(doc, labels.notes, PAGE.margin, y, { width: tableWidth, align });
|
|
417
|
-
useFont(doc,
|
|
418
|
-
doc.fillColor(
|
|
322
|
+
useFont(doc, fonts?.regular, "Helvetica");
|
|
323
|
+
doc.fillColor(colors.text).fontSize(9);
|
|
419
324
|
drawFixedText(doc, notes.join("\n"), PAGE.margin, y + notesBodyOffsetY, { width: tableWidth, align, lineGap: 1 });
|
|
420
325
|
}
|
|
421
|
-
useFont(doc,
|
|
326
|
+
useFont(doc, fonts?.regular, "Helvetica");
|
|
422
327
|
const actualPageHeight = doc.page.height ?? 841.89;
|
|
423
328
|
const fallbackFooter = [document.title, document.number].filter(Boolean).join(" ");
|
|
424
329
|
const footerText = normalizeFooterText(document.footer ?? fallbackFooter);
|
|
@@ -430,7 +335,7 @@ export const renderDocumentPdf = async (document, options) => {
|
|
|
430
335
|
if (footerText.length > 0) {
|
|
431
336
|
const footerHeight = doc.heightOfString(footerText, footerOptions);
|
|
432
337
|
doc.page.margins.bottom = 0;
|
|
433
|
-
doc.fillColor(
|
|
338
|
+
doc.fillColor(colors.footerText).fontSize(8);
|
|
434
339
|
drawFixedText(doc, footerText, PAGE.margin, actualPageHeight - footerHeight, footerOptions);
|
|
435
340
|
}
|
|
436
341
|
doc.end();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf.js","sourceRoot":"","sources":["../../src/renderers/pdf.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pdf.js","sourceRoot":"","sources":["../../src/renderers/pdf.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ic-labs/invoice-kit",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.9",
|
|
4
4
|
"description": "Lightweight TypeScript library for generating Moroccan business documents as PDFs.",
|
|
5
5
|
"author": "Itri Cloud Labs",
|
|
6
6
|
"license": "MIT",
|
|
@@ -34,6 +34,8 @@
|
|
|
34
34
|
"scripts": {
|
|
35
35
|
"clean": "node -e \"import('node:fs/promises').then((fs) => fs.rm('dist', { recursive: true, force: true }))\"",
|
|
36
36
|
"build": "npm run clean && tsc -p tsconfig.json",
|
|
37
|
+
"test": "npm run build && npm run test:unit",
|
|
38
|
+
"test:unit": "node --test tests/*.test.mjs",
|
|
37
39
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
38
40
|
"smoke": "node smoke-test.mjs",
|
|
39
41
|
"prepublishOnly": "npm run typecheck && npm run build"
|