如何將PDF保存為圖像文件
在許多應用程式中,將HTML文件或內容轉換為PDF頁面是一個有價值的功能。 在C++中,從頭開始建立一個應用程式以生成HTML到PDF格式的文件可能非常繁瑣。 在本文中,我們將探討如何使用wkhtmltopdf程式庫在C++中將HTML轉換為PDF。
wkhtmltopdf程式庫
wkhtmltopdf是一個開源命令行工具,可無縫地將HTML純文字頁面轉換成高品質PDF文件。 通過在C++程式中利用其功能,我們可以輕鬆地將HTML字串內容轉換為PDF格式。 讓我們深入了解在C++中使用wkhtmltopdf程式庫進行HTML頁面到PDF轉換的逐步過程。
先決條件
要在C++中建立一個HTML轉PDF文件的轉換器,請確保滿足以下前提條件:
- 在系統上安裝的C++編譯器,例如GCC或Clang。
- 已安裝wkhtmltopdf程式庫。 您可以從官方wkhtmltopdf網站下載最新版本並按照操作系統的說明進行安裝。
- 基本的C++編程知識。
在Code::Blocks中建立C++ HtmltoPdf專案
要在Code::Blocks中建立C++ PDF轉換專案,請按照以下步驟:
- 打開Code::Blocks IDE。
- 前往"File"選單,選擇"New",然後選擇"Project"以打開新的專案精靈。
- 在新的專案精靈中,選擇"Console Application"。
- 選擇C++語言。
- 設定專案標題和您希望保存的位置。 點擊"Next"繼續。
- 選擇適當的C++編譯器和構建目標,例如Debug或Release。 點擊"Finish"以建立專案。
設置搜尋目錄
為了確保Code::Blocks可以找到必要的標頭文件,我們需要設置搜尋目錄:
- 點選選單欄中的"專案"選單,然後選擇"構建選項"。 確保選擇"除錯"。
- 在"構建選項"對話框中,選擇"搜尋目錄"選項卡。
- 在"編譯器"選項卡下,點選"新增"按鈕。
- 瀏覽到
標頭文件所在的目錄(例如,C:\Program Files\wkhtmltopdf\include),然後選擇它。 - 最後,點選"確定"以關閉對話框。

連結程式庫
要對
- 再次點擊選單欄中的"Project"選單,然後選擇"Build options"。 確保選擇"除錯"。
- 在"構建選項"對話框中,選擇"連結器設置"選項卡。
- 在"連結程式庫"選項卡下,點選"新增"按鈕。
- 瀏覽到
程式庫文件所在的目錄(例如,C:\Program Files\wkhtmltopdf\lib),然後選擇適當的程式庫文件。 - 點選"開啟"將程式庫新增到專案中。
- 最後,點選"確定"以關閉對話框。

