feat: opt-in JPEG-embed quality for image-to-PDF conversion

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-30 23:30:08 +02:00
co-authored by Claude Sonnet 5
parent 57d7dac2b5
commit fd99453e38
2 changed files with 39 additions and 4 deletions
+8 -4
View File
@@ -5,13 +5,17 @@ import { register } from './registry.js';
const IMAGE_FORMATS = ['jpg', 'jpeg', 'png', 'webp', 'gif', 'tiff', 'avif'];
async function convert(inputPath, outputPath) {
const pngBuffer = await sharp(inputPath).png().toBuffer();
const metadata = await sharp(pngBuffer).metadata();
async function convert(inputPath, outputPath, { quality } = {}) {
const imageBuffer =
quality == null
? await sharp(inputPath).png().toBuffer()
: await sharp(inputPath).jpeg({ quality }).toBuffer();
const metadata = await sharp(imageBuffer).metadata();
const pdfDoc = await PDFDocument.create();
const page = pdfDoc.addPage([metadata.width, metadata.height]);
const embeddedImage = await pdfDoc.embedPng(pngBuffer);
const embeddedImage =
quality == null ? await pdfDoc.embedPng(imageBuffer) : await pdfDoc.embedJpg(imageBuffer);
page.drawImage(embeddedImage, {
x: 0,