跳至页脚内容
使用IRONPDF

.NET PDF创建(开发者教程使用IronPDF)

在大多数现代.NET项目中,最终您将需要创建和处理PDF文档。 这可能意味着构建简单的PDF文档,将多个PDF合并为一个文档,或确保您的应用程序能够处理跨主要操作系统的多语言PDF文档。 无论是发票、客户报告或者是网页内容的快照,拥有可靠的PDF构建方式能节省时间,并让您的应用程序显得更加专业。

开发人员在这里通常会遇到一些障碍:保持不同机器间的布局一致性,处理图像和表格,或确保JavaScript驱动的内容在最终文档中正确显示。 选择适合C#生成PDF的.NET库可以帮助您避免这些问题带来的痛苦。

在本文中,我们将介绍如何在.NET应用程序中使用IronPDF创建PDF文档。 首先,我们将从基础的HTML到PDF转换开始,然后进入添加诸如页眉、页脚和安全性等高级功能。 到今天结束时,您将成为使用IronPDF创建PDF的专家。

在.NET中创建PDF的主要方法是什么?

在开发.NET应用程序中的PDF生成功能时,开发人员通常在三种主要方法之间进行选择。 HTML到PDF转换利用了现有的Web技术,让您可以使用熟悉的HTML和CSS设计文档,然后将其转换为PDF格式。 程序化文档构建是通过代码逐个元素构建PDF,提供对文档每一个细节的精确控制。 基于模板的生成结合了预定义的文档模板与动态数据,非常适合创建标准化文档,如发票或证书。

HTML到PDF的方法已经成为大多数现代应用程序的首选。 它消除了与PDF特定API相关的学习曲线,同时允许开发人员利用他们现有的Web开发技能。 这种方法还确保Web视图与生成的PDF之间的一致性,这在创建需要符合您应用程序设计语言的面向客户的文档时尤为重要。

IronPDF streamlines all three approaches through its comprehensive API, but truly excels at HTML到PDF转换,产生像素完美的结果。 这意味着您的PDF将看起来与从Google Chrome打印时完全一样,完全符合正确的CSS3样式和JavaScript执行。

这些方法为开发人员提供了对流行文档格式(如XML Paper Specification、Microsoft Word和Adobe Acrobat替代品)的全面支持,确保与现有PDF文档和其他文件格式的兼容性。

IronPDF如何使PDF创建变得简单而强大?

IronPDF通过结合企业级能力和直观的API彻底革新了.NET中的PDF生成,开发人员可以迅速掌握。 IronPDF核心使用了与驱动Google Chrome相同的Chromium引擎,确保您的HTML渲染与其在全球最流行的浏览器中的外观相同。 这消除了其他PDF库中常见的CSS兼容性问题和JavaScript渲染问题。

该库的架构优先考虑开发人员的生产力,而不牺牲功能性。 与需要广泛的PDF格式知识或复杂定位计算的库不同,IronPDF允许您使用熟悉的Web技术进行工作。 您可以像往常一样编写HTML和CSS,而IronPDF会在幕后处理PDF生成的复杂细节。

在.NET 9项目中设置IronPDF只需几分钟。 打开包管理器控制台并运行:

Install-Package IronPdf

安装后,您立即可以开始生成PDF。 该库包含了所有必要的依赖项,并且无需额外配置即可用于标准用例。 它支持.NET 9、.NET 8、.NET 7、.NET 6、.NET 5、.NET Core、.NET Standard和.NET Framework 4.6.2+,确保与几乎任何.NET项目的兼容性。

NuGet 使用 NuGet 安装

PM >  Install-Package IronPdf

IronPDF 上查看 NuGet 快速安装。超过 1000 万次下载,它正以 C# 改变 PDF 开发。 您也可以下载 DLLWindows 安装程序

如何将HTML转换为PDF文件

直接将HTML内容转换为PDF是.NET中文档生成的最简单途径。 当需要基于用户输入、数据库内容或API响应动态创建PDF文档时,这种方法大显身手。 IronPDF的ChromePdfRenderer类使这一过程显得非常简单,并提供了广泛的定制选项。

以下是如何从一个包含样式发票的HTML字符串生成PDF:

