PDFツール

C++でPDFファイルを表示する方法

PDFファイルは、異なるプラットフォーム間でフォーマットを保持できるため、文書交換に広く使用されている形式です。 さまざまなアプリケーションにおいて、プログラムによってPDFファイルの内容を読み取ることは非常に価値があります。

この記事では、Xpdf コマンドラインツールを使用して C++ で PDF ファイルからテキストを見る方法を学びます。 Xpdf は、PDF ファイルを操作するためのコマンドラインユーティリティと C++ ライブラリのスイートを提供しており、テキストの抽出を含みます。 C++ PDF ビューアープログラムに Xpdf を統合することで、PDF ファイルからテキストコンテンツを効率的に表示し、プログラムで処理することができます。

Xpdf - C++ ライブラリとコマンドラインツール

Xpdf は、PDFファイルを扱うためのツールとライブラリを提供するオープンソースのソフトウェアスイートです。 コマンドラインユーティリティや、解析、レンダリング、印刷、テキスト抽出などのPDF関連機能を可能にするC++ライブラリが含まれています。 Xpdf のコマンドラインツールも、ターミナルから直接 PDF ファイルを表示する方法を提供しています。

Xpdfの主要なコンポーネントの1つはpdftotextであり、主にPDFファイルからテキストコンテンツを抽出することで知られています。 しかし、pdftopspdfimagesといった他のツールと組み合わせて使用すると、Xpdfはユーザーに異なる方法でPDFコンテンツを表示させることができます。 pdftotextツールは、PDFからテキスト情報を抽出してさらに処理や分析するのに役立ち、抽出するページを指定するオプションを提供します。

前提条件

事前準備として、以下の要件を確保してください:

  1. システムにインストールされたGCCまたはClangなどのC++コンパイラ。 この目的のためにCode::Blocks IDEを使用します。

  2. Xpdf コマンドラインツールは、コマンドラインからインストールされ、アクセス可能です。Xpdfをダウンロードして、あなたの環境に適したバージョンをインストールしてください。 その後、Xpdfのbinディレクトリをシステム環境変数のパスに設定し、ファイルシステム上の任意の場所からアクセスできるようにします。

PDFビューアープロジェクトの作成

  1. Code::Blocksを開く: コンピュータ上でCode::Blocks IDEを起動します。

  2. 新しいプロジェクトを作成する: 上部メニューから「ファイル」をクリックし、ドロップダウンメニューから「新規」を選択します。 次に、サブメニューから「プロジェクト」をクリックしてください。

  3. プロジェクトタイプを選択: 「テンプレートから新規作成」ウィンドウで「コンソールアプリケーション」を選択し、「Go」をクリックします。 「C/C++」言語を選択し、「次へ」をクリックします。

  4. プロジェクトの詳細を入力してください: 「プロジェクトタイトル」フィールドに、プロジェクトの名前を入力してください(例:「PDFViewer」)。 プロジェクトファイルを保存する場所を選択し、「次へ」をクリックしてください。

  5. コンパイラを選択: プロジェクトで使用するコンパイラを選択します。 デフォルトでは、Code::Blocksはシステム上で使用可能なコンパイラを自動的に検出したはずです。 そうでない場合は、リストから適切なコンパイラを選択し、「完了」をクリックしてください。

C++でPDFのテキストを表示する手順

必要なヘッダーを含んでください

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

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

入力パスと出力パスを設定

string pdfPath = "input.pdf";
string outputFilePath = "output.txt";
string pdfPath = "input.pdf";
string outputFilePath = "output.txt";
C++

main 関数では、2 つの文字列、pdfPathoutputFilePath を宣言します。 pdfPath は入力PDFファイルへのパスを格納し、outputFilePath は抽出されたテキストがプレーンテキストファイルとして保存されるパスを格納します。

入力ファイルは以下の通りです:

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

pdftotext コマンドを実行する

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

ここでは、pdfPathoutputFilePath 変数を使用して、PDFファイルを開き、その内容を表示するために pdftotext コマンドを構築しました。 その後、system 関数が呼び出されてコマンドを実行し、その戻り値が status 変数に格納されます。

テキスト抽出のステータスを確認

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

私たちはstatus変数を確認してpdftotextコマンドが正常に実行されたかどうかを確認します。 statusが0に等しい場合、それはテキストの抽出が成功したことを意味し、成功メッセージを表示します。 statusがゼロ以外の場合、それはエラーを示しており、エラーメッセージを表示します。

