从 HTML 文件在 C# 中创建 PDF
IronPDF 通过编程方式将 HTML 转换为 PDF 文档。
如何在 C# 中创建一个 PDF - HTML 转 PDF 示例
本文的源代码可用于 C#,作为一个 C# HTML 到 PDF 项目源代码下载。
以下教程将引导您使用 IronPDF 作为 C# PDF 生成器的过程。 它涵盖了基础知识以及许多高级 C# PDF 主题。
HTML 到 PDF C#
- 下载C#库以将HTML转换为PDF
- 通过代码从 HTML 字符串创建 PDF
- 用代码从 HTML 文件创建 PDF
- 轻松将 URL 转换为 PDF 文档
- 将 PDF 文件导出到所需位置
HTML 转 PDF 演练
此演示向您展示如何使用 IronPdf 的示例。 从 Iron Software 请求更多用例演示。
该演示包括 Hello World、RenderHtmlAsPdf 和 RenderUrlAsPdf 示例。 所有示例都可以在 IronPDF 示例解决方案中的相应项目下找到。
步骤 1:安装
您可以通过 NuGet 安装 IronPdf。 The package name is IronPDF NuGet Package.
Or you can use the Direct Library Download.
步骤 2:Hello World
一旦将 IronPDF 安装并引用到您的项目中,您就可以立即开始使用它,只需输入几个字符串:
// Create a new instance of ChromePdfRenderer
var chromePdfRenderer = new ChromePdfRenderer();// Create a new instance of ChromePdfRenderer
var chromePdfRenderer = new ChromePdfRenderer();' Create a new instance of ChromePdfRenderer
Dim chromePdfRenderer As New ChromePdfRenderer()然后如果您需要将 HTML 转换为 PDF:
// Define HTML content to turn into PDF
var html = @"<h1>Hello World!</h1><br><p>This is IronPdf.</p>";
// Render the HTML string as a PDF
using var pdf = chromePdfRenderer.RenderHtmlAsPdf(html);
// Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"));// Define HTML content to turn into PDF
var html = @"<h1>Hello World!</h1><br><p>This is IronPdf.</p>";
// Render the HTML string as a PDF
using var pdf = chromePdfRenderer.RenderHtmlAsPdf(html);
// Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"));' Define HTML content to turn into PDF
Dim html = "<h1>Hello World!</h1><br><p>This is IronPdf.</p>"
' Render the HTML string as a PDF
Dim pdf = chromePdfRenderer.RenderHtmlAsPdf(html)
' Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"))或者如果您想将网页转换为 PDF 文件:
// URI of the page to turn into PDF
var uri = new Uri("http://www.google.com/ncr");
// Render the webpage as a PDF
using var pdf = chromePdfRenderer.RenderUrlAsPdf(uri);
// Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"));// URI of the page to turn into PDF
var uri = new Uri("http://www.google.com/ncr");
// Render the webpage as a PDF
using var pdf = chromePdfRenderer.RenderUrlAsPdf(uri);
// Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"));' URI of the page to turn into PDF
Dim uri As New Uri("http://www.google.com/ncr")
' Render the webpage as a PDF
Dim pdf = chromePdfRenderer.RenderUrlAsPdf(uri)
' Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"))就是这样! 相应的结果是:
将 HTML 转换为 PDF 的结果
将网页转换为 PDF 的结果
请在 IronPDFDemo.HelloWorld 项目下找到代码示例。
步骤 3:RenderHtmlAsPdf
示例 1
要评估一个更贴近现实的示例,想象一个需要转换为 PDF 的 HTML 发票。 下面是如何做到这一点的代码。
注意:您可以在 IronPDFDemo.DemoWebSite 项目中找到发票 HTML(~/Static/TestInvoice1.html)。 请注意,发票有用于"打印"媒体类型的自定义 CSS。
浏览器中的源发票看起来像这样:

