在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
IronPDF 可通过编程将 HTML 转换为 PDF 文档。
这种技术的一个简单例子是下载并查看 PDF 示例.
整篇文章的源代码可作为 C#C# HTML 转 PDF 项目源代码下载.
以下教程将指导您将 IronPDF 用作C# PDF生成器. 它涵盖了基础知识以及许多高级 C# PDF 主题。
本演示将通过实例向您介绍如何使用 IronPdf。 请求 Iron Software 提供更多用例演示.
演示包括 Hello World、将Html渲染为Pdf和将URL渲染为PDF例子 所有示例均可在 IronPDF 演示解决方案下的相应项目中找到。
您可以通过 NuGet 安装 IronPDF。 软件包名称为 IronPDF NuGet 软件包.
您也可以使用 直接下载库.
一旦在项目中安装并引用了 IronPdf,只需键入几个字符串即可立即开始使用:
var ChromePdfRenderer = new ChromePdfRenderer(); // new instance of ChromePdfRenderer
var ChromePdfRenderer = new ChromePdfRenderer(); // new instance of ChromePdfRenderer
Dim ChromePdfRenderer As New ChromePdfRenderer() ' new instance of ChromePdfRenderer
那么如果您需要将 HTML 转换成 PDF
// html to turn into pdf
var html = @"<h1>Hello World!</h1><br><p>This is IronPdf.</p>";
// turn html to pdf
using var pdf = ChromePdfRenderer.RenderHtmlAsPdf(html);
// save resulting pdf into file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"));
// html to turn into pdf
var html = @"<h1>Hello World!</h1><br><p>This is IronPdf.</p>";
// turn html to pdf
using var pdf = ChromePdfRenderer.RenderHtmlAsPdf(html);
// save resulting pdf into file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"));
' html to turn into pdf
Dim html = "<h1>Hello World!</h1><br><p>This is IronPdf.</p>"
' turn html to pdf
Dim pdf = ChromePdfRenderer.RenderHtmlAsPdf(html)
' save resulting pdf into 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");
// turn page into pdf
pdf = ChromePdfRenderer.RenderUrlAsPdf(uri);
// save resulting pdf into 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");
// turn page into pdf
pdf = ChromePdfRenderer.RenderUrlAsPdf(uri);
// save resulting pdf into 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")
' turn page into pdf
pdf = ChromePdfRenderer.RenderUrlAsPdf(uri)
' save resulting pdf into file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"))
就是这样!
相应的结果是
将 HTML 转换为 PDF** 的结果
将网页转换为 PDF 的结果
请在 IronPDFDemo.HelloWorld 项目下查找代码示例。
举一个更真实的例子,想象一张 HTML 发票需要翻译成 PDF 格式。 以下是如何做到这一点的代码。
注: 您可以在 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 文档或字符串
本节将帮助定制例 1 中生成的 PDF。例如,它将添加自定义页边距、带有文档标题的页眉、带有创建日期和页码的页脚,以及标准发票所具有的 "打印 "媒体类型的一些自定义 CSS。 为此,需要初始化一个 ChromePdfRenderOptions
实例,并将其传入 ChromePdfRenderer
构造函数。
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);
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);
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
注: 页眉和页脚具有合并功能,这意味着所有合并字段({页码}, {总页数}, {网址}, {日期}, {时间}, {html-title}, {pdf标题})可以填充相应的数据。
其余代码与例 1 相同。结果如下
生成带有页眉和页脚的发票
自定义页边距、页眉、页脚和用于 "打印 "媒体类型的 CSS 现已就绪。 请在 IronPDFDemo.RenderHtmlAdPdfDemo 项目下查找代码示例。 更多设置请参见IronPDF API 参考.
要运行本节中的示例,您需要在本地托管 IronPDFDemo.DemoWebSite。 要在 IIS Express 中做到这一点:
导航至演示网站
右键单击 > 设置为启动项目
无需调试即可启动(Ctrl+F5)
在本节中,使用与 HelloWorld 示例相同的代码将托管的 DemoWebSite 发票转换为 PDF。 不同之处在于托管的 URL:
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"));
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"));
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 项目中查看代码示例。
许多网站通常都受到身份验证方法的保护。 本节在渲染 PDF 文件的过程中使用了提供的用户名和密码,并进行了一些自定义:自定义页边距、包含文档标题的页眉、包含创建日期和页数的页脚以及 "打印 "媒体类型的自定义 CSS。 发票的 URL 地址为 http
访问 http
需要认证的表格
注: 用户名为 "testUser"/"testPassword"。
那么,如何绕过身份验证呢? 通过设置 HttpLoginCredentials
:
var uri = new Uri("http://localhost:51169/Invoice");
var urlToPdf = new ChromePdfRenderer
{
PrintOptions = new ChromePdfRenderer()
{
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
},
// setting 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"));
var uri = new Uri("http://localhost:51169/Invoice");
var urlToPdf = new ChromePdfRenderer
{
PrintOptions = new ChromePdfRenderer()
{
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
},
// setting 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"));
Dim uri As New Uri("http://localhost:51169/Invoice")
Dim urlToPdf = New ChromePdfRenderer With {
.PrintOptions = New ChromePdfRenderer() 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 相同的定制方法。
结果是
生成一个带有 PDF 文件证书的 HTML 网站
一切就绪。 请在 IronPDFDemo.RenderUrlAsPdfDemo 项目下查看代码示例。 如果您想知道没有 HttpLoginCredentials 的结果会是怎样,请看这里:
生成无证书的空 PDF 文件
另请参见 Jean 的.NET HTML 转 PDF 教程
此外,IronPDF 还能以不同的方式与 PDF 进行交互: