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 作業フォルダ名 |
文書変換で使用する作業フォルダを指定します。書き込めるフォルダを指定してください。 省略した時は createDocumentFromAppFile.exe のフォルダを使用します。createDocumentFromAppFile.exe のフォルダに書き込めない時は %LOCALAPPDATA%\TechnoStyle\createDocumentFromAppFile を使用します。 文書変換はPCで1つのワーカープロセスが順に行います。ワーカープロセスが動いている時は、そのワーカープロセスの作業フォルダを使用します。 |
|
-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が終了しないケースがあります。
作業フォルダに移動された入力ファイルを-fafで指定されたフォルダ (文書変換失敗時移動先)に移動する。
文書変換失敗時移動先のフォルダに移動が失敗した場合は、createDocumentFromAppFile.exeのフォルダに移動する。
DocuWorksプリンターの印刷状態を取得して完了するまで待機する。
印刷完了後に出力されたXDW文書の存在確認を行い、ファイルが存在しない場合※2は、以下の処理を試行します。
※2 アプリケーションファイルの内容によって、XDW文書が出力されないケースがあります。
作業フォルダに移動された入力ファイルを-fafで指定されたフォルダ (文書変換失敗時移動先)に移動する。
文書変換失敗時移動先のフォルダに移動が失敗した場合は、createDocumentFromAppFile.exeのフォルダに移動する。
文書変換を行うプロセスが、入力ファイルを移動しないまま終了した場合※3は、以下の処理を試行します。
※3 文書変換を行うプロセスで例外が発生した、強制終了された、などのケースです。
作業フォルダに移動された入力ファイルを-fafで指定されたフォルダ (文書変換失敗時移動先)に移動する。
文書変換失敗時移動先のフォルダに移動が失敗した場合は、createDocumentFromAppFile.exeのフォルダに移動する。
どちらにも移動できなかった場合は、作業フォルダの job~コンピューター名\failed フォルダに残す。
例1
以下の内容でPDF文書をXDW文書に変換する。
DocuWorksの文書変換機能を使用する。(-nusa)
非同期で実行する。(-async)
作業フォルダを使用した変換を行う。(文書変換成功時、失敗時のファイル移動を行う) (-matw)
|
項目 |
値 |
|---|---|
|
入力ファイル (-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"
例2
以下の内容でWord文書をXDW文書に変換する。
Wordの印刷機能を使用する。(Wordがインストールされている必要があります。)
非同期で実行する。(-async)
作業フォルダを使用した変換を行う。(文書変換成功時、失敗時のファイル移動を行う) (-matw)
|
項目 |
値 |
|---|---|
|
入力ファイル (-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分ほど)
-pto で文書変換タイムアウトを指定していない
-nusa を指定している
入力アプリケーションファイルがPDFファイル
多くの場合、適切にタイムアウトの判定が行われるようになります。
-nusaオプションを使用する場合、以下の様な問題が発生する可能性があります。
サービスからの実行も可能ですが、実行アカウントでDocuWorksの初期設定が行われている必要があります。初期設定が行われていない場合はエラーになります。(デスクトップにログインできるアカウントでないと実行できません。)
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 を使用しています。
-wfを省いた時に、createDocumentFromAppFile.exeのフォルダに書き込めない場合は %LOCALAPPDATA%\TechnoStyle\createDocumentFromAppFile を使用するように修正。Program Filesの下に入れたcreateDocumentFromAppFile.exeを管理者として実行しない時に、ジョブキューフォルダを作れずに終了コード 25(ワーカープロセス関連のエラーが発生しました。)で終了する不具合を修正。(書き込める時は今までどおりcreateDocumentFromAppFile.exeのフォルダを使用します)
ジョブキューフォルダを作れない時は、呼び出したプロセスが終了コード 24(ジョブフォルダーの作成に失敗しました。)で終了するように修正。
ワーカープロセスが動いている間に、別の-wfを指定して実行すると、文書変換されずに終了コード 99 で終了し、-matwの入力ファイルが失われる不具合を修正。文書変換はワーカープロセスの作業フォルダで行う。
文書変換を行うプロセスが、入力ファイルを移動しないまま終了した場合(例外・強制終了など)、入力ファイルを-fafで指定されたフォルダに移動するように修正。(今までは入力ファイルが失われていた)
標準出力・標準エラー出力を受け取る形で呼び出すと、文書変換が終わってもワーカープロセスが終了するまで(約15秒)戻らない不具合を修正。ワーカープロセス・文書変換を行うプロセスは、呼び出したプロセスの標準入力・標準出力・標準エラー出力を引き継がない。(標準出力には、呼び出したプロセスのメッセージだけが出力されます。文書変換の結果は終了コード・結果ファイル・ログファイルで確認してください)
ヘルプの終了コードの一覧を、-ecで出力される一覧に合わせた。
印刷ジョブの管理方式を、従来のプロセス常駐方式からジョブキュー管理プロセス方式に変更。
文書変換非同期プロセス最大数を指定する -apmc を廃止。
以下の条件を満たす時に、PDFファイルのページ数を元に文書変換タイムアウトを自動計算するように変更。(タイムアウトの目安は、100ページ当たり3分ほど)
-pto で文書変換タイムアウトを指定していない
-nusa を指定している
入力アプリケーションファイルがPDFファイル
可変引数のスイッチの引数に対象外のスイッチが含まれていた時はエラーにしないように修正。
「入力アプリケーションファイルが存在しない」などの、文書変換処理を始められないエラーはログファイルには書き込まれない仕様だったが、文書変換処理を始められないエラーであってもログファイルに記録するように修正。
スイッチ -sraf を追加。-matw を指定した際に、文書変換成功時にアプリケーションファイルを削除します。-saf が指定されていると -sraf は無視されます。
入力アプリケーションファイルの移動や削除が完了するまで出力文書ファイルをロックするように変更。
対象外のスイッチを指定した時にエラーとなるように修正。
新規リリース。