
表示矩形を基準にして透かしの配置領域を指定します。
表示矩形の内側に、上下左右の空白を設定します。
空白を設定した場合、その透かしは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の余白を指定します。その内側の上に寄せて透かしを配置します。次図は先頭ページのみの例です。
