postext-pdf 1.4.2 → 1.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.
- package/README.md +3 -3
- package/dist/__tests__/accessibility.test.js +66 -0
- package/dist/__tests__/accessibility.test.js.map +1 -1
- package/dist/__tests__/alpha.test.d.ts +2 -0
- package/dist/__tests__/alpha.test.d.ts.map +1 -0
- package/dist/__tests__/alpha.test.js +164 -0
- package/dist/__tests__/alpha.test.js.map +1 -0
- package/dist/__tests__/bleedClip.test.d.ts +2 -0
- package/dist/__tests__/bleedClip.test.d.ts.map +1 -0
- package/dist/__tests__/bleedClip.test.js +83 -0
- package/dist/__tests__/bleedClip.test.js.map +1 -0
- package/dist/__tests__/boxBorderInside.test.d.ts +2 -0
- package/dist/__tests__/boxBorderInside.test.d.ts.map +1 -0
- package/dist/__tests__/boxBorderInside.test.js +63 -0
- package/dist/__tests__/boxBorderInside.test.js.map +1 -0
- package/dist/__tests__/calloutRuntTracking.test.d.ts +2 -0
- package/dist/__tests__/calloutRuntTracking.test.d.ts.map +1 -0
- package/dist/__tests__/calloutRuntTracking.test.js +72 -0
- package/dist/__tests__/calloutRuntTracking.test.js.map +1 -0
- package/dist/__tests__/calloutStripeRadius.test.d.ts +2 -0
- package/dist/__tests__/calloutStripeRadius.test.d.ts.map +1 -0
- package/dist/__tests__/calloutStripeRadius.test.js +90 -0
- package/dist/__tests__/calloutStripeRadius.test.js.map +1 -0
- package/dist/__tests__/chipVerticalPadding.test.d.ts +2 -0
- package/dist/__tests__/chipVerticalPadding.test.d.ts.map +1 -0
- package/dist/__tests__/chipVerticalPadding.test.js +71 -0
- package/dist/__tests__/chipVerticalPadding.test.js.map +1 -0
- package/dist/__tests__/chips.test.js +20 -3
- package/dist/__tests__/chips.test.js.map +1 -1
- package/dist/__tests__/documentLanguage.test.d.ts +2 -0
- package/dist/__tests__/documentLanguage.test.d.ts.map +1 -0
- package/dist/__tests__/documentLanguage.test.js +44 -0
- package/dist/__tests__/documentLanguage.test.js.map +1 -0
- package/dist/__tests__/fallbackSpaces.test.d.ts +2 -0
- package/dist/__tests__/fallbackSpaces.test.d.ts.map +1 -0
- package/dist/__tests__/fallbackSpaces.test.js +156 -0
- package/dist/__tests__/fallbackSpaces.test.js.map +1 -0
- package/dist/__tests__/floatReadingOrder.test.d.ts +2 -0
- package/dist/__tests__/floatReadingOrder.test.d.ts.map +1 -0
- package/dist/__tests__/floatReadingOrder.test.js +208 -0
- package/dist/__tests__/floatReadingOrder.test.js.map +1 -0
- package/dist/__tests__/fontEmbedding.test.d.ts +2 -0
- package/dist/__tests__/fontEmbedding.test.d.ts.map +1 -0
- package/dist/__tests__/fontEmbedding.test.js +118 -0
- package/dist/__tests__/fontEmbedding.test.js.map +1 -0
- package/dist/__tests__/fontFaces.test.d.ts +2 -0
- package/dist/__tests__/fontFaces.test.d.ts.map +1 -0
- package/dist/__tests__/fontFaces.test.js +193 -0
- package/dist/__tests__/fontFaces.test.js.map +1 -0
- package/dist/__tests__/fontStack.test.d.ts +2 -0
- package/dist/__tests__/fontStack.test.d.ts.map +1 -0
- package/dist/__tests__/fontStack.test.js +48 -0
- package/dist/__tests__/fontStack.test.js.map +1 -0
- package/dist/__tests__/headerFooter.test.js +83 -1
- package/dist/__tests__/headerFooter.test.js.map +1 -1
- package/dist/__tests__/headingAlign.test.d.ts +2 -0
- package/dist/__tests__/headingAlign.test.d.ts.map +1 -0
- package/dist/__tests__/headingAlign.test.js +66 -0
- package/dist/__tests__/headingAlign.test.js.map +1 -0
- package/dist/__tests__/hiddenHeadings.test.d.ts +2 -0
- package/dist/__tests__/hiddenHeadings.test.d.ts.map +1 -0
- package/dist/__tests__/hiddenHeadings.test.js +96 -0
- package/dist/__tests__/hiddenHeadings.test.js.map +1 -0
- package/dist/__tests__/lineTracking.test.d.ts +2 -0
- package/dist/__tests__/lineTracking.test.d.ts.map +1 -0
- package/dist/__tests__/lineTracking.test.js +80 -0
- package/dist/__tests__/lineTracking.test.js.map +1 -0
- package/dist/__tests__/measuredLines.test.d.ts +2 -0
- package/dist/__tests__/measuredLines.test.d.ts.map +1 -0
- package/dist/__tests__/measuredLines.test.js +255 -0
- package/dist/__tests__/measuredLines.test.js.map +1 -0
- package/dist/__tests__/metadata.test.d.ts +2 -0
- package/dist/__tests__/metadata.test.d.ts.map +1 -0
- package/dist/__tests__/metadata.test.js +51 -0
- package/dist/__tests__/metadata.test.js.map +1 -0
- package/dist/__tests__/outlineTitles.test.d.ts +2 -0
- package/dist/__tests__/outlineTitles.test.d.ts.map +1 -0
- package/dist/__tests__/outlineTitles.test.js +59 -0
- package/dist/__tests__/outlineTitles.test.js.map +1 -0
- package/dist/__tests__/pdfGenerationConfig.test.d.ts +2 -0
- package/dist/__tests__/pdfGenerationConfig.test.d.ts.map +1 -0
- package/dist/__tests__/pdfGenerationConfig.test.js +76 -0
- package/dist/__tests__/pdfGenerationConfig.test.js.map +1 -0
- package/dist/__tests__/pdfWorker.test.d.ts +2 -0
- package/dist/__tests__/pdfWorker.test.d.ts.map +1 -0
- package/dist/__tests__/pdfWorker.test.js +123 -0
- package/dist/__tests__/pdfWorker.test.js.map +1 -0
- package/dist/__tests__/printMarks.test.d.ts +2 -0
- package/dist/__tests__/printMarks.test.d.ts.map +1 -0
- package/dist/__tests__/printMarks.test.js +170 -0
- package/dist/__tests__/printMarks.test.js.map +1 -0
- package/dist/__tests__/printMaster.test.d.ts +2 -0
- package/dist/__tests__/printMaster.test.d.ts.map +1 -0
- package/dist/__tests__/printMaster.test.js +161 -0
- package/dist/__tests__/printMaster.test.js.map +1 -0
- package/dist/__tests__/renderWarnings.test.d.ts +2 -0
- package/dist/__tests__/renderWarnings.test.d.ts.map +1 -0
- package/dist/__tests__/renderWarnings.test.js +89 -0
- package/dist/__tests__/renderWarnings.test.js.map +1 -0
- package/dist/__tests__/repeatedHyphen.test.d.ts +2 -0
- package/dist/__tests__/repeatedHyphen.test.d.ts.map +1 -0
- package/dist/__tests__/repeatedHyphen.test.js +125 -0
- package/dist/__tests__/repeatedHyphen.test.js.map +1 -0
- package/dist/__tests__/scriptStacking.test.d.ts +2 -0
- package/dist/__tests__/scriptStacking.test.d.ts.map +1 -0
- package/dist/__tests__/scriptStacking.test.js +66 -0
- package/dist/__tests__/scriptStacking.test.js.map +1 -0
- package/dist/__tests__/sectionColumnRule.test.d.ts +2 -0
- package/dist/__tests__/sectionColumnRule.test.d.ts.map +1 -0
- package/dist/__tests__/sectionColumnRule.test.js +144 -0
- package/dist/__tests__/sectionColumnRule.test.js.map +1 -0
- package/dist/__tests__/svgFormReuse.test.d.ts +2 -0
- package/dist/__tests__/svgFormReuse.test.d.ts.map +1 -0
- package/dist/__tests__/svgFormReuse.test.js +102 -0
- package/dist/__tests__/svgFormReuse.test.js.map +1 -0
- package/dist/__tests__/svgVector.test.js +85 -11
- package/dist/__tests__/svgVector.test.js.map +1 -1
- package/dist/__tests__/tableFillSeams.test.d.ts +2 -0
- package/dist/__tests__/tableFillSeams.test.d.ts.map +1 -0
- package/dist/__tests__/tableFillSeams.test.js +72 -0
- package/dist/__tests__/tableFillSeams.test.js.map +1 -0
- package/dist/__tests__/tocLeaderKerning.test.d.ts +2 -0
- package/dist/__tests__/tocLeaderKerning.test.d.ts.map +1 -0
- package/dist/__tests__/tocLeaderKerning.test.js +84 -0
- package/dist/__tests__/tocLeaderKerning.test.js.map +1 -0
- package/dist/__tests__/tocNumberBaseline.test.d.ts +2 -0
- package/dist/__tests__/tocNumberBaseline.test.d.ts.map +1 -0
- package/dist/__tests__/tocNumberBaseline.test.js +72 -0
- package/dist/__tests__/tocNumberBaseline.test.js.map +1 -0
- package/dist/__tests__/tocTagging.test.d.ts +2 -0
- package/dist/__tests__/tocTagging.test.d.ts.map +1 -0
- package/dist/__tests__/tocTagging.test.js +120 -0
- package/dist/__tests__/tocTagging.test.js.map +1 -0
- package/dist/__tests__/trackedLineAlign.test.d.ts +2 -0
- package/dist/__tests__/trackedLineAlign.test.d.ts.map +1 -0
- package/dist/__tests__/trackedLineAlign.test.js +73 -0
- package/dist/__tests__/trackedLineAlign.test.js.map +1 -0
- package/dist/__tests__/uriLinks.test.d.ts +2 -0
- package/dist/__tests__/uriLinks.test.d.ts.map +1 -0
- package/dist/__tests__/uriLinks.test.js +103 -0
- package/dist/__tests__/uriLinks.test.js.map +1 -0
- package/dist/colors.d.ts +18 -3
- package/dist/colors.d.ts.map +1 -1
- package/dist/colors.js +77 -25
- package/dist/colors.js.map +1 -1
- package/dist/fontCache.d.ts +67 -4
- package/dist/fontCache.d.ts.map +1 -1
- package/dist/fontCache.js +200 -23
- package/dist/fontCache.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/pdf-backend/blockRender.d.ts.map +1 -1
- package/dist/pdf-backend/blockRender.js +127 -28
- package/dist/pdf-backend/blockRender.js.map +1 -1
- package/dist/pdf-backend/fallbackSpaces.d.ts +37 -0
- package/dist/pdf-backend/fallbackSpaces.d.ts.map +1 -0
- package/dist/pdf-backend/fallbackSpaces.js +119 -0
- package/dist/pdf-backend/fallbackSpaces.js.map +1 -0
- package/dist/pdf-backend/fontHelpers.d.ts +10 -1
- package/dist/pdf-backend/fontHelpers.d.ts.map +1 -1
- package/dist/pdf-backend/fontHelpers.js +111 -65
- package/dist/pdf-backend/fontHelpers.js.map +1 -1
- package/dist/pdf-backend/headerFooter.d.ts +4 -2
- package/dist/pdf-backend/headerFooter.d.ts.map +1 -1
- package/dist/pdf-backend/headerFooter.js +105 -48
- package/dist/pdf-backend/headerFooter.js.map +1 -1
- package/dist/pdf-backend/index.d.ts +55 -6
- package/dist/pdf-backend/index.d.ts.map +1 -1
- package/dist/pdf-backend/index.js +135 -35
- package/dist/pdf-backend/index.js.map +1 -1
- package/dist/pdf-backend/links.d.ts +82 -1
- package/dist/pdf-backend/links.d.ts.map +1 -1
- package/dist/pdf-backend/links.js +141 -3
- package/dist/pdf-backend/links.js.map +1 -1
- package/dist/pdf-backend/outlines.d.ts.map +1 -1
- package/dist/pdf-backend/outlines.js +7 -0
- package/dist/pdf-backend/outlines.js.map +1 -1
- package/dist/pdf-backend/pageDecorations.d.ts.map +1 -1
- package/dist/pdf-backend/pageDecorations.js +42 -26
- package/dist/pdf-backend/pageDecorations.js.map +1 -1
- package/dist/pdf-backend/primitives.d.ts +61 -1
- package/dist/pdf-backend/primitives.d.ts.map +1 -1
- package/dist/pdf-backend/primitives.js +318 -18
- package/dist/pdf-backend/primitives.js.map +1 -1
- package/dist/pdf-backend/renderResourceBlock.d.ts +3 -1
- package/dist/pdf-backend/renderResourceBlock.d.ts.map +1 -1
- package/dist/pdf-backend/renderResourceBlock.js +97 -19
- package/dist/pdf-backend/renderResourceBlock.js.map +1 -1
- package/dist/pdf-backend/structureFlow.d.ts +70 -3
- package/dist/pdf-backend/structureFlow.d.ts.map +1 -1
- package/dist/pdf-backend/structureFlow.js +209 -27
- package/dist/pdf-backend/structureFlow.js.map +1 -1
- package/dist/pdf-backend/svgVector.d.ts +7 -2
- package/dist/pdf-backend/svgVector.d.ts.map +1 -1
- package/dist/pdf-backend/svgVector.js +157 -72
- package/dist/pdf-backend/svgVector.js.map +1 -1
- package/dist/pdf-backend/tagging.d.ts +1 -1
- package/dist/pdf-backend/tagging.d.ts.map +1 -1
- package/dist/pdf-backend/tagging.js.map +1 -1
- package/dist/worker/client.d.ts +1 -1
- package/dist/worker/client.d.ts.map +1 -1
- package/dist/worker/client.js +8 -0
- package/dist/worker/client.js.map +1 -1
- package/dist/worker/pdf.worker.js +1 -0
- package/dist/worker/pdf.worker.js.map +1 -1
- package/dist/worker/protocol.d.ts +8 -1
- package/dist/worker/protocol.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -6,15 +6,21 @@
|
|
|
6
6
|
* order). The flow keeps the grouping state that spans blocks:
|
|
7
7
|
* - lists: consecutive `listItem` blocks become `L` › `LI` › (`Lbl`, `LBody`),
|
|
8
8
|
* nested by `listDepth`; any other block closes the open lists;
|
|
9
|
+
* - contents: consecutive rows of a `:::toc` become one `TOC` with a
|
|
10
|
+
* `TOCI` per row: `Lbl` for a row's number, `Reference` for its title
|
|
11
|
+
* and page (the renderer adds the `Link` inside it);
|
|
9
12
|
* - callouts: a `callout` frame opens a `Div` that receives the blocks
|
|
10
13
|
* sharing its `containerId` (split fragments reuse the same `Div`); a
|
|
11
14
|
* nested box (`calloutPath`) is a `Div` inside its parent's;
|
|
12
|
-
* - headings: `H1`…`H6`, clamped so the level never skips (PDF/UA-1 §7.4)
|
|
15
|
+
* - headings: `H1`…`H6`, clamped so the level never skips (PDF/UA-1 §7.4)
|
|
16
|
+
* in reading order, floats included;
|
|
13
17
|
* - fragments: a paragraph or list item split across columns / pages
|
|
14
18
|
* keeps one element (continuations carry the head's id plus a
|
|
15
19
|
* `-cont-N` suffix), so a reader sees one paragraph, not two.
|
|
16
20
|
* Resource blocks (figures, tables) go through {@link resourceElem}, keyed
|
|
17
21
|
* by resource id so the slices of a split table share one `Table`.
|
|
22
|
+
* The floats of a page (`page.floats`) are painted after its columns and go
|
|
23
|
+
* through {@link readFloat}, which moves them to where they are read.
|
|
18
24
|
*/
|
|
19
25
|
const HEADING = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];
|
|
20
26
|
/** The id shared by every fragment of a block split across columns /
|
|
@@ -22,6 +28,10 @@ const HEADING = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];
|
|
|
22
28
|
function fragmentKey(block) {
|
|
23
29
|
return block.id.replace(/-cont-\d+$/, '');
|
|
24
30
|
}
|
|
31
|
+
/** A row of a `:::toc`: a listed heading or a part divider. */
|
|
32
|
+
function isTocRow(block) {
|
|
33
|
+
return block.tocEntry !== undefined || block.tocPart !== undefined;
|
|
34
|
+
}
|
|
25
35
|
export class StructureFlow {
|
|
26
36
|
tree;
|
|
27
37
|
byId = new Map();
|
|
@@ -32,7 +42,21 @@ export class StructureFlow {
|
|
|
32
42
|
captions = new Map();
|
|
33
43
|
lists = [];
|
|
34
44
|
callout = null;
|
|
45
|
+
toc = null;
|
|
35
46
|
lastHeadingLevel = 0;
|
|
47
|
+
/** Lowest level a heading may take. Above 1 only while a float is
|
|
48
|
+
* painted: see {@link readFloat}. */
|
|
49
|
+
headingFloor = 1;
|
|
50
|
+
/** The level each heading element was tagged with. */
|
|
51
|
+
headingLevels = new Map();
|
|
52
|
+
/** The text blocks tagged so far, in reading order, with the content
|
|
53
|
+
* index each came from: where {@link readFloat} places a float. */
|
|
54
|
+
flow = [];
|
|
55
|
+
/** The last float placed after each top-level element, so floats
|
|
56
|
+
* anchored to one paragraph keep their order. */
|
|
57
|
+
lastPlacedAfter = new Map();
|
|
58
|
+
/** Set while a float is painted: its blocks are not part of the flow. */
|
|
59
|
+
floating = false;
|
|
36
60
|
constructor(tree) {
|
|
37
61
|
this.tree = tree;
|
|
38
62
|
}
|
|
@@ -60,18 +84,35 @@ export class StructureFlow {
|
|
|
60
84
|
const cid = block.containerId;
|
|
61
85
|
const div = cid !== undefined ? this.calloutDiv(cid, block.calloutPath ?? []) : null;
|
|
62
86
|
// Entering or leaving a box (or moving between nested ones) closes the
|
|
63
|
-
// open lists; so does a box frame.
|
|
64
|
-
if (div !== this.callout || block.type === 'callout')
|
|
87
|
+
// open lists and contents; so does a box frame.
|
|
88
|
+
if (div !== this.callout || block.type === 'callout') {
|
|
65
89
|
this.lists = [];
|
|
90
|
+
this.toc = null;
|
|
91
|
+
}
|
|
66
92
|
this.callout = div;
|
|
67
|
-
|
|
93
|
+
const tocRow = isTocRow(block);
|
|
94
|
+
// A numbered contents row is laid out as a list item, but is no list.
|
|
95
|
+
if (block.type !== 'listItem' || tocRow)
|
|
68
96
|
this.lists = [];
|
|
97
|
+
if (!tocRow)
|
|
98
|
+
this.toc = null;
|
|
69
99
|
return div ?? this.tree.root;
|
|
70
100
|
}
|
|
71
|
-
|
|
72
|
-
|
|
101
|
+
/** A heading element under `parent`, its level clamped so it is at most
|
|
102
|
+
* one below the heading read before it. */
|
|
103
|
+
heading(parent, level) {
|
|
104
|
+
const clamped = Math.max(this.headingFloor, Math.min(6, level, this.lastHeadingLevel + 1));
|
|
73
105
|
this.lastHeadingLevel = clamped;
|
|
74
|
-
|
|
106
|
+
const elem = parent.child(HEADING[clamped - 1]);
|
|
107
|
+
this.headingLevels.set(elem, clamped);
|
|
108
|
+
return elem;
|
|
109
|
+
}
|
|
110
|
+
/** Record a text block of the flow (not of a float) where floats can be
|
|
111
|
+
* read after it. */
|
|
112
|
+
record(block, elem) {
|
|
113
|
+
if (this.floating || block.contentIndex === undefined)
|
|
114
|
+
return;
|
|
115
|
+
this.flow.push({ index: block.contentIndex, elem });
|
|
75
116
|
}
|
|
76
117
|
/** The element that receives the block's own text (lines, overlay title).
|
|
77
118
|
* Not for `resource` blocks — see {@link resourceElem}. */
|
|
@@ -86,29 +127,36 @@ export class StructureFlow {
|
|
|
86
127
|
}
|
|
87
128
|
const parent = this.enter(block);
|
|
88
129
|
let elem;
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
130
|
+
if (isTocRow(block)) {
|
|
131
|
+
elem = this.tocItem(block, parent);
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
switch (block.type) {
|
|
135
|
+
case 'heading':
|
|
136
|
+
elem = this.heading(parent, block.headingLevel ?? 1);
|
|
137
|
+
break;
|
|
138
|
+
case 'listItem':
|
|
139
|
+
elem = this.listItem(block, parent);
|
|
140
|
+
break;
|
|
141
|
+
case 'blockquote':
|
|
142
|
+
elem = parent.child('BlockQuote').child('P');
|
|
143
|
+
break;
|
|
144
|
+
case 'mathDisplay':
|
|
145
|
+
elem = parent.child('Formula', { alt: block.mathRender?.tex ?? block.tex ?? '' });
|
|
146
|
+
break;
|
|
147
|
+
case 'callout':
|
|
148
|
+
elem = this.calloutTitle(block, parent);
|
|
149
|
+
break;
|
|
150
|
+
default:
|
|
151
|
+
elem = parent.child('P');
|
|
152
|
+
}
|
|
107
153
|
}
|
|
108
154
|
this.byId.set(key, elem);
|
|
155
|
+
this.record(block, elem);
|
|
109
156
|
return elem;
|
|
110
157
|
}
|
|
111
|
-
/** The `Lbl` of a list item's bullet / number
|
|
158
|
+
/** The `Lbl` of a list item's bullet / number (or of a contents row's
|
|
159
|
+
* number), once {@link blockElem} ran. */
|
|
112
160
|
bulletElem(block) {
|
|
113
161
|
return this.bulletById.get(fragmentKey(block));
|
|
114
162
|
}
|
|
@@ -137,6 +185,15 @@ export class StructureFlow {
|
|
|
137
185
|
top.lastBody = body;
|
|
138
186
|
return body;
|
|
139
187
|
}
|
|
188
|
+
/** A contents row (EF-145): a `TOCI` in the open `TOC` (opened by the
|
|
189
|
+
* first row), its number a `Lbl`, its title and page a `Reference`. */
|
|
190
|
+
tocItem(block, parent) {
|
|
191
|
+
this.toc ??= parent.child('TOC');
|
|
192
|
+
const item = this.toc.child('TOCI');
|
|
193
|
+
if (block.bulletText)
|
|
194
|
+
this.bulletById.set(fragmentKey(block), item.child('Lbl'));
|
|
195
|
+
return item.child('Reference');
|
|
196
|
+
}
|
|
140
197
|
/** Title paragraph of a callout frame (its design overlay text), keyed
|
|
141
198
|
* by the box's own id (the last of a nested frame's path). */
|
|
142
199
|
calloutTitle(block, div) {
|
|
@@ -152,7 +209,8 @@ export class StructureFlow {
|
|
|
152
209
|
partHeading() {
|
|
153
210
|
this.lists = [];
|
|
154
211
|
this.callout = null;
|
|
155
|
-
|
|
212
|
+
this.toc = null;
|
|
213
|
+
return this.heading(this.tree.root, 1);
|
|
156
214
|
}
|
|
157
215
|
/** The `Figure` / `Table` element of a resource block, shared by the
|
|
158
216
|
* slices of a split table (keyed by resource id). */
|
|
@@ -164,6 +222,7 @@ export class StructureFlow {
|
|
|
164
222
|
return known;
|
|
165
223
|
const elem = parent.child(type, attrs);
|
|
166
224
|
this.resources.set(key, elem);
|
|
225
|
+
this.record(block, elem);
|
|
167
226
|
return elem;
|
|
168
227
|
}
|
|
169
228
|
/** The `Caption` child of a figure / table (created once). */
|
|
@@ -180,5 +239,128 @@ export class StructureFlow {
|
|
|
180
239
|
noteElem(block) {
|
|
181
240
|
return this.enter(block).child('P');
|
|
182
241
|
}
|
|
242
|
+
/** Run `paint` without touching the grouping state of the flow: the
|
|
243
|
+
* open lists, box and contents are as they were afterwards. For blocks
|
|
244
|
+
* painted out of reading order (floats, a contents part row drawn
|
|
245
|
+
* after its column), so a list or the contents going on after them
|
|
246
|
+
* stay one element. */
|
|
247
|
+
aside(paint) {
|
|
248
|
+
const lists = this.lists;
|
|
249
|
+
const callout = this.callout;
|
|
250
|
+
const toc = this.toc;
|
|
251
|
+
try {
|
|
252
|
+
paint();
|
|
253
|
+
}
|
|
254
|
+
finally {
|
|
255
|
+
this.lists = lists;
|
|
256
|
+
this.callout = callout;
|
|
257
|
+
this.toc = toc;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Tag a float of the page (a figure, a table, a floated box), painted by
|
|
262
|
+
* `paint` after the page's columns, and read it where it belongs (EF-146):
|
|
263
|
+
* right after the text block with the highest content index up to its
|
|
264
|
+
* own (`block.contentIndex`: the paragraph that first cites a figure, the
|
|
265
|
+
* text before a box's opening fence), on whatever page that block is. A
|
|
266
|
+
* float that comes before all the text of its document is read first. The
|
|
267
|
+
* elements the float adds to the document are moved as a group (a figure
|
|
268
|
+
* and its note); the slices of a split table after the first add none.
|
|
269
|
+
* The grouping state of the flow is kept (see {@link aside}).
|
|
270
|
+
*
|
|
271
|
+
* Headings inside the float (a floated box's title) are clamped where the
|
|
272
|
+
* float is read, not where it is painted: at most one level deeper than
|
|
273
|
+
* the heading before that place, and at most one level shallower than
|
|
274
|
+
* the heading after it, so no level is skipped on either side.
|
|
275
|
+
*/
|
|
276
|
+
readFloat(block, paint) {
|
|
277
|
+
const root = this.tree.root;
|
|
278
|
+
const at = block.contentIndex === undefined ? undefined : this.readingPlace(block.contentIndex);
|
|
279
|
+
const place = at ?? root.kids.length;
|
|
280
|
+
const before = this.lastHeadingIn(root.kids, place) ?? 0;
|
|
281
|
+
const next = this.firstHeadingIn(root.kids, place);
|
|
282
|
+
const flowLevel = this.lastHeadingLevel;
|
|
283
|
+
const start = root.kids.length;
|
|
284
|
+
this.floating = true;
|
|
285
|
+
this.lastHeadingLevel = before;
|
|
286
|
+
if (next !== undefined)
|
|
287
|
+
this.headingFloor = Math.max(1, Math.min(next - 1, before + 1));
|
|
288
|
+
try {
|
|
289
|
+
this.aside(paint);
|
|
290
|
+
}
|
|
291
|
+
finally {
|
|
292
|
+
this.floating = false;
|
|
293
|
+
this.headingFloor = 1;
|
|
294
|
+
// With a heading read after the float, the last heading read is
|
|
295
|
+
// still the flow's own; without one, it is the float's (if any).
|
|
296
|
+
if (next !== undefined)
|
|
297
|
+
this.lastHeadingLevel = flowLevel;
|
|
298
|
+
}
|
|
299
|
+
if (at === undefined || root.kids.length === start)
|
|
300
|
+
return;
|
|
301
|
+
const added = root.kids.splice(start);
|
|
302
|
+
root.kids.splice(at, 0, ...added);
|
|
303
|
+
const anchor = this.anchorOf(block.contentIndex);
|
|
304
|
+
const lastAdded = added[added.length - 1];
|
|
305
|
+
if (anchor && lastAdded.kind === 'elem')
|
|
306
|
+
this.lastPlacedAfter.set(anchor, lastAdded.elem);
|
|
307
|
+
}
|
|
308
|
+
/** The top-level element of `elem` (its ancestor that is a kid of the
|
|
309
|
+
* document). */
|
|
310
|
+
topOf(elem) {
|
|
311
|
+
let top = elem;
|
|
312
|
+
while (top.parent && top.parent !== this.tree.root)
|
|
313
|
+
top = top.parent;
|
|
314
|
+
return top;
|
|
315
|
+
}
|
|
316
|
+
kidIndex(elem) {
|
|
317
|
+
return this.tree.root.kids.findIndex((k) => k.kind === 'elem' && k.elem === elem);
|
|
318
|
+
}
|
|
319
|
+
/** The top-level element of the last text block tagged whose content
|
|
320
|
+
* index is at most `contentIndex`. */
|
|
321
|
+
anchorOf(contentIndex) {
|
|
322
|
+
for (let i = this.flow.length - 1; i >= 0; i--) {
|
|
323
|
+
if (this.flow[i].index <= contentIndex)
|
|
324
|
+
return this.topOf(this.flow[i].elem);
|
|
325
|
+
}
|
|
326
|
+
return undefined;
|
|
327
|
+
}
|
|
328
|
+
/** Where, among the document's kids, a float with this content index is
|
|
329
|
+
* read: after its anchor and the floats already read after it, or ahead
|
|
330
|
+
* of the first block when it comes before all the text. */
|
|
331
|
+
readingPlace(contentIndex) {
|
|
332
|
+
const root = this.tree.root;
|
|
333
|
+
const anchor = this.anchorOf(contentIndex);
|
|
334
|
+
if (anchor) {
|
|
335
|
+
const after = this.kidIndex(this.lastPlacedAfter.get(anchor) ?? anchor);
|
|
336
|
+
return after >= 0 ? after + 1 : root.kids.length;
|
|
337
|
+
}
|
|
338
|
+
const first = this.flow[0] ? this.kidIndex(this.topOf(this.flow[0].elem)) : -1;
|
|
339
|
+
return first >= 0 ? first : root.kids.length;
|
|
340
|
+
}
|
|
341
|
+
/** Level of the last heading in `kids[0, end)`, depth first. */
|
|
342
|
+
lastHeadingIn(kids, end = kids.length) {
|
|
343
|
+
for (let i = end - 1; i >= 0; i--) {
|
|
344
|
+
const kid = kids[i];
|
|
345
|
+
if (kid.kind !== 'elem')
|
|
346
|
+
continue;
|
|
347
|
+
const level = this.lastHeadingIn(kid.elem.kids) ?? this.headingLevels.get(kid.elem);
|
|
348
|
+
if (level !== undefined)
|
|
349
|
+
return level;
|
|
350
|
+
}
|
|
351
|
+
return undefined;
|
|
352
|
+
}
|
|
353
|
+
/** Level of the first heading in `kids[start, …)`, depth first. */
|
|
354
|
+
firstHeadingIn(kids, start = 0) {
|
|
355
|
+
for (let i = start; i < kids.length; i++) {
|
|
356
|
+
const kid = kids[i];
|
|
357
|
+
if (kid.kind !== 'elem')
|
|
358
|
+
continue;
|
|
359
|
+
const level = this.headingLevels.get(kid.elem) ?? this.firstHeadingIn(kid.elem.kids);
|
|
360
|
+
if (level !== undefined)
|
|
361
|
+
return level;
|
|
362
|
+
}
|
|
363
|
+
return undefined;
|
|
364
|
+
}
|
|
183
365
|
}
|
|
184
366
|
//# sourceMappingURL=structureFlow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structureFlow.js","sourceRoot":"","sources":["../../src/pdf-backend/structureFlow.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"structureFlow.js","sourceRoot":"","sources":["../../src/pdf-backend/structureFlow.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Vector emission of SVG resources into the PDF
|
|
2
|
+
* Vector emission of SVG resources into the PDF.
|
|
3
3
|
*
|
|
4
4
|
* Converts a conservative subset of SVG into a flat list of filled / stroked
|
|
5
5
|
* paths in the SVG's root user space, which {@link drawVectorDrawing} then
|
|
6
6
|
* paints with native PDF path operators — so the figure stays vector (sharp at
|
|
7
|
-
* any zoom, tiny on disk) instead of going through a raster fallback.
|
|
7
|
+
* any zoom, tiny on disk) instead of going through a raster fallback. The
|
|
8
|
+
* paths of a drawing are written once per document, as a form XObject that
|
|
9
|
+
* every page drawing it paints.
|
|
8
10
|
*
|
|
9
11
|
* Supported: `svg` (root, `viewBox`, `preserveAspectRatio`), `g` / `a`,
|
|
10
12
|
* `defs`, `path`, `rect`, `circle`, `ellipse`, `line`, `polyline`, `polygon`,
|
|
@@ -139,6 +141,9 @@ export declare function svgToVectorDrawing(svgText: string, options?: SvgToVecto
|
|
|
139
141
|
/**
|
|
140
142
|
* Paint a {@link VectorDrawing} into the page, fitted to the given box in the
|
|
141
143
|
* document's pixel space (top-down, like every other `PageCtx` primitive).
|
|
144
|
+
* The drawing itself is a form XObject written once per document (see
|
|
145
|
+
* {@link vectorForm}); the page clips to the viewport, maps the drawing's
|
|
146
|
+
* user space onto it and paints the form.
|
|
142
147
|
*/
|
|
143
148
|
export declare function drawVectorDrawing(ctx: PageCtx, drawing: VectorDrawing, xPx: number, yPx: number, wPx: number, hPx: number): void;
|
|
144
149
|
//# sourceMappingURL=svgVector.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svgVector.d.ts","sourceRoot":"","sources":["../../src/pdf-backend/svgVector.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"svgVector.d.ts","sourceRoot":"","sources":["../../src/pdf-backend/svgVector.ts"],"names":[],"mappings":"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"}
|