入力PDFからしおりを削除します。
入力PDFからしおりを削除してPDFを最適化します。
ここで削除されるしおり(Document Outline)とは、PDF 文書のナビゲーションをするためのツリー構造です。しおりの詳細については「『PDF CookBook』(第2巻)第3章 しおり」を参照してください。
PtlParamOptimize.APIsetRemoveOutlines(boolean remove): しおりを削除
設定しない場合はデフォルト値としてfalseが使用されます。
package cookbook; import jp.co.antenna.ptl.*; public class OptimizeRemoveOutlines { // そのクラスのusageを表示する関数 private static void printUsage() { System.out.println("usage: java OptimizeRemoveOutlines 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); optimizeDocByRemoveOutlines(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 optimizeDocByRemoveOutlines(PtlPDFDocument doc) throws PtlException{ try(PtlParamOptimize paramOptimize = new PtlParamOptimize()) { //オープンアクションの削除フラグを設定 paramOptimize.setRemoveOutlines(true); // 最適化の実行 doc.optimize(paramOptimize); } } }
OptimizeRemoveOutlines.java
C:\samples>java cookbook.OptimizeRemoveOutlines usage: java OptimizeRemoveOutlines in-pdf-file out-pdf-file C:\samples>java cookbook.OptimizeRemoveOutlines manualWithOutlines.pdf OptimizeRemoveOutlines.pdf -- 完了 --
次の図は左がしおりのあるPDF、右がしおりを削除した結果です。