Heim > Web-Frontend > js-Tutorial > Hauptteil

So konvertieren Sie PDF-Seiten in Bilder in Node.js

DDD
Freigeben: 2024-09-18 19:47:36
Original
501 Leute haben es durchsucht

How to Convert PDF Pages to Images in Node.js

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');
Nach dem Login kopieren

Code-Erklärung

  1. PDF laden: Wir verwenden pdfjs-dist, um eine PDF-Datei aus einem Puffer zu laden.
const loadingTask = pdfjs.getDocument({ data: pdfBuffer });
const pdfDocument = await loadingTask.promise;
Nach dem Login kopieren
  1. Jede Seite rendern: Für jede Seite im PDF rendern wir sie mit den getPage- und render-Methoden von pdfjs-dist auf einer Leinwand.
const page = await pdfDocument.getPage(pageNumber);
const renderContext = {
  canvasContext: context,
  viewport: viewport,
};
await page.render(renderContext).promise;
Nach dem Login kopieren
  1. Bild lokal speichern: Sobald die Seite auf der Leinwand gerendert wurde, speichern wir den Bildpuffer im JPEG-Format mit dem fs-Modul von Node.js.
fs.writeFileSync(imagePath, imageBuffer);
Nach dem Login kopieren

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!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!