PDF 工具

如何在C++中将HTML转换为PDF

发布 2023年七月1日
分享:

将 HTML 文件或内容转换为 PDF 页面格式的能力在许多应用程序中都是一项宝贵的功能。 在 C# 中,从头开始构建一个应用程序来生成 HTML 转 PDF 格式文件是一项相当繁琐的工作。 因此,在本文中,我们将探讨如何使用 wkhtmltopdf 库在 C++ 中将 HTML 转换为 PDF。

WKTOPdf 图书馆

wkhtmltopdf是一款开源命令行工具,可将 HTML 纯文本页面无缝转换为高质量 PDF 文档。 通过利用其在 C++ 程序中的功能,我们可以轻松地将 HTML 字符串内容转换为 PDF 格式。 让我们一步步深入了解使用 wkhtmltopdf 库在 C++ 中将 HTML 页面转换为 PDF 的过程。

先决条件

要在 C# 中创建 HTML 到 PDF 文件的转换器,我们需要检查以下事项是否到位:

  1. 系统中已安装 GCC 或 Clang 等 C++ 编译器。

  2. 已安装 wkhtmltopdf 库**。 您可以从官方wkhtmltopdf 网站并按照操作系统的说明进行安装。

  3. 具备 C# 编程的基础知识。

在 Code:Blocks 中创建 C++ HtmltoPdf 项目

要在 Code::Blocks 中创建 C++ PDF 转换项目,请按照以下步骤操作:

  1. 打开 Code::Blocks IDE。

  2. 转到 "文件 "菜单,选择 "新建",然后选择 "项目",打开新建项目向导。

  3. 在新建项目向导中,选择 "控制台应用程序"。

  4. 选择 C#++ 语言。

  5. 设置项目标题和保存位置。 单击 "下一步 "继续。

  6. 选择适当的 C++ 编译器和构建目标,如调试或发布。 单击 "完成 "创建项目。

设置搜索目录

为了确保 Code::Blocks 能够找到必要的头文件,我们需要设置搜索目录。

  1. 单击菜单栏中的 "项目 "菜单,选择 "构建选项"。 请确保选择 "调试"。

  2. 在 "构建选项 "对话框中,选择 "搜索目录 "选项卡。

  3. 在 "编译器 "选项卡下,单击 "添加 "按钮。

  4. 浏览到wkhtmltox头文件所在的目录(例如,C:\Program Files\wkhtmltopdf\include)请选择".NET "或 "Python"。

  5. 最后,单击 "确定 "关闭对话框。

    如何用 C++ 将 HTML 转换为 PDF:图 1 - 搜索目录

链接库

要链接wkhtmltox库,请按照以下步骤操作:

  1. 再次点击菜单栏中的 "项目 "菜单,选择 "构建选项"。 请确保选择 "调试"。

  2. 在 "构建选项 "对话框中,选择 "链接器设置 "选项卡。

  3. 在 "链接库 "选项卡下,单击 "添加 "按钮。

  4. 浏览到wkhtmltox库文件所在的目录(例如,C:\Program Files\wkhtmltopdf\lib)您可以在".NET"、"Python "或 "Node.js "中选择合适的库文件。

  5. 单击 "打开 "将库添加到您的项目中。

  6. 最后,单击 "确定 "关闭对话框。

    如何用 C++ 将 HTML 转换为 PDF:图 2 - 链接库

用 C++ 将 HTML 轻松转换为 PDF 的步骤

第 1 步 包括转换 HTML 文件的库

要开始使用,请包含必要的头文件,以便在您的 C++ 程序中使用 wkhtmltopdf 库的功能。 如以下示例所示,在 main.cpp 源代码文件的开头包含以下头文件:


    #include <iostream>
    #include <fstream>
    #include <string>
    #include <wkhtmltox/pdf.h>

    #include <iostream>
    #include <fstream>
    #include <string>
    #include <wkhtmltox/pdf.h>
#include <iostream>
	#include <fstream>
	#include <string>
	#include <wkhtmltox/pdf.h>
VB   C#

第 2 步 初始化转换器

要将 HTML 转换为 PDF,我们需要初始化 wkhtmltopdf 转换器。 代码如下


    wkhtmltopdf_init(false);

    wkhtmltopdf_global_settings* gs = wkhtmltopdf_create_global_settings();
    wkhtmltopdf_object_settings* os = wkhtmltopdf_create_object_settings();
    wkhtmltopdf_converter* converter = wkhtmltopdf_create_converter(gs);

    wkhtmltopdf_init(false);

    wkhtmltopdf_global_settings* gs = wkhtmltopdf_create_global_settings();
    wkhtmltopdf_object_settings* os = wkhtmltopdf_create_object_settings();
    wkhtmltopdf_converter* converter = wkhtmltopdf_create_converter(gs);
wkhtmltopdf_init(False)

	wkhtmltopdf_global_settings* gs = wkhtmltopdf_create_global_settings()
	wkhtmltopdf_object_settings* os = wkhtmltopdf_create_object_settings()
	wkhtmltopdf_converter* converter = wkhtmltopdf_create_converter(gs)
VB   C#

步骤 3 设置 HTML 内容

现在,让我们提供需要转换为 PDF 的 HTML 内容。 您可以加载 HTML 文件或直接提供字符串。


    string htmlString = "<html><body><h1>Hello, World!</h1></body></html>";   wkhtmltopdf_add_object(converter, os, htmlString.c_str());

    string htmlString = "<html><body><h1>Hello, World!</h1></body></html>";   wkhtmltopdf_add_object(converter, os, htmlString.c_str());
Dim htmlString As String = "<html><body><h1>Hello, World!</h1></body></html>"
wkhtmltopdf_add_object(converter, os, htmlString.c_str())
VB   C#

