printToPdfFromDocuWorksFileはコンソールアプリケーションです。コンソールアプリケーションは、eDocArrangementのコマンド実行から呼び出すことが可能です。
DocuWorks Viewerの印刷機能※を使用して、DocuWorks文書をPDFファイルに変換します。
※ "Microsoft Print to PDF" や "DocuWorks PDF" などの仮想プリンターを使用します。物理プリンターを指定すればプリンターへの印刷を行うこともできます。
仮想プリンターを使用してPDFを出力するので、DocuWorks文書がテキストを持っていれば、出力されるPDFもテキストを保持したPDFとなります。
DocuWorks Viewerを使った印刷の問題点
DocuWorks Viewer (dwviewer.exe)はコマンド実行時のオプションを指定することで、指定のDocuWorks文書を印刷することができます。
しかし、dwviewer.exeの仕様に以下の問題があり、無条件で呼び出すだけでは自動処理としては問題が生じます。
dwviewer.exeで印刷中のダイアログを表示しない「/spt」や「/oopnocancel」オプションを指定しても、XDWファイルが破損している場合や、プリンターのスプーラーがメモリ不足になった場合などは、エラーダイアログがでてしまう。
サービスプログラムや常駐アプリから実行した場合には、ダイアログが表示されてしまうケースがあるとダイアログを閉じることができないため、そこで処理が停止してしまいます。自動処理では致命的な問題となります。
そのため、printToPdfFromDocuWorksFileは以下の様な対策を行っています。
DocuWorks文書のセキュリティや破損をチェック
printToPdfFromDocuWorksFileが、dwviewer.exeを呼び出す前にDocuWorks文書がオープンできるかチェックします。
正常にオープンできなかった場合は、dwviewer.exeの呼び出しは行わず、エラー処理を行い処理を終了します。
DocuWorks Viewer及び、DocuWorks PDFのダイアログ表示のチェック
DocuWorks ViewerやDocuWorks PDFがダイアログを表示すると、自動処理ではダイアログが表示されたままになり、DocuWorks Viewerのプロセスが残ったままの状態になります。
そこでprintToPdfFromDocuWorksFileは、DocuWorks ViewerやDocuWorks PDFのダイアログ表示を検出して、閉じる処理を試行します。その後プロセスが終了すれば、エラー処理を行います。
printToPdfFromDocuWorksFileがダイアログを閉じる直前のスクリーンショットを保存する事もできます。
一定時間、ダイアログを閉じる処理を試行してもプロセスが終了しない場合は、エラー処理を行います。その場合、最終的にDocuWorks Viewerのプロセスが残ったままになる可能性があります。
ログオフ状態でサービスから実行を行うとデスクトップが作られないので、DocuWorks Viewerが表示するダイアログを閉じることができません。
「-ppto 60」のようにページ出力タイムアウトを指定すると印刷開始後にダイアログが表示された場合はタイムアウトになるので「-ftwto」を同時に指定するとDocuWorks Viewerを強制終了します。「-ppto 60 -ftwto」を指定するとサービスから実行した場合でも、DocuWorks Viewerがダイアログを表示したままにならず、エラー処理と次の処理を継続実行することができます。
プリンターの印刷ジョブ数をコントロール
"Microsoft Print to PDF" や "DocuWorks PDF"などの仮想プリンターに大量の印刷指示を行うと、仮想プリンターの動作が不安定になります。
printToPdfFromDocuWorksFileは仮想プリンターの印刷ジョブ数を確認して、2つ以上にならないように待機します。
Windows11のバージョン24H2対応
Windows11のバージョン24H2でプリンターキューを開いた状態でDocuWorks PDFやDocuWorks Viewerを使ってPDF変換を行うと、不完全なPDFが作成される問題が発生しています。
printToPdfFromDocuWorksFileを使用時はプリンターキューを開かないでください。printToPdfFromDocuWorksFileはプリンターキューが開かれていることを検出すると処理中のファイルをエラー処理します。
印刷ページ毎のタイムアウトによるエラー処理
印刷ジョブから印刷中のページ数を取得できるため、一定時間ページ数に変化がない場合は、印刷に問題が発生している可能性があると判断できます。-pptoオプションを指定すると、指定した秒数の間ページ数が変化しない場合に、印刷ジョブをキャンセルしてエラー処理を行うようになります。
タイムアウト値によるエラー処理
上記の対策を行うことでdwviewer.exeがエラーダイアログを出力することは、ほぼなくなりますが、未知の問題や仮想プリンター側の問題等で印刷が正常終了しないケースがあるかもしれません。
printToPdfFromDocuWorksFileはそのようなレアケースでも対処できるように、-ptoオプションを指定するとdwviewer.exeを呼び出したあと、一定時間制御が戻らない場合はprintToPdfFromDocuWorksFileのエラー処理を行います。
具体的には、印刷ジョブに対して一時停止、キャンセル処理を行います。通常はキャンセルを行ったあと、dwviewer.exeのプロセスは自動的に終了します。
キャンセルしてもdwviewer.exeのプロセスが終了しないケースがある場合は、-ftwtoを指定することでdwviewer.exeのプロセスに対して強制終了の指示を行うことができます。
デフォルト(-ptoオプションを指定しない場合)ではページ数が多いなど、様々なサイズのDocuWorks文書に対応する為、印刷処理が完了するまで待ち続けるようになっています。(処理時間の制限は設けていません)
DocuWorks Viewerや印刷処理が停止してしまう事がある場合は、-ptoオプションで適切なタイムアウト値を設定してください。
書式
printToPdfFromDocuWorksFile.exe -i 入力DocuWorks文書ファイル名 -p プリンター名 [ドライバー名 [ポート名]] [-o 出力PDFファイル名] [-wf 作業フォルダ名] [-mdtw] [-sdf 文書変換成功時のDocuWorks文書ファイル移動フォルダ名] [-fdf 文書変換失敗時のDocuWorks文書ファイル移動フォルダ名] [-srdf] [-async] [-pto 文書変換タイムアウト] [-ppto ページ出力タイムアウト] [-ftwto] [-ssjbcd スクリーンショットファイル名] [-slf ログファイル名] [-flf エラーログファイル名] [-z 結果ファイル名] [-ec] [-debug-dncdf]
「name 1.txt」のように値にスペースが含まれる場合は、"name 1.txt" のようにダブルクォートで括ってください。
[]は省略可能な引数です。引数の仕様は以下の通りです。
|
引数 |
内容 |
|---|---|
|
-i 入力DocuWorks文書ファイル名 |
変換元のDocuWorks文書ファイル名を指定します。 DocuWorks文書ファイルのドキュメントとバインダーに対応しています。 (拡張子 .xdw .xbd) |
|
-p プリンター名 [ドライバー名 [ポート名]] |
変換に使用するプリンター名、ドライバー名、ポート名を指定します。 仮想プリンターの場合 -p "DocuWorks PDF" -o "D:\出力\test.pdf" -oを指定した場合、プリンター名のみ指定を行うと、プリンター名と同じ名前をドライバー名として使用します。 物理プリンターの場合 -p "Canon LBP622C" |
|
-o 出力PDFファイル名 |
出力するPDFファイル名を指定します。仮想プリンターを使用する場合に、出力ファイル名を指定します。物理プリンターを使用する場合は-oは指定しません。 出力先フォルダに同一ファイル名のファイルが存在する時は、ファイル名に連番を付与して重複しないファイル名で出力します。 出力先フォルダが存在しない時はフォルダを作成します。 -pでポート名を指定した場合はポート名を-oで指定した出力PDFファイル名で上書きします。 -oを指定すると指定した出力PDFファイルが作成されるまで待機する動作となります。 |
|
-wf 作業フォルダ名 |
文書変換で使用する作業フォルダを指定します。書き込めるフォルダを指定してください。 省略した時は printToPdfFromDocuWorksFile.exe のフォルダを使用します。printToPdfFromDocuWorksFile.exe のフォルダに書き込めない時は %LOCALAPPDATA%\TechnoStyle\printToPdfFromDocuWorksFile を使用します。 文書変換はPCで1つのワーカープロセスが順に行います。ワーカープロセスが動いている時は、そのワーカープロセスの作業フォルダを使用します。 |
|
-mdtw |
文書変換前にDocuWorks文書ファイルを作業フォルダーに移動します。 -mdtw スイッチを指定する時は、-sdf スイッチ、-srdf スイッチの何れかと -fdf スイッチで変換処理後のDocuWorks文書ファイル移動フォルダーなどを指定してください。 |
|
-sdf 文書変換成功時の入力DocuWorks文書ファイル移動フォルダー名 |
文書変換成功時のDocuWorks文書ファイル移動フォルダを指定します。 移動先フォルダに同一ファイル名のファイルが存在する時は、ファイル名に連番を付与して重複しないファイル名で移動します。 移動先フォルダが存在しない時はフォルダを作成します。 -mdtw スイッチを指定した時に適用されます。 |
|
-fdf 文書変換失敗時の入力DocuWorks文書ファイル移動フォルダー名 |
文書変換失敗時のDocuWorks文書ファイル移動フォルダを指定します。 移動先フォルダに同一ファイル名のファイルが存在する時は、ファイル名に連番を付与して重複しないファイル名で移動します。 移動先フォルダが存在しない時はフォルダを作成します。 -mdtw スイッチを指定した時に適用されます。 |
|
-srdf |
文書変換成功時にDocuWorks文書ファイルを削除します。 -mdtw スイッチを指定した時に適用されます。 -sdf スイッチが指定されていた時は無視されます。 |
|
-async |
文書変換を非同期実行します。文書変換を実行する別プロセスを起動後、自プロセスはすぐに終了します。 |
|
-pto 文書変換タイムアウト |
文書変換のタイムアウト値を秒で指定します。 DocuWorks Viewerの起動からプリンターがPDFファイルを出力し終わるまでの時間が対象となります。 タイムアウト発生時には印刷ジョブをキャンセルします。(状況によっては印刷ジョブが残ってしまう事があります) 省略した時はタイムアウトの処理は行いません。 |
|
-ppto ページ出力タイムアウト |
ページ出力のタイムアウト値を秒で指定します。 指定した時間が経過しても印刷ジョブのページ数が変化しなかった時にタイムアウトとなります タイムアウト発生時には印刷ジョブをキャンセルします。(状況によっては印刷ジョブが残ってしまう事があります) 省略した時はタイムアウトの処理は行いません。 |
|
-ftwto |
文書変換のタイムアウト発生時にDocuWorks Viewerが起動していた場合は、DocuWorks Viewerを強制終了します。 -pto または -ppto を指定した時に適用されます。 省略した時は強制終了の処理は行いません。 |
|
-ssjbcd スクリーンショットファイル名 |
DocuWorks Viewer がダイアログを表示した際に保存するスクリーンショットファイル名を指定します。 スクリーンショットファイルの拡張子は .png, .jpeg (.jpg), .tiff (.tif), .bmp の何れかです。 スクリーンショットを保存する際にファイル名の末尾にプロセスIDと日時の文字列を付与します。 省略した時はスクリーンショットの保存は行いません。 スクリーンショットはデスクトップ画面が表示されている状態でしか動作しません。ログオフした状態やロック画面では動作しません。 |
|
-slf ログファイル名 |
ログを出力するファイル名を指定します。 ログファイルが存在していた時は追加書き込みします。 ログファイルを出力するフォルダが存在しない時はフォルダを作成します。 |
|
-flf エラーログファイル名 |
エラーログを出力するファイル名を指定します。 エラーログファイルが存在していた時は追加書き込みします。 エラーログファイルを出力するフォルダが存在しない時はフォルダを作成します。 |
|
-z 結果ファイル名 |
処理結果をファイルに出力します。 結果ファイルが存在していた時は上書きします。 処理結果を出力するフォルダが存在しない時はフォルダを作成します。 |
|
-ec |
結果ファイルに出力される終了コードと、エラーメッセージの一覧を出力します。 |
|
-debug-dncdf |
変換元のDocuWorks文書ファイルのチェックを行わないようにします。 テストなどで DocuWorks Viewer にダイアログを表示させたい時に使用します。 |
|
-debug-dncdvw |
DocuWorks Viewer が表示するダイアログのチェックを行わないようにします。 テストなどで DocuWorks Viewer が表示するダイアログを無視したい時に使用します。 |
|
-debug-pqacir |
DocuWorks Viewer 起動後に印刷キューアプリケーションが起動した事にします。 テストなどで使用します。 |
|
-debug-pjiiie |
DocuWorks Viewer 終了後の印刷完了待ちで、対象印刷ジョブ情報の取得でエラーが発生した事にします。 テストなどで使用します。 |
|
-debug-ueo |
DocuWorks Viewer 終了後に予期せぬ例外を発生させます。 テストなどで使用します。 |
-asyncオプションを指定すると非同期で処理が実行されます。
非同期実行の場合、ワーカープロセスにジョブを登録して、自プロセスはすぐに終了します。ワーカープロセスが起動していない場合はワーカープロセスを起動します。
eDocArrangementから呼び出す場合で、非同期実行を使用する場合、以下のような呼び出し方法を行うことを想定しています。
printToPdfFromDocuWorksFile.exe -i "入力DocuWorks文書ファイル名" -p "Microsoft Print to PDF" -o "出力PDFファイル名" -async -mdtw -sdf "文書変換成功時の入力DocuWorks文書ファイル移動フォルダ名" -fdf "文書変換失敗時の入力DocuWorks文書ファイル移動フォルダ名" -slf "ログファイル名" -flf "エラーログファイル名" -wf "作業フォルダ名"
printToPdfFromDocuWorksFileの-sdf, -fdfオプションを使って、変換処理後に入力ファイルを指定フォルダに移動します。
変換に失敗した場合は、エラーフォルダに移動されます。
同時実行プロセスの上限に達した場合は、処理を行わず、入力ファイルの移動も行いませんので、次回のフォルダ監視で再処理されます。
また、非同期実行の場合は、-slf, -flf オプションを指定してprintToPdfFromDocuWorksFileでログの出力を行うことを推奨します。
文書変換処理を円滑に行う為に文書変換処理のキュー管理を行っています。
printToPdfFromDocuWorksFileコマンド実行すると、呼び出し元(同期 or 非同期)、ワーカー、ランナーの3つのプロセスが起動します。複数のプロセスが連携して文書変換を行います。
-asyncオプションを指定しなかった時は同期的に処理が実行されますが、同期実行の場合でもワーカーとランナーのプロセスが起動して文書変換処理を行います。同期プロセスは対象の文書変換処理を実行するランナープロセスが終了するまで待機します。
printToPdfFromDocuWorksFile実行中にタスクマネージャーで確認すると、コマンド起動の数よりも多い数のプロセスが存在しますが正常な状態です。
printToPdfFromDocuWorksFileのプロセス名は、呼び出し元(同期 or 非同期)、ワーカー、ランナー、全て printToPdfFromDocuWorksFile となります。
全ての文書変換処理が終わった後も暫くの間、ワーカーのプロセスが常駐していますが、時間経過で自動的に終了します。
変換後のPDFファイルの画質等については、PDFファイルを出力するプリンターの印刷設定画面の内容が反映されます。余白などの設定も対象となるようです。
-mdtwオプションを指定した場合、以下のエラー処理を行います。
-sdf, -fdfのフォルダが指定されていること。また、指定されたフォルダが有効なパスであること。
条件を満たしていない場合は、処理を終了します。
入力ファイルを-wf で指定されたフォルダ(作業フォルダ)に移動する。
DocuWorks Viewer を起動して、指定のPDFファイルを出力するプリンターへの印刷を行う。
DocuWorks Viewer が終了せず戻ってこない場合(-ptoオプションを指定してタイムアウトになった場合)は、以下の処理を試行します。
作業フォルダに移動された入力ファイルを-fdfで指定されたフォルダ (文書変換失敗時移動先)に移動する。
文書変換失敗時移動先のフォルダに移動が失敗した場合は、printToPdfFromDocuWorksFile.exeのフォルダに移動する。
出力されたPDFが存在する場合は削除する。
指定のPDFファイルの出力が完了するまで待機する。
PDFファイルの出力が完了しない場合(-ptoオプションを指定してタイムアウトになった場合)は、以下の処理を試行します。
作業フォルダに移動された入力ファイルを-fdfで指定されたフォルダ (文書変換失敗時移動先)に移動する。
文書変換失敗時移動先のフォルダに移動が失敗した場合は、printToPdfFromDocuWorksFile.exeのフォルダに移動する。
出力されたPDFが存在する場合は削除する。
文書変換を行うプロセスが、入力ファイルを移動しないまま終了した場合※は、以下の処理を試行します。
※ 文書変換を行うプロセスで例外が発生した、強制終了された、などのケースです。
作業フォルダに移動された入力ファイルを-fdfで指定されたフォルダ (文書変換失敗時移動先)に移動する。
文書変換失敗時移動先のフォルダに移動が失敗した場合は、printToPdfFromDocuWorksFile.exeのフォルダに移動する。
どちらにも移動できなかった場合は、作業フォルダの job~コンピューター名\failed フォルダに残す。
スイッチ -mdtw を使用した場合、DocuWorks文書ファイルを作業フォルダーに移動してから処理を行います。
処理が完了するまでに、停電や強制終了などでアプリケーションが終了してしまうと、作業フォルダーに対象ファイルが残った状態となります。
printToPdfFromDocuWorksFileは、作業フォルダー内に未処理の印刷ジョブ情報が残っている場合は、文書変換処理を続行するようになっています。
受信するメッセージ:
alive : ワーカープロセスの生存通知。受信するとタイムアウトカウンターをリセットする。
runnerFinished : ランナープロセスの処理完了と終了コードの通知。受信すると自プロセスの終了コードを設定して待機を終了する。
一定時間(10秒)生存通知を受信しない場合はタイムアウトエラー(終了コード37)となる。
alive: ワーカープロセスの生存通知(定期的に送信)
同期プロセスからのジョブの場合は、ランナープロセスの処理中に以下のメッセージを IPC 経由で同期プロセスに送信する。
runnerFinished : ランナープロセスの処理完了と終了コードの通知
印刷ジョブ情報リスト取得のメソッドで例外が発生した際にリトライする。失敗した場合は「印刷ジョブ情報取得失敗フラグ」を立てる。
印刷ジョブ情報リスト取得のメソッドで例外が発生した際にリトライする。失敗した場合は「印刷ジョブ情報取得失敗フラグ」を立てる。
印刷ジョブ情報の取得に失敗した場合はページチェックを終了する。
印刷キューアプリケーションが起動していると、DocuWorks PDFが不完全なPDFファイルを出力してしまう現象が発生する為、印刷キューアプリケーションを検出したらエラー扱いとしている。(Windows 11 24H2 不具合対応。)
文書変換タイムアウトフラグ
ページ出力タイムアウトフラグ
印刷キューアプリケーションフラグ
印刷ジョブ情報取得失敗フラグ
印刷ジョブ情報のメソッドやプロパティを使用中に例外が発生しても無視する。
例外を無視した時は印刷ジョブが終了したとみなして印刷終了待ちのループを抜ける。
無視するだけなのでエラー処理は無し。
文書変換タイムアウトフラグ
ページ出力タイムアウトフラグ
印刷後処理エラーフラグ
印刷キューアプリケーションフラグ
印刷ジョブ情報取得失敗フラグ
上記2つの処理で例外が発生しても無視する。
例1
以下の内容でXDW文書をPDF文書に変換する。
PDFファイルを出力するプリンターは "DocuWorks PDF" を使用する。(-p)
非同期で実行する。(-async)
作業フォルダを使用した変換を行う。(文書変換成功時、失敗時のファイル移動を行う) (-mdtw)
60秒間プリントジョブのページが変化しない場合はページ出力タイムアウトとする。(-ppto 60)
タイムアウトが発生した場合はDocuWorks Viewerを強制終了する。(-ftwto)
|
項目 |
値 |
|---|---|
|
入力ファイル (-i) |
C:\XDWからPDF変換\10_PDF変換\領収書_20160321.xdw |
|
PDFファイルを出力するプリンター (-p) |
DocuWorks PDF |
|
出力ファイル (-o) |
C:\XDWからPDF変換\20_変換済み\領収書_20160321.pdf |
|
変換成功時の入力ファイル移動先フォルダ (-sdf) |
C:\XDWからPDF変換\30_処理済みXDW |
|
変換失敗時の入力ファイル移動先フォルダ (-fdf) |
C:\XDWからPDF変換\15_エラー |
|
ログの出力先 (-slf) |
C:\XDWからPDF変換\90_System\90_Log\CommandLog\log_20210708.txt |
|
エラーログの出力先 (-flf) |
C:\XDWからPDF変換\90_System\90_Log\CommandLog\Errorlog_20210708.txt |
|
作業フォルダ (-wf) |
C:\XDWからPDF変換\90_System\80_Tool\printToPdfFromDocuWorksFile |
printToPdfFromDocuWorksFile.exe -i "C:\XDWからPDF変換\10_PDF変換\領収書_20160321.xdw" -p "DocuWorks PDF" -o "C:\XDWからPDF変換\20_変換済み\領収書_20160321.pdf" -async -mdtw -ppto 60 -ftwto -sdf "C:\XDWからPDF変換\30_処理済みXDW" -fdf "C:\XDWからPDF変換\15_エラー" -slf "C:\XDWからPDF変換\90_System\90_Log\CommandLog\log_20210708.txt" -flf "C:\XDWからPDF変換\90_System\90_Log\CommandLog\Errorlog_20210708.txt" -wf "C:\XDWからPDF変換\90_System\80_Tool\printToPdfFromDocuWorksFile"
例2
以下の内容でXDW文書をプリンターに印刷する。
印刷するプリンターは "LBP622C" を使用する。(-p)
60秒間プリントジョブのページが変化しない場合はページ出力タイムアウトとする。(-ppto 60)
タイムアウトが発生した場合はDocuWorks Viewerを強制終了する。(-ftwto)
|
項目 |
値 |
|---|---|
|
入力ファイル (-i) |
C:\プリンターに印刷\10_PDF変換\領収書_20160321.xdw |
|
印刷するプリンター (-p) |
LBP622C |
|
ログの出力先 (-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\printToPdfFromDocuWorksFile |
|
結果ファイル (-z) |
C:\プリンターに印刷\90_System\result.txt |
printToPdfFromDocuWorksFile.exe -i "C:\プリンターに印刷\10_PDF変換\領収書_20160321.xdw" -p "LBP622C" -ppto 60 -ftwto -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\printToPdfFromDocuWorksFile" -z "C:\プリンターに印刷\90_System\result.txt"
終了コードは以下の通りです。
結果ファイルに出力されるメッセージの内容はオプションスイッチの指定によって変化します。以下は代表的なメッセージの例です。
|
-2 |
印刷ジョブ情報の確認中に印刷ジョブ情報が使用不可となった為、印刷終了は確認できませんでした。 |
|
0 |
正常終了 |
|
1 |
対象外のスイッチが指定されています。 'スイッチ' |
|
2 |
入力DocuWorks文書ファイルが指定されていません。 |
|
3 |
出力PDFファイルが指定されていません。 |
|
4 |
結果ファイルが指定されていません。 |
|
5 |
結果ファイルの書き込みに失敗しました。 |
|
6 |
入力DocuWorks文書ファイルが存在しません。 '入力DocuWorks文書ファイル名' |
|
7 |
ログファイルが指定されていません。 |
|
8 |
エラーログファイルが指定されていません。 |
|
9 |
作業フォルダが指定されていません。 |
|
10 |
作業フォルダの作成に失敗しました。 '作業フォルダ' |
|
11 |
文書変換成功時のDocuWorks文書ファイル移動フォルダー、文書変換成功時にDocuWorks文書ファイルを削除、何れも指定されていません。 |
|
12 |
文書変換成功時のDocuWorks文書ファイル移動フォルダの作成に失敗しました。 '文書変換成功時のDocuWorks文書ファイル移動フォルダ' |
|
13 |
文書変換失敗時のDocuWorks文書ファイル移動フォルダが指定されていません。 |
|
14 |
文書変換失敗時のDocuWorks文書ファイル移動フォルダの作成に失敗しました。 '文書変換失敗時のDocuWorks文書ファイル移動フォルダ' |
|
16 |
文書変換タイムアウトは10以上の整数を指定してください。 '文書変換タイムアウト' |
|
17 |
ページ出力タイムアウトは10以上の整数を指定してください。 'ページ出力タイムアウト' |
|
18 |
スクリーンショットを保存する時は、スクリーンショットファイル名を指定してください。 |
|
19 |
入力DocuWorks文書ファイルを作業フォルダへ移動する際にエラーが発生しました。 |
|
20 |
入力DocuWorks文書ファイルを作業フォルダへコピーする際にエラーが発生しました。 |
|
21 |
作業フォルダのDocuWorks文書ファイルを変換成功時のフォルダへコピーする際にエラーが発生しました。 |
|
22 |
作業フォルダのDocuWorks文書ファイルを変換失敗時のフォルダへコピーする際にエラーが発生しました。 |
|
23 |
作業フォルダのDocuWorks文書ファイルをDocuWorks文書ファイル退避フォルダへコピーする際にエラーが発生しました。 |
|
24 |
作業フォルダのPDFファイルを出力PDFファイルフォルダへコピーする際にエラーが発生しました。 |
|
25 |
文書変換タイムアウトが発生しました。 '入力DocuWorks文書ファイル名' |
|
26 |
文書変換に失敗しました。 '入力DocuWorks文書ファイル名' |
|
27 |
DocuWorksがインストールされていません。 |
|
28 |
DocuWorksインストールパスの取得に失敗しました。 'エラーメッセージ' |
|
29 |
DocuWorks Viewerが見つかりません。 'DocuWorks Viewer ファイル名' |
|
30 |
文書変換可能なDocuWorks文書ファイルはドキュメントとバインダーです。 (拡張子 .xdw .xbd) '入力DocuWorks文書ファイル名' |
|
31 |
入力DocuWorks文書ファイルのページ数が0です。 '入力DocuWorks文書ファイル名' |
|
32 |
入力DocuWorks文書ファイルのオープンに失敗しました。 '入力DocuWorks文書ファイル名' |
|
33 |
プリンター名が指定されていません。 |
|
34 |
プリンター情報の取得に失敗しました。 |
|
35 |
印刷キューアプリケーションが実行中です。印刷キューアプリケーションを終了してください。 |
|
36 |
ジョブフォルダーの作成に失敗しました。 'ジョブフォルダー名' |
|
37 |
ワーカープロセスとの通信でタイムアウトが発生しました。 |
|
99 |
例外が発生しました。 'エラーメッセージ' |
本アプリケーションは、DocuWorks PDFなどの仮想プリンターを使用してPDF変換を行います。プリンターへの印刷はPCに大きな負荷をかけるため、できるだけ複数のアプリケーションから同時に印刷を行わないようにしてください。
PCに高い負荷がかかっている場合や、仮想プリンターに他のアプリから大量に印刷が行われている場合は、変換に失敗したり、印刷ジョブがなくなるまで待機する動きとなり、変換が行われない場合があります。
DocuWorks Viewerのふでばこやウインドウ化されたツールバーなどのウインドウを閉じておいてください。
DocuWorks Viewerがエラーダイアログを表示した場合に自動でウインドウを閉じる操作を行っていますが、それらの誤動作の原因になる可能性があります。
ページ数の多いDW文書を変換(印刷)中に他のDW文書をDocuWorks Viewerで開こうとすると、印刷が終了するまでDocuWorks Viewerの画面が表示されない現象が発生します。
これはDocuWorks Viewerの仕様によるものと考えられます。本アプリケーションを使ってPDF変換を行うPCではDocuWorks Deskでの操作や他のDW文書を開く操作はできるだけしないで下さい。
本アプリケーションは、印刷を行うプリンターによって動作環境が変わります。
仮想プリンターによって作成されるPDFの品質が変わったり、安定性が低下したりする場合があります。
DocuWorks PDFはバージョンが変わることで将来使用できなくなる可能性もあります。長期間の運用を望むユーザー様は、その点を十分にご理解の上ご利用ください。
DocuWorks9.1のDocuWorks PDFは印刷設定を細かく指定できますが、圧縮オプションのカラー/グレースケール画像の圧縮方法にJPEG2000を選択すると不安定になる頻度が高いようです。JPEGかZipを選択することをお奨めいたします。
DocuWorks PDFに並列で印刷を行うと、印刷設定の内容により異常終了する現象を確認しています。
障害が発生しているアプリケーション名: spoolsv.exe、バージョン: 10.0.26100.2454、タイム スタンプ: 0x02df797c 障害が発生したモジュール名: DocuWorks PDF Driver.dll、 バージョン: 0.3.7522.2、タイム スタンプ: 0x6557116b 例外コード: 0xc0000005 フォールト オフセット: 0x00000000003433f9 フォールト プロセス ID: 0x4308 アプリケーションのフォールトの開始時刻: 0x1DB51F2C69DB1A3 Faulting アプリケーション パス: C:\WINDOWS\System32\spoolsv.exe Faulting モジュール パス: C:\WINDOWS\system32\spool\DRIVERS\x64\3\DocuWorks PDF Driver.dll Report Id: 1172aa71-b72c-4865-8a09-62201104acf9 Faulting パッケージの完全名: Faulting パッケージ相対アプリケーション ID:
この障害が発生するとプリンターが応答不能になりますが、Print Spoolerサービスが停止してしまうことが原因のようです。 DocuWorks PDF Driver.dllが異常終了することで、 Print Spoolerサービスも異常終了してしまうと考えられます。
Print Spoolerサービスが停止状態となるので、他のプリンターの印刷もできない状態となります。
この情報は2024年12月19日にDocuWorks 9.1.8で確認した内容です。将来のアップデートで修正される可能性があります。
停止状態となったPrint Spoolerサービスを、サービスのコントロールパネルから開始すれば、プリンターが使用できるようになります。
また、サービスのコントロールパネルから、Print Spoolerサービスの回復タブのエラー時の処理をすべて「サービスを再起動する」にしておくことをお奨めいたします。
printToPdfFromDocuWorksFileは、Windowsで利用できるPDFプリンターとDocuWorks Viewerを呼び出して利用するアプリケーションです。
PDFプリンターとDocuWorks Viewerで不具合が発生しても弊社では修正できません。
printToPdfFromDocuWorksFileはPDFプリンターとDocuWorks Viewerを、できるだけ不具合を起こさないように使用するためのアプリケーションであるということをご理解ください。
Windows11のバージョン24H2でプリンターキューを開いた状態でDocuWorks PDFやDocuWorks Viewerを使ってPDF変換を行うと、不完全なPDFが作成される問題が発生しています。printToPdfFromDocuWorksFileを使用時はプリンターキューを開かないでください。printToPdfFromDocuWorksFileはプリンターキューが開かれていることを検出すると処理中のファイルをエラー処理します。
printToPdfFromDocuWorksFileは、eDocArrangementの購入者にライセンスされます。試用については、eDocArrangementと同じ期間、試用できます。
printToPdfFromDocuWorksFileは、eDocArrangementの製品の一部としての扱いとなり、eDocArrangementの使用許諾契約が適用されます。
.NET Framework 4.6.2 以降
DocuWorks 9.1 ~ 10
-wfを省いた時に、printToPdfFromDocuWorksFile.exeのフォルダに書き込めない場合は %LOCALAPPDATA%\TechnoStyle\printToPdfFromDocuWorksFile を使用するように修正。Program Filesの下に入れたprintToPdfFromDocuWorksFile.exeを管理者として実行しない時に、ジョブキューフォルダを作れずに終了コード 37(ワーカープロセスとの通信でタイムアウトが発生しました。)で終了する不具合を修正。(書き込める時は今までどおりprintToPdfFromDocuWorksFile.exeのフォルダを使用します)
ジョブキューフォルダを作れない時は、呼び出したプロセスが終了コード 36(ジョブフォルダーの作成に失敗しました。)で終了するように修正。
ワーカープロセスが動いている間に、別の-wfを指定して実行すると、文書変換されず(同期実行の時は終了コード 99)、-mdtwを指定した入力ファイルが失われる不具合を修正。文書変換はワーカープロセスの作業フォルダで行う。
文書変換を行うプロセスが、入力ファイルを移動しないまま終了した場合(例外・強制終了など)、入力ファイルを-fdfで指定されたフォルダに移動するように修正。(今までは入力ファイルが失われていた)
標準出力・標準エラー出力を受け取る形で呼び出すと、文書変換が終わってもワーカープロセスが終了するまで(約15秒)戻らない不具合を修正。ワーカープロセス・文書変換を行うプロセスは、呼び出したプロセスの標準入力・標準出力・標準エラー出力を引き継がない。(標準出力には、呼び出したプロセスのメッセージだけが出力されます。文書変換の結果は終了コード・結果ファイル・ログファイルで確認してください)
ジョブキュー管理プロセスの存在確認の信頼性を向上。
印刷ジョブの管理方式を、従来のプロセス常駐方式からジョブキュー管理プロセス方式に変更。
文書変換非同期プロセス最大数を指定する -apmc を廃止。
文書変換非同期印刷開始最大数を指定する -asp を廃止。
-o で出力ファイルを指定しなかった時に、-sdf や -fdf で指定したフォルダーに入力DocuWorks文書ファイルが移動されない問題を修正。
-ssjbcd を指定した状態で DocuWorks Viewer がダイアログを表示した際にスクリーンショットの取得に失敗すると、ファイル移動などのエラー処理が行われない問題を修正。
-ppto の判定開始タイミングを DocuWorks Viewer 起動直後に変更。
過去バージョンでは、-ppto の判定開始が印刷ジョブ取得後だった為、印刷ジョブ取得前に DocuWorks Viewer が応答しない状態になった時は -ppto は適用されない。
今回の変更では、DocuWorks Viewer 起動直後から1ページ目の出力ページの変化に対しても -ppto が適用されるので、印刷ジョブ取得前に DocuWorks Viewer が応答しない状態になってもページ出力タイムアウトが発生する事になる。
スクリーンショットを保存するスイッチ -ssjbcd に指定するスクリーンショットファイル名に拡張子 .jpg を使用するとエラーとなってしまう問題を修正。
DocuWorks 10のDocuWorks Viewerが表示するダイアログに対応。
DocuWorks ViewerやDocuWorks PDFがダイアログを表示した際にスクリーンショットを保存するスイッチ -ssjbcd を追加。
対象プリンターの印刷キューから印刷ジョブ情報リストを取得する際に、印刷ジョブ情報リストの取得に失敗しても一定時間リトライするように変更。
取得した対象印刷ジョブ情報の状態取得に失敗した際に、「OSが対象印刷ジョブ情報を印刷キューから削除した」とみなして正常処理とするように変更。その際、終了コードは -2 となり、出力されるメッセージは「印刷終了は確認できませんでした」のような警告メッセージとなります。
ログに記録する情報を調整。プロセス起動日時を追加。メッセージステータス(正常、警告、エラーの3種類)を追加。
プリンター関連のエラーが発生した際に、詳細なエラーメッセージや状況メッセージを出力するように調整。
一部のプリンターが生成する印刷ジョブ情報の判定が想定通り行われない事がある問題を修正。
タイムアウト発生時にDocuWorks Viewerを強制終了するスイッチ -ftwto を追加。
指定した時間が経過しても印刷ジョブのページ数が変化しなかった時にタイムアウトとするスイッチ -ppto を追加。
文書変換失敗時に入力DocuWorks文書ファイルをエラーフォルダーへ移動した際のログに、入力DocuWorks文書ファイルのフルパスを記録するように変更。
ログ出力の際に、自身のプロセスのプロセスIDを記録するように変更。 (printToPdfFromDocuWorksFileのプロセスID)
起動したDocuWorks ViewerのプロセスIDをログに記録するように変更。
印刷ジョブを制御して、タイムアウト発生時の印刷ジョブのキャンセルや、印刷終了の判定などを行うように変更。(出力PDFファイルをqpdfでチェックしないように変更。)
DocuWorks PDFが表示するエラーダイアログを検出した時に閉じるように変更。
印刷キューアプリケーションを検出した時に印刷処理を中断してエラー処理を行うように変更。
新規リリース。