
テキスト透かしの挿入角度を設定します。
『PDF Tool API』 では、テキスト透かしを用紙の対角線上に配置するかどうかを選択できます。また、対角線上に配置しないとき任意の挿入角度を指定できます。
テキスト透かしを対角線上に配置した場合、その透かしはAcrobat®互換にすることができなくなります。透かしのAcrobat®互換の詳細に関しては「『PDF CookBook』(第5巻)第8章 透かしのAcrobat®互換対応と機能追加」を参照してください。
『PDF Tool API V5』以前のバージョンでは、テキスト透かしに角度を指定しても、タイリング指定をすると角度指定は無視される機能制限があります。『PDF Tool API V6.0』以降のバージョンでは、タイリング指定をすれば角度指定は維持されます。
本プログラム例では対角線上に配置するかどうかを選択し、テキスト透かしの挿入角度を指定できます。対角線上に配置する場合は、挿入角度を指定しても無視されます。
package cookbook;
import jp.co.antenna.ptl.*;
public class TextWaterMarkSetAngle {
// そのクラスのusageを表示する関数
public static void printUsage() {
System.out.print("usage: java TextWaterMarkSetAngle in-pdf-file out-pdf-file");
System.out.println(" write-diagonal [text-angle]");
System.out.println("write-diagonal : ");
System.out.println("0:透かしのテキストを対角線上に配置しない 1:配置する");
System.out.println("write-diagonalが1の場合、text-angleを指定しても無視されます。");
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
if (args.length < 3) {
printUsage(); // usageメッセージの表示
return;
}
// コマンドライン引数の読み取り
boolean writeDiagonal;
try {
writeDiagonal = readBoolArgs(args[2], "write-diagonalは0か1で指定してください。");
}
catch (IllegalArgumentException ex) {
System.out.println(ex.getMessage());
printUsage(); // usageメッセージの表示
return;
}
float textAngle = Float.parseFloat(args[3]);
...【WaterMarkSetMargin.javaと同じ処理のため省略
・PtlParamInputを用いてPtlPDFDocument docに入力PDFをロード
・PtlParamOutputを用いて出力PDF名を指定】...
// 透かしの追加
appendTextWaterMarkSetAngle(doc, writeDiagonal, textAngle);
...【EncryptWithUserPass.javaと同じ処理のため省略
・PtlParamOutputを用いてPtlPDFDocument docの内容を出力
・PtlException, Exception, Error を catchするエラー処理
・finally文で"--完了--"と表示する処理】...
}
public static void appendTextWaterMarkSetAngle(PtlPDFDocument doc, boolean writeDiagonal,
float textAngle)
throws PtlException, Exception, Error {
try (PtlParamWaterMarkText waterMarkText = new PtlParamWaterMarkText()) {
// 透かしのテキストを対角線上に配置する設定
// true: 対角線上に配置する false : 対角線上に配置しない
waterMarkText.setWriteDiagonal(writeDiagonal);
// 透かしのテキストを任意の角度で配置する設定
waterMarkText.setTextAngle(textAngle);
...【WaterMarkSetRect.javaのappendWaterMarkSetRect()と同じ処理のため省略。
配置位置はWaterMarkSetPageRange.javaのappendWaterMarkSetPageRange()のものを共通とする。
・対角線配置設定・配置角度以外の、テキスト透かしに共通の設定をセットする。
・設定項目:配置位置・名前・Zオーダー・ページ範囲・不透明度・文字列・
タイリング・フォント・文字の色・縁取りの色
・PtlPDFDocument docにテキスト透かしを設定する】...
}
}
...【readBoolArgs()の処理はWaterMarkSetPageRange.javaと共通のため省略。
・0 または1 を入力されたargs により、true またはfalse を返すメソッド。
・argsが0か1でなかった場合に出力されるエラーメッセージを指定する。】...
}
TextWaterMarkSetAngle.java

次図は左が透かしの角度を15°に設定、右が対角線に設定しています。
