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++ 编译器。

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

3.具备 C++ 编程的基本知识。

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

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

1.打开 Code::Blocks 集成开发环境。

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

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

4.选择 C++ 语言。

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

6.选择合适的 C++ 编译器和构建目标,如 Debug 或 Release。单击 "Finish(完成)"创建项目。

设置搜索目录

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

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

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

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

4.浏览到wkhtmltox头文件所在的目录 (例如,C:\Program Files\wkhtmltopdf\include)然后选择它。

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

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

链接图书馆

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

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

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

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

4.浏览到wkhtmltox库文件所在的目录 (例如,C:\Program Files\wkhtmltopdf\lib)然后选择相应的库文件。

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

6.最后,点击 "OK(确定)"关闭对话框。

如何用 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 是一个强大的 .NET 和 .NET Core C# 库,允许开发人员毫不费力地从 HTML 内容生成 PDF 文档。它提供了简单直观的 API,简化了将 HTML 网页转换为 PDF 的过程,使其成为各种应用和用例的热门选择。

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

下面是转换的代码示例 将 HTML 字符串转换为 PDF 在 C#.NET 中使用 IronPDF


    using IronPdf;

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

    // Create PDF content from a 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 a 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 a 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 的更多详情,请访问此页面 代码示例页面.

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

IronPDF 用于开发目的是免费的,但用于商业用途则需要获得许可。它还提供 免费试用 用于商业用途,以测试其全部功能。您可以从以下网址下载该软件 这里.

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

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

免费NuGet下载 总下载量: 10,840,061 查看许可证 >