Como criar arquivos PDF em Node.js

This article was translated from English: Does it need improvement?
Translated
View the article in English

Criar arquivos PDF programaticamente no Node.js requer uma biblioteca que trate a renderização de HTML com precisão, suporte CSS moderno e se integre de maneira limpa com os padrões assíncronos do Node. IronPDF usa um motor de renderização baseado em Chromium para converter conteúdo HTML em PDFs que correspondem à saída de impressão do Chrome, suportando CSS completo, JavaScript embutido e layouts responsivos sem esforço.

Este guia cobre o fluxo de trabalho completo: instalação, geração de PDFs a partir de strings HTML, arquivos HTML e URLs, configuração de opções de saída e aplicação de recursos empresariais como cabeçalhos, rodapés, assinaturas digitais e criptografia.

Início Rápido: Crie um PDF no Node.js

  1. Instale o IronPDF via npm: npm install @ironsoftware/ironpdf
  2. Importe PdfDocument de @ironsoftware/ironpdf
  3. Ligue para PdfDocument.fromHtml() com seu conteúdo HTML.
  4. Chame .saveAs() para gravar o arquivo PDF no disco.
//:path=/static-assets/pdf/content-code-examples/tutorials/nodejs-create-pdf/quickstart.js
import { PdfDocument } from "@ironsoftware/ironpdf";

const pdf = await PdfDocument.fromHtml("<h1>Hello, PDF!</h1><p>Generated with IronPDF.</p>");
await pdf.saveAs("output.pdf");

Configure o IronPdfEngine para sua plataforma antes de executar em produção. Veja o guia de configuração IronPdfEngine para instruções no Windows, Linux, macOS e Docker.

Como faço para instalar o IronPDF for Node.js?

Instale o pacote @ironsoftware/ironpdf usando o npm . O pacote funciona com Node.js 12.0 ou superior e suporta formatos de módulo ESM e CommonJS.

//:path=/static-assets/pdf/content-code-examples/tutorials/nodejs-create-pdf/install.sh
npm install @ironsoftware/ironpdf
//:path=/static-assets/pdf/content-code-examples/tutorials/nodejs-create-pdf/install.sh
npm install @ironsoftware/ironpdf
SHELL

O IronPDF for Node.js depende do binário IronPDF Engine, que lida com o rendering baseado em Chromium subjacente. O motor é baixado automaticamente na primeira execução, mas você pode pré-instalar o pacote específico da plataforma para evitar downloads em tempo de execução. Isso é útil em ambientes de rede restritos ou pipelines de CI baseados em Docker:

Pacotes de plataforma IronPDF Engine para pré-instalação em ambientes offline ou restritos
PlataformaPacote
Windows x64@ironsoftware/ironpdf-engine-windows-x64
Linux x64@ironsoftware/ironpdf-engine-linux-x64
macOS x64@ironsoftware/ironpdf-engine-macos-x64
macOS ARM@ironsoftware/ironpdf-engine-macos-arm64

ObserveUma chave de licença válida remove a marca d'água dos PDFs gerados. Aplique-o antes da sua primeira chamada PdfDocument definindo IronPdfGlobalConfig.setConfig({ licenseKey: "YOUR-KEY" }). Siga as instruções completas de configuração da chave de licença.

Quais são os requisitos de sistema para o IronPDF?

IronPDF for Node.js executa no Node.js 12.0 ou superior em ambientes Windows, Linux, macOS e Docker. A biblioteca suporta arquiteturas x64 e ARM64, tornando-a adequada para desenvolvimento local e implantações em contêiner. Para ambientes em nuvem, o IronPDF também suporta conexão a um IronPDF Engine remoto em vez de executar o motor localmente.


Como Eu Crio um PDF a partir de HTML no Node.js?

Use PdfDocument.fromHtml() para gerar um PDF a partir de uma string HTML. O método aceita qualquer HTML válido, incluindo blocos embutidos <style>, fontes externas carregadas via CDN e sistemas de layout como CSS Grid ou Flexbox. O renderizador Chromium resolve todos os recursos antes de gerar o PDF.

//:path=/static-assets/pdf/content-code-examples/tutorials/nodejs-create-pdf/html-string-to-pdf.js
import { PdfDocument } from "@ironsoftware/ironpdf";

