IronPDF 教程 在 C# 中创建 PDF How to Create a PDF in C# Curtis Chau 已更新:八月 6, 2025 Download IronPDF NuGet 下载 DLL 下载 Windows 安装程序 Start Free Trial Copy for LLMs Copy for LLMs Copy page as Markdown for LLMs Open in ChatGPT Ask ChatGPT about this page Open in Gemini Ask Gemini about this page Open in Grok Ask Grok about this page Open in Perplexity Ask Perplexity about this page Share Share on Facebook Share on X (Twitter) Share on LinkedIn Copy URL Email article This article was translated from English: Does it need improvement? Translated View the article in English 以编程方式创建 PDF 通常会带来重大挑战,无论是添加页眉和页脚,还是处理兼容性问题。 幸运的是,IronSoftware 通过将各种 PDF 创建功能整合为直观易懂的方法,简化了这一过程,使开发人员可以直接启动他们的项目。 使用 IronPDF,您可以无缝地添加形状、文本、图像、页眉和页脚。 您还可以灵活设置文档的方向、大小和元数据,并导出到 PDF/UA 和 PDF/A 等多个标准。 此外,将 IronPDF 集成到现有应用程序中以用于 PDF 查看或以编程方式打印文档非常简单。 在本教程中,我们将探索每个功能并展示 IronPDF 如何提升开发体验。 它可以让您创建可阅读和可重用的代码组件,这些组件可以部署在任何受支持的环境和平台上。 在本文结束时,您将对如何使用 IronPDF 创建符合您需求的风格化和独特的 PDF 拥有扎实的理解。 要开始安装 IronPDF 并按照本文所列的教程示例,请查看这个快速安装指南,它将帮助您顺利设置。 章节 2:快速入门:使用 IronPDF 创建您的第一个 PDF 仅需几行代码即可使用 IronPDF 在 C# 中轻松创建您的第一个 PDF。 本快速指南将向您展示如何初始化 PDF 文档、添加内容并保存它,从而确保新库开发人员的顺利开始。 在几秒钟内深入 PDF 创建并轻松扩展您的 C# 应用程序功能。 Get started making PDFs with NuGet now: Install IronPDF with NuGet Package Manager PM > Install-Package IronPdf Copy and run this code snippet. new IronPdf.PdfDocument(500, 500).SaveAs("output.pdf"); Deploy to test on your live environment Start using IronPDF in your project today with a free trial Free 30 day Trial 目录 设计完美的 PDF 创建空 PDF 添加页眉和页脚 添加页码 使用 DataURIs 内嵌图像 从 Azure Blob 存储内嵌图像 OpenAI for PDF 完全 PDF 自定义轻松 方向和旋转 自定义纸张大小 标准合规 在 C# 中导出 PDF/A 格式文档 在 C# 中导出 PDF/UA 格式文档 使用 NuGet 安装 PM > Install-Package IronPdf 在 IronPDF 上查看 NuGet 快速安装。超过 1000 万次下载,它正以 C# 改变 PDF 开发。 您也可以下载 DLL 或 Windows 安装程序。 设计您的完美 PDF 创建空白 PDF 使用 IronPDF 创建空白 PDF 既直观又简单,仅需几行代码。 我们首先初始化一个新的PdfDocument类,提供维度,然后调用SaveAs方法进行保存。 :path=/static-assets/pdf/content-code-examples/how-to/create-new-pdfs.cs using IronPdf; PdfDocument pdf = new PdfDocument(270, 270); pdf.SaveAs("blankPage.pdf"); IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 有关此代码片段的更详细解释以及探索其附加功能,请参阅我们的综合如何指南。 今天在您的项目中使用 IronPDF,免费试用。 第一步: 免费开始 添加页眉和页脚 使用 IronPDF 轻松在 PDF 的顶部或底部添加页眉和页脚。 IronPDF 允许您添加两种类型的页眉和页脚。 TextHeaderFooter 适用于仅需文本的场景,例如通过字符串插值展示页码,比如"{page} of {total-pages}"。 与此同时,HtmlHeaderFooter 是一种更高级的变体,允许开发人员自定义他们放置的 HTML 内容。 有关此代码片段的更详细解释以及探索其附加功能,请参阅我们的综合如何指南。 HTML 页眉和页脚 通过设置HtmlHeaderFooter对象,我们可以通过将页码放入<center>标签中并添加图像资产来自定义文本出现的位置,以确保文档独特。 :path=/static-assets/pdf/content-code-examples/how-to/headers-and-footers-htmlheaderfooter.cs using IronPdf; string headerHtml = @" <html> <head> <link rel='stylesheet' href='style.css'> </head> <body> <h1>This is a header!</h1> </body> </html>"; string footerHtml = @" <html> <head> <link rel='stylesheet' href='style.css'> </head> <body> <h1>This is a footer!</h1> </body> </html>"; // Instantiate renderer and create PDF ChromePdfRenderer renderer = new ChromePdfRenderer(); PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>"); // Create header and footer HtmlHeaderFooter htmlHeader = new HtmlHeaderFooter { HtmlFragment = headerHtml, LoadStylesAndCSSFromMainHtmlDocument = true, }; HtmlHeaderFooter htmlFooter = new HtmlHeaderFooter { HtmlFragment = footerHtml, LoadStylesAndCSSFromMainHtmlDocument = true, }; // Add to PDF pdf.AddHtmlHeaders(htmlHeader); pdf.AddHtmlFooters(htmlFooter); Imports IronPdf Private headerHtml As String = " <html> <head> <link rel='stylesheet' href='style.css'> </head> <body> <h1>This is a header!</h1> </body> </html>" Private footerHtml As String = " <html> <head> <link rel='stylesheet' href='style.css'> </head> <body> <h1>This is a footer!</h1> </body> </html>" ' Instantiate renderer and create PDF Private renderer As New ChromePdfRenderer() Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>") ' Create header and footer Private htmlHeader As New HtmlHeaderFooter With { .HtmlFragment = headerHtml, .LoadStylesAndCSSFromMainHtmlDocument = True } Private htmlFooter As New HtmlHeaderFooter With { .HtmlFragment = footerHtml, .LoadStylesAndCSSFromMainHtmlDocument = True } ' Add to PDF pdf.AddHtmlHeaders(htmlHeader) pdf.AddHtmlFooters(htmlFooter) $vbLabelText $csharpLabel 有关此代码片段的更详细解释以及探索其附加功能,请参阅我们的综合如何指南。 文本页眉和页脚 下面的示例使用TextHeaderFooter和占位符值来表示页码、URL 和日期。 :path=/static-assets/pdf/content-code-examples/how-to/headers-and-footers-add-textheaderfooter.cs using IronPdf; // Instantiate renderer and create PDF ChromePdfRenderer renderer = new ChromePdfRenderer(); PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>"); // Create text header TextHeaderFooter textHeader = new TextHeaderFooter { CenterText = "This is the header!", }; // Create text footer TextHeaderFooter textFooter = new TextHeaderFooter { CenterText = "This is the footer!", }; // Add text header and footer to the PDF pdf.AddTextHeaders(textHeader); pdf.AddTextFooters(textFooter); pdf.SaveAs("addTextHeaderFooter.pdf"); IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 除了上面显示的字段外,我们还提供如下占位符值,它们将在渲染时被替换:{page}、{total-pages}、{url}、{date}、{time}、{html-title}、{pdf-title}。 有关此代码片段的更详细解释以及探索其附加功能,请参阅我们的综合如何指南。 添加页码 与上面的示例类似,我们可以使用TextHeaderFooter或HtmlHeaderFooter在页眉或页脚中显示页码,渲染文档时将显示。 :path=/static-assets/pdf/content-code-examples/how-to/page-numbers-basic.cs using IronPdf; // Create text header TextHeaderFooter textHeader = new TextHeaderFooter() { CenterText = "{page} of {total-pages}" }; // Create html footer HtmlHeaderFooter htmlFooter = new HtmlHeaderFooter() { HtmlFragment = "<center><i>{page} of {total-pages}<i></center>" }; // Render a new PDF ChromePdfRenderer renderer = new ChromePdfRenderer(); PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>"); // Add header and footer pdf.AddTextHeaders(textHeader); pdf.AddHtmlFooters(htmlFooter); pdf.SaveAs("pdfWithPageNumber.pdf"); Imports IronPdf ' Create text header Private textHeader As New TextHeaderFooter() With {.CenterText = "{page} of {total-pages}"} ' Create html footer Private htmlFooter As New HtmlHeaderFooter() With {.HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"} ' Render a new PDF Private renderer As New ChromePdfRenderer() Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>") ' Add header and footer pdf.AddTextHeaders(textHeader) pdf.AddHtmlFooters(htmlFooter) pdf.SaveAs("pdfWithPageNumber.pdf") $vbLabelText $csharpLabel 有关此代码片段的更详细解释以及探索其附加功能,请参阅我们的综合如何指南。 使用 DataURIs 内嵌图像 有时候依赖资产目录过慢且低效,因此我们可以使用数据 URI 内嵌图像作为解决办法。 以下是关于如何做到这一点的简要代码示例。 :path=/static-assets/pdf/content-code-examples/how-to/datauris-image.cs using IronPdf; using System; // Read byte from image file var pngBinaryData = System.IO.File.ReadAllBytes("My_image.png"); // Convert bytes to base64 var ImgDataURI = @"data:image/png;base64," + Convert.ToBase64String(pngBinaryData); // Import base64 to img tag var ImgHtml = $"<img src='{ImgDataURI}'>"; ChromePdfRenderer Renderer = new ChromePdfRenderer(); // Render the HTML string var pdf = Renderer.RenderHtmlAsPdf(ImgHtml); pdf.SaveAs("datauri_example.pdf"); Imports IronPdf Imports System ' Read byte from image file Private pngBinaryData = System.IO.File.ReadAllBytes("My_image.png") ' Convert bytes to base64 Private ImgDataURI = "data:image/png;base64," & Convert.ToBase64String(pngBinaryData) ' Import base64 to img tag Private ImgHtml = $"<img src='{ImgDataURI}'>" Private Renderer As New ChromePdfRenderer() ' Render the HTML string Private pdf = Renderer.RenderHtmlAsPdf(ImgHtml) pdf.SaveAs("datauri_example.pdf") $vbLabelText $csharpLabel 有关此代码片段的更详细解释以及探索其附加功能,请参阅我们的综合如何指南。 OpenAI for PDF IronPDF 通过支持 OpenAI 模型用于快速摘要、查询和记忆,利用 Microsoft Semantic Kernel,提升了效率和可扩展性。 以下是如何使用 OpenAI 快速总结 PDF 内容的简要代码示例。 :path=/static-assets/pdf/content-code-examples/how-to/openai-summarize.cs using IronPdf; using IronPdf.AI; using Microsoft.SemanticKernel; using Microsoft.SemanticKernel.Connectors.OpenAI; using Microsoft.SemanticKernel.Memory; using System; using System.Threading.Tasks; // Setup OpenAI var azureEndpoint = "<<enter your azure endpoint here>>"; var apiKey = "<<enter your azure API key here>>"; var builder = Kernel.CreateBuilder() .AddAzureOpenAITextEmbeddingGeneration("oaiembed", azureEndpoint, apiKey) .AddAzureOpenAIChatCompletion("oaichat", azureEndpoint, apiKey); var kernel = builder.Build(); // Setup Memory var memory_builder = new MemoryBuilder() // optionally use new ChromaMemoryStore("http://127.0.0.1:8000") (see https://github.com/microsoft/semantic-kernel/blob/main/dotnet/notebooks/09-memory-with-chroma.ipynb) .WithMemoryStore(new VolatileMemoryStore()) .WithAzureOpenAITextEmbeddingGeneration("oaiembed", azureEndpoint, apiKey); var memory = memory_builder.Build(); // Initialize IronAI IronDocumentAI.Initialize(kernel, memory); License.LicenseKey = "<<enter your IronPdf license key here"; // Import PDF document PdfDocument pdf = PdfDocument.FromFile("wikipedia.pdf"); // Summarize the document Console.WriteLine("Please wait while I summarize the document..."); string summary = await pdf.Summarize(); // optionally pass AI instance or use AI instance directly Console.WriteLine($"Document summary: {summary}\n\n"); Imports Microsoft.VisualBasic Imports IronPdf Imports IronPdf.AI Imports Microsoft.SemanticKernel Imports Microsoft.SemanticKernel.Connectors.OpenAI Imports Microsoft.SemanticKernel.Memory Imports System Imports System.Threading.Tasks ' Setup OpenAI Private azureEndpoint = "<<enter your azure endpoint here>>" Private apiKey = "<<enter your azure API key here>>" Private builder = Kernel.CreateBuilder().AddAzureOpenAITextEmbeddingGeneration("oaiembed", azureEndpoint, apiKey).AddAzureOpenAIChatCompletion("oaichat", azureEndpoint, apiKey) Private kernel = builder.Build() ' Setup Memory Private memory_builder = (New MemoryBuilder()).WithMemoryStore(New VolatileMemoryStore()).WithAzureOpenAITextEmbeddingGeneration("oaiembed", azureEndpoint, apiKey) Private memory = memory_builder.Build() ' Initialize IronAI IronDocumentAI.Initialize(kernel, memory) License.LicenseKey = "<<enter your IronPdf license key here" ' Import PDF document Dim pdf As PdfDocument = PdfDocument.FromFile("wikipedia.pdf") ' Summarize the document Console.WriteLine("Please wait while I summarize the document...") Dim summary As String = Await pdf.Summarize() ' optionally pass AI instance or use AI instance directly Console.WriteLine($"Document summary: {summary}" & vbLf & vbLf) $vbLabelText $csharpLabel 有关此代码片段的更详细解释以及探索其附加功能,请参阅我们的综合如何指南。 全面的 PDF 自定义 方向和旋转 方向 RenderingOptions 类的PaperOrientation属性允许您决定 PDF 的方向渲染方式。 在此示例中,我们将其设置为PdfPaperOrientation.Landscape以呈现 PDF 方向为横向模式。 :path=/static-assets/pdf/content-code-examples/tutorials/csharp-create-pdf-complete-1.cs ChromePdfRenderer renderer = new ChromePdfRenderer(); // Change paper orientation renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape; PdfDocument pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page"); pdf.SaveAs("landscape.pdf"); Dim renderer As New ChromePdfRenderer() ' Change paper orientation renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape Dim pdf As PdfDocument = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page") pdf.SaveAs("landscape.pdf") $vbLabelText $csharpLabel 旋转 要设置 PDF 页面的旋转,我们可以使用SetPageRotation方法,并使用PdfPageRotation枚举作为输入来旋转页面。 :path=/static-assets/pdf/content-code-examples/how-to/page-orientation-rotation-set-rotation.cs using IronPdf; using IronPdf.Rendering; using System.Collections.Generic; PdfDocument pdf = PdfDocument.FromFile("landscape.pdf"); // Set all pages pdf.SetAllPageRotations(PdfPageRotation.Clockwise90); // Set a single page pdf.SetPageRotation(1, PdfPageRotation.Clockwise180); // Set multiple pages List<int> selectedPages = new List<int>() { 0, 3 }; pdf.SetPageRotations(selectedPages, PdfPageRotation.Clockwise270); pdf.SaveAs("rotatedLandscape.pdf"); Imports IronPdf Imports IronPdf.Rendering Imports System.Collections.Generic Private pdf As PdfDocument = PdfDocument.FromFile("landscape.pdf") ' Set all pages pdf.SetAllPageRotations(PdfPageRotation.Clockwise90) ' Set a single page pdf.SetPageRotation(1, PdfPageRotation.Clockwise180) ' Set multiple pages Dim selectedPages As New List(Of Integer)() From {0, 3} pdf.SetPageRotations(selectedPages, PdfPageRotation.Clockwise270) pdf.SaveAs("rotatedLandscape.pdf") $vbLabelText $csharpLabel 有关设置 PDF 的方向和旋转的更详细解释以及探索其附加功能,请参阅我们的综合如何指南。 自定义纸张大小 通过使用SetCustomPaperSizeinCentimeters方法设置width和height来自定义 PDF 的尺寸。 IronPDF 还支持将尺寸设置为标准化尺寸,例如通过将PaperSize属性设置为一系列可用枚举来设置 A4。 有关此代码片段的更详细解释以及探索其附加功能,请参阅我们的综合如何指南。 自定义纸张大小 in Cm :path=/static-assets/pdf/content-code-examples/how-to/custom-paper-size-cm.cs using IronPdf; ChromePdfRenderer renderer = new ChromePdfRenderer(); // Set custom paper size in cm renderer.RenderingOptions.SetCustomPaperSizeinCentimeters(15, 15); PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Custom Paper Size</h1>"); pdf.SaveAs("customPaperSize.pdf"); Imports IronPdf Private renderer As New ChromePdfRenderer() ' Set custom paper size in cm renderer.RenderingOptions.SetCustomPaperSizeinCentimeters(15, 15) Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Custom Paper Size</h1>") pdf.SaveAs("customPaperSize.pdf") $vbLabelText $csharpLabel 标准纸张大小 在此示例中,我们还将PaperSize属性设置为PdfPaperSize.A4枚举。 :path=/static-assets/pdf/content-code-examples/how-to/custom-paper-size-standard-paper-size.cs using IronPdf; using IronPdf.Rendering; ChromePdfRenderer renderer = new ChromePdfRenderer(); // Set paper size to A4 renderer.RenderingOptions.PaperSize = PdfPaperSize.A4; PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Standard Paper Size</h1>"); pdf.SaveAs("standardPaperSize.pdf"); Imports IronPdf Imports IronPdf.Rendering Private renderer As New ChromePdfRenderer() ' Set paper size to A4 renderer.RenderingOptions.PaperSize = PdfPaperSize.A4 Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Standard Paper Size</h1>") pdf.SaveAs("standardPaperSize.pdf") $vbLabelText $csharpLabel 有关支持的标准化尺寸列表,请点击此处。 标准合规 在 C# 中导出 PDF/A 格式文档 使用SaveAsPdfUA方法创建和导出符合 PDF/UA 标准的 PDF。 :path=/static-assets/pdf/content-code-examples/how-to/pdfa-fromfile.cs using IronPdf; // Create a PdfDocument object or open any PDF File PdfDocument pdf = PdfDocument.FromFile("wikipedia.pdf"); // Use the SaveAsPdfA method to save to file pdf.SaveAsPdfA("pdf-a3-wikipedia.pdf", PdfAVersions.PdfA3b); Imports IronPdf ' Create a PdfDocument object or open any PDF File Private pdf As PdfDocument = PdfDocument.FromFile("wikipedia.pdf") ' Use the SaveAsPdfA method to save to file pdf.SaveAsPdfA("pdf-a3-wikipedia.pdf", PdfAVersions.PdfA3b) $vbLabelText $csharpLabel 有关此代码片段的更详细解释以及探索其附加功能,请参阅我们的综合如何指南。 在 C# 中导出 PDF/UA 格式文档 要在 C# 中将 PDF 转换为 PDF/A,我们也可以使用 IronPDf 库,它支持 PDF/A 的最新标准,确保您文件的完整性; 与上面的示例类似,我们调用SaveAsPdfA以 PDF/A 标准保存 PDF。 :path=/static-assets/pdf/content-code-examples/how-to/pdfua-fromfile.cs using IronPdf; // Open PDF File PdfDocument pdf = PdfDocument.FromFile("wikipedia.pdf"); // Export as PDF/UA compliance PDF pdf.SaveAsPdfUA("pdf-ua-wikipedia.pdf"); IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 有关此代码片段的更详细解释以及探索其附加功能,请参阅我们的综合如何指南。 在此示例中,我们将 PDF 保存为 PDF/A-3 变体,使用枚举的PdfAVersions。 有关支持的 PDF/A 版本的完整列表,请点击此处。 结论 上面分享的简要示例展示了使用 IronPDF 创建 PDF 时可以解锁的卓越能力和突出功能。 如果您想请求一个功能或对 IronPDF 或许可有一般性问题,请联系我们的支持团队。 我们将非常乐意为您提供帮助。 常见问题解答 如何使用 IronPDF 在 C# 中创建 PDF 文档? 您可以通过初始化一个新的 PDF 文档对象并添加例如文本、图像和表格等内容,然后保存文件,来在 C# 中使用 IronPDF 创建 PDF 文档。 IronPDF 提供了哪些功能来编辑 PDF? IronPDF 提供了用于编辑 PDF 的功能,包括添加水印、页眉、页脚和背景。它还支持合并、拆分和压缩 PDF。 我可以使用 IronPDF 将表单添加到 PDF 文档吗? 可以,IronPDF 允许您将交互式表单添加到 PDF 文档中。您可以创建表单字段,例如文本输入、复选框和单选按钮。 使用 IronPDF 可以用密码保护 PDF 吗? 当然可以,您可以使用 IronPDF 用密码保护您的 PDF 文档。它允许您设置用户和所有者密码,以控制访问和权限。 如何使用 IronPDF 向 PDF 应用水印? 要使用 IronPDF 应用水印,可以使用 PDF 编辑功能叠加文本或图像作为水印在 PDF 文档的每一页上。 IronPDF 可以压缩 PDF 文件以减小其大小吗? 可以,IronPDF 包含压缩 PDF 文件的功能,帮助减少文件大小同时保持质量,这对于存储和共享非常有用。 如何使用 IronPDF 向 PDF 添加页眉和页脚? 您可以通过指定要包含在每一页顶部或底部的文本或图像,使用 IronPDF 为您的 PDF 文档添加页眉和页脚。 IronPDF 是否支持 PDF 页面背景定制? IronPDF 支持背景定制,允许您设置图像或颜色作为 PDF 页面背景,增强文档设计。 我可以使用 IronPDF 将 HTML 转换为 PDF 吗? 可以,IronPDF 提供将 HTML 转换为 PDF 的功能。您可以将包括 CSS 和 JavaScript 的复杂 HTML 内容渲染为 PDF 文档。 在 C# 项目中使用 IronPDF 的系统要求是什么? IronPDF 兼容 .NET Framework 和 .NET Core。它需要 Windows、macOS 或 Linux 操作系统,并且与使用 Visual Studio 的 C# 项目无缝集成。 IronPDF 是否完全兼容 .NET 10? 是的——IronPDF 完全兼容 .NET 10。它可与最新的运行时环境无缝集成,充分利用 .NET 10 的性能改进和语言增强功能。它支持 Windows、macOS、Linux 和容器环境下的 .NET 版本 10、9、8、7、6、5、.NET Standard 2.0+ 和 .NET Framework 4.6.2+。 Curtis Chau 立即与工程团队聊天 技术作家 Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。 准备开始了吗? Nuget 下载 16,133,208 | 版本: 2025.11 刚刚发布 免费 NuGet 下载 总下载量:16,133,208 查看许可证