HTML 到 PDF 的 C# 转换

This article was translated from English: Does it need improvement?
Translated
View the article in English

作为 IronPDF 的开发者,我们深知由 IronPDF 制作的 PDF 文档不仅需要完美的外观,还需要符合客户的期望。本 C# PDF 教程将教您如何在 C# 应用程序、项目和网站中创建 HTML 到 PDF 的转换器。 我们将创建一个 C# html 转 PDF 转换器。IronPDF 输出的 PDF 文档与 Google Chrome 浏览器中的 PDF 功能像素相同。

使用 IronPDF C# 库,我们将

  • 在 C# 应用程序中将 HTML 字符串或 HTML 文件作为 "内容 "创建 PDF 文档。
  • 在 C# 中应用编辑和 PDF 生成功能

  • 在不丢失任何格式的情况下将 URL 转换为 PDF

概述


用于 C# 和 VB.NET 的 HTML 到 PDF 转换器

在.NET中以编程方式创建PDF文件是一项令人沮丧的任务。PDF 文件格式更多的是为打印机而不是开发人员设计的。 而且 C# 并没有很多合适的库或内置的 PDF 生成功能,市场上的很多库并不能开箱即用,如果需要多行代码才能完成一个简单的任务,那就更令人沮丧了。

在本教程中,我们将使用的 C# HTML 到 PDF 转换工具是 Iron Software 的 IronPDF,它是一个非常流行的 C# PDF 生成和编辑库。该库具有全面的 PDF 编辑和生成功能,完全开箱即用,能以最少的行数完成您所需的功能,并具有 50 多种功能的出色文档.IronPDF 的突出之处在于它支持 Windows、macOS、Linux、Docker、Azure 和 AWS 上的 .NET 8、.NET 7、.NET 6 和 .NET 5、.NET Core、Standard 和 Framework。

生成 PDF 文档"或"HTML 转换为 PDF"是简单明了的。由于 IronPDF 先进的 Chrome 渲染器,PDF 文档的大部分或全部设计和布局都将使用现有的 HTML 资产。

这种使用 HTML5 在 .NET 中动态生成 PDF 的方法同样适用于控制台应用程序、Windows 窗体应用程序、WPF 以及网站和 MVC。

IronPDF 还支持使用 Chrome 浏览器调试 HTML,以生成完美像素。设置教程如下 这里.

VB.NET : 将 HTML 转换为 PDF

IronPDF 是一个 C# 库,允许开发人员在 .NET Core 和 .NET Framework 的 C#、F# 和 VB.NET 中轻松创建 PDF 文档。这确保我们作为 .NET 程序员无需学习专有文件格式或新的 API。我们可以轻松地从我们的程序和网络应用程序中输出动态 PDF 文件。

要了解如何在VB.NET上使用 IronPDF,请查看我们的 向导.

要了解如何在 F# 上使用 IronPDF,请查看我们的 向导.

IronPDF 功能:

  • 通过 HTML、URL、JavaScript、CSS 和多种图像格式生成 PDF 文件

    • 添加页眉/页脚、签名、附件、密码和安全性

    • 性能优化:完全多线程和异步支持

步骤 1

下载和安装 HTML to PDF C# 库

适用于PDF的C# NuGet库

安装使用 NuGet

Install-Package IronPdf
Java PDF JAR

下载 DLL

下载DLL

手动安装到你的项目中

适用于PDF的C# NuGet库

安装使用 NuGet

Install-Package IronPdf
Java PDF JAR

下载 DLL

下载DLL

手动安装到你的项目中

开始在您的项目中使用IronPDF,并立即获取免费试用。

第一步:
green arrow pointer

查看 IronPDFNuget 用于快速安装和部署。它有超过800万次下载,正在使用C#改变PDF。

适用于PDF的C# NuGet库 nuget.org/packages/IronPdf/
Install-Package IronPdf

考虑安装 IronPDF DLL 直接。下载并手动安装到您的项目或GAC表单中: IronPdf.zip

