在生产环境中测试,无水印。
随时随地满足您的需求。
获得30天的全功能产品。
几分钟内就能启动并运行。
在您的产品试用期间,全面访问我们的支持工程团队。
PDF(便携式文档格式)文件被广泛用于在不同平台之间以一致的格式共享和保存文档。 本文将探讨如何使用 wkhtmltopdf 库在 C++ 中生成 PDF 文件。 这是一个开源命令行工具,用于将HTML内容转换为PDF文件。 通过利用这个库的强大功能,我们可以在C++应用程序中以编程方式从HTML内容创建PDF文档。
wkhtmltopdf 是一个开源的命令行工具和渲染引擎,可以将 HTML 网页或 HTML 内容转换为 PDF 文档。 它利用 WebKit 渲染引擎来解析和渲染 HTML、CSS 和 JavaScript,然后根据渲染的内容生成 PDF 文件。
wkhtmltopdf C++ 库(也称为“wkhtmltopdf C API”)。 该库为 C++ 提供了一个接口,用于与 wkhtmltopdf
命令行工具连接,使您可以在 C++ 应用程序中直接从 HTML 内容创建 PDF 文件。 让我们一步步深入了解使用 Wkhtmltopdf 库在 C++ 中将 HTML 转换为 PDF 的过程。
要以 C++ 创建 PDF 文件,我们需要具备以下条件:
系统中已安装 GCC 或 Clang 等 C++ 编译器。 您只需使用任何支持 C++ 编程的集成开发环境即可。
wkhtmltopdf 库已下载并安装。 您可以从官方wkhtmltopdf网站下载最新版本,并根据您的操作系统说明进行安装。
在 Code::Blocks 中创建一个项目,然后按照以下步骤链接库文件夹和文件。如果您使用的是其他集成开发环境,选项可能有所不同,但您需要在项目中引用下载的库,使其生效。
为了确保 Code::Blocks 能够找到必要的头文件,我们需要设置搜索目录。
单击菜单栏中的 "项目 "菜单,选择 "构建选项"。 请确保选择 "调试"。
在 "构建选项 "对话框中,选择 "搜索目录 "选项卡。
在 "编译器 "选项卡下,单击 "添加 "按钮。
浏览到wkhtmltox头文件所在的目录(例如,C:\Program Files\wkhtmltopdf\include),然后选择它。
最后,单击 "确定 "关闭对话框。
要链接wkhtmltox库,请按照以下步骤操作:
再次点击菜单栏中的 "项目 "菜单,选择 "构建选项"。 请确保选择 "调试"。
在 "构建选项 "对话框中,选择 "链接器设置 "选项卡。
在 "链接库 "选项卡下,单击 "添加 "按钮。
浏览到 wkhtmltox 库文件所在的目录(例如,C:\Program Files\wkhtmltopdf\lib),并选择适当的库文件。
单击 "打开 "将库添加到您的项目中。
最后,单击 "确定 "关闭对话框。
首先,我们将在 C# 程序中加入必要的头文件,以使用 wkhtmltopdf 库的功能。 在 main.cpp 源代码文件开头包含以下头文件:
#include <iostream>
#include <fstream>
#include <string>
#include <wkhtmltox/pdf.h>
#include <iostream>
#include <fstream>
#include <string>
#include <wkhtmltox/pdf.h>
如果您不使用图形用户界面,则需要将其禁用,以避免出错。 代码如下
wkhtmltopdf_init(false);
wkhtmltopdf_init(false);
接下来,我们需要初始化全局和对象设置指针,然后初始化wkhtmltopdf
转换器。
wkhtmltopdf_global_settings* gs = wkhtmltopdf_create_global_settings();
wkhtmltopdf_object_settings* os = wkhtmltopdf_create_object_settings();
wkhtmltopdf_converter* converter = wkhtmltopdf_create_converter(gs);
wkhtmltopdf_global_settings* gs = wkhtmltopdf_create_global_settings();
wkhtmltopdf_object_settings* os = wkhtmltopdf_create_object_settings();
wkhtmltopdf_converter* converter = wkhtmltopdf_create_converter(gs);
现在,让我们创建一个 HTML 字符串,在新创建的 PDF 文档中填充一些内容。 代码如下
string htmlString = "<html><body><h1>Create a PDF in C++ using WKHTMLTOPDF Library</h1></body></html>";
wkhtmltopdf_add_object(converter, os, htmlString.c_str());
string htmlString = "<html><body><h1>Create a PDF in C++ using WKHTMLTOPDF Library</h1></body></html>";
wkhtmltopdf_add_object(converter, os, htmlString.c_str());
Wkhtmltopdf 提供了一种将 HTML 内容转换为 PDF 的转换器方法。 以下是代码片段:
wkhtmltopdf_convert(converter);
wkhtmltopdf_convert(converter);
通过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);
pdfData
指针现在将拥有来自wkhtmltopdf_converter
的字符流。 要保存为 PDF 文件,首先我们要指定保存 PDF 的文件路径。 然后,使用输出文件流,我们以二进制模式打开文件,并通过使用reinterpret_cast
函数来类型转换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();
成功创建 PDF 文件后,必须清理 Wkhtmltopdf 分配的资源,否则将导致内存泄漏。
wkhtmltopdf_destroy_converter(converter);
wkhtmltopdf_destroy_object_settings(os);
wkhtmltopdf_destroy_global_settings(gs);
wkhtmltopdf_deinit();
cout << "PDF created successfully." << endl;
wkhtmltopdf_destroy_converter(converter);
wkhtmltopdf_destroy_object_settings(os);
wkhtmltopdf_destroy_global_settings(gs);
wkhtmltopdf_deinit();
cout << "PDF created successfully." << endl;
现在,构建项目并使用 F9 执行代码。输出结果将生成并保存在项目文件夹中。 最终的 PDF 文件如下:
IronPDF 是一个 .NET C# PDF 库,允许开发人员毫不费力地从 HTML 创建 PDF 文档。 它提供了一个直观的 API,简化了从 HTML 创建 PDF 文件的过程。
IronPdf 在处理 PDF 方面功能强大、用途广泛。 它不仅能从简单的 HTML 文档创建 PDF,还能创建带有 CSS 样式、JavaScript 交互甚至动态内容的复杂网页。 此外,您还可以开发不同的 PDF 转换器,快速访问其转换方法。
以下是一个使用HTML字符串到PDF转换通过IronPDF创建PDF的示例代码:
using IronPdf;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF 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 a PDF from a HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
// Export to a file or Stream
pdf.SaveAs("output.pdf");
我们创建一个ChromePdfRenderer
实例,以将 HTML 内容渲染为 PDF。 我们在renderer
对象上调用RenderHtmlAsPdf
方法,并传入HTML字符串。 这将生成 PDF 文档,然后我们使用SaveAs
方法保存 PDF 文档。
有关如何使用IronPDF从各种资源创建PDF的更多详细信息,请访问此IronPDF代码示例页面。
在本文中,我们探讨了使用 wkhtmltopdf C++ 库 在 C++ 中生成 PDF,并且学习了如何使用 IronPDF 在 C# 中生成 PDF 文档。
有了 IronPDF,用 .NET Framework 语言从 HTML 内容生成 PDF 文件就变得简单易行。 其广泛的功能集使其成为开发人员在 C# 项目中需要将HTML 转换为 PDF时的宝贵工具。 无论是生成报告、发票,还是其他任何需要将 HTML 精确转换为 PDF 的文档,IronPDF 都是可靠高效的解决方案。
IronPdf 用于开发目的是免费的,但用于商业用途则需要获得许可。 它还提供一个免费试用,用于商业用途以测试其完整功能。 下载 IronPDF 并亲自试用。