postext-pdf 1.4.2 → 1.5.0

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 (208) hide show
  1. package/README.md +3 -3
  2. package/dist/__tests__/accessibility.test.js +66 -0
  3. package/dist/__tests__/accessibility.test.js.map +1 -1
  4. package/dist/__tests__/alpha.test.d.ts +2 -0
  5. package/dist/__tests__/alpha.test.d.ts.map +1 -0
  6. package/dist/__tests__/alpha.test.js +164 -0
  7. package/dist/__tests__/alpha.test.js.map +1 -0
  8. package/dist/__tests__/bleedClip.test.d.ts +2 -0
  9. package/dist/__tests__/bleedClip.test.d.ts.map +1 -0
  10. package/dist/__tests__/bleedClip.test.js +83 -0
  11. package/dist/__tests__/bleedClip.test.js.map +1 -0
  12. package/dist/__tests__/boxBorderInside.test.d.ts +2 -0
  13. package/dist/__tests__/boxBorderInside.test.d.ts.map +1 -0
  14. package/dist/__tests__/boxBorderInside.test.js +63 -0
  15. package/dist/__tests__/boxBorderInside.test.js.map +1 -0
  16. package/dist/__tests__/calloutRuntTracking.test.d.ts +2 -0
  17. package/dist/__tests__/calloutRuntTracking.test.d.ts.map +1 -0
  18. package/dist/__tests__/calloutRuntTracking.test.js +72 -0
  19. package/dist/__tests__/calloutRuntTracking.test.js.map +1 -0
  20. package/dist/__tests__/calloutStripeRadius.test.d.ts +2 -0
  21. package/dist/__tests__/calloutStripeRadius.test.d.ts.map +1 -0
  22. package/dist/__tests__/calloutStripeRadius.test.js +90 -0
  23. package/dist/__tests__/calloutStripeRadius.test.js.map +1 -0
  24. package/dist/__tests__/chipVerticalPadding.test.d.ts +2 -0
  25. package/dist/__tests__/chipVerticalPadding.test.d.ts.map +1 -0
  26. package/dist/__tests__/chipVerticalPadding.test.js +71 -0
  27. package/dist/__tests__/chipVerticalPadding.test.js.map +1 -0
  28. package/dist/__tests__/chips.test.js +20 -3
  29. package/dist/__tests__/chips.test.js.map +1 -1
  30. package/dist/__tests__/documentLanguage.test.d.ts +2 -0
  31. package/dist/__tests__/documentLanguage.test.d.ts.map +1 -0
  32. package/dist/__tests__/documentLanguage.test.js +44 -0
  33. package/dist/__tests__/documentLanguage.test.js.map +1 -0
  34. package/dist/__tests__/fallbackSpaces.test.d.ts +2 -0
  35. package/dist/__tests__/fallbackSpaces.test.d.ts.map +1 -0
  36. package/dist/__tests__/fallbackSpaces.test.js +156 -0
  37. package/dist/__tests__/fallbackSpaces.test.js.map +1 -0
  38. package/dist/__tests__/floatReadingOrder.test.d.ts +2 -0
  39. package/dist/__tests__/floatReadingOrder.test.d.ts.map +1 -0
  40. package/dist/__tests__/floatReadingOrder.test.js +208 -0
  41. package/dist/__tests__/floatReadingOrder.test.js.map +1 -0
  42. package/dist/__tests__/fontEmbedding.test.d.ts +2 -0
  43. package/dist/__tests__/fontEmbedding.test.d.ts.map +1 -0
  44. package/dist/__tests__/fontEmbedding.test.js +118 -0
  45. package/dist/__tests__/fontEmbedding.test.js.map +1 -0
  46. package/dist/__tests__/fontFaces.test.d.ts +2 -0
  47. package/dist/__tests__/fontFaces.test.d.ts.map +1 -0
  48. package/dist/__tests__/fontFaces.test.js +193 -0
  49. package/dist/__tests__/fontFaces.test.js.map +1 -0
  50. package/dist/__tests__/fontStack.test.d.ts +2 -0
  51. package/dist/__tests__/fontStack.test.d.ts.map +1 -0
  52. package/dist/__tests__/fontStack.test.js +48 -0
  53. package/dist/__tests__/fontStack.test.js.map +1 -0
  54. package/dist/__tests__/headerFooter.test.js +83 -1
  55. package/dist/__tests__/headerFooter.test.js.map +1 -1
  56. package/dist/__tests__/headingAlign.test.d.ts +2 -0
  57. package/dist/__tests__/headingAlign.test.d.ts.map +1 -0
  58. package/dist/__tests__/headingAlign.test.js +66 -0
  59. package/dist/__tests__/headingAlign.test.js.map +1 -0
  60. package/dist/__tests__/hiddenHeadings.test.d.ts +2 -0
  61. package/dist/__tests__/hiddenHeadings.test.d.ts.map +1 -0
  62. package/dist/__tests__/hiddenHeadings.test.js +96 -0
  63. package/dist/__tests__/hiddenHeadings.test.js.map +1 -0
  64. package/dist/__tests__/lineTracking.test.d.ts +2 -0
  65. package/dist/__tests__/lineTracking.test.d.ts.map +1 -0
  66. package/dist/__tests__/lineTracking.test.js +80 -0
  67. package/dist/__tests__/lineTracking.test.js.map +1 -0
  68. package/dist/__tests__/measuredLines.test.d.ts +2 -0
  69. package/dist/__tests__/measuredLines.test.d.ts.map +1 -0
  70. package/dist/__tests__/measuredLines.test.js +255 -0
  71. package/dist/__tests__/measuredLines.test.js.map +1 -0
  72. package/dist/__tests__/metadata.test.d.ts +2 -0
  73. package/dist/__tests__/metadata.test.d.ts.map +1 -0
  74. package/dist/__tests__/metadata.test.js +51 -0
  75. package/dist/__tests__/metadata.test.js.map +1 -0
  76. package/dist/__tests__/outlineTitles.test.d.ts +2 -0
  77. package/dist/__tests__/outlineTitles.test.d.ts.map +1 -0
  78. package/dist/__tests__/outlineTitles.test.js +59 -0
  79. package/dist/__tests__/outlineTitles.test.js.map +1 -0
  80. package/dist/__tests__/pdfGenerationConfig.test.d.ts +2 -0
  81. package/dist/__tests__/pdfGenerationConfig.test.d.ts.map +1 -0
  82. package/dist/__tests__/pdfGenerationConfig.test.js +76 -0
  83. package/dist/__tests__/pdfGenerationConfig.test.js.map +1 -0
  84. package/dist/__tests__/pdfWorker.test.d.ts +2 -0
  85. package/dist/__tests__/pdfWorker.test.d.ts.map +1 -0
  86. package/dist/__tests__/pdfWorker.test.js +123 -0
  87. package/dist/__tests__/pdfWorker.test.js.map +1 -0
  88. package/dist/__tests__/printMarks.test.d.ts +2 -0
  89. package/dist/__tests__/printMarks.test.d.ts.map +1 -0
  90. package/dist/__tests__/printMarks.test.js +170 -0
  91. package/dist/__tests__/printMarks.test.js.map +1 -0
  92. package/dist/__tests__/printMaster.test.d.ts +2 -0
  93. package/dist/__tests__/printMaster.test.d.ts.map +1 -0
  94. package/dist/__tests__/printMaster.test.js +161 -0
  95. package/dist/__tests__/printMaster.test.js.map +1 -0
  96. package/dist/__tests__/renderWarnings.test.d.ts +2 -0
  97. package/dist/__tests__/renderWarnings.test.d.ts.map +1 -0
  98. package/dist/__tests__/renderWarnings.test.js +89 -0
  99. package/dist/__tests__/renderWarnings.test.js.map +1 -0
  100. package/dist/__tests__/repeatedHyphen.test.d.ts +2 -0
  101. package/dist/__tests__/repeatedHyphen.test.d.ts.map +1 -0
  102. package/dist/__tests__/repeatedHyphen.test.js +125 -0
  103. package/dist/__tests__/repeatedHyphen.test.js.map +1 -0
  104. package/dist/__tests__/scriptStacking.test.d.ts +2 -0
  105. package/dist/__tests__/scriptStacking.test.d.ts.map +1 -0
  106. package/dist/__tests__/scriptStacking.test.js +66 -0
  107. package/dist/__tests__/scriptStacking.test.js.map +1 -0
  108. package/dist/__tests__/sectionColumnRule.test.d.ts +2 -0
  109. package/dist/__tests__/sectionColumnRule.test.d.ts.map +1 -0
  110. package/dist/__tests__/sectionColumnRule.test.js +144 -0
  111. package/dist/__tests__/sectionColumnRule.test.js.map +1 -0
  112. package/dist/__tests__/svgFormReuse.test.d.ts +2 -0
  113. package/dist/__tests__/svgFormReuse.test.d.ts.map +1 -0
  114. package/dist/__tests__/svgFormReuse.test.js +102 -0
  115. package/dist/__tests__/svgFormReuse.test.js.map +1 -0
  116. package/dist/__tests__/svgVector.test.js +85 -11
  117. package/dist/__tests__/svgVector.test.js.map +1 -1
  118. package/dist/__tests__/tableFillSeams.test.d.ts +2 -0
  119. package/dist/__tests__/tableFillSeams.test.d.ts.map +1 -0
  120. package/dist/__tests__/tableFillSeams.test.js +72 -0
  121. package/dist/__tests__/tableFillSeams.test.js.map +1 -0
  122. package/dist/__tests__/tocLeaderKerning.test.d.ts +2 -0
  123. package/dist/__tests__/tocLeaderKerning.test.d.ts.map +1 -0
  124. package/dist/__tests__/tocLeaderKerning.test.js +84 -0
  125. package/dist/__tests__/tocLeaderKerning.test.js.map +1 -0
  126. package/dist/__tests__/tocNumberBaseline.test.d.ts +2 -0
  127. package/dist/__tests__/tocNumberBaseline.test.d.ts.map +1 -0
  128. package/dist/__tests__/tocNumberBaseline.test.js +72 -0
  129. package/dist/__tests__/tocNumberBaseline.test.js.map +1 -0
  130. package/dist/__tests__/tocTagging.test.d.ts +2 -0
  131. package/dist/__tests__/tocTagging.test.d.ts.map +1 -0
  132. package/dist/__tests__/tocTagging.test.js +120 -0
  133. package/dist/__tests__/tocTagging.test.js.map +1 -0
  134. package/dist/__tests__/trackedLineAlign.test.d.ts +2 -0
  135. package/dist/__tests__/trackedLineAlign.test.d.ts.map +1 -0
  136. package/dist/__tests__/trackedLineAlign.test.js +73 -0
  137. package/dist/__tests__/trackedLineAlign.test.js.map +1 -0
  138. package/dist/__tests__/uriLinks.test.d.ts +2 -0
  139. package/dist/__tests__/uriLinks.test.d.ts.map +1 -0
  140. package/dist/__tests__/uriLinks.test.js +103 -0
  141. package/dist/__tests__/uriLinks.test.js.map +1 -0
  142. package/dist/colors.d.ts +18 -3
  143. package/dist/colors.d.ts.map +1 -1
  144. package/dist/colors.js +77 -25
  145. package/dist/colors.js.map +1 -1
  146. package/dist/fontCache.d.ts +67 -4
  147. package/dist/fontCache.d.ts.map +1 -1
  148. package/dist/fontCache.js +200 -23
  149. package/dist/fontCache.js.map +1 -1
  150. package/dist/index.d.ts +1 -1
  151. package/dist/index.d.ts.map +1 -1
  152. package/dist/pdf-backend/blockRender.d.ts.map +1 -1
  153. package/dist/pdf-backend/blockRender.js +127 -28
  154. package/dist/pdf-backend/blockRender.js.map +1 -1
  155. package/dist/pdf-backend/fallbackSpaces.d.ts +37 -0
  156. package/dist/pdf-backend/fallbackSpaces.d.ts.map +1 -0
  157. package/dist/pdf-backend/fallbackSpaces.js +119 -0
  158. package/dist/pdf-backend/fallbackSpaces.js.map +1 -0
  159. package/dist/pdf-backend/fontHelpers.d.ts +10 -1
  160. package/dist/pdf-backend/fontHelpers.d.ts.map +1 -1
  161. package/dist/pdf-backend/fontHelpers.js +111 -65
  162. package/dist/pdf-backend/fontHelpers.js.map +1 -1
  163. package/dist/pdf-backend/headerFooter.d.ts +4 -2
  164. package/dist/pdf-backend/headerFooter.d.ts.map +1 -1
  165. package/dist/pdf-backend/headerFooter.js +105 -48
  166. package/dist/pdf-backend/headerFooter.js.map +1 -1
  167. package/dist/pdf-backend/index.d.ts +55 -6
  168. package/dist/pdf-backend/index.d.ts.map +1 -1
  169. package/dist/pdf-backend/index.js +135 -35
  170. package/dist/pdf-backend/index.js.map +1 -1
  171. package/dist/pdf-backend/links.d.ts +82 -1
  172. package/dist/pdf-backend/links.d.ts.map +1 -1
  173. package/dist/pdf-backend/links.js +141 -3
  174. package/dist/pdf-backend/links.js.map +1 -1
  175. package/dist/pdf-backend/outlines.d.ts.map +1 -1
  176. package/dist/pdf-backend/outlines.js +7 -0
  177. package/dist/pdf-backend/outlines.js.map +1 -1
  178. package/dist/pdf-backend/pageDecorations.d.ts.map +1 -1
  179. package/dist/pdf-backend/pageDecorations.js +42 -26
  180. package/dist/pdf-backend/pageDecorations.js.map +1 -1
  181. package/dist/pdf-backend/primitives.d.ts +61 -1
  182. package/dist/pdf-backend/primitives.d.ts.map +1 -1
  183. package/dist/pdf-backend/primitives.js +318 -18
  184. package/dist/pdf-backend/primitives.js.map +1 -1
  185. package/dist/pdf-backend/renderResourceBlock.d.ts +3 -1
  186. package/dist/pdf-backend/renderResourceBlock.d.ts.map +1 -1
  187. package/dist/pdf-backend/renderResourceBlock.js +97 -19
  188. package/dist/pdf-backend/renderResourceBlock.js.map +1 -1
  189. package/dist/pdf-backend/structureFlow.d.ts +70 -3
  190. package/dist/pdf-backend/structureFlow.d.ts.map +1 -1
  191. package/dist/pdf-backend/structureFlow.js +209 -27
  192. package/dist/pdf-backend/structureFlow.js.map +1 -1
  193. package/dist/pdf-backend/svgVector.d.ts +7 -2
  194. package/dist/pdf-backend/svgVector.d.ts.map +1 -1
  195. package/dist/pdf-backend/svgVector.js +157 -72
  196. package/dist/pdf-backend/svgVector.js.map +1 -1
  197. package/dist/pdf-backend/tagging.d.ts +1 -1
  198. package/dist/pdf-backend/tagging.d.ts.map +1 -1
  199. package/dist/pdf-backend/tagging.js.map +1 -1
  200. package/dist/worker/client.d.ts +1 -1
  201. package/dist/worker/client.d.ts.map +1 -1
  202. package/dist/worker/client.js +8 -0
  203. package/dist/worker/client.js.map +1 -1
  204. package/dist/worker/pdf.worker.js +1 -0
  205. package/dist/worker/pdf.worker.js.map +1 -1
  206. package/dist/worker/protocol.d.ts +8 -1
  207. package/dist/worker/protocol.d.ts.map +1 -1
  208. package/package.json +3 -3
