
PDF(可移植文档格式)是一种广泛使用的跨平台数据和信息共享的文档格式。它的一项独特功能包括,根据 Adobe 规范使用应用程序在任何平台上查看时,文档的保真度保持不变。此外,HTML(超文本标记语言)也是网页开发的主要文件格式,大多数网络浏览器都支持这种格式。然而,PDF 被广泛接受,因为它可以在任何设备上轻松查看而不会丢失文档格式。因此,在本文中,我们将讨论如何使用 .NET API 将 HTML 文件转换为 PDF 格式的步骤。
C# API 将 HTML 转换为 PDF
为了执行转换操作,首先,我们需要在系统上安装Aspose.PDF for .NET。该 API 在 NuGet 库中可用。请在 Package Manager Console 上运行以下命令进行安装:
Install-Package Aspose.Pdf
安装完成后,Aspose.PDF for .NET 将出现在解决方案资源管理器的 Packages 文件夹下。
在 C# 中将 HTML 转换为 PDF
下面给出了如何使用 C# 将 HTML 转换为 PDF 的步骤
- 创建 License 类的实例,以消除 PDF 文件生成过程中的任何限制。
- 创建 HtmlLoadOptions 类的对象,同时将输入的 HTML 基本 url 作为参数传递给 HtmlLoadOptions(…) 构造函数。
- 初始化 Document 类的对象并通过 HtmlLoadOptions 对象作为其构造函数的参数。
- 调用 Document 对象的 Save(…) 方法并以 PDF 格式呈现输出。
// 创建一个对象来启动许可
Aspose.Pdf.License license = new Aspose.Pdf.License();
// 提供许可证文件的路径
license.SetLicense("/Downloads/Conholdate.Total.NET.lic");
// 创建 HtmlLoadOptions 类的实例
Aspose.Pdf.HtmlLoadOptions htmlLoadOptions = new Aspose.Pdf.HtmlLoadOptions("User/Documents/");
// 创建 Document 对象并提供输入 HTML 文件路径
Aspose.Pdf.Document document = new Aspose.Pdf.Document("/Documents/input.html", htmlLoadOptions);
// 将生成的 HTML 保存为 PDF 格式
document.Save("/Documents/Converted.pdf");
在转换期间嵌入字体
大多数 HTML 页面经常使用字体(例如本地文件夹中的字体、Google 字体等),并且为了保留页面的布局,在渲染过程中应嵌入相同的字体。因此,为了控制结果文档中字体的嵌入,我们需要使用 IsEmbedFonts 属性。
// 在转换期间嵌入字体
HtmlLoadOptions options = new HtmlLoadOptions {IsEmbedFonts = true};
Aspose.PDF 中的测量单位是点。而且,我们知道 A3 的尺寸为 297 × 420 毫米或 11.69 × 16.54 英寸。因此,尺寸四舍五入为 842 × 1190 点。在以下代码片段中,我们将生成文档的页面大小调整为 A3,将页面方向调整为横向。
// 将页面大小设置为 A3,页面方向设置为横向
HtmlLoadOptions options = new HtmlLoadOptions(url)
{
PageInfo = {Width = 842, Height = 1191, IsLandscape = true}
};
将网页转换为 PDF
除了 HTML 文件的转换,我们可能还需要将网页直接转换为 PDF 格式。所以为了完成这个需求,首先我们将使用 HttpClient 实例获取远程网页内容,创建一个 Stream 对象,然后将 Stream 实例传递给 Document 对象。我们需要 Stream 中的内容的原因是 Document 实例只接受文件或 steam 对象。
以下部分介绍如何使用 C# 将网页转换为 PDF 的步骤
- 使用 HttpClient 对象读取页面内容。
- 实例化 HtmlLoadOptions 对象并设置基本 URL。
- 初始化一个 Document 对象并将流对象和 HtmlLoadOptions 实例作为参数传递。
- 从 Document 类调用 Save(String) 方法以生成输出。
public static void ConvertHTMLtoPDFAdvanced_WebPage()
{
const string url = "https://en.wikipedia.org/wiki/Aspose_API";
// 设置页面大小 A3 和横向;
HtmlLoadOptions options = new HtmlLoadOptions(url)
{
// 设置页面尺寸
PageInfo = {Width = 842, Height = 1191, IsLandscape = true}
};
// 创建 Document 对象的实例
Document pdfDocument= new Document(GetContentFromUrlAsStream(url), options);
// 保存结果
pdfDocument.Save(_dataDir + "html_test.PDF");
}
private static Stream GetContentFromUrlAsStream(string url, ICredentials credentials = null)
{
using (var handler = new HttpClientHandler { Credentials = credentials })
using (var httpClient = new HttpClient(handler))
{
// 在流实例中获取并返回结果
return httpClient.GetStreamAsync(url).GetAwaiter().GetResult();
}
}
在单个页面上呈现完整的 HTML
在 HTML 到 PDF 的转换过程中,结果文件的长度取决于输入 HTML 文档的内容长度。因此,如果输入 HTML 由多个页面组成,那么生成的文件也将跨越多个页面。但是,我们可以将输出限制为单个 PDF 页面。为了完成这个要求,可以使用 HtmlLoadOptions 类的 IsRenderToSinglePage 属性。
下面给出了使用 C# 在单个 PDF 页面上呈现完整 HTML 内容的代码片段。
// 如需完整的示例和数据文件,请访问 https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// 初始化 HtmlLoadOptions 对象
HtmlLoadOptions options = new HtmlLoadOptions();
// 将渲染设置为单页属性
options.IsRenderToSinglePage = true;
// 加载文档源 HTML 内容
Document pdfDocument= new Document("/Documents/HTMLToPDF.html", options);
// 保存生成的 PDF 文件
pdfDocument.Save("/Documents/MyRenderContentToSamePage.pdf");
获得免费许可证
您可以请求 免费的临时许可证 试用 API,没有任何评估限制。
结论
在本文中,我们了解了使用 .NET API 将 HTML 文件转换为 PDF 格式的方法。如果您有兴趣了解 Aspose.PDF for .NET 提供的其他令人兴奋的功能,请访问 主要功能 页面。可以在 GitHub 存储库 上找到完整的示例集。
小建议
我们还开发了免费的在线应用程序来快速检查我们的 API 提供的功能。因此,您可以查看 Aspose.PDF Conversion App 将 HTML 文件转换为 PDF 格式。此外,您还可以使用各种其他文件格式并完成您的转换要求。