在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
將 HTML 檔案或內容轉換為 PDF 頁面格式的能力在許多應用程式中是一個有價值的功能。 在 C++ 中,從頭開始構建一個應用程式來生成 HTML 到 PDF 格式的文件是一項相當繁瑣的工作。 在本文中,我們將探索如何使用wkhtmltopdf庫在C++中將HTML轉換為PDF。
wkhtmltopdf是一種開源命令行工具,可無縫地將 HTML 純文字頁面轉換為高品質 PDF 文件。 透過在 C++ 程式中使用其功能,我們可以輕鬆將 HTML 字串內容轉換為 PDF 格式。 讓我們深入了解使用 wkhtmltopdf 庫在 C++ 中將 HTML 頁面轉換為 PDF 的逐步過程。
要在 C++ 中創建 HTML 到 PDF 文件轉換器,我們需要檢查以下幾點是否就位:
您的系統上安裝了 C++ 編譯器,例如 GCC 或 Clang。
已安裝 wkhtmltopdf library。 您可以從官方下載最新版本wkhtmltopdf 網站並根據您的操作系統說明進行安裝。
要在 Code::Blocks 中創建一個 C++ PDF 轉換项目,請按照以下步驟操作:
打開 Code::Blocks IDE。
前往「檔案」選單,選擇「新增」,然後選擇「專案」以打開新專案精靈。
在新建專案嚮導中,選擇「主控台應用程式」。
選擇 C++ 語言。
設置專案標題和您想要保存的位置。 按「下一步」繼續。
為了確保 Code::Blocks 能夠找到必要的標頭檔,我們需要設置搜尋目錄。
在選單列中點擊「專案」選單,然後選擇「建置選項」。 確保您選擇「Debug」。
在「生成選項」對話框中,選擇「搜尋目錄」標籤。
在「編譯器」標籤下,點擊「添加」按鈕。
瀏覽到 wkhtmltox 標頭文件所在的目錄(例如,C:\Program Files\wkhtmltopdf\include),然後選擇它。
最後,點擊「確定」關閉對話框。
若要連結 wkhtmltox 庫,請按照以下步驟進行:
再次点击菜单栏中的“项目”菜单,选择“构建选项”。 確保您選擇「Debug」。
在“構建選項”對話框中,選擇“鏈接器設置”選項卡。
在「鏈接庫」選項卡下,點擊「添加」按鈕。
瀏覽到 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>
#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.