
PDF文書自体を透かしとして挿入します。会社のロゴやレターヘッドなどの線画図形を予めPDF文書として用意しておき、これを透かしとして使用できます。
任意のPDF文書の1ページを透かしとしてPDF文書のページに挿入します。透かしの共通設定に加えて、PDF文書の透かしにするページの指定、透かしの倍率を指定できます。倍率については2.3.4 倍率の設定を参照してください。
本プログラム例では、コマンドライン引数で透かしにするPDFと透かしにするページ番号を指定しています。
package cookbook;
import jp.co.antenna.ptl.*;
public class PdfWaterMarkAppend {
// そのクラスのusageを表示する関数
public static void printUsage() {
System.out.print("usage: java PdfWaterMarkAppend in-pdf-file out-pdf-file");
System.out.println(" watermark-pdf page-num");
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
if (args.length < 3) {
printUsage(); // usageメッセージの表示
return;
}
// コマンドライン引数の読み取り
String pathPdf = args[2];
int pageNum = Integer.parseInt(args[3]);
...【WaterMarkSetMargin.javaと同じ処理のため省略
・PtlParamInputを用いてPtlPDFDocument docに入力PDFをロード
・PtlParamOutputを用いて出力PDF名を指定】...
// 透かしの追加
appendPdfWaterMark(doc, pathPdf, pageNum);
...【EncryptWithUserPass.javaと同じ処理のため省略
・PtlParamOutputを用いてPtlPDFDocument docの内容を出力
・PtlException, Exception, Error を catchするエラー処理
・finally文で"--完了--"と表示する処理】...
}
public static void appendPdfWaterMark(PtlPDFDocument doc, String pathPdf,
int pageNum)
throws PtlException, Exception, Error {
try (PtlParamWaterMarkPDF waterMarkPdf = new PtlParamWaterMarkPDF()) {
try (PtlPDFDocument doc_watermark = new PtlPDFDocument();
PtlParamInput inputPdf = new PtlParamInput(pathPdf)) { // PDFファイル
// PDFファイルをロード
doc_watermark.load(inputPdf);
// 透かしに使用するページの取得
try (PtlPages pages = doc_watermark.getPages()) { //ページコンテナの取得
//ページコンテナが空かどうか
if (pages.isEmpty()) {
System.out.println("ページコンテナが空\n");
return;
}
try (PtlPage page = pages.get(pageNum - 1)) {// 指定したページ
// 透かしに使用するPDF文書ページを設定
waterMarkPdf.setPage(page);
}
}
}
// 透かしの倍率の設定
waterMarkPdf.setScale(0.0f);
// 以下、PDF透かし以外と共通するデフォルトの設定
// 透かしの名前の設定
waterMarkPdf.setName("waterMarkPdf");
...【ImageWaterMarkAppend.javaのappendImageWaterMark()と同じ処理のため省略。
・名前以外の、テスト用透かしに共通の設定をセットする。
・設定項目:余白・配置位置・Zオーダー・不透明度・タイリング
・PtlPDFDocument docに透かしを設定する】...
}
}
}
PdfWaterMarkAppend.java

ページ罫線を設定したPDF文書を、PDF透かしとして使います。左が元のPDF文書と透かし用のPDF文書です。右はページ罫線を透かしとして付けたPDF文書です。