步骤 4 将 HTML 转换为 PDF

转换器和 HTML 内容准备就绪后,我们就可以将 HTML 转换为 PDF 文件了。请使用以下代码片段:


    wkhtmltopdf_convert(converter);

    wkhtmltopdf_convert(converter);
wkhtmltopdf_convert(converter)
VB   C#

第 5 步 以内存缓冲区形式获取输出

使用 wkhtmltopdf_get_output 函数,我们可以获取作为内存缓冲流的现有 PDF 数据。 它还会返回 PDF 的长度。 下面的示例将完成这项任务:


    const unsigned char* pdfData;
    const int pdfLength = wkhtmltopdf_get_output(converter, &pdfData);

    const unsigned char* pdfData;
    const int pdfLength = wkhtmltopdf_get_output(converter, &pdfData);
const unsigned Char* pdfData
	Const pdfLength As Integer = wkhtmltopdf_get_output(converter, &pdfData)
VB   C#

第 6 步 保存 PDF 文件

转换完成后,我们需要将生成的 PDF 文件保存到磁盘中。 指定保存 PDF 的文件路径。 然后使用输出文件流,以二进制模式打开文件并将 pdfData 写入其中。 最后,关闭文件。下面是一个代码示例:


    const char* outputPath = "file.pdf";
    ofstream outputFile(outputPath, ios::binary);
    outputFile.write(reinterpret_cast<const char*>(pdfData), pdfLength);
    outputFile.close();

    const char* outputPath = "file.pdf";
    ofstream outputFile(outputPath, ios::binary);
    outputFile.write(reinterpret_cast<const char*>(pdfData), pdfLength);
    outputFile.close();
const Char* outputPath = "file.pdf"
	ofstream outputFile(outputPath, ios:=:=binary)
	outputFile.write(reinterpret_cast<const Char*>(pdfData), pdfLength)
	outputFile.close()
VB   C#

第 7 步 清理

将 HTML 转换为 PDF 后,必须清理 wkhtmltopdf 分配的资源。 使用以下代码片段:


    wkhtmltopdf_destroy_converter(converter);
    wkhtmltopdf_destroy_object_settings(os);
    wkhtmltopdf_destroy_global_settings(gs);
    wkhtmltopdf_deinit();

    cout << "PDF saved successfully." << endl;

    wkhtmltopdf_destroy_converter(converter);
    wkhtmltopdf_destroy_object_settings(os);
    wkhtmltopdf_destroy_global_settings(gs);
    wkhtmltopdf_deinit();

    cout << "PDF saved successfully." << endl;
wkhtmltopdf_destroy_converter(converter)
	wkhtmltopdf_destroy_object_settings(os)
	wkhtmltopdf_destroy_global_settings(gs)
	wkhtmltopdf_deinit()

	cout << "PDF saved successfully." << endl
VB   C#

第 8 步 执行代码并生成 PDF 文件

现在,构建项目并使用 F9 执行代码。输出结果将生成并保存在项目文件夹中。 最终的 PDF 文件如下:

如何用 C++ 将 HTML 转换为 PDF:图 3 - PDF 输出

用 C&num 将 HTML 文件转换为 PDF 文件;

IronPDF

IronPDF HTML 到 PDF 转换库是一个强大的 .NET 和 .NET Core C# 库,允许开发人员毫不费力地从 HTML 内容生成 PDF 文档。 它提供了简单直观的 API,简化了将 HTML 网页转换为 PDF 的过程,因此成为各种应用和用例的热门选择。

IronPDF 的主要优势之一是其通用性。 它不仅支持简单 HTML 文档的转换,还支持带有 CSS 样式、JavaScript 交互甚至动态内容的复杂网页的转换。 此外,您还可以开发不同的 PDF 转换器,快速访问其转换方法。

以下是需要转换的代码示例使用 IronPDF 将 HTML 字符串转换为 PDF在 C#:


    using IronPdf;

    // Instantiate Renderer
    var renderer = new ChromePdfRenderer();

    // Create PDF content from an HTML string using C#
    var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");

    // Export to a file or Stream
    pdf.SaveAs("output.pdf");

    using IronPdf;

    // Instantiate Renderer
    var renderer = new ChromePdfRenderer();

    // Create PDF content from an HTML string using C#
    var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");

    // Export to a file or Stream
    pdf.SaveAs("output.pdf");
Imports IronPdf

	' Instantiate Renderer
	Private renderer = New ChromePdfRenderer()

	' Create PDF content from an HTML string using C#
	Private pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>")

	' Export to a file or Stream
	pdf.SaveAs("output.pdf")
VB   C#

PDF 输出:

如何用 C++ 将 HTML 转换为 PDF:图 4 - IronPDF 输出

有关如何将不同的 HTML 文件、网页 URL 和图像转换为 PDF 的更多详情,请访问此处HTML 转 PDF 代码示例.

有了 IronPDF,用 .NET Framework 语言从 HTML 内容生成 PDF 文件就变得简单易行。 其直观的 API 和广泛的功能集使其成为开发人员转换以下内容的重要工具HTML 转 PDF在他们的 C# 项目中。 无论是生成报告、发票,还是其他任何需要将 HTML 精确转换为 PDF 的文档,IronPDF 都是可靠高效的解决方案。

IronPdf 用于开发目的是免费的,但用于商业用途则需要获得许可。 它还提供了免费试用 IronPDF 的全部功能该翻译必须符合商业用途,以测试其完整功能。 您可以从以下网址下载该软件下载IronPDF.

< 前一页
如何在 C++ 中读取 PDF 文件
下一步 >
如何使用Puppeteer在Node.js中将HTML转换成PDF

准备开始了吗? 版本: 2024.12 刚刚发布

免费NuGet下载 总下载量: 11,781,565 查看许可证 >