PDF 工具 如何在 C++ 中创建 PDF 文件 Curtis Chau 已更新:2025年6月22日 下载 IronPDF NuGet 下载 DLL 下载 Windows 安装程序 免费试用 LLM副本 LLM副本 将页面复制为 Markdown 格式,用于 LLMs 在 ChatGPT 中打开 向 ChatGPT 咨询此页面 在双子座打开 向 Gemini 询问此页面 在 Grok 中打开 向 Grok 询问此页面 打开困惑 向 Perplexity 询问有关此页面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 复制链接 电子邮件文章 PDF(便携式文档格式)文件广泛用于在不同平台上以一致的格式共享和保存文档。 在本文中,我们将探讨如何使用 wkhtmltopdf 库在 C++ 中生成 PDF 文件。 它是一个开源命令行工具,用于将 HTML 内容转换成 PDF 文件。 通过利用这个库的强大功能,我们可以在 C++ 应用程序中从 HTML 内容程序化地创建 PDF 文档。 WkhtmltoPdf 库 wkhtmltopdf 是一个开源的命令行工具和渲染引擎,用于将 HTML 网页或 HTML 内容转换为 PDF 文档。 它利用 WebKit 渲染引擎解析和渲染 HTML、CSS 和 JavaScript,然后根据渲染内容生成 PDF 文件。 "wkhtmltopdf C++ 库"(也称为"wkhtmltopdf C API")。 该库为wkhtmltopdf命令行工具提供了一个C++接口,允许您直接在C++应用程序中将HTML内容生成PDF文件。 让我们深入了解使用 Wkhtmltopdf 库在 C++ 中进行 HTML 到 PDF 转换的逐步过程。 前提条件 在 C++ 中创建 PDF 文件,我们需要以下内容: 在您的系统上安装诸如 GCC 或 Clang 的 C++ 编译器。 您可以使用任何支持 C++ 编程的 IDE。 wkhtmltopdf 库 已下载并安装。 您可以从官方的 wkhtmltopdf 网站下载最新版本并根据您的操作系统说明进行安装。 具备 C++ 编程的基础知识。 C++ 在 Code::Blocks 中创建 PDF 项目 在 Code::Blocks 中创建一个项目,然后按照以下步骤链接库文件夹和文件。如果您使用其他 IDE,选项可能不同,但您需要在项目中引用下载的库才能使其工作。 1. 在搜索目录中添加 include 文件夹 为了确保 Code::Blocks 能找到必要的头文件,我们需要设置搜索目录。 点击菜单栏中的"项目"菜单,选择"构建选项"。 确保选择"调试"。 在"构建选项"对话框中,选择"搜索目录"选项卡。 在"编译器"选项卡下,点击"添加"按钮。 浏览到 wkhtmltox 头文件所在的目录(例如:C:\Program Files\wkhtmltopdf\include),并选择它。 最后,点击"确定"关闭对话框。 2. 在链接器设置中链接库 要链接 wkhtmltox 库,请按照以下步骤操作: 再次单击菜单栏中的"项目"菜单,然后选择"构建选项"。 确保选择"调试"。 在"构建选项"对话框中,选择"链接器设置"选项卡。 在"链接库"选项卡下,点击"添加"按钮。 浏览到 wkhtmltox 库文件所在的目录(例如:C:\Program Files\wkhtmltopdf\lib),并选择适当的库文件。 点击"打开"将库添加到您的项目。 最后,点击"确定"关闭对话框。 使用 Wkhtmltopdf 在 C++ 中创建 PDF 的步骤 1. 包含必要的库 首先,我们将包含必要的头文件以便在 C++ 程序中利用 wkhtmltopdf 库的功能。 在您的main.cpp源代码文件开头包括以下头文件: #include <iostream> #include <fstream> #include <string> #include <wkhtmltox/pdf.h> // Include wkhtmltopdf library headers #include <iostream> #include <fstream> #include <string> #include <wkhtmltox/pdf.h> // Include wkhtmltopdf library headers C++ 2. 禁用 GUI 组件 如果您不使用 GUI,则需要禁用它以避免错误。 代码如下 wkhtmltopdf_init(false); // Initialize the wkhtmltopdf library in non-GUI mode wkhtmltopdf_init(false); // Initialize the wkhtmltopdf library in non-GUI mode C++ 3. 初始化设置和转换器 接下来,我们需要初始化全局和对象设置指针,然后初始化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); C++ 4. 添加 PDF 内容 现在,让我们创建一个 HTML 字符串以在新创建的 PDF 文档中填充一些内容。 代码如下 std::string htmlString = "<html><body><h1>Create a PDF in C++ using WKHTMLTOPDF Library</h1></body></html>"; wkhtmltopdf_add_object(converter, os, htmlString.c_str()); std::string htmlString = "<html><body><h1>Create a PDF in C++ using WKHTMLTOPDF Library</h1></body></html>"; wkhtmltopdf_add_object(converter, os, htmlString.c_str()); C++ 5. 将 HTML 字符串转换为 PDF 文件 Wkhtmltopdf 提供转换器方法,将 HTML 内容转换为 PDF。 以下是代码片段: wkhtmltopdf_convert(converter); // Converts HTML content to PDF wkhtmltopdf_convert(converter); // Converts HTML content to PDF C++ 6. 以内存缓冲的形式获取输出 使用wkhtmltopdf_get_output函数,我们可以将PDF数据作为内存缓冲流获取。 它还返回 PDF 的长度。 以下示例将执行此任务: const unsigned char* pdfData; int pdfLength = wkhtmltopdf_get_output(converter, &pdfData); // Get PDF data and length const unsigned char* pdfData; int pdfLength = wkhtmltopdf_get_output(converter, &pdfData); // Get PDF data and length C++ 7. 保存 PDF 文件 wkhtmltopdf_converter的字符流。 要保存到 PDF 文件,首先我们指定保存 PDF 的文件路径。 然后,使用输出文件流,我们以二进制模式打开文件,并通过pdfData写入其中。 最后,我们关闭文件。 const char* outputPath = "file.pdf"; std::ofstream outputFile(outputPath, std::ios::binary); // Open file in binary mode outputFile.write(reinterpret_cast<const char*>(pdfData), pdfLength); // Write PDF data outputFile.close(); // Close the file const char* outputPath = "file.pdf"; std::ofstream outputFile(outputPath, std::ios::binary); // Open file in binary mode outputFile.write(reinterpret_cast<const char*>(pdfData), pdfLength); // Write PDF data outputFile.close(); // Close the file C++ 8. 释放内存 成功创建 PDF 文件后,清理由 Wkhtmltopdf 分配的资源是至关重要的,否则将导致内存泄漏。 wkhtmltopdf_destroy_converter(converter); // Destroy the converter wkhtmltopdf_destroy_object_settings(os); // Destroy object settings wkhtmltopdf_destroy_global_settings(gs); // Destroy global settings wkhtmltopdf_deinit(); // Deinitialize the library std::cout << "PDF created successfully." << std::endl; // Inform the user wkhtmltopdf_destroy_converter(converter); // Destroy the converter wkhtmltopdf_destroy_object_settings(os); // Destroy object settings wkhtmltopdf_destroy_global_settings(gs); // Destroy global settings wkhtmltopdf_deinit(); // Deinitialize the library std::cout << "PDF created successfully." << std::endl; // Inform the user C++ 9. 执行代码并生成 PDF 文件 现在,构建项目并使用 F9 执行代码。输出将在项目文件夹中生成并保存。 生成的 PDF 如下: Create PDF File in C# IronPDF IronPDF 是一个 .NET C# PDF 库,允许开发人员轻松地从 HTML 创建 PDF 文档。 它提供了简化从 HTML 创建 PDF 文件过程的直观 API。 IronPDF 是处理 PDF 时的稳健且多功能的解决方案。 它不仅可以从简单的 HTML 文档创建 PDF,还可以处理带有 CSS 样式、JavaScript 交互甚至动态内容的复杂网页。 此外,您可以开发不同的 PDF 转换器,快速访问其转换方法。 以下是使用 IronPDF 创建 PDF 的示例代码,使用 HTML 字符串转换为 PDF: using IronPdf; // Instantiate Renderer var renderer = new ChromePdfRenderer(); // Create a PDF 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 a PDF from an HTML string using C# var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>"); // Export to a file or Stream pdf.SaveAs("output.pdf"); $vbLabelText $csharpLabel 我们创建一个ChromePdfRenderer实例来将HTML内容呈现为PDF。 我们在RenderHtmlAsPdf方法,并传入HTML字符串。 这将生成PDF文档,然后我们使用SaveAs方法保存PDF文档。 有关如何 从 IronPDF 创建 PDF 的更多详细信息,请访问此 IronPDF 代码示例页面。 结论 在本文中,我们探讨了使用 wkhtmltopdf C++ 库 在 C++ 中生成 PDF ,以及学习了如何使用 IronPDF 在 C# 中生成 PDF 文档。 有关如何将不同的 HTML 文件、网页 URL 和图像转换为 PDF 的更多详细信息,请访问此 HTML 到 PDF 代码示例。 其广泛的功能集使其成为开发人员需要在其 C# 项目中进行 HTML 到 PDF 转换时的有价值工具。 其直观的 API 和广泛的功能集使其成为需要在 C# 项目中转换 HTML 到 PDF 的开发人员的重要工具。 IronPDF 供开发目的免费使用,但若用于商业用途,则需要获得许可。 它还为商业用途提供一个 免费试用 ,以测试其完整功能。 下载 IronPDF 并自己试试。 Curtis Chau 立即与工程团队聊天 技术作家 Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。 相关文章 已更新2025年6月22日 发现 2025 年最佳 PDF 涂黑软件 探索 2025 年的顶级 PDF 涂黑解决方案,包括 Adobe Acrobat Pro DC、Nitro PDF Pro、Foxit PDF Editor 和 PDF-XChange Editor。了解 IronPDF 在 .NET 中自动化遮盖以增强安全性和合规性的方式。 阅读更多 已更新2025年6月22日 iPhone 上的最佳 PDF 阅读器(免费和付费工具比较) 在本文中,我们将探索一些 iPhone 的最佳 PDF 阅读器,并得出为何选择 IronPDF 是最佳选项的结论。 阅读更多 已更新2025年6月26日 Windows 的最佳免费 PDF 编辑器(免费和付费工具比较) 本文探讨了 2025 年可用的顶级免费 PDF 编辑器,并得出最强大和灵活的选项:IronPDF。 阅读更多 如何在 C++ 中查看 PDF 文件如何在 C++ 中读取 PDF 文件
已更新2025年6月22日 发现 2025 年最佳 PDF 涂黑软件 探索 2025 年的顶级 PDF 涂黑解决方案,包括 Adobe Acrobat Pro DC、Nitro PDF Pro、Foxit PDF Editor 和 PDF-XChange Editor。了解 IronPDF 在 .NET 中自动化遮盖以增强安全性和合规性的方式。 阅读更多
已更新2025年6月22日 iPhone 上的最佳 PDF 阅读器(免费和付费工具比较) 在本文中,我们将探索一些 iPhone 的最佳 PDF 阅读器,并得出为何选择 IronPDF 是最佳选项的结论。 阅读更多
已更新2025年6月26日 Windows 的最佳免费 PDF 编辑器(免费和付费工具比较) 本文探讨了 2025 年可用的顶级免费 PDF 编辑器,并得出最强大和灵活的选项:IronPDF。 阅读更多