« バッチファイルで複数のPDFファイルを連続印刷する。(その3) | トップページ | Vistaのタスクバーのツールバーは、画面の左側面に置く。 »

2009年6月19日 (金)

Adobe Readerはマルチインスタンスサーバです。

Adobe Readerはサーバなんですね。だから、1プロセスが基本形。
なので、AcroRD32.exeを複数、起動しても、1プロセスになります。
2番手以降はクライアント、1番手のサーバに処理を依頼して、完了を待たず、即終了。
逆に印刷が完了しても、1プロセスの場合は終了しないで、サーバとして居座ります。

これらの特性に逆らうには、/nで別プロセスにする。
印刷完了でプロセスを終了させるには、先にプロセスを1個起こしておいて、/n /tで印刷する。
印刷完了でプロセスが終了した後に、先に起こしたプロセスを終了させる。
もし、/nがないと、1番手のサーバに処理を依頼して、即終了するため、印刷完了の待ち合わせができません。
そのため、複数ファイルを連続印刷すると、印刷処理が集中してパンクしたり、順番が不定になったりします。
もし、先にプロセスを1個起こしておかないと、印刷が完了しても、そのプロセスが終了しないため、永久に待ちが解けません。

ところで、Adobe Reader 9からインプロセスサーバに変わりました。

Adobe Reader 8までは、アウトプロセスサーバだったので、IEでPDFファイルを開くと、AcroRD32.exeのプロセスができましたが、Adobe Reader 9からはインプロセスサーバに変わったので、AcroRD32.exeのプロセスはできません。
例えば、GetObject(PDFファイル)で、AcroRD32.exeのプロセスができることを期待していると、外れます。

« バッチファイルで複数のPDFファイルを連続印刷する。(その3) | トップページ | Vistaのタスクバーのツールバーは、画面の左側面に置く。 »