diff --git a/src/store/delivery/attachments.js b/src/store/delivery/attachments.js index 43a1afe..39155c6 100644 --- a/src/store/delivery/attachments.js +++ b/src/store/delivery/attachments.js @@ -152,7 +152,7 @@ export async function insertAttachments(pool, tx, sql, manifestId, files) { // Generate thumbnail server-side (e.g. pdftocairo + sharp for PDF) const { thumbavif, thumbx, thumby } = await generateDocumentThumb(a.content, a.mimetype, { filename: a.name }); - + const fileRes = await request(pool, tx) .input('hash', a.hash) .input('mimetype', a.mimetype) diff --git a/src/util/generateDocumentThumb.js b/src/util/generateDocumentThumb.js index e024040..4b986f9 100644 --- a/src/util/generateDocumentThumb.js +++ b/src/util/generateDocumentThumb.js @@ -9,7 +9,10 @@ const THUMB_MAX = 200; * @returns {Promise} */ async function renderPdfPageToPng(pdfBuffer) { - const images = await pdfToPng(pdfBuffer, { dpi: 150, singleFile: true }); + // The WASM converter may transfer (and detach) its input ArrayBuffer. Give it + // an isolated copy so the upload buffer remains usable by SQL and logging. + const pdfBytes = new Uint8Array(pdfBuffer); + const images = await pdfToPng(pdfBytes, { dpi: 150, singleFile: true }); if (!images || images.length === 0 || !images[0].data) { throw new Error('pdfconvert-wasm produced no image output'); }