using IronPdf;
using IronPdf.Rendering;
// Initialize the Chrome renderer
var renderer = new ChromePdfRenderer();
// Configure rendering options for professional output
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
// Create HTML content with embedded CSS
string htmlContent = @"
    <html>
    <head>
        <style>
            body { font-family: Arial, sans-serif; }
            .header { background-color: #2c3e50; color: white; padding: 20px; }
            .content { padding: 20px; }
            table { width: 100%; border-collapse: collapse; }
            th, td { padding: 10px; text-align: left; border-bottom: 1px solid #ddd; }
        </style>
    </head>
    <body>
        <div class='header'>
            <h1>Invoice #2024-001</h1>
        </div>
        <div class='content'>
            <table>
                <tr><th>Item</th><th>Quantity</th><th>Price</th></tr>
                <tr><td>Professional License</td><td>1</td><td>$799</td></tr>
            </table>
        </div>
    </body>
    </html>";
// Generate the PDF
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Save to file
pdf.SaveAs("invoice.pdf");
using IronPdf;
using IronPdf.Rendering;
// Initialize the Chrome renderer
var renderer = new ChromePdfRenderer();
// Configure rendering options for professional output
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
// Create HTML content with embedded CSS
string htmlContent = @"
    <html>
    <head>
        <style>
            body { font-family: Arial, sans-serif; }
            .header { background-color: #2c3e50; color: white; padding: 20px; }
            .content { padding: 20px; }
            table { width: 100%; border-collapse: collapse; }
            th, td { padding: 10px; text-align: left; border-bottom: 1px solid #ddd; }
        </style>
    </head>
    <body>
        <div class='header'>
            <h1>Invoice #2024-001</h1>
        </div>
        <div class='content'>
            <table>
                <tr><th>Item</th><th>Quantity</th><th>Price</th></tr>
                <tr><td>Professional License</td><td>1</td><td>$799</td></tr>
            </table>
        </div>
    </body>
    </html>";
// Generate the PDF
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Save to file
pdf.SaveAs("invoice.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

这种方法允许您仅用几行C#代码将HTML转换为PDF文件。 IronPDF支持PNG和JPEG等图像格式,矢量可缩放图形(SVG)以及自定义字体,给予您对文档布局和文件大小的精确控制。

ChromePdfRenderer自动处理您的CSS,包括现代CSS3功能如flexbox和网格布局。 它能同样熟练地处理外部样式表、嵌入样式和内联CSS。 渲染引擎执行JavaScript,允许您在HTML中包含动态内容生成或客户端计算。

对于涉及外部资产的更复杂情况,IronPDF提供了base URL参数

// Render HTML with external images and stylesheets
var pdf = renderer.RenderHtmlAsPdf(htmlContent, @"C:\Assets\");
// Render HTML with external images and stylesheets
var pdf = renderer.RenderHtmlAsPdf(htmlContent, @"C:\Assets\");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

这告诉IronPDF在哪里找到引用的图像、CSS文件和其他资源,确保所有元素在最终PDF中正确呈现。 该库还支持直接在HTML中将图像嵌入为Base64,以实现完全自包含的文档。

输出

.NET PDF创建(开发者使用IronPDF教程):图3 - HTML到PDF输出

如何生成PDF从URL和网页?

将实时网页转换为PDF为文档化、归档以及报告生成打开了强大的可能性。 IronPDF在这项任务上表现出色,从简单的静态页面到具有大量JavaScript使用的复杂单页应用程序都能处理。 该库等待页面资源加载和JavaScript执行,确保您捕获到完全渲染的页面。

从URL创建PDF只需几行代码:

using IronPdf;
var renderer = new ChromePdfRenderer();
// Configure for optimal web page capture
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.JavaScript(3000); // Wait for JavaScript
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
// Convert URL to PDF
var pdf = renderer.RenderUrlAsPdf("https://apple.com");
pdf.SaveAs("website-capture.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Configure for optimal web page capture
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.JavaScript(3000); // Wait for JavaScript
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
// Convert URL to PDF
var pdf = renderer.RenderUrlAsPdf("https://apple.com");
pdf.SaveAs("website-capture.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

在处理异步加载内容的页面时,RenderDelay选项被证明是无价的。 通过指定以毫秒为单位的延迟,您可以确保AJAX调用完成并在PDF生成开始前动态内容得到渲染。 这一特性让IronPDF与可能捕获不完整页面的简单转换器区别开来。

输出

.NET PDF创建(开发者使用IronPDF教程):图4 - URL到PDF输出

如何从头开始程序化构建PDF?

尽管HTML到PDF转换可以优雅地处理大多数用例,有时您需要对文档构建进行精确控制。 IronPDF为逐个元素构建PDF提供全面的API,非常适合需要精确定位或与非HTML数据源工作时的情况。

程序化创建新PDF文档赋予开发人员对PDF对象、PDF字符串和文档结构的完全控制。 这种PDF操作级别在处理原始文本或将多个数据源集成到复杂文档时是理想的。

程序化创建新PDF文档并添加内容:

using IronPdf;
// Start with a blank document
PdfDocument pdf = new PdfDocument(270, 270);
// Apply text stamps with precise positioning
TextStamper textStamper = new TextStamper()
{
    Text = "Confidential Document",
    FontSize = 40,
    Color = IronSoftware.Drawing.Color.Black,
    IsBold = true,
    Opacity = 50,
    VerticalAlignment = VerticalAlignment.Middle,
    HorizontalAlignment = HorizontalAlignment.Center
};
// Add images
ImageStamper imageStamper = new ImageStamper(new Uri("https://ironpdf.com/img/svgs/iron-pdf-logo.svg"))
{
    HorizontalAlignment = HorizontalAlignment.Center,
        VerticalAlignment = VerticalAlignment.Bottom
    };
// Apply the stamps
Stamper[] stamps = {textStamper, imageStamper };
pdf.ApplyMultipleStamps(stamps);
// Save the PDF
pdf.SaveAs("programmatic-document.pdf");
using IronPdf;
// Start with a blank document
PdfDocument pdf = new PdfDocument(270, 270);
// Apply text stamps with precise positioning
TextStamper textStamper = new TextStamper()
{
    Text = "Confidential Document",
    FontSize = 40,
    Color = IronSoftware.Drawing.Color.Black,
    IsBold = true,
    Opacity = 50,
    VerticalAlignment = VerticalAlignment.Middle,
    HorizontalAlignment = HorizontalAlignment.Center
};
// Add images
ImageStamper imageStamper = new ImageStamper(new Uri("https://ironpdf.com/img/svgs/iron-pdf-logo.svg"))
{
    HorizontalAlignment = HorizontalAlignment.Center,
        VerticalAlignment = VerticalAlignment.Bottom
    };
// Apply the stamps
Stamper[] stamps = {textStamper, imageStamper };
pdf.ApplyMultipleStamps(stamps);
// Save the PDF
pdf.SaveAs("programmatic-document.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

这种方法给予您对元素放置、分层和格式化的完全控制。 通过结合多个戳记、调整水印的不透明度,您可以构建复杂文档,并精确控制页面上每个元素的位置。

.NET PDF创建(开发者使用IronPDF教程):图5 - 程序化创建的PDF文档

有哪些高级功能可以增强您的PDF文档?

专业的PDF文档通常需要超出基本内容渲染的复杂功能。 IronPDF通过简单直观的API提供企业级功能,无需深入的PDF格式知识。 让我们探索一下将普通PDF转变为专业文档的杀手级功能。

页眉和页脚

在所有页面上添加一致的页眉和页脚提升了文档的专业性和导航性。 IronPDF支持基于文本和基于HTML的页眉和页脚:

renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter() {
    HtmlFragment = "<div style='text-align:center'>Annual Report 2024</div>",
    Height = 25
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter() {
    HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages}</div>",
    Height = 20
};
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter() {
    HtmlFragment = "<div style='text-align:center'>Annual Report 2024</div>",
    Height = 25
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter() {
    HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages}</div>",
    Height = 20
};
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

{page}和{total-pages}占位符会自动填充为正确的值,消除了手动统计页数的需要。

输出

.NET PDF创建(开发者使用IronPDF教程):图6 - 页眉和页脚输出

安全性和加密

保护敏感文档需要强大的安全功能。 IronPDF实现了行业标准加密和权限控制:

// Set document passwords and permissions
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
// Configure detailed permissions
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserFormData = false;
pdf.SecuritySettings.AllowUserAnnotations = false;
// Set document passwords and permissions
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
// Configure detailed permissions
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserFormData = false;
pdf.SecuritySettings.AllowUserAnnotations = false;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

这些安全设置确保您的文档保持机密和抗篡改,满足敏感商业文档的合规要求。 根据Microsoft的安全文档,正确的加密对于保护企业应用程序中的敏感数据至关重要。

受保护的文档属性

.NET PDF创建(开发者使用IronPDF教程):图7 - PDF安全属性

表单和交互性

交互式表单允许用户填写PDF表单字段,提交表单数据,甚至嵌入数字签名以符合合规性。 IronPDF简化了表单填写,并确保在基于.NET Core、.NET Framework或任何其他.NET组件的网络应用程序中一致的文档属性

将静态文档转换为用户可以数字完成的交互式PDF表单

// HTML forms automatically convert to PDF forms
string formHtml = @"
    <form>
        <label>Name:</label>
        <label>Email:</label>
        <label>Subscribe:</label>
        <button type='submit'>Submit</button>
    </form>";
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
var interactivePdf = renderer.RenderHtmlAsPdf(formHtml);
// HTML forms automatically convert to PDF forms
string formHtml = @"
    <form>
        <label>Name:</label>
        <label>Email:</label>
        <label>Subscribe:</label>
        <button type='submit'>Submit</button>
    </form>";
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
var interactivePdf = renderer.RenderHtmlAsPdf(formHtml);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

输出

.NET PDF创建(开发者使用IronPDF教程):图8 - 交互式PDF输出

为您的项目选择哪种PDF创建方法?

选择最佳的PDF生成方法取决于您的具体需求和现有架构。 每种方法都提供了与不同项目需求相符的独特优势。

当您有现有网页内容、需要与Web应用程序设计保持一致或想要利用CSS进行样式设计时,选择HTML到PDF转换。 这种方法对报告、发票以及任何从响应式设计原则中获益的文档非常有效。 使用熟悉的Web技术的能力大大减少了开发时间和维护开销。 查看我们的HTML到PDF示例以查看实际应用。

当您需要对元素放置进行像素级控制、处理非HTML数据源或需要复杂的分层和定位时,选择程序化生成。 这种方法适合技术图纸、具有精确布局的证书,以及需要精确规格的文档。 我们的API参考为所有程序化功能提供全面的文档。

考虑URL到PDF转换以捕获实时数据、创建网站存档或从现有Web应用程序生成报告。 这种方法消除了重新创建现有网页功能的需要,并确保您的PDF始终反映最新的信息。

为了实现最大的灵活性,在单个文档中结合使用多种方法。 首先将HTML转换为PDF作为主要内容,然后加入程序化元素,如水印或戳记。 这种混合方法利用了每种方法的优势,同时保持代码的简洁。

.NET PDF创建(开发者使用IronPDF教程):图9 - PDF创建方法

立即开始使用 IronPDF。
green arrow pointer

今天就开始使用IronPDF

使用IronPDF开始您的PDF生成旅程只需最少的设置,却能立即获得结果。 IronPDF将PDF生成从复杂的挑战转变为简单的任务。 它基于Chrome的渲染确保了完美的保真度,而直观的API保持您的代码清晰和可维护。 无论您是在构建新应用程序还是增强现有应用程序,IronPDF为您提供所需的工具,以提供专业的PDF功能。

该库的广泛功能集不但涵盖了您的基本.NET PDF创建需求。 Explore our tutorials for in-depth guides on specific scenarios, browse code examples for ready-to-use solutions, or dive into the comprehensive documentation to master every aspect of PDF generation in .NET.

准备好革新您的PDF生成工作流程了吗? 今天开始免费试用,亲身体验像素完美渲染和面向开发者的API所带来的不同。 有专门的支持和定期更新,您将在几分钟内而非数小时内生成专业的PDF。

对于生产部署,探索我们的灵活许可选项,旨在匹配您项目的规模和要求。 加入数千名信任IronPDF来满足其关键任务PDF生成需求的开发者行列。 Iron Suite还提供了广泛的文档处理功能,超越了PDF,为您提供所有文档处理需求的完整解决方案。

常见问题解答

IronPDF在.NET项目中的主要用途是什么?

IronPDF主要用于.NET项目中创建、编辑和从PDF文档中提取内容,确保开发人员能够在其应用程序中高效管理PDF。

IronPDF如何帮助管理多语言PDF文档?

IronPDF支持多语言PDF文档,使开发人员可以在主要操作系统中无缝创建和操作不同语言的PDF。

IronPDF能否合并多个PDF文档?

是的,IronPDF可以将多个PDF文档合并为一个文档,这对编制报告或将各种文档源合并到一个文件中很有用。

可以使用IronPDF创建哪些类型的文档?

使用IronPDF,开发人员可以创建各类文档,如发票、客户报告和网页内容快照,增强其应用程序的专业性。

为什么在.NET应用程序中拥有一个可靠的PDF创建工具很重要?

像IronPDF这样的可靠PDF创建工具节省时间,并通过确保文档管理过程流畅而专业来改善用户体验。

IronPDF与主要操作系统兼容吗?

是的,IronPDF是设计兼容主要操作系统的,使其成为.NET开发人员进行跨平台项目的多才多艺选择。

IronPDF如何改善开发过程?

IronPDF简化了PDF的创建和操作过程,让开发人员可以专注于项目的其他关键方面,同时确保高质量的文档处理。

Curtis Chau
技术作家

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

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