pretext-pdf 0.4.5 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/CHANGELOG.md +333 -333
  2. package/README.md +76 -7
  3. package/dist/assets.d.ts +3 -0
  4. package/dist/assets.d.ts.map +1 -1
  5. package/dist/assets.js +111 -21
  6. package/dist/assets.js.map +1 -1
  7. package/dist/builder.d.ts +22 -1
  8. package/dist/builder.d.ts.map +1 -1
  9. package/dist/builder.js +38 -1
  10. package/dist/builder.js.map +1 -1
  11. package/dist/errors.d.ts +1 -1
  12. package/dist/errors.d.ts.map +1 -1
  13. package/dist/errors.js.map +1 -1
  14. package/dist/fonts.d.ts.map +1 -1
  15. package/dist/fonts.js +36 -1
  16. package/dist/fonts.js.map +1 -1
  17. package/dist/index.d.ts +1 -1
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +76 -34
  20. package/dist/index.js.map +1 -1
  21. package/dist/measure-blocks.d.ts +25 -0
  22. package/dist/measure-blocks.d.ts.map +1 -0
  23. package/dist/measure-blocks.js +1019 -0
  24. package/dist/measure-blocks.js.map +1 -0
  25. package/dist/measure-text.d.ts +53 -0
  26. package/dist/measure-text.d.ts.map +1 -0
  27. package/dist/measure-text.js +435 -0
  28. package/dist/measure-text.js.map +1 -0
  29. package/dist/measure.d.ts +15 -35
  30. package/dist/measure.d.ts.map +1 -1
  31. package/dist/measure.js +42 -1066
  32. package/dist/measure.js.map +1 -1
  33. package/dist/paginate.d.ts.map +1 -1
  34. package/dist/paginate.js +14 -12
  35. package/dist/paginate.js.map +1 -1
  36. package/dist/render-blocks.d.ts +24 -0
  37. package/dist/render-blocks.d.ts.map +1 -0
  38. package/dist/render-blocks.js +937 -0
  39. package/dist/render-blocks.js.map +1 -0
  40. package/dist/render-extras.d.ts +18 -0
  41. package/dist/render-extras.d.ts.map +1 -0
  42. package/dist/render-extras.js +325 -0
  43. package/dist/render-extras.js.map +1 -0
  44. package/dist/render-utils.d.ts +59 -0
  45. package/dist/render-utils.d.ts.map +1 -0
  46. package/dist/render-utils.js +219 -0
  47. package/dist/render-utils.js.map +1 -0
  48. package/dist/render.d.ts.map +1 -1
  49. package/dist/render.js +19 -1375
  50. package/dist/render.js.map +1 -1
  51. package/dist/rich-text.d.ts +4 -0
  52. package/dist/rich-text.d.ts.map +1 -1
  53. package/dist/rich-text.js +4 -0
  54. package/dist/rich-text.js.map +1 -1
  55. package/dist/types.d.ts +108 -5
  56. package/dist/types.d.ts.map +1 -1
  57. package/dist/validate.d.ts.map +1 -1
  58. package/dist/validate.js +195 -15
  59. package/dist/validate.js.map +1 -1
  60. package/docs/screenshots/showcase-invoice.png +0 -0
  61. package/docs/screenshots/showcase-report.png +0 -0
  62. package/docs/screenshots/showcase-resume.png +0 -0
  63. package/package.json +130 -128
package/dist/measure.d.ts CHANGED
@@ -1,53 +1,33 @@
1
- import type { PdfDocument, ContentElement, MeasuredBlock, ImageMap, ColumnDef } from './types.js';
2
- type HypherInstance = {
3
- hyphenate(word: string): string[];
4
- };
5
- type HyphenatorOpts = {
6
- instance: HypherInstance;
7
- minWordLength: number;
8
- leftMin: number;
9
- rightMin: number;
10
- };
11
1
  /**
12
- * Stage 3: Measure a single content element.
13
- *
14
- * Returns MeasuredBlock for most types.
15
- * Returns MeasuredBlock[] for 'list' (each item becomes an independent block).
16
- *
17
- * NOTE: Image elements cannot be measured here — use measureAllBlocks() instead,
18
- * which resolves the content-index-based imageMap key before calling measureImageWithKey().
2
+ * measure.ts Measurement orchestrator
3
+ * Entry point for the measurement pipeline. Exports public measurement functions.
19
4
  */
