2.3.3 PDF文書として用意した印鑑を捺印

images/AddPdfStampOnReceip-topt.png

狙い・効果

PDFの印鑑画像を貼り付け印鑑画像をPDF文書として作成しておき、別のPDF文書に捺印します。

処理の概要

印鑑画像をPDF文書(印鑑PDF)として用意しておきます。

別のPDF文書(捺印するPDF)の捺印する位置に、印影の大きさで配置矩形を設定します。

捺印するPDF文書に、印鑑PDFを配置矩形の大きさになるように縮小して貼り付けます。こうして挿入された印鑑画像は拡大・縮小でにじむことがありません。

『PDF Tool API』の主な機能

プログラム例

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

入出力操作の例

C:\samples>java cookbook.AddPdfStampOnReceipt 
usage: java AddPdfStampOnReceipt in-pdf-file out-pdf-file insert-stamp-pdf

C:\samples>java cookbook.AddPdfStampOnReceipt form.pdf form-stampPdf.pdf stamp.pdf 
-- 完了 --

PDF形式で作成した領収書にPDF形式で作成した印鑑を押した例を図に示します。

images/AddPdfStampOnReceipt-example.png

図2・21 PDF形式の領収書にPDF形式の印鑑を押した例