電子フォームとXMLデータを利用して、サーバのプリンタへの印刷を行います。
注意
PrintDataBuilderは推奨されないクラスです。サーバでの帳票印刷はList Creatorを使用してください。
■ クラスの概要
クラス名 | PrintDataBuilder |
パッケージ名 | com.fujitsu.form |
文法 | public class PrintDataBuilder |
継承関係 | java.lang.Object | +--- com.fujitsu.form.PrintDataBuilder |
■ フィールドの概要
型 | 名称 | 説明 |
---|---|---|
public int | 印刷処理状態を表します。 | |
public static final int | 印刷処理が実行中を表すstatusの値です。 | |
public static final int | 印刷処理が実行されていないことを表すstatusの値です。 | |
public static final int | 印刷業務が終了していることを表すstatusの値です。 | |
public static final int | 印刷を行うことを表すendPrint()メソッドのパラメタ値です。 | |
public static final int | 印刷を中止することを表すendPrint()メソッドのパラメタ値です。 | |
public static final int | 用紙種別に連帳を指定するsetPaperType()メソッドのパラメタ値です。 | |
public static final int | 用紙種別に単票を指定するsetPaperType()メソッドのパラメタ値です。 |
■ コンストラクタの概要
コンストラクタ名 | 説明 |
---|---|
電子フォーム格納パスおよび電子フォーム名を指定し、PrintDataBuilderオブジェクトを生成します。 | |
電子フォーム名を指定し、PrintDataBuilderオブジェクトを生成します。 |
■ メソッドの概要
戻り値型 | メソッド名 | 説明 |
---|---|---|
void | ドキュメントオブジェクトを指定して、電子フォームを印刷するときのXMLデータとして設定します。 | |
void | ドキュメントオブジェクトを指定して、電子フォームを印刷するときの項目制御情報として設定します。 | |
void | 出力するプリンタの機種名を指定します。 | |
void | 出力先プリンタ名を指定します。 | |
void | 電子フォーム名を指定します。 | |
void | 印刷ジョブ名を指定します。 | |
void | メディア格納ディレクトリを指定します。 | |
void | オーバレイを印刷するかどうかを指定します。 | |
void | 用紙種別を指定します。 | |
void | 用紙名を指定します。 | |
void | 給紙口名を指定します。 | |
void | 印刷部数を指定します。 | |
void | 両面印刷するかどうかを指定します。 | |
void | 置換フォント定義ファイル名を指定します。 | |
void | 印刷データを出力します。 | |
void | 印刷を終了します。 | |
void | 印刷を終了します。印刷の中止を行うことができます。 | |
void | 印刷業務を終了します。 | |
org.w3c.dom.Document | 電子フォームから初期値のデータを設定するためのXMLデータの雛形を取得し、そのドキュメントオブジェクトを返します。 |
■ フィールドの詳細
形式:
public int status
説明:
現在の印刷処理状態を次に示す値で表します。
値 | 説明 |
---|---|
0(PRINTOFF) | 印刷処理が実行されていません。 |
1(PRINTON) | 印刷処理が実行されています。 |
2(PRINTJOBEND) | 印刷業務が終了しています。 |
関連項目:
write()、endPrint()、 endPrintJob()
形式:
public static final int PRINTON
説明:
印刷処理が実行中である状態を表すstatusの値です。
関連項目:
status
形式:
public static final int PRINTOFF
説明:
印刷処理が実行されていない状態を表すstatusの値です。
関連項目:
status
形式:
public static final int PRINTJOBEND
説明:
印刷業務が終了している状態を表すstatusの値です。
関連項目:
status
形式:
public static final int PRINT
説明:
印刷を実行することを表すendPrint()メソッドのパラメタ値です。
関連項目:
endPrint(int)
形式:
public static final int PRINTCANCEL
説明:
印刷を中止することを表すendPrint()メソッドのパラメタ値です。
関連項目:
endPrint(int)
形式:
public static final int PAPTYP_SERIAL
説明:
用紙種別に連帳を指定するsetPaperType()メソッドのパラメタ値です。
関連項目:
setPaperType()
形式:
public static final int PAPTYP_SINGLE
説明:
用紙種別に単票を指定するsetPaperType()メソッドのパラメタ値です。
関連項目:
setPaperType()
■ コンストラクタの詳細
PrintDataBuilder(java.lang.String,java.lang.String)
形式:
public PrintDataBuilder(java.lang.String descriptorStoragePath, java.lang.String descriptorName) throws java.lang.IllegalArgumentException, java.lang.UnsatisfiedLinkError, com.fujitsu.form.XmlProcessorException com.fujitsu.form.PrintException
説明:
電子フォーム格納パスおよび電子フォーム名を指定して、PrintDataBuilderオブジェクトを生成します。
電子フォーム格納パスはURI文字列で指定します。現在、利用できるプロトコルはfileだけです。
なお、印刷途中で電子フォームを切り替える場合は、setDescriptorName()メソッドを利用してください。
パラメタ:
電子フォーム格納パス
電子フォーム名
例外:
次に示すどちらかの場合
電子フォーム格納パス、電子フォーム名がnullの場合
電子フォーム格納パスにfileプロトコル以外を指定した場合
ライブラリのロードに失敗した場合
XMLデータを扱うためのオブジェクトの獲得に失敗した場合
印刷を行う環境の開設に失敗した場合
PrintDataBuilder(java.lang.String)
形式:
public PrintDataBuilder(java.lang.String descriptorName) throws java.lang.IllegalArgumentException, java.lang.UnsatisfiedLinkError, com.fujitsu.form.XmlProcessorException com.fujitsu.form.PrintException
説明:
電子フォーム名を指定して、PrintDataBuilderオブジェクトを生成します。
なお、電子フォームは、WindowsではFormcoordinatorの「環境設定」で、SolarisおよびLinuxではFormcoordinatorの環境設定コマンドのmxsetassetsdirコマンドで設定されている電子フォーム格納先ディレクトリから検索されます。
印刷途中で電子フォームを切り替えたい場合は、setDescriptorName()メソッドを利用してください。
パラメタ:
電子フォーム名
例外:
電子フォーム名がnullの場合
ライブラリのロードに失敗した場合
XMLデータを扱うためのオブジェクトの獲得に失敗した場合
印刷を行う環境の開設に失敗した場合
■ メソッドの詳細
setXMLData(org.w3c.dom.Document)
形式:
public void setXMLData(org.w3c.dom.Document xmlData) throws com.fujitsu.form.XmlProcessorException
説明:
指定したドキュメントオブジェクトを、電子フォームを印刷するときのXMLデータとして設定します。サーバ印刷では、電子フォームの初期値は有効になりません。パラメタ「xmlData」にnullを指定した場合は、設定されているXMLデータは無効となります。
パラメタ:
XMLデータを表すドキュメントオブジェクト
戻り値:
なし
例外:
ドキュメントオブジェクトの設定に失敗した場合
関連項目:
setItemAttribute()
setItemAttribute(org.w3c.dom.Document)
形式:
public void setItemAttribute(org.w3c.dom.Document attData) throws com.fujitsu.form.XmlProcessorException
説明:
指定したドキュメントオブジェクトを、電子フォームを印刷するときの項目制御情報として設定します。印刷時には電子フォームの初期値とattDataをマージしたものを初期値としますが、attDataの値のほうが電子フォームの初期値よりも優先されます。
attDataにnullを指定した場合は、以前に設定しているドキュメントオブジェクトを削除します。
パラメタ:
項目制御情報を表すドキュメントオブジェクト
戻り値:
なし
例外:
ドキュメントオブジェクトの設定に失敗した場合
関連項目:
setXMLData()
setPrinterDeviceType(java.lang.String)
形式:
public void setPrinterDeviceType(java.lang.String printerDeviceType) throws com.fujitsu.form.PrintException
説明:
出力するプリンタの機種名を指定します。プリンタ機種名の指定は必ずwrite()メソッドの実行前に行ってください。途中で指定を変更する場合には、endPrint()メソッドを実行して、一度印刷処理を終了してください。指定を省略した場合は、"PS2"(PostScriptレベル2対応プリンタ)が有効になります。
このメソッドはSolarisおよびLinuxでだけ有効です。
パラメタ:
詳細を次に示します。
"PS2" PostScriptレベル2対応プリンタ
"FNP" FNPシーケンスサポートプリンタ
戻り値:
なし
例外:
出力するプリンタの機種名の設定に失敗した場合
setPrinterName(java.lang.String)
形式:
public void setPrinterName(java.lang.String printerName) throws com.fujitsu.form.PrintException
説明:
出力先プリンタ名を指定します。出力先プリンタ名の指定は必ずwrite()メソッドの実行前に行ってください。
パラメタにnullを指定した場合および出力先プリンタ名を指定しない場合は、Windowsは通常使うプリンタとして定義しているプリンタが、SolarisおよびLinuxはシステムのデフォルトのプリンタが使用されます。
なお、SolarisおよびLinuxでサポートしているプリンタは「PostScriptレベル2対応プリンタ」および「FNPシーケンスサポートプリンタ」だけです。
デフォルトのプリンタ名は、lpstatコマンドで確認できます。
例:
デフォルトのプリンタ名を確認する場合
lpstat -d |
この場合、デフォルトのプリンタ名は"psprinter"です。
パラメタ:
出力先プリンタ名
出力先プリンタ名の指定について、次に示す場合に分けて説明します。
ローカルプリンタの場合
プリンタの一覧で得られる名前で指定します。
次に示す画面では、"FUJITSU FMLBP224"がローカルプリンタなので、"FUJITSU FMLBP224"と指定します。
ネットワークプリンタの場合
"\\サーバ名\プリンタ名"という形に変更する必要があります。
次に示す画面では、"altair_lbp - Altair"がAltairというサーバに接続した、altair_lbpというネットワークプリンタなので、"\\altair\altair_lbp"と指定します。
出力先プリンタ名は、システムに登録したプリンタ名を指定します。
システムに登録したプリンタ名は、lpstatコマンドで確認できます。
例:
Solarisで、システムに登録したプリンタ名を確認する場合
lpstat -a |
この場合、システムに登録したプリンタ名は"psprinter"と"psprinter2"の2つです。
Linuxで、システムに登録したプリンタ名を確認する場合
lpstat -a |
この場合、システムに登録したプリンタ名は"psprinter"と"psprinter2"の2つです。
戻り値:
なし
例外:
印刷情報の設定に失敗した場合
関連項目:
write()
setDescriptorName(java.lang.String)
形式:
public void setDescriptorName(java.lang.String descriptorName) throws com.fujitsu.form.PrintException
説明:
印刷したい電子フォーム名を指定します。指定した電子フォーム名は以降のwrite()メソッドに対して有効となります。パラメタにnull を指定すると、PrintDataBuilder生成時に指定した電子フォーム名となります。
パラメタ:
電子フォーム名
戻り値:
なし
例外:
印刷情報の設定に失敗した場合
関連項目:
write()
setPrintJobName(java.lang.String)
形式:
public void setPrintJobName(java.lang.String printJobName) throws com.fujitsu.form.PrintException
説明:
印刷ジョブ名を指定します。ここで指定した名前はプリントマネージャの表示画面に出力されます。印刷ジョブ名の指定は必ずwrite()メソッドの実行前に行ってください。途中で印刷ジョブ名を変更する場合には、endPrint()メソッドを実行して、一度印刷処理を終了してください。
パラメタにnullを指定した場合および印刷ジョブ名を指定しない場合は、電子フォーム名が印刷ジョブ名となります。
このメソッドはWindowsでだけ有効です。
パラメタ:
印刷ジョブ名
戻り値:
なし
例外:
印刷情報の設定に失敗した場合
関連項目:
write()
setMediaDirectory(java.lang.String)
形式:
public void setMediaDirectory(java.lang.String mediaDirectory) throws java.lang.IllegalArgumentException, com.fujitsu.form.PrintException
説明:
印刷時に使用するメディアデータの格納先パス名を指定します。メディアデータの格納先パス名はURI文字列で指定します。利用できるプロトコルはfileおよびhttpです。指定した格納先パス名は以降のwrite()メソッドに対して有効となります。
パラメタにnullを指定した場合および指定を省略した場合は、電子フォーム格納パスが有効になります。
パラメタ:
メディアデータの格納先パス名
戻り値:
なし
例外:
メディア格納パス名にfileまたはhttpプロトコル以外を指定した場合
印刷情報の設定に失敗した場合
関連項目:
write()
形式:
public void setOverlayPrint(boolean overlayPrintMode) throws com.fujitsu.form.PrintException
説明:
オーバレイを印刷するかどうかを指定します。指定は以降のwrite()メソッドに対して有効となります。指定を省略した場合は、オーバレイを印刷します。
パラメタ:
オーバレイを印刷する場合、trueを設定します。
オーバレイを印刷しない場合、falseを設定します。
戻り値:
なし
例外:
印刷情報の設定に失敗した場合
関連項目:
write()
形式:
public void setPaperType(int paperType) throws java.lang.IllegalArgumentException, com.fujitsu.form.PrintException
説明:
用紙種別を指定します。
用紙種別の指定は必ずwrite()メソッドの実行前に行ってください。途中で用紙種別を変更する場合には、endPrint()メソッドを実行して、一度印刷処理を終了してください。指定を省略した場合は、単票になります。
このメソッドはWindowsでだけ有効です。
パラメタ:
詳細を次に示します。
連帳
単票
戻り値:
なし
例外:
paperTypeに指定できない値を指定した場合
印刷情報の設定に失敗した場合
関連項目:
write()
setPaperSizeName(java.lang.String)
形式:
public void setPaperSizeName(java.lang.String paperSizeName) throws com.fujitsu.form.PrintException
説明:
用紙サイズをプリンタドライバの用紙名で指定します。
用紙名は文字および空白の全角・半角の違い、空白の有無などに注意して正確に指定します。電子フォームの用紙サイズ指定を無効にしたい場合および電子フォームで指定した用紙サイズが採用されない場合に指定してください。指定した用紙名は、以降のwrite()メソッドに対して有効となります。
パラメタにnullを指定した場合および指定を省略した場合は、電子フォームの用紙サイズの指定が有効になります。
このメソッドはWindowsでだけ有効です。
パラメタ:
プリンタドライバの用紙名
ドライバの用紙名に指定する値はプリンタドライバによって異なります。ドライバの用紙名は、文字および空白の全角・半角の違い、空白の有無などに注意して正確に指定します。
指定例を次に示します。ただし、プリンタドライバのバージョンによっては、指定方法で示した値と異なる場合があります。
プリンタ名 | オペレーティングシステム | プリンタドライバ | 指定する用紙名 | 指定方法 |
---|---|---|---|---|
富士通 FMPR系プリンタ | Windows 2000、Windows Server 2003 | FUJITSU FMPR 180DPI | 15 x 11 インチ | 15 x 11 インチ |
富士通ESC/P系プリンタ | Windows 2000、Windows Server 2003 | FUJITSU ESC/P | 15 x 11 インチ | 15 x 11 インチ |
EPSON VP-1000系プリンタ | Windows 2000、Windows Server 2003 | EPSON VP-1000 | 15 x 11 インチ | 15 x 11 インチ |
この例で示したプリンタ以外の場合は、プリンタのプロパティまたは印刷設定の用紙名に関する値を指定します。用紙サイズの呼称は、プリンタドライバによっては、「用紙サイズ」、「原稿サイズ」などの場合があります。
戻り値:
なし
例外:
印刷情報の設定に失敗した場合
関連項目:
write()
setPaperTrayName(java.lang.String)
形式:
public void setPaperTrayName(java.lang.String paperTrayName) throws com.fujitsu.form.PrintException
説明:
給紙口をプリンタドライバの給紙口名で指定します。
給紙口名は文字および空白の全角・半角の違い、空白の有無などに注意して正確に指定します。指定した給紙口名は、以降のwrite()メソッドに対して有効となります。
パラメタにnullを指定した場合および指定を省略した場合は、給紙口は指定なしになります。
給紙口名を指定します。指定した給紙口名は、以降のwrite()メソッドに対して有効となります。
パラメタにnullを指定した場合および指定を省略した場合は、給紙口は指定なしになります。ただし、プリンタ装置によっては指定した給紙口から給紙されないことがあります。
パラメタ:
プリンタドライバの給紙口名
プリンタドライバの給紙口名に指定する値はプリンタドライバによって異なります。ドライバの給紙口名は、文字および空白の全角・半角の違い、空白の有無などに注意して正確に指定します。
指定例を次に示します。ただし、プリンタドライバのバージョンによっては、指定方法で示した値と異なる場合があります。
プリンタ名 | オペレーティングシステム | プリンタドライバ | 指定する給紙口名 | 指定方法 |
---|---|---|---|---|
富士通 FMPR系プリンタ | Windows 2000、Windows Server 2003 | FUJITSU FMPR 180DPI | ホッパユニット | ホッパユニット |
EPSON LP-8000系プリンタ | Windows 2000、Windows Server 2003 | EPSON LP-8000 | フロントトレイ | フロントトレイ |
CANON LBP-730 LIPS4 | Windows 2000、Windows Server 2003 | CANON LBP-730 LIPS4 | 中段カセット | 中段カセット |
CANON LBP-730 LIPS4 | Windows 2000、Windows Server 2003 | CANON LBP-730 LIPS4 | 下段カセット | 下段カセット |
この例で示したプリンタ以外の場合は、プリンタのプロパティまたは印刷設定の給紙口に関する値を指定します。給紙口の呼称は、プリンタドライバによっては、「給紙方法」、「用紙トレイ選択」などの場合があります。
詳細を次に示します。
"H1"
ホッパ1
"H2"
ホッパ2
"H3"
ホッパ3
"AT"
自動
"NO"
指定なし
上記以外の文字列を指定した場合、給紙口の指定は無視されます。
戻り値:
なし
例外:
印刷情報の設定に失敗した場合
関連項目:
write()
形式:
public void setPrintCopies(int printCopies) throws java.lang.IllegalArgumentException, com.fujitsu.form.PrintException
説明:
印刷部数を指定します。指定可能な値は1~999です。指定した印刷部数は、以降のwrite()メソッドに対して有効となります。指定を省略した場合は、電子フォームの印刷部数は1になります。
Windowsの場合、印刷部数の指定は、プリンタドライバのプロパティで複写枚数が指定可能なプリンタでだけ有効となります。
SolarisおよびLinuxの場合、プリンタ装置によっては指定した印刷部数が有効にならないことがあります。
パラメタ:
印刷部数(1~999)
戻り値:
なし
例外:
パラメタに指定できない値を指定した場合
印刷情報の設定に失敗した場合
関連項目:
write()
形式:
public void setPrintSide(boolean printSideMode) throws com.fujitsu.form.PrintException
説明:
複数ページを印刷する場合に両面印刷するかどうかを指定します。
両面印刷指定は必ずwrite()メソッドの実行前に行ってください。途中で指定を変更する場合には、endPrint()メソッドを実行して、一度印刷処理を終了してください。指定を省略した場合は、両面印刷は行われません。
また、両面印刷する指定の場合でも、プリンタ装置が両面印刷機能をサポートしていない場合には両面印刷指定は無効になります。
このメソッドはWindowsでだけ有効です。
パラメタ:
両面印刷する場合、trueを設定します。
両面印刷しない場合、falseを設定します。
戻り値:
なし
例外:
印刷情報の設定に失敗した場合
関連項目:
write()
setFontMappingFileName(java.lang.String)
形式:
public void setFontMappingFileName(java.lang.String fontMappingFileName) throws java.lang.IllegalArgumentException, com.fujitsu.form.PrintException
説明:
フォントの置き換え情報を記述した置換フォント定義ファイル名をフルパスで指定します。置換フォント定義ファイル名はURI文字列で指定します。現在、利用できるプロトコルはfileだけです。置換フォント定義ファイル名の指定は必ずwrite()メソッドの実行前に行ってください。
置換フォント定義ファイルは、次に示す形式で記述します。
*コメント |
次に示す点に注意して記述してください。
ファイルの内容は、アプリケーション実行時のlocaleに従って記述してください。
例:
サーブレットコンテナの設定でLANGにja_JP.eucJPなどのEUCのlocaleを指定している場合、置換フォント定義ファイルの内容もEUCで記述してください。
1行は256文字以内で記述し、行の終わりには改行コードを付加してください。
行の先頭(1桁目)から記述してください。
"置換前フォント名"および"置換後フォント名(日本語用),置換後フォント名(英数字用)"の間はそれぞれ1つ以上の半角の空白またはタブで区切ってください。全角の空白は使用できません。
置換前フォント名、置換後フォント名(日本語用)、置換後フォント名(英数字用)は31バイト以内で指定してください。
置換フォント定義ファイルの記述例を次に示します。
*置換フォント定義ファイル |
このメソッドはSolarisおよびLinuxでだけ有効です。
パラメタ:
置換フォント定義ファイル名
戻り値:
なし
例外:
次に示すどちらかの場合
置換フォント定義ファイル名がnullの場合
置換フォント定義ファイル名にfileプロトコル以外を指定した場合
印刷情報の設定に失敗した場合
関連項目:
write()
形式:
public void write() throws com.fujitsu.form.XmlProcessorException, com.fujitsu.form.FormIOException, com.fujitsu.form.PrintException
説明:
印刷データを生成しプリンタに出力します。出力する用紙のサイズを超える出力を行った場合、出力する用紙の印刷可能範囲を超えた部分は印刷されません。このメソッドを呼び出すと、ステータスは印刷中(PRINTON)となります。印刷を完了する場合は、endPrint()メソッドで完了する必要があります。印刷業務がすべて完了した場合は、endPrintJob()メソッドで印刷のために獲得した資源を解放する必要があります。
パラメタ:
なし
戻り値:
なし
例外:
XMLデータ処理でエラーが発生した場合
電子フォームが見つからなかった場合
印刷時にエラーが発生した場合
関連項目:
status、setPrinterName()、setDescriptorName()、setPrintJobName()、setMediaDirectory()、setOverlayPrint()、setPaperType()、setPaperSizeName()、setPaperTrayName()、setPrintCopies()、endPrint()、endPrintJob()
形式:
public void endPrint() throws com.fujitsu.form.PrintException
説明:
プリンタへの印刷データの出力を完了し、印刷処理を終了します。このメソッドを呼び出すと、ステータスは印刷処理が実行されていない状態(PRINTOFF)となります。
パラメタ:
なし
戻り値:
なし
例外:
印刷時にエラーが発生した場合
関連項目
status、setPrinterName()、setPrintJobName()、write()、endPrintJob()
形式:
public void endPrint(int printtype) throws com.fujitsu.form.PrintException
説明:
プリンタへの印刷データの出力を完了し、印刷処理を終了します。印刷の中止要求をプリンタに送信することもできます。このメソッドを呼び出すと、ステータスは印刷処理が実行されていない状態(PRINTOFF)となります。
パラメタ:
詳細を次に示します。
印刷要求を行う
印刷中止要求を行う
なお、PRINTCANCEL以外の指定は、すべてPRINTとして処理します。
戻り値:
なし
例外:
印刷時にエラーが発生した場合
関連項目
status、setPrinterName()、setPrintJobName()、write()、endPrintJob()
形式:
public void endPrintJob()
説明:
印刷業務を完了します。印刷処理で獲得した資源をすべて解放します。印刷を行った場合は、endPrint()メソッドで印刷を終了し、最後に必ずendPrintJob()メソッドを呼び出す必要があります。呼び出さなかった場合は、資源が解放されないで残る場合があります。このメソッドを呼び出すと、ステータスは印刷業務が終了している状態(PRINTJOBEND)となります。
パラメタ:
なし
戻り値:
なし
関連項目
status、write()、endPrint()
形式:
public org.w3c.dom.Document getTemplateXMLData() throws com.fujitsu.form.XmlProcessorException, com.fujitsu.form.FormIOException
説明:
電子フォームからXMLデータの雛形に対応するドキュメントオブジェクトを返します。
パラメタ:
なし
戻り値:
XMLデータの雛形を表すドキュメントオブジェクト
例外:
ドキュメントオブジェクトの生成に失敗した場合
電子フォームが見つからなかった場合
■ 補足
XMLデータ形式について/項目制御情報について
setXMLData()メソッドで扱うXMLデータおよびsetItemAttribute()メソッドで扱う項目制御情報は、データルートタグをルートとするドキュメントオブジェクトです。
setXMLData()メソッドで扱われるドキュメントオブジェクトについては、「2.3.1 処理の流れとデータ」の「■ Webブラウザから送信されるデータ」を参照してください。
setItemAttribute()メソッドで扱われるドキュメントオブジェクトについては、「2.3.1 処理の流れとデータ」の「■ 項目制御情報」を参照してください。
Webアプリケーション全体で同じ電子フォーム格納パスを使用する場合は、WindowsはFormcoordinatorの環境設定で、SolarisおよびLinuxはFormcoordinatorの環境設定コマンドのmxsetassetsdirコマンドで電子フォーム格納先ディレクトリを設定します。この場合、PrintDataBuilderクラスのコンストラクタでは、電子フォーム格納パスを省略できます。
Webアプリケーションごとに異なる電子フォーム格納パスを使用する場合は、サーブレットの初期化パラメタを利用することで、運用環境で格納先が変更になっても、Webアプリケーションを修正しないで格納先を変更できます。詳細については、「C.1.2 クラス:OutputDataBuilder」の「■ 補足」を参照してください。
サーバ印刷でサポートしているメディア種について
サーバ印刷でサポートしているメディア種を次に示します。
BMP-Windowsビットマップ
JPEG-基本DCT方式(ベースラインJPEG)(Windowsのみサポート)
JPEG-Exif形式(Windowsのみサポート)
EMF(Windowsのみサポート)
WMF(Windowsのみサポート)
TIFF-非圧縮
TIFF-MH圧縮(ITU-T Group3(1d) Modified Huffman)
TIFF-MR圧縮(ITU-T Group3(1d) Fax)
TIFF-MMR圧縮(ITU-T Group4(2d) Fax)
TIFF-PackBits
PNG
サポートしていないメディア種を指定した場合、メディアデータは印刷されません。
サーバ印刷とクライアント印刷の違いについて
サーバ印刷は、Webブラウザに電子フォームを表示しないでWebアプリケーションから電子フォームの印刷を行います。
電子フォームのプロパティに指定した、次に示す情報はサーバ印刷では有効になりません。
サーバ印刷時には、Java APIを使用して指定してください。
用紙種別(Windowsのみサポート)
用紙名(Windowsのみサポート)
印刷プリンタ名
給紙口名
印刷部数
オーバレイを印刷するかどうか
メディア格納ディレクトリ
サーバ印刷では、用紙種別、用紙名、および印刷ダイアログの表示を指定することはできません。
■ 使用例
PrintDataBuilderクラスの使用例を次に示します。
Webブラウザから送信された入力データで電子フォームを印刷する場合
この例では、InputDataBuilderクラスのgetXMLData()メソッドでWebブラウザからXMLデータ形式で送信された入力データのドキュメントオブジェクトを生成しています。生成したドキュメントオブジェクトをPrintDataBuilderクラスのsetXMLData()メソッドで設定してwrite()メソッドを行い、Webブラウザから送信されたデータで電子フォームを印刷しています。
import org.w3c.dom.* ; import javax.servlet.* ; import javax.servlet.http.* ; import java.io.* ; import com.fujitsu.form.* ; public class SampleServlet extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { try{ // InputDataBuilderを生成します。 InputDataBuilder idb = new InputDataBuilder(request); // Webブラウザから送信された入力データをドキュメントオブジェクトで取得 // します。 Document doc = idb.getXMLData() ; // PrintDataBuilderを生成します。 PrintDataBuilder prt = new PrintDataBuilder("file:///c:/pmd","sample") ; //SolarisおよびLinuxの場合は以下のように記述します。 //PrintDataBuilder prt = new PrintDataBuilder("file:////home/pmd","sample") ; try { // 出力先プリンタ名を設定します。 prt.setPrinterName("FUJITSU XL-6700") ; // 印刷ジョブ名を設定します。 prt.setPrintJobName("電子フォームのサンプル") ; // メディアデータ格納ディレクトリを設定します。 prt.setMediaDirectory("file:///c:/bmp") ; //SolarisおよびLinuxの場合は以下のように記述します。 // prt.setMediaDirectory("file:////home/bmp") ; // 給紙口名を設定します。 prt.setPaperTrayName("給紙カセット1") ; //SolarisおよびLinuxの場合は以下のように記述します。 // prt.setPaperTrayName("H1") ; //SolarisおよびLinuxの場合は置換フォント定義ファイルを指定します。 // prt.setFontMappingFileName("file:////home/env/fontdef") ; // Webブラウザから送信された入力データを設定します。 prt.setXMLData(doc) ; // 印刷要求を行います。 prt.write() ; // 印刷を完了します。 prt.endPrint() ; } catch(Exception e) { // 印刷要求を中止します。 if (prt.status == PrintDataBuilder.PRINTON) { prt.endPrint(PrintDataBuilder.PRINTCANCEL) ; } // 例外処理 ・ ・ ・ } // 印刷業務を終了します。 prt.endPrintJob() ; } catch(Exception e) { // 例外処理 ・ ・ ・ } } }