IM-PDFDesigner for Accel Platform プログラミングガイド 第13版 2019-04-01

連票形式

連票形式のPDFファイルを作成するための JSPプログラムを作成します。
JSPプログラムに記述されたPDF生成処理は、アプリケーション上で実行されます。
ここでは、JSPプログラムにPDF生成処理を記載していますが、 JSPプログラムから分離してJavaプログラムとして作成することも可能です。

コラム

文字コードは UTF-8 でファイルを保存してください。

1. 入力画面処理の作成

入力画面処理のプログラムを記述します。

<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<DIV align="center" style="center; padding-top: 25px;">
    <P><FONT size="+2">チュートリアルサンプル(IOCela)</FONT></P>
    <FORM action="pdfd/javaee/tutorial/celasample_act" method="POST">
        <TABLE border="1">
            <TR>
                <TH align="center" style="padding: 5px 10px;" nowrap>
                    出力PDFファイルディレクトリ: Public Storage の [pdfd/tutorial]
                </TH>
            </TR>
            <TR>
                <TH align="center" style="padding: 5px 10px;" nowrap>
                    下のボタンをクリックすることでPDF生成を開始します。
                </TH>
            </TR>
            <TR>
                <TD align="center" style="padding: 5px 10px;" nowrap>
                    <input type="submit" value=" PDF生成 " />
                </TD>
            </TR>
        </TABLE>
    </FORM>
</DIV>

記述が完了したら %HOME_PATH%/view/pdfd/tutorial ディレクトリを作成し、
celasample.jsp というファイル名で保存してください。
ファイル名の大文字・小文字を区別する必要があります。

2. 出力画面処理の作成

次に出力画面処理のプログラムを記述します。
“//”から始まる行は、コメントですので無視して記述頂いても問題ありません。

コラム

RESTインタフェースの機能を利用する場合は、利用クラスを CSVCela から CSVCelaRemote に変更します。サンプルプログラムの 48行目のコメントを外し、47行目をコメントアウトしてください。

<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ page import="jp.co.intra_mart.foundation.service.client.file.PublicStorage" %>
<%@ page import="jp.co.intra_mart.product.pdfmaker.PDFLibSecurity" %>
<%@ page import="jp.co.intra_mart.product.pdfmaker.net.CSVCela" %>
<%
//---
// CSVCELAサンプル(PDF-Desiner V8.0.0)
//---
// IOCELA帳票データをコード内部で生成しPDF帳票ファイルを生成します。
// PDFファイルは、文書情報/セキュリティ情報を付加し、出力しています。
//

    //-----
    // 出力ファイルパスの設定
    //-----
    // 出力ファイルは、Storage上のPublicディレクトリ以下の任意の位置に出力できます。
    //
    //     Publicディレクトリとは、
    //         %PUBLIC_STORAGE_PATH%/public/storage/ までを指しています。
    //
    // また、ファイル名は PublicStorageクラスを使用しStorage上に同一ファイルがないか確認し
    // 同一ファイルが存在する場合は、ファイル名に"_"(アンダーバー)+数値"を付加しています。
    //
    // *** このサンプルでは完全な一意性は確保できません。 ***
    //
    String outpath    = "pdfd/tutorial/"; // 出力フォルダ
    String prefix     = "designer";    // 出力ファイル接頭文字
    String suffix     = ".pdf";           // 出力ファイル拡張子
    String outPdfPath = outpath + prefix + suffix;

    PublicStorage ps = new PublicStorage(outPdfPath);
    int i = 1;
    while (ps.exists()) {
        outPdfPath = outpath + prefix + "_" + i + suffix;
        ps = new PublicStorage(outPdfPath);
        i++;
    }

    //-----
    // インスタンス生成 (V8.0.0から変更あり)
    //-----
    // 引数として連票用レイアウトファイルパスを指定(必須)
    //
    // 【V8.0.0】ファイルパス指定方法の変更
    //           Storage の Publicディレクトリ からの相対パスを指定します。
    //
    CSVCela pdf = new CSVCela("pdfd/tutorial/designer.def");
    //CSVCelaRemote pdf = new CSVCelaRemote("pdfd/tutorial/designer.def");

    //-----
    // 文書情報設定 (V7.x から変更なし)
    //-----
    // 文書情報セット(各項目最大255文字まで)
    //
    // defineTitle(String)       タイトルの設定
    // defineSubTitle(String)    サブタイトルの設定
    // defineAuthor(String)      作成者の設定
    // defineApplication(String) 作成アプリケーション名の設定
    //
    //
    pdf.defineTitle("PDFデザイナー体験");
    pdf.defineAuthor("IM 太郎");

    //-----
    // セキュリティ設定 (V7.x から変更なし)
    //-----
    // セキュリティ情報セット(パスワードは最大32文字まで)
    //
    // <パスワード設定>
    //     setOpenPassword(String)     オープンパスワード(32文字まで)
    //     setSecurityPassword(String) セキュリティパスワード(32文字まで)
    //
    // <印刷許可設定>
    //     printSecurity(PDFLibSecurity.PRINT_ENABLE)  印刷許可
    //     printSecurity(PDFLibSecurity.PRINT_DISABLE) 印刷不許可
    //
    // <変更許可設定>
    //     modifySecurity(PDFLibSecurity.MODIFY_DISABLE)
    //         変更不許可
    //     modifySecurity(PDFLibSecurity.MODIFY_ALL)
    //         変更許可 (ページの抽出を除くすべての変更を許可)
    //     modifySecurity(PDFLibSecurity.MODIFY_FORM_AND_ANNOTATION)
    //         変更許可 ("注釈の作成","フォームフィールドの入力",
    //                   "既存の署名フィールドに署名"を許可)
    //     modifySecurity(PDFLibSecurity.MODIFY_FORM_AND_ASSEMBLY)
    //         変更許可 ("ページレイアウト", "フォームフィールドの入力",
    //                   "既存の署名フィールドに署名"を許可)
    //
    // <テキスト文字抽出許可及びアクセシビリティ許可設定>
    //     copySecurity(PDFLibSecurity.COPY_AND_ACCESSBILITY_DISABLE) 不許可
    //     copySecurity(PDFLibSecurity.COPY_AND_ACCESSBILITY_ENABLE)  許可
    //
    pdf.setSecurityPassword("secpasswd");
    pdf.printSecurity(PDFLibSecurity.PRINT_DISABLE);
    pdf.modifySecurity(PDFLibSecurity.MODIFY_DISABLE);
    pdf.copySecurity(PDFLibSecurity.COPY_AND_ACCESSBILITY_DISABLE);

    //-----
    // CSVデータファイル設定 (V8.0.0 から変更あり)
    //-----
    // ファイル内容はDEFファイル上のデータ形式設定に沿って各カラムに値が挿入されます。
    //
    // 【V8.0.0】ファイルパス指定方法の変更
    //           Storage の Publicディレクトリ からの相対パスを指定します。
    //
    pdf.setCSV("pdfd/tutorial/designer_data.csv");

    //-----
    // レコードデータ設定 (V7.x から変更なし)
    //-----
    // CSVデータファイルの代わりにCSV形式のレコードデータを指定する。
    // 1回で1行分のデータを設定することが可能です。
    // (複数行の設定をする場合は、複数回メソッドを呼び出してください。)
    //
