PDF文書は、クロスプラットフォームでの安定性とフォーマットの保持性に優れているため、情報交換の主要な手段として広く利用されています。しかし、PDFファイルはコンテナ形式の特性上、内部リソースの効率的な抽出が技術的な課題となっています。特に、埋め込み画像のような非構造化データの取得ニーズはますます高まっています。プログラムによる自動抽出を実現することで、従来の手動キャプチャによる作業効率の限界を突破し、データアーカイブ、マルチメディアリソース管理、文書のインテリジェント解析など、より高度な用途に対応することができます。本記事では、.NETプラットフォームでC#を使用してPDF文書から画像を抽出する方法を紹介し、PDF画像の再利用を容易にする手法を解説します。
本記事で使用する方法は、無料のFree Spire.PDF for .NETライブラリを利用します。NuGetパッケージのインストール方法:PM> Install-Package FreeSpire.PDF
。
C#でPDF文書からすべての画像を抽出する方法
ライブラリのPdfImageHelper
クラスを使用すると、PDF文書内の画像を抽出できます。まず、PdfImageHelper.GetImagesInfo(PdfPageBase)
メソッドを使用して、PDFページ内の画像情報をPdfImageInfo
コレクションとして取得します。その後、PdfImageInfo.Image.Save()
メソッドを用いて、抽出した画像を指定の場所に保存します。以下は操作手順です:
-
PdfDocument
オブジェクトを作成し、PdfDocument.LoadFromFile()
メソッドでPDF文書を読み込みます。 -
PdfImageHelper
オブジェクトを作成し、画像情報の取得に使用します。 - 文書内のすべてのページをループ処理し、
PdfDocument.Pages[]
プロパティで各ページを取得します。 -
PdfImageHelper.GetImagesInfo()
メソッドを使用して、現在のページの画像情報をPdfImageInfo
コレクションとして取得します。 -
PdfImageInfo.Image.Save()
メソッドで、抽出した画像を指定の場所に保存します。 - リソースを解放します。
コード例
using Spire.Pdf;
using Spire.Pdf.Utilities;
using System.Drawing;
namespace PDFの画像を抽出
{
class Program
{
static void Main(string[] args)
{
// PdfDocumentインスタンスを作成
PdfDocument pdf = new PdfDocument();
// PDFドキュメントを読み込む
pdf.LoadFromFile("Sample.pdf");
// PdfImageHelperオブジェクトを作成
PdfImageHelper imageHelper = new PdfImageHelper();
// PDFドキュメント内のページを順に処理
for (int i = 0; i < pdf.Pages.Count; i++)
{
// 現在のページを取得
PdfPageBase page = pdf.Pages[i];
// 現在のページに含まれる画像情報を取得
PdfImageInfo[] imageInfos = imageHelper.GetImagesInfo(page);
// ページ内の画像を順に処理
for (int j = 0; j < imageInfos.Length; j++)
{
// 現在の画像を保存
imageInfos[j].Image.Save($"Images/Page{i + 1}-Image{j + 1}.png");
}
}
// リソースを解放
pdf.Dispose();
}
}
}
本記事では、.NETプラットフォームでC#を使用してPDF文書からすべての画像を抽出する方法について解説しました。