PDFツール

C++でPDFファイルを読み取る方法

更新済み 7月 5, 2023
共有:

PDF (ポータブルドキュメントフォーマット) ファイルはドキュメント交換で広く使用されており、その内容をプログラムで読み取る能力はさまざまなアプリケーションにおいて貴重です。 以下のライブラリがC++でPDFを読み取るために利用可能です:Poppler、Mupdf、Haru free PDF library、Xpdf、Qpdf。

この記事では、Xpdfコマンドラインツールを使用してC++でPDFファイルを読み取る方法のみを探ります。 Xpdfは、PDFファイルのテキスト内容を抽出するなど、PDFファイルを操作するためのさまざまなユーティリティを提供しています。 XpdfをC++プログラムに統合することで、PDFファイルからテキストを抽出し、プログラム的に処理することができます。

Xpdf コマンドライン ツール

Xpdf は、PDFを操作するためのツールとライブラリのコレクションを提供するオープンソースのソフトウェアスイートです。 (ポータブルドキュメントフォーマット) ファイル Xpdfスイートには、PDF関連の機能(パース、レンダリング、テキスト抽出など)を可能にするコマンドラインユーティリティやC++ライブラリが含まれています。 Xpdf の主なコンポーネントには次のものが含まれます: pdfimages, pdftops, pdfinfo, pdfimages. ここでは、PDF ドキュメントを読み取るために pdftotext を使用します。

pdftotextは、PDFファイルからテキストコンテンツを抽出し、それをプレーンテキストとして出力するコマンドラインツールです。 このツールは、さらなる処理や分析のためにPDFからテキスト情報を抽出する際に特に役立ちます。 オプションを使用して、テキストを抽出するページまたはページを指定することもできます。

前提条件

テキストを抽出するためのPDFリーダープロジェクトを作成するには、次の前提条件を整える必要があります:

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

  2. お使いのシステムにインストールされたXpdfコマンドラインツール。 Xpdfは、Xpdfのウェブサイトから入手できるPDFユーティリティのコレクションです。こちらからダウンロードしてください: https://www.xpdfreader.com/。 環境変数パスにXpdfのbinディレクトリを設定し、コマンドラインツールを使ってどこからでもアクセスできるようにします。

C++でPDFファイル形式を読む手順

ステップ 1 必要なヘッダーのインクルード

まず、main.cppファイルの上部に必要なヘッダーファイルを追加しましょう:

#include <cstdlib>
#include <iostream>
#include <fstream>

ステップ 2 C++ コードの作成

C++のコードを書いて、Xpdfコマンドラインツールを呼び出し、PDFドキュメントからテキストコンテンツを抽出しましょう。 以下のinput.pdfファイルを使用します。

C++でPDFファイルを読み取る方法:図1

コード例は次のようになります:

// Include C library
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <cstdio>

using namespace std;

int main() {
    string pdfPath = "input.pdf";
    string outputFilePath = "output.txt";

    string command = "pdftotext " + pdfPath + " " + outputFilePath;
    int status = system(command.c_str());

    if (status == 0) {
        cout << "Text extraction successful." << endl;
    } else {
        cout << "Text extraction failed." << endl;
        return 1;
    }

    ifstream outputFile(outputFilePath);
    if (outputFile.is_open()) {
        string textContent;
        string line;
        while (getline(outputFile, line)) {
            textContent += line + "\n";
        }
        outputFile.close();

        cout << "Text content extracted from PDF document:" << endl;
        cout << textContent << endl;
    } else {
        cout << "Failed to open output file." << endl;
        return 1;
    }

    return 0;
}

コードの説明

上記のコードでは、入力PDFファイルへのパスを保持するため pdfPath 変数を定義しています。実際の入力PDFドキュメントの適切なパスに置き換えてください。

また、Xpdfによって生成される出力テキストファイルのパスを保持するために、outputFilePath変数を定義します。

コードは、system 関数を使用して pdftotext コマンドを実行し、入力PDFファイルのパスと出力テキストファイルのパスをコマンドライン引数として渡します。 status 変数はコマンドの終了ステータスをキャプチャします。

pdftotext が正常に実行された場合 (ステータスが0で示される)出力テキストファイルを ifstream を使って開きます。 次に、テキストコンテンツを行ごとに読み取り、それを textContent 文字列に保存します。

最後に、生成された出力ファイルから抽出されたテキストコンテンツをコンソールに出力します。 プログラムの最後に、編集可能な出力テキストファイルが不要であったり、ディスクスペースを解放したい場合は、メイン関数を終了する前に以下のコマンドを使用してこれを削除してください:

remove(outputFilePath.c_str());

ステップ3 プログラムのコンパイルと実行

C++コードをコンパイルして実行ファイルを実行してください。 pdftotext が環境変数システムパスに追加されると、そのコマンドは正常に実行されます。 プログラムは出力テキストファイルを生成し、PDFドキュメントからテキストコンテンツを抽出します。 抽出されたテキストは、コンソールに表示されます。

出力は次の通りです

C++でPDFファイルを読む方法: 図2

C#でPDFファイルを読む

IronPDFライブラリ

IronPDF は、PDFドキュメントを操作するための強力な機能を提供する人気のあるC# PDFライブラリです。 これは開発者がプログラムを通じてPDFファイルを作成、編集、変更、および読み取りを行うことを可能にします。

IronPDFライブラリを使用してPDFドキュメントを読むことは、簡単なプロセスです。 ライブラリーは、開発者がPDFページからテキスト、画像、メタデータ、その他のデータを抽出するためのさまざまなメソッドとプロパティを提供します。 抽出された情報は、アプリケーション内でさらに処理、分析、または表示するために使用できます。

次のコード例は PDFファイルを読み取る IronPDFを使用してフォーマット:

//Rendering PDF documents to Images or Thumbnails
using IronPdf;
using IronSoftware.Drawing;
using System.Collections.Generic;

// Extracting Image and Text content from Pdf Documents

// open a 128 bit encrypted PDF
var pdf = PdfDocument.FromFile("encrypted.pdf", "password");

// Get all text to put in a search index
string text = pdf.ExtractAllText();

// Get all Images
var allImages = pdf.ExtractAllImages();

// Or even find the precise text and images for each page in the document
for (var index = 0 ; index < pdf.PageCount ; index++)
{
    int pageNumber = index + 1;
    text = pdf.ExtractTextFromPage(index);
    List<AnyBitmap> images = pdf.ExtractBitmapsFromPage(index);
    //...
}

PDFドキュメントの読み取り方法に関する詳細情報については、リンクをご覧ください これ.

結論

この記事では、Xpdfコマンドラインツールを使用してC++でPDFドキュメントの内容を読み取る方法を学びました。 XpdfをC++プログラムに統合することで、PDFファイルからテキストコンテンツをプログラム的に1秒以内に抽出できます。 このアプローチにより、C++アプリケーション内で抽出されたテキストの処理および分析が可能になります。

IronPDF は、PDFファイルの読み取りと操作を容易にする強力なC#ライブラリです。 その広範な機能、使いやすさ、信頼性の高いレンダリングエンジンにより、C#プロジェクトでPDFドキュメントを扱う開発者の間で人気の選択肢となっています。

IronPDFは開発用に無料で提供されており、 無料試用 商用利用のために。 これに加えて、次の点になる必要があります。 ライセンス済み 商業目的で。

< 以前
C++でPDFファイルを作成する方法
次へ >
C++でHTMLをPDFに変換する方法

準備はできましたか? バージョン: 2024.9 新発売

無料のNuGetダウンロード 総ダウンロード数: 10,659,073 View Licenses >