TLDR 印刷する必要があるページの量を効率的に決定するにはどうすればよいですか?
** ちょっとしたメモ: klugerama の回答を質問への回答としてマークしました。私はまだ他の提案のために開いています!
現在、請求書を印刷するアプリケーションを運用しています。印刷自体は問題ありません。顧客情報、請求書の詳細などは、本来あるべき状態で印刷されます。しかし、ソフトウェアが印刷ジョブをプリンターに送信するのに時間がかかることについて、ユーザーから不満が寄せられています。
現時点では、かなり効率の悪い印刷方法を実装しています。印刷しなければならないページ数を知るために、印刷ジョブの「予行演習」を行い、プリンターに送信される前にキャンセルします。次に、印刷ジョブに含まれるページ数を数え、その情報を実際にプリンターに送信される印刷ジョブに追加します。これを行うには、PrintDocument.PrintPageメソッドを「悪用」します。すると、「1/2ページ - 2/2ページ」などと印刷できます。
現在、別の方法での対応を検討中です。ヘッダーやフッターなど、ページにどの余白があるかを知っています。したがって、ヘッダーとフッターの間のスペースは、記事の情報 (名前、価格など) を印刷するために使用できるスペースです。文字列の高さを ( Graphics.MeasureStringを使用して) 計算すると、記事が印刷可能なページでより多くのスペースを占める時期がわかります。
以前は、印刷が実際にプリンターに送信されるまでに最大 1 分かかる場合がありました (ソフトウェアを実行するクライアントが最速ではないことを考慮すると)。この方法を実装したところ、印刷に約 5 ~ 10 秒かかりました。とはいえ、このままでいいのか迷っています。この問題を扱っているのは私だけだとは思えません。これにどう対処しますか?
また、まったく異なるアプローチにもオープンです。