HTML转PDF C#转换

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

作为IronPDF的开发者,我们理解使用IronPDF创建的PDF文档不仅需要完美无瑕,还要与客户的期望完全一致。 这个C# PDF 教程将教你如何为你的 HTML-to-PDF 转换器进行构建。C# 应用程序, 项目和网站。 我们将开发一个C# HTML到PDF的转换器,而IronPDF输出的PDF文档将与Google Chrome浏览器生成的PDF像素完全相同。

IronPDF 功能:

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

在 .NET 中以编程方式创建 PDF 文件可能是一项令人沮丧的任务。 PDF 文档文件格式的设计更多地是为了打印机,而不是为开发人员。 C# 并没有很多适合的库或内置的功能来生成 PDF,市场上的许多库不能开箱即用,且在需要多行代码来完成简单任务时会导致进一步的挫败感。

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

使用 C# 和 IronPDF,逻辑可以 "生成 PDF 文档"或"HTML 转换为 PDF很简单。 由于IronPDF的高级Chrome渲染器,大部分或全部PDF文档设计和布局将使用现有的HTML资产。

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

IronPDF 也支持使用 Chrome 调试您的 HTML 以获得像素完美的 PDF。 可以找到有关设置此内容的教程 这里.**

IronPDF 能够在 .NET 生态系统内外以多种语言工作。

下载并安装HTML到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 DLL。 IronPDF可以从下载并手动安装到项目或GAC https://ironpdf.com/packages/IronPdf.zip


教程

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

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

我们可以简单地使用ChromePdfRenderer.RenderHtmlAsPdf方法将任何 HTML(HTML5)将字符串转换为PDF。 C# HTML 转 PDF 渲染 是由嵌入在 IronPDF DLL 中的 Google 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将按HTML在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。 默认情况下,将渲染“Screen”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的URL
  • {日期}今天的日期
  • {时间}当前时间
  • {html-title}在渲染的HTML文档的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 模板

为模板或“批量创建”PDF 是互联网和网站开发人员的常见需求。

与其直接对PDF文档进行模板化操作,我们可以使用IronPDF利用现有的、经过验证的技术来对HTML进行模板化。 当 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 文件较长,我们通常可以使用任意占位符,如 ````[[姓名]]并稍后将其替换为真实数据。

以下示例将创建三个PDF,每个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的高级模板功能

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

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# PDFIronPDF支持的功能之一是在文档中添加水印。 这可以用于在每页添加一个带有“机密”或“示例”字样的通知。

: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. HTML 文件转 PDF 在 C# 中(支持 CSS、JavaScript 和图像)
  3. C# 使用 URL 将 HTML 转换为 PDF("URL到PDF")
  4. C# PDF编辑和设置示例
  5. 将 JavaScript 画布图表(如 d3.js)渲染为 PDF
  6. 用于 C# 的 PDF 库

类参考

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

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

此对象模型展示了 PDF 文档如何:

  • 加密和密码保护
  • 编辑或“标记”新的HTML内容
  • 增强了前景和背景图像
  • 合并、连接、截断和拼接于页面或文档级别
  • OCR处理以提取纯文本和图像


Blazor HTML 转 PDF

将HTML到PDF的功能添加到您的Blazor服务器非常简单,只需:

  1. 创建一个新的Blazor服务器项目或使用一个现有的项目
  2. 使用NuGet将IronPDF库添加到您的项目中
  3. 添加一个新的 Razor 组件或使用现有的组件
  4. 添加一个InputTextArea并将其链接到IronPDF
  5. 让IronPDF负责其余的部分并部署

    可以在以下位置找到包含图片和代码示例的完整分步指南这里.


与其他 PDF 库的比较

在将HTML转换为PDF时,在线上有几个开源选项可用,例如iTextSharp和PdfSharp,这些可以在GitHub等平台上找到。 这些库是免费使用的,对于希望避免购买库的开发者来说,这些是吸引人的选择。 然而,在 .NET Core 项目中使用这些解决方案而不使用库可能会带来限制,特别是对于如精确渲染现代 HTML5、CSS3 或 JavaScript 内容等高级任务。

与 IronPDF 不同,后者提供了一个完整、功能丰富且易于集成的 HTML 转 PDF 解决方案,开源替代方案往往需要更多的手动努力,并且可能缺乏对某些功能的支持。 IronPDF为.NET Core开发者提供了一个更加流畅的开箱即用体验,使他们能够生成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 是 iText Java 库用于生成和编辑 PDF 的开源部分移植。 将HTML转换为PDF —— 这可能实现,但我注意到其渲染仅限于Java提供的功能,或使用wkhtmltopdf在LGPL开源许可下的HTML到PDF转换。

C# 的 HTML 转 PDF 的一个关键区别是iTextSharpIronPDF 的优势在于,它通过使用嵌入的基于 Chrome 的网络浏览器进行更高级和更准确的 HTML 到 PDF 渲染,而不是 iText 中使用的传统 wkhtmltopdf。

IronPDF API 与 iTextSharp 不同,IronPDF 具有明确的商业或私人使用许可,而 iTextSharp 的 AGLP 许可仅适用于将完整源代码免费提供给每位用户的应用程序——即使是互联网上的用户。

我们提供了完整的差异分析在我们的 iTextSharpC# 文档页面。

其他商业图书馆

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# 库。