挿入するレイヤーの表示/非表示を指定します。
レイヤーの表示/非表示を指定し、6.1.1 レイヤーに使用するPDF文書ページを設定と同様にしてレイヤーを挿入します。
PtlParamDrawLayer.APIsetShow(PtlParamDrawLayer.SHOW show): レイヤーの表示/非表示を設定
レイヤー表示の指定は次表の列挙型定数で指定します。
列挙型定数 | 説明 |
---|---|
SHOW_OFF | 非表示 |
SHOW_ON | 表示 |
指定しない場合はデフォルト値としてSHOW_ONが使用されます。
package cookbook; import jp.co.antenna.ptl.*; public class DrawLayerSetShowingSetting { // そのクラスのusageを表示する関数 private static void printUsage() { System.out.println("usage: java DrawLayerSetPage in-pdf-file out-pdf-file" + " page-num insert-pdf-file page-num-to-insert set-show"); System.out.println("set-show :"); System.out.println("0:挿入するレイヤーを表示しない 1:挿入するレイヤーを表示する"); } /** * @param args the command line arguments */ public static void main(String[] args) { if (args.length < 6) { printUsage(); return; } // コマンドライン引数の判定 boolean setShow = true; try { setShow = readBoolArgs(args[5], "set-show は 0か1で指定してください。"); } catch (IllegalArgumentException ex) { System.out.println(ex.getMessage()); printUsage(); // usageメッセージの表示 return; } try (PtlParamInput inputFile = new PtlParamInput(args[0]); PtlParamOutput outputFile = new PtlParamOutput(args[1]); PtlPDFDocument doc = new PtlPDFDocument()) { // PDFファイルをロードします。 doc.load(inputFile); // コマンドライン引数の判定 int pageToAdd = Integer.parseInt(args[2]); int numPages = doc.getPageCount(); System.out.println("ページ数:" + numPages); if((numPages < 0)||(numPages < pageToAdd)) { System.err.println("page-numは入力PDFの全ページ数よりも小さい正の値を" + "指定してください。"); return; } String insertPDFPath = args[3]; int insertPageNum = Integer.parseInt(args[4]); try (PtlPages pages = doc.getPages()) { // ページコンテナの取得 // ページコンテナが空かどうか if (pages.isEmpty()) { System.out.println("ページコンテナが空"); return; } // ページの取得(パラメータindexは0が先頭のため1を引く) try (PtlPage page = pages.get(pageToAdd - 1)) { //レイヤーの描画 drawLayerSetShow(page, insertPDFPath, insertPageNum, setShow); } } // ファイルに保存します。 doc.save(outputFile); } ...【ExtractText.javaと同じ処理のため省略 ・エラーメッセージ処理と出力】... } public static void drawLayerSetShow(PtlPage page, String insertPDFPath, int insertPageNum, boolean setShow) throws PtlException, Exception, Error { try (PtlSize pageSize = page.getSize(); // ページサイズ PtlContent content = page.getContent(); // ページコンテントの取得 PtlPDFDocument docToInsert = new PtlPDFDocument(); //挿入するPDF PtlParamInput inputFileToInsert = new PtlParamInput(insertPDFPath); // 描画矩形の指定(PDFいっぱいに指定) PtlRect rect = new PtlRect(0.0f, 0.0f, pageSize.getWidth(), pageSize.getHeight())) { // PDFファイルをロードします。 docToInsert.load(inputFileToInsert); try (PtlPages pagesToInsert = docToInsert.getPages()) { // ページコンテナの取得 // ページコンテナが空かどうか if (pagesToInsert.isEmpty()) { System.out.println("ページコンテナが空"); return; } // ページの取得(パラメータindexは0が先頭のため1を引く) // レイヤーのパラメーターの取得 try (PtlPage pageInsert = pagesToInsert.get(insertPageNum - 1); PtlParamDrawLayer param = new PtlParamDrawLayer()) { // レイヤーの表示/非表示を指定 if(setShow){ param.setShow(PtlParamDrawLayer.SHOW.SHOW_ON); }else{ param.setShow(PtlParamDrawLayer.SHOW.SHOW_OFF); } // レイヤーにするページ param.setPage(pageInsert); // レイヤーの名前 param.setName("Layer1"); // レイヤーを前面に param.setZorder(PtlParamDrawLayer.ZORDER.ZORDER_FRONT); // レイヤーの描画 content.drawLayer(rect, PtlContent.ALIGN.ALIGN_CENTER, param); } } } } /** * 0または1を入力されたargsにより、trueまたはfalseを返すメソッド。 * * @param args 与えられるコマンドライン引数。0または1でtrueまたはfalseを指定する。 * @param errorMessage argsが0か1でなかった場合に出力されるエラーメッセージを指定する。 * @return argsの数値を読み取った結果を戻す * @throws java.lang.IllegalArgumentException argsが0か1でなかった場合に発生。 */ public static boolean readBoolArgs(String args, String errorMessage) throws IllegalArgumentException { ...【ExtractTextSetRect.javaと同じ処理のため省略】... } }
DrawLayerSetShowingSetting.java
C:\samples>>java cookbook.DrawLayerSetShowingSetting usage: java DrawLayerSetPage in-pdf-file out-pdf-file page-num insert-pdf-file page-num-to-insert set-show set-show : 0:挿入するレイヤーを表示しない 1:挿入するレイヤーを表示する C:\samples>>java cookbook.DrawLayerSetShowingSetting AHLetterHead.pdf DrawLayerSetShowingSetting0.pdf 1 AHLogo.pdf 1 0 ページ数:1 -- 完了 -- C:\samples>>java cookbook.DrawLayerSetShowingSetting AHLetterHead.pdf DrawLayerSetShowingSetting1.pdf 1 AHLogo.pdf 1 1 ページ数:1 -- 完了 --
次の図は左がレイヤーを非表示に、右が表示に設定した結果です。