如何在 C# 中创建 PDF 并进行 PDF编辑
以编程方式创建 PDF 通常会带来重大挑战,无论是添加页眉和页脚,还是处理兼容性问题。 幸运的是,Iron Software 通过将各种 PDF 创建功能整合为直观易懂的方法,简化了这一过程,让开发人员可以直接投入到他们的项目中。
使用 IronPDF,您可以无缝地添加形状、文本、图像、页眉和页脚。 您还可以灵活设置文档的方向、大小和元数据,并导出到 PDF/UA 和 PDF/A 等多个标准。 此外,将 IronPDF 集成到现有应用程序中以用于 PDF 查看或以编程方式打印文档非常简单。
在本教程中,我们将探索每个功能并展示 IronPDF 如何提升开发体验。 它可以让您创建可阅读和可重用的代码组件,这些组件可以部署在任何受支持的环境和平台上。
在本文结束时,您将对如何使用 IronPDF 创建符合您需求的风格化和独特的 PDF 拥有扎实的理解。
要开始安装 IronPDF 并按照本文所列的教程示例,请查看这个快速安装指南,它将帮助您顺利设置。
快速入门:使用IronPDF创建您的第一个 PDF
仅需几行代码即可使用 IronPDF 在 C# 中轻松创建您的第一个 PDF。 本快速指南将向您展示如何初始化 PDF 文档、添加内容并保存它,从而确保新库开发人员的顺利开始。 在几秒钟内深入 PDF 创建并轻松扩展您的 C# 应用程序功能。
目录
- 设计完美的 PDF
- 创建空 PDF
- 添加页眉和页脚
- 添加页码
- 使用 DataURIs 内嵌图像
- 从 Azure Blob 存储内嵌图像
- OpenAI for PDF
- 完全 PDF 自定义轻松
- 方向和旋转
- 自定义纸张大小
- 标准合规
- 在 C# 中导出 PDF/A 格式文档
- 在 C# 中导出 PDF/UA 格式文档
设计您的完美 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");
Imports IronPdf
Dim pdf As New PdfDocument(270, 270)
pdf.SaveAs("blankPage.pdf")
有关此代码片段的更详细解释以及探索其附加功能,请参阅我们的综合如何指南。
添加页眉和页脚
使用 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)
有关此代码片段的更详细解释以及探索其附加功能,请参阅我们的综合如何指南。
文本页眉和页脚
下面的示例使用 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");
Imports IronPdf
' Instantiate renderer and create PDF
Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>")
' Create text header
Dim textHeader As New TextHeaderFooter With {
.CenterText = "This is the header!"
}
' Create text footer
Dim textFooter As New TextHeaderFooter With {
.CenterText = "This is the footer!"
}
' Add text header and footer to the PDF
pdf.AddTextHeaders(textHeader)
pdf.AddTextFooters(textFooter)
pdf.SaveAs("addTextHeaderFooter.pdf")
除了上面显示的字段外,我们还有以下占位符值可用,这些值将在渲染时被替换:{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")
有关此代码片段的更详细解释以及探索其附加功能,请参阅我们的综合如何指南。
使用 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")
有关此代码片段的更详细解释以及探索其附加功能,请参阅我们的综合如何指南。
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)
有关此代码片段的更详细解释以及探索其附加功能,请参阅我们的综合如何指南。
全面的 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")
旋转
要设置 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")
有关设置 PDF 的方向和旋转的详细说明,以及探索其附加功能,请参阅我们的全面 操作指南。
自定义纸张大小
使用方法 @@--CODE-227--CODE-225--CODE-226--CODE-227 来设置 @@--CODE-225--CODE-225--CODE-226--CODE-226 来设置 PDF 的尺寸。 IronPDF还支持通过将 PaperSize 属性设置为可用枚举列表来设置标准尺寸,例如 A4。
有关此代码片段的更详细解释以及探索其附加功能,请参阅我们的综合如何指南。
以厘米为单位的自定义纸张大小
: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")
标准纸张大小
在这个例子中,我们还将属性 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")
有关支持的标准化尺寸列表,请点击此处。
标准合规
Export PDF/A Format Docs in C
使用 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)
有关此代码片段的更详细解释以及探索其附加功能,请参阅我们的综合如何指南。
Export PDF/UA Format Docs in C
要在 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");
Imports IronPdf
' Open PDF File
Dim pdf As PdfDocument = PdfDocument.FromFile("wikipedia.pdf")
' Export as PDF/UA compliance PDF
pdf.SaveAsPdfUA("pdf-ua-wikipedia.pdf")
在这个例子中,我们将 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的CompressAndSaveAs方法压缩嵌入图像,并可选择性地去除PDF结构树,在减少文件大小的同时保持质量。只需调用CompressAndSaveAs(outputPath, quality, removeStructureTree)即可一步实现压缩和保存。
如何使用 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+。

