在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
在许多应用程序中,将 HTML 文件或内容转换为 PDF 页面格式的能力是一项非常有价值的功能。在 C++ 中,从头开始构建一个应用程序来生成 HTML 到 PDF 格式的文件是一项相当繁琐的任务。因此,在本文中,我们将探讨如何使用 wkhtmltopdf 库在 C++ 中将 HTML 转换为 PDF。
wkhtmltopdf 是一款开源命令行工具,可将 HTML 纯文本页面无缝转换为高质量 PDF 文档。利用它在 C++ 程序中的功能,我们可以轻松地将 HTML 字符串内容转换为 PDF 格式。下面,让我们利用 wkhtmltopdf 库,一步步了解在 C++ 中将 HTML 页面转换为 PDF 的过程。
要在 C++ 中创建 HTML 到 PDF 文件的转换器,我们需要检查以下事项是否准备就绪:
1.系统中已安装 GCC 或 Clang 等 C++ 编译器。
3.具备 C++ 编程的基本知识。
要在 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.最后点击 "确定 "关闭对话框。
要链接 wkhtmltox 库,请按以下步骤操作:
1.再次点击菜单栏中的 "项目 "菜单,选择 "构建选项"。确保选择 "调试"。
2.在 "编译选项 "对话框中,选择 "链接器设置 "选项卡。
3.在 "链接库 "选项卡下点击 "添加 "按钮。
4.浏览到wkhtmltox库文件所在的目录 (例如,C:\Program Files\wkhtmltopdf\lib)然后选择相应的库文件。
5.单击 "打开 "将库添加到项目中。
6.最后,点击 "OK(确定)"关闭对话框。
要开始使用,请在 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>
要将 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)
现在,让我们提供需要转换为 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())
准备好转换器和 HTML 内容后,我们就可以将 HTML 转换为 PDF 文件了。请使用以下代码片段:
wkhtmltopdf_convert(converter);
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);
const unsigned Char* pdfData
Const pdfLength As Integer = wkhtmltopdf_get_output(converter, &pdfData)
转换完成后,我们需要将生成的 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()
将 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
现在,构建项目并使用 F9 执行代码。输出结果将生成并保存在项目文件夹中。生成的 PDF 文件如下:
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")
PDF 输出:
有关如何将不同的 HTML 文件、网页 URL 和图像转换为 PDF 的更多详情,请访问此页面 代码示例页面.
有了 IronPDF,从 HTML 内容生成 PDF 文件就成了 .NET Framework 语言中的一项简单任务。其直观的 API 和广泛的功能集使其成为开发人员转换 PDF 文件的重要工具。 HTML 转 PDF 在他们的 C# 项目中。无论是生成报告、发票,还是任何其他需要将 HTML 精确转换为 PDF 的文档,IronPDF 都是可靠高效的解决方案。
IronPDF 用于开发目的是免费的,但用于商业用途则需要获得许可。它还提供 免费试用 用于商业用途,以测试其全部功能。您可以从以下网址下载该软件 这里.