将 HTML 内容转换为 PDF 有很多好处,可以离线阅读 HTML 内容,也可以高保真地保存 HTML 内容和格式。Spire.PDF 提供两种方法将 HTML 转换为 PDF,一种使用 QT Web 插件进行转换,另一种则不需要插件。使用 QT 插件来转换是比较推荐的转换方法。
以下内容展示了如何使用 Spire.PDF for .NET 在有或没有 QT 插件的情况下将 HTML 网页(URL)或 HTML 字符串渲染成 PDF 文档。
安装 Spire.PDF for .NET
首先,我们需要将 Spire.PDF for .NET 包中包含的 DLL 文件添加为 .NET 项目中的引用。可以从此链接下载 DLL 文件,也可以通过 NuGet 安装 DLL 文件。
PM> Install-Package Spire.PDF
下载插件
如果你选择使用插件来转换,请从以下链接下载适合你操作系统的插件。
解压下载的压缩包到磁盘中,即可看到“plugin”文件夹,在该演示中,我们将其放在“F:\Libraries\Plugin\plugins-windows-x64\plugins”文件夹下。
同时,也建议将项目的“目标平台”设置为对应的 x86 或 x64。
使用 QT 插件将 URL 转换为 PDF
以下是使用 Spire.PDF for .NET 与 QT 插件将 URL 转换为 PDF 的详细操作步骤。
- 指定要转换的 URL 地址。
- 指定生成 PDF 文件的路径。
- 指定插件的路径,并将其指定为 HtmlConverter.PluginPath 属性的值。
- 调用 HtmlConverter.Convert(string url, string fileName, bool enableJavaScript, int timeout, SizeF pageSize, PdfMargins margins) 方法来转换 URL 为 PDF 文档。
- C#
- VB.NET
using Spire.Pdf.Graphics;
using Spire.Additions.Qt;
using System.Drawing;
namespace ConvertUrlToPdf
{
class Program
{
static void Main(string[] args)
{
//指定URL地址
string url = "https://www.wikipedia.org/";
//指定输出文件路径
string fileName = "Url转Pdf.pdf";
//指定插件路径
string pluginPath = "F:\\Libraries\\Plugin\\plugins-windows-x64\\plugins";
//设置插件路径
HtmlConverter.PluginPath = pluginPath;
//将URL转换为PDF
HtmlConverter.Convert(url, fileName, true, 100000, new Size(1080, 1000), new PdfMargins(0));
}
}
}
Imports Spire.Pdf.Graphics
Imports Spire.Pdf.HtmlConverter.Qt
Imports System.Drawing
Namespace ConvertUrlToPdf
Class Program
Shared Sub Main(ByVal args() As String)
'指定URL地址
Dim url As String = "https://www.wikipedia.org/"
'指定输出文件路径
Dim fileName As String = "Url转Pdf.pdf"
'指定插件路径
Dim pluginPath As String = "F:\\Libraries\\Plugin\\plugins-windows-x64\\plugins"
'设置插件路径
HtmlConverter.PluginPath = pluginPath
'将URL转换为PDF
HtmlConverter.Convert(url, fileName, True, 100000, New Size(1080, 1000), New PdfMargins(0))
End Sub
End Class
End Namespace
使用 QT 插件将 HTML 字符串转换为 PDF
以下是使用 Spire.PDF 与 QT 插件将 HTML 字符串转换为 PDF 的详细操作步骤。
- 从 .html 文件中获取 HTML 字符串。
- 指定生成的 PDF 文件的路径。
- 指定插件的路径,并将其作为 HtmlConverter.PluginPath 属性的值。
- 调用 HtmlConverter.Convert(string htmlString, string fileName, bool enableJavaScript, int timeout, SizeF pageSize, PdfMargins margins, Spire.Pdf.HtmlConverter.LoadHtmlType htmlType) 方法将 HTML 字符串转换为 PDF 文档。
注意:只有内联 CSS 样式和内部 CSS 样式可以在 PDF 上正确呈现。如果你有一个外部 CSS 样式表,请将其转换为内联或内部 CSS 样式。
- C#
- VB.NET
using System.IO;
using Spire.Additions.Qt;
using System.Drawing;
using Spire.Pdf.Graphics;
namespace ConvertHtmlStringToPdfWithPlugin
{
class Program
{
static void Main(string[] args)
{
//从.html文件中获取HTML字符串
string htmlString = File.ReadAllText(@"C:\示例.html");
//指定输出文件路径
string fileName = "Html字符串转Pdf.pdf";
//指定插件路径
string pluginPath = "F:\\Libraries\\Plugin\\plugins-windows-x64\\plugins";
//设置插件
HtmlConverter.PluginPath = pluginPath;
//将HTML字符串转换为PDF
HtmlConverter.Convert(htmlString, fileName, true, 100000, new Size(1080, 1000), new PdfMargins(0), Spire.Pdf.HtmlConverter.LoadHtmlType.SourceCode);
}
}
}
Imports System.IO
Imports Spire.Pdf.HtmlConverter.Qt
Imports System.Drawing
Imports Spire.Pdf.Graphics
Namespace ConvertHtmlStringToPdfWithPlugin
Class Program
Shared Sub Main(ByVal args() As String)
'从.html文件中获取HTML字符串
Dim htmlString As String = File.ReadAllText("C:\示例.html")
'指定输出文件路径
Dim fileName As String = "Html字符串转Pdf.pdf"
'指定插件路径
Dim pluginPath As String = "F:\\Libraries\\Plugin\\plugins-windows-x64\\plugins"
'设置插件
HtmlConverter.PluginPath = pluginPath
'将HTML字符串转换为PDF
HtmlConverter.Convert(htmlString, fileName, True, 100000, New Size(1080, 1000), New PdfMargins(0), Spire.Pdf.HtmlConverter.LoadHtmlType.SourceCode)
End Sub
End Class
End Namespace
不使用插件将 URL 转换为 PDF
以下是使用 Spire.PDF for .NET 在没有插件的情况下转换 URL 为 PDF 的详细操作步骤。
- 创建 PdfDocument 类的对象。
- 创建 PdfPageSettings 类的对象,并用其设置页面大小和页边距。
- 创建 PdfHtmlLayoutFormat 类的对象,并将其 IsWaiting 属性设置为 true。
- 指定要转换的 URL 地址。
- 使用 PdfDocument.LoadFromHTML() 方法从 URL 地址加载 HTML。
- 使用 PdfDocument.SaveToFile() 方法保存为 PDF 文档。
- C#
- VB.NET
using System;
using Spire.Pdf;
using System.Threading;
using Spire.Pdf.HtmlConverter;
using System.Drawing;
namespace ConverUrlToPdfWithoutPlugin
{
class Program
{
static void Main(string[] args)
{
//创建 PdfDocument 类的对象
PdfDocument doc = new PdfDocument();
//创建 PdfPageSettings 类的对象
PdfPageSettings setting = new PdfPageSettings();
//通过该对象保存页面大小和页边距
setting.Size = new SizeF(1000, 1000);
setting.Margins = new Spire.Pdf.Graphics.PdfMargins(20);
//创建 PdfHtmlLayoutFormat 类的对象
PdfHtmlLayoutFormat htmlLayoutFormat = new PdfHtmlLayoutFormat();
//将 IsWaiting 属性设置为true
htmlLayoutFormat.IsWaiting = true;
//指定要转换的URL地址
String url = "https://www.wikipedia.org/";
//从URL地址加载HTML
Thread thread = new Thread(() =>
{ doc.LoadFromHTML(url, true, true, false, setting, htmlLayoutFormat); });
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();
//将文档保存为PDF文件
doc.SaveToFile("Url转Pdf.pdf");
doc.Close();
}
}
}
Imports System
Imports Spire.Pdf
Imports System.Threading
Imports Spire.Pdf.HtmlConverter
Imports System.Drawing
Namespace ConverUrlToPdfWithoutPlugin
Class Program
Shared Sub Main(ByVal args() As String)
'创建 PdfDocument 类的对象
Dim doc As PdfDocument = New PdfDocument()
'创建 PdfPageSettings 类的对象
Dim setting As PdfPageSettings = New PdfPageSettings()
'通过该对象保存页面大小和页边距
setting.Size = New SizeF(1000, 1000)
setting.Margins = New Spire.Pdf.Graphics.PdfMargins(20)
'创建 PdfHtmlLayoutFormat 类的对象
Dim htmlLayoutFormat As PdfHtmlLayoutFormat = New PdfHtmlLayoutFormat()
'将 IsWaiting 属性设置为true
htmlLayoutFormat.IsWaiting = True
'指定要转换的URL地址
Dim url As String = "https://www.wikipedia.org/"
'从URL地址加载HTML
Thread Thread = New Thread(() >=
{
doc.LoadFromHTML(url, True, True, False, setting, htmlLayoutFormat)
}
)
Thread.SetApartmentState(ApartmentState.STA)
Thread.Start()
Thread.Join()
'将文档保存为PDF文件
doc.SaveToFile("Url转Pdf.pdf")
doc.Close()
End Sub
End Class
End Namespace
不使用插件将 HTML 字符串转换为 PDF
以下是使用 Spire.PDF for .NET 在没有插件的情况下转换 HTML 字符串为 PDF 文档的步骤。
- 创建 PdfDocument 类的对象。
- 创建 PdfPageSettings 类的对象,并通过它设置页面大小和页边距。
- 创建 PdfHtmlLayoutFormat 类的对象,并把其 IsWaiting 属性设置为 true。
- 从 .html文件中读取 HTML 字符串。
- 使用 PdfDocument.LoadFromHTML() 方法从 HTML 字符串中加载 HTML。
- 使用 PdfDocument.SaveToFile() 方法将文档保存为一个 PDF 文件。
- C#
- VB.NET
using Spire.Pdf;
using Spire.Pdf.HtmlConverter;
using System.IO;
using System.Threading;
using System.Drawing;
namespace ConvertHtmlStringToPdfWithoutPlugin
{
class Program
{
static void Main(string[] args)
{
//创建 PdfDocument 类的对象
PdfDocument doc = new PdfDocument();
//创建 PdfPageSettings 类的对象
PdfPageSettings setting = new PdfPageSettings();
//通过该对象保存页面大小和页边距
setting.Size = new SizeF(1000, 1000);
setting.Margins = new Spire.Pdf.Graphics.PdfMargins(20);
//创建 PdfHtmlLayoutFormat 类的对象
PdfHtmlLayoutFormat htmlLayoutFormat = new PdfHtmlLayoutFormat();
//将 IsWaiting 属性设置为true
htmlLayoutFormat.IsWaiting = true;
//从.html文件中读取html字符串
string htmlString = File.ReadAllText(@"C:\示例.html");
//从html字符串中加载HTML
Thread thread = new Thread(() =>
{ doc.LoadFromHTML(htmlString, true, setting, htmlLayoutFormat); });
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();
//保存为PDF文件
doc.SaveToFile("Html字符串转Pdf.pdf");
}
}
}
Imports Spire.Pdf
Imports Spire.Pdf.HtmlConverter
Imports System.IO
Imports System.Threading
Imports System.Drawing
Namespace ConvertHtmlStringToPdfWithoutPlugin
Class Program
Shared Sub Main(ByVal args() As String)
'创建 PdfDocument 类的对象
Dim doc As PdfDocument = New PdfDocument()
'创建 PdfPageSettings 类的对象
Dim setting As PdfPageSettings = New PdfPageSettings()
'通过该对象保存页面大小和页边距
setting.Size = New SizeF(1000, 1000)
setting.Margins = New Spire.Pdf.Graphics.PdfMargins(20)
'创建 PdfHtmlLayoutFormat 类的对象
Dim htmlLayoutFormat As PdfHtmlLayoutFormat = New PdfHtmlLayoutFormat()
'将 IsWaiting 属性设置为true
htmlLayoutFormat.IsWaiting = True
'从.html文件中读取html字符串
Dim htmlString As String = File.ReadAllText("C:\示例.html")
'从html字符串中加载HTML
Thread Thread = New Thread(() >=
{
doc.LoadFromHTML(htmlString, True, setting, htmlLayoutFormat)
}
)
Thread.SetApartmentState(ApartmentState.STA)
Thread.Start()
Thread.Join()
'保存为PDF文件
doc.SaveToFile("Html字符串转Pdf.pdf")
End Sub
End Class
End Namespace
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。