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文書です。