biz-Streamマニュアル よくあるご質問(FAQ) ダイレクト印刷・バッチ印刷 ダイレクト印刷やバッチ印刷で白紙が出力されることがあります。

Qダイレクト印刷やバッチ印刷で白紙が出力されることがあります。

A回答

1. 発生事象と原因

ダイレクト印刷やバッチ印刷では、印刷データをプリンタへ送信する処理において、プリンタから「ジョブ追加完了」のイベントが返ってきた時点をスプール完了とみなして読み込んでいたファイルを閉じる処理を行っています。
ただしプリンタによっては、

  1. データ送信をし始めた時点で「ジョブ追加完了」のイベントが返ってくるパターン
  2. データ送信が完了した時点で「ジョブ追加完了」のイベントが返ってくるパターン
があり、前者の場合は実際にはプリンタへのスプールが完了していないにも関わらず 「ジョブ追加完了」のイベントが返ってくるため、スプール中のファイルが途中で閉じられてしまい、白紙が印刷されてしまう場合があります。

なお、ファイルサイズの大きさによってもスプールにかかる時間が変わります。 また、同じPDFでもプリンタや印刷を実行する端末のスペックによって本事象が発生する場合としない場合があります。

2. 対処方法

イベントを返すタイミングはそれぞれのプリンタに依るものなので、ダイレクト印刷やバッチ印刷側ではコントロールができません。

ただし、「ジョブ追加完了」イベントを検知してから実際にファイルを閉じるまでの時間を、DirectPrintService.xml の「printFormTimerInterval」または BatchPrintService.xmlの「printFormTimerInterval」で調整することができます。

「printFormTimerInterval」は、スプール時にプリンタからのイベントを定期的に監視する処理のインターバルですが、「ジョブ追加完了」のイベントを検知した後も printFormTimerInterval (ミリ秒) を待ってから読み込んだPDFファイルを閉じます。

根本的な解決方法ではありませんが、この printFormTimerInterval の値を少し延ばすことでファイルを閉じるまでの時間を延ばすことができ、白紙が出る問題を回避することができます。 ただしプリンタからのイベントが返るタイミングに依存するため、必ず白紙が出なくなるというわけではありません。

printFormTimerInterval のデフォルト値は100ミリ秒ですが、最適な設定値については、お客様環境や印刷対象のファイルサイズ、プリンタがイベントを返すタイミングによっても異なるため、実際の印刷結果を見ながらパラメータの調整を行っていただくようお願いします。

ダイレクト印刷の DirectPrintService.xml 設定例
「C:\ProgramData\brainsellers\DirectPrint\DirectPritService.xml」の以下の箇所を修正してください。
<entry key="printFormTimerInterval" type="string">100</entry>
バッチ印刷の BatchPrintService.xml 設定例
「C:\ProgramData\brainsellers\BatchPrint\BatchPrintService.xml」の以下の箇所を修正してください。
<entry key="printFormTimerInterval" type="string">100</entry>

参考値としては、ダイレクト印刷 v5.1.0までは500ミリ秒の固定値となっていましたが、v5.1.3以降ではデフォルト値を100ミリ秒にし、お客様が調整できるよう可変の項目としました。

3. 注意事項

プリンタのイベントチェックはスプール処理中に複数回実施されるため、printFormTimerInterval を長く設定し過ぎると、スプール開始から、実際にプリンタから出力されるまでの処理が遅延します。
printFormTimerInterval を 10000 (10 秒) に設定した場合は、10秒×プリンタイベントのチェック回数分だけスプール時の処理時間が延びることになります。

以下はバッチ印刷 BatchPrintService.log の 例ですが、スプーラへの印刷要求送信 (BP100) ~ プリンタへのジョブ追加完了 (BP096) の間にイベントチェックが2回あるため 20 秒かかっています。プリンタへのジョブ追加が完了次第、印刷が行われます。
また、プリンタへのジョブ追加完了 (BP096) から印刷処理終了 (BP157) の間にもイベントチェックが2回あります。連続印刷を行う場合、印刷処理終了 (BP157) のログが出るまでは次の印刷は行われないため、連続印刷の遅延にも影響します。

