createDocumentFromAppFileはコンソールアプリケーションです。コンソールアプリケーションは、eDocArrangementのコマンド実行から呼び出すことが可能です。
PDFやExcel文書等をDocuWorks文書に変換します。
入力ファイルがPDFの場合、DocuWorksの変換機能を使用して変換できます。
入力ファイルがPDF以外の形式はWindowsで関連付けされているアプリケーションの印刷機能を使用して変換を行います。(PDFも関連付けされているアプリケーションで変換することも可能です。)
但し、Windowsで関連付けされているアプリケーションの印刷機能を使用する場合、各アプリケーションの印刷機能の仕様に依存することになり、ファイルの形式や内容によっては、変換ができなかったり、変換の途中で停止してしまう場合があるため、自動処理でアプリケーションの印刷機能を使った変換を行うのはお勧めできません。
自動処理で利用する場合は、入力ファイルをPDFに限定して、DocuWorksの変換機能(-nusaオプション)を使用する方法を推奨いたします。
createDocumentFromAppFile.exe -i 入力アプリケーションファイル名 -o 出力文書ファイル名 [-wo] [-nusa] [-matw] [-wf 作業フォルダ名] [-saf 文書変換成功時のアプリケーションファイル移動フォルダ名] [-faf 文書変換失敗時のアプリケーションファイル移動フォルダ名] [-sraf] [-async] [-pto 文書変換タイムアウト] [-slf ログファイル名] [-flf エラーログファイル名] [-z 結果ファイル名] [-ec]
「name 1.txt」のように値にスペースが含まれる場合は、"name 1.txt" のようにダブルクォートで括ってください。
[]は省略可能な引数です。 引数の仕様は以下の通りです。
| -i 入力アプリケーションファイル名 | 変換元のアプリケーションファイル名を指定します。 |
|---|---|
| -o 出力文書ファイル名 |
出力する文書ファイル名を指定します。 出力先フォルダに同一ファイル名のファイルが存在する時は、ファイル名に連番を付与して重複しないファイル名で出力します。 出力先フォルダが存在しない時はフォルダを作成します。 |
| -wo | 入力アプリケーションファイルをオリジナルデータとして出力文書ファイルに含めます。 |
| -nusa | DocuWorksの文書変換機能を使用して文書変換を行います。 入力アプリケーションファイルがPDFファイルの時のみ有効です。 |
| -matw |
文書変換前にアプリケーションファイルを作業フォルダに移動します。 -matw スイッチを指定する時は、-saf スイッチ、-sraf スイッチの何れかと -faf スイッチで変換処理後のアプリケーションファイル移動フォルダなどを指定してください。 |
| -wf 作業フォルダ名 | 文書変換で使用する作業フォルダを指定します。 |
| -saf 文書変換成功時のアプリケーションファイル移動フォルダ名 |
文書変換成功時のアプリケーションファイル移動フォルダを指定します。 移動先フォルダに同一ファイル名のファイルが存在する時は、ファイル名に連番を付与して重複しないファイル名で移動します。 移動先フォルダが存在しない時はフォルダを作成します。 -matw スイッチを指定した時のみ有効です。 |
| -faf 文書変換失敗時のアプリケーションファイル移動フォルダ名 |
文書変換失敗時のアプリケーションファイル移動フォルダを指定します。 移動先フォルダに同一ファイル名のファイルが存在する時は、ファイル名に連番を付与して重複しないファイル名で移動します。 移動先フォルダが存在しない時はフォルダを作成します。 -matw スイッチを指定した時のみ有効です。 |
| -sraf |
文書変換成功時にアプリケーションファイルを削除します。 -matw スイッチを指定した時のみ有効です。 -saf スイッチが指定されていた時は無視されます。 |
| -async | 文書変換を非同期実行します。文書変換を実行する別プロセスを起動後、自プロセスはすぐに終了します。 |
| -pto 文書変換タイムアウト | 文書変換のタイムアウト値を秒で指定します。 省略した際のデフォルト値は 180 です。 |
| -slf ログファイル名 |
ログを出力するファイル名を指定します。 ログファイルが存在していた時は追加書き込みします。 ログファイルを出力するフォルダが存在しない時はフォルダを作成します。 |
| -flf エラーログファイル名 |
エラーログを出力するファイル名を指定します。 エラーログファイルが存在していた時は追加書き込みします。 エラーログファイルを出力するフォルダが存在しない時はフォルダを作成します。 |
| -z 結果ファイル名 |
処理結果をファイルに出力します。 結果ファイルが存在していた時は上書きします。 処理結果を出力するフォルダが存在しない時はフォルダを作成します。 |
| -ec | 結果ファイルに出力される終了コードと、エラーメッセージの一覧を出力します。 |
-asyncオプションを指定すると非同期で処理が実行されます。
非同期実行の場合、ワーカープロセスにジョブを登録して、呼び出し元のプロセスは直ぐに終了します。
ワーカープロセスは、ジョブキューに登録されたジョブをFIFO(先入れ先出し)順で1つずつ順次実行します。文書変換処理はランナープロセスとして実行されます。
eDocArrangementから呼び出す場合で、非同期実行を使用する場合、以下のような呼び出し方法を行うことを想定しています。
createDocumentFromAppFile.exe -i "入力アプリケーションファイル名" -o "出力ドキュメントファイル名" -nusa -async -matw -saf "文書変換成功時の入力アプリケーションファイル移動フォルダ名" -faf "文書変換失敗時の入力アプリケーションファイル移動フォルダ名" -slf "ログファイル名" -flf "エラーログファイル名" -wf "作業フォルダ名"
createDocumentFromAppFileの-saf, -fafオプションを使って、変換処理後に入力ファイルを指定フォルダに移動します。
変換に失敗した場合は、エラーフォルダに移動されます。
複数のジョブが登録されている場合は、ジョブキューに登録された順番で1つずつ文書変換を実行します。
また、非同期実行の場合は、-slf, -flf オプションを指定してcreateDocumentFromAppFileでログの出力を行うことを推奨します。
文書変換処理を円滑に行う為に文書変換処理のキュー管理を行っています。
createDocumentFromAppFileコマンド実行すると、呼び出し元(同期 or 非同期)、ワーカー、ランナーの3つのプロセスが起動します。複数のプロセスが連携して文書変換を行います。
-asyncオプションを指定しなかった時は同期的に処理が実行されますが、同期実行の場合でもワーカーとランナーのプロセスが起動して文書変換処理を行います。同期プロセスは対象の文書変換処理を実行するランナープロセスが終了するまで待機します。
createDocumentFromAppFile実行中にタスクマネージャーで確認すると、コマンド起動の数よりも多い数のプロセスが存在しますが正常な状態です。
createDocumentFromAppFileのプロセス名は、呼び出し元(同期 or 非同期)、ワーカー、ランナー、全て createDocumentFromAppFile となります。
全ての文書変換処理が終わった後も暫くの間、ワーカーのプロセスが常駐していますが、時間経過で自動的に終了します。
変換後のXDW文書の画質等については、DocuWorks Printerの印刷設定画面の内容が反映されます。余白などの設定も対象となるようです。
-matwオプションを指定した場合、以下のエラー処理を行います。
-saf, -fafのフォルダが指定されていること。また、指定されたフォルダが有効なパスであること。
条件を満たしていない場合は、処理を終了します。
入力ファイルを-wf で指定されたフォルダ(作業フォルダ)に移動する。
XDW_BeginCreationFromAppFile API(DocuWorksプリンターへ印刷)を呼び出して処理を行う。
XDW_BeginCreationFromAppFile APIが終了せず戻ってこない場合※1は、以下の処理を試行します。
※1 アプリケーションファイルの内容や関連付けの状態によって、XDW_BeginCreationFromAppFile APIが終了しないケースがあります。
印刷完了後に出力されたXDW文書の存在確認を行い、ファイルが存在しない場合※2は、以下の処理を試行します。
※2 アプリケーションファイルの内容によって、XDW文書が出力されないケースがあります。
以下の内容でPDF文書をXDW文書に変換する。
| 入力ファイル (-i) | C:\PDFからXDW変換\10_XDW変換\領収書_20160321.pdf |
|---|---|
| 出力ファイル (-o) | C:\PDFからXDW変換\20_変換済み\領収書_20160321.xdw |
| 変換成功時の入力ファイル移動先フォルダ (-saf) | C:\PDFからXDW変換\30_処理済みPDF |
| 変換失敗時の入力ファイル移動先フォルダ (-faf) | C:\PDFからXDW変換\15_エラー |
| ログの出力先 (-slf) | C:\PDFからXDW変換\90_System\90_Log\CommandLog\log_20210708.txt |
| エラーログの出力先 (-flf) | C:\PDFからXDW変換\90_System\90_Log\CommandLog\Errorlog_20210708.txt |
| 作業フォルダ (-wf) | C:\PDFからXDW変換\90_System\80_Tool\createDocumentFromAppFile |
createDocumentFromAppFile.exe -i "C:\PDFからXDW変換\10_XDW変換\領収書_20160321.pdf" -o "C:\PDFからXDW変換\20_変換済み\領収書_20160321.xdw" -nusa -async -matw -saf "C:\PDFからXDW変換\30_処理済みPDF" -faf "C:\PDFからXDW変換\15_エラー" -slf "C:\PDFからXDW変換\90_System\90_Log\CommandLog\log_20210708.txt" -flf "C:\PDFからXDW変換\90_System\90_Log\CommandLog\Errorlog_20210708.txt" -wf "C:\PDFからXDW変換\90_System\80_Tool\createDocumentFromAppFile"
以下の内容でWord文書をXDW文書に変換する。
| 入力ファイル (-i) | C:\アプリケーション変換\10_XDW変換\test.docx |
|---|---|
| 出力ファイル (-o) | C:\アプリケーション変換\20_変換済み\test.xdw |
| 変換成功時の入力ファイル移動先フォルダ (-saf) | C:\アプリケーション変換\30_処理済み |
| 変換失敗時の入力ファイル移動先フォルダ (-faf) | C:\アプリケーション変換\15_エラー |
| ログの出力先 (-slf) | C:\アプリケーション変換\90_System\90_Log\CommandLog\log_20210708.txt |
| エラーログの出力先 (-flf) | C:\アプリケーション変換\90_System\90_Log\CommandLog\Errorlog_20210708.txt |
| 作業フォルダ (-wf) | C:\アプリケーション変換\90_System\80_Tool\createDocumentFromAppFile |
createDocumentFromAppFile\createDocumentFromAppFile.exe -i "C:\アプリケーション変換\10_XDW変換\test.docx" -o "C:\アプリケーション変換\20_変換済み\templateproposal.xdw" -async -matw -saf "C:\アプリケーション変換\30_処理済み" -faf "C:\アプリケーション変換\15_エラー" -slf "C:\アプリケーション変換\90_System\90_Log\CommandLog\log_20210708.txt" -flf "C:\アプリケーション変換\90_System\90_Log\CommandLog\Errorlog_20210708.txt" -wf "C:\アプリケーション変換\90_System\80_Tool\createDocumentFromAppFile"
終了コードは以下の通りです。
結果ファイルに出力されるメッセージの内容はオプションスイッチの指定によって変化します。以下は代表的なメッセージの例です。
| 0 | 正常終了 |
|---|---|
| 1 | 対象外のスイッチが指定されています。 'スイッチ' |
| 2 | 入力アプリケーションファイルが指定されていません。 |
| 3 | 出力ドキュメントファイルが指定されていません。 |
| 4 | 結果ファイルが指定されていません。 |
| 5 | 結果ファイルの書き込みに失敗しました。 |
| 6 | 入力アプリケーションファイルが存在しません。 '入力アプリケーションファイル名' |
| 7 | ログファイルが指定されていません。 |
| 8 | エラーログファイルが指定されていません。 |
| 9 | 作業フォルダが指定されていません。 |
| 10 | 作業フォルダの作成に失敗しました。 '作業フォルダ' |
| 11 | 文書変換成功時のアプリケーションファイル移動フォルダー、文書変換成功時にアプリケーションファイルを削除、何れも指定されていません。 |
| 12 | 文書変換成功時のアプリケーションファイル移動フォルダの作成に失敗しました。 '文書変換成功時のアプリケーションファイル移動フォルダ' |
| 13 | 文書変換失敗時のアプリケーションファイル移動フォルダが指定されていません。 |
| 14 | 文書変換失敗時のアプリケーションファイル移動フォルダの作成に失敗しました。 '文書変換失敗時のアプリケーションファイル移動フォルダ' |
| 15 | 文書変換タイムアウトは10以上の整数を指定してください。 '文書変換タイムアウト' |
| 16 | 入力アプリケーションファイルを作業フォルダへ移動する際にエラーが発生しました。 |
| 17 | 入力アプリケーションファイルを作業フォルダへコピーする際にエラーが発生しました。 |
| 18 | 作業フォルダのアプリケーションファイルを変換成功時のフォルダへコピーする際にエラーが発生しました。 |
| 19 | 作業フォルダのアプリケーションファイルを変換失敗時のフォルダへコピーする際にエラーが発生しました。 |
| 20 | 作業フォルダのアプリケーションファイルをアプリケーションファイル退避フォルダへコピーする際にエラーが発生しました。 |
| 21 | 作業フォルダの文書ファイルを出力文書フォルダへコピーする際にエラーが発生しました。 |
| 22 | 文書変換タイムアウトが発生しました。 '入力アプリケーションファイル名' |
| 23 | 文書変換に失敗しました。 '入力アプリケーションファイル名' |
| 24 | ジョブフォルダーの作成に失敗しました。 |
| 25 | ワーカープロセス関連のエラーが発生しました。 |
| 99 | 例外が発生しました。 'エラーメッセージ' |
-nusaオプションを使用しない場合、Windowsで関連付けされているアプリケーションの印刷機能を使用して変換を行いますが、以下の様な問題が発生する可能性があります。
上記のような問題が発生した場合、関連付けされたアプリケーションの印刷の仕様のため、弊社では対処することができません。また、アプリケーションの仕様により、データ消失など想定しない問題が発生する可能性があります。
ページ数の多いファイルを変換すると、印刷処理に時間がかかるため印刷後のステータスが完了になるまで時間がかかります。
また、印刷指示を行ったあとに、アプリケーションの問題で印刷が完了せず停止してしまう場合があります。
その場合、印刷中なのか、問題が発生して停止してしまったのかは、アプリケーション側からは判断ができません。
そこで、文書変換タイムアウト(-ptoオプション)を実装しています。デフォルトでは180秒でタイムアウトになり印刷をキャンセルします。
ページ数の多いファイルを変換する場合は、印刷が完了する前に、180秒でキャンセルしてしまうため、 -pto オプションを指定してタイムアウトの時間を長くしてください。
以下の条件を満たす時に、PDFファイルのページ数を元に文書変換タイムアウトを自動計算します。(タイムアウトの目安は、100ページ当たり3分ほど)
createDocumentFromAppFileは、eDocArrangementの購入者にライセンスされます。試用については、eDocArrangementと同じ期間、試用できます。
createDocumentFromAppFileは、eDocArrangementの製品の一部としての扱いとなり、eDocArrangementの使用許諾契約が適用されます。
.NET Framework 4.6.2 以降
DocuWorks 9.1 ~ 10
DocuWorks 9 以降がインストールされたサーバー環境で利用する場合、PDFをDocuWorks文書に変換する機能(-nusaオプション)についてライセンス上制限されます。(デスクトップ利用の場合はライセンス不要)
-nusaオプションはDocuWorks9以降で使用可能です。
制限を解除するために、富士フイルムビジネスイノベーション様から、サーバーアプリケーション向けライセンス商品「DocuWorks OCR/PDF License for Development Tool Kit (サーバーアプリケーション用)」をご購入・設置していただく必要があります。
詳しくは、以下のサイトをご覧ください。
https://www.fujifilm.com/fb/support/software/docuworks_9/info/contents/info_003.html
qpdf 12.3.2 を使用しています。