2.1.1 画像個数の取得

2-1-第1項画像個数の取得

狙い・効果

画像の個数を取得PDFページ毎に画像エレメントの個数を取得して一覧にします。

処理の概要

指定したPDFを読み込み、各ページに含まれる画像エレメントの数を一覧にして表示します。

PDF Tool APIの主な機能

PtlPage.APIgetContent(): ページコンテントを取得

PtlContent.APIgetEditElements(int flag): flagで指定されたEditElementコンテナを取得

flagは次表のint型定数の論理和で指定します。

表2・1 取得するエレメントの種類
定数フィールド説明
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個
-- 完了 --