//  for(int row = 1; row <= 120; row++) {
//    pdf.setRecord(String.format("%d_data;%d;%d;%d;%d;%d",
//                                row,
//                                row+1,
//                                row+2,
//                                row+3,
//                                row+4,
//                                row+5));
//  }

    //-----
    // PDF出力処理 (V8.0.0 から変更あり)
    //-----
    // PDFファイルへの出力処理が実行されます。
    // 正常に処理が完了した場合には指定されたPDFファイル名に該当の文書が作成されます。
    //
    // 【V8.0.0】ファイルパス指定方法の変更
    //           Storage の Publicディレクトリ からの相対パスを指定します。
    //
    int resultCode = pdf.makePDF(outPdfPath);

    //-----
    // 終了処理 (V7.x から変更なし)
    //-----
    // PDF作成処理の戻り値が0以外である場合は、処理中で何らかのエラーが発生している場合です。
    // (出力ファイルは生成されません)
    // 戻り値、及びlastMessageメソッドにより取得できるエラーメッセージから原因を特定し対応します。
    //
    String resultMessage = "";
    if(resultCode == 0){
        resultMessage = "Success !!";
    }
    else{
        resultMessage = pdf.lastMessage();
    }

// 以下Webブラウザ出力HTMLレコードです。
// 当JSPを呼び出し時に上記IOCela帳票からのPDFファイル生成が実施され、
// 正常に完了した場合には、出力PDFファイルをダウンロードする為のリンクが表示されます。
// 出力には処理戻り値、メッセージ取得内容を含みます。
 %>
<DIV align="center" style="center; padding-top: 25px;">
    <P><FONT size="+2">チュートリアルサンプル(IOCela)</FONT></P>
    <FORM action="pdfd/javaee/tutorial/outfile" method="POST">
        <TABLE border="1">
            <TR>
                <TH align="right" style="padding: 5px 10px;" nowrap>
                    出力PDFファイル
                </TH>
                <TD align="left" style="padding: 5px 10px;" nowrap>
                    <%= outPdfPath %>
                </TD>
            </TR>
            <TR>
                <TH align="right" style="padding: 5px 10px;" nowrap>
                    戻り値
                </TH>
                <TD align="left" style="padding: 5px 10px;" nowrap>
                    <%= resultCode %>
                </TD>
            </TR>
            <TR>
                <TH align="right" style="padding: 5px 10px;" nowrap>
                    メッセージ
                </TH>
                <TD align="left" style="padding: 5px 10px;" nowrap>
                    <%= resultMessage %>
                </TD>
            </TR>
<% if(resultCode == 0) { %>
            <TR>
                <TD colspan="2" align="center" style="padding: 5px 10px;" nowrap>
                    <INPUT type="hidden" name="file" value="<%= outPdfPath %>" />
                    <INPUT type="submit" value=" download " />
                </TD>
            </TR>
<% } %>
        </TABLE>
    </FORM>
</DIV>
記述が完了したら %HOME_PATH%/view/pdfd/tutorial ディレクトリに、
celasample_act.jsp というファイル名で保存してください。
ファイル名の大文字・小文字を区別する必要があります。

3. 認可・ルーティング設定

intra-mart Accel Platform の認可及びルーティング設定に従い、以下の設定をしてください。
<入力画面処理>
  • path属性: 任意のURL文字列
  • page属性: WEB-INF/view/pdfd/tutorial/celasample.jsp

<出力画面処理>
  • path属性: 任意のURL文字列
  • page属性: WEB-INF/view/pdfd/tutorial/celasample_act.jsp

4. 画面表示・プログラム実行

設定したURLにアクセスすると、以下の画面が表示されます。
「PDF作成」ボタンをクリックすると、PDFファイルが作成され処理終了後にダウンロードが開始されます。
実行エラーが発生した場合には、エラーメッセージの内容に従いJavaScriptファイルまたはhtmlファイルを修正してください。
../../../../_images/iocela.png

5. 確認

プログラムが正しく実行されると Public Storage の pdfd/tutorial/ に PDFファイルが作成されます。
このファイルがPDFのビューア (AdobeReaderなど) で正しく表示できれば、すべての処理が正しく行われたことになります。