Como criar arquivos PDF em Node.js
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
- Instale o IronPDF via npm:
npm install @ironsoftware/ironpdf - Importe
PdfDocumentde@ironsoftware/ironpdf - Ligue para
PdfDocument.fromHtml()com seu conteúdo HTML. - 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.
Fluxo de trabalho mínimo (5 etapas)
- Instale o IronPDF:
npm install @ironsoftware/ironpdf - Importe
PdfDocumentde@ironsoftware/ironpdf - Gere um PDF usando
PdfDocument.fromHtml(),PdfDocument.fromFile()ouPdfDocument.fromUrl() - Aplique configurações opcionais: tamanho do papel, margens, cabeçalhos, rodapés
- Salve a saída com
pdf.saveAs("output.pdf")
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
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:
| Plataforma | Pacote |
|---|---|
| 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 |
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çãoPdfPaperSize(A4, Carta, Ofício e tamanhos personalizados )landscape: definatruepara orientação de página em paisagemprintBackground: incluir cores e imagens de fundo em CSSmarginTop/Bottom/Left/Right: margens da página em milímetrosrenderDelay: 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.
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:
- Remover uma página de um PDF usando
removePages() - Inserir conteúdo HTML em um documento existente
- Localizar e substituir texto em todas as páginas
- Extrair texto de um PDF para indexação ou processamento.
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.
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.

