# How to Create a PDF in C#
以编程方式创建 PDF 通常会带来重大挑战,无论是添加页眉和页脚,还是处理兼容性问题。 幸运的是,Iron Software 通过将各种 PDF 创建功能整合为直观易懂的方法,简化了这一过程,让开发人员可以直接投入到他们的项目中。
using IronPDF,您可以无缝地添加形状、文本、图像、页眉和页脚。 您还可以灵活设置文档的方向、大小和元数据,并导出到 PDF/UA 和 PDF/A 等多个标准。 此外,将 IronPDF 集成到现有应用程序中以用于 PDF 查看或以编程方式打印文档非常简单。
在本教程中,我们将探索每个功能并展示 IronPDF 如何提升开发体验。 它可以让您创建可阅读和可重用的代码组件,这些组件可以部署在任何受支持的环境和平台上。
在本文结束时,您将对如何使用 IronPDF 创建符合您需求的风格化和独特的 PDF 拥有扎实的理解。
要开始安装 IronPDF 并按照本文所列的教程示例,请查看这个[快速安装指南](https://ironpdf.com/docs/),它将帮助您顺利设置。
*as-heading:2(快速入门:使用IronPDF创建您的第一个 PDF )*
仅需几行代码即可使用 IronPDF 在 C# 中轻松创建您的第一个 PDF。 本快速指南将向您展示如何初始化 PDF 文档、添加内容并保存它,从而确保新库开发人员的顺利开始。 在几秒钟内深入 PDF 创建并轻松扩展您的 C# 应用程序功能。
```cs
:title=Instant PDF Creation with IronPDF
new IronPdf.PdfDocument(500, 500).SaveAs("output.pdf");
```
*as-heading:2(目录)*
- **设计完美的 PDF**
- [创建空 PDF](#anchor-create-blank-pdf)
- [添加页眉和页脚](#anchor-add-headers-footers)
- [添加页码](#anchor-add-page-numbers)
- [使用 DataURIs 内嵌图像](#anchor-embed-images-with-datauris)
- [从 Azure Blob 存储内嵌图像](#anchor-embed-images-with-azure-blob-storage)
- [OpenAI for PDF](#anchor-openai-for-pdf)
- **完全 PDF 自定义轻松**
- [方向和旋转](#anchor-orientation-rotation)
- [自定义纸张大小](#anchor-custom-paper-size)
- **标准合规**
- [在 C# 中导出 PDF/A 格式文档](#anchor-export-pdf-a-format-docs-in-c-num)
- [在 C# 中导出 PDF/UA 格式文档](#anchor-export-pdf-ua-format-docs-in-c-num)
## 设计您的完美 PDF
### 创建空白 PDF
using IronPDF 创建空白 PDF 既直观又简单,仅需几行代码。 我们首先初始化一个新的`SaveAs`方法保存。 `TextHeaderFooter`
```cs
using IronPdf;
PdfDocument pdf = new PdfDocument(270, 270);
pdf.SaveAs("blankPage.pdf");
```
有关此代码片段的更详细解释以及探索其附加功能,请参阅我们的综合[如何指南](https://ironpdf.com/how-to/create-new-pdfs/)。
### 添加页眉和页脚
using IronPDF 轻松在 PDF 的顶部或底部添加页眉和页脚。 IronPDF 允许您添加两种类型的页眉和页脚。 `"{page} of {total-pages}"` `HtmlHeaderFooter`。 同时,`HtmlHeaderFooter`是一个更高级的变体,其允许开发人员自定义他们放置的HTML内容。
有关此代码片段的更详细解释以及探索其附加功能,请参阅我们的综合[如何指南](https://ironpdf.com/how-to/headers-and-footers/)。
#### HTML 页眉和页脚
通过设置`span`标签中,并添加图像资源以确保文档是独特的。
```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);
```
有关此代码片段的更详细解释以及探索其附加功能,请参阅我们的综合[如何指南](https://ironpdf.com/how-to/headers-and-footers/#add-html-header-footer-example)。
#### 文本页眉和页脚
下面的示例使用`TextHeaderFooter`和占位符值表示页码、URL和日期。
```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");
```
除了上面显示的字段,我们还提供了以下占位符值,在渲染时可用并会被替换:`{pdf-title}`。
有关此代码片段的更详细解释以及探索其附加功能,请参阅我们的综合[如何指南](https://ironpdf.com/how-to/headers-and-footers/#add-a-text-header-footer-example)。
### 添加页码
类似于上面的例子,我们可以使用`HtmlHeaderFooter`通过在页眉或页脚中放置占位符值来显示页码,文档渲染时将会显示。
```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");
```
有关此代码片段的更详细解释以及探索其附加功能,请参阅我们的综合[如何指南](https://ironpdf.com/how-to/page-numbers/)。
### 使用 DataURIs 内嵌图像
有时候依赖资产目录过慢且低效,因此我们可以使用数据 URI 内嵌图像作为解决办法。 以下是关于如何做到这一点的简要代码示例。
```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");
```
有关此代码片段的更详细解释以及探索其附加功能,请参阅我们的综合[如何指南](https://ironpdf.com/how-to/datauris/)。
### OpenAI for PDF
IronPDF 通过支持 OpenAI 模型用于快速摘要、查询和记忆,利用 Microsoft Semantic Kernel,提升了效率和可扩展性。 以下是如何使用 OpenAI 快速总结 PDF 内容的简要代码示例。
```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");
```
有关此代码片段的更详细解释以及探索其附加功能,请参阅我们的综合[如何指南](https://ironpdf.com/how-to/openai/)。
## 全面的 PDF 自定义
### 方向和旋转
#### 方向
来自`PaperOrientation`属性允许您指定PDF的方向如何渲染。 在此示例中,我们将其设置为`PdfPaperOrientation.Landscape`以渲染PDF方向为横向模式。
```csharp
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");
```
#### 旋转
要设置PDF页面的旋转,我们可以使用`PdfPageRotation`枚举作为输入来旋转页面。
```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");
```
有关设置 PDF 的方向和旋转的详细说明,以及探索其附加功能,请参阅我们的全面 [操作指南](https://ironpdf.com/how-to/page-orientation-rotation/)。
### 自定义纸张大小
通过方法`height`,来设定PDF的尺寸。 IronPDF还支持设置标准尺寸如A4,通过将`PaperSize`属性设置为可用枚举列表。
有关此代码片段的更详细解释以及探索其附加功能,请参阅我们的综合[如何指南](https://ironpdf.com/how-to/custom-paper-size/)。
#### 以厘米为单位的自定义纸张大小
```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");
```
#### 标准纸张大小
在此示例中,我们还将属性`PdfPaperSize.A4`的枚举。
```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");
```
有关支持的标准化尺寸列表,请点击[此处](https://ironpdf.com/object-reference/api/IronPdf.Rendering.PdfPaperSize.html)。
## 标准合规
### Export PDF/A Format Docs in C#
通过使用`SaveAsPdfUA`方法创建并导出与PDF/UA标准合规的PDF。
```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);
```
有关此代码片段的更详细解释以及探索其附加功能,请参阅我们的综合[如何指南](https://ironpdf.com/how-to/pdfua/)。
### Export PDF/UA Format Docs in C#
要在C#中将PDF转换为PDF/A,我们也可以使用IronPDF库,它支持最新的PDF/A标准,以确保您文件的完整性; 类似于上面的示例,我们调用`SaveAsPdfA`保存PDF为PDF/A标准。
```cs
using IronPdf;
// Open PDF File
PdfDocument pdf = PdfDocument.FromFile("wikipedia.pdf");
// Export as PDF/UA. Pass the document's natural language so assistive
// technologies announce the correct pronunciation.
pdf.SaveAsPdfUA("pdf-ua-wikipedia.pdf", NaturalLanguage: NaturalLanguages.English);
```
在此示例中,我们将PDF保存为PDF/A-3变体,使用`PdfAVersions`的枚举。
有关支持的 PDF/A 版本的完整列表,请点击[此处](https://ironpdf.com/object-reference/api/IronPdf.PdfAVersions.html)。
## 结论
上面分享的简要示例展示了使用 IronPDF 创建 PDF 时可以解锁的卓越能力和突出功能。
如果您想请求一个功能或对 IronPDF 或许可有一般性问题,请[联系我们的支持团队](/troubleshooting/engineering-request-pdf/)。 我们将非常乐意为您提供帮助。
以编程方式创建 PDF 通常会带来重大挑战,无论是添加页眉和页脚,还是处理兼容性问题。 幸运的是,Iron Software 通过将各种 PDF 创建功能整合为直观易懂的方法,简化了这一过程,让开发人员可以直接投入到他们的项目中。
using IronPDF,您可以无缝地添加形状、文本、图像、页眉和页脚。 您还可以灵活设置文档的方向、大小和元数据,并导出到 PDF/UA 和 PDF/A 等多个标准。 此外,将 IronPDF 集成到现有应用程序中以用于 PDF 查看或以编程方式打印文档非常简单。
using IronPDF 轻松在 PDF 的顶部或底部添加页眉和页脚。 IronPDF 允许您添加两种类型的页眉和页脚。 "{page} of {total-pages}"HtmlHeaderFooter。 同时,HtmlHeaderFooter是一个更高级的变体,其允许开发人员自定义他们放置的HTML内容。
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 PDFChromePdfRenderer renderer = new ChromePdfRenderer();PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>");// Create header and footerHtmlHeaderFooter htmlHeader = new HtmlHeaderFooter{HtmlFragment = headerHtml,LoadStylesAndCSSFromMainHtmlDocument = true,};HtmlHeaderFooter htmlFooter = new HtmlHeaderFooter{HtmlFragment = footerHtml,LoadStylesAndCSSFromMainHtmlDocument = true,};// Add to PDFpdf.AddHtmlHeaders(htmlHeader);pdf.AddHtmlFooters(htmlFooter);
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);
ImportsIronPdfPrivate headerHtml AsString = " <html> <head> <link rel='stylesheet' href='style.css'> </head> <body> <h1>This is a header!</h1> </body> </html>"Private footerHtml AsString = " <html> <head> <link rel='stylesheet' href='style.css'> </head> <body> <h1>This is a footer!</h1> </body> </html>"' Instantiate renderer and create PDFPrivate renderer As New ChromePdfRenderer()Private pdf AsPdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>")' Create header and footerPrivate htmlHeader As New HtmlHeaderFooterWith { .HtmlFragment = headerHtml, .LoadStylesAndCSSFromMainHtmlDocument = True}Private htmlFooter As New HtmlHeaderFooterWith { .HtmlFragment = footerHtml, .LoadStylesAndCSSFromMainHtmlDocument = True}' Add to PDFpdf.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)
using IronPdf;// Instantiate renderer and create PDFChromePdfRenderer renderer = new ChromePdfRenderer();PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>");// Create text headerTextHeaderFooter textHeader = new TextHeaderFooter{CenterText = "This is the header!",};// Create text footerTextHeaderFooter textFooter = new TextHeaderFooter{CenterText = "This is the footer!",};// Add text header and footer to the PDFpdf.AddTextHeaders(textHeader);pdf.AddTextFooters(textFooter);pdf.SaveAs("addTextHeaderFooter.pdf");
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");
ImportsIronPdf' Instantiate renderer and create PDFDim renderer As New ChromePdfRenderer()Dim pdf AsPdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>")' Create text headerDim textHeader As New TextHeaderFooterWith { .CenterText = "This is the header!"}' Create text footerDim textFooter As New TextHeaderFooterWith { .CenterText = "This is the footer!"}' Add text header and footer to the PDFpdf.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")
using IronPdf;// Create text headerTextHeaderFooter textHeader = new TextHeaderFooter(){CenterText = "{page} of {total-pages}"};// Create html footerHtmlHeaderFooter htmlFooter = new HtmlHeaderFooter(){HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"};// Render a new PDFChromePdfRenderer renderer = new ChromePdfRenderer();PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>");// Add header and footerpdf.AddTextHeaders(textHeader);pdf.AddHtmlFooters(htmlFooter);pdf.SaveAs("pdfWithPageNumber.pdf");
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");
ImportsIronPdf' Create text headerPrivate textHeader As New TextHeaderFooter() With {.CenterText = "{page} of {total-pages}"}' Create html footerPrivate htmlFooter As New HtmlHeaderFooter() With {.HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"}' Render a new PDFPrivate renderer As New ChromePdfRenderer()Private pdf AsPdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>")' Add header and footerpdf.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")
有时候依赖资产目录过慢且低效,因此我们可以使用数据 URI 内嵌图像作为解决办法。 以下是关于如何做到这一点的简要代码示例。
using IronPdf;using System;// Read byte from image filevar pngBinaryData = System.IO.File.ReadAllBytes("My_image.png");// Convert bytes to base64varImgDataURI = @"data:image/png;base64," + Convert.ToBase64String(pngBinaryData);// Import base64 to img tagvarImgHtml = $"<img src='{ImgDataURI}'>";ChromePdfRendererRenderer = new ChromePdfRenderer();// Render the HTML stringvar pdf = Renderer.RenderHtmlAsPdf(ImgHtml);pdf.SaveAs("datauri_example.pdf");
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");
ImportsIronPdfImportsSystem' Read byte from image filePrivate pngBinaryData = System.IO.File.ReadAllBytes("My_image.png")' Convert bytes to base64PrivateImgDataURI = "data:image/png;base64," & Convert.ToBase64String(pngBinaryData)' Import base64 to img tagPrivateImgHtml = $"<img src='{ImgDataURI}'>"PrivateRendererAs New ChromePdfRenderer()' Render the HTML stringPrivate 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")
IronPDF 通过支持 OpenAI 模型用于快速摘要、查询和记忆,利用 Microsoft Semantic Kernel,提升了效率和可扩展性。 以下是如何使用 OpenAI 快速总结 PDF 内容的简要代码示例。
using IronPdf;using IronPdf.AI;using Microsoft.SemanticKernel;using Microsoft.SemanticKernel.Connectors.OpenAI;using Microsoft.SemanticKernel.Memory;using System;using System.Threading.Tasks;// Setup OpenAIvar 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 Memoryvar 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 IronAIIronDocumentAI.Initialize(kernel, memory);License.LicenseKey = "<<enter your IronPdf license key here";// Import PDF documentPdfDocument pdf = PdfDocument.FromFile("wikipedia.pdf");// Summarize the documentConsole.WriteLine("Please wait while I summarize the document...");string summary = await pdf.Summarize(); // optionally pass AI instance or use AI instance directlyConsole.WriteLine($"Document summary: {summary}\n\n");
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");
ImportsMicrosoft.VisualBasicImportsIronPdfImportsIronPdf.AIImportsMicrosoft.SemanticKernelImportsMicrosoft.SemanticKernel.Connectors.OpenAIImportsMicrosoft.SemanticKernel.MemoryImportsSystemImportsSystem.Threading.Tasks' Setup OpenAIPrivate 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 MemoryPrivate memory_builder = (New MemoryBuilder()).WithMemoryStore(New VolatileMemoryStore()).WithAzureOpenAITextEmbeddingGeneration("oaiembed", azureEndpoint, apiKey)Private memory = memory_builder.Build()' Initialize IronAIIronDocumentAI.Initialize(kernel, memory)License.LicenseKey = "<<enter your IronPdf license key here"' Import PDF documentDim pdf AsPdfDocument = PdfDocument.FromFile("wikipedia.pdf")' Summarize the documentConsole.WriteLine("Please wait while I summarize the document...")Dim summary AsString = Await pdf.Summarize() ' optionally pass AI instance or use AI instance directlyConsole.WriteLine($"Document summary: {summary}" & vbLf & vbLf)
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)
ChromePdfRenderer renderer = new ChromePdfRenderer();// Change paper orientationrenderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;PdfDocument pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page");pdf.SaveAs("landscape.pdf");
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 orientationrenderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.LandscapeDim pdf AsPdfDocument = 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页面的旋转,我们可以使用PdfPageRotation枚举作为输入来旋转页面。
using IronPdf;using IronPdf.Rendering;using System.Collections.Generic;PdfDocument pdf = PdfDocument.FromFile("landscape.pdf");// Set all pagespdf.SetAllPageRotations(PdfPageRotation.Clockwise90);// Set a single pagepdf.SetPageRotation(1, PdfPageRotation.Clockwise180);// Set multiple pagesList<int> selectedPages = new List<int>() { 0, 3 };pdf.SetPageRotations(selectedPages, PdfPageRotation.Clockwise270);pdf.SaveAs("rotatedLandscape.pdf");
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");
ImportsIronPdfImportsIronPdf.RenderingImportsSystem.Collections.GenericPrivate pdf AsPdfDocument = PdfDocument.FromFile("landscape.pdf")' Set all pagespdf.SetAllPageRotations(PdfPageRotation.Clockwise90)' Set a single pagepdf.SetPageRotation(1, PdfPageRotation.Clockwise180)' Set multiple pagesDim selectedPages As New List(OfInteger)() From {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")
using IronPdf;ChromePdfRenderer renderer = new ChromePdfRenderer();// Set custom paper size in cmrenderer.RenderingOptions.SetCustomPaperSizeinCentimeters(15, 15);PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Custom Paper Size</h1>");pdf.SaveAs("customPaperSize.pdf");
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");
ImportsIronPdfPrivate renderer As New ChromePdfRenderer()' Set custom paper size in cmrenderer.RenderingOptions.SetCustomPaperSizeinCentimeters(15, 15)Dim pdf AsPdfDocument = 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")
标准纸张大小
在此示例中,我们还将属性PdfPaperSize.A4的枚举。
using IronPdf;using IronPdf.Rendering;ChromePdfRenderer renderer = new ChromePdfRenderer();// Set paper size to A4renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Standard Paper Size</h1>");pdf.SaveAs("standardPaperSize.pdf");
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");
ImportsIronPdfImportsIronPdf.RenderingPrivate renderer As New ChromePdfRenderer()' Set paper size to A4renderer.RenderingOptions.PaperSize = PdfPaperSize.A4Dim pdf AsPdfDocument = 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")
using IronPdf;// Create a PdfDocument object or open any PDF FilePdfDocument pdf = PdfDocument.FromFile("wikipedia.pdf");// Use the SaveAsPdfA method to save to filepdf.SaveAsPdfA("pdf-a3-wikipedia.pdf", PdfAVersions.PdfA3b);
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);
ImportsIronPdf' Create a PdfDocument object or open any PDF FileDim pdf AsPdfDocument = PdfDocument.FromFile("wikipedia.pdf")' Use the SaveAsPdfA method to save to filepdf.SaveAsPdfA("pdf-a3-wikipedia.pdf", PdfAVersions.PdfA3b)
Imports IronPdf
' Create a PdfDocument object or open any PDF File
Dim pdf As PdfDocument = PdfDocument.FromFile("wikipedia.pdf")
' Use the SaveAsPdfA method to save to file
pdf.SaveAsPdfA("pdf-a3-wikipedia.pdf", PdfAVersions.PdfA3b)
using IronPdf;// Open PDF FilePdfDocument pdf = PdfDocument.FromFile("wikipedia.pdf");// Export as PDF/UA. Pass the document's natural language so assistive// technologies announce the correct pronunciation.pdf.SaveAsPdfUA("pdf-ua-wikipedia.pdf", NaturalLanguage: NaturalLanguages.English);
using IronPdf;
// Open PDF File
PdfDocument pdf = PdfDocument.FromFile("wikipedia.pdf");
// Export as PDF/UA. Pass the document's natural language so assistive
// technologies announce the correct pronunciation.
pdf.SaveAsPdfUA("pdf-ua-wikipedia.pdf", NaturalLanguage: NaturalLanguages.English);