Ir para o conteúdo do rodapé
FERRAMENTAS DE PDF

Como converter HTML para PDF em Node.js usando o Puppeteer

No mundo digital de hoje, é crucial ter a capacidade de converter páginas da web ou documentos HTML em arquivos PDF. Isso pode ser útil para gerar relatórios, criar faturas ou simplesmente compartilhar informações em um formato mais apresentável. Neste artigo, vamos explorar como converter páginas HTML em PDF usando Node.js e Puppeteer, uma biblioteca de código aberto desenvolvida pelo Google.

Introdução ao Puppeteer

Puppeteer é uma poderosa biblioteca Node.js que permite aos desenvolvedores controlar navegadores sem interface gráfica, principalmente o Google Chrome ou o Chromium, e executar diversas ações como extração de dados da web, captura de tela e geração de PDFs. O Puppeteer oferece uma API abrangente para interagir com o navegador, tornando-o uma excelente opção para converter HTML em PDF.

Por que usar o Puppeteer?

  • Facilidade de uso: O Puppeteer oferece uma API simples e fácil de usar que abstrai as complexidades de trabalhar com navegadores sem interface gráfica.
  • Poderoso: O Puppeteer oferece amplas funcionalidades para manipular páginas web e interagir com elementos do navegador.
  • Escalável: Com o Puppeteer, você pode facilmente escalar seu processo de geração de PDF executando várias instâncias do navegador em paralelo.

Configurando seu projeto Node.js

Antes de começarmos, você precisará configurar um novo projeto Node.js. Siga estes passos para começar:

  1. Instale o Node.js, caso ainda não o tenha feito (você pode baixá-lo do site do Node.js ).
  2. Crie uma nova pasta para o seu projeto e abra-a no Visual Studio Code ou em qualquer outro editor de código específico.
  3. Execute npm init para criar um novo arquivo package.json para o seu projeto. Siga as instruções e preencha as informações solicitadas.

    Como converter HTML para PDF em Node.js: Figura 1

  4. Instale o Puppeteer executando npm install puppeteer.

    Como converter HTML para PDF em Node.js: Figura 2

Agora que nosso projeto está configurado, vamos mergulhar no código.

Carregando modelo HTML e convertendo para arquivo PDF

Para converter modelos HTML em um arquivo PDF usando o Puppeteer, siga estes passos:

Crie um arquivo chamado "HTML To PDF.js" na pasta.

Importando o Puppeteer e o fs

const puppeteer = require('puppeteer');
const fs = require('fs');

O código começa importando duas bibliotecas essenciais: puppeteer, uma ferramenta versátil para controlar navegadores sem interface gráfica como o Chrome e o Chromium, e fs, um módulo Node.js integrado para lidar com operações do sistema de arquivos. O Puppeteer permite automatizar uma ampla gama de tarefas baseadas na web, incluindo renderização de HTML, captura de telas e geração de arquivos PDF.

Definindo a função exportWebsiteAsPdf

async function exportWebsiteAsPdf(html, outputPath) {
  // Create a browser instance
  const browser = await puppeteer.launch({
    headless: true // Launches the browser in headless mode
  });

  // Create a new page
  const page = await browser.newPage();

  // Set the HTML content for the page, waiting for DOM content to load
  await page.setContent(html, { waitUntil: 'domcontentloaded' });

  // To reflect CSS used for screens instead of print
  await page.emulateMediaType('screen');

  // Download the PDF
  const PDF = await page.pdf({
    path: outputPath,
    margin: { top: '100px', right: '50px', bottom: '100px', left: '50px' },
    printBackground: true,
    format: 'A4',
  });

  // Close the browser instance
  await browser.close();

  return PDF;
}

A função exportWebsiteAsPdf serve como núcleo do nosso trecho de código. Esta função assíncrona aceita uma string html e uma string outputPath como parâmetros de entrada e retorna um arquivo PDF. A função executa os seguintes passos:

  1. Inicia uma nova instância de navegador sem interface gráfica usando o Puppeteer.
  2. Cria uma nova página no navegador.
  3. Define a string fornecida html como o conteúdo da página, aguardando o carregamento do conteúdo DOM.
  4. Emula o tipo de mídia 'tela' para aplicar o CSS usado para telas em vez de estilos específicos para impressão.
  5. Gera um arquivo PDF a partir do conteúdo HTML carregado, especificando margens, impressão de fundo e formato (A4).
  6. Fecha a instância do navegador.
  7. Retorna o arquivo PDF criado.

Utilizando a função exportWebsiteAsPdf

// Usage example
// Get HTML content from HTML file
const html = fs.readFileSync('test.html', 'utf-8');

// Convert the HTML content into a PDF and save it to the specified path
exportWebsiteAsPdf(html, 'result.pdf').then(() => {
  console.log('PDF created successfully.');
}).catch((error) => {
  console.error('Error creating PDF:', error);
});

A última seção do código ilustra como usar a função exportWebsiteAsPdf. Realizamos os seguintes passos:

  1. Leia o conteúdo HTML de um arquivo HTML usando o método fs do módulo.
  2. Chame a função exportWebsiteAsPdf com a string html carregada e o outputPath desejado.
  3. Utilize um bloco .then para lidar com a criação bem-sucedida do PDF, registrando uma mensagem de sucesso no console.
  4. Utilize um bloco .catch para gerenciar quaisquer erros que ocorram durante o processo de conversão de HTML para PDF, registrando uma mensagem de erro no console.

Este trecho de código fornece um exemplo completo de como converter um modelo HTML em um arquivo PDF usando Node.js e Puppeteer. Ao implementar essa solução, você pode gerar PDFs de alta qualidade de forma eficiente, atendendo às necessidades de diversas aplicações e usuários.

