PDF到HTML的转换

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 的步骤

  1. 创建 License 类的实例,以消除 PDF 文件生成过程中的任何限制。
  2. 创建 HtmlLoadOptions 类的对象,同时将输入的 HTML 基本 url 作为参数传递给 HtmlLoadOptions(…) 构造函数。
  3. 初始化 Document 类的对象并通过 HtmlLoadOptions 对象作为其构造函数的参数。
  4. 调用 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 的步骤

  1. 使用 HttpClient 对象读取页面内容。
  2. 实例化 HtmlLoadOptions 对象并设置基本 URL。
  3. 初始化一个 Document 对象并将流对象和 HtmlLoadOptions 实例作为参数传递。
  4. 从 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 格式。此外,您还可以使用各种其他文件格式并完成您的转换要求。