
画像の個数を取得PDFページ毎に画像エレメントの個数を取得して一覧にします。
指定したPDFを読み込み、各ページに含まれる画像エレメントの数を一覧にして表示します。
PtlPage.APIgetContent(): ページコンテントを取得
PtlContent.APIgetEditElements(int flag): flagで指定されたEditElementコンテナを取得
flagは次表のint型定数の論理和で指定します。
| 定数フィールド | 説明 |
|---|---|
| PtlContent.GET_ALL | 全てのエレメント |
| PtlContent.GET_IMAGE | 画像 |
| PtlContent.GET_PATH | パスデータ |
| PtlContent.GET_SHADING | シェイディング |
| PtlContent.GET_TEXT | テキスト |
PtlEditElements.APIgetCount():EditElement数を取得
package cookbook;
import jp.co.antenna.ptl.*;
public class CountImage {
// そのクラスのusageを表示する関数
private static void printUsage() {
System.out.println("usage: java CountImage in-pdf-file");
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
if (args.length < 1) {
printUsage();
return;
}
try (PtlParamInput inputFile = new PtlParamInput(args[0]);
PtlPDFDocument doc = new PtlPDFDocument()) {
// PDFファイルをロードします。
doc.load(inputFile);
try (PtlPages pages = doc.getPages()) { // ページコンテナの取得
// ページコンテナが空かどうか
if (pages.isEmpty()) {
System.out.println("ページコンテナが空");
return;
}
// ページ数を取得
int wholePageNum = doc.getPageCount();
System.out.println("このPDFに含まれる画像の数をページごとに表示します。");
// 各ページの取得(index番号は0が先頭のためi=0からスタートさせる)
for(int i = 0; i < wholePageNum; i++){
try (PtlPage page = pages.get(i)) {
// 画像抽出
countImage(page, i+1);
}
}
}
}
...【ExtractText.javaと同じ処理のため省略
・エラーメッセージ処理と出力】...
}
public static void countImage(PtlPage page, int pageNum)
throws PtlException, Exception, Error {
// ページコンテント及びそのページコンテントの画像エレメントの取得
try (PtlContent content = page.getContent();
PtlEditElements elems = content.getEditElements(PtlContent.GET_IMAGE)) {
System.out.printf("%4dページ目 … 画像の数:%3d個\n",
pageNum, elems.getCount());
}
}
}
CountImage.java
C:\samples>java cookbook.CountImage usage: java CountImage in-pdf-file C:\samples>java cookbook.CountImage countImage.pdf このPDFに含まれる画像の数をページごとに表示します。 1ページ目 … 画像の数: 2個 2ページ目 … 画像の数: 2個 3ページ目 … 画像の数: 4個 -- 完了 --