PDFツール

C++でHTMLをPDFに変換する方法

HTMLファイルまたはコンテンツをPDFページ形式に変換する機能は、多くのアプリケーションにおいて貴重な機能です。 C#では、HTMLからPDF形式のファイルを生成するアプリケーションをゼロから構築するのは非常に面倒な作業です。 この記事では、wkhtmltopdfライブラリを使用してC++でHTMLをPDFに変換する方法を探ります。

WKTOPdfライブラリ

wkhtmltopdf は、HTMLプレーンテキストのページを高品質なPDFドキュメントにシームレスに変換するオープンソースのコマンドラインツールです。 C++プログラムにおける機能を活用することで、HTML文字列コンテンツを簡単にPDF形式に変換できます。 C++でwkhtmltopdfライブラリを使用してHTMLページをPDFに変換するステップバイステップのプロセスを掘り下げましょう。

前提条件

C++でHTMLからPDFファイルへのコンバーターを作成するには、次の点を確認する必要があります:

  1. システムにインストールされたGCCまたはClangなどのC++コンパイラ。

  2. wkhtmltopdfライブラリがインストールされています。 最新バージョンは公式の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. メニューバーの "Project "メニューをクリックし、"Build options "を選択してください。 「デバッグ」を選択してください。

  2. Build options "ダイアログボックスで、"Search directories "タブを選択します。

  3. 「コンパイラ」タブの下にある「追加」ボタンをクリックしてください。

  4. wkhtmltox のヘッダーファイルがあるディレクトリ(例:C:\Program Files\wkhtmltopdf\include)に移動し、それを選択します。

  5. 最後に、「OK」をクリックしてダイアログボックスを閉じます。

    C++でHTMLをPDFに変換する方法: 図1 - ディレクトリの検索

ライブラリのリンク付け

wkhtmltoxライブラリにリンクするには、次の手順に従ってください:

  1. もう一度メニューバーの "Project "メニューをクリックし、"Build options "を選択してください。 「デバッグ」を選択してください。

  2. ビルド・オプション」ダイアログ・ボックスで、「リンカ設定」タブを選択します。

  3. 「リンクライブラリ」タブの下にある「追加」ボタンをクリックします。

  4. wkhtmltox ライブラリファイルがあるディレクトリに移動し(例: C:\Program Files\wkhtmltopdf\lib)、適切なライブラリファイルを選択してください。

  5. 「開く」をクリックして、ライブラリをプロジェクトに追加します。

  6. 最後に、「OK」をクリックしてダイアログボックスを閉じます。

    C++でHTMLをPDFに変換する方法: 図2 - ライブラリのリンク

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>
#include <iostream>
	#include <fstream>
	#include <string>
	#include <wkhtmltox/pdf.h>
$vbLabelText   $csharpLabel

ステップ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)
$vbLabelText   $csharpLabel

ステップ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())
$vbLabelText   $csharpLabel

ステップ 4 HTML を PDF に変換

コンバーターとHTMLコンテンツの準備が整ったら、HTMLをPDFファイルに変換することができます。次のコードスニペットを使用してください:


    wkhtmltopdf_convert(converter);

    wkhtmltopdf_convert(converter);
wkhtmltopdf_convert(converter)
$vbLabelText   $csharpLabel

ステップ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)
$vbLabelText   $csharpLabel

ステップ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()
$vbLabelText   $csharpLabel

ステップ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
$vbLabelText   $csharpLabel

ステップ8 コードを実行してPDFファイルを生成します

では、プロジェクトをビルドし、F9を使用してコードを実行してください。出力はプロジェクトフォルダーに生成および保存されます。 結果として得られたPDFは以下の通りです:

HTMLをPDFに変換する方法 (C++):図3 - PDF 出力

C#でHTMLファイルをPDFファイルに変換

IronPDF

IronPDF HTML-to-PDF Conversion Library は、開発者がHTMLコンテンツからPDFドキュメントを簡単に生成できる強力な.NETおよび.NET Core C# ライブラリです。 HTMLウェブページをPDFに変換するプロセスを簡素化する、わかりやすく直感的なAPIを提供し、さまざまなアプリケーションやユースケースで人気のある選択肢となっています。

IronPDF の主な利点の一つは、その汎用性です。 それはシンプルなHTMLドキュメントの変換だけでなく、CSSスタイリング、JavaScriptインタラクション、さらには動的コンテンツを含む複雑なウェブページの変換もサポートしています。 さらに、変換メソッドへの迅速なアクセスにより、さまざまなPDF変換器を開発することができます。

以下は、C#でIronPDFを使用してHTML文字列をPDFに変換するコード例です:HTML String to PDF using IronPDF


    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")
$vbLabelText   $csharpLabel

PDF出力:

HTMLをPDFに変換する方法 C++: 図4 - IronPDF出力

異なるHTMLファイル、WebページのURL、画像をPDFに変換する方法の詳細については、こちらのHTML to PDFコード例をご覧ください。

IronPDFを使用すると、.NET Framework言語でHTMLコンテンツからPDFファイルを生成することが簡単になります。 その直感的なAPIと豊富な機能セットにより、C#プロジェクトでHTMLをPDFに変換する必要がある開発者にとって貴重なツールです。 レポート、請求書、または正確なHTMLからPDFへの変換を必要とする他のドキュメントの生成であれ、IronPDFは信頼性が高く効率的なソリューションです。

IronPDFは開発目的であれば無料ですが、商用利用にはライセンスが必要です。 また、商業目的でその完全な機能を試すために、IronPDFの完全な機能を無料で試用することができます。 IronPDFをダウンロードからソフトウェアをダウンロードできます。

チペゴ
ソフトウェアエンジニア
チペゴは優れた傾聴能力を持ち、それが顧客の問題を理解し、賢明な解決策を提供する助けとなっています。彼は情報技術の学士号を取得後、2023年にIron Softwareチームに加わりました。現在、彼はIronPDFとIronOCRの2つの製品に注力していますが、顧客をサポートする新しい方法を見つけるにつれて、他の製品に関する知識も日々成長しています。Iron Softwareでの協力的な生活を楽しんでおり、さまざまな経験を持つチームメンバーが集まり、効果的で革新的な解決策を提供することに貢献しています。チペゴがデスクを離れているときは、良い本を楽しんだり、サッカーをしていることが多いです。
< 以前
C++でPDFファイルを読み取る方法
次へ >
Puppeteerを使用してNode.jsでHTMLをPDFに変換する方法