2026/03/05 TechnoStyle

printToPdfFromDocuWorksFile 仕様

printToPdfFromDocuWorksFileはコンソールアプリケーションです。コンソールアプリケーションは、eDocArrangementのコマンド実行から呼び出すことが可能です。

DocuWorks Viewerの印刷機能※を使用して、DocuWorks文書をPDFファイルに変換します。

※ "Microsoft Print to PDF" や "DocuWorks PDF" などの仮想プリンターを使用します。物理プリンターを指定すればプリンターへの印刷を行うこともできます。

printToPdfFromDocuWorksFile
コマンド実行
dwviewer
文書1.xdw
印刷を使用した
PDF作成
文書1.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 作業フォルダ名

文書変換で使用する作業フォルダを指定します。

-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と日時の文字列を付与します。
例)
screenshot.png → screenshot.6548.20251113_143734.567.png

省略した時はスクリーンショットの保存は行いません。

スクリーンショットはデスクトップ画面が表示されている状態でしか動作しません。ログオフした状態やロック画面では動作しません。

-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 "作業フォルダ名"

監視フォルダ
文書1.xdw
コマンド実行
printToPdfFromDocuWorksFile
PDFファイル変換
変換先フォルダ
文書1.pdf
ファイル移動
処理済みフォルダ
文書1.xdw

printToPdfFromDocuWorksFileの-sdf, -fdfオプションを使って、変換処理後に入力ファイルを指定フォルダに移動します。

変換に失敗した場合は、エラーフォルダに移動されます。

監視フォルダ
文書1.xdw
コマンド実行
printToPdfFromDocuWorksFile
PDFファイル変換失敗
エラーフォルダ
文書1.xdw

同時実行プロセスの上限に達した場合は、処理を行わず、入力ファイルの移動も行いませんので、次回のフォルダ監視で再処理されます。

監視フォルダ
文書1.xdw
コマンド実行
printToPdfFromDocuWorksFile
プロセス数上限
監視フォルダ
文書1.xdw

また、非同期実行の場合は、-slf, -flf オプションを指定してprintToPdfFromDocuWorksFileでログの出力を行うことを推奨します。

文書変換処理のプロセス構成について

文書変換処理を円滑に行う為に文書変換処理のキュー管理を行っています。

printToPdfFromDocuWorksFileコマンド実行すると、呼び出し元(同期 or 非同期)、ワーカー、ランナーの3つのプロセスが起動します。複数のプロセスが連携して文書変換を行います。

-asyncオプションを指定しなかった時は同期的に処理が実行されますが、同期実行の場合でもワーカーとランナーのプロセスが起動して文書変換処理を行います。同期プロセスは対象の文書変換処理を実行するランナープロセスが終了するまで待機します。

printToPdfFromDocuWorksFile実行中にタスクマネージャーで確認すると、コマンド起動の数よりも多い数のプロセスが存在しますが正常な状態です。

printToPdfFromDocuWorksFileのプロセス名は、呼び出し元(同期 or 非同期)、ワーカー、ランナー、全て printToPdfFromDocuWorksFile となります。

全ての文書変換処理が終わった後も暫くの間、ワーカーのプロセスが常駐していますが、時間経過で自動的に終了します。

画質について

変換後のPDFファイルの画質等については、PDFファイルを出力するプリンターの印刷設定画面の内容が反映されます。余白などの設定も対象となるようです。

エラー処理について

-mdtwオプションを指定した場合、以下のエラー処理を行います。

  1. -sdf, -fdfのフォルダが指定されていること。また、指定されたフォルダが有効なパスであること。

    条件を満たしていない場合は、処理を終了します。

  2. 入力ファイルを-wf で指定されたフォルダ(作業フォルダ)に移動する。

  3. DocuWorks Viewer を起動して、指定のPDFファイルを出力するプリンターへの印刷を行う。

    DocuWorks Viewer が終了せず戻ってこない場合(-ptoオプションを指定してタイムアウトになった場合)は、以下の処理を試行します。

    • 作業フォルダに移動された入力ファイルを-fdfで指定されたフォルダ (文書変換失敗時移動先)に移動する。
    • 文書変換失敗時移動先のフォルダに移動が失敗した場合は、printToPdfFromDocuWorksFile.exeのフォルダに移動する。
    • 出力されたPDFが存在する場合は削除する。
  4. 指定のPDFファイルの出力が完了するまで待機する。

    PDFファイルの出力が完了しない場合(-ptoオプションを指定してタイムアウトになった場合)は、以下の処理を試行します。

    • 作業フォルダに移動された入力ファイルを-fdfで指定されたフォルダ (文書変換失敗時移動先)に移動する。
    • 文書変換失敗時移動先のフォルダに移動が失敗した場合は、printToPdfFromDocuWorksFile.exeのフォルダに移動する。
    • 出力されたPDFが存在する場合は削除する。

