入力PDFから注釈・フォームを削除します。
入力PDFから注釈を削除注釈・フォームを削除して最適化します。
ここで削除される注釈(Annotations)とは、ノート、サウンド、ムービーのようなオブジェクトをPDFのページ上に位置を指定して配置するための機能です。また、フォーム(Interactive Forms)とは、PDF上でユーザから対話的に情報を収集するためのフィールドの集合のことを指します。
PtlParamOptimize.APIsetRemoveAnnots(boolean remove): 注釈/フォームを削除
設定しない場合はデフォルト値としてfalseが使用されます。
package cookbook; import jp.co.antenna.ptl.*; public class OptimizeRemoveAnnots { // そのクラスのusageを表示する関数 private static void printUsage() { System.out.println("usage: java OptimizeRemoveAnnots 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); optimizeDocByRemoveAnnots(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 optimizeDocByRemoveAnnots(PtlPDFDocument doc) throws PtlException{ try(PtlParamOptimize paramOptimize = new PtlParamOptimize()) { //オープンアクションの削除フラグを設定 paramOptimize.setRemoveAnnots(true); // 最適化の実行 doc.optimize(paramOptimize); } } }
OptimizeRemoveAnnots.java
C:\samples>java cookbook.OptimizeRemoveAnnots usage: java OptimizeRemoveAnnots in-pdf-file out-pdf-file C:\samples>java cookbook.OptimizeRemoveAnnots documentWithAnnotsAndForm.pdf OptimizeRemoveAnnots.pdf -- 完了 --
次の図は左が注釈とフォームのあるPDF、右が注釈とフォームを削除した結果です。