
画像に対してJPEG圧縮を行います。
カラー及びグレースケール画像に対してJPEG圧縮を行うようオプションで指定し、2.2.1 カラー画像最適化オプションの取得・指定と同様にして最適化します。また、JPEG圧縮による効果を確認できるよう、ダウンサンプリングは行わずJPEG圧縮のみ行うように設定しています。
PtlParamOptimizeImageColor.APIsetCompress(PtlParamOptimizeImageColor.COMPRESS_TYPE.COMPRESS_JPEG): JPEG形式で圧縮する
PtlParamOptimizeImageGrayScale.APIsetCompress(PtlParamOptimizeImageColor.COMPRESS_TYPE.COMPRESS_JPEG): JPEG形式で圧縮する
それぞれのJPEG圧縮処理はダウンサンプリングと同時に行われます。
package cookbook;
import jp.co.antenna.ptl.*;
public class CompressImageByJPEG {
// そのクラスのusageを表示する関数
private static void printUsage() {
System.out.println("usage: java CompressImageByJPEG in-pdf-file out-pdf-file");
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
if (args.length < 2)
{
printUsage();
return;
}
try (PtlParamInput inputFile = new PtlParamInput(args[0]);
PtlParamOutput outputFile = new PtlParamOutput(args[1]);
PtlPDFDocument doc = new PtlPDFDocument())
{
// PDFファイルをロードします。
doc.load(inputFile);
// 最適化の実行
compressImageByJPEG(doc);
// ファイルに保存します。
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("-- 完了 --");
}
}
/**
* そのPDF文書の画像をJPEG圧縮する。
* @param doc 処理を行うPDFの文書を表現したクラス
* @throws PtlException PdfToolAPIを実行するときに発生した例外
*/
public static void compressImageByJPEG(PtlPDFDocument doc) throws PtlException {
// 画像最適化パラメーターの取得
// カラー画像最適化パラメーターの取得
// グレースケール画像最適化パラメーターの取得
try (PtlParamOptimize paramOptimize = new PtlParamOptimize();
PtlParamOptimizeImage paramOptimizeImage =
paramOptimize.getParamOptimizeImage();
PtlParamOptimizeImageColor paramOptimizeImageColor =
paramOptimizeImage.getParamOptimizeImageColor();
PtlParamOptimizeImageGrayScale paramOptimizeImageGrayScale =
paramOptimizeImage.getParamOptimizeImageGrayScale()) {
paramOptimizeImageColor.setDownSampling(PtlParamOptimizeImageDownSampling.DOWNSAMPLING_TYPE.DOWNSAMPLING_NONE);
paramOptimizeImageColor.setCompress(PtlParamOptimizeImageColor.COMPRESS_TYPE.COMPRESS_JPEG);
paramOptimizeImageColor.setQuality(PtlParamOptimizeImageColor.QUALITY_TYPE.QUALITY_MIDDLE);
paramOptimizeImageGrayScale.setDownSampling(PtlParamOptimizeImageDownSampling.DOWNSAMPLING_TYPE.DOWNSAMPLING_NONE);
paramOptimizeImageGrayScale.setCompress(PtlParamOptimizeImageGrayScale.COMPRESS_TYPE.COMPRESS_JPEG);
paramOptimizeImageGrayScale.setQuality(PtlParamOptimizeImageGrayScale.QUALITY_TYPE.QUALITY_MIDDLE);
// 最適化する画像の対象Filterを設定
paramOptimizeImage.setValidFilter(PtlParamOptimizeImage.FILTER_ALL & ~PtlParamOptimizeImage.FILTER_JBIG2Decode);
//各要素の最適化フラグを設定
paramOptimize.setRemoveOpenAction(true);
paramOptimize.setRemoveOutlines(true);
paramOptimize.setRemoveAnnots(true);
paramOptimize.setRemoveArticles(true);
paramOptimize.setRemoveThumbnails(true);
// 最適化
doc.optimize(paramOptimize);
}
}
}
CompressImageByJPEG.java
C:\samples>java cookbook.CompressImageByJPEG usage: java CompressImageByJPEG in-pdf-file out-pdf-file C:\samples>java cookbook.CompressImageByJPEG colorImg.pdf compressImageByJPEG.pdf -- 完了 --