フッターコンテンツにスキップ
PDF ツール

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

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

WKHTMLTOPDFライブラリ

wkhtmltopdfは、HTMLのプレーンテキストページを高品質なPDFドキュメントにシームレスに変換するオープンソースのコマンドラインツールです。 この機能をC++プログラム内で活用することで、簡単にHTML文字列のコンテンツをPDF形式に変換できます。 wkhtmltopdfライブラリを使用し、C++で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. 適切なC++コンパイラとビルドターゲットを選択し、例えばデバッグやリリース。 「完了」をクリックしてプロジェクトを作成します。

検索ディレクトリの設定

Code::Blocksが必要なヘッダーファイルを見つけられるようにするために、検索ディレクトリを設定する必要があります。

  1. メニューバーの「プロジェクト」メニューをクリックして「ビルドオプション」を選択します。 「デバッグ」を選択していることを確認してください。
  2. 「ビルドオプション」ダイアログボックスで、「検索ディレクトリ」タブを選択します。
  3. 「コンパイラ」タブの下、「追加」ボタンをクリックします。
  4. wkhtmltoxヘッダーファイルが格納されているディレクトリ(例:C:\Program Files\wkhtmltopdf\include)を参照し、選択します。
  5. 最後に、「OK」をクリックしてダイアログボックスを閉じます。

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

ライブラリのリンク

wkhtmltoxライブラリにリンクするには、以下のステップに従ってください。

  1. 再度メニューバーの「プロジェクト」メニューをクリックして「ビルドオプション」を選択します。 「デバッグ」を選択していることを確認してください。
  2. 「ビルドオプション」ダイアログボックスで「リンカー設定」タブを選択します。
  3. 「リンクライブラリ」タブの下、「追加」ボタンをクリックします。
  4. wkhtmltoxライブラリファイルが格納されているディレクトリ(例:C:\Program Files\wkhtmltopdf\lib)を参照し、適切なライブラリファイルを選択します。
  5. 「開く」をクリックしてライブラリをプロジェクトに追加します。
  6. 最後に、「OK」をクリックしてダイアログボックスを閉じます。

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

Steps to Easily Convert HTML to PDF in 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>
C++

ステップ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);
C++

ステップ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());
C++

ステップ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;
}
C++

ステップ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);
C++

ステップ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();
C++

ステップ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;
C++

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

プロジェクトをビルドし、F9を使用してコードを実行します。出力が生成され、プロジェクトフォルダーに保存されます。 結果として得られるPDFは次のようになります。

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

HTMLファイルからC#でPDFファイルへ

IronPDF

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

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

次にC#でIronPDFを使用して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")
$vbLabelText   $csharpLabel

PDF出力:

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

さまざまなHTMLファイル、ウェブページURL、画像をPDFに変換する方法の詳細については、このHTML to PDFコード例を参照してください。

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

IronPDFは開発目的のために無料ですが、商業利用にはライセンスが必要です。 商業利用のためにその完全な機能を試用するためのIronPDFのフル機能の無料試用版も提供しています。 ソフトウェアはIronPDFをダウンロードから入手できます。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。