指定したドキュメントのモノクロ画像を最適化モノクロ画像について最適化します。
最適化するモノクロ画像の圧縮形式について指定し、2.2.1 カラー画像最適化オプションの取得・指定と同様にして最適化します。モノクロ画像とは、白と黒の2種だけの情報で表現された画像のことです。画像の圧縮形式は、自動、CCITT Group 3、CCITT Group 4、RunLength、ZLIB、元のままの6種から選択します。JBIG2もキーワード指定はできますが、未対応のため自動と同じ扱いになります。ご注意ください。
PtlParamOptimizeImage.APIgetParamOptimizeImageMono( ): モノクロ画像最適化オプションを取得
PtlParamOptimizeImageMono: モノクロ画像の最適化を表現したクラス
PtlParamOptimizeImageMono.APIsetCompress(PtlParamOptimizeImageMono.COMPRESS_TYPE type): 圧縮方法を設定
圧縮方法は次表の列挙型定数で指定します。
列挙型定数 | 説明 |
---|---|
COMPRESS_AUTO | 自動 |
COMPRESS_CCITT3 | CCITT Group 3 |
COMPRESS_CCITT4 | CCITT Group 4 |
COMPRESS_JBIG2 | JBIG2(未対応) |
COMPRESS_RUNLENGTH | RunLength |
COMPRESS_SAME | 元のまま |
COMPRESS_ZLIB | ZLIB |
package cookbook; import jp.co.antenna.ptl.*; public class OptimizeImageMono { // そのクラスのusageを表示する関数 private static void printUsage() { System.out.println("usage: java OptimizeImageMono in-pdf-file out-pdf-file" + " 圧縮方法"); System.out.println("圧縮方法:"); System.out.println("0:元のまま 1:お任せ 2:\ "CCITT Group 3\ " 3:\ "CCITT Group 4\ "" + " 4:JBIG2 5:RunLength 6:ZLIB"); } /** * @param args the command line arguments */ public static void main(String[] args) { if (args.length < 3) { printUsage(); return; } // コマンドライン引数の取得 int compressType = Integer.parseInt(args[2]); if((compressType < 0) || (6 < compressType)) { System.out.println("圧縮方法 は0から6の範囲の整数値で指定してください。"); printUsage(); return; } try (PtlParamInput inputFile = new PtlParamInput(args[0]); PtlParamOutput outputFile = new PtlParamOutput(args[1]); PtlPDFDocument doc = new PtlPDFDocument()) { // PDFファイルをロードします。 doc.load(inputFile); optimizeDocWithParamImageGrayScale(doc, compressType); // ファイルに保存します。 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 optimizeDocWithParamImageGrayScale(PtlPDFDocument doc, int compressType) throws PtlException{ try(PtlParamOptimize paramOptimize = new PtlParamOptimize(); // 画像最適化パラメーターの取得 // カラー画像最適化パラメーターの取得 PtlParamOptimizeImage paramOptimizeImage = paramOptimize.getParamOptimizeImage(); PtlParamOptimizeImageMono paramOptimizeImageMono = paramOptimizeImage.getParamOptimizeImageMono()) { // 圧縮方法を設定 switch(compressType) { case 0: paramOptimizeImageMono.setCompress(PtlParamOptimizeImageMono.COMPRESS_TYPE.COMPRESS_SAME); break; case 1: paramOptimizeImageMono.setCompress(PtlParamOptimizeImageMono.COMPRESS_TYPE.COMPRESS_AUTO); break; case 2: paramOptimizeImageMono.setCompress(PtlParamOptimizeImageMono.COMPRESS_TYPE.COMPRESS_CCITT3); break; case 3: paramOptimizeImageMono.setCompress(PtlParamOptimizeImageMono.COMPRESS_TYPE.COMPRESS_CCITT4); break; case 4: paramOptimizeImageMono.setCompress(PtlParamOptimizeImageMono.COMPRESS_TYPE.COMPRESS_JBIG2); break; case 5: paramOptimizeImageMono.setCompress(PtlParamOptimizeImageMono.COMPRESS_TYPE.COMPRESS_RUNLENGTH); break; case 6: paramOptimizeImageMono.setCompress(PtlParamOptimizeImageMono.COMPRESS_TYPE.COMPRESS_ZLIB); break; } // 最適化する画像の対象Filterを設定 paramOptimizeImage.setValidFilter(PtlParamOptimizeImage.FILTER_ALL & ~PtlParamOptimizeImage.FILTER_JBIG2Decode); // 画像のダウンサンプリングを行う最低サンプル数を設定 paramOptimizeImage.setMinSampleSize(110); paramOptimizeImageMono.setSourcePPI(200); paramOptimizeImageMono.setTargetPPI(150); paramOptimizeImageMono.setDownSampling(PtlParamOptimizeImageDownSampling.DOWNSAMPLING_TYPE.DOWNSAMPLING_BICUBIC); paramOptimizeImageMono.setMinDownSamplingRate(0.65f); // 最適化の実行 doc.optimize(paramOptimize); } } }
OptimizeImageMono.java
C:\samples>java cookbook.OptimizeImageMono usage: java OptimizeImageMono in-pdf-file out-pdf-file圧縮方法 圧縮方法: 0:元のまま 1:お任せ 2:"CCITT Group 3" 3:"CCITT Group 4" 4:JBIG2 5:RunLength 6:ZLIB C:\samples>java cookbook.OptimizeImageMono monoImg.pdf optimizeImageMono.pdf 5 -- 完了 --
monoImg.pdfの画像を圧縮方法:RunLengthで最適化します。このケースではファイルサイズはほんの少し小さくなるだけです。
monoImg.pdf: 224,494 optimizeImageMono.pdf:218,365