2.1.8 帳票へ文字記入

images/AddTextOnReceipt-top.png

狙い・効果

請求書など帳票PDFの指定位置に文字列を記入します。

処理の概要

帳票の記入枠を配置矩形で指定します。

各枠に入力したい文字列を指定します。

『PDF Tool API』の主な機能

プログラム例

package cookbook;

import jp.co.antenna.ptl.*;


public class  AddTextOnReceipt{

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        if (args.length < 8)
        {
            System.out.println("usage: java AddTextOnReceipt in-pdf-file out-pdf-file company-name postal-code adress1 adress2 phone-number fax-number");
            return;
        }


        ...【AppendPages.javaと同じ処理のため省略
             ・PtlParamInputを用いてPtlPDFDocument docに入力PDFをロード
             ・PtlParamOutputを用いて出力PDF名を指定】...


        ...【RemovePages.javaと同じ処理のため省略
             ・doc.getPages()メソッドを用いてPtlPages pagesにページコンテナを取得
             ・ページコンテナが空だった場合にエラーを出力して終了】...


                try (PtlPage page = pages.get(0);// ページの取得(先頭ページを指定)
                     PtlContent content = page.getContent();// ページコンテントの取得
                     PtlRect outputRect = new PtlRect();// 出力矩形の設定
                     PtlParamFont font = new PtlParamFont();// フォント
                     PtlParamWriteString writeStringParam = new PtlParamWriteString()) // 文字描画のパラメータクラス。今回は何も設定しない。
                {
                    String companyName = args[2];
                    String postalCode = args[3];
                    String adress = args[4];
                    String adress2 = args[5];
                    String phoneNumber = args[6];
                    String faxNumber = args[7];

                    font.setName("MS-Gothic");  //フォントの設定
                    // 社名の記入
                    font.setSize(12.0f);
                    writeStringParam.setFont(font);
                    setRect(outputRect, 130, 58, 200, 65);
                    content.writeString(outputRect, PtlContent.ALIGN.ALIGN_BOTTOM_LEFT, companyName, writeStringParam);

                    // 郵便番号記入
                    font.setSize(10.0f);
                    setRect(outputRect, 129, 50.5f, 200, 58);
                    content.writeString(outputRect, PtlContent.ALIGN.ALIGN_LEFT, postalCode, writeStringParam);

                    // 住所記入1
                    font.setSize(12.0f);
                    setRect(outputRect, 125, 45, 200, 50.5f);
                    content.writeString(outputRect, PtlContent.ALIGN.ALIGN_BOTTOM_LEFT, adress, writeStringParam);
                    // 住所記入2
                    setRect(outputRect, 125, 40, 200, 45);
                    content.writeString(outputRect, PtlContent.ALIGN.ALIGN_TOP_LEFT, adress2, writeStringParam);

                    // 電話番号
                    font.setSize(10.0f);
                    setRect(outputRect, 145, 31.5f, 200, 38);
                    content.writeString(outputRect, PtlContent.ALIGN.ALIGN_TOP_LEFT, phoneNumber, writeStringParam);

                    // FAX番号
                    setRect(outputRect, 145, 24, 200, 31.5f);
                    content.writeString(outputRect, PtlContent.ALIGN.ALIGN_TOP_LEFT, faxNumber, writeStringParam);

                }
            }


        ...【AppendPages.javaと同じ処理のため省略
             ・PtlParamOutputを用いてPtlPDFDocument docの内容を出力
             ・PtlException, Exception, Error を catchするエラー処理
             ・finally文で"--完了--"と表示する処理】...

    }

    public static PtlRect setRect(PtlRect outputRect, float left, float bottom, float right, float top)throws PtlException, Exception, Error{
        outputRect.setLeft(left);
        outputRect.setBottom(bottom);
        outputRect.setRight(right);
        outputRect.setTop(top);

        return outputRect;
    }
}

サンプルファイル名

AddTextOnReceipt.java

入出力操作の例

C:\samples>java cookbook.AddTextOnReceipt 
usage: java AddTextOnReceipt in-pdf-file out-pdf-file company-name postal-code adress1 adress2 phone-number fax-number

C:\samples>java cookbook.AddTextOnReceipt form.pdf form-out.pdf アンテナハウス株式会社 103-0004 東京都中央区東日本橋2丁目1番6号 東日本橋藤和ビル 03-5829-9021 03-5829-9024 
-- 完了 --

PDF形式の領収書(左)にテキストを追加すると図(右)のようになります。

images/AddTextOnReceipt-example.png

図2・8 帳票にテキスト(社名と住所など)を追加