PDF 工具

如何在C++中創建PDF檔案

發佈 2023年7月5日
分享:

PDF (可攜式文件格式) 文件在不同平台上以一致的格式共享和保存文档方面被广泛使用。在本文中,我們將探討如何使用 wkhtmltopdf 庫在 C++ 中生成 PDF 文件。這是一個開源命令行工具,用於將 HTML 內容轉換為 PDF 文件。通過利用該庫的強大功能,我們可以在 C++ 應用程序中以編程方式從 HTML 內容創建 PDF 文檔。

WkhtmltoPdf 庫

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 文件,我們需要準備以下幾樣東西:

  1. 一個 C++ 編譯器,如 GCC 或 Clang 安裝在您的系統上。您可以使用任何支援 C++ 編程的 IDE。

  2. wkhtmltopdf 函式庫 已下載並安裝。您可以從官方網站下載最新版本。 wkhtmltopdf 網站 並按照作業系統的指示進行安裝。

  3. 基本的 C++ 程式設計知識。

C++ 在 Code:Blocks 中創建 PDF 專案

在 Code::Blocks 中創建一個專案,然後按照以下步驟連結庫文件夾和文件。如果您使用的是其他 IDE,選項可能會有所不同,但您需要在專案中引用下載的庫以使其工作。

1. 在搜尋目錄中新增 include 資料夾

為了確保 Code::Blocks 能找到必要的頭文件,我們需要設置搜尋目錄。

  1. 點選菜單欄中的「專案」菜單,然後選擇「構建選項」。確保選擇「Debug」。

  2. 在「構建選項」對話框中,選擇「搜尋目錄」標籤。

  3. 在「編譯器」標籤下,點擊「新增」按鈕。

  4. 瀏覽至 wkhtmltox 頭文件所在的目錄。 (例如,C:\Program Files\wkhtmltopdf\include), 然後選擇它。

  5. 最後,點擊「確定」來關閉對話框。

    如何在 C++ 中創建 PDF 文件:圖 1

2. 在連結器設定中連結庫

要連結 wkhtmltox 庫,請按照以下步驟操作:

  1. 再次點擊菜單欄中的“Project”菜單,然後選擇“Build options”。確保選擇“Debug”。

  2. 在“Build options”對話框中,選擇“Linker settings”選項卡。

  3. 在“Link libraries”選項卡下,點擊 “Add” 按鈕。

  4. 瀏覽到存放 wkhtmltox 庫文件的目錄 (例如,C:\Program Files\wkhtmltopdf\lib),然後選擇適當的庫文件。

  5. 點擊「打開」將庫添加到您的項目中。

  6. 最後,點擊「確定」關閉對話框。

    如何用C++創建PDF文件:圖2

使用Wkhtmltopdf在C++中創建PDF的步驟

1. 包含所需的庫

首先,我們將包含必要的標頭檔,以在我們的 C++ 程式中利用 wkhtmltopdf 庫的功能。在 main.cpp 原始碼文件的開頭包含以下標頭檔案:

#include <iostream>
#include <fstream>
#include <string>
#include <wkhtmltox/pdf.h>

2. 禁用 GUI 組件

如果您不使用 GUI,則需要禁用它以避免錯誤。代碼如下:

wkhtmltopdf_init(false);

3. 初始化設定和轉換器

接下來,我們需要初始化全局和物件設定指針,然後初始化 wkhtmltopdf 轉換器。

wkhtmltopdf_global_settings* gs = wkhtmltopdf_create_global_settings();
wkhtmltopdf_object_settings* os = wkhtmltopdf_create_object_settings();
wkhtmltopdf_converter* converter = wkhtmltopdf_create_converter(gs);

4. 添加 PDF 內容

現在,讓我們建立一個 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());

5. 將 HTML 字串轉換為 PDF 檔案

Wkhtmltopdf 提供了一種轉換器方法,可以將 HTML 內容轉換為 PDF。以下是程式碼片段:

wkhtmltopdf_convert(converter);

6. 取得作為記憶體緩衝區的輸出

利用 wkhtmltopdf_get_output 函數,我們可以將 PDF 資料作為記憶體緩衝區流來獲取。此函數還會返回 PDF 的長度。以下範例將執行此任務:

const unsigned char* pdfData;
const int pdfLength = wkhtmltopdf_get_output(converter, &pdfData);

7. 儲存 PDF 檔案

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();

8. 釋放記憶體

成功創建 PDF 文件後,必須清理 Wkhtmltopdf 分配的資源,否則會導致記憶體洩漏。

wkhtmltopdf_destroy_converter(converter);
wkhtmltopdf_destroy_object_settings(os);
wkhtmltopdf_destroy_global_settings(gs);
wkhtmltopdf_deinit();

cout << "PDF created successfully." << endl;

9. 執行程式碼並生成 PDF 文件

現在,編譯專案並使用 F9 執行程式碼。輸出會生成並保存在專案資料夾中。生成的 PDF 如下:

如何在 C++ 中建立 PDF 檔案:圖 3

在 C# 中建立 PDF 文件

IronPDF

IronPDF 是一個.NET C# PDF 函式庫,讓開發人員可以輕鬆地從 HTML 建立 PDF 文件。它提供了一個直觀的 API,簡化了從 HTML 建立 PDF 檔案的過程。

IronPDF 在處理 PDF 方面既強大又多功能。不僅可以從簡單的 HTML 文件建立 PDF,還能從包含 CSS 樣式、JavaScript 互動甚至動態內容的複雜網頁中建立 PDF。此外,您可以使用其快速轉換方法開發不同的 PDF 轉換器。

這裡有一個範例代碼來 創建 PDF 使用 HTML 字串:

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 文件。

如何在 C++ 中創建 PDF 文件:圖 4

欲了解更多有關如何 創建 PDF 從不同的資源如 HTML 文件、網頁 URL 和圖像,請訪問此 程式碼範例頁面.

結論

在本文中,我們探討了使用 wkhtmltopdf C++ 庫 在 C++ 中生成 PDF,並學習瞭如何使用 IronPDF 在 C# 中生成 PDF 文件。

使用 IronPDF 從 HTML 內容生成 PDF 文件在 .NET Framework 語言中變得非常簡單。其廣泛的功能集使其成為需要轉換的開發人員的重要工具。 HTML轉PDF 在他們的 C# 專案中。無論是生成報告、發票,或任何其他需要精確 HTML 至 PDF 轉換的文件,IronPDF 是一個可靠且高效的解決方案。

IronPDF 可免費用於開發用途,但用於商業用途則需要授權。它還提供了一個 免費試用 用於商業用途測試其完整功能。 下載 IronPDF 親自試試看。

< 上一頁
如何在 C++ 中查看 PDF 文件
下一個 >
如何在C++中讀取PDF檔案

準備開始了嗎? 版本: 2024.10 剛剛發布

免費 NuGet 下載 總下載次數: 10,993,239 查看許可證 >