在C++中輕鬆轉換HTML到PDF的步驟
步驟1:包括轉換HTML文件的程式庫
要開始使用,請在您的C++程式中包含wkhtmltopdf程式庫的必要標頭文件以利用其功能。 在main.cpp源程式碼文件的開頭包含以下標頭文件,如以下範例所示:
#include <iostream>
#include <fstream>
#include <string>
#include <wkhtmltox/pdf.h>
#include <iostream>
#include <fstream>
#include <string>
#include <wkhtmltox/pdf.h>
步驟2:初始化轉換器
要將HTML轉換為PDF,我們需要初始化wkhtmltopdf轉換器。 程式碼如下所示:
// Initialize the wkhtmltopdf library
wkhtmltopdf_init(false);
// Create global settings object
wkhtmltopdf_global_settings* gs = wkhtmltopdf_create_global_settings();
// Create object settings object
wkhtmltopdf_object_settings* os = wkhtmltopdf_create_object_settings();
// Create the PDF converter with global settings
wkhtmltopdf_converter* converter = wkhtmltopdf_create_converter(gs);
// Initialize the wkhtmltopdf library
wkhtmltopdf_init(false);
// Create global settings object
wkhtmltopdf_global_settings* gs = wkhtmltopdf_create_global_settings();
// Create object settings object
wkhtmltopdf_object_settings* os = wkhtmltopdf_create_object_settings();
// Create the PDF converter with global settings
wkhtmltopdf_converter* converter = wkhtmltopdf_create_converter(gs);
步驟3:設定HTML內容
現在,讓我們提供需要轉換為PDF的HTML內容。 您可以選擇載入HTML文件或直接提供字串。
std::string htmlString = "<html><body><h1>Hello, World!</h1></body></html>";
// Add the HTML content to the converter
wkhtmltopdf_add_object(converter, os, htmlString.c_str());
std::string htmlString = "<html><body><h1>Hello, World!</h1></body></html>";
// Add the HTML content to the converter
wkhtmltopdf_add_object(converter, os, htmlString.c_str());
步驟4:將HTML轉換為PDF
在轉換器和HTML內容準備就緒後,我們可以進行HTML到PDF文件轉換。請使用以下程式碼片段:
// Perform the actual conversion
if (!wkhtmltopdf_convert(converter)) {
std::cerr << "Conversion failed!" << std::endl;
}
// Perform the actual conversion
if (!wkhtmltopdf_convert(converter)) {
std::cerr << "Conversion failed!" << std::endl;
}
步驟5:獲取作為記憶緩衝區的輸出
使用wkhtmltopdf_get_output功能,我們可以以記憶緩衝區流的方式獲取現有的PDF資料。 它還會返回PDF的長度。 以下範例將執行此操作:
// Retrieve the PDF data in memory buffer
const unsigned char* pdfData;
int pdfLength = wkhtmltopdf_get_output(converter, &pdfData);
// Retrieve the PDF data in memory buffer
const unsigned char* pdfData;
int pdfLength = wkhtmltopdf_get_output(converter, &pdfData);
步驟6:保存PDF文件
轉換完成後,我們需要將生成的PDF文件保存到磁碟中。 指定您想要保存PDF的文件路徑。 然後使用輸出文件流,以二進位模式打開文件並將pdfData寫入其中。 最後,關閉文件:
const char* outputPath = "file.pdf";
std::ofstream outputFile(outputPath, std::ios::binary);
// Write the PDF data to the file
outputFile.write(reinterpret_cast<const char*>(pdfData), pdfLength);
outputFile.close();
const char* outputPath = "file.pdf";
std::ofstream outputFile(outputPath, std::ios::binary);
// Write the PDF data to the file
outputFile.write(reinterpret_cast<const char*>(pdfData), pdfLength);
outputFile.close();
步驟7:清理
將HTML轉換為PDF後,請務必清理wkhtmltopdf所分配的資源:
// Clean up the converter and settings
wkhtmltopdf_destroy_converter(converter);
wkhtmltopdf_destroy_object_settings(os);
wkhtmltopdf_destroy_global_settings(gs);
// Deinitialize the wkhtmltopdf library
wkhtmltopdf_deinit();
std::cout << "PDF saved successfully." << std::endl;
// Clean up the converter and settings
wkhtmltopdf_destroy_converter(converter);
wkhtmltopdf_destroy_object_settings(os);
wkhtmltopdf_destroy_global_settings(gs);
// Deinitialize the wkhtmltopdf library
wkhtmltopdf_deinit();
std::cout << "PDF saved successfully." << std::endl;
步驟8:執行程式碼並生成PDF文件
現在,構建該專案並使用F9執行該程式碼。輸出被生成並保存在專案資料夾中。 生成的PDF如下:

HTML File to PDF File in C
IronPDF
IronPDF HTML-to-PDF轉換程式庫是一個強大的.NET和.NET Core C#程式庫,可讓開發人員輕鬆地將HTML內容生成PDF文件。 它提供了一個簡單且直觀的API,簡化了將HTML網頁轉換為PDF的過程,使其成為各種應用程式和使用案例的熱門選擇。
IronPDF的一個主要優勢是其多功能性。 它不僅支持簡單HTML文件的轉換,還支持具有CSS樣式、JavaScript交互,甚至是動態內容的複雜網頁。 此外,您可以快速存取其轉換方法來開發不同的PDF轉換器。
以下是使用IronPDF在C#中將HTML字串轉換為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");
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,從HTML內容生成PDF文件變成了一個在.NET Framework語言中的簡單任務。 其直觀的API和廣泛的功能集使其成為開發人員在其C#專案中需要轉換HTML到PDF時的寶貴工具。 無論是生成報告、發票,或任何其他需要準確HTML到PDF轉換的文件,IronPDF都是一個可靠且有效的解決方案。
IronPDF可免費用於開發目的,但商業用途需獲得授權。 它還提供IronPDF完整功能的免費試用,供商業用途測試其完整功能。 您可以從下載IronPDF獲得軟體。




