将 HTML 内容转换为 PDF 有许多好处,能够离线阅读,并且以高保真度保留内容和格式。Spire.PDF 提供了两种 HTML 转 PDF 的方法,一种是使用 QT 插件,另一种是不使用 QT 插件。我们建议您使用 QT 插件进行转换。
以下部分演示了在有 QT 插件以及没有 QT 插件的情况下,如何使用 Spire.PDF for .NET 将 HTML 网页 (URL) 或 HTML 字符串转换为PDF文档。
安装 Spire.PDF for .NET
首先,您需要添加 Spire.PDF for .NET 包中包含的 DLL 文件作为 .NET 项目中的引用。DLL 文件可以从此链接下载或通过 NuGet 安装。
PM> Install-Package Spire.PDF
下载插件
如果您选择插件方式,请从以下链接下载适合您操作系统的插件。
在磁盘上的某个位置解压缩包以获取 "plugins" 文件夹。在本例中,我们将插件保存在路径 "F:\Libraries\Plugin\plugins-windows-x64\plugins" 下。
此外,我们建议您将项目的 "平台目标" 相应地设置为 x64 或 x86。
使用 QT 插件将 URL 转换为 PDF
以下是使用 Spire.PDF 及 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.Pdf.HtmlConverter.Qt;
using System.Drawing;
namespace ConvertUrlToPdf
{
class Program
{
static void Main(string[] args)
{
//指定URL路径
string url = "https://www.baidu.com/";
//指定输出文件路径
string fileName = "UrlToPdf.pdf";
//指定插件路径
string pluginPath = "F: \\Libraries\\plugins-windows-x64";
//设置插件路径
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.baidu.com/"
'指定输出文件路径
Dim fileName As String = "UrlToPdf.pdf"
'指定插件路径
Dim pluginPath As String = " F: \\Libraries\\plugins-windows-x64"
'设置插件路径
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.Pdf.HtmlConverter.Qt;
using System.Drawing;
using Spire.Pdf.Graphics;
namespace ConvertHtmlStringToPdfWithPlugin
{
class Program
{
static void Main(string[] args)
{
//从 .html 文件中获取 HTML 字符串
string htmlString = File.ReadAllText(@"C: \\Users\\Administrator\\Desktop\\Document\\Html\\Sample.html");
//指定输出文件路径
string fileName = "HtmlStringToPdf.pdf";
//指定插件路径
string pluginPath = " F: \\Libraries\\plugins-windows-x64";
//设置插件路径
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:\Users\Administrator\Desktop\Document\Html\Sample.html")
'指定输出文件路径
Dim fileName As String = "HtmlStringToPdf.pdf"
'指定插件路径
Dim pluginPath As String = " F: \\Libraries\\plugins-windows-x64"
'设置插件路径
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 及 QT 插件将 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.baidu.com/";
//使用 LoadFromHTML 方法从 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("UrlToPdf.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.baidu.com/"
'使用 LoadFromHTML 方法从 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("UrlToPdf.pdf")
doc.Close()
End Sub
End Class
End Namespace
不用插件将 HTML 字符串转换为 PDF
以下是使用 Spire.PDF 及 QT 插件将 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: \\Users\\Administrator\\Desktop\\Document\\Html\\Sample.html");
//使用 LoadFromHTML 方法从 html 字符串加载 HTML
Thread thread = new Thread(() =>
{ doc.LoadFromHTML(htmlString, true, true, false, setting, htmlLayoutFormat); });
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();
//保存为PDF文件
doc.SaveToFile("HtmlStringToPdf.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: \\Users\\Administrator\\Desktop\\Document\\Html\\Sample.html")
'使用 LoadFromHTML 方法从 html 字符串加载 HTML
Thread thread = New Thread(() =>
{
doc.LoadFromHTML(htmlString, True, True, False, setting, htmlLayoutFormat)
}
)
thread.SetApartmentState(ApartmentState.STA)
thread.Start()
thread.Join()
'保存为PDF文件
doc.SaveToFile("HtmlStringToPdf.pdf")
End Sub
End Class
End Namespace
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请 该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。 获取有效期 30 天的临时许可证。