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++ ライブラリ」(「wkhtmltopdf C API」としても知られています). このライブラリは、C++アプリケーション内でHTMLコンテンツから直接PDFファイルを生成するため、wkhtmltopdfコマンドラインツールへのC++インターフェースを提供します。 C++でWkhtmltopdfライブラリを使用してHTMLをPDFに変換する手順を詳しく見ていきましょう。

前提条件

C++でPDFファイルを作成するには、次のものが必要です:

  1. システムにインストールされたGCCまたはClangなどのC++コンパイラ。 C++プログラミングをサポートする任意のIDEを使用できます。

  2. wkhtmltopdf ライブラリをダウンロードしてインストールしました。 公式サイトから最新バージョンをダウンロードできますwkhtmltopdfウェブサイトお使いのオペレーティングシステムの指示に従ってインストールしてください。

  3. C++プログラミングの基礎知識。

コード:BlocksでPDFプロジェクトを作成するC++

Code::Blocksでプロジェクトを作成し、その後ライブラリフォルダおよびファイルをリンクするための以下の手順に従ってください。他のIDEを使用している場合、オプションが異なるかもしれませんが、プロジェクトでダウンロードしたライブラリを参照する必要があります。

検索ディレクトリにインクルードフォルダーを追加する

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

  1. メニューバーの「プロジェクト」メニューをクリックし、「ビルドオプション」を選択します。 「デバッグ」を選択してください。

  2. 「ビルドオプション」ダイアログボックスで、「検索ディレクトリ」タブを選択します。

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

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

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

    C++でPDFファイルを作成する方法: 図1

リンカー設定でライブラリをリンクする

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

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

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

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

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

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

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

    C++でPDFファイルを作成する方法: 図2

Wkhtmltopdfを使用してC++でPDFを作成する手順

1. 必要なライブラリを含める

開始するには、まずC++プログラムでwkhtmltopdfライブラリの機能を利用するために必要なヘッダーファイルをインクルードします。 メイン.cppソースコードファイルの冒頭に次のヘッダーファイルを含めてください:

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

GUIコンポーネントを無効にする

GUIを使用していない場合、エラーを回避するためにそれを無効にする必要があります。 コードは次のようになります:

wkhtmltopdf_init(false);
wkhtmltopdf_init(false);
C++

設定とコンバーターの初期化

次に、グローバルおよびオブジェクト設定ポインタを初期化し、その後 wkhtmltopdf コンバーターを初期化する必要があります。

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

コンテンツを追加する

では、新しく作成したPDFドキュメントにコンテンツを挿入するためのHTML文字列を作成しましょう。 コードは次のようになります:

string htmlString = "<html><body><h1>Create a PDF in C++ using WKHTMLTOPDF Library</h1></body></html>";
wkhtmltopdf_add_object(converter, os, htmlString.c_str());
string htmlString = "<html><body><h1>Create a PDF in C++ using WKHTMLTOPDF Library</h1></body></html>";
wkhtmltopdf_add_object(converter, os, htmlString.c_str());
C++

HTML文字列をPDFファイルに変換

Wkhtmltopdfは、HTMLコンテンツをPDFに変換するためのコンバーターメソッドを提供します。 以下にコードスニペットを示します:

wkhtmltopdf_convert(converter);
wkhtmltopdf_convert(converter);
C++

6. メモリバッファとして出力を取得する

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);
C++

PDFファイルを保存

pdfData ポインタは、wkhtmltopdf_converter からの文字ストリームを持つことになります。 PDFファイルに保存するために、まずPDFを保存したいファイルパスを指定します。 次に、出力ファイルストリームを使用して、ファイルをバイナリモードで開き、reinterpret_cast関数を使用して型キャストした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();
C++

メモリの解放

PDFファイルを正常に作成した後、Wkhtmltopdfによって割り当てられたリソースをクリーンアップすることが重要です。そうしないと、メモリリークが発生します。

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

cout << "PDF created successfully." << endl;
wkhtmltopdf_destroy_converter(converter);
wkhtmltopdf_destroy_object_settings(os);
wkhtmltopdf_destroy_global_settings(gs);
wkhtmltopdf_deinit();

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

コードを実行してPDFファイルを生成

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

C++でPDFファイルを作成する方法: 図3

C#でPDFファイルを作成

IronPDF

IronPDFは.NET C#のPDFライブラリで、開発者はHTMLからPDFドキュメントを簡単に作成することができます。 直感的なAPIを提供し、HTMLからPDFファイルを作成するプロセスを簡素化します。

IronPDFは、PDFの操作において堅牢かつ多用途です。 単純なHTML文書からPDFを作成するだけでなく、CSSスタイリング、JavaScriptインタラクション、さらには動的コンテンツを含む複雑なWebページも作成します。 さらに、変換メソッドへの迅速なアクセスにより、さまざまなPDF変換器を開発することができます。

以下はプログラムの一例ですIronPDFでPDFを作成する使用HTML文字列から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");
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");
C++

HTMLコンテンツをPDFとしてレンダリングするために、ChromePdfRendererのインスタンスを作成します。 rendererオブジェクトのRenderHtmlAsPdfメソッドを呼び出し、HTML文字列を渡します。 これによりPDFドキュメントが生成され、その後、SaveAsメソッドを使用してPDFドキュメントを保存します。

C++でPDFファイルを作成する方法: 図4

詳細情報については、IronPDFで様々なリソースからPDFを作成する以下をご覧ください IronPDFのコード例ページ

結論

この記事では、wkhtmltopdf C++ライブラリを使用してC++でPDFを生成する方法を探り、さらにIronPDFを使用してC#でPDFドキュメントを生成する方法も学びました。

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

IronPDFは開発目的で無料ですが、商用利用にはライセンスが必要です。 また、以下を提供します無料試用商業用途で完全な機能をテストするため。 IronPDFをダウンロード自分で試してみてください。

< 以前
C++でPDFファイルを表示する方法
次へ >
C++でPDFファイルを読み取る方法