-
はじめに
-
JPedalを実行する
-
JPedalの使い方
-
機能
-
JPedal Viewer
- JPedalのBase ViewerでPDFを見る
- カスタマイズ可能なビューアでのPDFファイルを表示する
- JavaのコードからPDF Viewerの機能にアクセス
- Java PDF Viewerでユーザーインターフェイスをカスタマイズ
- ビューアにオブジェクトを描画
- JavaアプリケーションにPDFビューアを追加する方法
- ビューアの機能をカスタマイズする
- JPedalインスペクタでPDFファイルの内容を検査
- PDFビューアの通知ポップアップを独自のものに置き換える
- JPedal のアクセシビリティオプション
- Java PDF Viewerを使ってポートフォリオファイルを表示
- Java PDF Viewerでテキストを選択
- JPedal ViewerはJavaFXで使用できますか?
- JPedal ViewerはSWTで使用できますか?
- JPedal ビューアでダークモードを設定する
- 線の太さを非表示にする
- すべての記事を表示 ( 1 ) 記事を折り畳む
-
テキスト関連
-
画像への変換
-
画像の抽出
-
PDF画像変換のWebサービスAPI
-
フォームについて
-
PDFの注釈(アノテーション)
-
PDFの操作
-
印刷について
-
メタデータ
-
フォントについて
-
JPedalをクラウド上で実行する
-
アップデート情報
構造化されていないテキストの抽出
構造化されたPDFファイルと構造化されていないPDFファイル
PDF ファイルは、構造化された PDF ファイル (ページ構造に関する情報を含む) または構造化されていない PDF ファイル (構造情報を含まず、コンテンツがどのような順序であってもよい) を作成することができます。これはPDFが作成されるときに発生し、非構造化PDFファイルを構造化PDFファイルに変換することはできません。
JPedalは、PDFファイルからテキストコンテンツを抽出するためのいくつかのメソッドを提供しています。この場合、指定した矩形の中からすべてのテキストを抽出することができます。
コマンドラインまたは他の言語からPDFからテキストを抽出する
java --module-path . --add-modules com.idrsolutions.jpedal org/jpedal/examples/text/ExtractTextInRectangle
"inputFileOrDir" "outputDir"
Java 11以降のモジュールを推奨します。古いバージョンを使用している場合は、クラスパスを使用する必要があります。
API利用例-XMLへの書き出し
ExtractTextInRectangle extract = new ExtractTextInRectangle("C:/pdfs/mypdf.pdf");
extract.setOutputFormat(OUTPUT_FORMAT.XML);
//extract.setEstimateParagraphs(true); //文書内の段落を推定
//extract.setPassword("password");
if (extract.openPDFFile()) {
int pageCount = extract.getPageCount();
for (int page = 1; page <= pageCount; page++) {
String text = extract.getTextOnPage(page);
//オルタナティブ
//座標はx1、y1(左上)、x2、y2(右下)。
//String text = extract.getTextOnPage(page, x1, y1, x2, y2);
}
}
extract.closePDFfile();
API利用例-プレーンテキストへの書き出し
ExtractTextInRectangle extract = new ExtractTextInRectangle("C:/pdfs/mypdf.pdf");
extract.setOutputFormat(OUTPUT_FORMAT.TXT);
//extract.setEstimateParagraphs(true); //文書内の段落の見積もり
//extract.setPassword("password");
if (extract.openPDFFile()) {
int pageCount = extract.getPageCount();
for (int page = 1; page <= pageCount; page++) {
String text = extract.getTextOnPage(page);
//オルタナティブ
//座標はx1、y1(左上)、x2、y2(右下)。
//String text = extract.getTextOnPage(page, x1, y1, x2, y2);
}
}
extract.closePDFfile();
Java で PDF からテキストを抽出
//プレーンテキストの抽出
ExtractTextInRectangle.writeAllTextToDir("inputFileOrDirectory", "password_or_null", "outputDir", -1, OUTPUT_FORMAT.TXT, false);
//テキストをXMLとして抽出
ExtractTextInRectangle.writeAllTextToDir("inputFileOrDirectory", "password_or_null", "outputDir", -1, OUTPUT_FORMAT.XML, false);
この例ではJPedal ExtractTextInRectangleクラスを使用しています。ExtractTextInRectangleはページごとにtxtファイルを出力します。
抽出して出力する
出力を抽出する際に注意すべき点は、PDF ページ上のテキストは構造化されていない可能性があるということです。構造化 さ れていない文書には、 内容がどのようにレイアウトされているか、 またはページに追加されているかについての詳細情報が含まれていません。例えば、 ページ上のすべての文字 「a」 が追加 さ れていて、 次にすべての文字 「b」 が 追加 されている、というようなケースがあります。
これを処理するために、ExtractTextInRectangleは、それが抽出されるときに矩形内に表示されるように、このコンテンツを順序付けしようとします。
テキストの方向
ページ (または選択領域) に複数の向き (HORIZONTAL_LEFT_TO_RIGHT ・ HORIZONTAL_RIGHT_TO_LEFT ・ VERTICAL_TOP_TO_BOTTOM ・ VERTICAL_BOTTOM_TO_TOP) を持つテキストが含まれている場合、 最も一般的な向きのテキストだけが抽出され、それ以外のテキストは無視されます。
使用される座標
抽出方式はすべて、指定された矩形内の PDF テキストを抽出します。この矩形の座標の 必須フォーマットは x1, y1 (左上隅) と x2, y2 (右下隅)です。ページ原点は左下(Java とは逆)です。