入力PDFからアーティクルを削除します。
入力PDFからアーティクルを削除して最適化します。
ここで削除されるアーティクル(Articles)とは、PDFのドキュメント内に点在する、論理的には接続しているが、物理的には連続していないコンテント項目を結合するための機能です。
PtlParamOptimize.APIsetRemoveArticles(boolean remove): アーティクルを削除
設定しない場合はデフォルト値としてfalseが使用されます。
package cookbook; import jp.co.antenna.ptl.*; public class OptimizeRemoveArticles { // そのクラスのusageを表示する関数 private static void printUsage() { System.out.println("usage: java OptimizeRemoveArticles 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); optimizeDocByRemoveArticles(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("-- 完了 --"); } } public static void optimizeDocByRemoveArticles(PtlPDFDocument doc) throws PtlException{ try(PtlParamOptimize paramOptimize = new PtlParamOptimize()) { //オープンアクションの削除フラグを設定 paramOptimize.setRemoveArticles(true); // 最適化の実行 doc.optimize(paramOptimize); } } }
OptimizeRemoveArticles.java
C:\samples>java cookbook.OptimizeRemoveArticles usage: java OptimizeRemoveArticles in-pdf-file out-pdf-file C:\samples>java cookbook.OptimizeRemoveArticles textWithArticles.pdf OptimizeRemoveArticles.pdf -- 完了 --
次の図は左がアーティクルのあるPDF、右がアーティクルを削除した結果です。