抽出されたテキストを読み取り、表示する

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:" << endl;
    cout << textContent << endl;
} else {
    cout << "Failed to open output file." << endl;
}
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:" << endl;
    cout << textContent << endl;
} else {
    cout << "Failed to open output file." << endl;
}
C++

上記のサンプルコードでは、outputFilepdftotextによって生成されたテキストファイル)を開き、その内容を行ごとに読み込み、textContent文字列に格納します。 最後に、ファイルを閉じて、抽出されたテキストコンテンツをコンソールに表示します。

出力ファイルの削除

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

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

プログラムのコンパイルと実行

「Ctrl+F9」ショートカットキーを使用してコードをビルドします。 コンパイルが成功すると、実行ファイルを実行することで指定されたPDFドキュメントからテキストコンテンツを抽出し、コンソールに表示します。 出力は以下の通りです:

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

C#でPDFファイルを表示

IronPDF .NET C# ライブラリ は、ユーザーがC#アプリケーション内でPDFファイルを簡単に表示することを可能にする強力な.NET C# PDFライブラリです。 Chromiumウェブブラウザーエンジンを活用して、IronPDFは画像、フォント、および複雑なフォーマットを含むPDFコンテンツを正確にレンダリングおよび表示します。 ユーザーフレンドリーなインターフェースと豊富な機能を備えたIronPDFをC#プロジェクトにシームレスに統合することで、ユーザーはPDFドキュメントを効率的かつインタラクティブに閲覧することができます。 IronPDFはレポート、請求書、その他のPDFコンテンツの表示など、C#で機能豊富なPDFビューアを作成するための堅牢なソリューションを提供します。

Visual StudioでIronPDF NuGetパッケージをインストールするには、次の手順に従ってください:

  1. Visual Studioを開く: Visual Studioまたはお好みの他のIDEを起動します。

  2. プロジェクトを作成または開く: 新しい C# プロジェクトを作成するか、IronPDF パッケージをインストールしたい既存のプロジェクトを開きます。

  3. NuGet パッケージ マネージャーを開く: Visual Studio で、「ツール」 > 「NuGet パッケージ マネージャー」 > 「ソリューションの NuGet パッケージを管理」を選択します。 代わりに、ソリューションエクスプローラーをクリックして、「ソリューションの NuGet パッケージの管理」を選択してください。

  4. IronPDFの検索: 「NuGetパッケージマネージャー」ウィンドウで「参照」タブをクリックし、検索バーに「IronPDF」と入力して検索してください。 または、NuGet IronPDF パッケージを訪れて、「IronPDF」の最新バージョンを直接ダウンロードしてください。

  5. IronPDF パッケージを選択: 「IronPDF」パッケージを見つけ、プロジェクトに選択するためにクリックします。

  6. IronPDF のインストール: 選択したパッケージをインストールするには、「インストール」ボタンをクリックしてください。

  7. ただし、次のコマンドを使用して、NuGetパッケージマネージャーコンソールを使用してIronPDFをインストールすることもできます:
    :ProductInstall
    :ProductInstall
SHELL

IronPDFを使用すると、PDFドキュメントからテキストや画像を抽出し、それらをコンソールで表示して確認することができます。 以下のコードはこのタスクを達成するのに役立ちます:

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);
    //...
}
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);
    //...
}
Imports IronPdf
Imports IronSoftware.Drawing
Imports System.Collections.Generic

' Extracting Image and Text content from Pdf Documents

' open a 128-bit encrypted PDF
Private pdf = PdfDocument.FromFile("encrypted.pdf", "password")

' Get all text to put in a search index
Private text As String = pdf.ExtractAllText()

' Get all Images
Private allImages = pdf.ExtractAllImages()

' Or even find the precise text and images for each page in the document
For index = 0 To pdf.PageCount - 1
	Dim pageNumber As Integer = index + 1
	text = pdf.ExtractTextFromPage(index)
	Dim images As List(Of AnyBitmap) = pdf.ExtractBitmapsFromPage(index)
	'...
Next index
$vbLabelText   $csharpLabel

詳細な情報については、IronPDF ドキュメントをご覧ください。

結論

この記事では、Xpdf コマンドラインツールを使用してC++でPDF文書の内容を抽出および表示する方法を学びました。 このアプローチにより、C++ アプリケーション内で抽出されたテキストをシームレスに処理および分析できます。

IronPDF ライセンス情報は開発目的で無料で使用できますが、生成されたPDFには透かしが入ります。 ウォーターマークを取り除き、商用目的でIronPDFを使用するには、ライセンスを購入してください。

商業目的でテストするための無料試用ライセンスも利用可能です。

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