10-6 しおり

概説:

しおりの基本要素

ルートしおりの取得

しおりに関する処理を実行する場合、最初に文書からルートしおりを取得する必要があります。

//入力PDF doc の取得は「PDFを開く」を参照
PtlOutline rootOutline = doc.getRootOutline();      //ルートしおりをPtlOutlineクラスの形で取得

子しおりの取得

子しおりを持っている場合は、子しおりを取得して関係をたぐっていくことができます。

//入力PDFの取得は「PDFを開く」を参照
//ルートしおりの取得は「ルートしおりの取得」を参照
parentOutline.hasChild();
PtlOutline outline = parentOutline.getFirstChild(); //最初の子しおりをPtlOutlineクラスの形で取得

兄弟しおりの取得

しおりが、それに続く兄弟しおりを持っている場合はその兄弟しおりを取得して関係をたぐっていくことができます。

//入力PDF doc の取得は「PDFを開く」を参照
//ルートしおりやその子しおりの取得は「ルートしおりの取得」「子しおりの取得」を参照
outline.hasNextSibling();                           //兄弟しおりを持っているか否かの判別
PtlOutline nextSibling = outline.getNextSibling();  //兄弟しおりをPtlOutlineの形で取得

しおりの応用

しおり情報の取得

//入力PDF doc の取得は「PDFを開く」を参照
//ルートしおりと、それに連なる目的の子しおり outline の取得は「ルートしおりの取得」「子しおりの取得」「兄弟しおりの取得」を参照
outline.getTitle();     //しおりのタイトル取得
outline.isOpen();       //しおりが開いているか否かを取得
outline.getFlags();     //しおりが持つフラグを取得
outline.getColor();     //しおりの色を取得
outline.getAction();    //しおり押下時のアクションを取得

しおりの追加

//入力PDFの取得は「PDFを開く」を参照
//ルートしおり outlineRoot の取得は「ルートしおりの取得」を参照
PtlOutline outlineActionGoToTop = new PtlOutline();         //設定するしおり
PtlColorDeviceRGB color =  new PtlColorDeviceRGB(r, g, b);
PtlActionGoTo actionGoTo = new PtlActionGoTo();             //しおり押下時のアクション
PtlDestFit destFit = new PtlDestFit();                      //しおり押下時の宛先
destFit.setPageNumber(pageNum);                             //アクションの宛先ページ
actionGoTo.setDest(destFit);                                //アクションへの宛先設定

outlineActionGoToTop.setAction(actionGoTo);                 //しおり押下時のアクションを設定
outlineActionGoToTop.setColor(color);                       //しおりの色を設定
outlineActionGoToTop.setTitle(title);                       //しおりのタイトルを設定
outlineActionGoToTop.setFlags(PtlOutline.FLAG_BOLD);        //しおりのフラグを設定
outlineActionGoToTop.setOpen(isOpen);                       //しおりが開いているか否かを設定

outlineRoot.appendLastChild(outlineActionGoToTop);      //ルートしおりの最後の子しおりとして追加

// 出力PDFの保存は「PDFの保存」を参照

しおりの個別削除

//入力PDF doc の取得は「PDFを開く」を参照
//ルートしおり及び目的の子しおり outline の取得は「ルートしおりの取得」「子しおりの取得」「兄弟しおりの取得」を参照
outline.destroy();              //自分及び自分につらなる子しおりの全てを削除

// 出力PDFの保存は「PDFの保存」を参照

しおり自体を削除する他、しおりの子だけを削除する、しおりのアクションを削除するなども可能

outline.removeAction();         //アクションの削除
outline.removeChildren();       //自分につらなる子しおりを削除

しおりの一括削除

//入力PDF doc の取得は「PDFを開く」を参照
PtlParamOptimize paramOptimize = new PtlParamOptimize();    //最適化オプション設定用クラス
paramOptimize.setRemoveOutlines(true);                      //しおりの削除設定をオンにする
doc.optimize(paramOptimize);                                //最適化を実行する

// 出力PDFの保存は「PDFの保存」を参照

参考:

・しおり情報の取得

『PDF CookBook(第2巻)3.1.1 しおり情報の取得』

https://www.antenna.co.jp/ptl/cookbook/vol2/i04-0003.html

・しおりの追加

『PDF CookBook(第2巻)3.1.2 しおりの追加』

https://www.antenna.co.jp/ptl/cookbook/vol2/i04-0003.html

・しおりの個別削除

『PDF CookBook(第2巻)3.1.3 しおりの削除』

https://www.antenna.co.jp/ptl/cookbook/vol2/i04-0003.html

・しおりの一括削除

『PDF CookBook(第3巻)5.2.2 しおりの削除』

https://www.antenna.co.jp/ptl/cookbook/vol3/i01-0048.html

Please enter alt text.