在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
将 HTML 文件或内容转换为 PDF 页面格式的能力在许多应用程序中都是一项宝贵的功能。 在 C# 中,从头开始构建一个应用程序来生成 HTML 转 PDF 格式文件是一项相当繁琐的工作。 因此,在本文中,我们将探讨如何使用 wkhtmltopdf 库在 C++ 中将 HTML 转换为 PDF。
wkhtmltopdf是一款开源命令行工具,可将 HTML 纯文本页面无缝转换为高质量 PDF 文档。 通过利用其在 C++ 程序中的功能,我们可以轻松地将 HTML 字符串内容转换为 PDF 格式。 让我们一步步深入了解使用 wkhtmltopdf 库在 C++ 中将 HTML 页面转换为 PDF 的过程。
要在 C# 中创建 HTML 到 PDF 文件的转换器,我们需要检查以下事项是否到位:
系统中已安装 GCC 或 Clang 等 C++ 编译器。
已安装 wkhtmltopdf 库**。 您可以从官方wkhtmltopdf 网站并按照操作系统的说明进行安装。
要在 Code::Blocks 中创建 C++ PDF 转换项目,请按照以下步骤操作:
打开 Code::Blocks IDE。
转到 "文件 "菜单,选择 "新建",然后选择 "项目",打开新建项目向导。
在新建项目向导中,选择 "控制台应用程序"。
选择 C#++ 语言。
设置项目标题和保存位置。 单击 "下一步 "继续。
为了确保 Code::Blocks 能够找到必要的头文件,我们需要设置搜索目录。
单击菜单栏中的 "项目 "菜单,选择 "构建选项"。 请确保选择 "调试"。
在 "构建选项 "对话框中,选择 "搜索目录 "选项卡。
在 "编译器 "选项卡下,单击 "添加 "按钮。
浏览到wkhtmltox头文件所在的目录(例如,C:\Program Files\wkhtmltopdf\include)请选择".NET "或 "Python"。
最后,单击 "确定 "关闭对话框。
要链接wkhtmltox库,请按照以下步骤操作:
再次点击菜单栏中的 "项目 "菜单,选择 "构建选项"。 请确保选择 "调试"。
在 "构建选项 "对话框中,选择 "链接器设置 "选项卡。
在 "链接库 "选项卡下,单击 "添加 "按钮。
浏览到wkhtmltox库文件所在的目录(例如,C:\Program Files\wkhtmltopdf\lib)您可以在".NET"、"Python "或 "Node.js "中选择合适的库文件。
单击 "打开 "将库添加到您的项目中。
最后,单击 "确定 "关闭对话框。
要开始使用,请包含必要的头文件,以便在您的 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 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")
PDF 输出:
有关如何将不同的 HTML 文件、网页 URL 和图像转换为 PDF 的更多详情,请访问此处HTML 转 PDF 代码示例.
有了 IronPDF,用 .NET Framework 语言从 HTML 内容生成 PDF 文件就变得简单易行。 其直观的 API 和广泛的功能集使其成为开发人员转换以下内容的重要工具HTML 转 PDF在他们的 C# 项目中。 无论是生成报告、发票,还是其他任何需要将 HTML 精确转换为 PDF 的文档,IronPDF 都是可靠高效的解决方案。
IronPdf 用于开发目的是免费的,但用于商业用途则需要获得许可。 它还提供了免费试用 IronPDF 的全部功能该翻译必须符合商业用途,以测试其完整功能。 您可以从以下网址下载该软件下载IronPDF.