使用IRONPDF

从HTML文件在C#中创建PDF

Kannaopat Udonpant
坎那帕·乌东攀
2022年一月24日
更新 2024年一月20日
分享:

IronPDF 可通过编程将 HTML 转换为 PDF 文档。

如何在C#中创建PDF - HTML到PDF示例

这种技术的一个简单示例可以下载并作为PDF示例查看

本文整篇文章的源代码可用于C#,作为C# HTML到PDF项目源代码下载

以下教程将引导您完成使用IronPDF作为C# PDF生成器的过程。 它涵盖了基本知识以及许多高级的C# PDF主题。

HTML 转 PDF 演练

本演示将通过实例向您介绍如何使用 IronPdf。 向Iron Software请求更多用例演示

该演示包括 Hello World,RenderHtmlAsPdfRenderUrlAsPdf 示例。 所有示例均可在 IronPDF 演示解决方案下的相应项目中找到。

步骤 1:安装

您可以通过 NuGet 安装 IronPDF。 软件包名称是IronPDF NuGet Package

或者您可以使用直接下载库

步骤 2:你好,世界

一旦在项目中安装并引用了 IronPdf,只需键入几个字符串即可立即开始使用:

var ChromePdfRenderer = new ChromePdfRenderer();  // new instance of ChromePdfRenderer
var ChromePdfRenderer = 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"));

或者如果您想将网页转化为 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"));

就是这样!

相应的结果是

在 C# 中从 HTML 文件创建 PDF,图 1:将 HTML 转换为 PDF 的结果

将 HTML 转换为 PDF 的结果**

在C#中从HTML文件创建PDF,图2:将网页转换为PDF的结果

将网页转换为 PDF 的结果

请在 IronPDFDemo.HelloWorld 项目下查找代码示例。

步骤 3:RenderHtmlAsPdf

示例 1

举一个更真实的例子,想象一张 HTML 发票需要翻译成 PDF 格式。 以下是如何做到这一点的代码。

注意:您可以在 IronPDFDemo.DemoWebSite 项目下找到发票 HTML (~/Static/TestInvoice1.html)。 请注意,发票上有针对 "打印 "媒体类型的自定义 CSS。

源发票在浏览器中看起来是这样的:

在 C# 中从 HTML 文件创建 PDF,图 4:


要将其转化为 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"));

结果是

在C#中从HTML文件创建PDF,第5步:从HTML生成PDF文件

从HTML生成PDF文件

看起来很棒! 请在 IronPDFDemo.RenderHtmlAdPdfDemo 项目下查找代码示例。

另请查看这个问题:如何在IronPDF中使用带有字节数组的HTML文档或字符串

示例 2

本节将帮助定制例 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);

提示:您可以为ChromePdfRenderer实例设置相应的字段,而不是在构造函数中将选项作为参数传递:

var chromePdfRenderer = new ChromePdfRenderer();
chromePdfRenderer.RenderingOptions = pdfRenderingOptions;
var chromePdfRenderer = new ChromePdfRenderer();
chromePdfRenderer.RenderingOptions = pdfRenderingOptions;

注意: 页眉和页脚功能融合了合并功能,这意味着可以用相应的数据填充所有合并字段({page},{total-pages},{url},{date},{time},{html-title},{pdf-title})。

其余代码与例 1 相同。结果如下

在C#中从HTML文件创建PDF,图6:生成带有页眉和页脚的发票

生成带有页眉和页脚的发票

自定义页边距、页眉、页脚和用于 "打印 "媒体类型的 CSS 现已就绪。 请在 IronPDFDemo.RenderHtmlAdPdfDemo 项目下查找代码示例。 更多设置可以在IronPDF API参考文档中找到。

步骤 4:RenderUrlAsPdf

设置

要运行本节中的示例,您需要在本地托管 IronPDFDemo.DemoWebSite。 要在 IIS Express 中做到这一点:

  1. 导航至演示网站

  2. 右键单击 > 设置为启动项目

  3. 开始不调试 (Ctrl+F5)

  4. 导航到您的 {baseurl}/Static/TestInvoice1.html 以确保其正常工作。 这是URL http://localhost:51169/Static/TestInvoice1.html(如果您不更改相应的项目设置,将与您相同)。

示例 1

在本节中,使用与 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"));

结果是

在 C# 中从 HTML 文件创建 PDF,图 7:将托管网站生成为 PDF

将托管网站生成为PDF

这很好,看起来也符合预期。 请在 IronPDFDemo.RenderUrlAsPdfDemo 项目中查看代码示例。

示例 2

许多网站通常都受到身份验证方法的保护。 本节在渲染 PDF 文件的过程中使用了提供的用户名和密码,并进行了一些自定义:自定义页边距、包含文档标题的页眉、包含创建日期和页数的页脚以及 "打印 "媒体类型的自定义 CSS。 发票的网址为 http://localhost:51169/Invoice。

访问http://localhost:51169/Invoice会显示“需要身份验证”表单:

在C#中从HTML文件创建PDF,图8:需要身份验证的表单

需要认证的表单

注意:凭据为“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"));

注意:与 ChromePdfRenderer 示例 2 使用相同的自定义设置。

结果是

在C#中从HTML文件创建PDF,图9:生成一个带有凭证的HTML站点到PDF文件

生成带有凭证的HTML站点到PDF文件

一切就绪。 请在 IronPDFDemo.RenderUrlAsPdfDemo 项目下查看代码示例。 如果您想知道没有 HttpLoginCredentials 的结果会是怎样,请看这里:

在 C# 中从 HTML 文件创建 PDF,第 10 图:无凭证生成空 PDF 文件

生成没有凭据的空PDF文件

另请参阅Jean的.NET HTML转PDF教程

此外,IronPDF 还能以不同的方式与 PDF 进行交互:

Kannaopat Udonpant
坎那帕·乌东攀
软件工程师
在成为软件工程师之前,Kannapat 从日本北海道大学完成了环境资源博士学位。在攻读学位期间,Kannapat 还成为了生物生产工程系车辆机器人实验室的成员。2022年,他利用自己的 C# 技能加入了 Iron Software 的工程团队,专注于 IronPDF。Kannapat 珍视他的工作,因为他能直接向编写 IronPDF 大部分代码的开发者学习。除了同伴学习,Kannapat 还享受在 Iron Software 工作的社交方面。不写代码或文档时,Kannapat 通常在 PS5 上玩游戏或重看《最后生还者》。
< 前一页
在C#中生成PDF文件
下一步 >
如何使用C#和IronPDF在ASP.NET中查看PDF文件