IRONSOFTWAREHOME

Como criar arquivos PDF em Node.js

Curtis Chau
Curtis Chau
Updated: 29 de junho de 2026

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 IronPDF via npm: npm install @ironsoftware/ironpdf
  2. Importe PdfDocument de @ironsoftware/ironpdf
  3. Chame PdfDocument.fromHtml() com seu conteúdo HTML
  4. Chame .saveAs() para gravar o arquivo PDF no disco
import { PdfDocument } from "@ironsoftware/ironpdf";

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

Configure IronPdfEngine para sua plataforma antes de rodar 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?

Install the @ironsoftware/ironpdf package using 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
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
Observe: Uma chave de licença válida remove a marca d'água dos PDFs gerados. Aplique antes de sua primeira chamada PdfDocument configurando 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 <style> inline, 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.

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");
JavaScript

PdfDocument.fromHtml() retorna uma instância PdfDocument. Chame saveAs() com seu caminho de saída desejado para gravar o arquivo. O método é assíncrono, então 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?

Carregue 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.

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");
JavaScript

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 web ao vivo 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.

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");
JavaScript

Para páginas que carregam conteúdo assincronamente via JavaScript, emparelhe isso com uma opção renderDelay (em milissegundos) para permitir 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 o 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.

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");
JavaScript

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

  • paperSize: aceita valores de enum PdfPaperSize (A4, Letter, Legal, e tamanhos personalizados)
  • landscape: defina true para orientação de página paisagem
  • printBackground: inclua cores de fundo CSS e imagens
  • marginTop/Bottom/Left/Right: margens da página em milímetros
  • renderDelay: milissegundos para esperar antes de capturar páginas pesadas 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.

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");
JavaScript

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.

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");
JavaScript

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.

Pontas: Para documentos que exigem conformidade de arquivamento a longo prazo, use PdfDocument.fromHtml() seguido do 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, carimbar conteúdo ou substituir texto.

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");
JavaScript

PdfDocument.mergePdf() aceita um array de instâncias 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.

Observe: O renderizador Chromium do IronPDF executa JavaScript antes de capturar o PDF. Se sua biblioteca de gráficos ou SPA exigir tempo adicional para renderizar dados após o carregamento do DOM, defina renderDelay em milissegundos para dar tempo de a página 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 HTML to PDF para um passo a passo mais aprofundado das opções de renderização ou navegue na Referência de API para a lista completa de métodos PdfDocument e propriedades de configuração.

Comece sua avaliação gratuita 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.

Is it possible to apply digital signatures to PDFs with IronPDF?

Yes, IronPDF supports applying digital signatures to PDFs using X.509 certificates. This feature is useful for document authentication and secure workflows.

How does IronPDF handle complex content like charts in PDFs?

IronPDF uses a full Chromium browser session to render pages, which means JavaScript chart libraries and frameworks like Angular are fully supported. This allows charts, graphs, and other complex visualizations to render correctly in the output PDFs.

What are the system requirements for using IronPDF on Node.js?

IronPDF requires Node.js 12.0 or higher and runs on Windows, Linux, macOS, and Docker environments. It supports both x64 and ARM64 architectures, making it suitable for various deployment scenarios including local development and cloud environments.

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 bem estruturados e visualmente atraentes.

...
Leia mais

Pronto para começar?

Versão:2026.6recém-lançado

Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.
Não é necessário cartão de crédito nem criação de conta.
Download do módulo Node.js para PDF
Instale com npm

Versão: 2026.6

  1. Baixe e instale o Node.js 12 ou superior.
  2. Execute o comando acima no terminal.

Licenças a partir de US$ 749

Key in blue circle

Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.

Your trial license will be sent to your email address

Sem limitações. 100% desbloqueado. Sem cartão de crédito.

OR
bullet_checkedNão é necessário cartão de crédito nem criação de conta.Sem limitações. 100% desbloqueado. Sem cartão de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
Agende sua demonstração ao vivo gratuita.
Booking Badge

Aprovado por milhões de engenheiros em todo o mundo.

Logotipos dos clientes da Iron Software
Agende sua consulta sem compromisso.
Preencha o formulário abaixo ou envie um e-mail para sales@ironsoftware.com
Os seus dados serão sempre mantidos em sigilo.
Aprovado por milhões de engenheiros em todo o mundo.
Logotipos dos clientes da Iron Software
Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.
Não é necessário cartão de crédito nem criação de conta.
Download do módulo Node.js para PDF
Instale com npm

Versão: 2026.6

  1. Baixe e instale o Node.js 12 ou superior.
  2. Execute o comando acima no terminal.

Licenças a partir de US$ 749