const htmlContent = `
  <!DOCTYPE html>
  <html>
  <head>
    <style>
      body { font-family: Arial, sans-serif; margin: 0; padding: 0; }
      .header { background: #2b4c8c; color: white; padding: 24px 32px; }
      .header h1 { margin: 0; font-size: 22px; }
      .body { padding: 32px; }
      table { width: 100%; border-collapse: collapse; margin-top: 16px; }
      th { background: #f0f4fb; text-align: left; padding: 8px 12px; }
      td { padding: 8px 12px; border-bottom: 1px solid #e0e0e0; }
    </style>
  </head>
  <body>
    <div class="header"><h1>Invoice #INV-2025-0042</h1></div>
    <div class="body">
      <p>Date: ${new Date().toLocaleDateString()}</p>
      <table>
        <tr><th>Item</th><th>Qty</th><th>Unit Price</th><th>Total</th></tr>
        <tr><td>IronPDF Enterprise License</td><td>1</td><td>$499.00</td><td>$499.00</td></tr>
        <tr><td>Priority Support (1 year)</td><td>1</td><td>$199.00</td><td>$199.00</td></tr>
      </table>
      <p style="text-align:right; margin-top:16px;"><strong>Total: $698.00</strong></p>
    </div>
  </body>
  </html>`;

// Generate the PDF from the HTML string
const pdf = await PdfDocument.fromHtml(htmlContent);
await pdf.saveAs("invoice.pdf");

PdfDocument.fromHtml() retorna uma instância de PdfDocument. Chame saveAs() com o caminho de saída desejado para gravar o arquivo. O método é assíncrono, portanto, use await ou encadeie um manipulador .then(). O motor Chromium lida com carregamento de fontes, folhas de estilo externas e resolução de ativos antes de capturar a saída. Para mais padrões, veja o exemplo de string HTML para PDF.

Como Eu Crio um PDF a partir de um Arquivo HTML?

Carregar um arquivo .html existente do disco usando PdfDocument.fromFile(). Essa abordagem funciona bem para documentos com modelo onde o HTML é mantido separado da lógica da aplicação.

//:path=/static-assets/pdf/content-code-examples/tutorials/nodejs-create-pdf/html-file-to-pdf.js
import { PdfDocument } from "@ironsoftware/ironpdf";

// Load an HTML file and render it as a PDF
const pdf = await PdfDocument.fromFile("./templates/report-template.html");
await pdf.saveAs("./output/report.pdf");

O renderizador resolve caminhos de ativos relativos a partir do diretório do arquivo HTML, para que referências locais de CSS e imagem funcionem sem configuração adicional. Veja o exemplo de arquivo HTML para PDF para opções adicionais, incluindo como substituir o URL base para resolução de ativos.

Como Eu Gero um PDF a partir de um URL?

Use PdfDocument.fromUrl() para renderizar uma página da web em tempo real como um PDF. O renderizador carrega a página como uma sessão de navegador completa, executando JavaScript, aplicando CSS, e esperando por conteúdo dinâmico antes de capturar a saída.

//:path=/static-assets/pdf/content-code-examples/tutorials/nodejs-create-pdf/url-to-pdf.js
import { PdfDocument } from "@ironsoftware/ironpdf";

// Render a live webpage to PDF
const pdf = await PdfDocument.fromUrl("https://ironpdf.com/nodejs/");
await pdf.saveAs("ironpdf-homepage.pdf");

Para páginas que carregam conteúdo de forma assíncrona via JavaScript, combine isso com a opção renderDelay (em milissegundos) para permitir um tempo adicional antes da captura. O exemplo de URL para PDF demonstra configuração de atraso e cabeçalhos de autenticação.


Como Eu Configuro as Configurações de Saída do PDF?

Passe um objeto de configuração como segundo argumento para PdfDocument.fromHtml(), PdfDocument.fromFile() ou PdfDocument.fromUrl(). O objeto de configuração aceita tamanho do papel, margens, orientação e opções de renderização.

//:path=/static-assets/pdf/content-code-examples/tutorials/nodejs-create-pdf/pdf-settings.js
import { PdfDocument, PdfPaperSize } from "@ironsoftware/ironpdf";

const config = {
    paperSize: PdfPaperSize.A4,
    marginTop: 25,
    marginBottom: 25,
    marginLeft: 20,
    marginRight: 20,
    landscape: false,
    printBackground: true,
};

