如何在 Node.js 中创建 PDF 文件
在Node.js中以编程方式创建PDF文件需要一个能够精确处理HTML渲染的库,支持现代CSS,并且能够与Node的异步模式无缝集成。 IronPDF使用基于Chromium的渲染引擎将HTML内容转换为与Chrome的打印输出匹配的PDF,支持完整的CSS、内联JavaScript和开箱即用的响应布局。
本指南涵盖了完整的工作流程:安装、从HTML字符串、HTML文件和URL生成PDF、配置输出选项,并应用企业特性如页眉、页脚、数字签名和加密。
快速入门:在Node.js中创建PDF
- 通过 npm 安装 IronPDF:
npm install @ironsoftware/ironpdf - 从
@ironsoftware/ironpdf导入PdfDocument - 调用
PdfDocument.fromHtml()并传入您的 HTML 内容 - 调用
.saveAs()将 PDF 文件写入磁盘
//: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");在生产环境中运行前,请先为您的平台配置 IronPdfEngine。 请参阅IronPdfEngine设置指南以获取Windows、Linux、macOS和Docker的说明。
最小工作流程(5 个步骤)
- 安装IronPDF:
npm install @ironsoftware/ironpdf - 从
@ironsoftware/ironpdf导入PdfDocument - 使用
PdfDocument.fromHtml()、PdfDocument.fromFile()或PdfDocument.fromUrl()生成PDF - 应用可选设置:纸张大小、页边距、页眉、页脚
- 使用
pdf.saveAs("output.pdf")保存输出
如何安装 IronPDF for Node.js?
使用 npm 安装 @ironsoftware/ironpdf 包。 该包兼容Node.js 12.0或更高版本,并支持ESM和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/ironpdfIronPDF for Node.js依赖于IronPDF引擎二进制文件,该文件负责底层的基于Chromium的渲染。 引擎在首次运行时自动下载,但您可以预先安装特定平台的包以避免运行时下载。 这在受限网络环境或基于Docker的CI管道中非常有用:
| 平台 | 包 |
|---|---|
| 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 之前,通过设置 IronPdfGlobalConfig.setConfig({ licenseKey: "YOUR-KEY" }) 来应用此设置。 请按照完整的许可证密钥设置说明。)]IronPDF 的系统要求是什么?
IronPDF for Node.js在Windows、Linux、macOS和Docker环境下运行于Node.js 12.0或更高版本。 该库支持x64和ARM64架构,使其适用于本地开发和容器化部署。 对于云环境,IronPDF还支持连接到远程IronPDF引擎,而不是在本地运行引擎。
如何在Node.js中从HTML创建PDF?
使用 PdfDocument.fromHtml() 从 HTML 字符串生成 PDF。 该方法支持任何有效的 HTML 代码,包括内联的 <style> 代码块、通过 CDN 加载的外部字体,以及 CSS Grid 或 Flexbox 等布局系统。 Chromium渲染器在生成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() 返回一个 PdfDocument 实例。 调用 saveAs() 并传入目标输出路径以写入文件。该方法为异步操作,因此请使用 await 或链式调用 .then() 处理程序。 Chromium引擎在捕获输出之前处理字体加载、外部样式表和资产解析。 更多模式,请参阅HTML字符串到PDF示例。
如何从HTML文件创建PDF?
使用 PdfDocument.fromFile() 从磁盘加载现有的 .html 文件。 这种方法适用于模板化文档,其中HTML与应用程序逻辑分开维护。
//: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");渲染器从HTML文件的目录解析相对资产路径,因此本地CSS和图像引用可以在没有额外配置的情况下工作。 有关其他选项,包括如何覆盖资产解析的基本URL,请参阅HTML文件到PDF示例。
如何从URL生成PDF?
使用 PdfDocument.fromUrl() 将实时网页渲染为 PDF。 渲染器加载页面作为完整的浏览器会话,执行JavaScript,应用CSS,等待动态内容后再捕获输出。
//: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");对于通过 JavaScript 异步加载内容的页面,请配合使用 renderDelay 选项(单位为毫秒),以便在抓取前预留额外时间。 URL到PDF示例展示了延迟配置和身份验证头。
如何配置PDF输出设置?
将配置对象作为第二个参数传递给 PdfDocument.fromFile() 或 PdfDocument.fromUrl()。 配置对象接受纸张大小、页边距、方向和渲染选项。
//: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");关键配置选项包括:
paperSize:支持PdfPaperSize枚举值(A4、Letter、Legal 及自定义尺寸)landscape:设置true以横向页面布局显示printBackground:包含 CSS 背景颜色和图片marginTop/Bottom/Left/Right:页面边距(单位:毫米)renderDelay:针对 JavaScript 密集型页面,捕获前需等待的毫秒数
如何向PDF添加页眉和页脚?
通过在配置对象中提供 htmlHeader 和 htmlFooter 属性来添加页眉和页脚。 两者都接受完整的HTML字符串,从而实现带有页码、日期和动态文本的样式内容。
//: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");在页脚 HTML 中使用 {page} 和 {total-pages} 标记; IronPDF在渲染时替换正确的值。有关更多页眉和页脚模式,包括HTML页眉和页脚以及高级页眉技术,请参见链接示例。
如何向PDF添加安全性和元数据?
使用 PdfDocument 安全方法对生成的 PDF 应用密码保护和加密。 该库支持所有者和用户密码,提供打印、复制和编辑的细粒度权限控制。
//: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");加密和解密在应用密码时默认使用AES 256位加密。 对于文档认证工作流,IronPDF还支持使用X.509证书的数字签名。
PdfDocument.fromHtml() 并附上 PDF/A 转换方法。 IronPDF支持PDF/A合规和PDF/UA可访问性标准。)]如何合并和操作现有的PDF?
PdfDocument 提供了用于合并、拆分和修改现有 PDF 文件的方法。 加载包含 PdfDocument.fromFile() 的现有 PDF 文件,并使用相关操作方法添加或删除页面、添加水印或替换文本。
//: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() 接受一个 PdfDocument 实例数组,并返回一个合并后的文档。 页面顺序遵循数组顺序,因此输出保留输入文件的顺序。
其他常见的操作操作:
- 使用
removePages()从 PDF 中删除页面 - 在现有文档上盖章HTML内容
- 跨所有页面查找和替换文本
- 从PDF提取文本用于索引或处理
对于高量使用场景,多线程PDF生成可让您并行处理多个文档。 PDF压缩降低文件存储和传输的大小。
如何为复杂内容(如图表和Angular页面)生成PDF?
IronPDF使用完整的Chromium浏览器会话渲染页面,这意味着生成图表、图形或数据可视化的JavaScript库正确渲染,包括JavaScript图表库。 使用像Angular这样的框架构建的单页应用程序也可以通过Angular到PDF示例进行干净转换。
对于包含大量Unicode或多语言输出的文档,IronPDF处理Unicode和国际字符集而无需额外配置。 Google Fonts集成示例展示了如何在渲染的HTML中加载网页字体,以在输出PDF中保持一致的排版。
renderDelay 设置为毫秒数,以便页面有足够时间完成渲染。)}]在Node.js中生成PDF的下一步是什么?
本指南涵盖了IronPDF的核心工作流程:安装库,从HTML字符串、文件和URL生成PDF,配置输出设置,添加页眉和页脚,应用安全策略以及操作现有PDF。
如需继续,请尝试完整的 HTML 转 PDF/A 教程,以深入了解渲染选项;或浏览 API 参考文档,查看 PdfDocument 方法和配置属性的完整列表。
常见问题解答
在 Node.js 中创建 PDF 文件的最简单方法是什么?
通过npm install @ironsoftware/ironpdf安装IronPDF,然后使用您的HTML字符串调用PdfDocument.fromHtml(),并使用saveAs()保存结果。该库自动处理所有渲染。
如何安装 IronPDF for Node.js?
在项目目录中运行npm install @ironsoftware/ironpdf。IronPDF引擎二进制文件在首次使用时会自动下载。对于离线或CI环境,请单独安装特定平台的引擎包,例如@ironsoftware/ironpdf-engine-linux-x64。
我能否在将 HTML 转换为 PDF 的同时保留 CSS 样式和格式?
是的。IronPDF使用基于Chromium的渲染引擎,将所有CSS样式、外部字体和JavaScript执行保留在HTML到PDF转换中。输出符合Chrome的打印预览行为。
除了基本的HTML转换,IronPDF还提供了哪些PDF功能?
IronPDF支持数字签名、AES 256位加密、具有细粒度权限的密码保护、自定义页眉和页脚带页码标记、PDF合并、页面删除、HTML加印、文本提取、PDF/A合规性和多线程生成。
如何从磁盘上的HTML文件创建PDF?
使用PdfDocument.fromFile('./path/to/template.html')。渲染器将解析HTML文件目录中的相对资源路径,因此无需额外配置,本地CSS和图像引用可以正常工作。
我可以使用IronPDF从现有PDF文件中提取文本吗?
可以。使用PdfDocument.fromFile()加载现有PDF,并使用文本提取方法读取任意页面的内容。IronPDF支持创建新PDF文件和处理现有文档。
IronPDF在渲染HTML时是否支持JavaScript执行?
是的。Chromium渲染器捕获PDF之前会执行JavaScript。对于异步加载内容的页面,请在毫秒中设置renderDelay选项,为页面捕获前提供额外时间。





