PDFツール

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

公開済み 2023年7月5日
共有:

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

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

Xpdf コマンドライン ツール

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

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++

コードの説明

上記のコードでは、入力PDFファイルへのパスを保持するため pdfPath 変数を定義しています。実際の入力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
VB   C#

PDFドキュメントの読み方についての詳細情報はIronPDF C# PDFリーディングガイド.

結論

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

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

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

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