C# で印刷ページ数をカウントする
質問
特定のプリンターで印刷されたページ数をカウントするプリントスプールモニターを開発しています。
私はこの分野の初心者なので、次の記事を参考にしています。
ここで、両面ページ (両面) と片面ページを別々にカウントする必要があります。これを検出するにはどうすればよいですか?
解決
これはどう考えても難しいです。これを適切に行うには、言語をプリンタが実際に出力するものに変換できる RIP (ラスター イメージ プロセッサ) を通じて出力 (PCL/PS/XPS) を実行し、何が出力されるかを確認する必要があります。印刷に使用されている言語でファイルの両面コードを確認することはできますが、両面機能が全体的にオンまたはオフになる可能性があるため、問題が発生する可能性があります。また、メーカーによっては、これをデータストリーム自体の標準 PCL または PS コーディングではなく、ジョブの開始時にカスタム PJL に入れる場合もあります。
精度が大きな問題ではない場合は、データを解析して数値を算出することもできますが、特にファイルに明示的に両面印刷のオンまたはオフが設定されておらず、プリンターがオンに設定されている場合は、正確になることはありません。この場合、二重化されるため、わかりません。それに加えて、ユーザーはマルチアップ (1 枚のシートに 4 ページ) を印刷する場合があります。アプリケーションを通じてこれを行うと、1 ページが報告されます。プリンター ドライバーでこれを行う場合、4 ページを渡してプリンターにレイアップを行わせる可能性があります。この場合、1 ページではなく 4 ページが報告されます。もう 1 つのケースは、1 ページの文書を 100 部コピーしたいユーザーです。プリンターは複数のコピーを作成する作業を行うため、スプーラーは 1 ページのみを報告する可能性があります。
このデータを取得するためのツールが数多く市販されています。正確なものは通常、ジョブの印刷後にデバイスからデータを取得します。最新のプリンタのほとんどには、印刷されたページやユーザーなどを追跡する機能があります。
申し訳ありませんが、これ以上良い/満足のいく答えはありません。幸運を。