PDFツール

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

PDF(Portable Document Format)は文書交換に広く使用されており、その内容をプログラムによって読み取ることができるのは様々なアプリケーションにおいて貴重です。 C#でPDFを読むために以下のライブラリが利用可能です:Poppler、Mupdf、HaruフリーPDFライブラリ、Xpdf、Qpdf。

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

Xpdf コマンドライン ツール

Xpdfは、PDF (Portable Document Format) ファイルを操作するためのツールとライブラリを提供するオープンソースのソフトウェアスイートです。 Xpdfスイートには、PDF関連の機能(パース、レンダリング、テキスト抽出など)を可能にするコマンドラインユーティリティやC++ライブラリが含まれています。 Xpdfの主なコンポーネントには、pdfimagespdftopspdfinfo、およびpdfimagesが含まれます。 ここでは、pdftotextを使用してPDFドキュメントを読み取ります。

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

前提条件

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

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

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

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

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

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

#include <cstdlib>
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <iostream>
#include <fstream>
C++

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

コードの説明

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

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

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

pdftotextが正常に実行されると(ステータスが0で示されます)、ifstreamを使用して出力されたテキストファイルを開きます。 次に、テキスト内容を行ごとに読み込み、textContent 文字列に保存します。

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

remove(outputFilePath.c_str());
remove(outputFilePath.c_str());
C++

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

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

出力は次の通りです

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

C#でPDFファイルを読む

IronPDFライブラリ

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

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

次のコード例は、IronPDFを使用してPDFファイルを読み取ります

// 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);
    //...
}
// 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);
    //...
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

PDF ドキュメントの読み取り方法に関する詳細情報については、IronPDF C# PDF 読み取りガイドをご覧ください。

結論

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

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

IronPDFは開発用に無料で、商用利用向けの無料体験版を提供しています。 これを超えて、商業目的でライセンスを取得する必要があります。

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