Como converter HTML para PDF em Node.js: Figura 3

Converter URLs em arquivos PDF

Além de converter modelos HTML, o Puppeteer também permite converter URLs diretamente em arquivos PDF.

Importando o Puppeteer

const puppeteer = require('puppeteer');

O código começa importando a biblioteca Puppeteer, que é uma ferramenta poderosa para controlar navegadores sem interface gráfica, como o Chrome e o Chromium. O Puppeteer permite automatizar uma variedade de tarefas baseadas na web, incluindo a renderização do seu código HTML, a captura de screenshots e, no nosso caso, a geração de arquivos PDF.

Definindo a função exportWebsiteAsPdf

async function exportWebsiteAsPdf(websiteUrl, outputPath) {
  // Create a browser instance
  const browser = await puppeteer.launch({
    headless: true // Launches the browser in headless mode
  });

  // Create a new page
  const page = await browser.newPage();

  // Open the URL in the current page
  await page.goto(websiteUrl, { waitUntil: 'networkidle0' });

  // To reflect CSS used for screens instead of print
  await page.emulateMediaType('screen');

  // Download the PDF
  const PDF = await page.pdf({
    path: outputPath,
    margin: { top: '100px', right: '50px', bottom: '100px', left: '50px' },
    printBackground: true,
    format: 'A4',
  });

  // Close the browser instance
  await browser.close();

  return PDF;
}

A função exportWebsiteAsPdf é o núcleo do nosso trecho de código. Esta função assíncrona aceita um websiteUrl e um outputPath como parâmetros de entrada e retorna um arquivo PDF. A função executa os seguintes passos:

  1. Inicia uma nova instância de navegador sem interface gráfica usando o Puppeteer.
  2. Cria uma nova página no navegador.
  3. Navega até o websiteUrl fornecido e aguarda que a rede fique ociosa usando a opção waitUntil definida como networkidle0.
  4. Emula o tipo de mídia 'tela' para garantir que o CSS usado para telas seja aplicado em vez de estilos específicos para impressão.
  5. Converte a página web carregada em um arquivo PDF com as margens, impressão de fundo e formato (A4) especificados.
  6. Fecha a instância do navegador.
  7. Retorna o arquivo PDF gerado.

Utilizando a função exportWebsiteAsPdf

// Usage example
// Convert the URL content into a PDF and save it to the specified path
exportWebsiteAsPdf('https://ironpdf.com/', 'result.pdf').then(() => {
  console.log('PDF created successfully.');
}).catch((error) => {
  console.error('Error creating PDF:', error);
});

A seção final do código demonstra como usar a função exportWebsiteAsPdf. Executamos os seguintes passos:

  1. Chame a função exportWebsiteAsPdf com os valores desejados websiteUrl e outputPath.
  2. Use um bloco then para lidar com a criação bem-sucedida do PDF. Neste bloco, registramos uma mensagem de sucesso no console.
  3. Use um bloco catch para lidar com quaisquer erros que ocorram durante o processo de conversão do site para PDF. Se ocorrer um erro, registramos uma mensagem de erro no console.

Ao integrar este trecho de código em seus projetos, você pode converter URLs em arquivos PDF de alta qualidade sem esforço, usando Node.js e Puppeteer.

Como converter HTML para PDF em Node.js: Figura 4

Melhor biblioteca de HTML para PDF para desenvolvedores C

Explore o IronPDF , uma biblioteca .NET popular usada para gerar, editar e extrair conteúdo de arquivos PDF. Oferece uma solução simples e eficiente para criar PDFs a partir de HTML, texto, imagens e documentos PDF existentes. O IronPDF é compatível com projetos .NET Core, .NET Framework e .NET 5.0+, tornando-se uma opção versátil para diversas aplicações.

Principais características do IronPDF

Conversão de HTML para PDF com o IronPDF : O IronPDF permite converter conteúdo HTML, incluindo CSS, em arquivos PDF. Este recurso permite criar documentos PDF com precisão de pixels a partir de páginas da web ou modelos HTML.

Renderização de URL: O IronPDF pode buscar páginas da web diretamente de um servidor usando uma URL e convertê-las em arquivos PDF, facilitando o arquivamento de conteúdo da web ou a geração de relatórios a partir de páginas da web dinâmicas.

Fusão de texto, imagem e PDF: O IronPDF permite mesclar texto, imagens e arquivos PDF existentes em um único documento PDF. Essa funcionalidade é particularmente útil para criar documentos complexos com múltiplas fontes de conteúdo.

Manipulação de PDF: O IronPDF oferece ferramentas para editar arquivos PDF existentes, como adicionar ou remover páginas, modificar metadados ou até mesmo extrair texto e imagens de documentos PDF.

Conclusão

Em conclusão, gerar e manipular arquivos PDF é um requisito comum em muitas aplicações, e ter as ferramentas certas à disposição é crucial. As soluções apresentadas neste artigo, como o uso do Puppeteer com Node.js ou do IronPDF com .NET, oferecem métodos poderosos e eficientes para converter conteúdo HTML e URLs em documentos PDF profissionais e de alta qualidade.

O IronPDF, em particular, destaca-se pelo seu extenso conjunto de recursos, tornando-se uma das principais opções para desenvolvedores .NET . O IronPDF oferece um período de teste gratuito que permite explorar suas funcionalidades.

Os usuários também podem se beneficiar do pacote Iron Suite , um conjunto de cinco bibliotecas profissionais .NET , incluindo IronXL , IronPDF , IronOCR e outras.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim