refactor: extract PDF rendering and storage logic into dedicated service classes

This commit is contained in:
ɧσℓσ
2025-12-10 20:03:33 +01:00
parent 29f51ff6d3
commit 9d2c4170d2
3 changed files with 125 additions and 104 deletions

View File

@@ -0,0 +1,32 @@
const { createCanvas } = require('canvas');
const sharp = require('sharp');
const pdfjsLib = require('pdfjs-dist/legacy/build/pdf.js');
// Configure le worker pdfjs
pdfjsLib.GlobalWorkerOptions.workerSrc = require('pdfjs-dist/build/pdf.worker.min.js');
class PdfRenderer {
async loadPdf(pdfPath) {
const data = new Uint8Array(require('fs').readFileSync(pdfPath));
const loadingTask = pdfjsLib.getDocument({ data });
const pdf = await loadingTask.promise;
return { pdf, totalPages: pdf.numPages };
}
async renderPage(pdf, pageNumber) {
const page = await pdf.getPage(pageNumber);
const viewport = page.getViewport({ scale: 1.5 });
const canvas = createCanvas(viewport.width, viewport.height);
const context = canvas.getContext('2d');
await page.render({
canvasContext: context,
viewport,
}).promise;
const buffer = canvas.toBuffer('image/png');
return sharp(buffer).png({ quality: 90 }).toBuffer();
}
}
module.exports = PdfRenderer;