modern-pdf-lib 0.26.0 → 0.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -3
- package/dist/{batchOptimize-C1W3O68Q.cjs → batchOptimize-CXC9gNqD.cjs} +55 -55
- package/dist/{batchOptimize-BCJEEN8J.mjs → batchOptimize-CjLGD5ie.mjs} +25 -25
- package/dist/{bridge-DMEuGtfn.cjs → bridge-ByvzPu5h.cjs} +29 -31
- package/dist/{bridge-DaS-gzEd.mjs → bridge-ZD6O6QQa.mjs} +4 -5
- package/dist/browser.cjs +245 -154
- package/dist/browser.d.cts +166 -166
- package/dist/browser.d.cts.map +1 -1
- package/dist/browser.d.mts +166 -166
- package/dist/browser.d.mts.map +1 -1
- package/dist/browser.mjs +15 -19
- package/dist/cli/index.cjs +7 -7
- package/dist/cli/index.mjs +8 -8
- package/dist/{compressionAnalysis-CwknBtqx.mjs → compressionAnalysis-BgKy45pA.mjs} +55 -69
- package/dist/{compressionAnalysis-Ch7t-HXn.d.mts → compressionAnalysis-CDOp_vPr.d.mts} +136 -136
- package/dist/compressionAnalysis-CDOp_vPr.d.mts.map +1 -0
- package/dist/{compressionAnalysis-B-FPzgzw.cjs → compressionAnalysis-Djv-Zvcd.cjs} +85 -99
- package/dist/{compressionAnalysis-Dgv1TtHJ.d.cts → compressionAnalysis-UfmonqbM.d.cts} +136 -136
- package/dist/compressionAnalysis-UfmonqbM.d.cts.map +1 -0
- package/dist/create.cjs +21 -23
- package/dist/create.d.cts +2 -2
- package/dist/create.d.mts +2 -2
- package/dist/create.mjs +3 -5
- package/dist/{deduplicateImages-DIon68zB.mjs → deduplicateImages-BTCyAPfJ.mjs} +4 -5
- package/dist/{deduplicateImages-cKsnD6Ep.cjs → deduplicateImages-CaGgaqyS.cjs} +14 -15
- package/dist/{fieldAppearance-C8PoLFSc.d.mts → fieldAppearance-Df1262CT.d.cts} +44 -44
- package/dist/fieldAppearance-Df1262CT.d.cts.map +1 -0
- package/dist/{fieldAppearance-CdiGFG5e.d.cts → fieldAppearance-_CZdoUCD.d.mts} +44 -44
- package/dist/fieldAppearance-_CZdoUCD.d.mts.map +1 -0
- package/dist/fontEmbed-DGiZS0h2.d.cts +677 -0
- package/dist/fontEmbed-DGiZS0h2.d.cts.map +1 -0
- package/dist/fontEmbed-DtA_riGC.d.mts +677 -0
- package/dist/fontEmbed-DtA_riGC.d.mts.map +1 -0
- package/dist/forms.cjs +3 -4
- package/dist/forms.d.cts +2 -2
- package/dist/forms.d.mts +2 -2
- package/dist/forms.mjs +2 -3
- package/dist/{grayscaleDetect-C6kFF3dk.mjs → grayscaleDetect-6GJrgBRT.mjs} +3 -3
- package/dist/{grayscaleDetect-C2m-eEXR.cjs → grayscaleDetect-DAUqxjgR.cjs} +13 -14
- package/dist/{imageExtract-zEb1gnkb.cjs → imageExtract-DT50Hp_g.cjs} +13 -14
- package/dist/{imageExtract-Dnk_Ssv7.mjs → imageExtract-Dapir-ux.mjs} +3 -4
- package/dist/index-C1lZe66f.d.mts +8682 -0
- package/dist/index-C1lZe66f.d.mts.map +1 -0
- package/dist/index-D1SvXWSI.d.cts +8682 -0
- package/dist/index-D1SvXWSI.d.cts.map +1 -0
- package/dist/index.cjs +245 -153
- package/dist/index.d.cts +7 -7
- package/dist/index.d.mts +7 -7
- package/dist/index.mjs +14 -17
- package/dist/{layout-DQh05VP-.cjs → layout-C4vbTlBW.cjs} +184 -134
- package/dist/{layout-CrqeJBMI.mjs → layout-lO4x64kY.mjs} +50 -12
- package/dist/{loader-CVB-c_3Z.mjs → loader-B1Ix7ozU.mjs} +248 -12
- package/dist/{loader-DYCH3n7d.cjs → loader-DR7H0XOf.cjs} +332 -66
- package/dist/parse.cjs +7 -8
- package/dist/parse.d.cts +3 -3
- package/dist/parse.d.mts +3 -3
- package/dist/parse.mjs +6 -7
- package/dist/pdfDocument-CH2E4UCc.d.mts +5160 -0
- package/dist/pdfDocument-CH2E4UCc.d.mts.map +1 -0
- package/dist/{pdfDocument-D9uYNSb-.cjs → pdfDocument-C_7mrBCL.cjs} +22409 -11624
- package/dist/pdfDocument-CzOipXnw.d.cts +5160 -0
- package/dist/pdfDocument-CzOipXnw.d.cts.map +1 -0
- package/dist/{pdfDocument-D7aFSQEY.mjs → pdfDocument-DRbT6HZw.mjs} +10830 -855
- package/dist/{pdfForm-BpqDGp29.cjs → pdfForm-BVS_do95.cjs} +112 -107
- package/dist/pdfForm-Ca86NDWn.d.cts +897 -0
- package/dist/pdfForm-Ca86NDWn.d.cts.map +1 -0
- package/dist/pdfForm-Ca86NDWn.d.mts +897 -0
- package/dist/pdfForm-Ca86NDWn.d.mts.map +1 -0
- package/dist/{pdfForm-C3mC9FoQ.mjs → pdfForm-CfLnlsj-.mjs} +22 -17
- package/dist/{pdfObjects-1veop1_d.cjs → pdfObjects-BcPlSI0a.cjs} +62 -53
- package/dist/{pdfObjects-uEsWlfzU.mjs → pdfObjects-CB7TEdbW.mjs} +12 -2
- package/dist/rolldown-runtime-ak5kbic3.cjs +18 -0
- package/dist/{src-lFqJHb1C.cjs → src-C-IDXuvi.cjs} +8692 -1916
- package/dist/{src-QZWP21qF.mjs → src-DJaD-bJ2.mjs} +7278 -982
- package/dist/{streamDecode-Bj568Nc9.mjs → streamDecode-BamENT3k.mjs} +129 -150
- package/dist/{streamDecode-CvgErkFu.cjs → streamDecode-DcaZz309.cjs} +139 -160
- package/package.json +25 -22
- package/dist/compressionAnalysis-Ch7t-HXn.d.mts.map +0 -1
- package/dist/compressionAnalysis-Dgv1TtHJ.d.cts.map +0 -1
- package/dist/fflateAdapter-DuNiByKx.mjs +0 -196
- package/dist/fflateAdapter-LTAeAhaD.cjs +0 -207
- package/dist/fieldAppearance-C8PoLFSc.d.mts.map +0 -1
- package/dist/fieldAppearance-CdiGFG5e.d.cts.map +0 -1
- package/dist/fontEmbed-3YhUPLFj.d.cts +0 -659
- package/dist/fontEmbed-3YhUPLFj.d.cts.map +0 -1
- package/dist/fontEmbed-DlVnVCZU.d.mts +0 -659
- package/dist/fontEmbed-DlVnVCZU.d.mts.map +0 -1
- package/dist/fontSubset-5SLWMmEw.cjs +0 -518
- package/dist/fontSubset-BGFDIMmT.mjs +0 -495
- package/dist/index-B4S61WjK.d.mts +0 -6507
- package/dist/index-B4S61WjK.d.mts.map +0 -1
- package/dist/index-xfJP6Ycm.d.cts +0 -6507
- package/dist/index-xfJP6Ycm.d.cts.map +0 -1
- package/dist/libdeflateWasm-CcA1W04G.mjs +0 -220
- package/dist/libdeflateWasm-DLw-I1CY.cjs +0 -237
- package/dist/pdfCatalog-Bqq4FiLn.cjs +0 -174
- package/dist/pdfCatalog-CnKMAtIo.mjs +0 -139
- package/dist/pdfDocument-Bc_vAO74.d.cts +0 -4758
- package/dist/pdfDocument-Bc_vAO74.d.cts.map +0 -1
- package/dist/pdfDocument-Bi-NoyXv.d.mts +0 -4758
- package/dist/pdfDocument-Bi-NoyXv.d.mts.map +0 -1
- package/dist/pdfForm-BiyNtYem.d.mts +0 -905
- package/dist/pdfForm-BiyNtYem.d.mts.map +0 -1
- package/dist/pdfForm-SOXJ72LW.d.cts +0 -905
- package/dist/pdfForm-SOXJ72LW.d.cts.map +0 -1
- package/dist/pdfPage-BJIE5hc6.mjs +0 -8180
- package/dist/pdfPage-C_tjEjj1.cjs +0 -8893
- package/dist/pngEmbed-CGi7cym7.mjs +0 -552
- package/dist/pngEmbed-CTn9IeNB.cjs +0 -563
- package/dist/rolldown-runtime-CKhH4XqG.cjs +0 -24
package/README.md
CHANGED
|
@@ -15,7 +15,7 @@ Create, parse, fill, merge, sign, and manipulate PDF documents<br />in Node, Den
|
|
|
15
15
|
|
|
16
16
|
[](https://www.npmjs.com/package/modern-pdf-lib)
|
|
17
17
|
[](https://bundlephobia.com/package/modern-pdf-lib)
|
|
18
|
-
[](#)
|
|
19
19
|
[](#)
|
|
20
20
|
[](LICENSE)
|
|
21
21
|
|
|
@@ -107,9 +107,11 @@ For environments without ES module support, use the IIFE bundle which exposes a
|
|
|
107
107
|
- Automatic font subsetting
|
|
108
108
|
- JPEG / PNG image embedding
|
|
109
109
|
- Image optimization (JPEG recompression, dedup, grayscale)
|
|
110
|
-
- RGB, CMYK, grayscale colors
|
|
110
|
+
- RGB, CMYK, grayscale, spot, DeviceN colors
|
|
111
111
|
- Linear & radial gradients, tiling patterns
|
|
112
112
|
- Text layout (multiline, combed, auto-size)
|
|
113
|
+
- Header/footer engine with templates
|
|
114
|
+
- Advanced text layout (Knuth-Plass, hyphenation)
|
|
113
115
|
|
|
114
116
|
</td>
|
|
115
117
|
<td width="50%" valign="top">
|
|
@@ -137,7 +139,8 @@ For environments without ES module support, use the IIFE bundle which exposes a
|
|
|
137
139
|
- PDF/A-1b through PDF/A-3u validation
|
|
138
140
|
- Tagged PDF / PDF/UA accessibility
|
|
139
141
|
- Structure tree & marked content
|
|
140
|
-
- Redaction with content removal
|
|
142
|
+
- Redaction with content removal & overlay
|
|
143
|
+
- PDF/UA validation & auto-enforcement
|
|
141
144
|
|
|
142
145
|
</td>
|
|
143
146
|
<td width="50%" valign="top">
|
|
@@ -156,6 +159,8 @@ For environments without ES module support, use the IIFE bundle which exposes a
|
|
|
156
159
|
- Linearization (fast web view)
|
|
157
160
|
- Browser helpers (download, blob, data URL)
|
|
158
161
|
- Service Worker & Web Worker support
|
|
162
|
+
- Batch processing with memory pressure handling
|
|
163
|
+
- Spot colors (Separation) & DeviceN
|
|
159
164
|
- CLI: `npx modern-pdf optimize`
|
|
160
165
|
|
|
161
166
|
</td>
|
|
@@ -269,6 +274,14 @@ For environments without ES module support, use the IIFE bundle which exposes a
|
|
|
269
274
|
<td align="center">9 formats (QR, EAN, Code 128, PDF417…)</td>
|
|
270
275
|
<td align="center">No</td></tr>
|
|
271
276
|
|
|
277
|
+
<tr><td><strong>Spot / DeviceN colors</strong></td>
|
|
278
|
+
<td align="center">Separation, multi-ink, conversion</td>
|
|
279
|
+
<td align="center">No</td></tr>
|
|
280
|
+
|
|
281
|
+
<tr><td><strong>Header / footer engine</strong></td>
|
|
282
|
+
<td align="center">Templates, page numbers, dates</td>
|
|
283
|
+
<td align="center">No</td></tr>
|
|
284
|
+
|
|
272
285
|
<tr><td><strong>Table layout</strong></td>
|
|
273
286
|
<td align="center">Spanning, pagination, presets, overflow</td>
|
|
274
287
|
<td align="center">No</td></tr>
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
const require_rolldown_runtime = require(
|
|
2
|
-
const require_pdfObjects = require(
|
|
3
|
-
const require_imageExtract = require(
|
|
4
|
-
const require_grayscaleDetect = require(
|
|
5
|
-
|
|
1
|
+
const require_rolldown_runtime = require("./rolldown-runtime-ak5kbic3.cjs");
|
|
2
|
+
const require_pdfObjects = require("./pdfObjects-BcPlSI0a.cjs");
|
|
3
|
+
const require_imageExtract = require("./imageExtract-DT50Hp_g.cjs");
|
|
4
|
+
const require_grayscaleDetect = require("./grayscaleDetect-DAUqxjgR.cjs");
|
|
6
5
|
//#region src/assets/image/iccProfile.ts
|
|
7
6
|
/**
|
|
8
7
|
* @module assets/image/iccProfile
|
|
@@ -90,13 +89,14 @@ function parseIccDescription(data) {
|
|
|
90
89
|
if (descLen === 0) return void 0;
|
|
91
90
|
const strEnd = Math.min(tagOffset + 12 + descLen - 1, tagOffset + tagSize);
|
|
92
91
|
if (strEnd <= tagOffset + 12) return void 0;
|
|
93
|
-
|
|
94
|
-
for (let j = tagOffset + 12; j < strEnd; j++) {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
chars.push(String.fromCharCode(c));
|
|
92
|
+
let nullIdx = strEnd;
|
|
93
|
+
for (let j = tagOffset + 12; j < strEnd; j++) if (data[j] === 0) {
|
|
94
|
+
nullIdx = j;
|
|
95
|
+
break;
|
|
98
96
|
}
|
|
99
|
-
|
|
97
|
+
const strBytes = data.subarray(tagOffset + 12, nullIdx);
|
|
98
|
+
if (strBytes.length === 0) return void 0;
|
|
99
|
+
return new TextDecoder("ascii").decode(strBytes);
|
|
100
100
|
}
|
|
101
101
|
}
|
|
102
102
|
/**
|
|
@@ -197,7 +197,6 @@ function embedIccProfile(profile, registry) {
|
|
|
197
197
|
const stream = new require_pdfObjects.PdfStream(dict, profile.data);
|
|
198
198
|
return registry.register(stream);
|
|
199
199
|
}
|
|
200
|
-
|
|
201
200
|
//#endregion
|
|
202
201
|
//#region src/assets/image/batchOptimize.ts
|
|
203
202
|
var batchOptimize_exports = /* @__PURE__ */ require_rolldown_runtime.__exportAll({ optimizeAllImages: () => optimizeAllImages });
|
|
@@ -255,8 +254,8 @@ async function optimizeAllImages(doc, options = {}) {
|
|
|
255
254
|
const chromaSubsampling = options.chromaSubsampling ?? "4:2:0";
|
|
256
255
|
const concurrency = Math.max(1, options.concurrency ?? 1);
|
|
257
256
|
const { pageRange, minImageSize, colorSpaces, namePattern } = options;
|
|
258
|
-
const { encodeJpegWasm, isJpegWasmReady } = await Promise.resolve().then(() => require("./bridge-
|
|
259
|
-
const { decodeJpegWasm } = await Promise.resolve().then(() => require("./bridge-
|
|
257
|
+
const { encodeJpegWasm, isJpegWasmReady } = await Promise.resolve().then(() => require("./bridge-ByvzPu5h.cjs")).then((n) => n.bridge_exports);
|
|
258
|
+
const { decodeJpegWasm } = await Promise.resolve().then(() => require("./bridge-ByvzPu5h.cjs")).then((n) => n.bridge_exports);
|
|
260
259
|
const images = require_imageExtract.extractImages(doc);
|
|
261
260
|
const registry = doc.getRegistry();
|
|
262
261
|
const results = new Array(images.length);
|
|
@@ -302,15 +301,16 @@ async function optimizeAllImages(doc, options = {}) {
|
|
|
302
301
|
const expectedLen = img.width * img.height * channels;
|
|
303
302
|
if (pixels.length !== expectedLen) return skip(false, `Pixel data length mismatch: got ${pixels.length}, expected ${expectedLen}`);
|
|
304
303
|
if (channels === 4 && img.colorSpace === "DeviceCMYK") {
|
|
305
|
-
const
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
const
|
|
309
|
-
const
|
|
310
|
-
const
|
|
311
|
-
|
|
312
|
-
rgb[i * 3
|
|
313
|
-
rgb[i * 3 +
|
|
304
|
+
const pixelCount = img.width * img.height;
|
|
305
|
+
const rgb = new Uint8Array(pixelCount * 3);
|
|
306
|
+
for (let i = 0; i < pixelCount; i++) {
|
|
307
|
+
const ci = 255 - pixels[i * 4];
|
|
308
|
+
const mi = 255 - pixels[i * 4 + 1];
|
|
309
|
+
const yi = 255 - pixels[i * 4 + 2];
|
|
310
|
+
const ki = 255 - pixels[i * 4 + 3];
|
|
311
|
+
rgb[i * 3] = (ci * ki + 127) / 255 | 0;
|
|
312
|
+
rgb[i * 3 + 1] = (mi * ki + 127) / 255 | 0;
|
|
313
|
+
rgb[i * 3 + 2] = (yi * ki + 127) / 255 | 0;
|
|
314
314
|
}
|
|
315
315
|
pixels = rgb;
|
|
316
316
|
channels = 3;
|
|
@@ -386,42 +386,42 @@ async function optimizeAllImages(doc, options = {}) {
|
|
|
386
386
|
perImage: results
|
|
387
387
|
};
|
|
388
388
|
}
|
|
389
|
-
|
|
390
389
|
//#endregion
|
|
391
|
-
Object.defineProperty(exports,
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
390
|
+
Object.defineProperty(exports, "batchOptimize_exports", {
|
|
391
|
+
enumerable: true,
|
|
392
|
+
get: function() {
|
|
393
|
+
return batchOptimize_exports;
|
|
394
|
+
}
|
|
396
395
|
});
|
|
397
|
-
Object.defineProperty(exports,
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
396
|
+
Object.defineProperty(exports, "embedIccProfile", {
|
|
397
|
+
enumerable: true,
|
|
398
|
+
get: function() {
|
|
399
|
+
return embedIccProfile;
|
|
400
|
+
}
|
|
402
401
|
});
|
|
403
|
-
Object.defineProperty(exports,
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
402
|
+
Object.defineProperty(exports, "extractIccProfile", {
|
|
403
|
+
enumerable: true,
|
|
404
|
+
get: function() {
|
|
405
|
+
return extractIccProfile;
|
|
406
|
+
}
|
|
408
407
|
});
|
|
409
|
-
Object.defineProperty(exports,
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
408
|
+
Object.defineProperty(exports, "optimizeAllImages", {
|
|
409
|
+
enumerable: true,
|
|
410
|
+
get: function() {
|
|
411
|
+
return optimizeAllImages;
|
|
412
|
+
}
|
|
414
413
|
});
|
|
415
|
-
Object.defineProperty(exports,
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
414
|
+
Object.defineProperty(exports, "parseIccColorSpace", {
|
|
415
|
+
enumerable: true,
|
|
416
|
+
get: function() {
|
|
417
|
+
return parseIccColorSpace;
|
|
418
|
+
}
|
|
420
419
|
});
|
|
421
|
-
Object.defineProperty(exports,
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
420
|
+
Object.defineProperty(exports, "parseIccDescription", {
|
|
421
|
+
enumerable: true,
|
|
422
|
+
get: function() {
|
|
423
|
+
return parseIccDescription;
|
|
424
|
+
}
|
|
426
425
|
});
|
|
427
|
-
|
|
426
|
+
|
|
427
|
+
//# sourceMappingURL=batchOptimize-CXC9gNqD.cjs.map
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { i as PdfName, l as PdfStream, o as PdfNumber, r as PdfDict, t as PdfArray } from "./pdfObjects-
|
|
3
|
-
import { n as extractImages, t as decodeImageStream } from "./imageExtract-
|
|
4
|
-
import { n as isGrayscaleImage, t as convertToGrayscale } from "./grayscaleDetect-
|
|
5
|
-
|
|
1
|
+
import { Vu as __exportAll } from "./index-C1lZe66f.d.mts";
|
|
2
|
+
import { i as PdfName, l as PdfStream, o as PdfNumber, r as PdfDict, t as PdfArray } from "./pdfObjects-CB7TEdbW.mjs";
|
|
3
|
+
import { n as extractImages, t as decodeImageStream } from "./imageExtract-Dapir-ux.mjs";
|
|
4
|
+
import { n as isGrayscaleImage, t as convertToGrayscale } from "./grayscaleDetect-6GJrgBRT.mjs";
|
|
6
5
|
//#region src/assets/image/iccProfile.ts
|
|
7
6
|
/**
|
|
8
7
|
* @module assets/image/iccProfile
|
|
@@ -90,13 +89,14 @@ function parseIccDescription(data) {
|
|
|
90
89
|
if (descLen === 0) return void 0;
|
|
91
90
|
const strEnd = Math.min(tagOffset + 12 + descLen - 1, tagOffset + tagSize);
|
|
92
91
|
if (strEnd <= tagOffset + 12) return void 0;
|
|
93
|
-
|
|
94
|
-
for (let j = tagOffset + 12; j < strEnd; j++) {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
chars.push(String.fromCharCode(c));
|
|
92
|
+
let nullIdx = strEnd;
|
|
93
|
+
for (let j = tagOffset + 12; j < strEnd; j++) if (data[j] === 0) {
|
|
94
|
+
nullIdx = j;
|
|
95
|
+
break;
|
|
98
96
|
}
|
|
99
|
-
|
|
97
|
+
const strBytes = data.subarray(tagOffset + 12, nullIdx);
|
|
98
|
+
if (strBytes.length === 0) return void 0;
|
|
99
|
+
return new TextDecoder("ascii").decode(strBytes);
|
|
100
100
|
}
|
|
101
101
|
}
|
|
102
102
|
/**
|
|
@@ -197,7 +197,6 @@ function embedIccProfile(profile, registry) {
|
|
|
197
197
|
const stream = new PdfStream(dict, profile.data);
|
|
198
198
|
return registry.register(stream);
|
|
199
199
|
}
|
|
200
|
-
|
|
201
200
|
//#endregion
|
|
202
201
|
//#region src/assets/image/batchOptimize.ts
|
|
203
202
|
var batchOptimize_exports = /* @__PURE__ */ __exportAll({ optimizeAllImages: () => optimizeAllImages });
|
|
@@ -255,8 +254,8 @@ async function optimizeAllImages(doc, options = {}) {
|
|
|
255
254
|
const chromaSubsampling = options.chromaSubsampling ?? "4:2:0";
|
|
256
255
|
const concurrency = Math.max(1, options.concurrency ?? 1);
|
|
257
256
|
const { pageRange, minImageSize, colorSpaces, namePattern } = options;
|
|
258
|
-
const { encodeJpegWasm, isJpegWasmReady } = await import("./bridge-
|
|
259
|
-
const { decodeJpegWasm } = await import("./bridge-
|
|
257
|
+
const { encodeJpegWasm, isJpegWasmReady } = await import("./bridge-ZD6O6QQa.mjs").then((n) => n.t);
|
|
258
|
+
const { decodeJpegWasm } = await import("./bridge-ZD6O6QQa.mjs").then((n) => n.t);
|
|
260
259
|
const images = extractImages(doc);
|
|
261
260
|
const registry = doc.getRegistry();
|
|
262
261
|
const results = new Array(images.length);
|
|
@@ -302,15 +301,16 @@ async function optimizeAllImages(doc, options = {}) {
|
|
|
302
301
|
const expectedLen = img.width * img.height * channels;
|
|
303
302
|
if (pixels.length !== expectedLen) return skip(false, `Pixel data length mismatch: got ${pixels.length}, expected ${expectedLen}`);
|
|
304
303
|
if (channels === 4 && img.colorSpace === "DeviceCMYK") {
|
|
305
|
-
const
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
const
|
|
309
|
-
const
|
|
310
|
-
const
|
|
311
|
-
|
|
312
|
-
rgb[i * 3
|
|
313
|
-
rgb[i * 3 +
|
|
304
|
+
const pixelCount = img.width * img.height;
|
|
305
|
+
const rgb = new Uint8Array(pixelCount * 3);
|
|
306
|
+
for (let i = 0; i < pixelCount; i++) {
|
|
307
|
+
const ci = 255 - pixels[i * 4];
|
|
308
|
+
const mi = 255 - pixels[i * 4 + 1];
|
|
309
|
+
const yi = 255 - pixels[i * 4 + 2];
|
|
310
|
+
const ki = 255 - pixels[i * 4 + 3];
|
|
311
|
+
rgb[i * 3] = (ci * ki + 127) / 255 | 0;
|
|
312
|
+
rgb[i * 3 + 1] = (mi * ki + 127) / 255 | 0;
|
|
313
|
+
rgb[i * 3 + 2] = (yi * ki + 127) / 255 | 0;
|
|
314
314
|
}
|
|
315
315
|
pixels = rgb;
|
|
316
316
|
channels = 3;
|
|
@@ -386,7 +386,7 @@ async function optimizeAllImages(doc, options = {}) {
|
|
|
386
386
|
perImage: results
|
|
387
387
|
};
|
|
388
388
|
}
|
|
389
|
-
|
|
390
389
|
//#endregion
|
|
391
390
|
export { parseIccColorSpace as a, extractIccProfile as i, optimizeAllImages as n, parseIccDescription as o, embedIccProfile as r, batchOptimize_exports as t };
|
|
392
|
-
|
|
391
|
+
|
|
392
|
+
//# sourceMappingURL=batchOptimize-CjLGD5ie.mjs.map
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
const require_rolldown_runtime = require('./rolldown-runtime-CKhH4XqG.cjs');
|
|
2
|
-
|
|
3
1
|
//#region src/wasm/jpeg/bridge.ts
|
|
4
|
-
var bridge_exports = /* @__PURE__ */
|
|
2
|
+
var bridge_exports = /* @__PURE__ */ require("./rolldown-runtime-ak5kbic3.cjs").__exportAll({
|
|
5
3
|
decodeJpegWasm: () => decodeJpegWasm,
|
|
6
4
|
encodeJpegWasm: () => encodeJpegWasm,
|
|
7
5
|
initJpegWasm: () => initJpegWasm,
|
|
@@ -22,7 +20,7 @@ async function initJpegWasm(wasmSource) {
|
|
|
22
20
|
wasmModule = wasmSource;
|
|
23
21
|
return;
|
|
24
22
|
}
|
|
25
|
-
const { loadWasmModule: loadWasm } = await Promise.resolve().then(() => require("./loader-
|
|
23
|
+
const { loadWasmModule: loadWasm } = await Promise.resolve().then(() => require("./loader-DR7H0XOf.cjs")).then((n) => n.loader_exports);
|
|
26
24
|
const wasmBytes = await loadWasm("jpeg");
|
|
27
25
|
wasmModule = (await WebAssembly.instantiate(wasmBytes.buffer, { env: {} })).instance.exports;
|
|
28
26
|
} catch {
|
|
@@ -97,36 +95,36 @@ function decodeJpegWasm(jpegBytes) {
|
|
|
97
95
|
return;
|
|
98
96
|
}
|
|
99
97
|
}
|
|
100
|
-
|
|
101
98
|
//#endregion
|
|
102
|
-
Object.defineProperty(exports,
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
99
|
+
Object.defineProperty(exports, "bridge_exports", {
|
|
100
|
+
enumerable: true,
|
|
101
|
+
get: function() {
|
|
102
|
+
return bridge_exports;
|
|
103
|
+
}
|
|
107
104
|
});
|
|
108
|
-
Object.defineProperty(exports,
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
105
|
+
Object.defineProperty(exports, "decodeJpegWasm", {
|
|
106
|
+
enumerable: true,
|
|
107
|
+
get: function() {
|
|
108
|
+
return decodeJpegWasm;
|
|
109
|
+
}
|
|
113
110
|
});
|
|
114
|
-
Object.defineProperty(exports,
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
111
|
+
Object.defineProperty(exports, "encodeJpegWasm", {
|
|
112
|
+
enumerable: true,
|
|
113
|
+
get: function() {
|
|
114
|
+
return encodeJpegWasm;
|
|
115
|
+
}
|
|
119
116
|
});
|
|
120
|
-
Object.defineProperty(exports,
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
117
|
+
Object.defineProperty(exports, "initJpegWasm", {
|
|
118
|
+
enumerable: true,
|
|
119
|
+
get: function() {
|
|
120
|
+
return initJpegWasm;
|
|
121
|
+
}
|
|
125
122
|
});
|
|
126
|
-
Object.defineProperty(exports,
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
123
|
+
Object.defineProperty(exports, "isJpegWasmReady", {
|
|
124
|
+
enumerable: true,
|
|
125
|
+
get: function() {
|
|
126
|
+
return isJpegWasmReady;
|
|
127
|
+
}
|
|
131
128
|
});
|
|
132
|
-
|
|
129
|
+
|
|
130
|
+
//# sourceMappingURL=bridge-ByvzPu5h.cjs.map
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { Vu as __exportAll } from "./index-C1lZe66f.d.mts";
|
|
3
2
|
//#region src/wasm/jpeg/bridge.ts
|
|
4
3
|
var bridge_exports = /* @__PURE__ */ __exportAll({
|
|
5
4
|
decodeJpegWasm: () => decodeJpegWasm,
|
|
@@ -22,7 +21,7 @@ async function initJpegWasm(wasmSource) {
|
|
|
22
21
|
wasmModule = wasmSource;
|
|
23
22
|
return;
|
|
24
23
|
}
|
|
25
|
-
const { loadWasmModule: loadWasm } = await import("./loader-
|
|
24
|
+
const { loadWasmModule: loadWasm } = await import("./loader-B1Ix7ozU.mjs").then((n) => n.l);
|
|
26
25
|
const wasmBytes = await loadWasm("jpeg");
|
|
27
26
|
wasmModule = (await WebAssembly.instantiate(wasmBytes.buffer, { env: {} })).instance.exports;
|
|
28
27
|
} catch {
|
|
@@ -97,7 +96,7 @@ function decodeJpegWasm(jpegBytes) {
|
|
|
97
96
|
return;
|
|
98
97
|
}
|
|
99
98
|
}
|
|
100
|
-
|
|
101
99
|
//#endregion
|
|
102
100
|
export { isJpegWasmReady as a, initJpegWasm as i, decodeJpegWasm as n, encodeJpegWasm as r, bridge_exports as t };
|
|
103
|
-
|
|
101
|
+
|
|
102
|
+
//# sourceMappingURL=bridge-ZD6O6QQa.mjs.map
|