如何使用 IronPDF 在 .NET 中动态生成 PDF

IronPDF 是一款适用于 .NET Core 和 .NET 10 的 PDF API,可通过 C# 代码生成、转换和编辑 PDF 文档。 安装NuGet包,创建ChromePdfRenderer实例,并在少数代码行中从HTML字符串、实时URL或现有文件生成PDF。
在 .NET Core 应用程序中,生成发票、报告、合同和合规文档所需的 PDF 文件是标准要求。 面临的挑战是寻找一款能够准确渲染 HTML、与 ASP.NET Core 和 Blazor 无缝集成、在 Windows、Linux 和 macOS 系统上输出结果一致,且无需额外工具即可处理数字签名和密码保护等高级操作的库。 本指南将带您逐步了解 IronPDF 的 .NET Core PDF API,内容涵盖从安装到最常见的文档操作,每项操作均配有可运行的 C# 代码示例。
如何在 .NET Core 中开始使用 IronPDF?
使用包管理器控制台或 .NET CLI 从 NuGet 安装 IronPDF:
# Package Manager Console
Install-Package IronPdf
# .NET CLI
dotnet add package IronPdf
# Package Manager Console
Install-Package IronPdf
# .NET CLI
dotnet add package IronPdf
安装完成后,在Program.cs的应用程序启动时添加您的许可证密钥:
using IronPdf;
// Configure your license key before any IronPDF operations
License.LicenseKey = "YOUR-LICENSE-KEY";
using IronPdf;
// Configure your license key before any IronPDF operations
License.LicenseKey = "YOUR-LICENSE-KEY";
Imports IronPdf
' Configure your license key before any IronPDF operations
License.LicenseKey = "YOUR-LICENSE-KEY"
提供免费试用版供评估,无需信用卡。 IronPDF 支持 .NET 10、.NET 9、.NET 8、.NET Framework 4.6.2 及以上版本,以及所有主流的 .NET Core 版本。 该库可在 Windows、macOS 和 Linux 上运行,无需额外的运行时依赖项,因此适用于容器化部署以及包括 Azure、Docker 和 AWS 在内的云环境。
对于ASP.NET Core项目,在构建应用程序之前,将IronPDF服务注册在ChromePdfRenderer。 IronPDF 可与 ASP.NET Core 项目类型集成,包括 Web API、MVC、Razor Pages 和 Blazor Server。 该 NuGet 包作为单一依赖项进行安装,无需原生运行时库或外部可执行文件,从而使您的持续集成 (CI) 管道和容器镜像保持简洁。 在 Linux 或 macOS 环境中部署时,除标准的 .NET Standard SDK 外无需额外配置。
因为ChromePdfRenderer是线程安全的,您可以将其注册为单一实例,并在请求处理程序中共享。 在高吞吐量场景下,创建一个渲染器实例池或使用异步渲染方法(RenderUrlAsPdfAsync),以避免在生成PDF时阻塞请求线程。 IronPDF 的许可页面涵盖了生产环境中的部署席位和并发线程限制。
如何在C#中从HTML生成PDF?
HTML 转 PDF 是 .NET PDF API 最常见的应用场景。 IronPDF 的 ChromePdfRenderer 可转换 HTML 字符串、本地文件或实时 URL,同时保留 CSS 样式、字体、JavaScript 输出以及图像在 Chrome 中的渲染效果。
using IronPdf;
// Create the renderer and define HTML content with full CSS support
var renderer = new ChromePdfRenderer();
var html = @"<html>
<head>
<style>
body { font-family: Arial; font-size: 14px; margin: 40px; }
h1 { color: #2c3e50; border-bottom: 2px solid #3498db; }
table { border-collapse: collapse; width: 100%; margin-top: 16px; }
td, th { border: 1px solid #ddd; padding: 10px; text-align: left; }
th { background: #3498db; color: white; }
</style>
</head>
<body>
<h1>Sales Report - Q4 2025</h1>
<p>Generated on: " + DateTime.Now.ToString("MMMM dd, yyyy") + @"</p>
<table>
<tr><th>Product</th><th>Units Sold</th><th>Revenue</th></tr>
<tr><td>Widget A</td><td>1,200</td><td>$24,000</td></tr>
<tr><td>Widget B</td><td>850</td><td>$17,000</td></tr>
</table>
</body>
</html>";
var document = renderer.RenderHtmlAsPdf(html);
document.SaveAs("sales-report.pdf");
using IronPdf;
// Create the renderer and define HTML content with full CSS support
var renderer = new ChromePdfRenderer();
var html = @"<html>
<head>
<style>
body { font-family: Arial; font-size: 14px; margin: 40px; }
h1 { color: #2c3e50; border-bottom: 2px solid #3498db; }
table { border-collapse: collapse; width: 100%; margin-top: 16px; }
td, th { border: 1px solid #ddd; padding: 10px; text-align: left; }
th { background: #3498db; color: white; }
</style>
</head>
<body>
<h1>Sales Report - Q4 2025</h1>
<p>Generated on: " + DateTime.Now.ToString("MMMM dd, yyyy") + @"</p>
<table>
<tr><th>Product</th><th>Units Sold</th><th>Revenue</th></tr>
<tr><td>Widget A</td><td>1,200</td><td>$24,000</td></tr>
<tr><td>Widget B</td><td>850</td><td>$17,000</td></tr>
</table>
</body>
</html>";
var document = renderer.RenderHtmlAsPdf(html);
document.SaveAs("sales-report.pdf");
Imports IronPdf
' Create the renderer and define HTML content with full CSS support
Dim renderer As New ChromePdfRenderer()
Dim html As String = "<html>
<head>
<style>
body { font-family: Arial; font-size: 14px; margin: 40px; }
h1 { color: #2c3e50; border-bottom: 2px solid #3498db; }
table { border-collapse: collapse; width: 100%; margin-top: 16px; }
td, th { border: 1px solid #ddd; padding: 10px; text-align: left; }
th { background: #3498db; color: white; }
</style>
</head>
<body>
<h1>Sales Report - Q4 2025</h1>
<p>Generated on: " & DateTime.Now.ToString("MMMM dd, yyyy") & "</p>
<table>
<tr><th>Product</th><th>Units Sold</th><th>Revenue</th></tr>
<tr><td>Widget A</td><td>1,200</td><td>$24,000</td></tr>
<tr><td>Widget B</td><td>850</td><td>$17,000</td></tr>
</table>
</body>
</html>"
Dim document = renderer.RenderHtmlAsPdf(html)
document.SaveAs("sales-report.pdf")
输出PDF文档

MemoryStream用于内存处理。 渲染器支持所有CSS属性,包括自定义字体、弹性布局、网格布局、媒体查询和用于边距及页面大小控制的@page规则。 对于与CSS和图像资源一起存储在磁盘上的HTML模板,调用RenderHtmlFileAsPdf并使用文件路径,而不是传递内联字符串。 IronPDF 会根据文件所在目录解析相对资源路径,因此链接的样式表和本地图片无需额外配置即可在输出中显示。
对于需要捕获实时网页的应用程序,使用RenderUrlAsPdfAsync来截图任何URL,同时执行JavaScript:
using IronPdf;
var renderer = new ChromePdfRenderer();
// Render a live URL including all JavaScript-rendered content
var document = await renderer.RenderUrlAsPdfAsync("https://example.com/monthly-report");
document.SaveAs("monthly-report.pdf");
// Return PDF bytes in an ASP.NET Core controller
byte[] pdfBytes = document.BinaryData;
return File(pdfBytes, "application/pdf", "report.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Render a live URL including all JavaScript-rendered content
var document = await renderer.RenderUrlAsPdfAsync("https://example.com/monthly-report");
document.SaveAs("monthly-report.pdf");
// Return PDF bytes in an ASP.NET Core controller
byte[] pdfBytes = document.BinaryData;
return File(pdfBytes, "application/pdf", "report.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' Render a live URL including all JavaScript-rendered content
Dim document = Await renderer.RenderUrlAsPdfAsync("https://example.com/monthly-report")
document.SaveAs("monthly-report.pdf")
' Return PDF bytes in an ASP.NET Core controller
Dim pdfBytes As Byte() = document.BinaryData
Return File(pdfBytes, "application/pdf", "report.pdf")
URL 渲染会在捕获前等待 JavaScript 执行完毕,从而确保动态加载的图表、表格和数据可视化内容在生成的 PDF 中正确显示。 您可以配置渲染选项来设置页面边距、纸张尺寸、方向以及 JavaScript 执行超时。 在渲染之前,还可以将身份验证 Cookie 和自定义 HTTP 头注入请求中,从而支持捕获需要登录会话的页面。
如何配置 PDF 页面布局和渲染选项?
在RenderingOptions属性控制页面尺寸、边距、方向和JavaScript等待行为,在执行任何渲染调用之前。 在渲染器实例上设置这些属性一次,它们将应用于该实例生成的所有文档。
using IronPdf;
var renderer = new ChromePdfRenderer();
// Configure page layout before rendering
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Landscape;
renderer.RenderingOptions.MarginTop = 15;
renderer.RenderingOptions.MarginBottom = 15;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
// Wait for dynamic JavaScript content before capturing
renderer.RenderingOptions.WaitFor.RenderDelay(500);
var document = renderer.RenderHtmlAsPdf("<h1>Landscape Report</h1><p>Body content here.</p>");
document.SaveAs("landscape-report.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Configure page layout before rendering
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Landscape;
renderer.RenderingOptions.MarginTop = 15;
renderer.RenderingOptions.MarginBottom = 15;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
// Wait for dynamic JavaScript content before capturing
renderer.RenderingOptions.WaitFor.RenderDelay(500);
var document = renderer.RenderHtmlAsPdf("<h1>Landscape Report</h1><p>Body content here.</p>");
document.SaveAs("landscape-report.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' Configure page layout before rendering
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Landscape
renderer.RenderingOptions.MarginTop = 15
renderer.RenderingOptions.MarginBottom = 15
renderer.RenderingOptions.MarginLeft = 20
renderer.RenderingOptions.MarginRight = 20
' Wait for dynamic JavaScript content before capturing
renderer.RenderingOptions.WaitFor.RenderDelay(500)
Dim document = renderer.RenderHtmlAsPdf("<h1>Landscape Report</h1><p>Body content here.</p>")
document.SaveAs("landscape-report.pdf")
纸张尺寸值涵盖标准格式,包括 A4、A3、Letter、Legal 以及以毫米为单位的自定义尺寸。 边距属性接受以毫米为单位的数值,并分别应用于每一侧。 WaitFor API控制JavaScript执行时间,这在HTML异步加载数据然后再渲染图表或计算的表格值时非常有用。 对于使用CSS @page规则的页面,IronPDF遵循这些声明并直接应用。 请参阅完整的渲染选项参考文档,其中包含 Zoom 比例、背景颜色和 PDF 版本选择等完整属性列表。
如何将 DOCX 文件和图片转换为 PDF?
除了 HTML 之外,IronPDF 还能将 DOCX 文档、常见图像格式和 Markdown 文件转换为 PDF。 这支持处理接受多种输入类型的处理管道。
using IronPdf;
// Convert a Word document to PDF while preserving its formatting
var docxPdf = new DocxToPdfRenderer().RenderDocxAsPdf("contract.docx");
docxPdf.SaveAs("contract.pdf");
// Combine multiple images into a single multi-page PDF
var images = new[] { "page1.png", "page2.png", "page3.png" };
var imagePdf = ImageToPdfConverter.ImageToPdf(images);
imagePdf.SaveAs("scanned-document.pdf");
using IronPdf;
// Convert a Word document to PDF while preserving its formatting
var docxPdf = new DocxToPdfRenderer().RenderDocxAsPdf("contract.docx");
docxPdf.SaveAs("contract.pdf");
// Combine multiple images into a single multi-page PDF
var images = new[] { "page1.png", "page2.png", "page3.png" };
var imagePdf = ImageToPdfConverter.ImageToPdf(images);
imagePdf.SaveAs("scanned-document.pdf");
Imports IronPdf
' Convert a Word document to PDF while preserving its formatting
Dim docxPdf = New DocxToPdfRenderer().RenderDocxAsPdf("contract.docx")
docxPdf.SaveAs("contract.pdf")
' Combine multiple images into a single multi-page PDF
Dim images = {"page1.png", "page2.png", "page3.png"}
Dim imagePdf = ImageToPdfConverter.ImageToPdf(images)
imagePdf.SaveAs("scanned-document.pdf")
示例:输入 DOCX 与 输出 PDF

DOCX 转 PDF 功能可保留源 WORD 文档中的段落样式、表格、页眉、页脚、嵌入图片和列表。 该图片转PDF转换器支持 JPEG、PNG、TIFF、BMP 和 GIF 格式,可自动优化输出文件大小,并支持将多张图片合并为单个分页文档。 这两个转换器都返回标准PdfDocument实例,因此您可以将其与编辑操作如合并、签名或水印组合。 对于由 WORD 生成的 DOCX 文件,该转换器在处理复杂表格结构和嵌入图片的同时,还能保持原始段落和标题的层级结构。
如何添加数字签名和表单字段?
生产文档工作流通常需要加密签名以确保真实性,并需要交互式表单字段来收集数据。 IronPDF 通过同一 API 提供数字签名和 PDF 表单支持。
using IronPdf;
using IronPdf.Signing;
// Load an existing PDF and apply a digital signature using an X.509 certificate
var pdf = PdfDocument.FromFile("agreement.pdf");
var signature = new PdfSignature("certificate.pfx", "pfx-password");
pdf.Sign(signature);
// Populate named form fields with dynamic application data
pdf.Form.FindFormField("CustomerName").Value = "Acme Corporation";
pdf.Form.FindFormField("ContractDate").Value = DateTime.Now.ToString("yyyy-MM-dd");
pdf.Form.FindFormField("Amount").Value = "$12,500.00";
pdf.SaveAs("signed-agreement.pdf");
using IronPdf;
using IronPdf.Signing;
// Load an existing PDF and apply a digital signature using an X.509 certificate
var pdf = PdfDocument.FromFile("agreement.pdf");
var signature = new PdfSignature("certificate.pfx", "pfx-password");
pdf.Sign(signature);
// Populate named form fields with dynamic application data
pdf.Form.FindFormField("CustomerName").Value = "Acme Corporation";
pdf.Form.FindFormField("ContractDate").Value = DateTime.Now.ToString("yyyy-MM-dd");
pdf.Form.FindFormField("Amount").Value = "$12,500.00";
pdf.SaveAs("signed-agreement.pdf");
Imports IronPdf
Imports IronPdf.Signing
' Load an existing PDF and apply a digital signature using an X.509 certificate
Dim pdf = PdfDocument.FromFile("agreement.pdf")
Dim signature = New PdfSignature("certificate.pfx", "pfx-password")
pdf.Sign(signature)
' Populate named form fields with dynamic application data
pdf.Form.FindFormField("CustomerName").Value = "Acme Corporation"
pdf.Form.FindFormField("ContractDate").Value = DateTime.Now.ToString("yyyy-MM-dd")
pdf.Form.FindFormField("Amount").Value = "$12,500.00"
pdf.SaveAs("signed-agreement.pdf")
已验证签名示例

数字签名采用 PFX 格式的 X.509 证书,并符合 Adobe Acrobat 及其他 PDF 阅读器认可的 PDF 签名标准。 Acrobat 中的签名面板会确认证书颁发者、签名时间以及完整性状态。 PDF 表单 API 支持文本框、复选框、单选按钮和下拉菜单。 您可以通过编程方式创建表单模板,在运行时填充数据,并从已填写的文档中读取提交的字段值。 此模式适用于合同管理、人力资源入职流程以及自动化数据采集管道,在这些场景中,同一份 PDF 模板会在包含不同字段值的众多交易中被重复使用。
对于基于时间戳的签名,传递一个配置了时间戳服务器URI的PdfSignature实例,使签署时间由受信任的第三方认证,而不是本地系统时钟。 签名指南涵盖了可见签名图像、多签名人顺序签名以及证书验证选项。
如何编辑和处理现有的 PDF 文档?
IronPDF 允许您修改 PDF 文件,而无需从 HTML 重新构建。 通过编程方式添加页眉、页脚、水印、注释,或合并及拆分页面。
using IronPdf;
var document = PdfDocument.FromFile("report.pdf");
// Add a semi-transparent watermark using HTML
document.ApplyWatermark("<h2 style='color:red; opacity:0.4; transform:rotate(-30deg)'>CONFIDENTIAL</h2>",
rotation: 30, opacity: 50);
// Add a branded header to every page
document.AddHtmlHeaders(new HtmlHeaderFooter
{
HtmlFragment = "<div style='text-align:right; font-size:10px; color:#666'>Internal Use Only - Page {page} of {total-pages}</div>"
});
// Append supplementary pages from a second document
var appendix = PdfDocument.FromFile("appendix.pdf");
document.AppendPdf(appendix);
document.SaveAs("final-report.pdf");
// Export to bytes for HTTP streaming
byte[] pdfBytes = document.BinaryData;
using IronPdf;
var document = PdfDocument.FromFile("report.pdf");
// Add a semi-transparent watermark using HTML
document.ApplyWatermark("<h2 style='color:red; opacity:0.4; transform:rotate(-30deg)'>CONFIDENTIAL</h2>",
rotation: 30, opacity: 50);
// Add a branded header to every page
document.AddHtmlHeaders(new HtmlHeaderFooter
{
HtmlFragment = "<div style='text-align:right; font-size:10px; color:#666'>Internal Use Only - Page {page} of {total-pages}</div>"
});
// Append supplementary pages from a second document
var appendix = PdfDocument.FromFile("appendix.pdf");
document.AppendPdf(appendix);
document.SaveAs("final-report.pdf");
// Export to bytes for HTTP streaming
byte[] pdfBytes = document.BinaryData;
Imports IronPdf
Dim document = PdfDocument.FromFile("report.pdf")
' Add a semi-transparent watermark using HTML
document.ApplyWatermark("<h2 style='color:red; opacity:0.4; transform:rotate(-30deg)'>CONFIDENTIAL</h2>", rotation:=30, opacity:=50)
' Add a branded header to every page
document.AddHtmlHeaders(New HtmlHeaderFooter With {
.HtmlFragment = "<div style='text-align:right; font-size:10px; color:#666'>Internal Use Only - Page {page} of {total-pages}</div>"
})
' Append supplementary pages from a second document
Dim appendix = PdfDocument.FromFile("appendix.pdf")
document.AppendPdf(appendix)
document.SaveAs("final-report.pdf")
' Export to bytes for HTTP streaming
Dim pdfBytes As Byte() = document.BinaryData
示例输出

HTML页眉和页脚API支持模板变量,包括{date}用于动态内容。 自定义水印方法支持接收 HTML 片段,因此您可以通过一次调用,在所有页面上应用经过样式设置、旋转处理且半透明的叠加层。 您还可以按页面范围拆分 PDF、合并多个文档,并从任何 PDF 中提取嵌入的图像和文本内容。 文本提取功能可保持跨列和跨表的阅读顺序,从而简化后续的搜索索引、内容迁移或数据验证工作流。
如何应用密码保护和安全设置?
使用密码和权限标记保护 PDF 文档是财务报告、法律文件和人力资源记录的标准要求。
using IronPdf;
using IronPdf.Security;
var pdf = PdfDocument.FromFile("financial-report.pdf");
// Set passwords: UserPassword controls opening, OwnerPassword controls editing
pdf.SecuritySettings.UserPassword = "viewer-password";
pdf.SecuritySettings.OwnerPassword = "admin-password";
// Configure fine-grained permissions
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.PrintLowResolution;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserFormData = false;
pdf.SaveAs("protected-report.pdf");
using IronPdf;
using IronPdf.Security;
var pdf = PdfDocument.FromFile("financial-report.pdf");
// Set passwords: UserPassword controls opening, OwnerPassword controls editing
pdf.SecuritySettings.UserPassword = "viewer-password";
pdf.SecuritySettings.OwnerPassword = "admin-password";
// Configure fine-grained permissions
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.PrintLowResolution;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserFormData = false;
pdf.SaveAs("protected-report.pdf");
Imports IronPdf
Imports IronPdf.Security
Dim pdf = PdfDocument.FromFile("financial-report.pdf")
' Set passwords: UserPassword controls opening, OwnerPassword controls editing
pdf.SecuritySettings.UserPassword = "viewer-password"
pdf.SecuritySettings.OwnerPassword = "admin-password"
' Configure fine-grained permissions
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.PrintLowResolution
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SecuritySettings.AllowUserAnnotations = False
pdf.SecuritySettings.AllowUserFormData = False
pdf.SaveAs("protected-report.pdf")
PDF 安全设置 API 采用 128 位或 256 位 AES 加密。 设置UserPassword需要读者在任何PDF查看器中打开文件时输入密码。 设置OwnerPassword限制程序化修改和所有者级别操作。 权限标志可独立控制打印质量、文本选择、注释以及表单字段访问。 应用安全设置后,BinaryData属性返回加密的PDF字节,以供存储或HTTP传输。 这些设置符合 PDF 规范的访问控制模型,因此受保护的文档可在 Adobe Acrobat、基于浏览器的 PDF 阅读器以及移动阅读应用中正确打开。
要从您拥有的文档中删除保护,请在PdfDocument.FromFile中加载文件并作为参数传递所有者密码,然后在不应用安全设置的情况下保存。 这使得在服务器端工作流中能够实现程序化文档处理,其中受密码保护的文件作为输入到达,并在重新分发前必须进行转换。
下一步计划是什么?
IronPDF for .NET Core PDF API 支持通过 C# 处理完整的文档生命周期:从 HTML 字符串和 URL 生成文档、转换 DOCX 和图像文件、配置页面布局和渲染选项、编辑水印、页眉和页脚、应用数字签名,以及通过加密保护文档。 所有操作在 Windows、macOS 和 Linux 平台上的 .NET 8、.NET 9 及 .NET 10 环境中均采用一致的 API。
立即开始免费试用,使用您自己的文档体验 IronPDF。 如需了解其他应用场景,请查阅 HTML 转 PDF 渲染选项指南、PDF 压缩与优化指南,以及完整的 IronPDF 功能概述。 请查看生产部署的许可选项。
常见问题解答
什么是IronPDF的PDF API 适用于 .NET Core?
IronPDF是一个.NET库,可以在C#应用程序中生成、转换和编辑PDF文档。它作为一个单独的NuGet包安装,支持.NET 10,.NET 9,.NET 8,以及.NET Framework 4.6.2或更高版本。
如何在.NET Core中从HTML生成PDF?
创建一个ChromePdfRenderer实例,并使用HTML字符串调用RenderHtmlAsPdf,或者使用URL调用RenderUrlAsPdfAsync。渲染器将HTML、CSS和JavaScript输出转换为可以保存或流式传输的PdfDocument对象。
如何在IronPDF中配置页面大小和边距?
在调用渲染方法之前,在renderer.RenderingOptions上设置属性。使用PaperSize来选择标准格式,PaperOrientation来选择纵向或横向,以及MarginTop、MarginBottom、MarginLeft、MarginRight来设置以毫米为单位的边距。
IronPDF可以在.NET Core中将DOCX文件转换为PDF吗?
可以。使用DocxToPdfRenderer.RenderDocxAsPdf与文件路径。转换器保留源Word文档的段落样式、表格、页眉、页脚和嵌入的图像。
如何在C#中为PDF添加数字签名?
使用PdfDocument.FromFile加载PDF,创建一个带有PFX证书路径和密码的PdfSignature,然后调用pdf.Sign(signature)。生成的文档在Adobe Acrobat中和合规的PDF查看器中显示为已验证。
如何使用IronPDF对PDF进行密码保护?
设置pdf.SecuritySettings.UserPassword作为打开密码,并设置pdf.SecuritySettings.OwnerPassword作为所有者密码。使用AllowUserPrinting、AllowUserCopyPasteContent和相关标志来控制个人权限。
如何在ASP.NET Core中将生成的PDF作为HTTP响应返回?
访问PdfDocument实例上的BinaryData属性以检索PDF作为字节数组,然后在ASP.NET Core控制器操作中使用File(pdfBytes, 'application/pdf', 'filename.pdf')返回。
IronPDF在.NET Core应用程序中能在Linux和macOS上运行吗?
可以。IronPDF在Windows、macOS和Linux上运行,无需额外的本地运行时依赖。它支持Docker、Azure和AWS的容器化部署,无需平台特定的配置。
如何使用IronPDF为PDF添加页眉和页脚?
使用包含HtmlFragment的HtmlHeaderFooter对象调用document.AddHtmlHeaders,页眉标记写在其中。使用模板变量{page}、{total-pages}和{date}来表示动态值。同样的API适用于页脚。
IronPDF在ASP.NET Core中是线程安全的吗?
ChromePdfRenderer是线程安全的,可以在依赖注入容器中注册为单例。对于高吞吐量的工作负载,请使用异步渲染方法(RenderHtmlAsPdfAsync, RenderUrlAsPdfAsync)避免阻塞请求线程。