手动安装到你的项目中

下载DLL

Visual Studio - NuGet 包管理器

在 Visual Studio 中,右键单击项目解决方案资源管理器并选择 "管理 NuGet 包...",然后搜索 IronPDF 并将最新版本安装到解决方案中...单击确定出现的任何对话框。这还将

在 VB.NET 项目中也同样有效。

Install-Package IronPdf

NuGet 网站上的 IronPDF

如需全面了解 IronPDF 的功能、兼容性和下载情况,请查看 NuGet 官方网站上的 IronPDF: https://www.nuget.org/packages/IronPdf

通过 DLL 安装

另一种方法是直接安装 IronPDF 动态链接库。可以从以下地址下载 IronPDF 并手动安装到项目或 GAC 中 https://ironpdf.com/packages/IronPdf.zip


教程

在 C# .NET 中用 HTML 字符串创建 PDF

如何将 HTML 字符串转换为 PDF?将 HTML 字符串转换为 PDF? 在 C# 中**创建一个新的 PDF 文件是一项非常高效且有益的技能。

我们只需使用 ChromePdfRenderer.RenderHtmlAsPdf 方法将任何 HTML (HTML5) 字符串转化为 PDF。 C# HTML 到 PDF 的渲染是由嵌入在 IronPDF DLL 中的谷歌 Chromium 引擎的全功能版本完成的。

:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-1.cs
using IronPdf;

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1> Hello IronPdf </h1>");
pdf.SaveAs("pixel-perfect.pdf");
Imports IronPdf

Private renderer = New ChromePdfRenderer()
Private pdf = renderer.RenderHtmlAsPdf("<h1> Hello IronPdf </h1>")
pdf.SaveAs("pixel-perfect.pdf")
VB   C#

