表示矩形を基準にして透かしの配置領域を指定します。
表示矩形の内側に、上下左右の空白を設定します。
空白を設定した場合、その透かしはAcrobat®互換にすることができなくなります。透かしのAcrobat®互換の詳細に関しては「『PDF CookBook』(第5巻)第8章 透かしのAcrobat®互換対応と機能追加」を参照してください。
空きを確保した後の内側を透かしの配置領域とします。
配置領域に対して寄せを指定します。寄せの指定方法は2.1.1 透かしの配置の設定―その1を参照してください。
本プログラム例ではその他の設定項目は固定にしています。
package cookbook; import jp.co.antenna.ptl.*; public class WaterMarkSetMargin { /** * @param args the command line arguments */ public static void main(String[] args) { if (args.length < 7) { System.out.print("usage: java WaterMarkSetMargin in-pdf-file out-pdf-file watermark-align "); System.out.println("marginTop marginLeft marginBottom marginRight"); return; } // コマンドライン引数の取得 String waterMarkAlign = args[2]; float marginTop = Float.parseFloat(args[3]); float marginLeft = Float.parseFloat(args[4]); float marginBottom = Float.parseFloat(args[5]); float marginRight = Float.parseFloat(args[6]); try (PtlParamInput inputFile = new PtlParamInput(args[0]); PtlParamOutput outputFile = new PtlParamOutput(args[1]); PtlPDFDocument doc = new PtlPDFDocument()) { // PDFファイルをロードします。 doc.load(inputFile); // 透かしの追加 appendWaterMarkSetMargin(doc, waterMarkAlign, marginTop, marginLeft, marginBottom, marginRight); ...【EncryptWithUserPass.javaと同じ処理のため省略 ・PtlParamOutputを用いてPtlPDFDocument docの内容を出力 ・PtlException, Exception, Error を catchするエラー処理 ・finally文で"--完了--"と表示する処理】... } public static void appendWaterMarkSetMargin(PtlPDFDocument doc, String waterMarkAlign, float marginTop, float marginLeft, float marginBottom, float marginRight) throws PtlException, Exception, Error { //透かしの設定 try (PtlParamWaterMarkText waterMarkText = new PtlParamWaterMarkText()) { // 透かしの配置の設定 System.out.println("透かしの配置(watermark-align)を設定します。: " + waterMarkAlign); try { waterMarkText.setAlign(PtlParamWaterMark.ALIGN.valueOf(waterMarkAlign)); } catch (IllegalArgumentException ex){ // PtlParamWaterMark.ALIGN以外の文字列のエラーメッセージ System.out.println(ex.getMessage()); System.out.print("ERROR : "); System.out.println("alignにはPtlContent.ALIGNに含まれる名前を指定してください。"); ex.printStackTrace(); } // 透かしを配置するときの余白の設定 System.out.println("表示矩形の内側の余白を指定します。"); System.out.println("marginTop (mm) : " + marginTop); System.out.println("marginLeft (mm) : " + marginLeft); System.out.println("marginBottom (mm) : " + marginBottom); System.out.println("marginRight (mm) : " + marginRight); waterMarkText.setMargin(marginTop, marginLeft, marginBottom, marginRight); ...【WaterMarkSetRect.javaのappendWaterMarkSetRect()と同じ処理のため省略。 ・透かしの配置以外の、テスト用テキスト透かしに共通の設定をセットする。 ・設定項目:名前・Zオーダー・ページ範囲・不透明度・文字列・ タイリング・フォント・文字の色・縁取りの色・対角線配置の有無・配置角度 ・PtlPDFDocument docにテキスト透かしを設定する】... } } }
WaterMarkSetMargin.java
この例では、用紙の上下左右に30mmの余白を指定します。その内側の上に寄せて透かしを配置します。次図は先頭ページのみの例です。