スイッチ -mdtw を使用した場合、DocuWorks文書ファイルを作業フォルダーに移動してから処理を行います。

処理が完了するまでに、停電や強制終了などでアプリケーションが終了してしまうと、作業フォルダーに対象ファイルが残った状態となります。

printToPdfFromDocuWorksFileは、作業フォルダー内に未処理の印刷ジョブ情報が残っている場合は、文書変換処理を続行するようになっています。

処理詳細

メイン処理

起動と初期化

同期プロセスとして起動(-async なし)

同期プロセスとして起動されジョブ完了まで待機する。

非同期プロセスとして起動(-async あり)

非同期プロセスとして起動されジョブ登録後すぐに終了する。

引数解析

引数のエラーチェック。

入力検証

入力ファイルの存在チェックや検査。

ワーカープロセス管理

ワーカープロセスが起動していない場合

Mutexを使用してワーカープロセスの起動状態を確認する。ワーカープロセスが起動していない場合は、自プロセスからワーカープロセスを起動する。

ワーカープロセスの起動確認

ワーカープロセスとの IPC(メモリマップドファイル)が確立されるまで待機する。一定時間接続できない場合はタイムアウトエラー(終了コード37)となる。

ジョブ登録

ジョブフォルダーの作成

作業フォルダー内にタイムスタンプベースのジョブフォルダーを排他的に作成する。衝突時は連番を付与する。

コマンド引数の書き込み

コマンド引数をジョブフォルダー内の arguments.txt に書き込む。

入力DocuWorks文書ファイルの移動(-mdtw 指定時)

入力DocuWorks文書ファイルをジョブフォルダー内の in フォルダーに移動する。

ジョブ登録通知

IPC(メモリマップドファイル)を介してワーカープロセスにジョブ登録を通知する。

同期/非同期分岐

-async スイッチが指定されていない場合(同期)

IPC(メモリマップドファイル)を介してワーカープロセスからのメッセージを待機する。

受信するメッセージ:

  • alive : ワーカープロセスの生存通知。受信するとタイムアウトカウンターをリセットする。
  • runnerFinished : ランナープロセスの処理完了と終了コードの通知。受信すると自プロセスの終了コードを設定して待機を終了する。

一定時間(10秒)生存通知を受信しない場合はタイムアウトエラー(終了コード37)となる。

-async スイッチが指定された場合(非同期)

入力DocuWorks文書ファイルを作業フォルダーに移動する設定(-mdtw)の場合、入力ファイルが移動された(元の場所から消えた)ことを検知するまで一定時間待機する。その後、自プロセスを終了する。

ワーカー処理

ワーカープロセスは同期/非同期プロセスから起動され、ジョブキューの管理とランナープロセスの起動を担当する。

ワーカー初期化

ジョブフォルダーの準備

ジョブキューフォルダー(job~COMPUTERNAME/queue)とジョブ作業フォルダー(job~COMPUTERNAME/work)を作成する。

ジョブ作業フォルダーのクリーンアップ

前回のワーカーが異常終了した場合に残った作業フォルダー内のファイルを削除する。

ジョブキュー監視ループ

新しいジョブの受信

IPC(メモリマップドファイル)からコマンド引数を受信したらパースしてジョブフォルダーを作成し、キューに登録する。

同期プロセスに対しての生存通知

以下のメッセージを IPC 経由で待機中の全ての同期プロセスに送信する。

  • alive: ワーカープロセスの生存通知(定期的に送信)

ジョブの実行

キューに未処理のジョブが存在する場合、ランナープロセスを起動してジョブを実行する。ランナープロセスの終了を待ってから次のジョブを処理する。

