upload stuff

This commit is contained in:
seb
2026-09-20 07:18:43 +02:00
parent 4011ebfc61
commit 5594c59d88
9 changed files with 249 additions and 344 deletions

View File

@@ -1,7 +1,8 @@
import { pdfToText } from 'pdftotext-wasm';
import { pdfToText, splitPdfPages } from 'pdfconvert-wasm';
export async function extractPdfText(pdfSource, options = { layout: true }) {
return pdfToText(pdfSource, options);
}
export { pdfToText };
export { pdfToText, splitPdfPages };

View File

@@ -1,36 +1,22 @@
import * as pdfjsLib from 'pdfjs-dist';
// Tells Vite/Webpack to emit the worker script as an asset file locally
pdfjsLib.GlobalWorkerOptions.workerSrc = new URL(
'pdfjs-dist/build/pdf.worker.mjs',
import.meta.url
).toString();
import { pdfToPng } from 'pdfconvert-wasm';
export async function generatePdfThumbnail(pdfSource, targetWidth = 200) {
let loadingTask;
if (pdfSource instanceof File || pdfSource instanceof Blob) {
const arrayBuffer = await pdfSource.arrayBuffer();
loadingTask = pdfjsLib.getDocument({ data: arrayBuffer });
} else {
loadingTask = pdfjsLib.getDocument(pdfSource);
const images = await pdfToPng(pdfSource, {
firstPage: 1,
singleFile: true,
scaleToX: targetWidth,
});
if (!images || images.length === 0) {
return null;
}
const pdf = await loadingTask.promise;
const page = await pdf.getPage(1);
const unscaledViewport = page.getViewport({ scale: 1 });
const scale = targetWidth / unscaledViewport.width;
const viewport = page.getViewport({ scale });
const canvas = document.createElement('canvas');
const context = canvas.getContext('2d');
canvas.width = Math.floor(viewport.width);
canvas.height = Math.floor(viewport.height);
await page.render({
canvasContext: context,
viewport: viewport,
}).promise;
return canvas.toDataURL('image/jpeg', 0.85);
const blob = new Blob([images[0].data], { type: 'image/png' });
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onloadend = () => resolve(reader.result);
reader.onerror = reject;
reader.readAsDataURL(blob);
});
}