RenderHtmlAsPdf完全支持 HTML5、CSS3、JavaScript 和图像。 如果这些资产在硬盘上,我们不妨将RenderHtmlAsPdf` 的第二个参数设置为资产的目录。

IronPDF 将完全按照 Chrome 浏览器中的显示方式呈现您的 HTML

我们有一个完整的教程,可以让您在 Chrome 浏览器中设置完整的 HTML 调试,以确保您在编辑 HTML、CSS 和 JavaScript 时看到的更改与您选择渲染时从 IronPDF 输出的 PDF 完全相同。请点击此处查看教程: 如何在 Chrome 浏览器中调试 HTML 以创建像素完美的 PDF.

BaseUrlPath

:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-2.cs
using IronPdf;

// this will render C:\MyProject\Assets\image1.png
var pdf = renderer.RenderHtmlAsPdf("<img src='image1.png'/>", @"C:\MyProject\Assets\");
Imports IronPdf

' this will render C:\MyProject\Assets\image1.png
Private pdf = renderer.RenderHtmlAsPdf("<img src='image1.png'/>", "C:\MyProject\Assets\")
VB   C#

所有引用的 CSS 样式表、图片和 JavaScript 文件都将相对于 "BaseUrlPath",并可保持整洁、合理的结构。 当然,您也可以选择引用图片、样式表和在线资产,包括网络字体(如 Google Fonts)甚至 jQuery。


使用现有 URL 导出 PDF

将 URL 转换为 PDF

(URL 到 PDF)

使用 C# 将现有 URL 渲染为 PDF 非常高效和直观。 这还允许团队将 PDF 设计和后端 PDF 渲染工作分给多个团队。

让我们在下面的示例中渲染一个来自 Wikipedia.com 的页面:

:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-3.cs
using IronPdf;

// Create a PDF from any existing web page
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");
pdf.SaveAs("wikipedia.pdf");
Imports IronPdf

' Create a PDF from any existing web page
Private renderer = New ChromePdfRenderer()
Private pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/PDF")
pdf.SaveAs("wikipedia.pdf")
VB   C#

您会注意到,我们的 C# 代码所生成的 PDF 中保留了超链接甚至 HTML 表单。

在呈现现有网页时,我们可能需要使用一些技巧:

打印和屏幕 CSS

在现代 CSS3 中,我们有用于打印和屏幕的 CSS 指令。 我们可以指示 IronPDF 渲染经常被简化或忽略的 "打印 "CSS。 默认情况下,将呈现 "屏幕 "CSS 样式,即 IronPDF 用户认为最直观。

:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-4.cs
using IronPdf;
using IronPdf.Rendering;

renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screen;
// or
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
Imports IronPdf
Imports IronPdf.Rendering

renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screen
' or
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
VB   C#

主页:可查看屏幕和打印图像的全面对比 这里.

JavaScript

IronPDF 支持 JavaScript、jQuery 甚至 AJAX。 我们可能需要 IronPDF 等待**JS 或 ajax 完成运行,然后再渲染网页快照。

:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-5.cs
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.RenderDelay(500); // milliseconds
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

我们可以通过渲染一个高级的 d3.js JavaScript 和弦图 像这样从 CSV 数据集获取数据:

:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-6.cs
using IronPdf;

// Create a PDF Chart a live rendered dataset using d3.js and javascript
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://bl.ocks.org/mbostock/4062006");
pdf.SaveAs("chart.pdf");
Imports IronPdf

' Create a PDF Chart a live rendered dataset using d3.js and javascript
Private renderer = New ChromePdfRenderer()
Private pdf = renderer.RenderUrlAsPdf("https://bl.ocks.org/mbostock/4062006")
pdf.SaveAs("chart.pdf")
VB   C#

响应式 CSS

在 .NET 中使用响应 CSS 将 HTML 转换为 PDF! 响应式网页 是专为在浏览器中查看而设计的。 IronPDF 不会在服务器操作系统中打开真正的浏览器窗口。 这可能导致响应式元素以最小尺寸呈现。

我们建议使用 Print css 媒体类型来解决这个问题。 打印 CSS 通常不应具有响应性。

:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-7.cs
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
VB   C#

从 HTML 页面生成 PDF

我们还可以将硬盘上的任何 HTML 页面渲染为 PDF。 所有相关资产(如 CSS、图像和 js)都将被渲染,就像使用 file:// 协议打开文件一样。

:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-8.cs
using IronPdf;

// Create a PDF from an existing HTML using C#
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html");
pdf.SaveAs("Invoice.pdf");
Imports IronPdf

' Create a PDF from an existing HTML using C#
Private renderer = New ChromePdfRenderer()
Private pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html")
pdf.SaveAs("Invoice.pdf")
VB   C#

这种方法的优点是允许开发人员在开发过程中在浏览器中测试 HTML 内容。 我们推荐使用 Chrome 浏览器,因为 IronPDF 的渲染引擎正是基于该浏览器。

转换 XML to PDF 你可以使用 XSLT 模板将 XML 内容打印成 PDF 格式.


添加自定义页眉和页脚

可以在渲染 PDF 文件时添加页眉和页脚,也可以使用 IronPDF 将页眉和页脚添加到现有的 PDF 文件中。

使用 IronPDF,页眉和页脚可以使用 TextHeaderFooter 类包含简单的文本内容,或使用 HtmlHeaderFooter 类包含图像和丰富的 HTML 内容。

:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-9.cs
using IronPdf;

// Create a PDF from an existing HTML
var renderer = new ChromePdfRenderer
{
    RenderingOptions =
    {
        MarginTop = 50, //millimeters
        MarginBottom = 50,
        CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print,
        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
        }
    }
};

var pdf = renderer.RenderHtmlFileAsPdf("assets/TestInvoice1.html");
pdf.SaveAs("Invoice.pdf");

// This neat trick opens our PDF file so we can see the result
System.Diagnostics.Process.Start("Invoice.pdf");
Imports IronPdf

' Create a PDF from an existing HTML
Private renderer = New ChromePdfRenderer With {
	.RenderingOptions = {
		MarginTop = 50, MarginBottom = 50, CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print, 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
		}
	}
}

Private pdf = renderer.RenderHtmlFileAsPdf("assets/TestInvoice1.html")
pdf.SaveAs("Invoice.pdf")

' This neat trick opens our PDF file so we can see the result
System.Diagnostics.Process.Start("Invoice.pdf")
VB   C#

HTML 页眉和页脚

HtmlHeaderFooter` 类允许使用 HTML5 内容生成丰富的页眉和页脚,这些内容甚至可以包括图片、样式表和超链接。

:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-10.cs
using IronPdf;

renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>"
};
Imports IronPdf

renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {.HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>"}
VB   C#

PDF 页眉和页脚中的动态数据

我们可以使用以下占位符将内容 "邮件合并 "到页眉和页脚的文本甚至 HTML 中:

  • {页码} 为当前页码
  • {总页数} 表示 PDF 文件的总页数
  • {网址} 如果是从网页渲染的 PDF,则表示渲染后 PDF 的 URL
  • {日期} 今天的日期
  • {时间} 当前时间
  • {html-title} 的 title 属性

  • {pdf标题} 用于文档标题,可通过 ChromePdfRenderOptions 设置

C## HTML 到 PDF 的转换设置

我们的用户和客户可能希望 PDF 内容的呈现方式有许多细微差别。

ChromePdfRenderer "类包含一个RenderingOptions属性,可用于设置这些选项。

例如,我们可能希望只接受"print"样式的 CSS3 指令:

:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-11.cs
using IronPdf;

renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
Imports IronPdf

renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
VB   C#

我们可能还希望改变打印页边距的大小,以便在页面上留出更多空白,为大页眉或页脚留出空间,甚至为商业印刷小册子或海报设置零页边距:

:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-12.cs
using IronPdf;

renderer.RenderingOptions.MarginTop = 50; // millimeters
renderer.RenderingOptions.MarginBottom = 50; // millimeters
Imports IronPdf

renderer.RenderingOptions.MarginTop = 50 ' millimeters
renderer.RenderingOptions.MarginBottom = 50 ' millimeters
VB   C#

我们可能希望打开或关闭 HTML 元素的背景图片:

:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-13.cs
using IronPdf;

renderer.RenderingOptions.PrintHtmlBackgrounds = true;
Imports IronPdf

renderer.RenderingOptions.PrintHtmlBackgrounds = True
VB   C#

还可以设置我们输出的 PDF 文件在任何虚拟纸张尺寸上呈现,包括纵向和横向尺寸,甚至可以设置为毫米或英寸的自定义尺寸。

:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-14.cs
using IronPdf;
using IronPdf.Rendering;

renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
Imports IronPdf
Imports IronPdf.Rendering

renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
VB   C#

完整的 HTML 文档 C# PDF 创建器 设置可在 https://ironpdf.com/object-reference/api/IronPdf.ChromePdfRenderer.html

全套 PDF 打印选项包括

  • CreatePdfFormsFromHtml:将所有 HTML 表单元素转化为可编辑的 PDF 表单。
  • CssMediaType:屏幕 "或 "打印 "CSS 样式和样式表。请参阅我们的 附带对比图片的全面深入教程.
  • CustomCssUrl:允许在渲染前将自定义 CSS 样式表应用于 HTML。可以是本地文件路径,也可以是远程 URL。
  • EnableMathematicalLaTex:启用或禁用数学 LaTeX 元素的渲染。
  • EnableJavaScript:启用 JavaScript 和 JSON,以便在页面渲染前执行。非常适合从 Ajax / Angular 应用程序中打印。 另请参见 渲染延迟.
  • JavaScript:指定一个自定义 JavaScript 字符串,该字符串将在加载所有 HTML 之后、PDF 渲染之前执行。
  • JavascriptMessageListener:浏览器 JavaScript 控制台消息可用时调用的方法回调。
  • FirstPageNumber:在 PDF 页眉和页脚中使用的第一个页码。
  • 目录:在 HTML 文档中找到 id 为 "ironpdf-toc "元素的位置生成目录。
  • TextHeader:以字符串形式设置每个 PDF 页面的页眉内容。支持 "邮件合并
  • TextFooter:以字符串形式为每个 PDF 页面设置页脚内容。支持 "邮件合并
  • HtmlHeader:将每个 PDF 页面的页眉内容设置为 HTML 格式
  • HtmlFooter:将每个 PDF 页面的页脚内容设置为 HTML 格式
  • MarginBottom:纸张页边距,以毫米为单位。对于无边框和商业印刷应用,设置为零
  • MarginLeft:纸张边距(毫米
  • MarginRight:纸张边距(毫米
  • MarginTop:纸张边距(毫米)。对于无边框和商业印刷应用,设置为零
  • UseMarginsOnHeaderAndFooter:指定在呈现页眉和页脚时是否使用主文档中的页边距值。
  • PaperFit:用于设置虚拟纸张布局的管理器,可控制内容在 PDF "纸张 "页面上的布局方式。包括默认 Chrome 浏览器行为、缩放、响应式 CSS3 布局、缩放至页面和连续供稿式 PDF 页面设置选项。
  • 纸张方向:新文档的纸张方向。 完整解释和附带代码示例.
  • PageRotation:从现有文档中旋转页面。 完整解释和附带代码示例.
  • PaperSize:为 PDF 页面设置输出纸张尺寸。System.Drawing.Printing.PaperKind.
  • SetCustomPaperSizeinCentimeters:以厘米为单位设置纸张大小。
  • SetCustomPaperSizeInInches:以英寸为单位设置纸张大小。
  • SetCustomPaperSizeinMilimeters:以毫米为单位设置纸张大小。
  • SetCustomPaperSizeinPixelsOrPoints:以像素或点为单位设置纸张大小:以屏幕像素或打印机点为单位设置纸张大小。
  • ForcePaperSize:指定在从 HTML 生成 PDF 后,是否通过调整页面大小来强制页面大小与通过 PaperSize 指定的完全一致。
  • PrintHtmlBackgrounds:打印 HTML 的背景颜色和图像。
  • 灰度:指定是否输出黑白 PDF。
  • 超时:以秒为单位设置渲染超时。

  • WaitFor:封装对象,用于保存等待机制的配置。这在考虑 JavaScript、Ajax 或动画的呈现时非常有用。

    • PageLoad:默认呈现,无需等待。

    • RenderDelay:设置任意等待时间。

    • 字体:等待所有字体加载完毕。

    • JavaScript:使用 JavaScript 函数触发渲染:使用 JavaScript 函数触发渲染。

    • HTML 元素:等待特定的 HTML 元素,如元素 ID、名称、标记名称和目标元素的查询选择器。
  • NetworkIdle:等待网络空闲 (0、2 或自定义数量).
  • 标题:PDF 文档名称和标题元数据。非必填项。
  • InputEncoding:指定输入字符编码。
  • RequestContext:指定渲染的请求上下文。

应用 HTML 模板

模板化或 "批量创建 "PDF 是互联网和网站开发人员的共同要求。

有了 IronPDF,我们就可以利用现有的成熟技术来制作 HTML 模板,而不是自己制作 PDF 文档。 当 HTML 模板与来自查询字符串或数据库的数据相结合时,我们就能生成一个动态的 PDF 文档。

在最简单的例子中,使用 C# String.Format 方法对基本样本很有效。

:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-15.cs
using System;


String.Format("<h1>Hello {0} !</h1>", "World");
Imports System


String.Format("<h1>Hello {0} !</h1>", "World")
VB   C#

如果 HTML 文件较长,我们通常可以使用任意占位符,如 [[姓名]]以后再用真实数据替换。

下面的示例将创建 3 个 PDF 文件,每个文件都针对一个用户。

:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-16.cs
var htmlTemplate = "<p>[[NAME]]</p>";
var names = new[] { "John", "James", "Jenny" };
foreach (var name in names)
{
    var htmlInstance = htmlTemplate.Replace("[[NAME]]", name);
    var pdf = renderer.RenderHtmlAsPdf(htmlInstance);
    pdf.SaveAs(name + ".pdf");
}
Dim htmlTemplate = "<p>[[NAME]]</p>"
Dim names = { "John", "James", "Jenny" }
For Each name In names
	Dim htmlInstance = htmlTemplate.Replace("[[NAME]]", name)
	Dim pdf = renderer.RenderHtmlAsPdf(htmlInstance)
	pdf.SaveAs(name & ".pdf")
Next name
VB   C#

使用 Handlebars.NET 进行高级模板制作

使用 Handlebars Templating 标准是一种将 C# 数据与 HTML 合并生成 PDF 的复杂方法。

通过 Handlebars,可以从 C# 对象和类实例(包括数据库记录)创建动态 HTML。 在查询可能返回未知行数的情况下,如生成发票时,Handlebars 尤其有效。

我们必须首先在项目中添加一个额外的 NuGet 包:https://www.nuget.org/packages/Handlebars.NET/

:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-17.cs
var source =
    @"<div class=""entry"">
        <h1>{{title}}</h1>
        <div class=""body"">
            {{body}}
        </div>
    </div>";
var template = Handlebars.Compile(source);

var data = (title: "My new post", body: "This is my first post!");

var result = template(data);

/* Would render:
<div class="entry">
  <h1>My New Post</h1>
  <div class="body">
    This is my first post!
  </div>
</div>
*/
Dim source = "<div class=""entry"">
        <h1>{{title}}</h1>
        <div class=""body"">
            {{body}}
        </div>
    </div>"
Dim template = Handlebars.Compile(source)

Dim data = (title:= "My new post", body:= "This is my first post!")

Dim result = template(data)

' Would render:
'<div class="entry">
'  <h1>My New Post</h1>
'  <div class="body">
'    This is my first post!
'  </div>
'</div>
'
VB   C#

要渲染 HTML,我们只需使用 RenderHtmlAsPdf 方法即可。

:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-18.cs
using IronPdf;

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlInstance);
pdf.SaveAs("Handlebars.pdf");
Imports IronPdf

Private renderer = New ChromePdfRenderer()
Private pdf = renderer.RenderHtmlAsPdf(htmlInstance)
pdf.SaveAs("Handlebars.pdf")
VB   C#

您可以从 https://github.com/rexm/Handlebars.NET 了解更多有关 handlebars html 模板标准及其 C# 使用的信息。

使用 HTML5 添加分页符

PDF 文档的一个常见要求是分页。 开发人员需要控制 PDF 页面的开始和结束位置,以获得整洁、可读性强的布局。

最简单的方法是使用一种鲜为人知的 CSS 技巧,它可以在任何打印的 HTML 文档中呈现分页符。

<div style='page-break-after: always;'>&nbsp;</div>
<div style='page-break-after: always;'>&nbsp;</div>
HTML

所提供的 HTML 虽然有效,但很难达到最佳效果。我们建议调整媒体属性,如下面的示例。这样的多页面 HTML 内容布局整齐划一。

<!DOCTYPE html>
<html>
  <head>
    <style type="text/css" media="print">
      .page{
        page-break-after: always;
        page-break-inside: avoid;
      }
    </style>
  </head>
  <body>
    <div class="page">
      <h1>This is Page 1</h1>
    </div>
    <div class="page">
      <h1>This is Page 2</h1>
    </div>
    <div class="page">
      <h1>This is Page 3</h1>
    </div>
  </body>
</html>
<!DOCTYPE html>
<html>
  <head>
    <style type="text/css" media="print">
      .page{
        page-break-after: always;
        page-break-inside: avoid;
      }
    </style>
  </head>
  <body>
    <div class="page">
      <h1>This is Page 1</h1>
    </div>
    <div class="page">
      <h1>This is Page 2</h1>
    </div>
    <div class="page">
      <h1>This is Page 3</h1>
    </div>
  </body>
</html>
HTML

方法概要 更多 使用分页符的技巧和窍门


为 PDF 文件附加封面页

IronPDF 可以轻松合并 PDF 文档。 该技术最常见的用途是在现有渲染的 PDF 文档中添加封面页或封底页。

为此,我们首先渲染封面页,然后使用 `PdfDocument.Merge()静态方法,用于合并 2 个文档。

:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-19.cs
using IronPdf;

var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf/");
var pdfMerged = PdfDocument.Merge(new PdfDocument("CoverPage.pdf"), pdf).SaveAs("Combined.Pdf");
Imports IronPdf

Private pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf/")
Private pdfMerged = PdfDocument.Merge(New PdfDocument("CoverPage.pdf"), pdf).SaveAs("Combined.Pdf")
VB   C#

完整的代码示例可在此处找到: PDF 封面代码示例


添加水印

最后一个 C# PDF IronPDF 支持为文档添加水印的功能。 这可用于在每页上添加通知,说明文档是 "机密 "或 "样本"。

:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-20.cs
using IronPdf;
using IronPdf.Editing;

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");
// Watermarks all pages with red "SAMPLE" text at a custom location.
// Also adding a link to the watermark on-click
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 0, VerticalAlignment.Middle, HorizontalAlignment.Center);
pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");
Imports IronPdf
Imports IronPdf.Editing

Private renderer = New ChromePdfRenderer()
Private pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf")
' Watermarks all pages with red "SAMPLE" text at a custom location.
' Also adding a link to the watermark on-click
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 0, VerticalAlignment.Middle, HorizontalAlignment.Center)
pdf.SaveAs("C:\Path\To\Watermarked.pdf")
VB   C#

完整的代码示例可在此处找到: PDF 水印代码示例


下载 C# 源代码

本教程的完整 免费 HTML 转 PDF 转换器 C# 源代码可作为一个压缩的 Visual Studio 2022 项目文件下载。 它将使用其渲染引擎在 C# 中生成 PDF 文档对象。

将本教程下载为 Visual Studio 项目

该免费下载包含从 HTML 创建 PDF 所需的一切内容,其中包括工作的 C# PDF 代码示例代码:

1.使用 C# 将 HTML 字符串转换为 PDF

2.用 C# 将 HTML 文件转换为 PDF (支持 CSS、JavaScript 和图像)

3.使用 URL 将 C# HTML 转换为 PDF ("URL到PDF")

4.C# PDF 编辑和设置示例

5.将 JavaScript 画布图表(如 d3.js)渲染为 PDF

6.C# PDF 库

Class Reference

开发人员可能也会对 "IronPdf.PdfDocument "类参考感兴趣:

https://ironpdf.com/object-reference/api/IronPdf.PdfDocument.html

该对象模型显示了 PDF 文档的结构:

  • 加密和密码保护
  • 编辑或 "加盖 "新的 HTML 内容
  • 增强前景和背景图像
  • 在页面或文档层面进行合并、连接、截断和拼接

  • 经过 OCR 处理,可提取纯文本和图像


Blazor HTML 转 PDF

在您的 Blazor 服务器中添加 HTML 转 PDF 功能非常简单:

1.创建新的 Blazor 服务器项目或使用现有项目

2.使用 NuGet 将 IronPDF 库添加到项目中

3.添加新的Razor组件或使用现有组件

4.添加一个 "InputTextArea "并将其链接至IronPDF

5.让 IronPDF 处理其余工作并进行部署

完整的分步指南(含图片和代码示例)可参见 这里.


与其他 PDF 库的比较

PDFSharp

PDFSharp 是一个免费的开放源代码库,可在 .NET 中对 PDF 文档进行逻辑编辑和创建。

PDFSharp 与 IronPDF 的一个主要区别是,IronPDF 具有一个嵌入式 Web 浏览器,可以通过 HTML、CSS、JS 和图像忠实地创建 PDF。

IronPDF API 与 PDFSharp 的区别还在于它是基于用例而非 PDF 文档的技术结构。许多人认为这样使用起来更合理、更直观。

它可以将 HTML 转换为 PDF,但 HTML 转换为 PDF 的范围有限:包括将 .html 文件转换为 PDF 文件。

wkhtmltopdf

wkhtmltopdf 是一个用 C++ 编写的免费开放源代码库,它允许从 HTML 渲染 PDF 文档。

wkhtmltopdf 与 IronPDF 的主要区别在于,IronPDF 是用 C# 编写的,在 .NET 应用程序和网站中使用稳定且线程安全。

IronPDF 还完全支持 CSS3 和 HTML5,而 wkhtmltopdf 已经过时近十年。

IronPDF API 与 wkhtmltopdf 的不同之处还在于,它拥有一个庞大而先进的 API,允许对 PDF 文档进行编辑、操作、压缩、导入、导出、签名、加密和水印。

使用 wkhtmltopdf 进行 HTML 到 PDF 的转换非常稳定,但使用的是非常过时的渲染引擎。

iTextSharp

iTextSharp 是用于生成和编辑 PDF 的 iText java 库的部分开源移植。将 HTML 转换为 PDF--这是可能的,但我注意到它的渲染仅限于 Java 中可用的内容,或使用 wkhtmltopdf 根据 LGPL 开源许可证将 HTML 转换为 PDF。

C# 与 HTML 转 PDF 的一个主要区别是 iTextSharp 与 IronPDF 的不同之处在于,IronPDF 通过使用基于 Chrome 浏览器的嵌入式网络浏览器,而不是 iText 中使用的传统 wkhtmltopdf,可以更先进、更准确地将 HTML 渲染为 PDF。

IronPDF API 与 iTextSharp 的不同之处还在于,IronPDF 有明确的商业或私人使用许可证,而 iTextSharp 的 AGLP 许可证只适用于向每个用户免费提供完整源代码的应用程序,甚至是互联网用户。

有关两者区别的详细介绍,请参阅我们的 iTextSharp C# 文档页面。

其他商业图书馆

Aspose PDFSpire PDFEO PDFSelectPdf是其他供应商的.NET商业 PDF 库。 IronPDF 拥有相对强大的功能集、出色的兼容性、编写精良的文档以及合理的价格。您可以查看 IronPDF、竞争对手和 Chrome 浏览器本身之间的比较 这里.


观看 HTML 转 PDF 视频教程

通过 PDF 文档,您可以访问以下链接,了解如何 在Chrome中打开PDF而不下载它.


教程快速访问

下载本教程的 C# 源代码

本教程的完整免费 HTML 转 PDF C# 源代码可作为压缩的 Visual Studio 项目文件下载。

下载

在 GitHub 上探索此教程

GitHub 上有该项目的 C# 和 VB.NET 源代码。

使用此代码,只需几分钟就能轻松上手并运行。该项目保存为 Microsoft Visual Studio 2017 项目,但兼容任何 .NET IDE。

C# HTML 转 PDF VB.NET HTML 转 PDF

下载 the C# PDF Quickstart guide

为了使您在.NET应用程序中开发 PDF 更容易,我们将快速入门指南编译成 PDF 文档。该 "小抄 "提供了在 C# 和 VB.NET 中生成和编辑 PDF 的常用函数和示例的快速访问方法,可帮助您节省在.NET 项目中开始使用 IronPDF 的时间。

下载

查看应用程序接口参考

探索 IronPDF 的 API 参考,其中概述了 IronPDF 的所有功能、命名空间、类、方法字段和枚举的详细信息。

查看应用程序接口参考
.NET软件工程师 对许多人来说,这是从.NET生成PDF文件的最有效方式,因为无需学习额外的API或复杂的设计系统。

让·阿什伯格

.NET软件工程师

让·是美国马萨诸塞州一家公司的内部信息解决方案的独立软件开发人员。

Jean 是 IronPDF 的早期采用者,并多次参与了产品改进的规格制定和建立路线图,以创建一个涵盖所有主要 PDF 产品功能用例的单一稳定的 C# 库。