PDF 工具

如何在 C++ 中將 HTML 轉換為 PDF

發佈 2023年7月1日
分享:

將 HTML 檔案或內容轉換為 PDF 頁面格式的能力在許多應用程式中是一個有價值的功能。 在 C++ 中,從頭開始構建一個應用程式來生成 HTML 到 PDF 格式的文件是一項相當繁瑣的工作。 在本文中,我們將探索如何使用wkhtmltopdf庫在C++中將HTML轉換為PDF。

WK轉換為PDF(TOPdf)庫

wkhtmltopdf是一種開源命令行工具,可無縫地將 HTML 純文字頁面轉換為高品質 PDF 文件。 透過在 C++ 程式中使用其功能,我們可以輕鬆將 HTML 字串內容轉換為 PDF 格式。 讓我們深入了解使用 wkhtmltopdf 庫在 C++ 中將 HTML 頁面轉換為 PDF 的逐步過程。

先決條件

要在 C++ 中創建 HTML 到 PDF 文件轉換器,我們需要檢查以下幾點是否就位:

  1. 您的系統上安裝了 C++ 編譯器,例如 GCC 或 Clang。

  2. 已安裝 wkhtmltopdf library。 您可以從官方下載最新版本wkhtmltopdf 網站並根據您的操作系統說明進行安裝。

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

在 Code::Blocks 中創建一個 C++ HtmltoPdf 專案

要在 Code::Blocks 中創建一個 C++ PDF 轉換项目,請按照以下步驟操作:

  1. 打開 Code::Blocks IDE。

  2. 前往「檔案」選單,選擇「新增」,然後選擇「專案」以打開新專案精靈。

  3. 在新建專案嚮導中,選擇「主控台應用程式」。

  4. 選擇 C++ 語言。

  5. 設置專案標題和您想要保存的位置。 按「下一步」繼續。

  6. 選擇適當的 C++ 編譯器和建置目標,例如 Debug 或 Release。 按「完成」以創建專案。

設定搜尋目錄

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

  1. 在選單列中點擊「專案」選單,然後選擇「建置選項」。 確保您選擇「Debug」。

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

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

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

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

    如何在 C++ 中將 HTML 轉換為 PDF:圖 1 - 搜尋目錄

連接庫

若要連結 wkhtmltox 庫,請按照以下步驟進行:

  1. 再次点击菜单栏中的“项目”菜单,选择“构建选项”。 確保您選擇「Debug」。

  2. 在“構建選項”對話框中,選擇“鏈接器設置”選項卡。

  3. 在「鏈接庫」選項卡下,點擊「添加」按鈕。

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

  5. 點擊「開啟」以將庫添加到您的專案中。

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

    如何在 C++ 中將 HTML 轉換為 PDF:圖 2 - 連接庫

輕鬆將 HTML 轉換為 PDF 的 C++ 步驟

步驟 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>
#include <iostream>
	#include <fstream>
	#include <string>
	#include <wkhtmltox/pdf.h>
VB   C#

步驟 2 初始化轉換器

要將 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)
VB   C#

步驟 3 設定 HTML 內容

現在,讓我們提供需要轉換為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())
VB   C#

步驟四:將 HTML 轉換為 PDF

在準備好轉換器和 HTML 內容後,我們可以繼續將 HTML 轉換為 PDF 文件。使用以下代碼片段:


    wkhtmltopdf_convert(converter);

    wkhtmltopdf_convert(converter);
wkhtmltopdf_convert(converter)
VB   C#

步驟 5 將輸出獲取為記憶體緩衝區

使用 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)
VB   C#

步驟 6 儲存 PDF 檔案

一旦轉換完成,我們需要將生成的 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()
VB   C#

步驟 7 清理作業

在將 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
VB   C#

步驟 8 執行代碼並生成 PDF 檔案

現在,建置專案並使用 F9 執行代碼。輸出將生成並保存在專案資料夾中。 生成的 PDF 如下:

如何在 C++ 中將 HTML 轉換為 PDF:圖 3 - PDF 輸出

將 HTML 檔案轉換為 PDF 檔案在 C# 中

IronPDF

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")
VB   C#

PDF 輸出:

如何在 C++ 中將 HTML 轉換為 PDF:圖 4 - IronPDF 輸出

如需有關如何將不同的 HTML 文件、網頁 URL 和圖像轉換為 PDF 的更多詳細信息,請訪問此處。HTML 轉 PDF 代碼範例.

使用 IronPDF,在 .NET Framework 語言中從 HTML 內容生成 PDF 檔案成為一項簡單的任務。 其直觀的 API 和豐富的功能集使其成為開發人員需要進行轉換時的寶貴工具。HTML轉PDF在他們的 C# 專案中。 無論是生成報告、發票,還是任何其他需要精確HTML轉PDF轉換的文件,IronPDF都是一個可靠且高效的解決方案。

IronPDF 供開發用途免費,但若用於商業用途,則需取得授權。 它還提供一個IronPDF 全功能的免費試用版供商業用途測試其完整功能。 您可以從下載該軟體下載 IronPDF.

< 上一頁
如何在C++中讀取PDF檔案
下一個 >
如何使用 Puppeteer 在 Node.js 中將 HTML 轉換為 PDF

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

免費 NuGet 下載 總下載次數: 11,810,873 查看許可證 >