PDF からテキストや画像を抽出すると、Word 文書、Web ページ、プレゼンテーションなど、他の種類のファイルでこれらのコンテンツをすばやく再利用できます。この方法は、情報を最初から入力するなど、煩雑で時間のかかるプロセスを回避することができます。そのため、多くの時間と労力を節約するのに役立ちます。この記事では、Spire.PDF for C++ を使用して C++ で PDF からテキストと画像を抽出する方法について説明します。
Spire.PDF for C++ をインストールします
Spire.PDF for C++ をアプリケーションに組み込むには、2つの方法があります。一つは NuGet 経由でインストールする方法、もう一つは当社のウェブサイトからパッケージをダウンロードし、ライブラリをプログラムにコピーする方法です。NuGet 経由のインストールの方が便利で、より推奨されます。詳しくは、以下のリンクからご覧いただけます。
Spire.PDF for C++ を C++ アプリケーションに統合する方法
PDF からテキストを抽出する
Spire.PDF for C++ には、PDF ファイル内のページからテキストを抽出できる PdfPageBase->ExtractText() メソッドが用意されています。詳細な手順は次のとおりです。
- PdfDocument クラスのインスタンスを初期化します。
- PdfDocument->LoadFromFile() メソッドを使用して PDF ファイルをロードします。
- ファイル内のすべてのページをループします。
- PdfPageBase->ExtractText() メソッドを使用してページからテキストを抽出します。
- 抽出したテキストを .txt ファイルに保存します。
- C++
#include "Spire.Pdf.o.h"
#include <locale>
#include <codecvt>
using namespace Spire::Pdf;
using namespace std;
int main()
{
//PdfDocumentクラスのインスタンスを初期化する
PdfDocument* doc = new PdfDocument();
//PDFファイルをロードする
doc->LoadFromFile(L"sample.pdf");
wstring buffer = L"";
//ファイル内のすべてのページをループする
for (int i = 0; i < doc->GetPages()->GetCount(); i++)
{
PdfPageBase* page = doc->GetPages()->GetItem(i);
//ページからテキストを抽出する
buffer += (page->ExtractText());
}
//抽出したテキストを.txtファイルに保存する
wofstream write(L"ExtractText.txt");
auto LocUtf8 = locale(locale(""), new std::codecvt_utf8<wchar_t>);
write.imbue(LocUtf8);
write << buffer;
write.close();
doc->Close();
delete doc;
}
PDF の特定のページ領域からテキストを抽出する
Page->ExtractText(RectangleF* rectangleF) メソッドを使用して、PDF ページの特定の矩形領域からテキストを抽出できます。詳細な手順は次のとおりです。
- PdfDocument クラスのインスタンスを初期化します。
- PdfDocument->LoadFromFile() メソッドを使用して PDF ファイルをロードします。
- PdfDocument->GetPages()->GetItem(int index) メソッドを使用して、インデックスで特定のページを取得します。
- Page-> ExtractText(RectangleF* rectangleF) メソッドを使用して、ページの特定の矩形領域からテキストを抽出します。
- 抽出したテキストを.txtファイルに保存します。
- C++
#include "Spire.Pdf.o.h"
#include <locale>
#include <codecvt>
using namespace Spire::Pdf;
using namespace std;
int main()
{
//PdfDocumentクラスのインスタンスを初期化する
PdfDocument* doc = new PdfDocument();
//PDFファイルをロードする
doc->LoadFromFile(L"sample.pdf");
//最初のページを取得する
PdfPageBase* page = doc->GetPages()->GetItem(0);
//ページ内の特定の矩形領域からテキストを抽出する
wstring text = page->ExtractText(new RectangleF(0, 0, 600, 280));
//抽出したテキストを.txtファイルに保存する
wofstream write(L"ExtractTextFromPageArea.txt");
auto LocUtf8 = locale(locale(""), new std::codecvt_utf8<wchar_t>);
write.imbue(LocUtf8);
write << text;
write.close();
doc->Close();
delete doc;
}
PDF から画像を抽出する
PdfPageBase->ExtractImages() メソッドを使用して、PDF ファイル内のページから画像を抽出できます。詳細な手順は次のとおりです。
- PdfDocument クラスのインスタンスを初期化します。
- PdfDocument->LoadFromFile() メソッドを使用して PDF ファイルをロードします。
- ファイル内のすべてのページをループします。
- PdfPageBase->ExtractImages() メソッドを使用してページから画像を抽出します。
- 抽出した画像を PNG ファイルに保存します。
- C++
#include "Spire.Pdf.o.h"
#include <locale>
#include <codecvt>
using namespace Spire::Pdf;
using namespace std;
int main()
{
//PdfDocumentクラスのインスタンスを初期化する
PdfDocument* doc = new PdfDocument();
//PDFファイルをロードする
doc->LoadFromFile(L"sample.pdf");
int index = 0;
//ファイル内のすべてのページをループする
for (int i = 0; i < doc->GetPages()->GetCount(); i++)
{
PdfPageBase* page = doc->GetPages()->GetItem(i);
//ページから画像を抽出する
for (auto image : page->ExtractImages())
{
std::wstring imageFileName = L"Images\\Image-" + to_wstring(index) + L".png";
image->Save(imageFileName.c_str(), ImageFormat::GetPng());
index++;
}
}
doc->Close();
delete doc;
}
一時ライセンスを申請する
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。