跳至页脚内容
使用IRONPDF

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

IronPDF .NET Core PDF API概览展示代码编辑器,同时进行HTML到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
SHELL

安装完成后,在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"
$vbLabelText   $csharpLabel

提供免费试用版供评估,无需信用卡。 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")
$vbLabelText   $csharpLabel

输出PDF文档

Visual Studio项目运行IronPDF HTML到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")
$vbLabelText   $csharpLabel

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")
$vbLabelText   $csharpLabel

纸张尺寸值涵盖标准格式,包括 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")
$vbLabelText   $csharpLabel

示例:输入 DOCX 与 输出 PDF

原Word文档与IronPDF转换的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")
$vbLabelText   $csharpLabel

已验证签名示例

Adobe Acrobat显示由IronPDF的PdfSignature API签署的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
$vbLabelText   $csharpLabel

示例输出

PDF文档与IronPDF添加的机密水印及品牌页眉,显示页码和附加的附录页

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")
$vbLabelText   $csharpLabel

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)避免阻塞请求线程。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

钢铁支援团队

我们每周 5 天,每天 24 小时在线。
聊天
电子邮件
打电话给我