20
- export declare function measureBlock(element: ContentElement, contentWidth: number, doc: PdfDocument, hyphenatorOpts?: HyphenatorOpts): Promise<MeasuredBlock | MeasuredBlock[]>;
5
+ import type { PdfDocument, MeasuredBlock, ImageMap } from './types.js';
6
+ import { measureBlock } from './measure-blocks.js';
7
+ export { measureBlock };
21
8
  /**
22
- * Resolve column width definitions to concrete pt values.
23
- * Fixed widths are used as-is. Star widths ('2*', '*') share the remaining space.
24
- * 'auto' columns use naturalWidths[i] (measured content width) — caller must pre-compute these.
25
- *
26
- * naturalWidths is required if any column uses 'auto'. It maps column index → natural text width in pt
27
- * (the minimum width needed to display cell text on one line, including cellPaddingH on both sides).
9
+ * Build the canonical font key: family-weight-style
10
+ * Used by both measure.ts and render.ts for font lookup
28
11
  */
29
- export declare function resolveColumnWidths(columns: ColumnDef[], contentWidth: number, cellPaddingH: number, borderWidth: number, naturalWidths?: number[]): number[];
12
+ export declare function buildFontKey(family: string, weight?: 400 | 700, style?: 'normal' | 'italic'): string;
30
13
  /**
31
14
  * Measure a short header/footer string — returns total height in pt.
32
15
  */
33
16
  export declare function measureHeaderFooterHeight(text: string, fontSize: number, fontFamily: string, contentWidth: number, lineHeight: number): Promise<number>;
34
- /** Build a font map key from family + weight + style */
35
- export declare function buildFontKey(family: string, weight: 400 | 700, style: 'normal' | 'italic'): string;
36
17
  /**
37
- * Build measured TOC entry blocks from collected headings.
38
- * Called during two-pass mode after first pagination to generate the actual TOC content.
18
+ * Build measured TOC entry blocks from draft headings (two-pass TOC generation).
19
+ * Each entry is placed on a specific page.
39
20
  */
40
21
  export declare function buildTocEntryBlocks(headings: Array<{
41
22
  text: string;
42
23
  level: 1 | 2 | 3 | 4;
43
24
  pageIndex: number;
44
- }>, tocElement: import('./types.js').TocElement, contentWidth: number, doc: PdfDocument): Promise<import('./types.js').MeasuredBlock[]>;
25
+ }>, tocElement: import('./types.js').TocElement, contentWidth: number, doc: PdfDocument): Promise<MeasuredBlock[]>;
45
26
  /**
46
- * Measure all content elements in a document.
47
- * Handles list flattening (lists return MeasuredBlock[]).
48
- * Handles image key resolution (images need their content-index-based key).
49
- * Initializes hyphenator if doc.hyphenation is configured.
27
+ * Stage 3: Measure all document content elements.
28
+ * Handles image key resolution, list flattening, SVG wrapping, hyphenation initialization.
29
+ *
30
+ * Returns array of MeasuredBlock (includes flattened lists + SVG-wrapped images).
50
31
  */
51
32
  export declare function measureAllBlocks(doc: PdfDocument, contentWidth: number, imageMap: ImageMap, pageContentHeight: number): Promise<MeasuredBlock[]>;
52
- export {};
53
33
  //# sourceMappingURL=measure.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"measure.d.ts","sourceRoot":"","sources":["../src/measure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EAAE,cAAc,EAAE,aAAa,EAE7B,QAAQ,EAAE,SAAS,EACjC,MAAM,YAAY,CAAA;AAwBnB,KAAK,cAAc,GAAG;IAAE,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE,CAAA;AAC3D,KAAK,cAAc,GAAG;IAAE,QAAQ,EAAE,cAAc,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAA;AA8F5G;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,cAAc,EACvB,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,WAAW,EAChB,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,aAAa,GAAG,aAAa,EAAE,CAAC,CA8b1C;AAobD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,SAAS,EAAE,EACpB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,MAAM,EAAE,GACvB,MAAM,EAAE,CA4EV;AA+MD;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAejB;AAaD,wDAAwD;AACxD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,EAAE,KAAK,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAElG;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,EAC1E,UAAU,EAAE,OAAO,YAAY,EAAE,UAAU,EAC3C,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,OAAO,YAAY,EAAE,aAAa,EAAE,CAAC,CAmD/C;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,WAAW,EAChB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,QAAQ,EAClB,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,aAAa,EAAE,CAAC,CAmD1B"}
1
+ {"version":3,"file":"measure.d.ts","sourceRoot":"","sources":["../src/measure.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,WAAW,EAAkB,aAAa,EAAE,QAAQ,EACrD,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAIlD,OAAO,EAAE,YAAY,EAAE,CAAA;AAEvB;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,GAAG,GAAG,GAAS,EACvB,KAAK,GAAE,QAAQ,GAAG,QAAmB,GACpC,MAAM,CAER;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAcjB;AAeD;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,EAC1E,UAAU,EAAE,OAAO,YAAY,EAAE,UAAU,EAC3C,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,aAAa,EAAE,CAAC,CAqD1B;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,WAAW,EAChB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,QAAQ,EAClB,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,aAAa,EAAE,CAAC,CAsE1B"}