PDFの印鑑画像を貼り付け印鑑画像をPDF文書として作成しておき、別のPDF文書に捺印します。
印鑑画像をPDF文書(印鑑PDF)として用意しておきます。
別のPDF文書(捺印するPDF)の捺印する位置に、印影の大きさで配置矩形を設定します。
捺印するPDF文書に、印鑑PDFを配置矩形の大きさになるように縮小して貼り付けます。
package cookbook; import java.io.*; import jp.co.antenna.ptl.*; public class AddPdfStampOnReceipt { /** * @param args the command line arguments */ public static void main(String[] args) { if (args.length < 3) { System.out.println("usage: java AddPdfStampOnReceipt in-pdf-file out-pdf-file insert-stamp-pdf"); return; } try (PtlParamInput inputFile = new PtlParamInput(args[0]); PtlParamOutput outputFile = new PtlParamOutput(args[1]); PtlPDFDocument doc = new PtlPDFDocument(); BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) { // PDFファイルをロードします。 doc.load(inputFile); //コマンドライン引数の取得 String insertPdfURI = args[2]; ...【RemovePages.javaと同じ処理のため省略 ・doc.getPages()メソッドを用いてPtlPages pagesにページコンテナを取得 ・ページコンテナが空だった場合にエラーを出力して終了】... try (PtlPage page = pages.get(0))// 先頭ページの取得 { // フォームの描画処理 drawPdfStamp(page, insertPdfURI); } } ...【AppendPages.javaと同じ処理のため省略 ・PtlParamOutputを用いてPtlPDFDocument docの内容を出力 ・PtlException, Exception, Error を catchするエラー処理 ・finally文で"--完了--"と表示する処理】... } public static void drawPdfStamp (PtlPage page, String insertPdfURI) throws PtlException, Exception, Error{ try(PtlContent content = page.getContent();// 挿入先ページコンテントの取得 PtlRect outputRect = new PtlRect(165, 55, 200, 75);// 出力矩形の設定 PtlParamInput insertPdf = new PtlParamInput(insertPdfURI); // 挿入PDF指定に使うパラメータクラス PtlPDFDocument doc2 = new PtlPDFDocument()) // 挿入PDFの実体 { doc2.load(insertPdf); try(PtlPages pages2 = doc2.getPages()) { // ページコンテナが空かどうか if (pages2.isEmpty()) { System.out.println("挿入するPDFのページコンテナが空"); return; } try(PtlPage pageInsert = pages2.get(0)) // 先頭ページの取得 { // 指定ページの挿入() content.drawForm(outputRect, PtlContent.ALIGN.ALIGN_CENTER, pageInsert); } } } } }
AddPdfStampOnReceipt.java
PDF形式で作成した領収書にPDF形式で作成した印鑑を押した例を図に示します。