クラス DocConverter_OOO
java.lang.Object
org.opengion.hayabusa.report2.DocConverter_OOO
OpenOfficeを利用して様々な形式のファイルを読み込み、出力・印刷を行うための変換クラスです。
変換を行うことのできる入出力のフォーマット以下の通りです。
[対応フォーマット]
入力[Calc(ods) ,Excel(xls) ] ⇒ 出力[Calc(ods) ,Excel(xls,xlsx) ,PDF]
入力[Writer(odt) ,Word(doc) ] ⇒ 出力[Writer(odt) ,Word(doc,docx) ,PDF]
入力[Impress(odp),PowerPoint(ppt)] ⇒ 出力[Impress(odp),PowerPoint(ppt,pptx) ,PDF]
入力[ * 上記の全て ] ⇒ 印刷
※ xlsx,docx,pptx は、MS 2007形式の為、LibreOffice のみ利用できます。
変換を行うには、以下の2通りの方法があります。
(1)簡易的な変換メソッドを利用する場合
#convert(String, String)を利用して、変換を行います。
この場合、出力形式は、出力ファイルの拡張子に従って自動的に決定されます。
このため、印刷処理などを行う場合は、(2)の方法で出力して下さい。
(2)段階的に各メソッドを呼び出して変換する場合
オブジェクトを生成した後、
open()
、#(各種変換メソッド)、Object.clone()
を
順番に呼び出して変換を行います。
この場合、出力形式は、それに対応するメソッドを呼び出すことで決定されます。
また、変換を行うための、各種メソッドは、例外としてThrowableを投げるように定義されています。
このクラスを利用する場合は、このThrowableをcatchし、catch句で、必ずclose(boolean)
に、
"true"(エラー発生時のクローズ処理)を指定して、終了処理を行って下さい。
(これを行わない場合、OpenOfficeの不要なプロセスが残ってしまう可能性があります)
また、出力ファイルが既に存在する場合、出力ファイルは一旦削除された後、処理されます。
なお、入力ファイルと出力ファイルが同じ場合、何も処理されません。(例外も発行されません)
入力ファイルを、CSV形式で複数指定した場合、複数の入力ファイルをマージして出力します。
※1 現状は、ファイルのマージは、入力ファイルがExcelまたはCalcの場合のみ対応しています。
※ DocConverter は、クラウド対応されていません。変換時はローカルファイル間で行ってください。- 機能分類
- 帳票システム
- 導入されたバージョン:
- JDK1.6
-
コンストラクタの概要
コンストラクタコンストラクタ説明DocConverter_OOO
(String input) コンストラクタです。 #DocConverter(input, true)と同じです。DocConverter_OOO
(String[] input) コンストラクタです。 #DocConverter(input, true)と同じです。DocConverter_OOO
(String[] input, boolean isOl) コンストラクタで、Excweptionを出さないための private メソッドです。 -
メソッドの概要
修飾子とタイプメソッド説明void
出力ファイルから出力形式を自動判別し、変換を行います。 入出力形式で未対応の場合(形式は入出力ファイルの拡張子で判別)、例外が発行されます。 正常に処理が終了した場合は、#close()を発行し、終了処理を行って下さい。 また、例外が発生した場合は、#close(true)を発行し、終了処理を行って下さい。void
close()
Calcコンポーネントをクローズします。 このクローズ処理は、処理が正常終了した場合に呼び出しする必要があります。 例外が発生した場合は、#close(true)を発行し、終了処理を行って下さい。 このメソッドは#close(false)と同じです。void
close
(boolean isErr) Calcコンポーネントをクローズします。 引数のisErrがtrueの場合、この変換オブジェクトで生成されたプロセスは強制的に破棄されます。 falseの場合は、プロセスは、ファクトリクラスを経由して、キャッシュに戻されます。 (バッチ処理の場合は、いずれの場合も、プロセスは強制的に破棄されます) 起動から変換、クローズまでの書く処理で例外が発生した場合は、#close(true)を発行し、終了処理を行って下さい。 #close(false)は#close()と同じであるため、通常利用することはありません。static void
ドキュメントの変換を行うための簡易メソッドです。 変換方法は、出力ファイルの拡張子により自動的に決定されます。 isOnlineがtrueに指定された場合、soffice.binのプロセスをファクトリークラス経由で生成し、 キャッシュします。 但し、システムリソースが読み込まれないような、バッチファイルから起動した場合は、この方法は 利用できないため、isOnlineをfalseに指定する必要があります。static void
ドキュメントの変換を行います。 変換方法は、出力ファイルの拡張子により自動的に決定されます。void
open()
SOficeのコンポーネントを起動します。 正常に処理が終了した場合は、#close()を発行し、終了処理を行って下さい。 また、例外が発生した場合は、#close(true)を発行し、終了処理を行って下さい。void
PDF出力を行います。 入力形式で未対応の場合(形式は入力ファイルの拡張子で判別)、例外が発行されます。 正常に処理が終了した場合は、#close()を発行し、終了処理を行って下さい。 また、例外が発生した場合は、#close(true)を発行し、終了処理を行って下さい。void
印刷を行います。 正常に処理が終了した場合は、#close()を発行し、終了処理を行って下さい。 また、例外が発生した場合は、#close(true)を発行し、終了処理を行って下さい。
-
コンストラクタの詳細
-
DocConverter_OOO
コンストラクタです。 #DocConverter(input, true)と同じです。- パラメータ:
input
- ファイル一覧(CSV形式)- 関連項目:
-
DocConverter_OOO
コンストラクタです。 #DocConverter(input, true)と同じです。- パラメータ:
input
- ファイル一覧(配列)- 関連項目:
-
DocConverter_OOO
コンストラクタで、Excweptionを出さないための private メソッドです。 isOnline(isOl)がtrueに指定された場合、soffice.binのプロセスをファクトリークラス経由で生成し、 キャッシュします。 但し、システムリソースが読み込まれないような、バッチファイルから起動した場合は、この方法は 利用できないため、isOnlineをfalseに指定する必要があります。- パラメータ:
input
- ファイル一覧(配列)isOl
- オンライン(Web環境での使用)かどうか
-
-
メソッドの詳細
-
open
SOficeのコンポーネントを起動します。 正常に処理が終了した場合は、#close()を発行し、終了処理を行って下さい。 また、例外が発生した場合は、#close(true)を発行し、終了処理を行って下さい。- 例外:
Throwable
- 何らかのエラーが発生した場合。- 関連項目:
- 変更履歴:
- 5.1.7.0 (2010/06/01) マージ処理対応
-
close
Calcコンポーネントをクローズします。 このクローズ処理は、処理が正常終了した場合に呼び出しする必要があります。 例外が発生した場合は、#close(true)を発行し、終了処理を行って下さい。 このメソッドは#close(false)と同じです。- 例外:
Throwable
- 何らかのエラーが発生した場合。- 関連項目:
-
close
Calcコンポーネントをクローズします。 引数のisErrがtrueの場合、この変換オブジェクトで生成されたプロセスは強制的に破棄されます。 falseの場合は、プロセスは、ファクトリクラスを経由して、キャッシュに戻されます。 (バッチ処理の場合は、いずれの場合も、プロセスは強制的に破棄されます) 起動から変換、クローズまでの書く処理で例外が発生した場合は、#close(true)を発行し、終了処理を行って下さい。 #close(false)は#close()と同じであるため、通常利用することはありません。- パラメータ:
isErr
- trueの場合、この変換オブジェクトで生成されたプロセスは強制的に破棄されます。- 変更履歴:
- 4.2.4.1 (2008/07/07 ) 終了処理を60回で終わるように修正, 4.3.0.0 (2008/07/15 ) ↑は6秒しか待っていなかったので、60秒待つように修正
-
print
印刷を行います。 正常に処理が終了した場合は、#close()を発行し、終了処理を行って下さい。 また、例外が発生した場合は、#close(true)を発行し、終了処理を行って下さい。- パラメータ:
printer
- プリンター名- 例外:
Throwable
- 何らかのエラーが発生した場合。- 変更履歴:
- 4.3.0.0 (2008/07/16) スプールが終わるまでwaitし、さらにプリンタ発行の状況を監視し、正常終了かどうかを判断, 4.3.7.3 (2009/06/22) 存在しないプリンターを指定した場合のエラーハンドリングを追加, 5.1.2.0 (2010/01/01) CentOS等は、OS_INFOがLinux UNKNOWNとなるため、判定条件を変更
-
pdf
PDF出力を行います。 入力形式で未対応の場合(形式は入力ファイルの拡張子で判別)、例外が発行されます。 正常に処理が終了した場合は、#close()を発行し、終了処理を行って下さい。 また、例外が発生した場合は、#close(true)を発行し、終了処理を行って下さい。- パラメータ:
outputName
- 出力ファイル名pdfPasswd
- PDFパスワード- 例外:
Throwable
- 何らかのエラーが発生した場合。- 変更履歴:
- 8.1.0.3 (2022/01/21) checkOutputメソッドは呼出元で判定する。
-
auto
出力ファイルから出力形式を自動判別し、変換を行います。 入出力形式で未対応の場合(形式は入出力ファイルの拡張子で判別)、例外が発行されます。 正常に処理が終了した場合は、#close()を発行し、終了処理を行って下さい。 また、例外が発生した場合は、#close(true)を発行し、終了処理を行って下さい。- パラメータ:
outputName
- 出力ファイル名- 例外:
Throwable
- 何らかのエラーが発生した場合。- 変更履歴:
- 8.1.0.3 (2022/01/21) checkOutputメソッドは呼出元で判定する。
-
convert
ドキュメントの変換を行うための簡易メソッドです。 変換方法は、出力ファイルの拡張子により自動的に決定されます。 isOnlineがtrueに指定された場合、soffice.binのプロセスをファクトリークラス経由で生成し、 キャッシュします。 但し、システムリソースが読み込まれないような、バッチファイルから起動した場合は、この方法は 利用できないため、isOnlineをfalseに指定する必要があります。- パラメータ:
inputFile
- 入力ファイル名配列outputFile
- 出力ファイル名isOnline
- オンライン(Web環境での使用)かどうか- 変更履歴:
- 8.0.3.0 (2021/12/17) ファイル連結の簡易メソッドは、使用しません。, 8.5.5.1 (2024/02/29) spotbugs CT_CONSTRUCTOR_THROW(コンストラクタで、Excweptionを出さない) class を final にすれば、警告は消える。
-
main
ドキュメントの変換を行います。 変換方法は、出力ファイルの拡張子により自動的に決定されます。- パラメータ:
args
- コマンド引数配列- 変更履歴:
- 4.3.1.1 (2008/08/23) mkdirs の戻り値判定, 6.3.9.1 (2015/11/27) A method/constructor shouldnt explicitly throw java.lang.Exception(PMD)。, 8.0.3.0 (2021/12/17) ファイル連結の簡易メソッドは、使用しません。
-