要将其转换为 PDF 文件,使用与上面的 HelloWorld 示例类似的代码,区别是源 HTML 文件不同。
// Read HTML from file
var html = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "TestInvoice1.html"));
var chromePdfRenderer = new ChromePdfRenderer();
using var pdf = chromePdfRenderer.RenderHtmlAsPdf(html);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRendererExample1.Pdf"));// Read HTML from file
var html = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "TestInvoice1.html"));
var chromePdfRenderer = new ChromePdfRenderer();
using var pdf = chromePdfRenderer.RenderHtmlAsPdf(html);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRendererExample1.Pdf"));' Read HTML from file
Dim html = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "TestInvoice1.html"))
Dim chromePdfRenderer As New ChromePdfRenderer()
Dim pdf = chromePdfRenderer.RenderHtmlAsPdf(html)
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRendererExample1.Pdf"))结果是:
从 HTML 生成 PDF 文件
看起来不错! 请在 IronPDFDemo.RenderHtmlAdPdfDemo 项目下找到代码示例。
也可以查看关于如何在 IronPDF 中使用 HTML 文档或字符串与字节数组的问题
示例 2
本节将帮助定制示例 1 中生成的 PDF。例如,它将添加自定义边距、带有文档标题的页眉、带有创建日期和页码的页脚,以及标准发票所具有的用于"打印"媒体类型的自定义 CSS。 为此,将初始化 ChromePdfRenderOptions 实例并传递到 ChromePdfRenderer 构造函数中。
// Configure rendering options with margins, headers, and footers
var pdfRenderingOptions = new ChromePdfRenderOptions()
{
MarginTop = 50,
MarginBottom = 50,
TextHeader = new TextHeaderFooter()
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 16
},
TextFooter = new TextHeaderFooter()
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 14
},
CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
};
var chromePdfRenderer = new ChromePdfRenderer(pdfRenderingOptions);// Configure rendering options with margins, headers, and footers
var pdfRenderingOptions = new ChromePdfRenderOptions()
{
MarginTop = 50,
MarginBottom = 50,
TextHeader = new TextHeaderFooter()
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 16
},
TextFooter = new TextHeaderFooter()
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 14
},
CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
};
var chromePdfRenderer = new ChromePdfRenderer(pdfRenderingOptions);' Configure rendering options with margins, headers, and footers
Dim pdfRenderingOptions = New ChromePdfRenderOptions() With {
.MarginTop = 50,
.MarginBottom = 50,
.TextHeader = New TextHeaderFooter() With {
.CenterText = "{pdf-title}",
.DrawDividerLine = True,
.FontSize = 16
},
.TextFooter = New TextHeaderFooter() With {
.LeftText = "{date} {time}",
.RightText = "Page {page} of {total-pages}",
.DrawDividerLine = True,
.FontSize = 14
},
.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
}
Dim chromePdfRenderer As New ChromePdfRenderer(pdfRenderingOptions)提示:可以通过设置 ChromePdfRenderer 实例的相应字段,而不是在构造函数中传递选项作为参数:
var chromePdfRenderer = new ChromePdfRenderer();
chromePdfRenderer.RenderingOptions = pdfRenderingOptions;var chromePdfRenderer = new ChromePdfRenderer();
chromePdfRenderer.RenderingOptions = pdfRenderingOptions;Dim chromePdfRenderer As New ChromePdfRenderer()
chromePdfRenderer.RenderingOptions = pdfRenderingOptions注意:页眉和页脚功能合并功能,意味着所有合并字段({page}、{total-pages}、{url}、{date}、{time}、{html-title}、{pdf-title})可以用相应的数据填充。
其余的代码与示例 1 相同。结果是:
生成带有页眉和页脚的发票
现在已经就位自定义边距、页眉、页脚和"打印"媒体类型的 CSS。 请在 IronPDFDemo.RenderHtmlAdPdfDemo 项目下找到代码示例。 更多设置可在 IronPDF API 参考中找到。
步骤 4:RenderUrlAsPdf
设置
要运行此部分的示例,您需要在本地托管 IronPDFDemo.DemoWebSite。 在 IIS Express 中这样做:
- 导航到 DemoWebSite
- 右键单击 > 设置为启动项目
- 启动而不调试(Ctrl+F5)
- 导航到您的
{baseurl}/Static/TestInvoice1.html以确保其正常工作。 这是 URLhttp://localhost:51169/Static/TestInvoice1.html(如果您没有更改相应的项目设置,将与您的一样)。
示例 1
在本节中,将托管的 DemoWebSite 发票转换为 PDF,使用与 HelloWorld 示例相同的代码。 区别在于托管的 URL:
// URL of the hosted invoice webpage
var uri = new Uri("http://localhost:51169/Static/TestInvoice1.html");
var urlToPdf = new ChromePdfRenderer();
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample1.Pdf"));// URL of the hosted invoice webpage
var uri = new Uri("http://localhost:51169/Static/TestInvoice1.html");
var urlToPdf = new ChromePdfRenderer();
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample1.Pdf"));' URL of the hosted invoice webpage
Dim uri As New Uri("http://localhost:51169/Static/TestInvoice1.html")
Dim urlToPdf = New ChromePdfRenderer()
Dim pdf = urlToPdf.RenderUrlAsPdf(uri)
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample1.Pdf"))结果是:
生成托管网站为 PDF
这很棒,外观与预期一致。 请在 IronPDFDemo.RenderUrlAsPdfDemo 项目中找到代码示例。
示例 2
许多网站通常受到身份验证方法的保护。 本节中,使用提供的用户名和密码在渲染 PDF 文件的过程中进行一些自定义:自定义边距、带有文档标题的页眉、带有创建日期和页码的页脚,以及标准发票所具有的用于"打印"媒体类型的自定义 CSS。 发票的 URL 在 http://localhost:51169/Invoice。
访问 http://localhost:51169/Invoice 会出现"需要身份验证"表单:
需要身份验证表单
注意:凭证是"testUser"/"testPassword"。
那么如何绕过身份验证呢? 通过设置 HttpLoginCredentials:
// URL of the protected invoice webpage
var uri = new Uri("http://localhost:51169/Invoice");
// Configure renderer with login credentials to bypass authentication
var urlToPdf = new ChromePdfRenderer
{
RenderingOptions = new ChromePdfRenderOptions()
{
MarginTop = 50,
MarginBottom = 50,
TextHeader = new TextHeaderFooter()
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 16
},
TextFooter = new TextHeaderFooter()
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 14
},
CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
},
// Set login credentials to bypass basic authentication
LoginCredentials = new HttpLoginCredentials()
{
NetworkUsername = "testUser",
NetworkPassword = "testPassword"
}
};
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample2.Pdf"));// URL of the protected invoice webpage
var uri = new Uri("http://localhost:51169/Invoice");
// Configure renderer with login credentials to bypass authentication
var urlToPdf = new ChromePdfRenderer
{
RenderingOptions = new ChromePdfRenderOptions()
{
MarginTop = 50,
MarginBottom = 50,
TextHeader = new TextHeaderFooter()
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 16
},
TextFooter = new TextHeaderFooter()
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 14
},
CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
},
// Set login credentials to bypass basic authentication
LoginCredentials = new HttpLoginCredentials()
{
NetworkUsername = "testUser",
NetworkPassword = "testPassword"
}
};
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample2.Pdf"));' URL of the protected invoice webpage
Dim uri As New Uri("http://localhost:51169/Invoice")
' Configure renderer with login credentials to bypass authentication
Dim urlToPdf = New ChromePdfRenderer With {
.RenderingOptions = New ChromePdfRenderOptions() With {
.MarginTop = 50,
.MarginBottom = 50,
.TextHeader = New TextHeaderFooter() With {
.CenterText = "{pdf-title}",
.DrawDividerLine = True,
.FontSize = 16
},
.TextFooter = New TextHeaderFooter() With {
.LeftText = "{date} {time}",
.RightText = "Page {page} of {total-pages}",
.DrawDividerLine = True,
.FontSize = 14
},
.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
},
.LoginCredentials = New HttpLoginCredentials() With {
.NetworkUsername = "testUser",
.NetworkPassword = "testPassword"
}
}
Dim pdf = urlToPdf.RenderUrlAsPdf(uri)
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample2.Pdf"))注意:使用的自定义与 ChromePdfRenderer 示例 2 相同。
结果是:
用凭证生成 HTML 网站的 PDF 文件
一切都已就位。 请在 IronPDFDemo.RenderUrlAsPdfDemo 项目中找到代码示例。 如果您想知道没有 HttpLoginCredentials 的结果会如何,您可以看到:
生成没有凭证的空 PDF 文件
也请参阅 Jean 的.NET HTML 转 PDF 教程
此外,IronPDF 还可以以不同的方式与 PDF 交互:
- 使用 OCR 从 PDF 中提取图像和文本
- 编辑您已转换内容的 HTML
- 增强 PDF 文件的前景和背景设置
- 为您的 PDF 添加数字签名
- 使用 IronPDF 工具自动填充您的 PDF 表单