同期プロセスからのジョブの場合は、ランナープロセスの処理中に以下のメッセージを IPC 経由で同期プロセスに送信する。

  • runnerFinished : ランナープロセスの処理完了と終了コードの通知

ワーカー終了判定

一定時間(15秒)、新しいジョブが登録されない、処理中のジョブが無い、待機中の同期プロセスが存在しない、の全てを満たす場合に、ワーカープロセスを終了する。終了時に空のジョブキューフォルダー、ジョブ作業フォルダー、ジョブベースフォルダーを削除する。

ランナー処理

ランナープロセスはワーカープロセスから起動され、実際の印刷処理(DocuWorks Viewer の起動と監視)を担当する。

プリンター準備

プリンターサーバー接続成功

プリントキューの取得。

プリンターサーバー接続失敗

エラー終了。

作業フォルダー管理

作業フォルダーの作成とファイル移動。

印刷キュー管理

ループ処理(印刷ジョブ数監視)

プリンターキューの印刷ジョブ数が指定数未満になったらループ終了。

印刷ジョブ情報リスト取得のメソッドで例外が発生した際にリトライする。失敗した場合は「印刷ジョブ情報取得失敗フラグ」を立てる。

DocuWorks Viewer起動

ループ処理(DocuWorks Viewerを監視)

DocuWorks Viewerが存在している間ループを続ける。

Viewerのプロセス確認

Viewerのプロセスが存在しない時はループ終了。

対象ファイルの印刷ジョブ情報リスト取得

印刷ジョブ情報の「ジョブ名」の文字列に対象ファイル名が含まれているかを判定。

印刷ジョブ情報リスト取得のメソッドで例外が発生した際にリトライする。失敗した場合は「印刷ジョブ情報取得失敗フラグ」を立てる。

印刷中ページチェック

印刷ジョブ情報からスプール中のページ数を取得して一定時間ページ数に変化がない場合は「ページ出力タイムアウトフラグ」を立てる。

印刷ジョブ情報の取得に失敗した場合はページチェックを終了する。

DocuWorks Viewerのダイアログの対応

ウィンドウを検出した場合

1秒後に対象ウィンドウが存在している

対象ウィンドウにクローズメッセージを送信。

10秒後に対象ウィンドウが存在している

♻️タイムアウト処理

印刷キューアプリケーションのチェック

印刷キューアプリケーションを検出したら「印刷キューアプリケーションフラグ」を立てる。

印刷キューアプリケーションが起動していると、DocuWorks PDFが不完全なPDFファイルを出力してしまう現象が発生する為、印刷キューアプリケーションを検出したらエラー扱いとしている。(Windows 11 24H2 不具合対応。)

文書変換タイムアウト

文書変換タイムアウト値を超えたら「文書変換タイムアウトフラグ」を立てる。

エラー処理

以下の何れかのフラグが立っていたらタイムアウト処理を実行する。

  • 文書変換タイムアウトフラグ
  • ページ出力タイムアウトフラグ
  • 印刷キューアプリケーションフラグ
  • 印刷ジョブ情報取得失敗フラグ

♻️タイムアウト処理

印刷監視

ループ処理(印刷中)

印刷中の間ループを続ける。

印刷ジョブ情報のステータスが終了

ループ終了。

印刷ジョブ情報のメソッドやプロパティを使用中に例外が発生しても無視する。

例外を無視した時は印刷ジョブが終了したとみなして印刷終了待ちのループを抜ける。

無視するだけなのでエラー処理は無し。

エラーが発生しなかった場合

スイッチで指定された内容に応じてファイルをコピーしたり移動したりする。

ファイルのコピーや移動でエラー発生

「印刷後処理エラーフラグ」を立てる。

後処理

エラーが発生した場合

以下のフラグに対応したエラーメッセージを出力する。

  • 文書変換タイムアウトフラグ
  • ページ出力タイムアウトフラグ
  • 印刷後処理エラーフラグ
  • 印刷キューアプリケーションフラグ
  • 印刷ジョブ情報取得失敗フラグ

クリーンアップ

作業フォルダーの削除などの後処理を行う。

♻️共通処理

♻️タイムアウト処理

印刷ジョブ情報が存在する