const pdf = await PdfDocument.fromHtml("<h1>Configured PDF</h1>", config);
await pdf.saveAs("configured-output.pdf");

Principais opções de configuração incluem:

  • paperSize: aceita valores de enumeração PdfPaperSize (A4, Carta, Ofício e tamanhos personalizados )
  • landscape: defina true para orientação de página em paisagem
  • printBackground: incluir cores e imagens de fundo em CSS
  • marginTop/Bottom/Left/Right: margens da página em milímetros
  • renderDelay: milissegundos de espera antes da captura para páginas com uso intensivo de JavaScript

Como Eu Adiciono Cabeçalhos e Rodapés a um PDF?

Adicione cabeçalhos e rodapés fornecendo as propriedades htmlHeader e htmlFooter no objeto de configuração. Ambos aceitam strings HTML completas, permitindo conteúdo estilizado com números de página, datas e texto dinâmico.

//:path=/static-assets/pdf/content-code-examples/tutorials/nodejs-create-pdf/headers-footers.js
import { PdfDocument } from "@ironsoftware/ironpdf";

const config = {
    htmlHeader: {
        htmlFragment: "<div style='text-align:center; font-size:12px; color:#666;'>Quarterly Report - Confidential</div>",
        dividerLine: true,
    },
    htmlFooter: {
        htmlFragment: "<div style='text-align:right; font-size:10px;'>Page {page} of {total-pages}</div>",
        dividerLine: true,
    },
};

const pdf = await PdfDocument.fromHtml("<h1>Q3 Financial Summary</h1><p>See attached tables.</p>", config);
await pdf.saveAs("report-with-headers.pdf");

Use os tokens {page} e {total-pages} no HTML do rodapé; O IronPDF substitui os valores corretos no momento da renderização. Para mais padrões de cabeçalhos e rodapés, incluindo cabeçalhos e rodapés em HTML e técnicas avançadas de cabeçalho, veja os exemplos vinculados.


Como Eu Adiciono Segurança e Metadados a um PDF?

Aplique proteção por senha e criptografia a um PDF gerado usando os métodos de segurança PdfDocument. A biblioteca suporta senhas de proprietário e usuário, com controles de permissão granulares para impressão, cópia e edição.

//:path=/static-assets/pdf/content-code-examples/tutorials/nodejs-create-pdf/security.js
import { PdfDocument } from "@ironsoftware/ironpdf";

const pdf = await PdfDocument.fromHtml("<h1>Confidential Document</h1>");

// Apply password protection with granular permissions
await pdf.securePdf({
    userPassword: "view-password",
    ownerPassword: "admin-password",
    allowUserAnnotations: false,
    allowUserPrinting: true,
    allowUserCopyPasteContent: false,
});

await pdf.saveAs("secured-document.pdf");

Criptografia e descriptografia usam criptografia AES 256 bits por padrão quando senhas são aplicadas. Para fluxos de autenticação de documentos, o IronPDF também suporta assinaturas digitais usando certificados X.509.

PontasPara documentos que exigem conformidade de arquivamento de longo prazo, use PdfDocument.fromHtml() seguido pelo método de conversão PDF/A. IronPDF suporta conformidade PDF/A e padrões de acessibilidade PDF/UA.


Como faço para mesclar e manipular PDFs existentes?

PdfDocument fornece métodos para mesclar, dividir e modificar arquivos PDF existentes. Carregue um PDF existente com PdfDocument.fromFile() e use os métodos de manipulação para adicionar ou remover páginas, inserir conteúdo ou substituir texto.

//:path=/static-assets/pdf/content-code-examples/tutorials/nodejs-create-pdf/merge-pdfs.js
import { PdfDocument } from "@ironsoftware/ironpdf";

// Merge two PDF files into one
const merged = await PdfDocument.mergePdf([
    await PdfDocument.fromFile("./report-part1.pdf"),
    await PdfDocument.fromFile("./report-part2.pdf"),
]);

await merged.saveAs("./complete-report.pdf");

PdfDocument.mergePdf() aceita um array de instâncias de PdfDocument e retorna um único documento mesclado. A ordem das páginas segue a ordem do array, portanto a saída preserva a sequência dos arquivos de entrada.

Outras operações de manipulação comuns:

