@ic-labs/invoice-kit 0.1.1 → 0.1.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/README.md CHANGED
@@ -27,6 +27,7 @@ It is designed for real business usage, not a demo. The package provides typed d
27
27
  - local transfer: bank name, holder name, RIB
28
28
  - international transfer: bank name, holder name, SWIFT, IBAN
29
29
  - Remote logo URL support in PDF headers
30
+ - Optional multiline footer rendered at the extreme bottom of the page
30
31
  - Delivery notes rendered without pricing information
31
32
 
32
33
  ## Installation
@@ -42,9 +43,16 @@ import { createInvoice } from "@ic-labs/invoice-kit";
42
43
 
43
44
  const invoice = createInvoice({
44
45
  number: "FAC-2026-0001",
45
- logo: "https://example.com/assets/logo.png",
46
- seller: {
46
+ issuer: {
47
47
  name: "IC Labs SARL",
48
+ logo: "https://example.com/assets/logo.png",
49
+ addressLines: ["Casablanca, Maroc"],
50
+ ice: "001234567890123",
51
+ if: "12345678",
52
+ rc: "56789"
53
+ },
54
+ seller: {
55
+ name: "IC Distribution SARL",
48
56
  addressLines: ["Casablanca, Maroc"],
49
57
  ice: "001234567890123",
50
58
  if: "12345678",
@@ -65,6 +73,7 @@ const invoice = createInvoice({
65
73
  paymentTerms: {
66
74
  label: "Paiement sous 30 jours"
67
75
  },
76
+ footer: "IC Labs SARL\ncontact@iclabs.ma\n+212600000000",
68
77
  bankInfo: {
69
78
  type: "local",
70
79
  bankName: "Attijariwafa Bank",
@@ -143,24 +152,54 @@ All document factories accept a typed object shaped like `DocumentInput`.
143
152
  ### Required fields
144
153
 
145
154
  - `number: string`
155
+ - `issuer: Issuer`
146
156
  - `seller: Party`
147
157
  - `client: Party`
148
158
  - `items: LineItemInput[]`
149
159
 
150
160
  ### Common optional fields
151
161
 
152
- - `logo?: string`
153
162
  - `issueDate?: Date`
154
163
  - `dueDate?: Date`
155
164
  - `currency?: string`
156
165
  - `vatRate?: number`
157
166
  - `discounts?: DiscountInput[]`
158
167
  - `notes?: string`
168
+ - `footer?: string`
159
169
  - `paymentTerms?: PaymentTerms`
160
170
  - `bankInfo?: BankInfo`
161
171
  - `locale?: "fr-MA" | "ar-MA"`
162
172
  - `title?: string`
163
173
 
174
+ ### `footer`
175
+
176
+ - `footer` is an optional string rendered centered at the extreme bottom of the PDF
177
+ - multiline strings are supported with `\n`
178
+ - when multiple lines are provided, rendering starts higher so the last line ends at the bottom edge
179
+ - if `footer` is omitted, the PDF falls back to the document title and number in the footer area
180
+
181
+ ### `Issuer`
182
+
183
+ ```ts
184
+ interface Issuer extends Party {
185
+ logo?: string;
186
+ }
187
+ ```
188
+
189
+ `issuer` is the document emitter and the source of header branding.
190
+
191
+ - `issuer.logo` is the logo rendered in the PDF header
192
+ - `issuer.name` is rendered in the header brand block
193
+ - issuer address and business identifiers render directly below the issuer name in the header
194
+
195
+ ### `seller`
196
+
197
+ `seller` is the commercial party shown in the document body.
198
+
199
+ - `seller` remains separate from `issuer`
200
+ - use `issuer` for brand/emitter identity and header logo
201
+ - use `seller` for the legal or operational selling entity shown in the document sections
202
+
164
203
  ### `Party`
165
204
 
166
205
  ```ts
@@ -181,7 +220,8 @@ interface Party {
181
220
  Notes:
182
221
 
183
222
  - `addressLines` must contain at least one line
184
- - seller identifiers `ICE`, `IF`, and `RC` are rendered directly inside seller details
223
+ - issuer identifiers `ICE`, `IF`, and `RC` are rendered directly inside issuer details
224
+ - seller identifiers `ICE`, `IF`, and `RC` are rendered in the seller section when provided
185
225
 
186
226
  ### `LineItemInput`
187
227
 
@@ -293,6 +333,7 @@ The package is tailored for Morocco:
293
333
 
294
334
  - `MAD` default currency
295
335
  - `TVA` terminology
336
+ - issuer company fields:
296
337
  - seller company fields:
297
338
  - `ICE`
298
339
  - `IF`
@@ -314,10 +355,14 @@ Example:
314
355
  const quote = createQuote({
315
356
  number: "DEV-2026-0012",
316
357
  locale: "ar-MA",
317
- seller: {
358
+ issuer: {
318
359
  name: "IC Labs SARL",
319
360
  addressLines: ["Casablanca"]
320
361
  },
362
+ seller: {
363
+ name: "IC Distribution SARL",
364
+ addressLines: ["Casablanca"]
365
+ },
321
366
  client: {
322
367
  name: "Client",
323
368
  addressLines: ["Rabat"]
@@ -344,15 +389,19 @@ Without custom fonts, Arabic glyph rendering is not reliable in PDF output.
344
389
 
345
390
  ## Remote Logo Support
346
391
 
347
- You can pass a remote image URL through `logo`.
392
+ You can pass a remote image URL through `issuer.logo`.
348
393
 
349
394
  ```ts
350
- logo: "https://example.com/assets/logo.png"
395
+ issuer: {
396
+ name: "IC Labs SARL",
397
+ logo: "https://example.com/assets/logo.png",
398
+ addressLines: ["Casablanca"]
399
+ }
351
400
  ```
352
401
 
353
402
  Behavior:
354
403
 
355
- - the library fetches the image itself during `toPDF()`
404
+ - the library fetches `issuer.logo` itself during `toPDF()`
356
405
  - the user only provides the URL
357
406
  - the logo is rendered in the document header
358
407
 
@@ -378,15 +427,16 @@ The library validates document input before building the document model.
378
427
  Examples of enforced rules:
379
428
 
380
429
  - `number` must be present
430
+ - issuer and client names must be non-empty
431
+ - issuer, seller, and client must have at least one address line
381
432
  - seller and client names must be non-empty
382
- - seller and client must have at least one address line
383
433
  - `items` must contain at least one line item
384
434
  - quantity must be greater than zero
385
435
  - financial documents require `unitPrice` or `price`
386
436
  - negative prices are rejected
387
437
  - negative discounts are rejected
388
438
  - `vatRate` must be between `0` and `1`
389
- - `logo` must be a valid `http` or `https` URL
439
+ - `issuer.logo` must be a valid `http` or `https` URL
390
440
  - bank fields must be present according to bank mode
391
441
 
392
442
  ## Rendering Behavior
@@ -395,6 +445,7 @@ Examples of enforced rules:
395
445
 
396
446
  Invoices, quotes, and purchase orders render:
397
447
 
448
+ - issuer block
398
449
  - seller block
399
450
  - client block
400
451
  - issue/due date
@@ -404,16 +455,19 @@ Invoices, quotes, and purchase orders render:
404
455
  - payment terms
405
456
  - bank details
406
457
  - notes
458
+ - footer
407
459
 
408
460
  ### Delivery notes
409
461
 
410
462
  Delivery notes render:
411
463
 
464
+ - issuer block
412
465
  - seller block
413
466
  - client block
414
467
  - issue/due date
415
468
  - item table with designation and quantity only
416
469
  - notes
470
+ - footer
417
471
 
418
472
  Delivery notes do not render:
419
473
 
@@ -435,13 +489,17 @@ import { createInvoice } from "@ic-labs/invoice-kit";
435
489
 
436
490
  const invoice = createInvoice({
437
491
  number: "FAC-2026-0020",
438
- seller: {
492
+ issuer: {
439
493
  name: "IC Labs SARL",
440
494
  addressLines: ["Casablanca"],
441
495
  ice: "001234567890123",
442
496
  if: "12345678",
443
497
  rc: "56789"
444
498
  },
499
+ seller: {
500
+ name: "IC Distribution SARL",
501
+ addressLines: ["Casablanca"]
502
+ },
445
503
  client: {
446
504
  name: "Noxel SAS",
447
505
  addressLines: ["Paris"]
@@ -455,6 +513,7 @@ const invoice = createInvoice({
455
513
  }
456
514
  ],
457
515
  vatRate: 0.2,
516
+ footer: "IC Labs SARL\ncontact@iclabs.ma",
458
517
  bankInfo: {
459
518
  type: "international",
460
519
  bankName: "BMCI Corporate",
@@ -472,10 +531,14 @@ import { createQuote } from "@ic-labs/invoice-kit";
472
531
 
473
532
  const quote = createQuote({
474
533
  number: "DEV-2026-0012",
475
- seller: {
534
+ issuer: {
476
535
  name: "IC Labs SARL",
477
536
  addressLines: ["Casablanca"]
478
537
  },
538
+ seller: {
539
+ name: "IC Distribution SARL",
540
+ addressLines: ["Casablanca"]
541
+ },
479
542
  client: {
480
543
  name: "Client",
481
544
  addressLines: ["Rabat"]
@@ -488,6 +551,7 @@ const quote = createQuote({
488
551
  }
489
552
  ],
490
553
  discounts: [{ type: "percentage", value: 0.05, label: "Remise devis" }],
554
+ footer: "Validite 15 jours\nwww.iclabs.ma",
491
555
  bankInfo: {
492
556
  type: "local",
493
557
  bankName: "Attijariwafa Bank",
@@ -504,10 +568,14 @@ import { createDeliveryNote } from "@ic-labs/invoice-kit";
504
568
 
505
569
  const deliveryNote = createDeliveryNote({
506
570
  number: "BL-2026-0015",
507
- seller: {
571
+ issuer: {
508
572
  name: "IC Labs SARL",
509
573
  addressLines: ["Casablanca"]
510
574
  },
575
+ seller: {
576
+ name: "IC Distribution SARL",
577
+ addressLines: ["Casablanca"]
578
+ },
511
579
  client: {
512
580
  name: "Client",
513
581
  addressLines: ["Rabat"]
@@ -516,7 +584,8 @@ const deliveryNote = createDeliveryNote({
516
584
  { name: "Laptop", quantity: 2, unit: "piece" },
517
585
  { name: "Mouse", quantity: 3, unit: "piece" }
518
586
  ],
519
- notes: "Marchandise remise au responsable du site."
587
+ notes: "Marchandise remise au responsable du site.",
588
+ footer: "Reception marchandise\nSignature et cachet"
520
589
  });
521
590
  ```
522
591
 
@@ -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;AA6CrF,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"}
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;AA8CrF,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"}
@@ -17,8 +17,8 @@ const createBusinessDocument = (options) => {
17
17
  type: options.type,
18
18
  title: options.title ?? template.getTitle(locale) ?? labels.documentTitle,
19
19
  number: options.number,
20
- ...(options.logo ? { logo: options.logo } : {}),
21
20
  issueDate,
21
+ issuer: options.issuer,
22
22
  seller: options.seller,
23
23
  client: options.client,
24
24
  items,
@@ -33,7 +33,8 @@ const createBusinessDocument = (options) => {
33
33
  ...(options.dueDate ? { dueDate: options.dueDate } : {}),
34
34
  ...(options.paymentTerms ? { paymentTerms: options.paymentTerms } : {}),
35
35
  ...(options.bankInfo ? { bankInfo: options.bankInfo } : {}),
36
- ...(options.notes ? { notes: options.notes } : {})
36
+ ...(options.notes ? { notes: options.notes } : {}),
37
+ ...(options.footer ? { footer: options.footer } : {})
37
38
  });
38
39
  };
39
40
  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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"}
@@ -12,6 +12,9 @@ export interface Party {
12
12
  if?: string;
13
13
  rc?: string;
14
14
  }
15
+ export interface Issuer extends Party {
16
+ logo?: string;
17
+ }
15
18
  export interface LineItemInput {
16
19
  name: string;
17
20
  description?: string;
@@ -53,7 +56,7 @@ export interface InternationalBankInfo {
53
56
  export type BankInfo = LocalBankInfo | InternationalBankInfo;
54
57
  export interface DocumentInput {
55
58
  number: string;
56
- logo?: string;
59
+ issuer: Issuer;
57
60
  seller: Party;
58
61
  client: Party;
59
62
  items: LineItemInput[];
@@ -63,6 +66,7 @@ export interface DocumentInput {
63
66
  vatRate?: number;
64
67
  discounts?: DiscountInput[];
65
68
  notes?: string;
69
+ footer?: string;
66
70
  paymentTerms?: PaymentTerms;
67
71
  bankInfo?: BankInfo;
68
72
  locale?: LocaleCode;
@@ -79,9 +83,9 @@ export interface BusinessDocumentData {
79
83
  type: DocumentType;
80
84
  title: string;
81
85
  number: string;
82
- logo?: string;
83
86
  issueDate: Date;
84
87
  dueDate?: Date;
88
+ issuer: Issuer;
85
89
  seller: Party;
86
90
  client: Party;
87
91
  items: LineItem[];
@@ -91,6 +95,7 @@ export interface BusinessDocumentData {
91
95
  paymentTerms?: PaymentTerms;
92
96
  bankInfo?: BankInfo;
93
97
  notes?: string;
98
+ footer?: string;
94
99
  locale: LocaleCode;
95
100
  totals: DocumentTotals;
96
101
  }
@@ -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,EAAuC,MAAM,YAAY,CAAC;AAyEvG,eAAO,MAAM,qBAAqB,GAAI,OAAO,qBAAqB,KAAG,IA+CpE,CAAC"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/core/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAY,qBAAqB,EAA+C,MAAM,YAAY,CAAC;AA0F/G,eAAO,MAAM,qBAAqB,GAAI,OAAO,qBAAqB,KAAG,IAsCpE,CAAC"}
@@ -17,6 +17,21 @@ const validateParty = (party, field) => {
17
17
  assertNonEmptyString(line, `${field}.addressLines[${index}]`);
18
18
  }
19
19
  };
20
+ const validateIssuer = (issuer) => {
21
+ validateParty(issuer, "issuer");
22
+ if (issuer.logo !== undefined) {
23
+ assertNonEmptyString(issuer.logo, "issuer.logo");
24
+ try {
25
+ const url = new URL(issuer.logo);
26
+ if (url.protocol !== "http:" && url.protocol !== "https:") {
27
+ throw new Error("invalid protocol");
28
+ }
29
+ }
30
+ catch {
31
+ throw new Error("issuer.logo must be a valid http or https URL.");
32
+ }
33
+ }
34
+ };
20
35
  const validateItem = (item, index, requiresPricing) => {
21
36
  assertNonEmptyString(item.name, `items[${index}].name`);
22
37
  assertFiniteNumber(item.quantity, `items[${index}].quantity`);
@@ -56,18 +71,7 @@ const validateBankInfo = (bankInfo) => {
56
71
  export const validateDocumentInput = (input) => {
57
72
  const requiresPricing = input.type !== "deliveryNote";
58
73
  assertNonEmptyString(input.number, "number");
59
- if (input.logo !== undefined) {
60
- assertNonEmptyString(input.logo, "logo");
61
- try {
62
- const url = new URL(input.logo);
63
- if (url.protocol !== "http:" && url.protocol !== "https:") {
64
- throw new Error("invalid protocol");
65
- }
66
- }
67
- catch {
68
- throw new Error("logo must be a valid http or https URL.");
69
- }
70
- }
74
+ validateIssuer(input.issuer);
71
75
  validateParty(input.seller, "seller");
72
76
  validateParty(input.client, "client");
73
77
  if (input.items.length === 0) {
@@ -88,6 +92,9 @@ export const validateDocumentInput = (input) => {
88
92
  if (input.currency !== undefined) {
89
93
  assertNonEmptyString(input.currency, "currency");
90
94
  }
95
+ if (input.footer !== undefined) {
96
+ assertNonEmptyString(input.footer, "footer");
97
+ }
91
98
  if (input.bankInfo) {
92
99
  validateBankInfo(input.bankInfo);
93
100
  }
@@ -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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pdf.d.ts","sourceRoot":"","sources":["../../src/renderers/pdf.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAY,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AA0KzF,eAAO,MAAM,iBAAiB,GAC5B,UAAU,oBAAoB,EAC9B,UAAU,gBAAgB,KACzB,OAAO,CAAC,UAAU,CAwPpB,CAAC"}
1
+ {"version":3,"file":"pdf.d.ts","sourceRoot":"","sources":["../../src/renderers/pdf.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAY,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAuMzF,eAAO,MAAM,iBAAiB,GAC5B,UAAU,oBAAoB,EAC9B,UAAU,gBAAgB,KACzB,OAAO,CAAC,UAAU,CAqRpB,CAAC"}
@@ -6,7 +6,7 @@ const PAGE = {
6
6
  width: 595.28,
7
7
  height: 841.89,
8
8
  footerOffset: 64,
9
- headerTop: 48,
9
+ headerTop: 42,
10
10
  lineGap: 14
11
11
  };
12
12
  const collectPdf = async (doc) => new Promise((resolve, reject) => {
@@ -75,6 +75,10 @@ const drawFixedText = (doc, text, x, y, options) => {
75
75
  doc.y = previousY;
76
76
  return y + doc.heightOfString(text, options);
77
77
  };
78
+ const normalizeFooterText = (footer) => footer
79
+ .split(/\r?\n/)
80
+ .map((line) => line.trim())
81
+ .join("\n");
78
82
  const ensureSectionSpace = (doc, y, requiredHeight) => {
79
83
  const contentBottom = PAGE.height - PAGE.margin - 8;
80
84
  if (y + requiredHeight <= contentBottom) {
@@ -87,23 +91,38 @@ const drawLabelValue = (doc, x, y, label, value, width, align) => {
87
91
  doc.fillColor("#1b2430").fontSize(10);
88
92
  return drawFixedText(doc, `${label}: ${value}`, x, y, { width, align });
89
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 buildIssuerLines = (document, labels) => [
99
+ ...document.issuer.addressLines,
100
+ [document.issuer.city, document.issuer.country].filter(Boolean).join(", "),
101
+ document.issuer.phone ? `Tel: ${document.issuer.phone}` : "",
102
+ document.issuer.email ? `Email: ${document.issuer.email}` : "",
103
+ document.issuer.taxId ? `${labels.if}: ${document.issuer.taxId}` : "",
104
+ document.issuer.ice ? `${labels.ice}: ${document.issuer.ice}` : "",
105
+ document.issuer.if ? `${labels.if}: ${document.issuer.if}` : "",
106
+ document.issuer.rc ? `${labels.rc}: ${document.issuer.rc}` : ""
107
+ ].filter((line) => line.length > 0);
90
108
  const buildSellerLines = (document, labels) => [
109
+ document.seller.name,
91
110
  ...document.seller.addressLines,
92
111
  [document.seller.city, document.seller.country].filter(Boolean).join(", "),
93
112
  document.seller.phone ? `Tel: ${document.seller.phone}` : "",
94
113
  document.seller.email ? `Email: ${document.seller.email}` : "",
95
- document.seller.taxId ? `Tax ID: ${document.seller.taxId}` : "",
114
+ document.seller.taxId ? `${labels.if}: ${document.seller.taxId}` : "",
96
115
  document.seller.ice ? `${labels.ice}: ${document.seller.ice}` : "",
97
116
  document.seller.if ? `${labels.if}: ${document.seller.if}` : "",
98
117
  document.seller.rc ? `${labels.rc}: ${document.seller.rc}` : ""
99
118
  ].filter((line) => line.length > 0);
100
- const buildClientLines = (document) => [
119
+ const buildClientLines = (document, labels) => [
101
120
  document.client.name,
102
121
  ...document.client.addressLines,
103
122
  [document.client.city, document.client.country].filter(Boolean).join(", "),
104
123
  document.client.phone ? `Tel: ${document.client.phone}` : "",
105
124
  document.client.email ? `Email: ${document.client.email}` : "",
106
- document.client.taxId ? `Tax ID: ${document.client.taxId}` : ""
125
+ document.client.taxId ? `${labels.if}: ${document.client.taxId}` : ""
107
126
  ].filter((line) => line.length > 0);
108
127
  const buildBankLines = (bankInfo, labels) => {
109
128
  const baseLines = [
@@ -124,6 +143,7 @@ export const renderDocumentPdf = async (document, options) => {
124
143
  const leftColumnX = PAGE.margin;
125
144
  const rightColumnX = PAGE.margin + 275;
126
145
  const columnWidth = 224;
146
+ const metaTopX = rightColumnX;
127
147
  const tableX = PAGE.margin;
128
148
  const tableWidth = PAGE.width - PAGE.margin * 2;
129
149
  // pdfkit is chosen because it stays lightweight while supporting custom TTF/OTF fonts,
@@ -133,83 +153,89 @@ export const renderDocumentPdf = async (document, options) => {
133
153
  margin: PAGE.margin,
134
154
  info: {
135
155
  Title: `${document.title} ${document.number}`,
136
- Author: document.seller.name,
156
+ Author: document.issuer.name,
137
157
  Subject: document.title,
138
158
  Keywords: `${document.type}, morocco, @ic-labs/invoice-kit`
139
159
  }
140
160
  });
141
161
  const pdfBytesPromise = collectPdf(doc);
142
- const logoBuffer = document.logo ? await fetchLogo(document.logo) : null;
162
+ const logoBuffer = document.issuer.logo ? await fetchLogo(document.issuer.logo) : null;
143
163
  if (logoBuffer) {
144
164
  doc.image(logoBuffer, leftColumnX, PAGE.headerTop, {
145
165
  fit: [72, 72]
146
166
  });
147
167
  }
148
168
  useFont(doc, options?.fonts?.bold, "Helvetica-Bold");
149
- doc.fillColor("#173d73").fontSize(18);
150
- drawFixedText(doc, document.seller.name, leftColumnX + (logoBuffer ? 84 : 0), PAGE.headerTop, {
151
- width: logoBuffer ? 156 : 240,
169
+ doc.fillColor("#173d73").fontSize(17);
170
+ const issuerTextX = leftColumnX + (logoBuffer ? 84 : 0);
171
+ const issuerTextWidth = logoBuffer ? 156 : 240;
172
+ drawFixedText(doc, document.issuer.name, issuerTextX, PAGE.headerTop, {
173
+ width: issuerTextWidth,
152
174
  align
153
175
  });
176
+ const issuerLines = buildIssuerLines(document, labels);
177
+ useFont(doc, options?.fonts?.regular, "Helvetica");
178
+ doc.fillColor("#111827").fontSize(9);
179
+ const issuerHeaderBottomY = drawFixedText(doc, issuerLines.join("\n"), issuerTextX, PAGE.headerTop + 22, {
180
+ width: issuerTextWidth,
181
+ align,
182
+ lineGap: 1
183
+ });
154
184
  const sellerLines = buildSellerLines(document, labels);
155
- const clientLines = buildClientLines(document);
185
+ const clientLines = buildClientLines(document, labels);
186
+ const bankLines = !isDeliveryNote && document.bankInfo ? buildBankLines(document.bankInfo, labels) : null;
156
187
  useFont(doc, options?.fonts?.bold, "Helvetica-Bold");
157
- doc.fillColor("#111827").fontSize(22);
188
+ doc.fillColor("#111827").fontSize(20);
158
189
  const titleBottomY = drawFixedText(doc, document.title, rightColumnX, PAGE.headerTop, {
159
190
  width: columnWidth,
160
191
  align,
161
192
  lineBreak: true
162
193
  });
163
194
  useFont(doc, options?.fonts?.regular, "Helvetica");
164
- doc.fillColor("#4b5563").fontSize(10);
165
- drawFixedText(doc, `${labels.number}: ${document.number}`, rightColumnX, titleBottomY + 6, {
195
+ doc.fillColor("#4b5563").fontSize(9);
196
+ const numberBottomY = drawFixedText(doc, `${labels.number}: ${document.number}`, rightColumnX, titleBottomY + 4, {
166
197
  width: columnWidth,
167
198
  align
168
199
  });
169
- const headerBottomY = Math.max(titleBottomY + 22, PAGE.headerTop + 28);
170
- const sectionsTopY = headerBottomY + 28;
200
+ let metaBottomY = numberBottomY;
201
+ metaBottomY = Math.max(metaBottomY, drawLabelValue(doc, metaTopX, numberBottomY + 2, labels.issueDate, formatDate(document.issueDate, document.locale), columnWidth, align));
202
+ if (document.dueDate) {
203
+ metaBottomY = Math.max(metaBottomY, drawLabelValue(doc, metaTopX, metaBottomY + 2, labels.dueDate, formatDate(document.dueDate, document.locale), columnWidth, align));
204
+ }
205
+ if (!isDeliveryNote) {
206
+ metaBottomY = Math.max(metaBottomY, drawLabelValue(doc, metaTopX, metaBottomY + 2, labels.currency, document.currency, columnWidth, align));
207
+ }
208
+ const headerBottomY = Math.max(metaBottomY, issuerHeaderBottomY, PAGE.headerTop + 48);
209
+ const sectionsTopY = headerBottomY + 10;
171
210
  useFont(doc, options?.fonts?.bold, "Helvetica-Bold");
172
- doc.fillColor("#6b7280").fontSize(11);
211
+ doc.fillColor("#6b7280").fontSize(10);
173
212
  drawFixedText(doc, labels.seller, leftColumnX, sectionsTopY, { width: columnWidth, align });
174
213
  drawFixedText(doc, labels.client, rightColumnX, sectionsTopY, { width: columnWidth, align });
175
214
  useFont(doc, options?.fonts?.regular, "Helvetica");
176
- doc.fillColor("#111827").fontSize(10);
177
- const sellerBottomY = drawFixedText(doc, [document.seller.name, ...sellerLines].join("\n"), leftColumnX, sectionsTopY + 18, {
178
- width: columnWidth,
179
- align,
180
- lineGap: 2
181
- });
182
- const clientBottomY = drawFixedText(doc, clientLines.join("\n"), rightColumnX, sectionsTopY + 18, {
183
- width: columnWidth,
215
+ doc.fillColor("#111827").fontSize(9);
216
+ let leftSectionBottomY = drawFixedText(doc, sellerLines.join("\n"), leftColumnX, sectionsTopY + 14, {
217
+ width: 270,
184
218
  align,
185
- lineGap: 2
219
+ lineGap: 1
186
220
  });
187
- let y = Math.max(sellerBottomY, clientBottomY) + 20;
188
- doc
189
- .lineWidth(1)
190
- .strokeColor("#d1d5db")
191
- .rect(PAGE.margin, y, tableWidth, 44)
192
- .stroke();
193
- useFont(doc, options?.fonts?.regular, "Helvetica");
194
- drawLabelValue(doc, PAGE.margin + 12, y + 14, labels.issueDate, formatDate(document.issueDate, document.locale), 145, align);
195
- if (document.dueDate) {
196
- drawLabelValue(doc, PAGE.margin + 170, y + 14, labels.dueDate, formatDate(document.dueDate, document.locale), 145, align);
197
- }
198
- if (!isDeliveryNote) {
199
- drawLabelValue(doc, PAGE.margin + 328, y + 14, labels.currency, document.currency, 110, align);
200
- }
201
- y += 68;
202
- if (!isDeliveryNote && document.bankInfo) {
203
- const bankLines = buildBankLines(document.bankInfo, labels);
204
- const bankHeight = 14 + doc.heightOfString(bankLines.join("\n"), { width: 270, align, lineGap: 2 }) + 18;
205
- y = ensureSectionSpace(doc, y, bankHeight);
221
+ if (bankLines) {
206
222
  useFont(doc, options?.fonts?.bold, "Helvetica-Bold");
207
- doc.fillColor("#6b7280").fontSize(10);
208
- drawFixedText(doc, labels.bankDetails, leftColumnX, y, { width: 240, align });
223
+ doc.fillColor("#6b7280").fontSize(9);
224
+ drawFixedText(doc, labels.bankDetails, leftColumnX, leftSectionBottomY + 8, { width: columnWidth, align });
209
225
  useFont(doc, options?.fonts?.regular, "Helvetica");
210
- doc.fillColor("#111827").fontSize(10);
211
- y = drawFixedText(doc, bankLines.join("\n"), leftColumnX, y + 14, { width: 270, align, lineGap: 2 }) + 18;
226
+ doc.fillColor("#111827").fontSize(9);
227
+ leftSectionBottomY = drawFixedText(doc, bankLines.join("\n"), leftColumnX, leftSectionBottomY + 20, {
228
+ width: 270,
229
+ align,
230
+ lineGap: 1
231
+ });
212
232
  }
233
+ const clientBottomY = drawFixedText(doc, clientLines.join("\n"), rightColumnX, sectionsTopY + 14, {
234
+ width: columnWidth,
235
+ align,
236
+ lineGap: 1
237
+ });
238
+ let y = Math.max(leftSectionBottomY, clientBottomY) + 10;
213
239
  doc.fillColor("#173d73").rect(tableX, y, tableWidth, 24).fill();
214
240
  useFont(doc, options?.fonts?.bold, "Helvetica-Bold");
215
241
  if (isDeliveryNote) {
@@ -225,8 +251,9 @@ export const renderDocumentPdf = async (document, options) => {
225
251
  y += 24;
226
252
  useFont(doc, options?.fonts?.regular, "Helvetica");
227
253
  for (const item of document.items) {
228
- doc.strokeColor("#d1d5db").lineWidth(1).rect(tableX, y, tableWidth, 26).stroke();
229
254
  const itemLabel = item.description ? `${item.name} - ${item.description}` : item.name;
255
+ const rowHeight = getWrappedRowHeight(doc, itemLabel, columns.itemWidth, 24, { align, lineGap: 1 });
256
+ doc.strokeColor("#d1d5db").lineWidth(1).rect(tableX, y, tableWidth, rowHeight).stroke();
230
257
  doc.fillColor("#111827").fontSize(10);
231
258
  drawFixedText(doc, truncateText(doc, itemLabel, columns.itemWidth), columns.itemX, y + 8, {
232
259
  width: columns.itemWidth,
@@ -236,7 +263,7 @@ export const renderDocumentPdf = async (document, options) => {
236
263
  width: columns.quantityWidth,
237
264
  align: "right"
238
265
  });
239
- y += 26;
266
+ y += rowHeight;
240
267
  }
241
268
  }
242
269
  else {
@@ -258,12 +285,14 @@ export const renderDocumentPdf = async (document, options) => {
258
285
  y += 24;
259
286
  useFont(doc, options?.fonts?.regular, "Helvetica");
260
287
  for (const item of document.items) {
261
- doc.strokeColor("#d1d5db").lineWidth(1).rect(tableX, y, tableWidth, 26).stroke();
262
288
  const itemLabel = item.description ? `${item.name} - ${item.description}` : item.name;
289
+ const rowHeight = getWrappedRowHeight(doc, itemLabel, columns.itemWidth, 24, { align, lineGap: 1 });
290
+ doc.strokeColor("#d1d5db").lineWidth(1).rect(tableX, y, tableWidth, rowHeight).stroke();
263
291
  doc.fillColor("#111827").fontSize(10);
264
- drawFixedText(doc, truncateText(doc, itemLabel, columns.itemWidth), columns.itemX, y + 8, {
292
+ drawFixedText(doc, itemLabel, columns.itemX, y + 8, {
265
293
  width: columns.itemWidth,
266
- align
294
+ align,
295
+ lineGap: 1
267
296
  });
268
297
  drawFixedText(doc, `${item.quantity}${item.unit ? ` ${item.unit}` : ""}`, columns.quantityX, y + 8, {
269
298
  width: columns.quantityWidth,
@@ -277,7 +306,7 @@ export const renderDocumentPdf = async (document, options) => {
277
306
  width: columns.amountWidth,
278
307
  align: "right"
279
308
  });
280
- y += 26;
309
+ y += rowHeight;
281
310
  }
282
311
  }
283
312
  const notes = [];
@@ -291,10 +320,12 @@ export const renderDocumentPdf = async (document, options) => {
291
320
  notes.push(`${labels.notes}: ${document.notes}`);
292
321
  }
293
322
  if (!isDeliveryNote) {
323
+ const totalsHeight = (24 * 5) + 12;
324
+ const notesWidth = tableWidth - 236;
294
325
  const notesHeight = notes.length > 0
295
- ? 24 + 16 + doc.heightOfString(notes.join("\n"), { width: tableWidth, align, lineGap: 2 }) + 12
326
+ ? 12 + 12 + doc.heightOfString(notes.join("\n"), { width: notesWidth, align, lineGap: 1 }) + 8
296
327
  : 0;
297
- y = ensureSectionSpace(doc, y + 12, (24 * 5) + 12 + notesHeight) - 12;
328
+ y = ensureSectionSpace(doc, y + 12, Math.max(totalsHeight, notesHeight)) - 12;
298
329
  const totalsX = PAGE.width - PAGE.margin - 220;
299
330
  const totals = [
300
331
  [labels.subtotal, formatMoney(document.totals.subtotal, document.locale, document.currency)],
@@ -304,6 +335,19 @@ export const renderDocumentPdf = async (document, options) => {
304
335
  [labels.total, formatMoney(document.totals.total, document.locale, document.currency)]
305
336
  ];
306
337
  y += 12;
338
+ let trailingBottomY = y;
339
+ if (notes.length > 0) {
340
+ useFont(doc, options?.fonts?.bold, "Helvetica-Bold");
341
+ doc.fillColor("#6b7280").fontSize(10);
342
+ drawFixedText(doc, labels.notes, PAGE.margin, y, { width: notesWidth, align });
343
+ useFont(doc, options?.fonts?.regular, "Helvetica");
344
+ doc.fillColor("#111827").fontSize(9);
345
+ trailingBottomY = drawFixedText(doc, notes.join("\n"), PAGE.margin, y + 12, {
346
+ width: notesWidth,
347
+ align,
348
+ lineGap: 1
349
+ });
350
+ }
307
351
  totals.forEach(([label, value], index) => {
308
352
  const isTotal = index === totals.length - 1;
309
353
  doc.fillColor(isTotal ? "#173d73" : "white").rect(totalsX, y, 220, 24).fill();
@@ -314,23 +358,31 @@ export const renderDocumentPdf = async (document, options) => {
314
358
  drawFixedText(doc, truncateText(doc, value, 85), totalsX + 125, y + 7, { width: 85, align: "right" });
315
359
  y += 24;
316
360
  });
361
+ y = Math.max(y, trailingBottomY + 8);
317
362
  }
318
- if (notes.length > 0) {
319
- y += 24;
363
+ else if (notes.length > 0) {
364
+ const notesHeight = 12 + 12 + doc.heightOfString(notes.join("\n"), { width: tableWidth, align, lineGap: 1 }) + 8;
365
+ y = ensureSectionSpace(doc, y + 12, notesHeight) - 12;
366
+ y += 12;
320
367
  useFont(doc, options?.fonts?.bold, "Helvetica-Bold");
321
- doc.fillColor("#6b7280").fontSize(11);
368
+ doc.fillColor("#6b7280").fontSize(10);
322
369
  drawFixedText(doc, labels.notes, PAGE.margin, y, { width: tableWidth, align });
323
370
  useFont(doc, options?.fonts?.regular, "Helvetica");
324
- doc.fillColor("#111827").fontSize(10);
325
- drawFixedText(doc, notes.join("\n"), PAGE.margin, y + 16, { width: tableWidth, align, lineGap: 2 });
371
+ doc.fillColor("#111827").fontSize(9);
372
+ drawFixedText(doc, notes.join("\n"), PAGE.margin, y + 12, { width: tableWidth, align, lineGap: 1 });
326
373
  }
327
374
  useFont(doc, options?.fonts?.regular, "Helvetica");
328
375
  const actualPageHeight = doc.page.height ?? 841.89;
329
- doc.fillColor("#9ca3af").fontSize(8);
330
- drawFixedText(doc, `${document.title} ${document.number}`, PAGE.margin, actualPageHeight - PAGE.footerOffset, {
376
+ const footerText = normalizeFooterText(document.footer ?? `${document.title} ${document.number}`);
377
+ const footerOptions = {
331
378
  width: tableWidth,
332
- align: isArabic ? "right" : "left"
333
- });
379
+ align: "center",
380
+ lineGap: 1
381
+ };
382
+ const footerHeight = doc.heightOfString(footerText, footerOptions);
383
+ doc.page.margins.bottom = 0;
384
+ doc.fillColor("#9ca3af").fontSize(8);
385
+ drawFixedText(doc, footerText, PAGE.margin, actualPageHeight - footerHeight, footerOptions);
334
386
  doc.end();
335
387
  return pdfBytesPromise;
336
388
  };
@@ -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.1",
3
+ "version": "0.1.3",
4
4
  "description": "Lightweight TypeScript library for generating Moroccan business documents as PDFs.",
5
5
  "author": "Itri Cloud Labs",
6
6
  "license": "MIT",