From e831a477d28f0669f7a02a2380a6a3692c6e6e8d Mon Sep 17 00:00:00 2001
From: Pavel Akhrameev
Date: Fri, 5 Dec 2025 04:29:40 +0400
Subject: [PATCH] Change image embedding from PNG to JPEG format
using PNG increased filesize from ~60 MB to ~112 MB. That's too much. May require some "quality" parameter adjustment.
---
src/js/logic/cropper.ts | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/src/js/logic/cropper.ts b/src/js/logic/cropper.ts
index e10f2ca..d68110d 100644
--- a/src/js/logic/cropper.ts
+++ b/src/js/logic/cropper.ts
@@ -219,10 +219,14 @@ async function performFlatteningCrop(cropData: any) {
finalHeight
);
- const pngBytes = await new Promise((res) =>
- finalCanvas.toBlob((blob) => blob.arrayBuffer().then(res), 'image/png')
+ // Quality value from the compress-pdf.js settings.
+ // 0.9 for "High Quality", 0.6 for "Balanced". Let's use High Quality.
+ const jpegQuality = 0.9;
+
+ const jpegBytes = await new Promise((res) =>
+ finalCanvas.toBlob((blob) => blob.arrayBuffer().then(res), 'image/jpeg', jpegQuality)
);
- const embeddedImage = await newPdfDoc.embedPng(pngBytes as ArrayBuffer);
+ const embeddedImage = await newPdfDoc.embedJpg(jpegBytes as ArrayBuffer);
const newPage = newPdfDoc.addPage([finalWidth, finalHeight]);
newPage.drawImage(embeddedImage, {
x: 0,