@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/README.md +27 -4
- package/dist/index.js +547 -274
- package/examples/bulk.mjs +19 -0
- package/index.d.ts +30 -1
- package/package.json +1 -1
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
|
-
//
|
|
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
|
-
"
|
|
115
|
+
"src/core/sink.js"() {
|
|
116
116
|
}
|
|
117
117
|
});
|
|
118
118
|
|
|
119
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
|
976
|
-
if (typeof CompressionStream === "undefined") return zlibSync(bytes, { level:
|
|
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:
|
|
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:
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
1711
|
+
// src/content/content.js
|
|
1697
1712
|
var Content;
|
|
1698
1713
|
var init_content = __esm({
|
|
1699
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
|
2284
|
+
for (const word2 of para.split(" ")) {
|
|
2270
2285
|
if (lines.length > stop) break paras;
|
|
2271
|
-
const ws = q, we = q +
|
|
2286
|
+
const ws = q, we = q + word2.length;
|
|
2272
2287
|
q = we + 1;
|
|
2273
|
-
if (!
|
|
2274
|
-
const ww = width(
|
|
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 (!
|
|
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
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
2895
|
+
"src/standards/level.js"() {
|
|
2881
2896
|
}
|
|
2882
2897
|
});
|
|
2883
2898
|
|
|
2884
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
3156
|
+
"src/graphics/shapes.js"() {
|
|
3142
3157
|
init_serialize();
|
|
3143
3158
|
init_color();
|
|
3144
3159
|
init_draw();
|
|
3145
3160
|
}
|
|
3146
3161
|
});
|
|
3147
3162
|
|
|
3148
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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]
|
|
3576
|
-
|
|
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
|
-
|
|
3584
|
-
|
|
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
|
-
|
|
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
|
-
|
|
3597
|
-
t[i2] =
|
|
3598
|
-
|
|
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
|
-
|
|
3609
|
-
t[i2] =
|
|
3610
|
-
|
|
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
|
-
|
|
3620
|
-
t[i2] =
|
|
3621
|
-
|
|
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]
|
|
3625
|
-
|
|
3626
|
-
|
|
3627
|
-
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
5134
|
+
// src/fonts/standard-metrics.js
|
|
5095
5135
|
var ENCODINGS, METRICS;
|
|
5096
5136
|
var init_standard_metrics = __esm({
|
|
5097
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
|
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 ((
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
|
|
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
|
-
"
|
|
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
|
-
|
|
13352
|
-
|
|
13353
|
-
|
|
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(
|
|
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
|
-
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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 =
|
|
14144
|
+
let v = load2(n);
|
|
14065
14145
|
if (v === void 0 && !recovered) {
|
|
14066
14146
|
recover();
|
|
14067
14147
|
recoverDeep();
|
|
14068
|
-
v =
|
|
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
|
|
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 =
|
|
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
|
|
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" &&
|
|
14500
|
-
const off =
|
|
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
|
-
|
|
14588
|
+
seen = 0;
|
|
14589
|
+
int1 = int2 = false;
|
|
14509
14590
|
continue;
|
|
14510
14591
|
}
|
|
14511
|
-
|
|
14512
|
-
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
|
|
14607
|
-
for (let
|
|
14608
|
-
return
|
|
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
|
|
14612
|
-
|
|
14613
|
-
return
|
|
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
|
|
14747
|
+
let chars3 = 0;
|
|
14652
14748
|
const set2 = (c, t) => {
|
|
14653
|
-
|
|
14749
|
+
chars3 += t.length;
|
|
14654
14750
|
held.n += 8 + t.length;
|
|
14655
|
-
if (
|
|
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
|
|
15070
|
+
let chars3 = 0;
|
|
14974
15071
|
let moved = true;
|
|
14975
15072
|
const fonts = /* @__PURE__ */ new Map();
|
|
14976
|
-
const add2 = (x2, y, end, size, text3,
|
|
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 ((
|
|
14979
|
-
|
|
14980
|
-
|
|
14981
|
-
|
|
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(
|
|
14987
|
-
PAE.push(
|
|
14988
|
-
PC.push(
|
|
14989
|
-
PD.push(
|
|
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
|
|
15025
|
-
const
|
|
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 =
|
|
15028
|
-
const M1 =
|
|
15029
|
-
const L = Math.hypot(M0[0], M0[1]), ux = L ? M0[0] / L : 1, uy = L ? M0[1] / L : 0;
|
|
15030
|
-
const
|
|
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] =
|
|
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,
|
|
15040
|
-
else if (n >= 0 && PAE[n] <
|
|
15041
|
-
PE[n] = end;
|
|
15042
|
-
PAE[n] =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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
|
-
"
|
|
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) =>
|
|
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
|
-
|
|
15451
|
-
|
|
15452
|
-
[
|
|
15453
|
-
|
|
15454
|
-
|
|
15455
|
-
|
|
15456
|
-
|
|
15457
|
-
|
|
15458
|
-
|
|
15459
|
-
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
|
|
15681
|
-
|
|
15682
|
-
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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
|
-
|
|
15877
|
-
stack.push(
|
|
15878
|
-
|
|
15879
|
-
|
|
15880
|
-
|
|
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 (!
|
|
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,
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
|
|
16398
|
-
|
|
16399
|
-
|
|
16400
|
-
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
16896
|
+
"src/reader/active.js"() {
|
|
16758
16897
|
init_copy();
|
|
16759
16898
|
}
|
|
16760
16899
|
});
|
|
16761
16900
|
|
|
16762
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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
|
-
//
|
|
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
|
-
"
|
|
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,
|