PDF文書にしおりを作成します。
サンプルPDF文書(bookmark-0.pdf)にはしおりがありません。そこで次のようなしおりを付けます。
package cookbook; import jp.co.antenna.ptl.*; public class AppendOutline { /** * @param args the command line arguments */ public static void main(String[] args) { if (args.length < 2) { System.out.println("usage: java AppendOutline in-pdf-file out-pdf-file"); return; } ...【WaterMarkSetMargin.javaと同じ処理のため省略 ・PtlParamInputを用いてPtlPDFDocument docに入力PDFをロード ・PtlParamOutputを用いて出力PDF名を指定】... try (PtlOutline outlineRoot = doc.getRootOutline()) { //ルートアウトラインの取得 // しおりの追加 createOutline(outlineRoot); } ...【EncryptWithUserPass.javaと同じ処理のため省略 ・PtlParamOutputを用いてPtlPDFDocument docの内容を出力 ・PtlException, Exception, Error を catchするエラー処理 ・finally文で"--完了--"と表示する処理】... } static void createOutline(PtlOutline outlineRoot) throws PtlException, Exception, Error { try (PtlOutline outlineActionGoToTop = new PtlOutline()) { outlineActionGoToTop.setTitle("PDFにしおりを付ける"); // アクション // PtlActionGoTo : GoToアクション<現在のドキュメント内の宛先へ移動> try (PtlActionGoTo actionGoTo = new PtlActionGoTo(); PtlDestFit destFit = new PtlDestFit()) { // PtlDestFit : Fit型 // 宛先ページの設定(ページ番号は0ベース) destFit.setPageNumber(0); // 宛先の設定 actionGoTo.setDest(destFit); // アクションの設定 outlineActionGoToTop.setAction(actionGoTo); } // アウトラインタイトルの色を設定 try (PtlColorDeviceRGB color = new PtlColorDeviceRGB(1.0f, 0.0f, 0.0f)) { outlineActionGoToTop.setColor(color); } // アウトラインフラグを設定 (FLAG_BOLD : 太字) outlineActionGoToTop.setFlags(PtlOutline.FLAG_BOLD); // PDF表示時の子アウトラインをオープンするかどうかの設定 outlineActionGoToTop.setOpen(true); // 子アウトラインの追加 outlineRoot.appendLastChild(outlineActionGoToTop); try (PtlOutline outlineActionGoTo2 = new PtlOutline()) { outlineActionGoTo2.setTitle("Bookmark sample-1"); // アクション // PtlActionGoTo : GoToアクション<現在のドキュメント内の宛先へ移動> try (PtlActionGoTo actionGoTo2 = new PtlActionGoTo(); PtlDestFitH destFitH = new PtlDestFitH()) { // PtlDestFitH : FitH型 // 宛先ページの設定(ページ番号は0ベース) destFitH.setPageNumber(1); // topの設定(本文の文章がちょうど一番上に来るように調整) destFitH.setTop(245); // 宛先の設定 actionGoTo2.setDest(destFitH); // アクションの設定 outlineActionGoTo2.setAction(actionGoTo2); } // アウトラインタイトルの色を設定 try (PtlColorDeviceRGB color = new PtlColorDeviceRGB(0.0f, 0.5f, 0.0f)) { outlineActionGoTo2.setColor(color); } // アウトラインフラグを設定(FLAG_NORMAL : ノーマル) outlineActionGoTo2.setFlags(PtlOutline.FLAG_NORMAL); // PDF表示時の子アウトラインをオープンするかどうかの設定 outlineActionGoTo2.setOpen(false); // 子アウトラインの追加 outlineActionGoToTop.appendLastChild(outlineActionGoTo2); // URIアクション ----------------------------------- try (PtlOutline outlineActionURI = new PtlOutline()) { // アウトラインタイトル文字列を設定 outlineActionURI.setTitle("http://www.antenna.co.jp/"); // アクション // PtlActionURI : URIアクション try (PtlActionURI actionuri = new PtlActionURI()) { // URIを設定 actionuri.setURI("http://www.antenna.co.jp/"); // アクションの設定 outlineActionURI.setAction(actionuri); } // アウトラインタイトルの色を設定 try (PtlColorDeviceRGB color = new PtlColorDeviceRGB(0.0f, 0.0f, 1.0f)) { outlineActionURI.setColor(color); } // アウトラインフラグを設定 // (FLAG_BOLD : 太字 と、 FLAG_ITALIC : イタリック の論理和) outlineActionURI.setFlags(PtlOutline.FLAG_BOLD | PtlOutline.FLAG_ITALIC); // PDF表示時の子アウトラインをオープンするかどうかの設定 // (false : 新ウィンドウでオープンしない) outlineActionURI.setOpen(false); // Bookmark sample-1の兄弟アウトラインとして追加 outlineActionGoTo2.appendNextSibling(outlineActionURI); } } } } }
AppendOutline.java
次図は出力PDFを開いてしおりを表示し、「Bookmark sample-1」をクリックしたときの画面です。