@reportwright/pdf 0.1.0-beta.2 → 0.1.0-beta.4

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/dist/index.js CHANGED
@@ -13,7 +13,7 @@ var __export = (target, all) => {
13
13
  __defProp(target, name, { get: all[name], enumerable: true });
14
14
  };
15
15
 
16
- // packages/pdf/src/core/sink.js
16
+ // src/core/sink.js
17
17
  function raced(p, signal) {
18
18
  if (!signal) return p;
19
19
  if (signal.aborted) {
@@ -112,11 +112,11 @@ function openSink(sink) {
112
112
  };
113
113
  }
114
114
  var init_sink = __esm({
115
- "packages/pdf/src/core/sink.js"() {
115
+ "src/core/sink.js"() {
116
116
  }
117
117
  });
118
118
 
119
- // packages/pdf/src/core/serialize.js
119
+ // src/core/serialize.js
120
120
  function latin1(s) {
121
121
  const B = (
122
122
  /** @type {any} */
@@ -129,7 +129,7 @@ function latin1(s) {
129
129
  }
130
130
  var num, hex4, utf16, text, ascii, pdfName, UTF8, DELIM, fontName, pdfDate, esc;
131
131
  var init_serialize = __esm({
132
- "packages/pdf/src/core/serialize.js"() {
132
+ "src/core/serialize.js"() {
133
133
  num = (v) => {
134
134
  if (typeof v !== "number" || !(Math.abs(v) < 1e9)) throw new RangeError(`Not a usable number: ${v}`);
135
135
  const r = Math.round(v * 1e3) / 1e3;
@@ -166,7 +166,7 @@ var init_serialize = __esm({
166
166
  }
167
167
  });
168
168
 
169
- // ../reportwright/node_modules/fflate/esm/browser.js
169
+ // ../../../reportwright/node_modules/fflate/esm/browser.js
170
170
  function deflateSync(data, opts) {
171
171
  return dopt(data, opts || {}, 0, 0);
172
172
  }
@@ -183,7 +183,7 @@ function zlibSync(data, opts) {
183
183
  }
184
184
  var u8, u16, i32, fleb, fdeb, clim, freb, _a, fl, revfl, _b, fd, revfd, rev, x, i, hMap, flt, i, i, i, i, fdt, i, flm, flrm, fdm, fdrm, max, bits, bits16, shft, slc, ec, err, inflt, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, deo, et, dflt, adler, dopt, wbytes, zlh, zls, Inflate, Unzlib, td, tds;
185
185
  var init_browser = __esm({
186
- "../reportwright/node_modules/fflate/esm/browser.js"() {
186
+ "../../../reportwright/node_modules/fflate/esm/browser.js"() {
187
187
  u8 = Uint8Array;
188
188
  u16 = Uint16Array;
189
189
  i32 = Int32Array;
@@ -956,30 +956,33 @@ var init_browser = __esm({
956
956
  }
957
957
  });
958
958
 
959
- // packages/pdf/src/core/deflate.js
960
- async function deflate(bytes) {
959
+ // src/core/deflate.js
960
+ async function deflate(bytes, level = 6) {
961
961
  if (slots.free > 0) slots.free--;
962
962
  else await new Promise((ok) => slots.wait.push(
963
963
  /** @type {() => void} */
964
964
  ok
965
965
  ));
966
966
  try {
967
- return await now(bytes);
967
+ return await now(bytes, level);
968
968
  } finally {
969
969
  const next = slots.wait.shift();
970
970
  if (next) next();
971
971
  else slots.free++;
972
972
  }
973
973
  }
974
- async function now(bytes) {
975
- if (NODE_ZLIB) return new Promise((ok, fail2) => NODE_ZLIB.deflate(bytes, { level: 6 }, (e, z) => e ? fail2(e) : ok(z)));
976
- if (typeof CompressionStream === "undefined") return zlibSync(bytes, { level: 6 });
974
+ async function now(bytes, level) {
975
+ if (NODE_ZLIB) return new Promise((ok, fail2) => NODE_ZLIB.deflate(bytes, { level }, (e, z) => e ? fail2(e) : ok(z)));
976
+ if (typeof CompressionStream === "undefined" || level !== 6) return zlibSync(bytes, { level: (
977
+ /** @type {any} */
978
+ level
979
+ ) });
977
980
  return new Uint8Array(await new Response(new Blob([
978
981
  /** @type {any} */
979
982
  bytes
980
983
  ]).stream().pipeThrough(new CompressionStream("deflate"))).arrayBuffer());
981
984
  }
982
- function deflateStream() {
985
+ function deflateStream(level = 6) {
983
986
  const out = [];
984
987
  const join = () => {
985
988
  let n = 0;
@@ -993,7 +996,7 @@ function deflateStream() {
993
996
  return z;
994
997
  };
995
998
  if (NODE_ZLIB) {
996
- const z = NODE_ZLIB.createDeflate({ level: 6 });
999
+ const z = NODE_ZLIB.createDeflate({ level, chunkSize: 1 << 20 });
997
1000
  const ended = new Promise((ok, fail2) => {
998
1001
  z.on("data", (c) => out.push(c));
999
1002
  z.on("end", ok);
@@ -1017,7 +1020,19 @@ function deflateStream() {
1017
1020
  if (typeof CompressionStream === "undefined") return { async push(b) {
1018
1021
  out.push(b.slice());
1019
1022
  }, async end() {
1020
- return zlibSync(join(), { level: 6 });
1023
+ return zlibSync(join(), { level: (
1024
+ /** @type {any} */
1025
+ level
1026
+ ) });
1027
+ }, abort() {
1028
+ } };
1029
+ if (level !== 6) return { async push(b) {
1030
+ out.push(b.slice());
1031
+ }, async end() {
1032
+ return zlibSync(join(), { level: (
1033
+ /** @type {any} */
1034
+ level
1035
+ ) });
1021
1036
  }, abort() {
1022
1037
  } };
1023
1038
  const cs = new CompressionStream("deflate"), w = cs.writable.getWriter();
@@ -1044,7 +1059,7 @@ function deflateStream() {
1044
1059
  }
1045
1060
  var NODE_ZLIB, slots;
1046
1061
  var init_deflate = __esm({
1047
- "packages/pdf/src/core/deflate.js"() {
1062
+ "src/core/deflate.js"() {
1048
1063
  init_browser();
1049
1064
  NODE_ZLIB = /** @type {any} */
1050
1065
  globalThis.process?.getBuiltinModule?.("node:zlib");
@@ -1055,7 +1070,7 @@ var init_deflate = __esm({
1055
1070
  }
1056
1071
  });
1057
1072
 
1058
- // packages/pdf/src/core/objects.js
1073
+ // src/core/objects.js
1059
1074
  function createObjects(out, o) {
1060
1075
  let pos = 0, nextNum = 0;
1061
1076
  const blocks = [];
@@ -1335,7 +1350,7 @@ ${xref}
1335
1350
  }
1336
1351
  var CHUNK, OBJSTM, XBITS, XB, BYTERANGE;
1337
1352
  var init_objects = __esm({
1338
- "packages/pdf/src/core/objects.js"() {
1353
+ "src/core/objects.js"() {
1339
1354
  init_serialize();
1340
1355
  init_deflate();
1341
1356
  init_sink();
@@ -1347,7 +1362,7 @@ var init_objects = __esm({
1347
1362
  }
1348
1363
  });
1349
1364
 
1350
- // packages/pdf/src/standards/xmp.js
1365
+ // src/standards/xmp.js
1351
1366
  function checkExt(x2) {
1352
1367
  if (!NAME.test(x2.prefix)) throw new TypeError(`XMP: the schema prefix ${JSON.stringify(x2.prefix)} is not an XML name`);
1353
1368
  if (typeof x2.ns !== "string" || !/^[A-Za-z][A-Za-z0-9+.-]*:[^\s<>"'&]{1,256}$/.test(x2.ns)) throw new TypeError(`XMP: the namespace ${JSON.stringify(x2.ns)} is not a URI`);
@@ -1379,7 +1394,7 @@ ${pdfa ? `<rdf:Description rdf:about="" xmlns:pdfaid="http://www.aiim.org/pdfa/n
1379
1394
  }
1380
1395
  var PRODUCER, xml, NAME, PDFUA;
1381
1396
  var init_xmp = __esm({
1382
- "packages/pdf/src/standards/xmp.js"() {
1397
+ "src/standards/xmp.js"() {
1383
1398
  PRODUCER = "@reportwright/pdf";
1384
1399
  xml = (s) => String(s).replace(/[\0-\x08\x0b\x0c\x0e-\x1f￾￿]|[\ud800-\udbff](?![\udc00-\udfff])|(?<![\ud800-\udbff])[\udc00-\udfff]/g, "").replace(/[<>&"']/g, (c) => (
1385
1400
  /** @type {any} */
@@ -1396,7 +1411,7 @@ var init_xmp = __esm({
1396
1411
  }
1397
1412
  });
1398
1413
 
1399
- // packages/pdf/src/core/brand.js
1414
+ // src/core/brand.js
1400
1415
  function brand(obj, kind, doc, data) {
1401
1416
  brands.set(obj, { kind, doc, data });
1402
1417
  return obj;
@@ -1457,14 +1472,14 @@ function guarded(api) {
1457
1472
  }
1458
1473
  var brands, kindOf, MAX_SNAPSHOT;
1459
1474
  var init_brand = __esm({
1460
- "packages/pdf/src/core/brand.js"() {
1475
+ "src/core/brand.js"() {
1461
1476
  brands = /* @__PURE__ */ new WeakMap();
1462
1477
  kindOf = (v) => v !== null && typeof v === "object" ? brands.get(v)?.kind : void 0;
1463
1478
  MAX_SNAPSHOT = 16e6;
1464
1479
  }
1465
1480
  });
1466
1481
 
1467
- // packages/pdf/src/document.js
1482
+ // src/document.js
1468
1483
  function createDoc(out, o) {
1469
1484
  const level = o.pdfaLevel ?? (o.pdfa ? { part: 2, conformance: "b", unicode: false } : null);
1470
1485
  const objs = createObjects(out, { compress: o.compress, signal: o.signal, encrypt: o.encrypt, hash: o.hash, classic: level?.part === 1 });
@@ -1682,7 +1697,7 @@ function createDoc(out, o) {
1682
1697
  }
1683
1698
  var LEAF, IN_FLIGHT;
1684
1699
  var init_document = __esm({
1685
- "packages/pdf/src/document.js"() {
1700
+ "src/document.js"() {
1686
1701
  init_objects();
1687
1702
  init_deflate();
1688
1703
  init_serialize();
@@ -1693,10 +1708,10 @@ var init_document = __esm({
1693
1708
  }
1694
1709
  });
1695
1710
 
1696
- // packages/pdf/src/content/content.js
1711
+ // src/content/content.js
1697
1712
  var Content;
1698
1713
  var init_content = __esm({
1699
- "packages/pdf/src/content/content.js"() {
1714
+ "src/content/content.js"() {
1700
1715
  init_serialize();
1701
1716
  Content = class {
1702
1717
  constructor() {
@@ -1855,7 +1870,7 @@ var init_content = __esm({
1855
1870
  }
1856
1871
  });
1857
1872
 
1858
- // packages/pdf/src/standards/icc.js
1873
+ // src/standards/icc.js
1859
1874
  function parseIcc(bytes, what) {
1860
1875
  const b = toBytes(bytes, what);
1861
1876
  const bad = (m) => new TypeError(`${what}: not a usable ICC profile (${m})`);
@@ -1887,14 +1902,14 @@ function toBytes(v, what) {
1887
1902
  }
1888
1903
  var MAX_ICC, SPACES, tag;
1889
1904
  var init_icc = __esm({
1890
- "packages/pdf/src/standards/icc.js"() {
1905
+ "src/standards/icc.js"() {
1891
1906
  MAX_ICC = 32 << 20;
1892
1907
  SPACES = /* @__PURE__ */ new Map([["GRAY", 1], ["RGB ", 3], ["CMYK", 4]]);
1893
1908
  tag = (b, i2) => String.fromCharCode(b[i2], b[i2 + 1], b[i2 + 2], b[i2 + 3]);
1894
1909
  }
1895
1910
  });
1896
1911
 
1897
- // packages/pdf/src/graphics/color.js
1912
+ // src/graphics/color.js
1898
1913
  function cmyk(c, m, y, k) {
1899
1914
  const v = [c, m, y, k];
1900
1915
  if (!v.every(unit)) throw new RangeError(`cmyk(c, m, y, k): each is 0–1, not ${v.join(", ")}`);
@@ -1977,7 +1992,7 @@ async function iccColorSpace(doc, bytes) {
1977
1992
  }
1978
1993
  var DEVICE, unit, CSS_RGB, base, spots;
1979
1994
  var init_color = __esm({
1980
- "packages/pdf/src/graphics/color.js"() {
1995
+ "src/graphics/color.js"() {
1981
1996
  init_serialize();
1982
1997
  init_brand();
1983
1998
  init_icc();
@@ -1989,7 +2004,7 @@ var init_color = __esm({
1989
2004
  }
1990
2005
  });
1991
2006
 
1992
- // packages/pdf/src/text/runs.js
2007
+ // src/text/runs.js
1993
2008
  function spacing(o) {
1994
2009
  const tc = o?.characterSpacing ?? 0, tw = o?.wordSpacing ?? 0, tz = o?.horizontalScaling ?? 100;
1995
2010
  num(tc);
@@ -2124,7 +2139,7 @@ function runOps(run2, size, rise, tw, standard, tc = 0) {
2124
2139
  }
2125
2140
  var WS, RTL_RANGES, dirOf, maybeRtl, RTL, LTR;
2126
2141
  var init_runs = __esm({
2127
- "packages/pdf/src/text/runs.js"() {
2142
+ "src/text/runs.js"() {
2128
2143
  init_serialize();
2129
2144
  WS = /^\s$/u;
2130
2145
  RTL_RANGES = "֐-ࣿיִ-﷿ﹰ-\uFEFF";
@@ -2138,7 +2153,7 @@ var init_runs = __esm({
2138
2153
  }
2139
2154
  });
2140
2155
 
2141
- // packages/pdf/src/text/text.js
2156
+ // src/text/text.js
2142
2157
  function fontsOf(page, o, who) {
2143
2158
  const font = o?.font;
2144
2159
  if (!font || typeof font.encode !== "function") throw new TypeError(`${who}: options.font is required (pdf.standardFont(name) or await pdf.embedFont(bytes))`);
@@ -2207,7 +2222,7 @@ function text2(str3, o) {
2207
2222
  }
2208
2223
  var MAX_TEXT, MODES, PLAIN, PLAIN_STATE;
2209
2224
  var init_text = __esm({
2210
- "packages/pdf/src/text/text.js"() {
2225
+ "src/text/text.js"() {
2211
2226
  init_color();
2212
2227
  init_serialize();
2213
2228
  init_brand();
@@ -2219,7 +2234,7 @@ var init_text = __esm({
2219
2234
  }
2220
2235
  });
2221
2236
 
2222
- // packages/pdf/src/text/box.js
2237
+ // src/text/box.js
2223
2238
  function textBox(str3, o) {
2224
2239
  const fonts = fontsOf(this, o, "page.textBox");
2225
2240
  const size = o.size ?? 12, x2 = o.x ?? 0, y = o.y ?? 0, W = o.width;
@@ -2266,12 +2281,12 @@ function textBox(str3, o) {
2266
2281
  s = -1;
2267
2282
  lw = 0;
2268
2283
  };
2269
- for (const word of para.split(" ")) {
2284
+ for (const word2 of para.split(" ")) {
2270
2285
  if (lines.length > stop) break paras;
2271
- const ws = q, we = q + word.length;
2286
+ const ws = q, we = q + word2.length;
2272
2287
  q = we + 1;
2273
- if (!word && s < 0) continue;
2274
- const ww = width(word);
2288
+ if (!word2 && s < 0) continue;
2289
+ const ww = width(word2);
2275
2290
  if (s >= 0) {
2276
2291
  const add2 = width(" ") + ww;
2277
2292
  if (lw + add2 <= W + EPS2) {
@@ -2280,7 +2295,7 @@ function textBox(str3, o) {
2280
2295
  continue;
2281
2296
  }
2282
2297
  commit(false);
2283
- if (!word) continue;
2298
+ if (!word2) continue;
2284
2299
  }
2285
2300
  s = ws;
2286
2301
  e = we;
@@ -2288,7 +2303,7 @@ function textBox(str3, o) {
2288
2303
  if (lw <= W + EPS2) continue;
2289
2304
  let acc = 0;
2290
2305
  e = s;
2291
- for (const ch of word) {
2306
+ for (const ch of word2) {
2292
2307
  const cw = width(ch);
2293
2308
  if (acc + cw > W + EPS2 && e > s) {
2294
2309
  if (lines.length > stop) break paras;
@@ -2343,7 +2358,7 @@ function textBox(str3, o) {
2343
2358
  }
2344
2359
  var MAX_LINES;
2345
2360
  var init_box = __esm({
2346
- "packages/pdf/src/text/box.js"() {
2361
+ "src/text/box.js"() {
2347
2362
  init_serialize();
2348
2363
  init_runs();
2349
2364
  init_text();
@@ -2351,7 +2366,7 @@ var init_box = __esm({
2351
2366
  }
2352
2367
  });
2353
2368
 
2354
- // packages/pdf/src/graphics/svg.js
2369
+ // src/graphics/svg.js
2355
2370
  function parseSvgPath(d, path2) {
2356
2371
  if (typeof d !== "string") throw new TypeError("svgPath: the path data is a string");
2357
2372
  if (d.length > MAX_SVG) throw new RangeError(`svgPath: the path data is ${d.length} characters; at most ${MAX_SVG} (10 MB)`);
@@ -2515,7 +2530,7 @@ function arc(path2, x0, y0, rx, ry, phi, large, sweep, x2, y) {
2515
2530
  }
2516
2531
  var MAX_SVG, ARGS;
2517
2532
  var init_svg = __esm({
2518
- "packages/pdf/src/graphics/svg.js"() {
2533
+ "src/graphics/svg.js"() {
2519
2534
  init_path();
2520
2535
  MAX_SVG = 10 * 1024 * 1024;
2521
2536
  ARGS = /** @type {Record<string, number>} */
@@ -2523,14 +2538,14 @@ var init_svg = __esm({
2523
2538
  }
2524
2539
  });
2525
2540
 
2526
- // packages/pdf/src/graphics/path.js
2541
+ // src/graphics/path.js
2527
2542
  function coord(v, what) {
2528
2543
  if (typeof v !== "number" || !(Math.abs(v) < 1e9)) throw new RangeError(`${what}: ${v} is not a usable number (finite, under 1e9 in size)`);
2529
2544
  return v;
2530
2545
  }
2531
2546
  var MAX_SEGMENTS, TAU, Path;
2532
2547
  var init_path = __esm({
2533
- "packages/pdf/src/graphics/path.js"() {
2548
+ "src/graphics/path.js"() {
2534
2549
  init_serialize();
2535
2550
  init_svg();
2536
2551
  MAX_SEGMENTS = 1e6;
@@ -2743,7 +2758,7 @@ var init_path = __esm({
2743
2758
  }
2744
2759
  });
2745
2760
 
2746
- // packages/pdf/src/graphics/paint.js
2761
+ // src/graphics/paint.js
2747
2762
  function oneSpace(cols, doc) {
2748
2763
  const r = cols.map((c) => resolve(c, doc));
2749
2764
  if (r.every((x2) => x2.cs === DEVICE[1] || x2.cs === DEVICE[3]) && r.some((x2) => x2.cs === DEVICE[3])) {
@@ -2849,7 +2864,7 @@ function tilingPattern(o, draw) {
2849
2864
  }
2850
2865
  var MAX_STOPS, shading, base2;
2851
2866
  var init_paint = __esm({
2852
- "packages/pdf/src/graphics/paint.js"() {
2867
+ "src/graphics/paint.js"() {
2853
2868
  init_serialize();
2854
2869
  init_color();
2855
2870
  init_draw();
@@ -2860,7 +2875,7 @@ var init_paint = __esm({
2860
2875
  }
2861
2876
  });
2862
2877
 
2863
- // packages/pdf/src/standards/level.js
2878
+ // src/standards/level.js
2864
2879
  function pdfaLevel(pdfa, tagged) {
2865
2880
  if (pdfa == null || pdfa === false) return null;
2866
2881
  if (pdfa === true) return { part: 2, conformance: "b", unicode: false };
@@ -2877,11 +2892,11 @@ function refuseInA1(doc, what, why) {
2877
2892
  if (d.pdfaLevel?.part === 1) throw new TypeError(`${what}: PDF/A-1 (ISO 19005-1) ${why}; use PDF/A-2 or 3 (pdfa: { part: 2 })`);
2878
2893
  }
2879
2894
  var init_level = __esm({
2880
- "packages/pdf/src/standards/level.js"() {
2895
+ "src/standards/level.js"() {
2881
2896
  }
2882
2897
  });
2883
2898
 
2884
- // packages/pdf/src/graphics/draw.js
2899
+ // src/graphics/draw.js
2885
2900
  function state(page) {
2886
2901
  let s = states.get(page);
2887
2902
  if (!s) states.set(page, s = { m: [1, 0, 0, 1, 0, 0], stack: [], transparent: false, watched: false });
@@ -3066,7 +3081,7 @@ function figure(o, fn) {
3066
3081
  }
3067
3082
  var MAX_DEPTH, MAX_DEPTH_PDFA, MAX_DASH, BLEND_MODES, BLEND, CAPS, JOINS, GROUP, states, mul, flip, num6, matrix, rule;
3068
3083
  var init_draw = __esm({
3069
- "packages/pdf/src/graphics/draw.js"() {
3084
+ "src/graphics/draw.js"() {
3070
3085
  init_serialize();
3071
3086
  init_path();
3072
3087
  init_paint();
@@ -3098,7 +3113,7 @@ var init_draw = __esm({
3098
3113
  }
3099
3114
  });
3100
3115
 
3101
- // packages/pdf/src/graphics/shapes.js
3116
+ // src/graphics/shapes.js
3102
3117
  function line(x1, y1, x2, y2, o = {}) {
3103
3118
  const c = this.content, H = this.height;
3104
3119
  const gs = gstate(this, o);
@@ -3138,14 +3153,14 @@ function rect(x2, y, w, h, o = {}) {
3138
3153
  return this;
3139
3154
  }
3140
3155
  var init_shapes = __esm({
3141
- "packages/pdf/src/graphics/shapes.js"() {
3156
+ "src/graphics/shapes.js"() {
3142
3157
  init_serialize();
3143
3158
  init_color();
3144
3159
  init_draw();
3145
3160
  }
3146
3161
  });
3147
3162
 
3148
- // packages/pdf/src/nav/trees.js
3163
+ // src/nav/trees.js
3149
3164
  async function writeTree(doc, kind, entries) {
3150
3165
  let level = [];
3151
3166
  for (let i2 = 0; i2 < entries.length; i2 += LEAF2) {
@@ -3173,14 +3188,14 @@ function setNames(doc, key, ref) {
3173
3188
  }
3174
3189
  var LEAF2, names;
3175
3190
  var init_trees = __esm({
3176
- "packages/pdf/src/nav/trees.js"() {
3191
+ "src/nav/trees.js"() {
3177
3192
  init_serialize();
3178
3193
  LEAF2 = 64;
3179
3194
  names = /* @__PURE__ */ new WeakMap();
3180
3195
  }
3181
3196
  });
3182
3197
 
3183
- // packages/pdf/src/nav/dest.js
3198
+ // src/nav/dest.js
3184
3199
  function pageIndex(doc, page, who) {
3185
3200
  if (typeof page === "number") {
3186
3201
  if (!(Number.isInteger(page) && page >= 1)) throw new RangeError(`${who}: page is a whole number from 1`);
@@ -3274,7 +3289,7 @@ function create(doc) {
3274
3289
  }
3275
3290
  var FITS, MAX_NAMES, MAX_NAME_BYTES, UTF82, hexOf, registries;
3276
3291
  var init_dest = __esm({
3277
- "packages/pdf/src/nav/dest.js"() {
3292
+ "src/nav/dest.js"() {
3278
3293
  init_serialize();
3279
3294
  init_brand();
3280
3295
  init_trees();
@@ -3291,7 +3306,7 @@ var init_dest = __esm({
3291
3306
  }
3292
3307
  });
3293
3308
 
3294
- // packages/pdf/src/nav/links.js
3309
+ // src/nav/links.js
3295
3310
  function checkUrl(raw, allow, who) {
3296
3311
  if (typeof raw !== "string") throw new TypeError(`${who}: url is a string`);
3297
3312
  if (raw.length > MAX_URL) throw new RangeError(`${who}: a URL is at most ${MAX_URL} characters`);
@@ -3415,7 +3430,7 @@ function dashArray(d, who) {
3415
3430
  }
3416
3431
  var NEVER, DEFAULT_SCHEMES, ACTIVE, NAMED, MAX_URL, MAX_QUADS, HIGHLIGHT, BORDER;
3417
3432
  var init_links = __esm({
3418
- "packages/pdf/src/nav/links.js"() {
3433
+ "src/nav/links.js"() {
3419
3434
  init_serialize();
3420
3435
  init_color();
3421
3436
  init_dest();
@@ -3430,8 +3445,9 @@ var init_links = __esm({
3430
3445
  }
3431
3446
  });
3432
3447
 
3433
- // packages/pdf/src/images/png.js
3448
+ // src/images/png.js
3434
3449
  function crc32(b, from, to) {
3450
+ if (NODE_ZLIB2?.crc32) return NODE_ZLIB2.crc32(b.subarray(from, to));
3435
3451
  if (!CRC_TABLE) {
3436
3452
  CRC_TABLE = new Uint32Array(256);
3437
3453
  for (let n = 0; n < 256; n++) {
@@ -3572,16 +3588,24 @@ function unfilterRow(f, c, p, bpp) {
3572
3588
  }
3573
3589
  for (let i2 = 0; i2 < bpp; i2++) c[i2] += p[i2];
3574
3590
  for (let i2 = bpp; i2 < rb; i2++) {
3575
- const a = c[i2 - bpp], u = p[i2], cc = p[i2 - bpp], pp = a + u - cc, pa = Math.abs(pp - a), pb = Math.abs(pp - u), pc = Math.abs(pp - cc);
3576
- c[i2] += pa <= pb && pa <= pc ? a : pb <= pc ? u : cc;
3591
+ const a = c[i2 - bpp], u = p[i2], cc = p[i2 - bpp];
3592
+ let pa = u - cc, pb = a - cc, pc = pa + pb, k;
3593
+ k = pa >> 31;
3594
+ pa = (pa ^ k) - k;
3595
+ k = pb >> 31;
3596
+ pb = (pb ^ k) - k;
3597
+ k = pc >> 31;
3598
+ pc = (pc ^ k) - k;
3599
+ c[i2] += a ^ (a ^ (u ^ (u ^ cc) & pc - pb >> 31)) & (pb - pa | pc - pa) >> 31;
3577
3600
  }
3578
3601
  }
3579
3602
  function filterRow(x2, up, bpp, out, o, t) {
3580
3603
  const rb = x2.length, m = Math.min(bpp, rb);
3581
- let best = 0, sum = 0;
3604
+ let best = 0, sum = 0, s, k;
3582
3605
  for (let i2 = 0; i2 < rb; i2++) {
3583
- const v = x2[i2];
3584
- sum += v < 128 ? v : 256 - v;
3606
+ s = x2[i2] << 24 >> 24;
3607
+ k = s >> 31;
3608
+ sum += (s ^ k) - k;
3585
3609
  }
3586
3610
  out[o] = 0;
3587
3611
  out.set(x2, o + 1);
@@ -3590,12 +3614,15 @@ function filterRow(x2, up, bpp, out, o, t) {
3590
3614
  for (let i2 = 0; i2 < m; i2++) {
3591
3615
  const v = x2[i2];
3592
3616
  t[i2] = v;
3593
- sum += v < 128 ? v : 256 - v;
3617
+ s = v << 24 >> 24;
3618
+ k = s >> 31;
3619
+ sum += (s ^ k) - k;
3594
3620
  }
3595
3621
  for (let i2 = m; i2 < rb; i2++) {
3596
- const v = x2[i2] - x2[i2 - bpp] & 255;
3597
- t[i2] = v;
3598
- sum += v < 128 ? v : 256 - v;
3622
+ s = x2[i2] - x2[i2 - bpp] << 24 >> 24;
3623
+ t[i2] = s;
3624
+ k = s >> 31;
3625
+ sum += (s ^ k) - k;
3599
3626
  }
3600
3627
  if (sum < best) {
3601
3628
  best = sum;
@@ -3605,9 +3632,10 @@ function filterRow(x2, up, bpp, out, o, t) {
3605
3632
  if (!up) return;
3606
3633
  sum = 0;
3607
3634
  for (let i2 = 0; i2 < rb; i2++) {
3608
- const v = x2[i2] - up[i2] & 255;
3609
- t[i2] = v;
3610
- sum += v < 128 ? v : 256 - v;
3635
+ s = x2[i2] - up[i2] << 24 >> 24;
3636
+ t[i2] = s;
3637
+ k = s >> 31;
3638
+ sum += (s ^ k) - k;
3611
3639
  }
3612
3640
  if (sum < best) {
3613
3641
  best = sum;
@@ -3616,15 +3644,25 @@ function filterRow(x2, up, bpp, out, o, t) {
3616
3644
  }
3617
3645
  sum = 0;
3618
3646
  for (let i2 = 0; i2 < m; i2++) {
3619
- const v = x2[i2] - up[i2] & 255;
3620
- t[i2] = v;
3621
- sum += v < 128 ? v : 256 - v;
3647
+ s = x2[i2] - up[i2] << 24 >> 24;
3648
+ t[i2] = s;
3649
+ k = s >> 31;
3650
+ sum += (s ^ k) - k;
3622
3651
  }
3623
3652
  for (let i2 = m; i2 < rb; i2++) {
3624
- const a = x2[i2 - bpp], u = up[i2], c = up[i2 - bpp], pa = Math.abs(u - c), pb = Math.abs(a - c), pc = Math.abs(a + u - c - c);
3625
- const v = x2[i2] - (pa <= pb && pa <= pc ? a : pb <= pc ? u : c) & 255;
3626
- t[i2] = v;
3627
- sum += v < 128 ? v : 256 - v;
3653
+ const a = x2[i2 - bpp], u = up[i2], c = up[i2 - bpp];
3654
+ let pa = u - c, pb = a - c, pc = pa + pb;
3655
+ k = pa >> 31;
3656
+ pa = (pa ^ k) - k;
3657
+ k = pb >> 31;
3658
+ pb = (pb ^ k) - k;
3659
+ k = pc >> 31;
3660
+ pc = (pc ^ k) - k;
3661
+ const notA = (pb - pa | pc - pa) >> 31, uc = u ^ (u ^ c) & pc - pb >> 31;
3662
+ s = x2[i2] - (a ^ (a ^ uc) & notA) << 24 >> 24;
3663
+ t[i2] = s;
3664
+ k = s >> 31;
3665
+ sum += (s ^ k) - k;
3628
3666
  }
3629
3667
  if (sum < best) {
3630
3668
  out[o] = 4;
@@ -3748,7 +3786,7 @@ async function decodePng(p, maxDecoded = MAX_DECODED) {
3748
3786
  }
3749
3787
  var MAX_SIDE, MAX_PIXELS, MAX_DECODED, STEP, NODE_ZLIB2, SYNC_MAX, DEPTHS, CHANNELS, ADAM7, CRC_TABLE, isPng, rawSize, filterBytes;
3750
3788
  var init_png = __esm({
3751
- "packages/pdf/src/images/png.js"() {
3789
+ "src/images/png.js"() {
3752
3790
  init_browser();
3753
3791
  MAX_SIDE = 65535;
3754
3792
  MAX_PIXELS = 1e8;
@@ -3773,7 +3811,7 @@ var init_png = __esm({
3773
3811
  }
3774
3812
  });
3775
3813
 
3776
- // packages/pdf/src/images/jpeg.js
3814
+ // src/images/jpeg.js
3777
3815
  function readJpeg(b) {
3778
3816
  const bad = (m) => new TypeError(`JPEG: ${m}`);
3779
3817
  if (!isJpeg(b)) throw bad("no JPEG signature (FF D8)");
@@ -3844,26 +3882,27 @@ function exifOrientation(b, t, end) {
3844
3882
  }
3845
3883
  var isJpeg;
3846
3884
  var init_jpeg = __esm({
3847
- "packages/pdf/src/images/jpeg.js"() {
3885
+ "src/images/jpeg.js"() {
3848
3886
  init_png();
3849
3887
  isJpeg = (b) => b.length >= 3 && b[0] === 255 && b[1] === 216 && b[2] === 255;
3850
3888
  }
3851
3889
  });
3852
3890
 
3853
- // packages/pdf/src/images/image.js
3891
+ // src/images/image.js
3854
3892
  async function embedImage(doc, bytes, opt = {}) {
3855
3893
  const b = toBytes(bytes, "embedImage");
3856
3894
  const own2 = (k2) => opt != null && Object.hasOwn(opt, k2) ? (
3857
3895
  /** @type {any} */
3858
3896
  opt[k2]
3859
3897
  ) : void 0;
3860
- const o = { colorSpace: own2("colorSpace"), maxDecodedBytes: own2("maxDecodedBytes") ?? MAX_DECODED };
3898
+ const o = { colorSpace: own2("colorSpace"), maxDecodedBytes: own2("maxDecodedBytes") ?? MAX_DECODED, compression: own2("compression") ?? "default" };
3899
+ if (!(o.compression === "default" || o.compression === "fast" || Number.isInteger(o.compression) && o.compression >= 1 && o.compression <= 9)) throw new TypeError("embedImage: compression is 'default', 'fast' or a zlib level 1–9");
3861
3900
  if (!(Number.isSafeInteger(o.maxDecodedBytes) && o.maxDecodedBytes > 0)) throw new TypeError("embedImage: maxDecodedBytes is a whole number of bytes > 0");
3862
3901
  if (b.length > MAX_INPUT) throw new RangeError(`embedImage: at most ${MAX_INPUT >> 20} MB`);
3863
3902
  let seen = SEEN.get(doc);
3864
3903
  if (!seen) SEEN.set(doc, seen = /* @__PURE__ */ new Map());
3865
3904
  const { key, copy } = await digest(b);
3866
- const k = `${key} ${o.colorSpace == null ? "-" : idOf(o.colorSpace)} ${o.maxDecodedBytes}`;
3905
+ const k = `${key} ${o.colorSpace == null ? "-" : idOf(o.colorSpace)} ${o.maxDecodedBytes} ${o.compression}`;
3867
3906
  const hit = seen.get(k);
3868
3907
  if (hit && (!hit.copy || same(hit.copy, b))) return hit.img;
3869
3908
  const img = embed(doc, b, o);
@@ -3921,7 +3960,8 @@ async function embed(doc, b, o) {
3921
3960
  let color, a = null;
3922
3961
  if (p.filtered) color = [p.data, parms(ch, p.bpc)];
3923
3962
  else {
3924
- const ce = encoder(h, rb, bpp, parms(ch, p.bpc)), ae = p.alpha ? encoder(h, arb, Math.max(1, abpc >> 3), parms(1, abpc)) : null;
3963
+ const lv = o.compression === "fast" ? 1 : o.compression === "default" ? w * h > 2e6 ? 3 : 6 : o.compression;
3964
+ const ce = encoder(h, rb, bpp, parms(ch, p.bpc), lv), ae = p.alpha ? encoder(h, arb, Math.max(1, abpc >> 3), parms(1, abpc), lv) : null;
3925
3965
  try {
3926
3966
  await p.rows(async (c, al) => {
3927
3967
  await Promise.all([ce.row(c), ae && al ? ae.row(al) : null]);
@@ -3957,8 +3997,8 @@ async function embed(doc, b, o) {
3957
3997
  { ref, w: turned ? h : w, h: turned ? w : h, orient: ORIENT[orientation], alpha }
3958
3998
  );
3959
3999
  }
3960
- function encoder(rows, rb, bpp, dp) {
3961
- const z = deflateStream(), per = Math.max(1, Math.floor((1 << 20) / (rb + 1))), t = new Uint8Array(rb);
4000
+ function encoder(rows, rb, bpp, dp, level) {
4001
+ const z = deflateStream(level), per = Math.max(1, Math.floor((1 << 20) / (rb + 1))), t = new Uint8Array(rb);
3962
4002
  const plain2 = rows * rb <= 256 << 10 ? new Uint8Array(rows * rb) : null;
3963
4003
  const strips = [new Uint8Array(per * (rb + 1)), new Uint8Array(per * (rb + 1))], busy = [Promise.resolve(), Promise.resolve()];
3964
4004
  let s = 0, strip = strips[0], k = 0, y = 0;
@@ -3982,7 +4022,7 @@ function encoder(rows, rb, bpp, dp) {
3982
4022
  await busy[s ^ 1];
3983
4023
  const f = await z.end();
3984
4024
  if (!plain2) return [f, dp];
3985
- const p = await deflate(plain2);
4025
+ const p = await deflate(plain2, level);
3986
4026
  return p.length <= f.length + dp.length ? [p, ""] : [f, dp];
3987
4027
  },
3988
4028
  abort: () => z.abort()
@@ -4017,7 +4057,7 @@ function image(img, o = {}) {
4017
4057
  }
4018
4058
  var MAX_INPUT, ORIENT, SEEN, IDS, nextId, idOf, NODE_CRYPTO, same;
4019
4059
  var init_image = __esm({
4020
- "packages/pdf/src/images/image.js"() {
4060
+ "src/images/image.js"() {
4021
4061
  init_serialize();
4022
4062
  init_deflate();
4023
4063
  init_brand();
@@ -4055,7 +4095,7 @@ var init_image = __esm({
4055
4095
  }
4056
4096
  });
4057
4097
 
4058
- // packages/pdf/src/annotations/annot.js
4098
+ // src/annotations/annot.js
4059
4099
  function dateOf(d, who) {
4060
4100
  if (!(d instanceof Date) || isNaN(+d)) throw new TypeError(`${who}: a date is a valid Date`);
4061
4101
  return pdfDate(d);
@@ -4126,7 +4166,7 @@ function addAnnot(page, subtype, box, own2, common, draw) {
4126
4166
  }
4127
4167
  var FLAGS, MAX_CONTENTS, no;
4128
4168
  var init_annot = __esm({
4129
- "packages/pdf/src/annotations/annot.js"() {
4169
+ "src/annotations/annot.js"() {
4130
4170
  init_serialize();
4131
4171
  init_brand();
4132
4172
  init_content();
@@ -4139,7 +4179,7 @@ var init_annot = __esm({
4139
4179
  }
4140
4180
  });
4141
4181
 
4142
- // packages/pdf/src/annotations/markup.js
4182
+ // src/annotations/markup.js
4143
4183
  function boxOf(o, who) {
4144
4184
  const b = [o?.x ?? 0, o?.y ?? 0, o?.width, o?.height];
4145
4185
  for (const v of b) if (typeof v !== "number") throw new TypeError(`${who}: x, y, width and height are numbers`);
@@ -4342,7 +4382,7 @@ function stamp(o) {
4342
4382
  }
4343
4383
  var NOTE_ICONS, STAMPS, LINE_ENDINGS, MAX_POINTS, MAX_STROKES, dflt2, highlight, underline, strikeOut, squiggly, asciiHex;
4344
4384
  var init_markup = __esm({
4345
- "packages/pdf/src/annotations/markup.js"() {
4385
+ "src/annotations/markup.js"() {
4346
4386
  init_serialize();
4347
4387
  init_brand();
4348
4388
  init_color();
@@ -4366,7 +4406,7 @@ var init_markup = __esm({
4366
4406
  }
4367
4407
  });
4368
4408
 
4369
- // packages/pdf/src/core/filename.js
4409
+ // src/core/filename.js
4370
4410
  function checkFileName(raw, o, who, again = false) {
4371
4411
  if (typeof raw !== "string") throw new TypeError(`${who}: name (the file name) is a string`);
4372
4412
  if (raw.length > MAX_IN) throw new RangeError(`${who}: a file name is at most ${MAX_BYTES} bytes (UTF-8)`);
@@ -4425,7 +4465,7 @@ function check(name, allow, risky, o, who) {
4425
4465
  }
4426
4466
  var MAX_IN, MAX_BYTES, BAD, SPACES2, SLASHES, DOTS, DEVICE2, PASSIVE, MIMES, UTF83;
4427
4467
  var init_filename = __esm({
4428
- "packages/pdf/src/core/filename.js"() {
4468
+ "src/core/filename.js"() {
4429
4469
  MAX_IN = 4096;
4430
4470
  MAX_BYTES = 255;
4431
4471
  BAD = /[\p{Cc}\p{Cf}\p{Zl}\p{Zp}\p{Cs}<>:"|?*]/u;
@@ -4463,7 +4503,7 @@ var init_filename = __esm({
4463
4503
  }
4464
4504
  });
4465
4505
 
4466
- // packages/pdf/src/core/md5.js
4506
+ // src/core/md5.js
4467
4507
  function md5(bytes) {
4468
4508
  const n = bytes.length, total = (n + 8 >>> 6) + 1 << 6;
4469
4509
  const tail = new Uint8Array(total - (n & ~63));
@@ -4514,7 +4554,7 @@ function md5(bytes) {
4514
4554
  }
4515
4555
  var S, K;
4516
4556
  var init_md5 = __esm({
4517
- "packages/pdf/src/core/md5.js"() {
4557
+ "src/core/md5.js"() {
4518
4558
  S = [
4519
4559
  7,
4520
4560
  12,
@@ -4585,7 +4625,7 @@ var init_md5 = __esm({
4585
4625
  }
4586
4626
  });
4587
4627
 
4588
- // packages/pdf/src/annotations/attach.js
4628
+ // src/annotations/attach.js
4589
4629
  function attachFile(bytes, o = (
4590
4630
  /** @type {any} */
4591
4631
  {}
@@ -4621,7 +4661,7 @@ function attachFile(bytes, o = (
4621
4661
  }
4622
4662
  var FILE_ICONS, MAX_FILE;
4623
4663
  var init_attach = __esm({
4624
- "packages/pdf/src/annotations/attach.js"() {
4664
+ "src/annotations/attach.js"() {
4625
4665
  init_serialize();
4626
4666
  init_filename();
4627
4667
  init_md5();
@@ -4631,7 +4671,7 @@ var init_attach = __esm({
4631
4671
  }
4632
4672
  });
4633
4673
 
4634
- // packages/pdf/src/standards/layers.js
4674
+ // src/standards/layers.js
4635
4675
  function createLayers(doc) {
4636
4676
  const all = [];
4637
4677
  doc.onFinish(async () => {
@@ -4693,7 +4733,7 @@ function pageLayer(layer, fn) {
4693
4733
  }
4694
4734
  var MAX_LAYERS, MAX_NEST, depth;
4695
4735
  var init_layers = __esm({
4696
- "packages/pdf/src/standards/layers.js"() {
4736
+ "src/standards/layers.js"() {
4697
4737
  init_serialize();
4698
4738
  init_brand();
4699
4739
  init_level();
@@ -4704,7 +4744,7 @@ var init_layers = __esm({
4704
4744
  }
4705
4745
  });
4706
4746
 
4707
- // packages/pdf/src/tags/tags.js
4747
+ // src/tags/tags.js
4708
4748
  function createTagger(doc, opt) {
4709
4749
  const rootRef = doc.reserve(), docRef = doc.reserve();
4710
4750
  const docKids = [];
@@ -4913,7 +4953,7 @@ function artifact(o, fn) {
4913
4953
  }
4914
4954
  var STRUCTURE_TYPES, ART, PARENTS, NUMBERING, ARTIFACT_TYPES, ARTIFACT_SUBTYPES, MAX_TEXT2, MAX_IDS, str, idOf2;
4915
4955
  var init_tags = __esm({
4916
- "packages/pdf/src/tags/tags.js"() {
4956
+ "src/tags/tags.js"() {
4917
4957
  init_serialize();
4918
4958
  init_trees();
4919
4959
  init_brand();
@@ -5003,7 +5043,7 @@ var init_tags = __esm({
5003
5043
  }
5004
5044
  });
5005
5045
 
5006
- // packages/pdf/src/page.js
5046
+ // src/page.js
5007
5047
  function install(methods) {
5008
5048
  for (const [name, f] of Object.entries(methods)) {
5009
5049
  Page.prototype[name] = function(...a) {
@@ -5014,7 +5054,7 @@ function install(methods) {
5014
5054
  }
5015
5055
  var MAX_ANNOTS, Page;
5016
5056
  var init_page = __esm({
5017
- "packages/pdf/src/page.js"() {
5057
+ "src/page.js"() {
5018
5058
  init_content();
5019
5059
  init_brand();
5020
5060
  init_text();
@@ -5091,10 +5131,10 @@ var init_page = __esm({
5091
5131
  }
5092
5132
  });
5093
5133
 
5094
- // packages/pdf/src/fonts/standard-metrics.js
5134
+ // src/fonts/standard-metrics.js
5095
5135
  var ENCODINGS, METRICS;
5096
5136
  var init_standard_metrics = __esm({
5097
- "packages/pdf/src/fonts/standard-metrics.js"() {
5137
+ "src/fonts/standard-metrics.js"() {
5098
5138
  ENCODINGS = {
5099
5139
  WinAnsi: [
5100
5140
  32,
@@ -10116,7 +10156,7 @@ var init_standard_metrics = __esm({
10116
10156
  }
10117
10157
  });
10118
10158
 
10119
- // packages/pdf/src/fonts/standard.js
10159
+ // src/fonts/standard.js
10120
10160
  function standardFont(doc, key) {
10121
10161
  const m = typeof key === "string" && Object.hasOwn(METRICS, key) ? (
10122
10162
  /** @type {any} */
@@ -10246,7 +10286,7 @@ function standardFont(doc, key) {
10246
10286
  }
10247
10287
  var STANDARD_NAMES, CODE;
10248
10288
  var init_standard = __esm({
10249
- "packages/pdf/src/fonts/standard.js"() {
10289
+ "src/fonts/standard.js"() {
10250
10290
  init_brand();
10251
10291
  init_standard_metrics();
10252
10292
  init_serialize();
@@ -10257,7 +10297,7 @@ var init_standard = __esm({
10257
10297
  }
10258
10298
  });
10259
10299
 
10260
- // packages/pdf/src/fonts/truetype.js
10300
+ // src/fonts/truetype.js
10261
10301
  function sfntTables(bytes) {
10262
10302
  if (bytes.length < 12) throw new TypeError("Not a font: too short");
10263
10303
  const v = tagOf(bytes, 0);
@@ -10434,14 +10474,14 @@ function cmapLookup(dv) {
10434
10474
  }
10435
10475
  var broken, tagOf, view;
10436
10476
  var init_truetype = __esm({
10437
- "packages/pdf/src/fonts/truetype.js"() {
10477
+ "src/fonts/truetype.js"() {
10438
10478
  broken = (why) => new TypeError(`Broken font: ${why}`);
10439
10479
  tagOf = (b, p) => String.fromCharCode(b[p], b[p + 1], b[p + 2], b[p + 3]);
10440
10480
  view = (b) => new DataView(b.buffer, b.byteOffset, b.byteLength);
10441
10481
  }
10442
10482
  });
10443
10483
 
10444
- // packages/pdf/src/fonts/subset.js
10484
+ // src/fonts/subset.js
10445
10485
  function subsetGlyf(bytes, glyphs2) {
10446
10486
  const t = sfntTables(bytes);
10447
10487
  const head = t.get("head"), loca = t.get("loca"), glyf = t.get("glyf"), maxp = t.get("maxp");
@@ -10537,7 +10577,7 @@ function buildSfnt(tables, version = [0, 1, 0, 0]) {
10537
10577
  }
10538
10578
  var KEEP, tableSum;
10539
10579
  var init_subset = __esm({
10540
- "packages/pdf/src/fonts/subset.js"() {
10580
+ "src/fonts/subset.js"() {
10541
10581
  init_truetype();
10542
10582
  KEEP = ["head", "hhea", "hmtx", "maxp", "cvt ", "fpgm", "prep", "OS/2", "name", "gasp"];
10543
10583
  tableSum = (b, o, len) => {
@@ -10549,7 +10589,7 @@ var init_subset = __esm({
10549
10589
  }
10550
10590
  });
10551
10591
 
10552
- // packages/pdf/src/fonts/cff.js
10592
+ // src/fonts/cff.js
10553
10593
  function readIndex(t, p, what) {
10554
10594
  if (p + 2 > t.length) throw broken2(`the CFF ${what} INDEX lies outside the table`);
10555
10595
  const count = t[p] << 8 | t[p + 1];
@@ -10812,7 +10852,7 @@ function identityCharset(t, n) {
10812
10852
  }
10813
10853
  var broken2, MAX_STACK, MAX_DEPTH2, MAX_CS, BUDGET, FONT_BUDGET, bias;
10814
10854
  var init_cff = __esm({
10815
- "packages/pdf/src/fonts/cff.js"() {
10855
+ "src/fonts/cff.js"() {
10816
10856
  broken2 = (why) => new TypeError(`Broken font: ${why}`);
10817
10857
  MAX_STACK = 48;
10818
10858
  MAX_DEPTH2 = 10;
@@ -10823,7 +10863,7 @@ var init_cff = __esm({
10823
10863
  }
10824
10864
  });
10825
10865
 
10826
- // packages/pdf/src/fonts/kern.js
10866
+ // src/fonts/kern.js
10827
10867
  function kerning(tables, numGlyphs, warn) {
10828
10868
  const gpos = tables.get("GPOS"), kern = tables.get("kern");
10829
10869
  if (gpos) {
@@ -11058,7 +11098,7 @@ function kernTable(t, numGlyphs) {
11058
11098
  }
11059
11099
  var broken3, MAX_SUBTABLES, BUDGET2, vsize;
11060
11100
  var init_kern = __esm({
11061
- "packages/pdf/src/fonts/kern.js"() {
11101
+ "src/fonts/kern.js"() {
11062
11102
  broken3 = (why) => new TypeError(`Broken font: ${why}`);
11063
11103
  MAX_SUBTABLES = 64;
11064
11104
  BUDGET2 = 4e6;
@@ -11070,12 +11110,14 @@ var init_kern = __esm({
11070
11110
  }
11071
11111
  });
11072
11112
 
11073
- // packages/pdf/src/fonts/embed.js
11113
+ // src/fonts/embed.js
11074
11114
  function embedFont(doc, input, opt = {}) {
11075
11115
  const bytes = input instanceof Uint8Array ? input : new Uint8Array(input);
11076
11116
  const f = parseFont(bytes);
11077
11117
  const shaper = opt.shaper;
11078
11118
  if (shaper != null && typeof shaper !== "function") throw new TypeError("embedFont: shaper is a function (text, font, { direction, kerning }) => glyphs");
11119
+ const textMapping = opt.textMapping ?? "carrier";
11120
+ if (textMapping !== "carrier" && textMapping !== "actualText") throw new TypeError(`embedFont: textMapping is 'carrier' or 'actualText', not ${JSON.stringify(textMapping)}`);
11079
11121
  const cffTable = f.tables.get("CFF ");
11080
11122
  const parsed = cffTable ? parseCff(cffTable, f.numGlyphs) : null, cidKeyed = !!parsed?.cids;
11081
11123
  const sub = opt.subset ?? true;
@@ -11269,7 +11311,7 @@ function embedFont(doc, input, opt = {}) {
11269
11311
  flow[0].n = flow.length;
11270
11312
  if (glue) glued = flow[0];
11271
11313
  }
11272
- if (li >= 0 && !out[li].c) out[li].b = two(code(gl[lead].g, "⁠")[0]);
11314
+ if (textMapping === "actualText" && li >= 0 && !out[li].c) out[li].b = two(code(gl[lead].g, "⁠")[0]);
11273
11315
  } else if (glue) glued = /** @type {any} */
11274
11316
  {};
11275
11317
  i2 = j;
@@ -11453,7 +11495,7 @@ function tag2(bytes) {
11453
11495
  }
11454
11496
  var OTF_KEEP;
11455
11497
  var init_embed = __esm({
11456
- "packages/pdf/src/fonts/embed.js"() {
11498
+ "src/fonts/embed.js"() {
11457
11499
  init_brand();
11458
11500
  init_truetype();
11459
11501
  init_subset();
@@ -11465,7 +11507,7 @@ var init_embed = __esm({
11465
11507
  }
11466
11508
  });
11467
11509
 
11468
- // packages/pdf/src/nav/outline.js
11510
+ // src/nav/outline.js
11469
11511
  function colorOf(c) {
11470
11512
  if (c == null) return "";
11471
11513
  const d = device(c);
@@ -11546,7 +11588,7 @@ function createOutline(doc) {
11546
11588
  }
11547
11589
  var MAX_ENTRIES, MAX_LEVEL, MAX_TITLE;
11548
11590
  var init_outline = __esm({
11549
- "packages/pdf/src/nav/outline.js"() {
11591
+ "src/nav/outline.js"() {
11550
11592
  init_serialize();
11551
11593
  init_color();
11552
11594
  init_dest();
@@ -11556,7 +11598,7 @@ var init_outline = __esm({
11556
11598
  }
11557
11599
  });
11558
11600
 
11559
- // packages/pdf/src/nav/labels.js
11601
+ // src/nav/labels.js
11560
11602
  function createPageLabels(doc) {
11561
11603
  let ranges = null;
11562
11604
  doc.onFinish(async () => {
@@ -11587,7 +11629,7 @@ function createPageLabels(doc) {
11587
11629
  }
11588
11630
  var STYLES, MAX_RANGES, MAX_PREFIX;
11589
11631
  var init_labels = __esm({
11590
- "packages/pdf/src/nav/labels.js"() {
11632
+ "src/nav/labels.js"() {
11591
11633
  init_serialize();
11592
11634
  init_trees();
11593
11635
  STYLES = ["D", "r", "R", "a", "A"];
@@ -11596,7 +11638,7 @@ var init_labels = __esm({
11596
11638
  }
11597
11639
  });
11598
11640
 
11599
- // packages/pdf/src/nav/viewer.js
11641
+ // src/nav/viewer.js
11600
11642
  function createViewer(doc) {
11601
11643
  const set2 = /* @__PURE__ */ new Map();
11602
11644
  let registered = false;
@@ -11649,7 +11691,7 @@ function createViewer(doc) {
11649
11691
  }
11650
11692
  var BOOLS, NAMES, PREF;
11651
11693
  var init_viewer = __esm({
11652
- "packages/pdf/src/nav/viewer.js"() {
11694
+ "src/nav/viewer.js"() {
11653
11695
  init_dest();
11654
11696
  BOOLS = { hideToolbar: "HideToolbar", hideMenubar: "HideMenubar", hideWindowUI: "HideWindowUI", fitWindow: "FitWindow", centerWindow: "CenterWindow", displayDocTitle: "DisplayDocTitle", pickTrayByPDFSize: "PickTrayByPDFSize" };
11655
11697
  NAMES = {
@@ -11663,7 +11705,7 @@ var init_viewer = __esm({
11663
11705
  }
11664
11706
  });
11665
11707
 
11666
- // packages/pdf/src/standards/pdfa.js
11708
+ // src/standards/pdfa.js
11667
11709
  function addOutputIntent(doc, opt) {
11668
11710
  const custom = opt && typeof opt === "object" && opt.outputIntent != null ? parseIcc(opt.outputIntent, "pdfa.outputIntent") : null;
11669
11711
  if (custom && custom.n === 1) throw new TypeError("pdfa.outputIntent: an RGB or CMYK profile (not gray)");
@@ -11679,7 +11721,7 @@ function addOutputIntent(doc, opt) {
11679
11721
  }
11680
11722
  var SRGB, unbase64;
11681
11723
  var init_pdfa = __esm({
11682
- "packages/pdf/src/standards/pdfa.js"() {
11724
+ "src/standards/pdfa.js"() {
11683
11725
  init_icc();
11684
11726
  init_serialize();
11685
11727
  SRGB = "AAAC4GxjbXMCEAAAbW50clJHQiBYWVogB+IAAwAUAAkADgAdYWNzcE1TRlQAAAAAc2F3c2N0cmwAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1oYW5kk7I0qQ6wIoqY/Zqvo2eJmwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJZGVzYwAAAPAAAABfY3BydAAAAQwAAAAMd3RwdAAAARgAAAAUclhZWgAAASwAAAAUZ1hZWgAAAUAAAAAUYlhZWgAAAVQAAAAUclRSQwAAAWgAAAF4Z1RSQwAAAWgAAAF4YlRSQwAAAWgAAAF4ZGVzYwAAAAAAAAAFc1JHQgAAAAAAAAAAAAAAAHRleHQAAAAAQ0MwAFhZWiAAAAAAAADzVAABAAAAARbJWFlaIAAAAAAAAG+gAAA48gAAA49YWVogAAAAAAAAYpYAALeJAAAY2lhZWiAAAAAAAAAkoAAAD4UAALbEY3VydgAAAAAAAAC2AAAAHAA4AFQAcACMAKgAxADhAQABIgFGAW0BlQHBAfACIAJVAosCxAMBAz8DggPGBA4EWQSnBPkFTAWkBf4GXAa+ByEHigf0CGMI1QlJCcMKPwq/C0ILyQxUDOENdA4JDqIPQA/gEIURLRHaEooTPhP2FLIVcRY2Fv0XyhiZGW4aRhsiHAMc5x3QHr0friCkIZ4inCOfJKUlsSbAJ9Uo7SoKKyssUS18Lqov3jEWMlIzlDTZNiQ3czjGOiA7fDzfPkU/sEEhQpZEEEWPRxJIm0ooS7tNUU7uUI9SNVPgVZBXRVkAWr5chF5MYBth72PHZaZniWlxa19tUW9KcUZzSnVRd155cXuIfaZ/yIHwhB6GUIiJisWNCY9RkZ+T85ZLmKubDp14n+eiW6TWp1ap26xnrvexj7Qqtsy5dLwhvtXBjcRMxxDJ2syrz3/SXNU92CTbEt4E4P7j/OcB6gztHPA081D2c/mb/Mr//w==";
@@ -11691,7 +11733,7 @@ var init_pdfa = __esm({
11691
11733
  }
11692
11734
  });
11693
11735
 
11694
- // packages/pdf/src/standards/files.js
11736
+ // src/standards/files.js
11695
11737
  function createFiles(doc, when) {
11696
11738
  const tree = /* @__PURE__ */ new Map();
11697
11739
  const af = [];
@@ -11737,7 +11779,7 @@ function createFiles(doc, when) {
11737
11779
  }
11738
11780
  var RELATIONSHIPS, MAX_FILE2, MAX_FILES, MIME;
11739
11781
  var init_files = __esm({
11740
- "packages/pdf/src/standards/files.js"() {
11782
+ "src/standards/files.js"() {
11741
11783
  init_serialize();
11742
11784
  init_filename();
11743
11785
  init_md5();
@@ -11750,7 +11792,7 @@ var init_files = __esm({
11750
11792
  }
11751
11793
  });
11752
11794
 
11753
- // packages/pdf/src/standards/facturx.js
11795
+ // src/standards/facturx.js
11754
11796
  function readInvoice(b) {
11755
11797
  if (b.length > MAX_XML) throw new RangeError(`pdf.facturX: the XML is ${b.length} bytes, over ${MAX_XML >> 20} MB`);
11756
11798
  let s;
@@ -11831,7 +11873,7 @@ function createFacturX(doc, attach) {
11831
11873
  }
11832
11874
  var MAX_XML, PROFILES, FX_NS;
11833
11875
  var init_facturx = __esm({
11834
- "packages/pdf/src/standards/facturx.js"() {
11876
+ "src/standards/facturx.js"() {
11835
11877
  MAX_XML = 10 << 20;
11836
11878
  PROFILES = /** @type {Record<string, [string, 'Data' | 'Alternative']>} */
11837
11879
  {
@@ -11846,7 +11888,7 @@ var init_facturx = __esm({
11846
11888
  }
11847
11889
  });
11848
11890
 
11849
- // packages/pdf/src/standards/boxes.js
11891
+ // src/standards/boxes.js
11850
11892
  function pageBoxes(page, o) {
11851
11893
  const W = page.width, H = page.height, who = "addPage";
11852
11894
  const got = {};
@@ -11884,7 +11926,7 @@ function pageBoxes(page, o) {
11884
11926
  }
11885
11927
  var BOXES, EPS;
11886
11928
  var init_boxes = __esm({
11887
- "packages/pdf/src/standards/boxes.js"() {
11929
+ "src/standards/boxes.js"() {
11888
11930
  init_serialize();
11889
11931
  init_level();
11890
11932
  BOXES = /** @type {const} */
@@ -11893,7 +11935,7 @@ var init_boxes = __esm({
11893
11935
  }
11894
11936
  });
11895
11937
 
11896
- // packages/pdf/src/forms/draw.js
11938
+ // src/forms/draw.js
11897
11939
  function frame(ap, w, h, f, bg = f.bg) {
11898
11940
  if (bg != null) ap.fill(ap.path().rect(0, 0, w, h), { fill: bg });
11899
11941
  if (f.bw > 0) ap.stroke(ap.path().rect(f.bw / 2, f.bw / 2, w - f.bw, h - f.bw), { stroke: f.bc, width: f.bw });
@@ -12019,7 +12061,7 @@ function buttonFace(ap, w, h, f, bg, t, label, icon) {
12019
12061
  }
12020
12062
  var MARKS, PLAIN2, AUTO_MAX, AUTO_MIN, widthOf2;
12021
12063
  var init_draw2 = __esm({
12022
- "packages/pdf/src/forms/draw.js"() {
12064
+ "src/forms/draw.js"() {
12023
12065
  init_content();
12024
12066
  init_text();
12025
12067
  init_runs();
@@ -12035,7 +12077,7 @@ var init_draw2 = __esm({
12035
12077
  }
12036
12078
  });
12037
12079
 
12038
- // packages/pdf/src/forms/form.js
12080
+ // src/forms/form.js
12039
12081
  function keys(o, allowed, who) {
12040
12082
  if (o == null || typeof o !== "object") throw new TypeError(`${who}: options are an object`);
12041
12083
  for (const k of Object.keys(o)) {
@@ -12362,13 +12404,13 @@ function createForm(doc, opt = {}) {
12362
12404
  if (!Array.isArray(list) || list.length > MAX_OPTIONS) throw new RangeError(`${who}: options is an array of at most ${MAX_OPTIONS} options`);
12363
12405
  const P = placeOf(o, who), L = lookOf(o, who, { border: 1 }), tip = tipOf(o, who);
12364
12406
  const { t, da } = textOf(P.page, o, who), q = qOf(o.align, who);
12365
- let chars2 = 0;
12407
+ let chars3 = 0;
12366
12408
  const index = /* @__PURE__ */ new Map();
12367
12409
  const opts = list.map((it, i2) => {
12368
12410
  const pair = Array.isArray(it) ? it : [it, it];
12369
12411
  if (pair.length !== 2) throw new TypeError(`${who}: an option is a string or [export, display]`);
12370
12412
  const [ex, dp] = pair.map((v) => str2(v, "an option", MAX_TOOLTIP, who));
12371
- if ((chars2 += ex.length + dp.length) > MAX_OPTION_CHARS) throw new RangeError(`${who}: the options have more than ${MAX_OPTION_CHARS} characters in all`);
12413
+ if ((chars3 += ex.length + dp.length) > MAX_OPTION_CHARS) throw new RangeError(`${who}: the options have more than ${MAX_OPTION_CHARS} characters in all`);
12372
12414
  if (index.has(ex)) throw new TypeError(`${who}: two options have the export value ${JSON.stringify(ex.slice(0, 80))}`);
12373
12415
  index.set(ex, i2);
12374
12416
  return { ex, dp };
@@ -12419,7 +12461,7 @@ function createForm(doc, opt = {}) {
12419
12461
  }
12420
12462
  var MAX_FIELDS, MAX_BUTTONS, MAX_OPTIONS, MAX_OPTION_CHARS, MAX_WIDGETS, MAX_VALUE, MAX_NAME, MAX_DEPTH3, MAX_TOOLTIP, MAX_COMB, NAMED2, ACTIVE2, FF, BOX, LOOK, TEXT, BAD_CHAR, hexAscii;
12421
12463
  var init_form = __esm({
12422
- "packages/pdf/src/forms/form.js"() {
12464
+ "src/forms/form.js"() {
12423
12465
  init_serialize();
12424
12466
  init_brand();
12425
12467
  init_annot();
@@ -12467,7 +12509,7 @@ var init_form = __esm({
12467
12509
  }
12468
12510
  });
12469
12511
 
12470
- // packages/pdf/src/security/crypto.js
12512
+ // src/security/crypto.js
12471
12513
  function concat(parts) {
12472
12514
  let n = 0;
12473
12515
  for (const p of parts) n += p.length;
@@ -12528,7 +12570,7 @@ function aesCbcDecryptSync(key, iv, data, strip = true) {
12528
12570
  }
12529
12571
  var NODE, WEB, random, HASHES, nodeName, hex, unhex;
12530
12572
  var init_crypto = __esm({
12531
- "packages/pdf/src/security/crypto.js"() {
12573
+ "src/security/crypto.js"() {
12532
12574
  init_md5();
12533
12575
  NODE = /** @type {any} */
12534
12576
  globalThis.process?.getBuiltinModule?.("node:crypto");
@@ -12550,7 +12592,7 @@ var init_crypto = __esm({
12550
12592
  }
12551
12593
  });
12552
12594
 
12553
- // packages/pdf/src/security/encrypt.js
12595
+ // src/security/encrypt.js
12554
12596
  function permBits(p) {
12555
12597
  let P = 4294963392;
12556
12598
  for (const [k, bit] of Object.entries(PERMS)) if (p[k]) P |= 1 << bit - 1;
@@ -12743,7 +12785,7 @@ function encryptor(opt, doc) {
12743
12785
  }
12744
12786
  var MAX_PASSWORD, PERMS, PAD, UTF84;
12745
12787
  var init_encrypt = __esm({
12746
- "packages/pdf/src/security/encrypt.js"() {
12788
+ "src/security/encrypt.js"() {
12747
12789
  init_crypto();
12748
12790
  MAX_PASSWORD = 1024;
12749
12791
  PERMS = { print: 3, modify: 4, copy: 5, annotate: 6, fillForms: 9, accessibility: 10, assemble: 11, printHighQuality: 12 };
@@ -12752,7 +12794,7 @@ var init_encrypt = __esm({
12752
12794
  }
12753
12795
  });
12754
12796
 
12755
- // packages/pdf/src/security/der.js
12797
+ // src/security/der.js
12756
12798
  function oid(s) {
12757
12799
  const a = s.split(".").map(Number), out = [40 * a[0] + a[1]];
12758
12800
  for (const v of a.slice(2)) {
@@ -12798,7 +12840,7 @@ function kids(b, v) {
12798
12840
  }
12799
12841
  var lenBytes, tlv, seq, set, ctx, octets, NULL, int;
12800
12842
  var init_der = __esm({
12801
- "packages/pdf/src/security/der.js"() {
12843
+ "src/security/der.js"() {
12802
12844
  init_crypto();
12803
12845
  lenBytes = (n) => n < 128 ? [n] : n < 256 ? [129, n] : n < 65536 ? [130, n >> 8, n & 255] : n < 16777216 ? [131, n >> 16, n >> 8 & 255, n & 255] : [132, n >>> 24, n >> 16 & 255, n >> 8 & 255, n & 255];
12804
12846
  tlv = (tag3, ...parts) => {
@@ -12822,7 +12864,7 @@ var init_der = __esm({
12822
12864
  }
12823
12865
  });
12824
12866
 
12825
- // packages/pdf/src/security/cms.js
12867
+ // src/security/cms.js
12826
12868
  function readCerts(certs, who) {
12827
12869
  const list = Array.isArray(certs) ? certs : [certs];
12828
12870
  const out = [];
@@ -12925,7 +12967,7 @@ function nodeSigner(o) {
12925
12967
  }
12926
12968
  var NODE2, MAX_CERTS, MAX_CERT, MAX_SIGNATURE, MAX_TOKEN, DIGEST, RSA, ECDSA, SIGNED_DATA, DATA, attr, algId, eq;
12927
12969
  var init_cms = __esm({
12928
- "packages/pdf/src/security/cms.js"() {
12970
+ "src/security/cms.js"() {
12929
12971
  init_der();
12930
12972
  init_crypto();
12931
12973
  NODE2 = /** @type {any} */
@@ -12948,7 +12990,7 @@ var init_cms = __esm({
12948
12990
  }
12949
12991
  });
12950
12992
 
12951
- // packages/pdf/src/security/sign.js
12993
+ // src/security/sign.js
12952
12994
  function createSigning(doc, form, o) {
12953
12995
  let used = false;
12954
12996
  return function sign(field, opt) {
@@ -13013,7 +13055,7 @@ function createSigning(doc, form, o) {
13013
13055
  }
13014
13056
  var DEFAULT_RESERVE, MAX_RESERVE, TST_OID, has, KEYS;
13015
13057
  var init_sign = __esm({
13016
- "packages/pdf/src/security/sign.js"() {
13058
+ "src/security/sign.js"() {
13017
13059
  init_brand();
13018
13060
  init_serialize();
13019
13061
  init_sink();
@@ -13033,7 +13075,7 @@ var init_sign = __esm({
13033
13075
  }
13034
13076
  });
13035
13077
 
13036
- // packages/pdf/src/reader/budget.js
13078
+ // src/reader/budget.js
13037
13079
  function createBudget(o = {}) {
13038
13080
  const pos = (v, d, k) => {
13039
13081
  if (v == null) return d;
@@ -13094,7 +13136,7 @@ function createBudget(o = {}) {
13094
13136
  }
13095
13137
  var PdfReadError, fail, DEFAULTS;
13096
13138
  var init_budget = __esm({
13097
- "packages/pdf/src/reader/budget.js"() {
13139
+ "src/reader/budget.js"() {
13098
13140
  PdfReadError = class extends Error {
13099
13141
  /** @param {Code} code @param {string} message */
13100
13142
  constructor(code, message) {
@@ -13110,7 +13152,7 @@ var init_budget = __esm({
13110
13152
  }
13111
13153
  });
13112
13154
 
13113
- // packages/pdf/src/reader/lexer.js
13155
+ // src/reader/lexer.js
13114
13156
  function latin12(b) {
13115
13157
  if (b.length < 64) {
13116
13158
  let s2 = "";
@@ -13126,6 +13168,12 @@ function latin12(b) {
13126
13168
  for (let i2 = 0; i2 < b.length; i2 += 8192) s += String.fromCharCode(...b.subarray(i2, i2 + 8192));
13127
13169
  return s;
13128
13170
  }
13171
+ function word(b, i2, j) {
13172
+ if (j - i2 > 24) return latin12(b.subarray(i2, j));
13173
+ let s = "";
13174
+ for (let k = i2; k < j; k++) s += String.fromCharCode(b[k]);
13175
+ return s;
13176
+ }
13129
13177
  function parseValue(lx) {
13130
13178
  const stack = [];
13131
13179
  for (; ; ) {
@@ -13221,7 +13269,22 @@ function add(top, v) {
13221
13269
  }
13222
13270
  function indexOf(buf, needle, from, to = buf.length) {
13223
13271
  const n0 = needle.charCodeAt(0), L = needle.length;
13224
- outer: for (let i2 = Math.max(0, from); i2 + L <= to; i2++) {
13272
+ from = Math.max(0, from);
13273
+ to = Math.min(to, buf.length);
13274
+ if (to - from > 64) {
13275
+ if (NodeBuffer) {
13276
+ let v = VIEWS.get(buf);
13277
+ if (!v) VIEWS.set(buf, v = NodeBuffer.from(buf.buffer, buf.byteOffset, buf.length));
13278
+ return (to === v.length ? v : v.subarray(0, to)).indexOf(needle, from, "latin1");
13279
+ }
13280
+ for (let i2 = buf.indexOf(n0, from); i2 >= 0 && i2 + L <= to; i2 = buf.indexOf(n0, i2 + 1)) {
13281
+ let j = 1;
13282
+ while (j < L && buf[i2 + j] === needle.charCodeAt(j)) j++;
13283
+ if (j === L) return i2;
13284
+ }
13285
+ return -1;
13286
+ }
13287
+ outer: for (let i2 = from; i2 + L <= to; i2++) {
13225
13288
  if (buf[i2] !== n0) continue;
13226
13289
  for (let j = 1; j < L; j++) if (buf[i2 + j] !== needle.charCodeAt(j)) continue outer;
13227
13290
  return i2;
@@ -13236,9 +13299,9 @@ function lastIndexOf(buf, needle, to, span = to) {
13236
13299
  }
13237
13300
  return -1;
13238
13301
  }
13239
- var MAX_DEPTH4, MAX_ITEMS, Ref, PdfString, PdfStream, Op, CLASS, T, HEX, Lexer, parseValueEnd;
13302
+ var MAX_DEPTH4, MAX_ITEMS, Ref, PdfString, PdfStream, Op, CLASS, T, HEX, Lexer, parseValueEnd, NodeBuffer, VIEWS;
13240
13303
  var init_lexer = __esm({
13241
- "packages/pdf/src/reader/lexer.js"() {
13304
+ "src/reader/lexer.js"() {
13242
13305
  init_budget();
13243
13306
  MAX_DEPTH4 = 256;
13244
13307
  MAX_ITEMS = 4e6;
@@ -13348,19 +13411,25 @@ var init_lexer = __esm({
13348
13411
  while (j < e && CLASS[b[j]] === 0) j++;
13349
13412
  this.pos = j;
13350
13413
  if (c >= 48 && c <= 57 || c === 43 || c === 45 || c === 46) {
13351
- let s2 = "";
13352
- for (let k = i2; k < j && k < i2 + 64; k++) s2 += String.fromCharCode(b[k]);
13353
- let v = Number(s2);
13414
+ if (j - i2 < 10) {
13415
+ let v2 = 0, k = i2;
13416
+ while (k < j && b[k] >= 48 && b[k] <= 57) v2 = v2 * 10 + b[k++] - 48;
13417
+ if (k === j && k > i2) {
13418
+ this.val = v2;
13419
+ return T.NUM;
13420
+ }
13421
+ }
13422
+ let s = "";
13423
+ for (let k = i2; k < j && k < i2 + 64; k++) s += String.fromCharCode(b[k]);
13424
+ let v = Number(s);
13354
13425
  if (!Number.isFinite(v)) {
13355
- const m = /^[+-]?(\d+\.?\d*|\.\d+)/.exec(s2.replace(/^([+-])[+-]+/, "$1"));
13426
+ const m = /^[+-]?(\d+\.?\d*|\.\d+)/.exec(s.replace(/^([+-])[+-]+/, "$1"));
13356
13427
  v = m ? Number(m[0]) : 0;
13357
13428
  }
13358
13429
  this.val = Number.isFinite(v) ? v : 0;
13359
13430
  return T.NUM;
13360
13431
  }
13361
- let s = "";
13362
- for (let k = i2; k < j && k < i2 + 128; k++) s += String.fromCharCode(b[k]);
13363
- this.val = s;
13432
+ this.val = j - i2 <= 128 ? word(b, i2, j) : word(b, i2, i2 + 128);
13364
13433
  return T.KW;
13365
13434
  }
13366
13435
  /** @param {number} i after "(" */
@@ -13401,7 +13470,7 @@ var init_lexer = __esm({
13401
13470
  }
13402
13471
  this.budget.tick(1 + (n >> 10));
13403
13472
  this.pos = i2;
13404
- this.val = new PdfString(out.slice(0, n), false);
13473
+ this.val = new PdfString(n === out.length ? out : out.slice(0, n), false);
13405
13474
  return T.STR;
13406
13475
  }
13407
13476
  /** @param {number} i after "<" */
@@ -13423,14 +13492,21 @@ var init_lexer = __esm({
13423
13492
  if (hi >= 0) out[n++] = hi << 4;
13424
13493
  this.budget.tick(1 + (n >> 10));
13425
13494
  this.pos = j < e ? j + 1 : j;
13426
- this.val = new PdfString(out.slice(0, n), true);
13495
+ this.val = new PdfString(n === out.length ? out : out.slice(0, n), true);
13427
13496
  return T.STR;
13428
13497
  }
13429
13498
  /** @param {number} i after "/" */
13430
13499
  name(i2) {
13431
13500
  const b = this.buf, e = this.end;
13432
- let s = "";
13433
13501
  let j = i2;
13502
+ while (j < e && CLASS[b[j]] === 0 && b[j] !== 35 && j - i2 < 4096) j++;
13503
+ if (j - i2 < 4096 && (j >= e || b[j] !== 35)) {
13504
+ this.pos = j;
13505
+ this.val = word(b, i2, j);
13506
+ return T.NAME;
13507
+ }
13508
+ let s = "";
13509
+ j = i2;
13434
13510
  while (j < e && CLASS[b[j]] === 0 && j - i2 < 4096) {
13435
13511
  if (b[j] === 35 && j + 2 < e && HEX[b[j + 1]] >= 0 && HEX[b[j + 2]] >= 0) {
13436
13512
  s += String.fromCharCode(HEX[b[j + 1]] << 4 | HEX[b[j + 2]]);
@@ -13446,10 +13522,14 @@ var init_lexer = __esm({
13446
13522
  }
13447
13523
  };
13448
13524
  parseValueEnd = () => void 0;
13525
+ NodeBuffer = /** @type {any} */
13526
+ globalThis.Buffer;
13527
+ VIEWS = /** @type {WeakMap<Uint8Array, any>} */
13528
+ /* @__PURE__ */ new WeakMap();
13449
13529
  }
13450
13530
  });
13451
13531
 
13452
- // packages/pdf/src/reader/filters.js
13532
+ // src/reader/filters.js
13453
13533
  function sinkOf(budget) {
13454
13534
  const parts = [];
13455
13535
  let n = 0;
@@ -13705,7 +13785,7 @@ function decode(data, filters, parms, budget, resolve2) {
13705
13785
  }
13706
13786
  var PASS, CHUNK2, MAX_FILTERS, num2, clamp;
13707
13787
  var init_filters = __esm({
13708
- "packages/pdf/src/reader/filters.js"() {
13788
+ "src/reader/filters.js"() {
13709
13789
  init_browser();
13710
13790
  init_budget();
13711
13791
  PASS = /* @__PURE__ */ new Set(["DCTDecode", "DCT", "JPXDecode", "JBIG2Decode", "CCITTFaxDecode", "CCF"]);
@@ -13716,7 +13796,7 @@ var init_filters = __esm({
13716
13796
  }
13717
13797
  });
13718
13798
 
13719
- // packages/pdf/src/reader/crypt.js
13799
+ // src/reader/crypt.js
13720
13800
  function pad322(pw) {
13721
13801
  const b = [...pw].every((c) => (
13722
13802
  /** @type {number} */
@@ -13851,7 +13931,7 @@ async function openSecurity(E, id0, password, resolve2) {
13851
13931
  }
13852
13932
  var PERMS2, bytesOf, le32, eq2;
13853
13933
  var init_crypt = __esm({
13854
- "packages/pdf/src/reader/crypt.js"() {
13934
+ "src/reader/crypt.js"() {
13855
13935
  init_encrypt();
13856
13936
  init_crypto();
13857
13937
  init_lexer();
@@ -13867,7 +13947,7 @@ var init_crypt = __esm({
13867
13947
  }
13868
13948
  });
13869
13949
 
13870
- // packages/pdf/src/reader/source.js
13950
+ // src/reader/source.js
13871
13951
  async function openSource(bytes, budget, o = {}) {
13872
13952
  const size = bytes.length;
13873
13953
  let xref = /* @__PURE__ */ new Map();
@@ -14061,11 +14141,11 @@ async function openSource(bytes, budget, o = {}) {
14061
14141
  if (loading.has(n)) return null;
14062
14142
  loading.add(n);
14063
14143
  try {
14064
- let v = load(n);
14144
+ let v = load2(n);
14065
14145
  if (v === void 0 && !recovered) {
14066
14146
  recover();
14067
14147
  recoverDeep();
14068
- v = load(n);
14148
+ v = load2(n);
14069
14149
  }
14070
14150
  v ??= null;
14071
14151
  cache.set(n, v);
@@ -14074,7 +14154,7 @@ async function openSource(bytes, budget, o = {}) {
14074
14154
  loading.delete(n);
14075
14155
  }
14076
14156
  }
14077
- function load(n) {
14157
+ function load2(n) {
14078
14158
  const e = xref.get(n);
14079
14159
  if (e === void 0) return null;
14080
14160
  const [t, a, b] = unpack(e);
@@ -14323,7 +14403,7 @@ async function openSource(bytes, budget, o = {}) {
14323
14403
  )[0] !== 1) continue;
14324
14404
  let v;
14325
14405
  try {
14326
- v = load(n);
14406
+ v = load2(n);
14327
14407
  } catch (e) {
14328
14408
  if (e instanceof PdfReadError && (e.code === "E_TIMEOUT" || e.code === "E_ABORTED" || e.code === "E_BUDGET")) throw e;
14329
14409
  continue;
@@ -14492,12 +14572,12 @@ async function openSource(bytes, budget, o = {}) {
14492
14572
  return r.end;
14493
14573
  }
14494
14574
  const lx = new Lexer(bytes, budget);
14495
- let last = [];
14575
+ let int1 = false, int2 = false, start1 = -1, start2 = -1, seen = 0;
14496
14576
  for (; ; ) {
14497
14577
  const k = lx.next();
14498
14578
  if (k === T.EOF) break;
14499
- if (k === T.KW && lx.val === "obj" && last.length === 2 && last.every((t) => t.k === T.NUM && Number.isInteger(t.v) && t.v >= 0)) {
14500
- const off = last[0].start;
14579
+ if (k === T.KW && lx.val === "obj" && seen >= 2 && int1 && int2) {
14580
+ const off = start1;
14501
14581
  const end = yield* read3(off);
14502
14582
  if (end === false) unreadable(`The object at byte ${off} cannot be read`);
14503
14583
  lx.pos = Math.max(
@@ -14505,11 +14585,15 @@ async function openSource(bytes, budget, o = {}) {
14505
14585
  /** @type {number} */
14506
14586
  end
14507
14587
  );
14508
- last = [];
14588
+ seen = 0;
14589
+ int1 = int2 = false;
14509
14590
  continue;
14510
14591
  }
14511
- last.push({ k, v: lx.val, start: lx.start });
14512
- if (last.length > 2) last.shift();
14592
+ int1 = int2;
14593
+ start1 = start2;
14594
+ int2 = k === T.NUM && Number.isInteger(lx.val) && lx.val >= 0;
14595
+ start2 = lx.start;
14596
+ seen++;
14513
14597
  }
14514
14598
  const inStream = inRegion(regions, budget);
14515
14599
  const hits = scanObjects().sort((x2, y) => x2[2] - y[2]);
@@ -14580,7 +14664,7 @@ function inRegion(regions, budget) {
14580
14664
  }
14581
14665
  var MAX_SECTIONS, MAX_RESOLVE, MAX_OBJSTM_N, OBJSTM_CACHE, OBJSTM_BYTES, CACHE_N, P48, P16, pack, unpack;
14582
14666
  var init_source = __esm({
14583
- "packages/pdf/src/reader/source.js"() {
14667
+ "src/reader/source.js"() {
14584
14668
  init_lexer();
14585
14669
  init_filters();
14586
14670
  init_budget();
@@ -14598,19 +14682,31 @@ var init_source = __esm({
14598
14682
  }
14599
14683
  });
14600
14684
 
14601
- // packages/pdf/src/reader/text.js
14685
+ // src/reader/text.js
14602
14686
  function decodeText(v) {
14603
14687
  if (!(v instanceof PdfString)) return typeof v === "string" ? v : v == null ? "" : String(v);
14604
14688
  const b = v.bytes;
14605
14689
  if (b.length >= 2 && b[0] === 254 && b[1] === 255) {
14606
- let s2 = "";
14607
- for (let i2 = 2; i2 + 1 < b.length; i2 += 2) s2 += String.fromCharCode(b[i2] << 8 | b[i2 + 1]);
14608
- return s2;
14690
+ const u2 = new Uint16Array(b.length - 2 >> 1);
14691
+ for (let i3 = 0; i3 < u2.length; i3++) u2[i3] = b[2 + 2 * i3] << 8 | b[3 + 2 * i3];
14692
+ return chars2(u2);
14609
14693
  }
14610
14694
  if (b.length >= 3 && b[0] === 239 && b[1] === 187 && b[2] === 191) return new TextDecoder().decode(b.subarray(3));
14611
- let s = "";
14612
- for (const x2 of b) s += String.fromCharCode(DOC.get(x2) ?? x2);
14613
- return s;
14695
+ let i2 = 0;
14696
+ while (i2 < b.length && DOC_T[b[i2]] === b[i2]) i2++;
14697
+ if (i2 === b.length) return latin12(b);
14698
+ const u = new Uint16Array(b.length);
14699
+ for (i2 = 0; i2 < b.length; i2++) u[i2] = DOC_T[b[i2]];
14700
+ return chars2(u);
14701
+ }
14702
+ function chars2(u) {
14703
+ const parts = [];
14704
+ for (let i2 = 0; i2 < u.length; i2 += 8192) parts.push(String.fromCharCode.apply(
14705
+ null,
14706
+ /** @type {any} */
14707
+ u.subarray(i2, i2 + 8192)
14708
+ ));
14709
+ return parts.join("");
14614
14710
  }
14615
14711
  function glyphText(n) {
14616
14712
  if (Object.hasOwn(NAMES2, n)) return NAMES2[n];
@@ -14648,11 +14744,11 @@ function parseCMap(data, budget, held = { n: 0 }) {
14648
14744
  for (let i2 = 0; i2 + 1 < b.length; i2 += 2) u.push(b[i2] << 8 | b[i2 + 1]);
14649
14745
  return String.fromCharCode(...u);
14650
14746
  };
14651
- let chars2 = 0;
14747
+ let chars3 = 0;
14652
14748
  const set2 = (c, t) => {
14653
- chars2 += t.length;
14749
+ chars3 += t.length;
14654
14750
  held.n += 8 + t.length;
14655
- if (chars2 > MAX_CMAP_CHARS) fail("E_BUDGET", `A CMap maps codes to more than ${MAX_CMAP_CHARS.toLocaleString("en")} characters`);
14751
+ if (chars3 > MAX_CMAP_CHARS) fail("E_BUDGET", `A CMap maps codes to more than ${MAX_CMAP_CHARS.toLocaleString("en")} characters`);
14656
14752
  if (held.n > MAX_HELD) fail("E_BUDGET", `A page's fonts hold more than ${MAX_HELD.toLocaleString("en")} units of code mappings (an entry 8, a character 1)`);
14657
14753
  map.set(c, t);
14658
14754
  };
@@ -14897,6 +14993,7 @@ function contentBytes(src, contents) {
14897
14993
  ) throw e;
14898
14994
  }
14899
14995
  }
14996
+ if (parts.length === 1) return parts[0];
14900
14997
  let n = parts.length;
14901
14998
  for (const p of parts) n += p.length;
14902
14999
  const out = new Uint8Array(n);
@@ -14970,23 +15067,25 @@ function pageText(src, pageDict, resources, raw = false) {
14970
15067
  const PX = [], PY = [], PE = [], PS = [], PG = [];
14971
15068
  const PA = [], PAE = [], PC = [], PD = [];
14972
15069
  const PT = [];
14973
- let chars2 = 0;
15070
+ let chars3 = 0;
14974
15071
  let moved = true;
14975
15072
  const fonts = /* @__PURE__ */ new Map();
14976
- const add2 = (x2, y, end, size, text3, dir) => {
15073
+ const add2 = (x2, y, end, size, text3, d0, d1, d2, d3) => {
14977
15074
  if (PT.length >= budget.maxTextItems) throw new PdfReadError("E_BUDGET", `A page has more than ${budget.maxTextItems.toLocaleString("en")} pieces of text (budget.maxTextItems)`);
14978
- if ((chars2 += text3.length) > MAX_TEXT_CHARS) throw new PdfReadError("E_BUDGET", `A page makes more than ${MAX_TEXT_CHARS.toLocaleString("en")} characters of text`);
14979
- PX.push(x2);
14980
- PY.push(y);
14981
- PE.push(end);
15075
+ if ((chars3 += text3.length) > MAX_TEXT_CHARS) throw new PdfReadError("E_BUDGET", `A page makes more than ${MAX_TEXT_CHARS.toLocaleString("en")} characters of text`);
15076
+ if (raw) {
15077
+ PX.push(x2);
15078
+ PY.push(y);
15079
+ PE.push(end);
15080
+ }
14982
15081
  PS.push(size);
14983
15082
  PT.push(text3);
14984
15083
  PG.push(moved ? 2 : 0);
14985
15084
  moved = false;
14986
- PA.push(dir[0]);
14987
- PAE.push(dir[1]);
14988
- PC.push(dir[2]);
14989
- PD.push(dir[3]);
15085
+ PA.push(d0);
15086
+ PAE.push(d1);
15087
+ PC.push(d2);
15088
+ PD.push(d3);
14990
15089
  };
14991
15090
  const held = (
14992
15091
  /** @type {Held} */
@@ -15021,25 +15120,26 @@ function pageText(src, pageDict, resources, raw = false) {
15021
15120
  let k = 0;
15022
15121
  ts.font.decode(b, (text3, w, space) => {
15023
15122
  if ((++k & 1023) === 0) budget.tick(1024);
15024
- const M0 = mul2([ts.size * ts.Th, 0, 0, ts.size, 0, ts.Ts], mul2(Tm, ctm));
15025
- const x2 = M0[4], y = M0[5], size = Math.hypot(M0[2], M0[3]) || ts.size;
15123
+ const sx = ts.size * ts.Th, sy = ts.size, rise = ts.Ts;
15124
+ const M0 = mul6(sx, 0, 0, sy, 0, rise, mul2(Tm, ctm, C0), G0);
15125
+ const x2 = M0[4], y = M0[5], size = (M0[2] === 0 ? Math.abs(M0[3]) : Math.hypot(M0[2], M0[3])) || ts.size;
15026
15126
  const tx = (w / 1e3 * ts.size + ts.Tc + (space ? ts.Tw : 0)) * ts.Th;
15027
- Tm = mul2([1, 0, 0, 1, tx, 0], Tm);
15028
- const M1 = mul2([ts.size * ts.Th, 0, 0, ts.size, 0, ts.Ts], mul2(Tm, ctm)), end = M1[4];
15029
- const L = Math.hypot(M0[0], M0[1]), ux = L ? M0[0] / L : 1, uy = L ? M0[1] / L : 0;
15030
- const dir = [x2 * ux + y * uy, M1[4] * ux + M1[5] * uy, y * ux - x2 * uy, Math.round(Math.atan2(uy, ux) * 180 / Math.PI)];
15127
+ Tm = mul6(1, 0, 0, 1, tx, 0, Tm);
15128
+ const M1 = mul6(sx, 0, 0, sy, 0, rise, mul2(Tm, ctm, C0), G1), end = M1[4];
15129
+ const L = M0[1] === 0 ? Math.abs(M0[0]) : Math.hypot(M0[0], M0[1]), ux = L ? M0[0] / L : 1, uy = L ? M0[1] / L : 0;
15130
+ const d0 = x2 * ux + y * uy, d1 = M1[4] * ux + M1[5] * uy, d2 = y * ux - x2 * uy, d3 = uy === 0 && ux > 0 ? uy : Math.round(Math.atan2(uy, ux) * 180 / Math.PI);
15031
15131
  if (actual) {
15032
- if (!actual.seen) Object.assign(actual, { x: x2, y, size, dir, seen: true });
15132
+ if (!actual.seen) Object.assign(actual, { x: x2, y, size, dir: [d0, d1, d2, d3], seen: true });
15033
15133
  actual.end = end;
15034
- actual.dir[1] = dir[1];
15134
+ actual.dir[1] = d1;
15035
15135
  return;
15036
15136
  }
15037
15137
  const n = PT.length - 1;
15038
15138
  if (text3.includes("⁠")) text3 = text3.replaceAll("⁠", "");
15039
- if (text3) add2(x2, y, end, size, text3, dir);
15040
- else if (n >= 0 && PAE[n] < dir[1] && PD[n] === dir[3] && Math.abs(PC[n] - dir[2]) < 0.01) {
15041
- PE[n] = end;
15042
- PAE[n] = dir[1];
15139
+ if (text3) add2(x2, y, end, size, text3, d0, d1, d2, d3);
15140
+ else if (n >= 0 && PAE[n] < d1 && PD[n] === d3 && Math.abs(PC[n] - d2) < 0.01) {
15141
+ if (raw) PE[n] = end;
15142
+ PAE[n] = d1;
15043
15143
  }
15044
15144
  });
15045
15145
  budget.tick(1 + (k & 1023));
@@ -15104,7 +15204,7 @@ function pageText(src, pageDict, resources, raw = false) {
15104
15204
  if (typeof a[1] === "number") ts = { ...ts, TL: -a[1] };
15105
15205
  // falls through
15106
15206
  case "Td":
15107
- if (typeof a[0] === "number" && typeof a[1] === "number") Tm = Tlm = mul2([1, 0, 0, 1, a[0], a[1]], Tlm);
15207
+ if (typeof a[0] === "number" && typeof a[1] === "number") Tm = Tlm = mul6(1, 0, 0, 1, a[0], a[1], Tlm);
15108
15208
  moved = true;
15109
15209
  break;
15110
15210
  case "Tm": {
@@ -15114,7 +15214,7 @@ function pageText(src, pageDict, resources, raw = false) {
15114
15214
  break;
15115
15215
  }
15116
15216
  case "T*":
15117
- Tm = Tlm = mul2([1, 0, 0, 1, 0, -ts.TL], Tlm);
15217
+ Tm = Tlm = mul6(1, 0, 0, 1, 0, -ts.TL, Tlm);
15118
15218
  moved = true;
15119
15219
  break;
15120
15220
  case "Tj":
@@ -15122,13 +15222,13 @@ function pageText(src, pageDict, resources, raw = false) {
15122
15222
  break;
15123
15223
  case "'":
15124
15224
  moved = true;
15125
- Tm = Tlm = mul2([1, 0, 0, 1, 0, -ts.TL], Tlm);
15225
+ Tm = Tlm = mul6(1, 0, 0, 1, 0, -ts.TL, Tlm);
15126
15226
  if (a[0] instanceof PdfString) show(a[0].bytes, f.ctm);
15127
15227
  break;
15128
15228
  case '"':
15129
15229
  if (typeof a[0] === "number") ts = { ...ts, Tw: a[0] };
15130
15230
  if (typeof a[1] === "number") ts = { ...ts, Tc: a[1] };
15131
- Tm = Tlm = mul2([1, 0, 0, 1, 0, -ts.TL], Tlm);
15231
+ Tm = Tlm = mul6(1, 0, 0, 1, 0, -ts.TL, Tlm);
15132
15232
  moved = true;
15133
15233
  if (a[2] instanceof PdfString) show(a[2].bytes, f.ctm);
15134
15234
  break;
@@ -15136,7 +15236,7 @@ function pageText(src, pageDict, resources, raw = false) {
15136
15236
  if (Array.isArray(a[0])) for (const x2 of a[0]) {
15137
15237
  if (x2 instanceof PdfString) show(x2.bytes, f.ctm);
15138
15238
  else if (typeof x2 === "number") {
15139
- Tm = mul2([1, 0, 0, 1, -x2 / 1e3 * ts.size * ts.Th, 0], Tm);
15239
+ Tm = mul6(1, 0, 0, 1, -x2 / 1e3 * ts.size * ts.Th, 0, Tm);
15140
15240
  if (x2 < -180 && PT.length) PG[PT.length - 1] |= 1;
15141
15241
  }
15142
15242
  }
@@ -15165,7 +15265,7 @@ function pageText(src, pageDict, resources, raw = false) {
15165
15265
  const m = marks.pop();
15166
15266
  if (m && m === actual) {
15167
15267
  actual = null;
15168
- if (m.seen && m.at) add2(m.x, m.y, m.end, m.size, m.at, m.dir);
15268
+ if (m.seen && m.at) add2(m.x, m.y, m.end, m.size, m.at, m.dir[0], m.dir[1], m.dir[2], m.dir[3]);
15169
15269
  }
15170
15270
  break;
15171
15271
  }
@@ -15228,9 +15328,9 @@ function pageText(src, pageDict, resources, raw = false) {
15228
15328
  }
15229
15329
  return out.join("");
15230
15330
  }
15231
- var MAX_FORMS, MAX_CMAP, MAX_MARKS, MAX_ACTUAL, MAX_TEXT_CHARS, MAX_DST, MAX_CMAP_CHARS, MAX_HELD, MAX_W, MAX_DO, TEXT_TIMEOUT_MS, DOC, WIN, MAC_HIGH, BASE, STD_HIGH, NAMES2, ACCENT, own, STD_ALIAS, NONE, stops, MAX_CMAP_FONTS, mul2, ID, matrixOf, RTL2, STRONG_L, NUM, rev2;
15331
+ var MAX_FORMS, MAX_CMAP, MAX_MARKS, MAX_ACTUAL, MAX_TEXT_CHARS, MAX_DST, MAX_CMAP_CHARS, MAX_HELD, MAX_W, MAX_DO, TEXT_TIMEOUT_MS, DOC, DOC_T, WIN, WIN_T, MAC_HIGH, BASE, STD_HIGH, NAMES2, ACCENT, own, STD_ALIAS, NONE, stops, MAX_CMAP_FONTS, mul6, mul2, ID, matrixOf, C0, G0, G1, RTL2, STRONG_L, NUM, rev2;
15232
15332
  var init_text2 = __esm({
15233
- "packages/pdf/src/reader/text.js"() {
15333
+ "src/reader/text.js"() {
15234
15334
  init_lexer();
15235
15335
  init_standard_metrics();
15236
15336
  init_budget();
@@ -15288,15 +15388,20 @@ var init_text2 = __esm({
15288
15388
  [158, 382],
15289
15389
  [160, 8364]
15290
15390
  ]);
15391
+ DOC_T = new Uint16Array(256).map((_, c) => DOC.get(c) ?? c);
15291
15392
  WIN = /* @__PURE__ */ new Map();
15292
15393
  {
15293
15394
  const p = ENCODINGS.WinAnsi;
15294
15395
  for (let i2 = 0; i2 < p.length; i2 += 2) WIN.set(p[i2 + 1], p[i2]);
15295
15396
  WIN.set(173, 173);
15296
15397
  }
15398
+ WIN_T = new Int32Array(256).map((_, c) => WIN.get(c) ?? (c >= 32 && c < 127 ? c : -1));
15297
15399
  MAC_HIGH = "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ";
15298
15400
  BASE = {
15299
- WinAnsiEncoding: (c) => WIN.get(c) ?? (c >= 32 && c < 127 ? c : void 0),
15401
+ WinAnsiEncoding: (c) => {
15402
+ const u = WIN_T[c & 255];
15403
+ return c < 256 && u >= 0 ? u : WIN.get(c) ?? (c >= 32 && c < 127 ? c : void 0);
15404
+ },
15300
15405
  MacRomanEncoding: (c) => c >= 128 ? MAC_HIGH.codePointAt(c - 128) : c >= 32 && c < 127 ? c : void 0,
15301
15406
  StandardEncoding: (c) => c === 39 ? 8217 : c === 96 ? 8216 : c >= 32 && c < 127 ? c : STD_HIGH.get(c),
15302
15407
  PDFDocEncoding: (c) => DOC.get(c) ?? c
@@ -15447,16 +15552,22 @@ var init_text2 = __esm({
15447
15552
  NONE = "�";
15448
15553
  stops = (e) => e?.code === "E_TIMEOUT" || e?.code === "E_ABORTED" || e?.code === "E_BUDGET";
15449
15554
  MAX_CMAP_FONTS = 100;
15450
- mul2 = (A, B) => (
15451
- /** @type {M} */
15452
- [A[0] * B[0] + A[1] * B[2], A[0] * B[1] + A[1] * B[3], A[2] * B[0] + A[3] * B[2], A[2] * B[1] + A[3] * B[3], A[4] * B[0] + A[5] * B[2] + B[4], A[4] * B[1] + A[5] * B[3] + B[5]]
15453
- );
15454
- ID = /** @type {M} */
15455
- [1, 0, 0, 1, 0, 0];
15456
- matrixOf = (a) => a.length >= 6 && a.slice(0, 6).every((x2) => typeof x2 === "number" && Number.isFinite(x2)) ? (
15457
- /** @type {M} */
15458
- a.slice(0, 6)
15459
- ) : null;
15555
+ mul6 = (a0, a1, a2, a3, a4, a5, B, o = new Float64Array(6)) => {
15556
+ const b0 = B[0], b1 = B[1], b2 = B[2], b3 = B[3], b4 = B[4], b5 = B[5];
15557
+ o[0] = a0 * b0 + a1 * b2;
15558
+ o[1] = a0 * b1 + a1 * b3;
15559
+ o[2] = a2 * b0 + a3 * b2;
15560
+ o[3] = a2 * b1 + a3 * b3;
15561
+ o[4] = a4 * b0 + a5 * b2 + b4;
15562
+ o[5] = a4 * b1 + a5 * b3 + b5;
15563
+ return o;
15564
+ };
15565
+ mul2 = (A, B, o = new Float64Array(6)) => mul6(A[0], A[1], A[2], A[3], A[4], A[5], B, o);
15566
+ ID = Float64Array.of(1, 0, 0, 1, 0, 0);
15567
+ matrixOf = (a) => a.length >= 6 && a.slice(0, 6).every((x2) => typeof x2 === "number" && Number.isFinite(x2)) ? Float64Array.from(a.slice(0, 6)) : null;
15568
+ C0 = new Float64Array(6);
15569
+ G0 = new Float64Array(6);
15570
+ G1 = new Float64Array(6);
15460
15571
  RTL2 = /[\u0590-\u05ff\u0600-\u065f\u066a-\u06ef\u06fa-\u08ff\ufb1d-\ufdff\ufe70-\ufeff]/;
15461
15572
  STRONG_L = /[\p{L}]/u;
15462
15573
  NUM = /^[\p{Nd}.,٫٬]+$/u;
@@ -15464,7 +15575,7 @@ var init_text2 = __esm({
15464
15575
  }
15465
15576
  });
15466
15577
 
15467
- // packages/pdf/src/reader/policy.js
15578
+ // src/reader/policy.js
15468
15579
  function attributesOnly(a, R) {
15469
15580
  const one = (x2) => {
15470
15581
  const d = R(x2);
@@ -15576,7 +15687,7 @@ function utf16be(s) {
15576
15687
  }
15577
15688
  var KEEP_ACTIONS, NAMED_ACTIONS, ACTION_TYPES, KEEP_ANNOTS, ACTION_KEYS, DANGEROUS_KEYS, NAME_KEYS, isAction, isAnnot, STRUCT_TYPES, isFilespec, REWRITTEN_NAME, sameObject, refuseFile;
15578
15689
  var init_policy = __esm({
15579
- "packages/pdf/src/reader/policy.js"() {
15690
+ "src/reader/policy.js"() {
15580
15691
  init_lexer();
15581
15692
  init_links();
15582
15693
  init_filename();
@@ -15660,7 +15771,7 @@ var init_policy = __esm({
15660
15771
  }
15661
15772
  });
15662
15773
 
15663
- // packages/pdf/src/reader/copy.js
15774
+ // src/reader/copy.js
15664
15775
  function nameText(s) {
15665
15776
  let o = "/";
15666
15777
  for (let i2 = 0; i2 < s.length; i2++) {
@@ -15677,9 +15788,15 @@ function numText(v) {
15677
15788
  return Math.abs(v) < 1 ? v.toFixed(10).replace(/\.?0+$/, "") || "0" : v.toFixed(0);
15678
15789
  }
15679
15790
  function hexText(b) {
15680
- let s = "<";
15681
- for (const x2 of b) s += HEXD[x2 >> 4] + HEXD[x2 & 15];
15682
- return s + ">";
15791
+ if (NodeBuffer2 && b.length > 64) return `<${NodeBuffer2.from(b.buffer, b.byteOffset, b.length).toString("hex")}>`;
15792
+ const parts = ["<"];
15793
+ for (let i2 = 0; i2 < b.length; i2 += 4096) {
15794
+ let s = "";
15795
+ for (let k = i2; k < Math.min(b.length, i2 + 4096); k++) s += HEXD[b[k] >> 4] + HEXD[b[k] & 15];
15796
+ parts.push(s);
15797
+ }
15798
+ parts.push(">");
15799
+ return parts.join("");
15683
15800
  }
15684
15801
  function createCopier(t) {
15685
15802
  const maps = /* @__PURE__ */ new Map();
@@ -15829,27 +15946,34 @@ function createCopier(t) {
15829
15946
  const out = [];
15830
15947
  const stack = [v];
15831
15948
  const budget = owner.r.src.budget;
15949
+ const text3 = refText !== null && refText !== AUDIT;
15832
15950
  while (stack.length) {
15833
15951
  const x2 = stack.pop();
15834
15952
  budget.tick();
15835
15953
  if (x2 instanceof Raw) {
15836
- if (refText) out.push(x2.s);
15954
+ if (text3) out.push(x2.s);
15837
15955
  continue;
15838
15956
  }
15839
15957
  if (x2 instanceof Ref) {
15840
15958
  if (found) found.push([owner, x2.n]);
15841
- if (refText) out.push(refText(owner, x2));
15959
+ if (text3) out.push(
15960
+ /** @type {any} */
15961
+ refText(owner, x2)
15962
+ );
15842
15963
  continue;
15843
15964
  }
15844
15965
  if (x2 instanceof Foreign) {
15845
15966
  if (found) found.push([x2.owner, x2.ref.n]);
15846
- if (refText) out.push(refText(x2.owner, x2.ref));
15967
+ if (text3) out.push(
15968
+ /** @type {any} */
15969
+ refText(x2.owner, x2.ref)
15970
+ );
15847
15971
  continue;
15848
15972
  }
15849
15973
  if (Array.isArray(x2)) {
15850
- stack.push(CLOSE_A);
15974
+ if (text3) stack.push(CLOSE_A);
15851
15975
  for (let i2 = x2.length - 1; i2 >= 0; i2--) stack.push(x2[i2]);
15852
- stack.push(OPEN_A);
15976
+ if (text3) stack.push(OPEN_A);
15853
15977
  continue;
15854
15978
  }
15855
15979
  if (x2 instanceof Map) {
@@ -15859,7 +15983,7 @@ function createCopier(t) {
15859
15983
  if ("why" in r) {
15860
15984
  if (refText) {
15861
15985
  t.report(r.why);
15862
- out.push("null");
15986
+ if (text3) out.push("null");
15863
15987
  }
15864
15988
  continue;
15865
15989
  }
@@ -15871,16 +15995,18 @@ function createCopier(t) {
15871
15995
  }
15872
15996
  }
15873
15997
  }
15874
- stack.push(CLOSE_D);
15875
15998
  const es = entries(owner, x2);
15876
- for (let i2 = es.length - 1; i2 >= 0; i2--) {
15877
- stack.push(es[i2][1]);
15878
- stack.push(new Raw(nameText(es[i2][0])));
15879
- }
15880
- stack.push(OPEN_D);
15999
+ if (text3) {
16000
+ stack.push(CLOSE_D);
16001
+ for (let i2 = es.length - 1; i2 >= 0; i2--) {
16002
+ stack.push(es[i2][1]);
16003
+ stack.push(new Raw(nameText(es[i2][0])));
16004
+ }
16005
+ stack.push(OPEN_D);
16006
+ } else for (let i2 = es.length - 1; i2 >= 0; i2--) stack.push(es[i2][1]);
15881
16007
  continue;
15882
16008
  }
15883
- if (!refText) continue;
16009
+ if (!text3) continue;
15884
16010
  if (x2 instanceof PdfString) out.push(hexText(x2.bytes));
15885
16011
  else if (typeof x2 === "string") out.push(nameText(x2));
15886
16012
  else if (typeof x2 === "number") out.push(numText(x2));
@@ -16060,7 +16186,7 @@ function createCopier(t) {
16060
16186
  }
16061
16187
  auditing = treeOf(owner).nums.has(n);
16062
16188
  try {
16063
- walk(owner, v instanceof PdfStream ? v.dict : v, () => "null", null);
16189
+ walk(owner, v instanceof PdfStream ? v.dict : v, AUDIT, null);
16064
16190
  } finally {
16065
16191
  auditing = false;
16066
16192
  }
@@ -16072,9 +16198,9 @@ function createCopier(t) {
16072
16198
  }
16073
16199
  };
16074
16200
  }
16075
- var SHARE, GRAY, HEXD, Raw, Foreign, OPEN_A, CLOSE_A, OPEN_D, CLOSE_D;
16201
+ var SHARE, GRAY, HEXD, NodeBuffer2, Raw, Foreign, AUDIT, OPEN_A, CLOSE_A, OPEN_D, CLOSE_D;
16076
16202
  var init_copy = __esm({
16077
- "packages/pdf/src/reader/copy.js"() {
16203
+ "src/reader/copy.js"() {
16078
16204
  init_lexer();
16079
16205
  init_pdf();
16080
16206
  init_policy();
@@ -16083,6 +16209,8 @@ var init_copy = __esm({
16083
16209
  SHARE = /* @__PURE__ */ new Set(["Font", "FontDescriptor", "ExtGState", "Encoding", "Pattern", "Shading", "Halftone", "Function", "XObject", "Mask", "CMap", "OutputIntent", "Filespec", "EmbeddedFile"]);
16084
16210
  GRAY = -2;
16085
16211
  HEXD = "0123456789abcdef";
16212
+ NodeBuffer2 = /** @type {any} */
16213
+ globalThis.Buffer;
16086
16214
  Raw = class {
16087
16215
  /** @param {string} s */
16088
16216
  constructor(s) {
@@ -16096,6 +16224,7 @@ var init_copy = __esm({
16096
16224
  this.ref = ref;
16097
16225
  }
16098
16226
  };
16227
+ AUDIT = () => "null";
16099
16228
  OPEN_A = new Raw("[");
16100
16229
  CLOSE_A = new Raw("]");
16101
16230
  OPEN_D = new Raw("<<");
@@ -16103,7 +16232,7 @@ var init_copy = __esm({
16103
16232
  }
16104
16233
  });
16105
16234
 
16106
- // packages/pdf/src/reader/fill.js
16235
+ // src/reader/fill.js
16107
16236
  function utf162(s) {
16108
16237
  const b = new Uint8Array(2 + s.length * 2);
16109
16238
  b[0] = 254;
@@ -16271,7 +16400,7 @@ async function fillReplacements(self, o) {
16271
16400
  }
16272
16401
  var ALIAS;
16273
16402
  var init_fill = __esm({
16274
- "packages/pdf/src/reader/fill.js"() {
16403
+ "src/reader/fill.js"() {
16275
16404
  init_index();
16276
16405
  init_standard();
16277
16406
  init_lexer();
@@ -16283,7 +16412,7 @@ var init_fill = __esm({
16283
16412
  }
16284
16413
  });
16285
16414
 
16286
- // packages/pdf/src/reader/save.js
16415
+ // src/reader/save.js
16287
16416
  var save_exports = {};
16288
16417
  __export(save_exports, {
16289
16418
  MAX_OPEN: () => MAX_OPEN,
@@ -16386,6 +16515,13 @@ async function run(self, sink, o) {
16386
16515
  warn("the source's output intent profile was not usable; the bundled sRGB profile was written instead");
16387
16516
  }
16388
16517
  }
16518
+ const infoText = (k) => {
16519
+ const v = info[k];
16520
+ if (v == null) return void 0;
16521
+ if (v.length <= INFO_MAX) return v;
16522
+ warn(`the source's ${k} (${v.length.toLocaleString("en")} characters) was cut to ${INFO_MAX.toLocaleString("en")}`);
16523
+ return v.slice(0, INFO_MAX);
16524
+ };
16389
16525
  const pdf = (
16390
16526
  /** @type {any} */
16391
16527
  createPdf(sink, {
@@ -16394,10 +16530,12 @@ async function run(self, sink, o) {
16394
16530
  signal: o.signal,
16395
16531
  timeoutMs: o.timeoutMs,
16396
16532
  creationDate: created,
16397
- title: info.title ?? void 0,
16398
- author: info.author ?? void 0,
16399
- subject: info.subject ?? void 0,
16400
- keywords: info.keywords ?? void 0,
16533
+ metadata: !!(level || self.edits.xmp != null || self.xmp() != null),
16534
+ // an XMP packet only when the source had one or PDF/A needs one: a file split into pages is not a kilobyte of XMP each
16535
+ title: infoText("title"),
16536
+ author: infoText("author"),
16537
+ subject: infoText("subject"),
16538
+ keywords: infoText("keywords"),
16401
16539
  ...level ? { pdfa: { part: level.part, conformance: "b", ...intentOpt ? { outputIntent: intentOpt } : {} } } : {}
16402
16540
  })
16403
16541
  );
@@ -16708,9 +16846,9 @@ function sameBytes(a, b) {
16708
16846
  for (let i2 = 0; i2 < a.length; i2++) if (a[i2] !== b[i2]) return false;
16709
16847
  return true;
16710
16848
  }
16711
- var MAX_OPEN, KEYS2, OWN;
16849
+ var INFO_MAX, MAX_OPEN, KEYS2, OWN;
16712
16850
  var init_save = __esm({
16713
- "packages/pdf/src/reader/save.js"() {
16851
+ "src/reader/save.js"() {
16714
16852
  init_index();
16715
16853
  init_page();
16716
16854
  init_annot();
@@ -16722,13 +16860,14 @@ var init_save = __esm({
16722
16860
  init_pdf();
16723
16861
  init_text2();
16724
16862
  init_budget();
16863
+ INFO_MAX = 65536;
16725
16864
  MAX_OPEN = 256;
16726
16865
  KEYS2 = ["compress", "keepActiveContent", "encrypt", "pdfa", "creationDate", "signal", "timeoutMs", "keepStructure"];
16727
16866
  OWN = /* @__PURE__ */ new Set(["Type", "Parent", "Contents", "Resources", "Annots", "MediaBox", "CropBox", "Rotate", "B"]);
16728
16867
  }
16729
16868
  });
16730
16869
 
16731
- // packages/pdf/src/reader/active.js
16870
+ // src/reader/active.js
16732
16871
  function findActive(self, each) {
16733
16872
  const found = /* @__PURE__ */ new Map();
16734
16873
  const audit = createCopier({
@@ -16754,12 +16893,12 @@ function findActive(self, each) {
16754
16893
  return [...found].map(([what, count]) => ({ what, count }));
16755
16894
  }
16756
16895
  var init_active = __esm({
16757
- "packages/pdf/src/reader/active.js"() {
16896
+ "src/reader/active.js"() {
16758
16897
  init_copy();
16759
16898
  }
16760
16899
  });
16761
16900
 
16762
- // packages/pdf/src/reader/incremental.js
16901
+ // src/reader/incremental.js
16763
16902
  var incremental_exports = {};
16764
16903
  __export(incremental_exports, {
16765
16904
  MAX_WIDGET_SHARE: () => MAX_WIDGET_SHARE,
@@ -17263,7 +17402,7 @@ function checkSigned(self, sig, o, objects, who) {
17263
17402
  }
17264
17403
  var SIGN_KEYS, MAX_WIDGET_SHARE, TRANSFORMS, isSigDict;
17265
17404
  var init_incremental = __esm({
17266
- "packages/pdf/src/reader/incremental.js"() {
17405
+ "src/reader/incremental.js"() {
17267
17406
  init_lexer();
17268
17407
  init_copy();
17269
17408
  init_active();
@@ -17283,7 +17422,7 @@ var init_incremental = __esm({
17283
17422
  }
17284
17423
  });
17285
17424
 
17286
- // packages/pdf/src/reader/pdf.js
17425
+ // src/reader/pdf.js
17287
17426
  function internal(v, who) {
17288
17427
  const d = v !== null && typeof v === "object" ? inside2.get(v) : void 0;
17289
17428
  if (!d) throw new TypeError(`${who}: not a document from loadPdf`);
@@ -17990,7 +18129,7 @@ function checkValue(f, v) {
17990
18129
  }
17991
18130
  var MAX_PAGES, MAX_OUTLINE, MAX_FIELDS2, MAX_NAMES2, inside2, ACTIVE_FT;
17992
18131
  var init_pdf = __esm({
17993
- "packages/pdf/src/reader/pdf.js"() {
18132
+ "src/reader/pdf.js"() {
17994
18133
  init_budget();
17995
18134
  init_source();
17996
18135
  init_lexer();
@@ -18005,7 +18144,137 @@ var init_pdf = __esm({
18005
18144
  }
18006
18145
  });
18007
18146
 
18008
- // packages/pdf/src/index.js
18147
+ // src/bulk.js
18148
+ function bytesOf2(b) {
18149
+ if (b instanceof Uint8Array) return b;
18150
+ if (b instanceof ArrayBuffer) return new Uint8Array(b);
18151
+ throw new TypeError("bulk: an input is a Uint8Array or an ArrayBuffer");
18152
+ }
18153
+ async function runOne(task, input, o) {
18154
+ try {
18155
+ return { ok: true, value: await TASKS[task](input, o) };
18156
+ } catch (e) {
18157
+ return { ok: false, error: errorOf(e) };
18158
+ }
18159
+ }
18160
+ async function bulk(inputs, task, o = {}) {
18161
+ if (!Object.hasOwn(TASKS, task)) throw new TypeError(`bulk: task is one of ${BULK_TASKS.join(", ")}`);
18162
+ if (o == null || typeof o !== "object") throw new TypeError("bulk: options are { workers, memoryMb, password, budget, timeoutMs, encrypt, save }");
18163
+ const list = [...inputs];
18164
+ const { workers: w0, memoryMb = 512, onResult, ...taskOpts } = o;
18165
+ const node = (
18166
+ /** @type {any} */
18167
+ globalThis.process?.getBuiltinModule
18168
+ );
18169
+ const wt = node?.("node:worker_threads"), os = node?.("node:os");
18170
+ const auto = os ? Math.max(1, (os.availableParallelism?.() ?? os.cpus().length) - 1) : 1;
18171
+ const n = Math.min(list.length, w0 == null ? auto : w0);
18172
+ if (!Number.isInteger(n) || n < 0) throw new TypeError("bulk: workers is a positive integer");
18173
+ if (!Number.isFinite(memoryMb) || memoryMb < 16) throw new TypeError("bulk: memoryMb is at least 16");
18174
+ const results = new Array(list.length);
18175
+ const done = (i2, r) => {
18176
+ results[i2] = r;
18177
+ onResult?.(i2, r);
18178
+ };
18179
+ if (!wt || n <= 1) {
18180
+ for (let i2 = 0; i2 < list.length; i2++) done(i2, await runOne(task, list[i2], taskOpts));
18181
+ return results;
18182
+ }
18183
+ let next = 0;
18184
+ const url = import.meta.url;
18185
+ const spawn = () => new wt.Worker(`import(${JSON.stringify(url)}).then((m) => m.__bulkWorker())`, { eval: true, resourceLimits: { maxOldGenerationSizeMb: memoryMb } });
18186
+ const lane = async () => {
18187
+ let worker = spawn();
18188
+ try {
18189
+ while (next < list.length) {
18190
+ const i2 = next++;
18191
+ const r = await new Promise((resolve2) => {
18192
+ const off = () => {
18193
+ worker.off("message", ok);
18194
+ worker.off("error", bad);
18195
+ worker.off("exit", gone);
18196
+ };
18197
+ const ok = (m) => {
18198
+ off();
18199
+ resolve2(m);
18200
+ };
18201
+ const bad = (e) => {
18202
+ off();
18203
+ resolve2({ ok: false, error: { ...errorOf(e), code: "E_WORKER" }, dead: true });
18204
+ };
18205
+ const gone = (c) => {
18206
+ off();
18207
+ resolve2({ ok: false, error: { name: "Error", code: "E_WORKER", message: `the worker stopped (exit ${c}), out of memory (memoryMb) or crashed` }, dead: true });
18208
+ };
18209
+ worker.on("message", ok);
18210
+ worker.once("error", bad);
18211
+ worker.once("exit", gone);
18212
+ worker.postMessage({ task, input: list[i2], o: taskOpts });
18213
+ });
18214
+ if (r.dead) {
18215
+ worker.terminate();
18216
+ worker = spawn();
18217
+ delete r.dead;
18218
+ }
18219
+ done(i2, r);
18220
+ }
18221
+ } finally {
18222
+ await worker.terminate();
18223
+ }
18224
+ };
18225
+ await Promise.all(Array.from({ length: n }, lane));
18226
+ return results;
18227
+ }
18228
+ function __bulkWorker() {
18229
+ const { parentPort } = (
18230
+ /** @type {any} */
18231
+ globalThis.process.getBuiltinModule("node:worker_threads")
18232
+ );
18233
+ parentPort.on("message", async (m) => {
18234
+ const r = await runOne(m.task, m.input, m.o);
18235
+ const v = r.ok ? r.value : null;
18236
+ const transfer = v instanceof Uint8Array ? [v.buffer] : Array.isArray(v) ? v.filter((x2) => x2 instanceof Uint8Array).map((x2) => x2.buffer) : [];
18237
+ try {
18238
+ parentPort.postMessage(r, [...new Set(transfer)].filter((b) => b instanceof ArrayBuffer));
18239
+ } catch {
18240
+ parentPort.postMessage(r);
18241
+ }
18242
+ });
18243
+ }
18244
+ var TASKS, BULK_TASKS, load, errorOf;
18245
+ var init_bulk = __esm({
18246
+ "src/bulk.js"() {
18247
+ init_pdf();
18248
+ TASKS = {
18249
+ /** bytes → the text of every page ('\f' between pages) */
18250
+ extractText: async (input, o) => (await loadPdf(bytesOf2(input), load(o))).extractText(),
18251
+ /** [bytes, bytes, …] → one file */
18252
+ merge: async (input, o) => {
18253
+ if (!Array.isArray(input) || !input.length) throw new TypeError("bulk merge: each input is an array of files");
18254
+ const docs = [];
18255
+ for (const b of input) docs.push(await loadPdf(bytesOf2(b), load(o)));
18256
+ return (await docs[0].fork().merge(docs.slice(1)).save(o.save)).bytes;
18257
+ },
18258
+ /** bytes → one file per page */
18259
+ split: async (input, o) => {
18260
+ const d = await loadPdf(bytesOf2(input), load(o));
18261
+ const out = [];
18262
+ for (let i2 = 0; i2 < d.pageCount; i2++) out.push((await d.fork().reorder([i2]).save(o.save)).bytes);
18263
+ return out;
18264
+ },
18265
+ /** bytes → the file encrypted with o.encrypt (save()'s encrypt option) */
18266
+ encrypt: async (input, o) => {
18267
+ if (o.encrypt == null || typeof o.encrypt !== "object") throw new TypeError("bulk encrypt: options.encrypt is save()'s encrypt option");
18268
+ return (await (await loadPdf(bytesOf2(input), load(o))).save({ ...o.save, encrypt: o.encrypt })).bytes;
18269
+ }
18270
+ };
18271
+ BULK_TASKS = Object.freeze(Object.keys(TASKS));
18272
+ load = (o) => ({ ...o.password != null && { password: o.password }, ...o.budget && { budget: o.budget }, ...o.timeoutMs && { timeoutMs: o.timeoutMs } });
18273
+ errorOf = (e) => ({ name: String(e?.name ?? "Error"), code: e?.code == null ? void 0 : String(e.code), message: String(e?.message ?? e) });
18274
+ }
18275
+ });
18276
+
18277
+ // src/index.js
18009
18278
  async function mergePdfs(docs, o) {
18010
18279
  if (!Array.isArray(docs) || !docs.length) throw new TypeError("mergePdfs: an array of documents from loadPdf");
18011
18280
  return docs[0].fork().merge(docs.slice(1)).save(o);
@@ -18195,7 +18464,7 @@ async function toBytes2(build, options2) {
18195
18464
  return all;
18196
18465
  }
18197
18466
  var init_index = __esm({
18198
- "packages/pdf/src/index.js"() {
18467
+ "src/index.js"() {
18199
18468
  init_sink();
18200
18469
  init_document();
18201
18470
  init_brand();
@@ -18225,13 +18494,17 @@ var init_index = __esm({
18225
18494
  init_cms();
18226
18495
  init_pdf();
18227
18496
  init_budget();
18497
+ init_bulk();
18228
18498
  }
18229
18499
  });
18230
18500
  init_index();
18231
18501
  export {
18502
+ BULK_TASKS,
18232
18503
  Page,
18233
18504
  PdfReadError,
18234
18505
  STANDARD_NAMES,
18506
+ __bulkWorker,
18507
+ bulk,
18235
18508
  cmsSigner,
18236
18509
  cmyk,
18237
18510
  createPdf,