Para cenários de alto volume, a geração de PDFs multithread permite processar vários documentos em paralelo. A compressão de PDF reduz o tamanho dos arquivos para armazenamento e transmissão.


Como faço para gerar PDFs para conteúdo complexo, como gráficos e páginas Angular?

O IronPDF renderiza páginas usando uma sessão completa do navegador Chromium, o que significa que as bibliotecas JavaScript que produzem gráficos, tabelas ou visualizações de dados são renderizadas corretamente, incluindo bibliotecas de gráficos JavaScript . Aplicativos de página única criados com frameworks como o Angular também são convertidos sem problemas usando o exemplo de Angular para PDF .

Para documentos com uso intensivo de Unicode ou saída em vários idiomas, o IronPDF lida com Unicode e conjuntos de caracteres internacionais sem configuração adicional. O exemplo de integração do Google Fonts mostra como carregar fontes da web no HTML renderizado para obter tipografia consistente no PDF de saída.

ObserveO renderizador Chromium do IronPDF executa JavaScript antes de capturar o PDF. Se sua biblioteca de gráficos ou SPA exigir tempo adicional para renderizar os dados após o carregamento do DOM, defina renderDelay em milissegundos para dar tempo à página de renderizar completamente.


Quais são os próximos passos para criar PDFs em Node.js?

Este guia abordou o fluxo de trabalho principal do IronPDF : instalação da biblioteca, geração de PDFs a partir de strings HTML, arquivos e URLs, configuração das definições de saída, adição de cabeçalhos e rodapés, aplicação de segurança e manipulação de PDFs existentes.

Para continuar, experimente o tutorial completo de HTML para PDF para uma explicação mais detalhada das opções de renderização ou consulte a Referência da API para obter a lista completa de métodos e propriedades de configuração.

Inicie seu teste gratuito para gerar PDFs sem marcas d'água ou veja as opções de licenciamento para implantações em produção.

Perguntas frequentes

Qual é a maneira mais fácil de criar arquivos PDF em Node.js?

Instale IronPDF com npm install @ironsoftware/ironpdf, depois chame PdfDocument.fromHtml() com sua string HTML e salve o resultado usando saveAs(). A biblioteca lida com toda a renderização automaticamente.

Como faço para instalar o IronPDF for Node.js?

Execute npm install @ironsoftware/ironpdf no diretório do seu projeto. O binário do IronPDF Engine é baixado automaticamente na primeira utilização. Para ambientes offline ou CI, instale o pacote do motor específico da plataforma, como @ironsoftware/ironpdf-engine-linux-x64, separadamente.

Posso converter HTML para PDF preservando os estilos CSS e a formatação?

Sim. O IronPDF usa um motor de renderização baseado em Chromium que preserva todos os estilos CSS, fontes externas e execução de JavaScript ao converter HTML para PDF. A saída corresponde ao comportamento da visualização de impressão do Chrome.

Quais recursos do PDF estão disponíveis além da conversão básica de HTML?

O IronPDF suporta assinaturas digitais, criptografia AES de 256 bits, proteção por senha com permissões granulares, cabeçalhos e rodapés personalizados com tokens de número de página, mesclagem de PDFs, remoção de páginas, marcação de HTML, extração de texto, conformidade com PDF/A e geração multithread.

Como posso criar um PDF a partir de um arquivo HTML no disco?

Use PdfDocument.fromFile('./path/to/template.html'). O renderizador resolve os caminhos de ativos relativos a partir do diretório do arquivo HTML, de modo que referências locais de CSS e imagens funcionam sem configuração adicional.

Posso extrair texto de arquivos PDF existentes usando IronPDF?

Sim. Carregue um PDF existente com PdfDocument.fromFile() e use os métodos de extração de texto para ler conteúdo de qualquer página. O IronPDF suporta tanto a criação de novos PDFs quanto o processamento de documentos existentes.

O IronPDF suporta execução de JavaScript ao renderizar HTML?

Sim. O renderizador Chromium executa JavaScript antes de capturar o PDF. Para páginas que carregam conteúdo de forma assíncrona, ajuste a opção renderDelay em milissegundos para dar mais tempo à página antes da captura.

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
Pronto para começar?
Versão: 2026.5 just released
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas?
executar um exemplo Veja seu HTML se transformar em um PDF.