pdf-codec 1.4.2 → 1.6.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 (170) hide show
  1. package/README.md +56 -15
  2. package/dist/assets/caladea-bold.cjs +5 -0
  3. package/dist/assets/caladea-bold.d.cts +4 -0
  4. package/dist/assets/caladea-bold.d.ts +4 -0
  5. package/dist/assets/caladea-bold.js +4 -0
  6. package/dist/assets/caladea-bolditalic.cjs +5 -0
  7. package/dist/assets/caladea-bolditalic.d.cts +4 -0
  8. package/dist/assets/caladea-bolditalic.d.ts +4 -0
  9. package/dist/assets/caladea-bolditalic.js +4 -0
  10. package/dist/assets/caladea-italic.cjs +5 -0
  11. package/dist/assets/caladea-italic.d.cts +4 -0
  12. package/dist/assets/caladea-italic.d.ts +4 -0
  13. package/dist/assets/caladea-italic.js +4 -0
  14. package/dist/assets/caladea-regular.cjs +5 -0
  15. package/dist/assets/caladea-regular.d.cts +4 -0
  16. package/dist/assets/caladea-regular.d.ts +4 -0
  17. package/dist/assets/caladea-regular.js +4 -0
  18. package/dist/assets/carlito-bold.cjs +5 -0
  19. package/dist/assets/carlito-bold.d.cts +4 -0
  20. package/dist/assets/carlito-bold.d.ts +4 -0
  21. package/dist/assets/carlito-bold.js +4 -0
  22. package/dist/assets/carlito-bolditalic.cjs +5 -0
  23. package/dist/assets/carlito-bolditalic.d.cts +4 -0
  24. package/dist/assets/carlito-bolditalic.d.ts +4 -0
  25. package/dist/assets/carlito-bolditalic.js +4 -0
  26. package/dist/assets/carlito-italic.cjs +5 -0
  27. package/dist/assets/carlito-italic.d.cts +4 -0
  28. package/dist/assets/carlito-italic.d.ts +4 -0
  29. package/dist/assets/carlito-italic.js +4 -0
  30. package/dist/assets/carlito-regular.cjs +5 -0
  31. package/dist/assets/carlito-regular.d.cts +4 -0
  32. package/dist/assets/carlito-regular.d.ts +4 -0
  33. package/dist/assets/carlito-regular.js +4 -0
  34. package/dist/cff-probe.cjs +133 -0
  35. package/dist/cff-probe.d.cts +10 -0
  36. package/dist/cff-probe.d.ts +10 -0
  37. package/dist/cff-probe.js +132 -0
  38. package/dist/cmap-table.cjs +108 -0
  39. package/dist/cmap-table.d.cts +6 -0
  40. package/dist/cmap-table.d.ts +6 -0
  41. package/dist/cmap-table.js +107 -0
  42. package/dist/content-write.cjs +36 -17
  43. package/dist/content-write.d.cts +9 -2
  44. package/dist/content-write.d.ts +9 -2
  45. package/dist/content-write.js +35 -16
  46. package/dist/crypto/aes.cjs +166 -0
  47. package/dist/crypto/aes.d.cts +6 -0
  48. package/dist/crypto/aes.d.ts +6 -0
  49. package/dist/crypto/aes.js +163 -0
  50. package/dist/crypto/md5.cjs +215 -0
  51. package/dist/crypto/md5.d.cts +4 -0
  52. package/dist/crypto/md5.d.ts +4 -0
  53. package/dist/crypto/md5.js +214 -0
  54. package/dist/crypto/rc4.cjs +29 -0
  55. package/dist/crypto/rc4.d.cts +4 -0
  56. package/dist/crypto/rc4.d.ts +4 -0
  57. package/dist/crypto/rc4.js +28 -0
  58. package/dist/crypto/sha2.cjs +261 -0
  59. package/dist/crypto/sha2.d.cts +6 -0
  60. package/dist/crypto/sha2.d.ts +6 -0
  61. package/dist/crypto/sha2.js +258 -0
  62. package/dist/diagnostics.cjs +7 -0
  63. package/dist/diagnostics.d.cts +4 -1
  64. package/dist/diagnostics.d.ts +4 -1
  65. package/dist/diagnostics.js +7 -1
  66. package/dist/document.cjs +38 -2
  67. package/dist/document.js +38 -2
  68. package/dist/embedded-font-CLedn-mT.d.cts +42 -0
  69. package/dist/embedded-font-CbqkKgBl.d.ts +42 -0
  70. package/dist/embedded-font-write.cjs +92 -0
  71. package/dist/embedded-font-write.d.cts +22 -0
  72. package/dist/embedded-font-write.d.ts +22 -0
  73. package/dist/embedded-font-write.js +90 -0
  74. package/dist/embedded-font.cjs +142 -0
  75. package/dist/embedded-font.d.cts +2 -0
  76. package/dist/embedded-font.d.ts +2 -0
  77. package/dist/embedded-font.js +138 -0
  78. package/dist/encrypt.cjs +264 -0
  79. package/dist/encrypt.d.cts +11 -0
  80. package/dist/encrypt.d.ts +11 -0
  81. package/dist/encrypt.js +263 -0
  82. package/dist/filters.cjs +19 -1
  83. package/dist/filters.js +19 -1
  84. package/dist/font-registry-Cn7P9lAh.d.ts +38 -0
  85. package/dist/font-registry-yby02snZ.d.cts +38 -0
  86. package/dist/font-registry.cjs +152 -0
  87. package/dist/font-registry.d.cts +2 -0
  88. package/dist/font-registry.d.ts +2 -0
  89. package/dist/font-registry.js +150 -0
  90. package/dist/font-substitutes.cjs +13 -0
  91. package/dist/font-substitutes.d.cts +5 -0
  92. package/dist/font-substitutes.d.ts +5 -0
  93. package/dist/font-substitutes.js +12 -0
  94. package/dist/font-tables.cjs +127 -0
  95. package/dist/font-tables.d.cts +43 -0
  96. package/dist/font-tables.d.ts +43 -0
  97. package/dist/font-tables.js +122 -0
  98. package/dist/fonts.cjs +1 -0
  99. package/dist/fonts.d.cts +2 -1
  100. package/dist/fonts.d.ts +2 -1
  101. package/dist/fonts.js +1 -1
  102. package/dist/glyf.cjs +127 -0
  103. package/dist/glyf.d.cts +31 -0
  104. package/dist/glyf.d.ts +31 -0
  105. package/dist/glyf.js +125 -0
  106. package/dist/{math-hmtx.cjs → hmtx-table.cjs} +3 -3
  107. package/dist/{math-hmtx.d.ts → hmtx-table.d.cts} +2 -2
  108. package/dist/{math-hmtx.d.cts → hmtx-table.d.ts} +2 -2
  109. package/dist/{math-hmtx.js → hmtx-table.js} +3 -3
  110. package/dist/image/ccitt.cjs +488 -0
  111. package/dist/image/ccitt.d.cts +17 -0
  112. package/dist/image/ccitt.d.ts +17 -0
  113. package/dist/image/ccitt.js +487 -0
  114. package/dist/images-read.cjs +1 -4
  115. package/dist/images-read.js +2 -5
  116. package/dist/index.cjs +8 -0
  117. package/dist/index.d.cts +7 -4
  118. package/dist/index.d.ts +7 -4
  119. package/dist/index.js +5 -3
  120. package/dist/interpret.cjs +173 -38
  121. package/dist/interpret.d.cts +27 -10
  122. package/dist/interpret.d.ts +27 -10
  123. package/dist/interpret.js +174 -39
  124. package/dist/math-font-write.cjs +3 -32
  125. package/dist/math-font-write.js +2 -31
  126. package/dist/math-font.cjs +7 -5
  127. package/dist/math-font.js +5 -3
  128. package/dist/math-table.d.cts +1 -1
  129. package/dist/math-table.d.ts +1 -1
  130. package/dist/{matrix-B3c2_a2f.d.cts → matrix-BHzJESll.d.cts} +2 -1
  131. package/dist/{matrix-B3c2_a2f.d.ts → matrix-BHzJESll.d.ts} +2 -1
  132. package/dist/matrix.cjs +2 -0
  133. package/dist/matrix.d.cts +2 -2
  134. package/dist/matrix.d.ts +2 -2
  135. package/dist/matrix.js +2 -1
  136. package/dist/measure.cjs +65 -14
  137. package/dist/measure.d.cts +8 -1
  138. package/dist/measure.d.ts +8 -1
  139. package/dist/measure.js +64 -15
  140. package/dist/objects.cjs +4 -0
  141. package/dist/objects.d.cts +2 -1
  142. package/dist/objects.d.ts +2 -1
  143. package/dist/objects.js +4 -1
  144. package/dist/read.cjs +43 -4
  145. package/dist/read.d.cts +1 -1
  146. package/dist/read.d.ts +1 -1
  147. package/dist/read.js +43 -4
  148. package/dist/sfnt-V08bb5ut.d.cts +21 -0
  149. package/dist/sfnt-V08bb5ut.d.ts +21 -0
  150. package/dist/sfnt-subset.cjs +250 -0
  151. package/dist/sfnt-subset.d.cts +11 -0
  152. package/dist/sfnt-subset.d.ts +11 -0
  153. package/dist/sfnt-subset.js +249 -0
  154. package/dist/sfnt.cjs +50 -4
  155. package/dist/sfnt.d.cts +2 -17
  156. package/dist/sfnt.d.ts +2 -17
  157. package/dist/sfnt.js +47 -5
  158. package/dist/tounicode.cjs +34 -0
  159. package/dist/tounicode.d.cts +5 -0
  160. package/dist/tounicode.d.ts +5 -0
  161. package/dist/tounicode.js +33 -0
  162. package/dist/write.cjs +81 -11
  163. package/dist/write.d.cts +6 -0
  164. package/dist/write.d.ts +6 -0
  165. package/dist/write.js +82 -12
  166. package/package.json +1 -1
  167. package/dist/math-cmap.cjs +0 -81
  168. package/dist/math-cmap.d.cts +0 -6
  169. package/dist/math-cmap.d.ts +0 -6
  170. package/dist/math-cmap.js +0 -80
