In diesem Artikel erfahren Sie, wie Sie PDF-Seiten mit Node.js in Bilder konvertieren. Dies kann nützlich sein, um Miniaturansichten zu erstellen oder visuelle Inhalte aus PDF-Dateien zu extrahieren. Wir verwenden die pdfjs-dist-Bibliothek zum Laden und Rendern von PDF-Seiten und Canvas zum Erstellen von Bildpuffern.
Voraussetzungen
Bevor Sie beginnen, müssen Sie die erforderlichen Pakete installieren:
npm install pdfjs-dist Canvas
Code zum Konvertieren von PDF-Seiten in Bilder und zum lokalen Speichern:
const fs = require('fs'); const path = require('path'); const pdfjs = require('pdfjs-dist/legacy/build/pdf.js'); const Canvas = require('canvas'); /** * Converts a PDF to images by rendering each page and saving them to a local directory. * * @param {Buffer} pdfBuffer - The PDF file as a buffer. * @param {string} outputDir - The directory where images will be saved. * @returns {Promise<void>} Resolves when all images are saved. */ async function convertPdfToImages(pdfBuffer, outputDir) { try { // Ensure the output directory exists if (!fs.existsSync(outputDir)) { fs.mkdirSync(outputDir, { recursive: true }); } // Load the original PDF using pdf.js const loadingTask = pdfjs.getDocument({ data: pdfBuffer }); const pdfDocument = await loadingTask.promise; // Loop through each page of the PDF for (let i = 1; i <= pdfDocument.numPages; i++) { const page = await pdfDocument.getPage(i); // Render the page as an image and save it const imageBuffer = await renderPageToImage(page); // Save the image to the output directory const imagePath = path.join(outputDir, `page_${i}.jpg`); fs.writeFileSync(imagePath, imageBuffer); console.log(`Saved: ${imagePath}`); } } catch (error) { console.error('Error converting PDF to images:', error); } } /** * Renders a single PDF page to an image buffer. * * @param {PDFPageProxy} page - The PDF.js page object. * @returns {Promise<Buffer>} The image as a buffer (JPEG format). */ async function renderPageToImage(page) { // Scale the page to 2x for a higher quality image output const viewport = page.getViewport({ scale: 2.0 }); const canvas = Canvas.createCanvas(viewport.width, viewport.height); const context = canvas.getContext('2d'); const renderContext = { canvasContext: context, viewport: viewport, }; // Render the PDF page to the canvas await page.render(renderContext).promise; // Convert the canvas content to a JPEG image buffer and return it return canvas.toBuffer('image/jpeg'); } // Example usage: // const pdfBuffer = fs.readFileSync('sample.pdf'); // convertPdfToImages(pdfBuffer, './output_images');
Code-Erklärung
const loadingTask = pdfjs.getDocument({ data: pdfBuffer }); const pdfDocument = await loadingTask.promise;
const page = await pdfDocument.getPage(pageNumber); const renderContext = { canvasContext: context, viewport: viewport, }; await page.render(renderContext).promise;
fs.writeFileSync(imagePath, imageBuffer);
Fazit:
Dieser Ansatz funktioniert effizient bei der Konvertierung von PDFs in Bilder und ermöglicht Ihnen die Verarbeitung oder Visualisierung von PDF-Inhalten. Für qualitativ hochwertige Bilder skalieren wir die Leinwand auf das Zweifache. Dies kann ganz einfach an Ihre Bedürfnisse angepasst werden.
Ich hoffe, das hilft! Passen Sie den Code gerne an Ihre Anforderungen an.
Das obige ist der detaillierte Inhalt vonSo konvertieren Sie PDF-Seiten in Bilder in Node.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!