SSブログ
お知らせ

 当ブログは、ブログに割当てられたディスク容量が満杯になったため、2017年1月8日に、続ブログへ移転しました。

 【移転先】
  続・Emi Clockは、どうなったの?
  https://yuna-k.blog.ss-blog.jp/


  RSSフィード
  https://yuna-k.blog.ss-blog.jp/index.xml

※ 60秒後に自動的に続ブログへ移動します。

ひみつのPDFフォーム(その6) [アーキテクトぽい]

※このブログの内容は、アドビ社から公開されている情報に基づき、個人の趣味で記述しています。

PDFフォームに入力したデータを、Webサーバへ送信するには、送信ボタンを使えば簡単にできます。

※OS: Windows 7 Ultimete SP1
※Java SE: Java SE SDK 6 Update 19
※Java IDE: Eclipse 3.7.2 Indigo SR2
※ + Pleiades All in One e3.7 Java
※Webサーバ/APサーバ: Apache Tomcat 6.0.35
※Webブラウザ: IE 8.0, Safari 5.1.5
※PDF表示: Adobe Reader X 10.1.3
※PDF作成: Adobe Acrobat X Pro 10.1.3
※PDFフォーム作成: Adobe LiveCycle Designer ES2 9.0.0

PDFフォームの送信ボタンは、HTMLのSUBMITボタンのような働きをし、PDFフォームに入力されたデータを、HTTP POSTリクエストでWebサーバへ送信できます。
PDFフォームに入力したデータは、XML形式、または、URLエンコード形式を選択することができますが、HTMLフォームとの互換性を考慮し、URLエンコード形式を用いることにします。

PDFフォームから送信されたデータを受け取るサーブレットを作ります。
Eclipseを起動し、プロジェクトエクスプローラ上の、作成した動的 Webプロジェクトで右クリックし、「新規」 - 「サーブレット」を選び、適当なJavaパッケージ名を付けます。
ここでは、クラス名は"SubmitPdfForm"にして、完了をクリックします。
SubmitPdfFormサーブレットを作成します

できあがったサーブレットの雛形"は"SubmitPdfForm.java"に、コードを書いていきます。
まずは、doPostメソッドに、Webブラウザで開いたPDFフォームから送信されてきたHTTP POSTリクエストデータを取り出して、コンソールに表示するようにします。
ただ、それだけだと、HTTP POSTリクエストのレスポンスがカラッポになり、Webブラウザ画面が真っ白になりますので、簡単なHTMLでメッセージを返すことにします。
       
/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    // PDFフォームからのHTTP POSTリクエストデータを読み込む
    Enumeration<?> params = request.getParameterNames();
    while (params.hasMoreElements()) {
        String key = (String)params.nextElement();
        String value = request.getParameter(key);
        System.out.println("INFO: Key=" + key + ", value=" + value);
    }

    // 適当なレスポンスを返す
    response.setContentType("text/html");
    response.setCharacterEncoding("Windows-31J");
    PrintWriter out = response.getWriter();
    out.print("<html><body><font size=\"6\">");
    out.print("PDFからのデータを読み込みました。");
    out.print("</font></body></html>");
}
URLエンコードを選択した場合は、サーブレットのコードは、HTMLフォームからフォームデータを受け取る場合と同じコードになります。
サーブレットができたところで、メニューから「実行」-「実行」で、ローカルホストのTomcat 6.0サーバを起動し、サーブレットを呼び出せる状態にします。

LiveCycle Designer ES2で、すでに作成済みのPDFフォームの「保存」ボタンをクリックし、オブジェクトタブで、コントロールの種類を、"標準"から"送信"に変更します。
コントロールの種類を、

さらに、送信タブに切り替えて、送信先URLに、さきほど作成したサーブレットのURLである、"http://localhost:8080/WS4PDF/SubmitPdfForm" を指定します。
送信形式は"URL エンコードデータ(HTTP Post)"、データエンコーディングは"UTF-8"に設定して、PDFフォームを保存します。
送信ボタンの設定

ローカルディスクに保存したPDFフォームからフォームデータを送信することも出来てしまう(セキュリティ警告が出ますが、無視して実行可能)のですが、ここでは、Webブラウザに表示したPDFフォームをWebサーバへ送信するものとします。

WebブラウザにPDFフォームを表示するには、「ひみつのPDF(その4)」で作成した、LoadPdfTemplateサーブレットを経由して、PDFフォームをHTTP GETで取得します。
"C:\pdf_template に、OrderForm107.pdf"を配置しておき、IE8を起動して、アドレスバーに以下のURLを入力して、ウィンドウ内にPDFフォームを表示します。
http://localhost:8080/WS4PDF/LoadPdfTemplate?template=OrderForm107.pdf

PDFフォームが表示されたら、テキストフィールドやコンボボックスにデータを入力します。
テキストフィールドやコンボボックスにデータを入力します

PDFフォームへのデータ入力を終えたら、「保存」ボタンをクリックし、SubmitPdfFormサーブレットへデータを送信します。

サーブレットから、レスポンスのHTMLが返ってきて、「PDFからのデータを読み込みました。」と表示されます。
サーブレットからのレスポンス

このように、HTTP POSTでPDFフォームを送信した場合、入力したPDFフォームの表示が書き換わってしまう点に注意です。
これを回避し、PDFフォームの表示を書き換えないためには、工夫が必要になります。

Eclipseのコンソールペインには、以下のようなコンソールログが表示され、PDFフォームからのデータを受信できたことがわかります。
INFO: PDF=c:\pdf_template\OrderForm107.pdf
INFO: Key=EXAMINATION_MINUTES, value=0
INFO: Key=EXAMINATION_HOUR, value=9
INFO: Key=CLIENT_BIRTHDAY, value=1986/3/11
INFO: Key=EXAMINATION_MONTH, value=4
INFO: Key=PAYMENT_ORDER, value=1
INFO: Key=CARTE_NO, value=CT80010001
INFO: Key=DOCTOR_AUTH_DATE, value=2012-04-24
INFO: Key=DIVISION_NAME, value=1
INFO: Key=CLIENT_SEX, value=女
INFO: Key=EXAMINATION_DAY_OF_WEEK, value=1
INFO: Key=DOCTOR_NAME, value=秋元康
INFO: Key=EXAMINATION_ZONE, value=1
INFO: Key=CLIENT_NAME, value=篠田麻里子
INFO: Key=RESERVATION_ZONE, value=1
INFO: Key=EXAMINATION_DAY, value=30
INFO: Key=RESERVATION_HOUR, value=8
INFO: Key=RESERVATION_MINUTES, value=0
コンボボックスの値は、LiveCycle Designer ES2で、テキストに連結した数値になります。
なお、Safari 5.1でPDFフォームを表示した場合には、PDFフォームの送信が機能しませんでした。

[シリーズブログ]
ひみつのPDFフォーム
[1] [2] [3] [4] [5] [6] [7]

タグ:PDF
nice!(0)  コメント(0) 

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

Facebook コメント

caution.gif当ブログ記事は、日本国著作権法および国際法により権利が保護されています。無断で 画面の写真、ハードコピー、その他の二次複製物を無断で使用することは権利の 侵害になりますのでご注意下さい。
This blog post, right has been protected by copyright law and international law. Without permission screen photo of, hard copy, that you use the other secondary copies without permission is a violation of the rights Please note.
- - - - -
All rights reserved. Copyright (C) Motosoft(Toshi At Kuroneko) 2007-2022.

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。