@@ -76,26 +76,176 @@ function matrixFromOperands(operands) {
76
76
  numAt(operands, 5)
77
77
  ];
78
78
  }
79
- function isAxisAligned(m) {
80
- return m[1] === 0 && m[2] === 0;
79
+ const SHAPE_ABS_TOLERANCE_PT = .001;
80
+ const SHAPE_REL_TOLERANCE = 1e-4;
81
+ function shapeTolerance(extentPt) {
82
+ return Math.max(SHAPE_ABS_TOLERANCE_PT, Math.abs(extentPt) * SHAPE_REL_TOLERANCE);
81
83
  }
82
- function rectFromOperands(operands, ctm) {
83
- const x = numAt(operands, 0);
84
- const y = numAt(operands, 1);
85
- const w = numAt(operands, 2);
86
- const h = numAt(operands, 3);
87
- if (!isAxisAligned(ctm)) return;
88
- const scaledX = x * ctm[0] + ctm[4];
89
- const scaledY = y * ctm[3] + ctm[5];
90
- const scaledW = w * ctm[0];
91
- const scaledH = h * ctm[3];
84
+ function nearlyEqual(a, b, tolerance) {
85
+ return Math.abs(a - b) <= tolerance;
86
+ }
87
+ function nearlyEqualPoints(a, b, tolerance) {
88
+ return nearlyEqual(a.x, b.x, tolerance) && nearlyEqual(a.y, b.y, tolerance);
89
+ }
90
+ function boundsOf(points) {
91
+ const xs = points.map((p) => p.x);
92
+ const ys = points.map((p) => p.y);
93
+ return {
94
+ minX: Math.min(...xs),
95
+ minY: Math.min(...ys),
96
+ maxX: Math.max(...xs),
97
+ maxY: Math.max(...ys)
98
+ };
99
+ }
100
+ function closedPolygonCorners(subpath) {
101
+ if (!subpath.closed) return;
102
+ const corners = [{
103
+ x: subpath.startXPt,
104
+ y: subpath.startYPt
105
+ }];
106
+ for (const segment of subpath.segments) {
107
+ if (segment.kind !== "line") return;
108
+ corners.push({
109
+ x: segment.xPt,
110
+ y: segment.yPt
111
+ });
112
+ }
113
+ const first = corners[0];
114
+ const last = corners[corners.length - 1];
115
+ if (first === void 0 || last === void 0 || corners.length < 2) return;
116
+ const bounds = boundsOf(corners);
117
+ if (nearlyEqualPoints(first, last, shapeTolerance(Math.max(bounds.maxX - bounds.minX, bounds.maxY - bounds.minY)))) corners.pop();
118
+ return corners;
119
+ }
120
+ function detectRect(subpath, paint) {
121
+ const corners = closedPolygonCorners(subpath);
122
+ if (corners?.length !== 4) return;
123
+ const { minX, minY, maxX, maxY } = boundsOf(corners);
124
+ const widthPt = maxX - minX;
125
+ const heightPt = maxY - minY;
126
+ const tolX = shapeTolerance(widthPt);
127
+ const tolY = shapeTolerance(heightPt);
128
+ if (widthPt <= tolX || heightPt <= tolY) return;
129
+ for (const corner of corners) {
130
+ if (!nearlyEqual(corner.x, minX, tolX) && !nearlyEqual(corner.x, maxX, tolX)) return;
131
+ if (!nearlyEqual(corner.y, minY, tolY) && !nearlyEqual(corner.y, maxY, tolY)) return;
132
+ }
133
+ for (let i = 0; i < corners.length; i += 1) {
134
+ const from = corners[i];
135
+ const to = corners[(i + 1) % corners.length];
136
+ if (from === void 0 || to === void 0) return;
137
+ if (nearlyEqual(from.x, to.x, tolX) === nearlyEqual(from.y, to.y, tolY)) return;
138
+ }
139
+ return {
140
+ kind: "rect",
141
+ xPt: minX,
142
+ yPt: minY,
143
+ widthPt,
144
+ heightPt,
145
+ fill: paint.fill,
146
+ stroke: paint.stroke
147
+ };
148
+ }
149
+ function cardinalExtremeOf(point, center, rx, ry, tolX, tolY) {
150
+ if (nearlyEqual(point.y, center.y, tolY)) {
151
+ if (nearlyEqual(point.x, center.x + rx, tolX)) return "right";
152
+ if (nearlyEqual(point.x, center.x - rx, tolX)) return "left";
153
+ return;
154
+ }
155
+ if (nearlyEqual(point.x, center.x, tolX)) {
156
+ if (nearlyEqual(point.y, center.y + ry, tolY)) return "top";
157
+ if (nearlyEqual(point.y, center.y - ry, tolY)) return "bottom";
158
+ }
159
+ }
160
+ function expectedEllipseControl(atExtreme, atExtremeKind, otherEnd, center, kx, ky) {
161
+ if (atExtremeKind === "right" || atExtremeKind === "left") return {
162
+ x: atExtreme.x,
163
+ y: center.y + Math.sign(otherEnd.y - center.y) * ky
164
+ };
165
+ return {
166
+ x: center.x + Math.sign(otherEnd.x - center.x) * kx,
167
+ y: atExtreme.y
168
+ };
169
+ }
170
+ function detectEllipse(subpath, paint) {
171
+ const segments = subpath.segments;
172
+ if (!subpath.closed || segments.length !== 4 || segments.some((segment) => segment.kind !== "cubic")) return;
173
+ const start = {
174
+ x: subpath.startXPt,
175
+ y: subpath.startYPt
176
+ };
177
+ const onCurve = [start];
178
+ for (const segment of segments.slice(0, 3)) onCurve.push({
179
+ x: segment.xPt,
180
+ y: segment.yPt
181
+ });
182
+ const { minX, minY, maxX, maxY } = boundsOf(onCurve);
183
+ const rx = (maxX - minX) / 2;
184
+ const ry = (maxY - minY) / 2;
185
+ const center = {
186
+ x: (minX + maxX) / 2,
187
+ y: (minY + maxY) / 2
188
+ };
189
+ const tolX = shapeTolerance(rx);
190
+ const tolY = shapeTolerance(ry);
191
+ if (rx <= tolX || ry <= tolY) return;
192
+ const finalSegment = segments[3];
193
+ if (finalSegment === void 0 || !nearlyEqualPoints({
194
+ x: finalSegment.xPt,
195
+ y: finalSegment.yPt
196
+ }, start, Math.max(tolX, tolY))) return;
197
+ const extremes = onCurve.map((point) => cardinalExtremeOf(point, center, rx, ry, tolX, tolY));
198
+ if (extremes.some((extreme) => extreme === void 0) || new Set(extremes).size !== 4) return;
199
+ const kx = rx * require_matrix.BEZIER_KAPPA;
200
+ const ky = ry * require_matrix.BEZIER_KAPPA;
201
+ const controlTolerance = Math.max(tolX, tolY);
202
+ for (let i = 0; i < 4; i += 1) {
203
+ const segment = segments[i];
204
+ const from = onCurve[i];
205
+ const fromKind = extremes[i];
206
+ const to = onCurve[(i + 1) % 4];
207
+ const toKind = extremes[(i + 1) % 4];
208
+ if (segment?.kind !== "cubic" || from === void 0 || to === void 0 || fromKind === void 0 || toKind === void 0) return;
209
+ const expectedC1 = expectedEllipseControl(from, fromKind, to, center, kx, ky);
210
+ const expectedC2 = expectedEllipseControl(to, toKind, from, center, kx, ky);
211
+ if (!nearlyEqualPoints({
212
+ x: segment.c1xPt,
213
+ y: segment.c1yPt
214
+ }, expectedC1, controlTolerance)) return;
215
+ if (!nearlyEqualPoints({
216
+ x: segment.c2xPt,
217
+ y: segment.c2yPt
218
+ }, expectedC2, controlTolerance)) return;
219
+ }
92
220
  return {
93
- xPt: scaledW >= 0 ? scaledX : scaledX + scaledW,
94
- yPt: scaledH >= 0 ? scaledY : scaledY + scaledH,
95
- widthPt: Math.abs(scaledW),
96
- heightPt: Math.abs(scaledH)
221
+ kind: "ellipse",
222
+ xPt: minX,
223
+ yPt: minY,
224
+ widthPt: maxX - minX,
225
+ heightPt: maxY - minY,
226
+ fill: paint.fill,
227
+ stroke: paint.stroke
97
228
  };
98
229
  }
230
+ function detectLine(subpath, paint) {
231
+ const segment = subpath.segments[0];
232
+ if (subpath.closed || subpath.segments.length !== 1 || segment?.kind !== "line") return;
233
+ if (paint.fill !== void 0 || paint.stroke === void 0) return;
234
+ return {
235
+ kind: "line",
236
+ x1Pt: subpath.startXPt,
237
+ y1Pt: subpath.startYPt,
238
+ x2Pt: segment.xPt,
239
+ y2Pt: segment.yPt,
240
+ color: paint.stroke.color,
241
+ widthPt: paint.stroke.widthPt
242
+ };
243
+ }
244
+ function classifyShape(subpaths, paint) {
245
+ const subpath = subpaths[0];
246
+ if (subpaths.length !== 1 || subpath === void 0) return;
247
+ return detectRect(subpath, paint) ?? detectEllipse(subpath, paint) ?? detectLine(subpath, paint);
248
+ }
99
249
  function interpretContentStream(bytes, resources, context) {
100
250
  const items = [];
101
251
  runContentStream(bytes, resources, {
@@ -121,7 +271,6 @@ function runContentStream(bytes, resources, initialState, context, items, depth)
121
271
  const gsStack = [];
122
272
  let gs = initialState;
123
273
  let ts = defaultTextState();
124
- let pendingRect;
125
274
  let pathSubpaths = [];
126
275
  let currentSubpath;
127
276
  const finalizeCurrentSubpath = () => {
@@ -131,7 +280,6 @@ function runContentStream(bytes, resources, initialState, context, items, depth)
131
280
  }
132
281
  };
133
282
  const resetPath = () => {
134
- pendingRect = void 0;
135
283
  pathSubpaths = [];
136
284
  currentSubpath = void 0;
137
285
  };
@@ -187,28 +335,22 @@ function runContentStream(bytes, resources, initialState, context, items, depth)
187
335
  return;
188
336
  }
189
337
  if ((operator === "s" || operator === "b" || operator === "b*") && currentSubpath !== void 0) currentSubpath.closed = true;
190
- if ((operator === "f" || operator === "F" || operator === "f*") && currentSubpath === void 0 && pathSubpaths.length === 1 && pendingRect !== void 0) {
191
- items.push({
192
- kind: "rect",
193
- ...pendingRect,
194
- color: gs.fillColor
195
- });
196
- resetPath();
197
- return;
198
- }
199
338
  finalizeCurrentSubpath();
200
339
  if (pathSubpaths.length > 0) {
201
340
  const isFillOp = operator === "f" || operator === "F" || operator === "f*" || operator === "B" || operator === "B*" || operator === "b" || operator === "b*";
202
341
  const isStrokeOp = operator === "S" || operator === "s" || operator === "B" || operator === "B*" || operator === "b" || operator === "b*";
203
- items.push({
204
- kind: "path",
205
- subpaths: pathSubpaths,
206
- fillRule: paintFillRuleFor(operator),
342
+ const paint = {
207
343
  fill: isFillOp ? gs.fillColor : void 0,
208
344
  stroke: isStrokeOp ? {
209
345
  color: gs.strokeColor,
210
346
  widthPt: gs.lineWidth
211
347
  } : void 0
348
+ };
349
+ items.push(classifyShape(pathSubpaths, paint) ?? {
350
+ kind: "path",
351
+ subpaths: pathSubpaths,
352
+ fillRule: paintFillRuleFor(operator),
353
+ ...paint
212
354
  });
213
355
  }
214
356
  resetPath();
@@ -395,7 +537,6 @@ function runContentStream(bytes, resources, initialState, context, items, depth)
395
537
  break;
396
538
  }
397
539
  case "re":
398
- pendingRect = rectFromOperands(operands, gs.ctm);
399
540
  appendRectSubpath(operands, gs.ctm);
400
541
  break;
401
542
  case "m": {
@@ -410,7 +551,6 @@ function runContentStream(bytes, resources, initialState, context, items, depth)
410
551
  segments: [],
411
552
  closed: false
412
553
  };
413
- pendingRect = void 0;
414
554
  break;
415
555
  }
416
556
  case "l": {
@@ -423,7 +563,6 @@ function runContentStream(bytes, resources, initialState, context, items, depth)
423
563
  xPt: p.x,
424
564
  yPt: p.y
425
565
  });
426
- pendingRect = void 0;
427
566
  break;
428
567
  }
429
568
  case "c": {
@@ -448,7 +587,6 @@ function runContentStream(bytes, resources, initialState, context, items, depth)
448
587
  xPt: p.x,
449
588
  yPt: p.y
450
589
  });
