
ダウンサンプリングを行うPPI値これ以上のPPIならダウンサンプリングを行うというPPI値を指定します。
これ以上のPPIならダウンサンプリングを行うというPPI値を指定し、2.2.1 カラー画像最適化オプションの取得・指定と同様にして最適化します。これにより、指定された解像度よりも低い画像データをダウンサンプリングしないよう指定できます。
PtlParamOptimizeImageDownSampling.APIsetSourcePPI(int ppi): これ以上のPPIならダウンサンプリングを行うPPI値を設定
設定しない場合はデフォルト値として次表の値が使用されます。
| 画像の種類 | 値 | 
|---|---|
| カラー画像 | 225 | 
| グレースケール画像 | 225 | 
| モノクロ画像 | 450 | 
package cookbook;
import jp.co.antenna.ptl.*;
public class OptimizeImageSetSourcePPI {
    // そのクラスのusageを表示する関数
    private static void printUsage() {
        System.out.println("usage: java OptimizeImageSetSourcePPI in-pdf-file" +
                           " out-pdf-file source-PPI");
    }
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        if (args.length < 3) {
            printUsage();
            return;
        }
        // コマンドライン引数の取得
        int sourcePPI = Integer.parseInt(args[2]);
        try (PtlParamInput inputFile = new PtlParamInput(args[0]);
             PtlParamOutput outputFile = new PtlParamOutput(args[1]);
             PtlPDFDocument doc = new PtlPDFDocument()) {
            // PDFファイルをロードします。
            doc.load(inputFile);
            // 画像の最適化を行います。
            optimizeDocSetSourcePPI(doc, sourcePPI);
            // ファイルに保存します。
            doc.save(outputFile);
        }
        catch (PtlException pex) {
            System.out.println("PtlException : ErrorCode = " + pex.getErrorCode() +
                               "\n  " + pex.getErrorMessage());
        }
        catch (Exception ex) {
            System.out.println(ex.getMessage());
            ex.printStackTrace();
        }
        catch (Error ex) {
            System.out.println(ex.getMessage());
            ex.printStackTrace();
        }
        finally {
            System.out.println("-- 完了 --");
        }
    }
    public static void optimizeDocSetSourcePPI(PtlPDFDocument doc,
                                               int sourcePPI)
        throws PtlException{
        try(PtlParamOptimize paramOptimize = new PtlParamOptimize();
            // 画像最適化パラメーターの取得
            // カラー画像最適化パラメーターの取得
            PtlParamOptimizeImage paramOptimizeImage =
            paramOptimize.getParamOptimizeImage();
            PtlParamOptimizeImageColor paramOptimizeImageColor =
            paramOptimizeImage.getParamOptimizeImageColor()) {
            // 画像が以上のPPIならダウンサンプリングを行うPPI値を設定
            paramOptimizeImageColor.setSourcePPI(sourcePPI);
            // 最適化する画像の対象Filterを設定
            paramOptimizeImage.setValidFilter(PtlParamOptimizeImage.FILTER_ALL & ~PtlParamOptimizeImage.FILTER_JBIG2Decode);
            // 画像のダウンサンプリングを行う最低サンプル数を設定
            paramOptimizeImage.setMinSampleSize(110);
            // その他のダウンサンプリングの値を設定
            paramOptimizeImageColor.setTargetPPI(75);
            paramOptimizeImageColor.setDownSampling(PtlParamOptimizeImageDownSampling.DOWNSAMPLING_TYPE.DOWNSAMPLING_BICUBIC);
            paramOptimizeImageColor.setMinDownSamplingRate(0.65f);
            paramOptimizeImageColor.setCompress(PtlParamOptimizeImageColor.COMPRESS_TYPE.COMPRESS_AUTO);
                paramOptimizeImageColor.setQuality(PtlParamOptimizeImageColor.QUALITY_TYPE.QUALITY_MIDDLE);
            // 最適化の実行
            doc.optimize(paramOptimize);
        }
    }    
}
OptimizeImageSetSourcePPI.java
C:\samples>java cookbook.OptimizeImageSetSourcePPI usage: java OptimizeImageSetSourcePPI in-pdf-file out-pdf-file source-PPI C:\samples>java cookbook.OptimizeImageSetSourcePPI colorImg.pdf optimizeImageColorSourcePPI.pdf 150 -- 完了 --