@@ -1,6 +1,6 @@
1
1
  import { PDFDocument, BlendMode, } from 'pdf-lib';
2
2
  import fontkit from '@pdf-lib/fontkit';
3
- import { columnClipRect, computePageTextExtent, dimensionToPx } from 'postext';
3
+ import { columnClipRect, computePageTextExtent, dimensionToPx, pageColumnRule } from 'postext';
4
4
  import { FontCache } from '../fontCache';
5
5
  import { colorFromHex, fillRectPx, makeScale, popClip, pushClipRect, whiteColor, } from './primitives';
6
6
  import { collectFontStrings } from './fontHelpers';
@@ -13,17 +13,51 @@ import { preloadResourceImages, } from './renderResourceBlock';
13
13
  import { LinkRegistry } from './links';
14
14
  import { StructTree, tagArtifact } from './tagging';
15
15
  import { StructureFlow } from './structureFlow';
16
- /** BCP 47 tag of a postext locale (`/Lang`). */
17
- function languageTag(locale) {
16
+ /** The warning of a face set in another cut of its family. */
17
+ function fontFallbackWarning(f) {
18
+ const face = (weight, style) => `${weight}${style === 'italic' ? ' italic' : ''}`;
19
+ return {
20
+ kind: 'fontFallback',
21
+ ...f,
22
+ message: `postext-pdf: "${f.family}" ${face(f.weight, f.style)} is not available from the font provider (${f.reason}); using ${face(f.fallback.weight, f.fallback.style)} instead`,
23
+ };
24
+ }
25
+ /** BCP 47 tag of a postext locale (`/Lang`): the tag the document named
26
+ * (`'es-ES'`, `'sv'`) when its hyphenation patterns are another locale's,
27
+ * else the patterns' own (`'en-us'` → `'en-US'`). */
28
+ function languageTag(hyphenation) {
29
+ const locale = hyphenation?.tag?.trim() || hyphenation?.locale;
18
30
  if (!locale)
19
31
  return undefined;
20
- const [lang, region] = locale.split('-');
21
- return region ? `${lang}-${region.toUpperCase()}` : lang;
32
+ // Canonical case: language lower, a two-letter region upper, the script
33
+ // and variant subtags as given.
34
+ return locale.replace(/_/g, '-').split('-')
35
+ .map((sub, i) => (i === 0 ? sub.toLowerCase() : sub.length === 2 ? sub.toUpperCase() : sub))
36
+ .join('-');
37
+ }
38
+ /** A metadata value as PDF text. The engine hands the printed fields over
39
+ * as strings; a VDT from elsewhere may still carry typed YAML values
40
+ * (`title: 1984` is a number, a date a `Date`, `author: [A, B]` a list),
41
+ * which pdf-lib rejects — coerce them rather than throw. */
42
+ function metadataString(value) {
43
+ if (typeof value === 'string')
44
+ return value;
45
+ if (typeof value === 'number')
46
+ return Number.isFinite(value) ? String(value) : undefined;
47
+ if (typeof value === 'boolean')
48
+ return String(value);
49
+ if (value instanceof Date)
50
+ return Number.isNaN(value.getTime()) ? undefined : value.toISOString().slice(0, 10);
51
+ if (Array.isArray(value)) {
52
+ const items = value.map(metadataString).filter((v) => !!v);
53
+ return items.length > 0 ? items.join(', ') : undefined;
54
+ }
55
+ return undefined;
22
56
  }
23
57
  /** Title of the document for the PDF metadata: the declared title, else the
24
58
  * first heading (PDF/UA-1 §7.1 requires one). */
25
59
  function documentTitle(docs) {
26
- const declared = docs[0]?.metadata?.title?.trim();
60
+ const declared = metadataString(docs[0]?.metadata?.title)?.trim();
27
61
  if (declared)
28
62
  return declared;
29
63
  let best;
@@ -46,7 +80,9 @@ function documentTitle(docs) {
46
80
  }
47
81
  /** The heading element an opener band's text belongs to: the part title on
48
82
  * a part-divider page, else the `span: 'page'` heading the band replaced
49
- * (hidden in its column), else a plain paragraph. */
83
+ * (hidden in its column, its lines still set — a structural `hidden`
84
+ * heading, whose lines have no height, prints nothing at all), else a
85
+ * plain paragraph. */
50
86
  function openerTextElem(page, structure) {
51
87
  let elem;
52
88
  return () => {
@@ -56,19 +92,27 @@ function openerTextElem(page, structure) {
56
92
  return (elem = structure.partHeading());
57
93
  for (const col of page.columns) {
58
94
  for (const block of col.blocks) {
59
- if (block.hidden && block.type === 'heading')
95
+ if (block.hidden && block.type === 'heading' && (block.lines[0]?.bbox.height ?? 0) > 0)
60
96
  return (elem = structure.blockElem(block));
61
97
  }
62
98
  }
63
99
  return (elem = structure.tree.root.child('P'));
64
100
  };
65
101
  }
66
- function renderPage(pdfDoc, vdtPage, doc, fontCache, pageNegative, colorSpace, resourceCtx, tree) {
102
+ function renderPage(pdfDoc, vdtPage, doc, fontCache, pageNegative, colorSpace, resourceCtx, tree, onMissingImage) {
67
103
  const scale = makeScale(doc.config.page.dpi);
68
104
  const pageWidthPt = vdtPage.width * scale;
69
105
  const pageHeightPt = vdtPage.height * scale;
70
106
  const page = pdfDoc.addPage([pageWidthPt, pageHeightPt]);
71
- const ctx = { page, pageHeightPt, scale, colorSpace, tags: tree?.beginPage(page) };
107
+ // With cut lines the sheet carries the bleed and the marks: say where the
108
+ // page is trimmed and how far its art runs, for imposition and preflight.
109
+ if (doc.config.page.cutLines.enabled) {
110
+ const trimPt = doc.trimOffset * scale;
111
+ const bleedPt = Math.max(0, doc.trimOffset - dimensionToPx(doc.config.page.cutLines.bleed, doc.config.page.dpi)) * scale;
112
+ page.setTrimBox(trimPt, trimPt, pageWidthPt - 2 * trimPt, pageHeightPt - 2 * trimPt);
113
+ page.setBleedBox(bleedPt, bleedPt, pageWidthPt - 2 * bleedPt, pageHeightPt - 2 * bleedPt);
114
+ }
115
+ const ctx = { page, pageHeightPt, scale, colorSpace, tags: tree?.beginPage(page), ...(onMissingImage ? { onMissingImage } : {}) };
72
116
  const structure = resourceCtx.structure;
73
117
  // Background: full page white first (cut-mark area stays white), then the
74
118
  // trim+bleed area filled with the configured page background colour.
@@ -76,12 +120,20 @@ function renderPage(pdfDoc, vdtPage, doc, fontCache, pageNegative, colorSpace, r
76
120
  fillRectPx(ctx, 0, 0, vdtPage.width, vdtPage.height, whiteColor(colorSpace));
77
121
  const bgHex = doc.config.page.backgroundColor.hex;
78
122
  const trimOff = doc.trimOffset;
123
+ const bleedPx = trimOff > 0
124
+ ? dimensionToPx(doc.config.page.cutLines.bleed, doc.config.page.dpi)
125
+ : 0;
79
126
  if (bgHex && bgHex !== 'transparent') {
80
- const bleedPx = trimOff > 0
81
- ? dimensionToPx(doc.config.page.cutLines.bleed, doc.config.page.dpi)
82
- : 0;
83
127
  fillRectPx(ctx, trimOff - bleedPx, trimOff - bleedPx, vdtPage.width - (trimOff - bleedPx) * 2, vdtPage.height - (trimOff - bleedPx) * 2, colorFromHex(bgHex, colorSpace));
84
128
  }
129
+ // With cut lines the sheet also carries the slug, where only the marks
130
+ // print: everything the page paints is clipped to the bleed box, as a
131
+ // DTP export clips it (EF-133). The marks are drawn after the clip ends.
132
+ const bleedClip = trimOff > 0;
133
+ if (bleedClip) {
134
+ const inset = Math.max(0, trimOff - bleedPx);
135
+ pushClipRect(ctx, inset, inset, vdtPage.width - inset * 2, vdtPage.height - inset * 2);
136
+ }
85
137
  tagArtifact(ctx, { type: 'Layout' });
86
138
  if (doc.config.page.baselineGrid.enabled) {
87
139
  // Bound the grid to the page's actual text: from the first text line to
@@ -93,9 +145,11 @@ function renderPage(pdfDoc, vdtPage, doc, fontCache, pageNegative, colorSpace, r
93
145
  renderBaselineGrid(ctx, contentArea, doc.baselineGrid, doc.config.page.baselineGrid.color.hex, gridLineWidthPx, textExtent);
94
146
  }
95
147
  }
96
- if (doc.config.layout.columnRule.enabled && vdtPage.columns.length > 1) {
97
- const crLineWidthPx = dimensionToPx(doc.config.layout.columnRule.lineWidth, doc.config.page.dpi);
98
- renderColumnRule(ctx, vdtPage.columns, doc.config.layout.columnRule.color.hex, crLineWidthPx);
148
+ // The page's own rule on a styled section's pages, else the document's
149
+ // (mirrors the canvas backend via `pageColumnRule`).
150
+ const columnRule = pageColumnRule(vdtPage, doc);
151
+ if (columnRule.enabled && vdtPage.columns.length > 1) {
152
+ renderColumnRule(ctx, vdtPage.columns, columnRule.color, columnRule.lineWidthPx);
99
153
  }
100
154
  // Opener / part bands go under the columns so their backgrounds sit
101
155
  // beneath the body text (mirrors the canvas backend). Their text is the
@@ -110,8 +164,13 @@ function renderPage(pdfDoc, vdtPage, doc, fontCache, pageNegative, colorSpace, r
110
164
  const clip = columnClipRect(col, doc.config.page.dpi);
111
165
  pushClipRect(ctx, clip.x, clip.y, clip.width, clip.height);
112
166
  for (const block of col.blocks) {
113
- if (block.tocPart && block.designOverlay)
167
+ if (block.tocPart && block.designOverlay) {
168
+ // Painted below, but read in its place among the contents rows.
169
+ if (structure && !block.hidden && block.designOverlay.blocks.some((b) => b.kind === 'text')) {
170
+ structure.blockElem(block);
171
+ }
114
172
  continue;
173
+ }
115
174
  renderBlock(ctx, block, col.bbox.width, col.bbox.x, fontCache, resourceCtx);
116
175
  }
117
176
  popClip(ctx);
@@ -119,15 +178,25 @@ function renderPage(pdfDoc, vdtPage, doc, fontCache, pageNegative, colorSpace, r
119
178
  // run past the column (a band reaching beyond the page numbers): it
120
179
  // is drawn outside the column clip, like a float.
121
180
  for (const block of col.blocks) {
122
- if (block.tocPart && block.designOverlay)
123
- renderBlock(ctx, block, col.bbox.width, col.bbox.x, fontCache, resourceCtx);
181
+ if (!block.tocPart || !block.designOverlay)
182
+ continue;
183
+ const paint = () => renderBlock(ctx, block, col.bbox.width, col.bbox.x, fontCache, resourceCtx);
184
+ if (structure)
185
+ structure.aside(paint);
186
+ else
187
+ paint();
124
188
  }
125
189
  }
126
190
  // Floated resources sit outside the column clip (a `span: 'page'` float can
127
191
  // cross the gutter); they carry an absolute bbox positioned at build time.
192
+ // A tagged render reads each one after the text that cites it (EF-146).
128
193
  if (vdtPage.floats) {
129
194
  for (const fb of vdtPage.floats) {
130
- renderBlock(ctx, fb, fb.bbox.width, fb.bbox.x, fontCache, resourceCtx);
195
+ const paint = () => renderBlock(ctx, fb, fb.bbox.width, fb.bbox.x, fontCache, resourceCtx);
196
+ if (structure)
197
+ structure.readFloat(fb, paint);
198
+ else
199
+ paint();
131
200
  }
132
201
  }
133
202
  // Running headers and footers are pagination artifacts.
@@ -136,13 +205,12 @@ function renderPage(pdfDoc, vdtPage, doc, fontCache, pageNegative, colorSpace, r
136
205
  renderHeaderFooterSlot(ctx, vdtPage.header, fontCache, resourceCtx.images, pagination('Header'));
137
206
  if (vdtPage.footer)
138
207
  renderHeaderFooterSlot(ctx, vdtPage.footer, fontCache, resourceCtx.images, pagination('Footer'));
208
+ if (bleedClip)
209
+ popClip(ctx);
139
210
  // Page negative: overlay white rect with Difference blend across trim+bleed.
140
211
  // Crop marks remain un-inverted (drawn afterwards).
141
212
  tagArtifact(ctx, { type: 'Page' });
142
213
  if (pageNegative) {
143
- const bleedPx = trimOff > 0
144
- ? dimensionToPx(doc.config.page.cutLines.bleed, doc.config.page.dpi)
145
- : 0;
146
214
  const invX = trimOff - bleedPx;
147
215
  const invY = trimOff - bleedPx;
148
216
  const invW = vdtPage.width - (trimOff - bleedPx) * 2;
@@ -152,6 +220,18 @@ function renderPage(pdfDoc, vdtPage, doc, fontCache, pageNegative, colorSpace, r
152
220
  renderCutLines(ctx, vdtPage, doc);
153
221
  ctx.tags?.close();
154
222
  }
223
+ /** The output settings of a render: each one from `options` when given,
224
+ * else from the document's `config.pdfGeneration` (a colour space only
225
+ * while its `forceColorSpace` is on), else the default — RGB, bookmarks
226
+ * and tagging on. */
227
+ function pdfSettings(options, doc) {
228
+ const gen = doc?.config.pdfGeneration;
229
+ return {
230
+ outlines: options.outlines ?? gen?.outlines ?? true,
231
+ accessible: options.accessible ?? gen?.accessible ?? true,
232
+ colorSpace: options.colorSpace ?? (gen?.forceColorSpace ? gen.colorSpace : undefined) ?? 'rgb',
233
+ };
234
+ }
155
235
  /**
156
236
  * Render one document — or a book, as the documents of its chapters in
157
237
  * order, each laid out with the continuation of the ones before it — into
@@ -167,26 +247,33 @@ export async function renderToPdf(input, options) {
167
247
  const totalPages = docs.reduce((n, d) => n + d.pages.length, 0);
168
248
  const pdfDoc = await PDFDocument.create();
169
249
  pdfDoc.registerFontkit(fontkit);
170
- if (first.metadata?.title)
171
- pdfDoc.setTitle(first.metadata.title);
172
- if (first.metadata?.author)
173
- pdfDoc.setAuthor(first.metadata.author);
250
+ const metaTitle = metadataString(first.metadata?.title);
251
+ const metaAuthor = metadataString(first.metadata?.author);
252
+ if (metaTitle)
253
+ pdfDoc.setTitle(metaTitle);
254
+ if (metaAuthor)
255
+ pdfDoc.setAuthor(metaAuthor);
174
256
  pdfDoc.setCreator('postext');
175
257
  pdfDoc.setProducer('postext-pdf');
176
- const fontCache = new FontCache(pdfDoc, options.fontProvider);
258
+ const warn = options.onWarning ?? ((w) => { if (w.kind === 'fontFallback')
259
+ console.warn(w.message); });
260
+ const fontCache = new FontCache(pdfDoc, options.fontProvider, (f) => warn(fontFallbackWarning(f)));
177
261
  for (const doc of docs)
178
262
  await fontCache.preloadFontStrings(collectFontStrings(doc));
179
263
  const missing = fontCache.missing();
180
264
  if (missing.length > 0) {
181
265
  throw new Error(`postext-pdf: failed to load font(s): ${missing.join(', ')}`);
182
266
  }
183
- const colorSpace = options.colorSpace ?? 'rgb';
267
+ // Each setting: the option when given, else the first document's
268
+ // `pdfGeneration`, else the default.
269
+ const settings = pdfSettings(options, first);
270
+ const colorSpace = settings.colorSpace;
184
271
  // Accessible output: the structure tree the pages tag their content into.
185
- const tree = (options.accessible ?? true)
272
+ const tree = settings.accessible
186
273
  ? new StructTree(pdfDoc, {
187
274
  title: documentTitle(docs),
188
- author: first.metadata?.author,
189
- lang: languageTag(first.config.bodyText.hyphenation?.locale),
275
+ author: metaAuthor,
276
+ lang: languageTag(first.config.bodyText.hyphenation),
190
277
  producer: 'postext-pdf',
191
278
  creatorTool: 'postext',
192
279
  })
@@ -203,7 +290,10 @@ export async function renderToPdf(input, options) {
203
290
  // onto the PDF's pages from the first document's offset.
204
291
  const linkRegistry = new LinkRegistry(first.pageIndexOffset ?? 0);
205
292
  let rendered = 0;
206
- for (const doc of docs) {
293
+ // Placeholders are reported once per image for the whole file.
294
+ const onWarning = options.onWarning;
295
+ const reportedImages = new Set();
296
+ for (const [documentIndex, doc] of docs.entries()) {
207
297
  // Block ids restart per document: each gets its own structure flow
208
298
  // (paragraph fragments, lists and callouts never span chapters).
209
299
  const resourceCtx = {
@@ -212,18 +302,28 @@ export async function renderToPdf(input, options) {
212
302
  structure: tree ? new StructureFlow(tree) : undefined,
213
303
  };
214
304
  for (const page of doc.pages) {
215
- renderPage(pdfDoc, page, doc, fontCache, options.pageNegative ?? false, colorSpace, resourceCtx, tree);
305
+ const onMissingImage = onWarning
306
+ ? (fileId, resourceId) => {
307
+ if (reportedImages.has(fileId))
308
+ return;
309
+ reportedImages.add(fileId);
310
+ onWarning({ kind: 'missingImage', fileId, ...(resourceId !== undefined ? { resourceId } : {}), pageIndex: page.index, documentIndex });
311
+ }
312
+ : undefined;
313
+ renderPage(pdfDoc, page, doc, fontCache, options.pageNegative ?? false, colorSpace, resourceCtx, tree, onMissingImage);
216
314
  rendered++;
217
315
  options.onProgress?.({ phase: 'pages', pages: rendered, totalPages });
218
316
  }
219
317
  }
220
318
  // Attach inline-ref link annotations now that every destination is known.
221
319
  linkRegistry.finalize(pdfDoc, tree);
222
- if (options.outlines ?? true) {
320
+ if (settings.outlines) {
223
321
  addOutlines(pdfDoc, docs);
224
322
  }
225
323
  addPageLabels(pdfDoc, docs);
226
324
  tree?.finalize();
325
+ // A face asked for but never drawn with is not written.
326
+ fontCache.dropUnusedFonts();
227
327
  options.onProgress?.({ phase: 'save', pages: rendered, totalPages });
228
328
  return pdfDoc.save();
229
329
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pdf-backend/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pdf-backend/index.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,9 @@
6
6
  * top-left). Each inline `:ref{id=…}` becomes a `/Link` annotation whose
7
7
  * rectangle covers the rendered ref text and whose `/Dest` is the matching
8
8
  * destination. A row of the contents (`:::toc`) becomes a `/Link` to the
9
- * top of the page it lists, when that page is in the document.
9
+ * top of the page it lists, when that page is in the document. The words of
10
+ * a Markdown link (`VDTLineSegment.href`) become a `/Link` with a URI
11
+ * action, one per line they run over.
10
12
  *
11
13
  * Destinations and links can be emitted in any page order, so collection is
12
14
  * two-phase: callers record destinations + pending links during page rendering,
@@ -21,6 +23,10 @@ export interface LinkStruct {
21
23
  elem: StructElem;
22
24
  contents: string;
23
25
  }
26
+ /** A Markdown link target as a PDF URI (7-bit ASCII, ISO 32000-1 §12.6.4.7):
27
+ * characters outside printable ASCII percent-encoded as UTF-8; undefined
28
+ * for a relative URL, which a PDF has no base to resolve against. */
29
+ export declare function pdfUri(href: string): string | undefined;
24
30
  export declare class LinkRegistry {
25
31
  private readonly pageIndexOffset;
26
32
  private dests;
@@ -32,6 +38,9 @@ export declare class LinkRegistry {
32
38
  addDestination(resourceId: string, page: PDFPage, leftPt: number, topPt: number): void;
33
39
  /** Record a pending inline-ref link to be attached at finalize. */
34
40
  addLink(page: PDFPage, rect: [number, number, number, number], resourceId: string, struct?: LinkStruct): void;
41
+ /** Record a pending link to a URI (a Markdown link's words on one line);
42
+ * `uri` is already a {@link pdfUri}. */
43
+ addUriLink(page: PDFPage, rect: [number, number, number, number], uri: string, struct?: LinkStruct): void;
35
44
  /** Record a pending link to the top of a book page (a contents row). */
36
45
  addPageLink(page: PDFPage, rect: [number, number, number, number], pageIndex: number, struct?: LinkStruct): void;
37
46
  /** Attach all pending link annotations. Links whose destination resource was
@@ -41,4 +50,76 @@ export declare class LinkRegistry {
41
50
  * `/StructParent`) and carries `/Contents` (PDF/UA-1 §7.18.5). */
42
51
  finalize(pdfDoc: PDFDocument, tree?: StructTree): void;
43
52
  }
53
+ /** The fields of a line segment that say which reference it paints. */
54
+ interface RefSegment {
55
+ text: string;
56
+ refResourceId?: string;
57
+ refContinues?: boolean;
58
+ }
59
+ /** A reference being painted: where it starts (px), its text so far and
60
+ * its `Link` element (tagged render only). */
61
+ export interface RefRunState {
62
+ resourceId: string;
63
+ startX: number;
64
+ text: string;
65
+ link?: StructElem;
66
+ }
67
+ /**
68
+ * Follows one inline `:ref` across the segments that paint it. A reference
69
+ * set in small capitals is painted as several runs, one per case, the later
70
+ * ones flagged `refContinues`: they share one `Link` element, and the link
71
+ * annotation, recorded once the last run is painted, covers them all.
72
+ */
73
+ export declare class RefRun {
74
+ private current;
75
+ /** Call before painting `seg` at `x` (px). Returns the `Link` element its
76
+ * text joins: a new child of `elem` at a reference's first run, the same
77
+ * one for the runs that continue it; none for plain text or an untagged
78
+ * render. */
79
+ enter(seg: RefSegment, x: number, elem: StructElem | undefined, resourceId?: string | undefined): StructElem | undefined;
80
+ /** Call after painting `seg`. Returns the whole reference once its last
81
+ * run is painted (`next` does not continue it), else nothing. */
82
+ leave(seg: RefSegment, next: RefSegment | undefined, resourceId?: string | undefined): RefRunState | undefined;
83
+ }
84
+ /** What a {@link UriRuns} needs of the page being drawn. */
85
+ interface UriRunsCtx {
86
+ page: PDFPage;
87
+ pageHeightPt: number;
88
+ scale: number;
89
+ mapRectPt?: (rect: [number, number, number, number]) => [number, number, number, number];
90
+ }
91
+ /**
92
+ * The Markdown links of one line as it is painted left to right: each run
93
+ * of words sharing a target — spaces between them included — becomes one
94
+ * URI link annotation over the line box and, in a tagged render, one `Link`
95
+ * element (child of `parent`) holding their text. Feed every segment in
96
+ * order, then call {@link end}.
97
+ */
98
+ export declare class UriRuns {
99
+ private readonly ctx;
100
+ private readonly line;
101
+ private readonly registry;
102
+ private readonly parent;
103
+ private run;
104
+ constructor(ctx: UriRunsCtx, line: {
105
+ bbox: {
106
+ y: number;
107
+ height: number;
108
+ };
109
+ }, registry: LinkRegistry | undefined, parent: StructElem | undefined);
110
+ /** A word at `x` (px) of `width`: the `Link` element its text joins when
111
+ * it is part of a link (`href` a PDF-openable URL), else undefined. A
112
+ * word without a link, or with another one, ends the open run. */
113
+ word(href: string | undefined, x: number, width: number, text: string): StructElem | undefined;
114
+ /** A word space: joins the open run's element (a space inside a link;
115
+ * one after its last word ends up there too, which extraction reads the
116
+ * same). The run's box only grows with the next word. */
117
+ space(text: string): StructElem | undefined;
118
+ /** Anything that is not a word (a formula, a swatch, a chip) ends the
119
+ * open run. */
120
+ other(): void;
121
+ end(): void;
122
+ private flush;
123
+ }
124
+ export {};
44
125
  //# sourceMappingURL=links.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../src/pdf-backend/links.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAKL,KAAK,WAAW,EAChB,KAAK,OAAO,EAEb,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAExD;uEACuE;AACvE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAsBD,qBAAa,YAAY;IAKX,OAAO,CAAC,QAAQ,CAAC,eAAe;IAJ5C,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,OAAO,CAAqB;IAEpC,uDAAuD;gBAC1B,eAAe,SAAI;IAEhD;yEACqE;IACrE,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAKtF,mEAAmE;IACnE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,IAAI;IAI7G,wEAAwE;IACxE,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,IAAI;IAIhH;;;;uEAImE;IACnE,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI;CA2DvD"}
1
+ {"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../src/pdf-backend/links.ts"],"names":[],"mappings":"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"}