451
- pendingRect = void 0;
452
590
  break;
453
591
  }
454
592
  case "v":
@@ -472,7 +610,6 @@ function runContentStream(bytes, resources, initialState, context, items, depth)
472
610
  yPt: p.y
473
611
  });
474
612
  }
475
- pendingRect = void 0;
476
613
  break;
477
614
  case "y": {
478
615
  const c1 = require_matrix.applyMatrix(gs.ctm, {
@@ -492,12 +629,10 @@ function runContentStream(bytes, resources, initialState, context, items, depth)
492
629
  xPt: p.x,
493
630
  yPt: p.y
494
631
  });
495
- pendingRect = void 0;
496
632
  break;
497
633
  }
498
634
  case "h":
499
635
  if (currentSubpath !== void 0) currentSubpath.closed = true;
500
- pendingRect = void 0;
501
636
  break;
502
637
  case "w":
503
638
  gs = {
@@ -1,6 +1,6 @@
1
1
  import { PdfDiagnosticSink } from "./diagnostics.cjs";
2
2
  import { PdfDict, PdfObject } from "./objects.cjs";
3
- import { n as Matrix } from "./matrix-B3c2_a2f.cjs";
3
+ import { r as Matrix } from "./matrix-BHzJESll.cjs";
4
4
  import { Color } from "document-schema.js";
5
5
  //#region src/interpret.d.ts
6
6
  interface ExtractedTextRun {
@@ -13,13 +13,35 @@ interface ExtractedTextRun {
13
13
  readonly sizePt: number;
14
14
  readonly color: Color;
15
15
  }
16
- interface ExtractedRect {
16
+ interface ExtractedPaint {
17
+ readonly fill: Color | undefined;
18
+ readonly stroke: {
19
+ readonly color: Color;
20
+ readonly widthPt: number;
21
+ } | undefined;
22
+ }
23
+ interface ExtractedRect extends ExtractedPaint {
17
24
  readonly kind: 'rect';
18
25
  readonly xPt: number;
19
26
  readonly yPt: number;
20
27
  readonly widthPt: number;
21
28
  readonly heightPt: number;
29
+ }
30
+ interface ExtractedEllipse extends ExtractedPaint {
31
+ readonly kind: 'ellipse';
32
+ readonly xPt: number;
33
+ readonly yPt: number;
34
+ readonly widthPt: number;
35
+ readonly heightPt: number;
36
+ }
37
+ interface ExtractedLine {
38
+ readonly kind: 'line';
39
+ readonly x1Pt: number;
40
+ readonly y1Pt: number;
41
+ readonly x2Pt: number;
42
+ readonly y2Pt: number;
22
43
  readonly color: Color;
44
+ readonly widthPt: number;
23
45
  }
24
46
  type ExtractedPathSegment = {
25
47
  readonly kind: 'line';
@@ -40,15 +62,10 @@ interface ExtractedSubpath {
40
62
  readonly segments: readonly ExtractedPathSegment[];
41
63
  readonly closed: boolean;
42
64
  }
43
- interface ExtractedPath {
65
+ interface ExtractedPath extends ExtractedPaint {
44
66
  readonly kind: 'path';
45
67
  readonly subpaths: readonly ExtractedSubpath[];
46
68
  readonly fillRule: 'nonzero' | 'evenodd';
47
- readonly fill: Color | undefined;
48
- readonly stroke: {
49
- readonly color: Color;
50
- readonly widthPt: number;
51
- } | undefined;
52
69
  }
53
70
  interface ExtractedImage {
54
71
  readonly kind: 'image';
@@ -62,7 +79,7 @@ interface ExtractedInlineImage {
62
79
  readonly data: Uint8Array<ArrayBuffer>;
63
80
  readonly matrix: Matrix;
64
81
  }
65
- type ExtractedItem = ExtractedTextRun | ExtractedRect | ExtractedPath | ExtractedImage | ExtractedInlineImage;
82
+ type ExtractedItem = ExtractedTextRun | ExtractedRect | ExtractedEllipse | ExtractedLine | ExtractedPath | ExtractedImage | ExtractedInlineImage;
66
83
  interface GlyphAdvance {
67
84
  readonly widthPer1000: number;
68
85
  readonly byteLengthConsumed: number;
@@ -81,4 +98,4 @@ interface InterpretContext {
81
98
  }
82
99
  declare function interpretContentStream(bytes: Uint8Array<ArrayBuffer>, resources: PdfDict, context: InterpretContext): ExtractedItem[];
83
100
  //#endregion
84
- export { ExtractedImage, ExtractedInlineImage, ExtractedItem, ExtractedPath, ExtractedPathSegment, ExtractedRect, ExtractedSubpath, ExtractedTextRun, FontMetricsPort, GlyphAdvance, InterpretContext, PdfObjectResolver, interpretContentStream };
101
+ export { ExtractedEllipse, ExtractedImage, ExtractedInlineImage, ExtractedItem, ExtractedLine, ExtractedPaint, ExtractedPath, ExtractedPathSegment, ExtractedRect, ExtractedSubpath, ExtractedTextRun, FontMetricsPort, GlyphAdvance, InterpretContext, PdfObjectResolver, interpretContentStream };
@@ -1,6 +1,6 @@
1
1
  import { PdfDiagnosticSink } from "./diagnostics.js";
2
2
  import { PdfDict, PdfObject } from "./objects.js";
3
- import { n as Matrix } from "./matrix-B3c2_a2f.js";
3
+ import { r as Matrix } from "./matrix-BHzJESll.js";
4
4
  import { Color } from "document-schema.js";
5
5
  //#region src/interpret.d.ts
6
6
  interface ExtractedTextRun {
@@ -13,13 +13,35 @@ interface ExtractedTextRun {
13
13
  readonly sizePt: number;
14
14
  readonly color: Color;
15
15
  }
16
- interface ExtractedRect {
16
+ interface ExtractedPaint {
17
+ readonly fill: Color | undefined;
18
+ readonly stroke: {
19
+ readonly color: Color;
20
+ readonly widthPt: number;
21
+ } | undefined;
22
+ }
23
+ interface ExtractedRect extends ExtractedPaint {
17
24
  readonly kind: 'rect';
18
25
  readonly xPt: number;
19
26
  readonly yPt: number;
20
27
  readonly widthPt: number;
21
28
  readonly heightPt: number;
29
+ }
30
+ interface ExtractedEllipse extends ExtractedPaint {
31
+ readonly kind: 'ellipse';
32
+ readonly xPt: number;
33
+ readonly yPt: number;
34
+ readonly widthPt: number;
35
+ readonly heightPt: number;
36
+ }
37
+ interface ExtractedLine {
38
+ readonly kind: 'line';
39
+ readonly x1Pt: number;
40
+ readonly y1Pt: number;
41
+ readonly x2Pt: number;
42
+ readonly y2Pt: number;
22
43
  readonly color: Color;
44
+ readonly widthPt: number;
23
45
  }
24
46
  type ExtractedPathSegment = {
25
47
  readonly kind: 'line';
@@ -40,15 +62,10 @@ interface ExtractedSubpath {
40
62
  readonly segments: readonly ExtractedPathSegment[];
41
63
  readonly closed: boolean;
42
64
  }
43
- interface ExtractedPath {
65
+ interface ExtractedPath extends ExtractedPaint {
44
66
  readonly kind: 'path';
45
67
  readonly subpaths: readonly ExtractedSubpath[];
46
68
  readonly fillRule: 'nonzero' | 'evenodd';
47
- readonly fill: Color | undefined;
48
- readonly stroke: {
49
- readonly color: Color;
50
- readonly widthPt: number;
51
- } | undefined;
52
69
  }
53
70
  interface ExtractedImage {
54
71
  readonly kind: 'image';
@@ -62,7 +79,7 @@ interface ExtractedInlineImage {
62
79
  readonly data: Uint8Array<ArrayBuffer>;
63
80
  readonly matrix: Matrix;
64
81
  }
65
- type ExtractedItem = ExtractedTextRun | ExtractedRect | ExtractedPath | ExtractedImage | ExtractedInlineImage;
82
+ type ExtractedItem = ExtractedTextRun | ExtractedRect | ExtractedEllipse | ExtractedLine | ExtractedPath | ExtractedImage | ExtractedInlineImage;
66
83
  interface GlyphAdvance {
67
84
  readonly widthPer1000: number;
68
85
  readonly byteLengthConsumed: number;
@@ -81,4 +98,4 @@ interface InterpretContext {
81
98
  }
82
99
  declare function interpretContentStream(bytes: Uint8Array<ArrayBuffer>, resources: PdfDict, context: InterpretContext): ExtractedItem[];
83
100
  //#endregion
84
- export { ExtractedImage, ExtractedInlineImage, ExtractedItem, ExtractedPath, ExtractedPathSegment, ExtractedRect, ExtractedSubpath, ExtractedTextRun, FontMetricsPort, GlyphAdvance, InterpretContext, PdfObjectResolver, interpretContentStream };
101
+ export { ExtractedEllipse, ExtractedImage, ExtractedInlineImage, ExtractedItem, ExtractedLine, ExtractedPaint, ExtractedPath, ExtractedPathSegment, ExtractedRect, ExtractedSubpath, ExtractedTextRun, FontMetricsPort, GlyphAdvance, InterpretContext, PdfObjectResolver, interpretContentStream };