在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
PDF (可攜式文件格式) 文件在不同平台上以一致的格式共享和保存文档方面被广泛使用。在本文中,我們將探討如何使用 wkhtmltopdf 庫在 C++ 中生成 PDF 文件。這是一個開源命令行工具,用於將 HTML 內容轉換為 PDF 文件。通過利用該庫的強大功能,我們可以在 C++ 應用程序中以編程方式從 HTML 內容創建 PDF 文檔。
wkhtmltopdf 是一種開源的命令行工具和渲染引擎,可將 HTML 網頁或 HTML 內容轉換為 PDF 文件。它利用 WebKit 渲染引擎來解析和渲染 HTML、CSS 和 JavaScript,然後根據渲染的內容生成 PDF 文件。
"wkhtmltopdf C++ Library" (也稱為「wkhtmltopdf C API」)這個庫提供了一個 C++ 界面給 wkhtmltopdf
命令行工具,允許你在 C++ 應用程序中直接從 HTML 內容創建 PDF 文件。我們來深入看看使用 Wkhtmltopdf 庫在 C++ 中進行 HTML 到 PDF 轉換的步驟。
為了在 C++ 中創建 PDF 文件,我們需要準備以下幾樣東西:
一個 C++ 編譯器,如 GCC 或 Clang 安裝在您的系統上。您可以使用任何支援 C++ 編程的 IDE。
wkhtmltopdf 函式庫 已下載並安裝。您可以從官方網站下載最新版本。 wkhtmltopdf 網站 並按照作業系統的指示進行安裝。
在 Code::Blocks 中創建一個專案,然後按照以下步驟連結庫文件夾和文件。如果您使用的是其他 IDE,選項可能會有所不同,但您需要在專案中引用下載的庫以使其工作。
為了確保 Code::Blocks 能找到必要的頭文件,我們需要設置搜尋目錄。
點選菜單欄中的「專案」菜單,然後選擇「構建選項」。確保選擇「Debug」。
在「構建選項」對話框中,選擇「搜尋目錄」標籤。
在「編譯器」標籤下,點擊「新增」按鈕。
瀏覽至 wkhtmltox 頭文件所在的目錄。 (例如,C:\Program Files\wkhtmltopdf\include), 然後選擇它。
最後,點擊「確定」來關閉對話框。
要連結 wkhtmltox 庫,請按照以下步驟操作:
再次點擊菜單欄中的“Project”菜單,然後選擇“Build options”。確保選擇“Debug”。
在“Build options”對話框中,選擇“Linker settings”選項卡。
在“Link libraries”選項卡下,點擊 “Add” 按鈕。
瀏覽到存放 wkhtmltox 庫文件的目錄 (例如,C:\Program Files\wkhtmltopdf\lib),然後選擇適當的庫文件。
點擊「打開」將庫添加到您的項目中。
最後,點擊「確定」關閉對話框。
首先,我們將包含必要的標頭檔,以在我們的 C++ 程式中利用 wkhtmltopdf 庫的功能。在 main.cpp 原始碼文件的開頭包含以下標頭檔案:
#include <iostream>
#include <fstream>
#include <string>
#include <wkhtmltox/pdf.h>
如果您不使用 GUI,則需要禁用它以避免錯誤。代碼如下:
wkhtmltopdf_init(false);
接下來,我們需要初始化全局和物件設定指針,然後初始化 wkhtmltopdf
轉換器。
wkhtmltopdf_global_settings* gs = wkhtmltopdf_create_global_settings();
wkhtmltopdf_object_settings* os = wkhtmltopdf_create_object_settings();
wkhtmltopdf_converter* converter = wkhtmltopdf_create_converter(gs);
現在,讓我們建立一個 HTML 字串,以便在新創建的 PDF 文件中填寫一些內容。程式碼如下:
string htmlString = "<html><body><h1>Create a PDF in C++ using WKHTMLTOPDF Library</h1></body></html>";
wkhtmltopdf_add_object(converter, os, htmlString.c_str());
Wkhtmltopdf 提供了一種轉換器方法,可以將 HTML 內容轉換為 PDF。以下是程式碼片段:
wkhtmltopdf_convert(converter);
利用 wkhtmltopdf_get_output
函數,我們可以將 PDF 資料作為記憶體緩衝區流來獲取。此函數還會返回 PDF 的長度。以下範例將執行此任務:
const unsigned char* pdfData;
const int pdfLength = wkhtmltopdf_get_output(converter, &pdfData);
pdfData
指標現在包含來自 wkhtmltopdf_converter
的字符流。要儲存為 PDF 檔案,首先我們需要指定要儲存的文件路徑。然後,使用輸出文件流,我們以二進制模式打開文件,並使用 reinterpret_cast
函數將 pdfData
轉型後寫入其中。最後,我們關閉文件。
const char* outputPath = "file.pdf";
ofstream outputFile(outputPath, ios::binary);
outputFile.write(reinterpret_cast<const char*>(pdfData), pdfLength);
outputFile.close();
成功創建 PDF 文件後,必須清理 Wkhtmltopdf 分配的資源,否則會導致記憶體洩漏。
wkhtmltopdf_destroy_converter(converter);
wkhtmltopdf_destroy_object_settings(os);
wkhtmltopdf_destroy_global_settings(gs);
wkhtmltopdf_deinit();
cout << "PDF created successfully." << endl;
現在,編譯專案並使用 F9 執行程式碼。輸出會生成並保存在專案資料夾中。生成的 PDF 如下:
IronPDF 是一個.NET C# PDF 函式庫,讓開發人員可以輕鬆地從 HTML 建立 PDF 文件。它提供了一個直觀的 API,簡化了從 HTML 建立 PDF 檔案的過程。
IronPDF 在處理 PDF 方面既強大又多功能。不僅可以從簡單的 HTML 文件建立 PDF,還能從包含 CSS 樣式、JavaScript 互動甚至動態內容的複雜網頁中建立 PDF。此外,您可以使用其快速轉換方法開發不同的 PDF 轉換器。
using IronPdf;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from a HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
// Export to a file or Stream
pdf.SaveAs("output.pdf");
我們創建一個 ChromePdfRenderer
實例來將 HTML 內容渲染為 PDF。我們在 renderer
對象上調用 RenderHtmlAsPdf
方法並傳入 HTML 字串。這會生成 PDF 文件,然後我們使用 SaveAs
方法保存 PDF 文件。
欲了解更多有關如何 創建 PDF 從不同的資源如 HTML 文件、網頁 URL 和圖像,請訪問此 程式碼範例頁面.
在本文中,我們探討了使用 wkhtmltopdf C++ 庫 在 C++ 中生成 PDF,並學習瞭如何使用 IronPDF 在 C# 中生成 PDF 文件。
使用 IronPDF 從 HTML 內容生成 PDF 文件在 .NET Framework 語言中變得非常簡單。其廣泛的功能集使其成為需要轉換的開發人員的重要工具。 HTML轉PDF 在他們的 C# 專案中。無論是生成報告、發票,或任何其他需要精確 HTML 至 PDF 轉換的文件,IronPDF 是一個可靠且高效的解決方案。
IronPDF 可免費用於開發用途,但用於商業用途則需要授權。它還提供了一個 免費試用 用於商業用途測試其完整功能。 下載 IronPDF 親自試試看。