対象印刷ジョブのキャンセル

対象印刷ジョブが終了するまで待つ

上記2つの処理で例外が発生しても無視する。

「DocuWorks Viewerを強制終了する」スイッチが指定されている

DocuWorks Viewerを強制終了する。

ループ終了

「DocuWorks Viewerを強制終了する」スイッチが指定されていない時は、DocuWorks Viewerのプロセスが残る事になる。

使用例

以下の内容で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"

以下の内容で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

更新履歴

2026/03/05 Version 1.1.0

  • 印刷ジョブの管理方式を、従来のプロセス常駐方式からジョブキュー管理プロセス方式に変更。
  • 文書変換非同期プロセス最大数を指定する -apmc を廃止。
  • 文書変換非同期印刷開始最大数を指定する -asp を廃止。
  • -o で出力ファイルを指定しなかった時に、-sdf や -fdf で指定したフォルダーに入力DocuWorks文書ファイルが移動されない問題を修正。
  • -ssjbcd を指定した状態で DocuWorks Viewer がダイアログを表示した際にスクリーンショットの取得に失敗すると、ファイル移動などのエラー処理が行われない問題を修正。
  • -ppto の判定開始タイミングを DocuWorks Viewer 起動直後に変更。
    過去バージョンでは、-ppto の判定開始が印刷ジョブ取得後だった為、印刷ジョブ取得前に DocuWorks Viewer が応答しない状態になった時は -ppto は適用されない。
    今回の変更では、DocuWorks Viewer 起動直後から1ページ目の出力ページの変化に対しても -ppto が適用されるので、印刷ジョブ取得前に DocuWorks Viewer が応答しない状態になってもページ出力タイムアウトが発生する事になる。

2026/02/26 Version 1.0.3

  • スクリーンショットを保存するスイッチ -ssjbcd に指定するスクリーンショットファイル名に拡張子 .jpg を使用するとエラーとなってしまう問題を修正。

2025/11/17 Version 1.0.2

  • DocuWorks 10のDocuWorks Viewerが表示するダイアログに対応。
  • DocuWorks ViewerやDocuWorks PDFがダイアログを表示した際にスクリーンショットを保存するスイッチ -ssjbcd を追加。
  • 対象プリンターの印刷キューから印刷ジョブ情報リストを取得する際に、印刷ジョブ情報リストの取得に失敗しても一定時間リトライするように変更。
  • 取得した対象印刷ジョブ情報の状態取得に失敗した際に、「OSが対象印刷ジョブ情報を印刷キューから削除した」とみなして正常処理とするように変更。その際、終了コードは -2 となり、出力されるメッセージは「印刷終了は確認できませんでした」のような警告メッセージとなります。
  • ログに記録する情報を調整。プロセス起動日時を追加。メッセージステータス(正常、警告、エラーの3種類)を追加。
  • プリンター関連のエラーが発生した際に、詳細なエラーメッセージや状況メッセージを出力するように調整。
  • 一部のプリンターが生成する印刷ジョブ情報の判定が想定通り行われない事がある問題を修正。

2025/03/05 Version 1.0.1

  • タイムアウト発生時にDocuWorks Viewerを強制終了するスイッチ -ftwto を追加。
  • 指定した時間が経過しても印刷ジョブのページ数が変化しなかった時にタイムアウトとするスイッチ -ppto を追加。
  • 文書変換失敗時に入力DocuWorks文書ファイルをエラーフォルダーへ移動した際のログに、入力DocuWorks文書ファイルのフルパスを記録するように変更。
  • ログ出力の際に、自身のプロセスのプロセスIDを記録するように変更。 (printToPdfFromDocuWorksFileのプロセスID)
  • 起動したDocuWorks ViewerのプロセスIDをログに記録するように変更。
  • 印刷ジョブを制御して、タイムアウト発生時の印刷ジョブのキャンセルや、印刷終了の判定などを行うように変更。(出力PDFファイルをqpdfでチェックしないように変更。)
  • DocuWorks PDFが表示するエラーダイアログを検出した時に閉じるように変更。
  • 印刷キューアプリケーションを検出した時に印刷処理を中断してエラー処理を行うように変更。

2024/12/22 Version 1.0.0

  • 新規リリース。