※ 以下のログはバッチ印刷 v5.2.0の例で、バージョンによってログメッセージの内容が異なる場合があります。
※ 印刷条件や印刷サーバ環境によっても処理時間が変わります。

// printFormTimerInterval = 10000 に設定した場合

2025/3/18 1:42:19 INFO  BP029 印刷要求処理(doprint)が呼ばれました。 //印刷要求受付
2025/3/18 1:42:19 DEBUG BP051 sppファイルを解凍します。
2025/3/18 1:42:19 INFO  BP034 sppファイルを解凍しました。PDFファイル名: TEST.pdf、ファイルサイズ: 2002byte。
2025/3/18 1:42:19 DEBUG BP216 このマシンにインストールされているプリンタ名一覧: (省略)
2025/3/18 1:42:19 DEBUG BP480 デフォルトプリンタの取得を開始します。
2025/3/18 1:42:19 DEBUG BP481 デフォルトプリンタの取得に成功しました。RICOH IPSiO SP 6120 RPCS
2025/3/18 1:42:19 DEBUG BP052 印刷パラメータの内容を読み込みました。
2025/3/18 1:42:19 DEBUG BP039 印刷パラメータを展開しました。
2025/3/18 1:42:19 DEBUG BP077 JOBIDを作成しました。TEST_250318_014218_0000
2025/3/18 1:42:19 DEBUG BP070 印刷ステータスクリーンアップ処理を起動します。
2025/3/18 1:42:19 DEBUG BP062 印刷ステータスを登録します。JOBID: TEST_250318_014218_0000
2025/3/18 1:42:19 INFO  BP134 印刷キューにリクエストを追加します。  
2025/3/18 1:42:19 INFO  BP036 印刷キューと印刷ステータス履歴に追加します。JOBID: TEST_250318_014218_0000 //印刷キューにリクエスト追加
2025/3/18 1:42:19 DEBUG BP041 印刷要求200 OK応答を送信します。(Batch)
2025/3/18 1:42:19 DEBUG BP023 ソケット切断を行います。
2025/3/18 1:42:19 DEBUG BP480 デフォルトプリンタの取得を開始します。
2025/3/18 1:42:19 DEBUG BP481 デフォルトプリンタの取得に成功しました。RICOH IPSiO SP 6120 RPCS 
2025/3/18 1:42:19 DEBUG BP440 Acrobat、AcrobatReader関連のプロセスをkillします。
2025/3/18 1:42:19 INFO  BP214 印刷フォーム呼び出し関数をprintformbythread=trueとして起動します。
2025/3/18 1:42:19 INFO  BP135 印刷キューからリクエストを取り出しました。
2025/3/18 1:42:19 INFO  BP058 印刷処理を開始します。JOBID: TEST_250318_014218_0000
2025/3/18 1:42:19 DEBUG BP107 印刷ステータスを4に更新します。JOBID: TEST_250318_014218_0000
2025/3/18 1:42:19 DEBUG BP100 スプーラへ印刷要求送信中です。JOBID: TEST_250318_014218_0000、ステータス: 4  //スプーラへの印刷要求送信
2025/3/18 1:42:19 DEBUG BP094 印刷部数: 1部。
2025/3/18 1:42:19 DEBUG BP421 印刷フォーム作成処理を開始します。
2025/3/18 1:42:19 DEBUG BP431 印刷フォーム作成タイムアウト監視スレッドを開始します。
2025/3/18 1:42:19 DEBUG BP434 タイムアウト監視スレッドが外部から終了されました。
2025/3/18 1:42:19 DEBUG BP422 印刷フォーム作成に成功しました。
2025/3/18 1:42:19 INFO  BP061 印刷実行スレッドを起動します。JOBID: TEST_250318_014218_0000
// (10秒間隔でプリンタイベントの更新をチェックする)
2025/3/18 1:42:29 INFO  BP138 プリンタイベント監視を開始します。プリンタ名: Bullzip PDF Printer
2025/3/18 1:42:29 DEBUG BP174 スプールキューをBullzip PDF Printerから取得します。
// (10秒間隔でプリンタイベントの更新をチェックする)
2025/3/18 1:42:39 DEBUG BP480 デフォルトプリンタの取得を開始します。
2025/3/18 1:42:39 DEBUG BP481 デフォルトプリンタの取得に成功しました。Bullzip PDF Printer
2025/3/18 1:42:39 INFO  BP171 デフォルトプリンタをBullzip PDF Printerに変更しました。 
2025/3/18 1:42:39 DEBUG BP081 一時ファイルC:\ProgramData\brainsellers\BatchPrint\tmp\TEST_250318_014218_0000.pdfを作成しました。
2025/3/18 1:42:39 DEBUG BP402 一時ファイルC:\ProgramData\brainsellers\BatchPrint\tmp\TEST_250318_014218_0000.pdfが存在しています。ファイルをロードします。
2025/3/18 1:42:39 INFO  BP406 一時ファイルC:\ProgramData\brainsellers\BatchPrint\tmp\TEST_250318_014218_0000.pdfのロードに成功しました。
2025/3/18 1:42:39 DEBUG BP088 ファイルC:\ProgramData\brainsellers\BatchPrint\tmp\TEST_250318_014218_0000.pdfを読み込みました。
2025/3/18 1:42:39 DEBUG BP093 印刷開始・終了ページ指定: 1,-1、doFit指定: Falseで印刷関数を呼び出します。
2025/3/18 1:42:40 DEBUG BP139 プリンタイベントを受信しました。内容をチェックします。
2025/3/18 1:42:40 DEBUG BP175 プリンタイベントPRINTER_CHANGE_ADD_JOBを受信しました。
2025/3/18 1:42:40 INFO  BP096 プリンタイベントPRINTER_CHANGE_ADD_JOBを受信しました。
// (10秒間隔でプリンタイベントの更新をチェックする)
2025/3/18 1:42:49 INFO  BP144 プリンタイベント監視を停止します。
// (10秒間隔でプリンタイベントの更新をチェックする)
2025/3/18 1:42:59 DEBUG BP480 デフォルトプリンタの取得を開始します。
2025/3/18 1:42:59 DEBUG BP481 デフォルトプリンタの取得に成功しました。RICOH IPSiO SP 6120 RPCS
2025/3/18 1:42:59 INFO  BP171 デフォルトプリンタをRICOH IPSiO SP 6120 RPCSに変更しました。
2025/3/18 1:42:59 DEBUG BP082 一時ファイルC:\ProgramData\brainsellers\BatchPrint\tmp\TEST_250318_014218_0000.pdfを削除しました。
2025/3/18 1:42:59 INFO  BP097 スプーラへの印刷要求送信が完了しました。JOBID: TEST_250318_014218_0000、ステータス: 0
2025/3/18 1:42:59 DEBUG BP107 印刷ステータスを6に更新します。JOBID: TEST_250318_014218_0000
2025/3/18 1:42:59 INFO  BP157 JOBID TEST_250318_014218_0000のステータスを終了状態6に更新します。 //印刷処理終了

4. Debug レベルのログについて

DirectPrintService.log または BatchPrintService.log のログレベルは出荷時の状態では INFO に設定されています。詳細ログを確認する場合は DEBUG レベルに変更してください。変更方法は 「DirectPrintService_logConfig.xmlの設定」、 「BatchPrintService_logConfig.xmlの設定」の設定ファイルをテキストエディタで開き、<level value="Info"></level>の箇所を<level value="Debug"></level>に書き換えて保存してください。
Debug ログ採取後は Info に戻してください。