"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como converter páginas PDF em imagens em Node.js

Como converter páginas PDF em imagens em Node.js

Publicado em 2024-11-07
Navegar:661

How to Convert PDF Pages to Images in Node.js

Neste artigo, abordaremos como converter páginas PDF em imagens usando Node.js. Isso pode ser útil para gerar miniaturas ou extrair conteúdo visual de arquivos PDF. Usaremos a biblioteca pdfjs-dist para carregar e renderizar páginas PDF e canvas para criar buffers de imagem.

Pré-requisitos
Antes de começar, você precisa instalar os pacotes necessários:

npm instalar tela pdfjs-dist

Código para converter páginas PDF em imagens e salvar localmente:

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} 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 } 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');

Explicação do código

  1. Carregar o PDF: usamos pdfjs-dist para carregar um arquivo PDF de um buffer.
const loadingTask = pdfjs.getDocument({ data: pdfBuffer });
const pdfDocument = await loadingTask.promise;
  1. Renderizar cada página: para cada página do PDF, nós a renderizamos em uma tela usando os métodos getPage e render de pdfjs-dist.
const page = await pdfDocument.getPage(pageNumber);
const renderContext = {
  canvasContext: context,
  viewport: viewport,
};
await page.render(renderContext).promise;
  1. Salvar imagem localmente: assim que a página for renderizada na tela, salvamos o buffer de imagem no formato JPEG usando o módulo fs do Node.js.
fs.writeFileSync(imagePath, imageBuffer);

Conclusão:
Essa abordagem funciona de forma eficiente para converter PDFs em imagens, permitindo processar ou visualizar o conteúdo do PDF. Para imagens de alta qualidade, dimensionamos a tela para 2x. Isso pode ser facilmente ajustado com base nas suas necessidades.

Espero que isso ajude! Sinta-se à vontade para adaptar o código de acordo com suas necessidades.

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/yashnarkhedkar/how-to-convert-pdf-pages-to-images-in-nodejs-2a6k?1 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3