2013-05-08 3 views
7

TLDR 印刷するページの量を効率的に決定するにはどうすればよいですか?印刷するページ数を効率的にカウントする方法はありますか?

**ちょうど注記:私は私の質問に対する答えとしてklugeramaの答えをマークしました。私はまだ他の提案のために開いている!

現在のところ、私は請求書を印刷するプロダクションでアプリケーションを使用しています。印刷自体は問題ではありません。顧客情報、請求書の詳細などが印刷されている必要があります。しかし、ソフトウェアが印刷ジョブをプリンタに送信するのにかかる時間について、ユーザーは不平を言っています。

現時点では、印刷にはかなり非効率的な方法を実装しました。印刷するページ数を知るために、私は印刷ジョブを「ドライラン」し、プリンタに送信される前にキャンセルします。次に、印刷ジョブに含まれるページ数を数え、実際にプリンタに送信される印刷ジョブにその情報を追加します。これを行うには、私はPrintDocument.PrintPageメソッドを乱用します。その後、私は "ページ1/2 - ページ2/2"などを印刷することができます。

私は現在、これを別の方法で処理しようと考えています。ヘッダーやフッターのような、ページ内の余白を知っています。ヘッダーとフッターの間のスペースは、記事情報(名前、価格など)を印刷するための空き領域です。 (Graphics.MeasureStringを使用して)文字列の高さを計算すると、記事が印刷可能なページ上でより多くのスペースを占めるときを知ることができます。

これまでは、印刷を実行するクライアントが最速ではないため、印刷が実際にプリンタに送信されるまでに1分ほどかかることがありました。私はこの方法を実装しており、印刷は約5-10秒かかります。しかし、これが道のりであるかどうかは疑問だ。私はこの問題を扱っている唯一の人だとは想像できません。これにどうやって対処しますか?

私は全く異なるアプローチにもオープンしています。

+0

おそらく、あなたはpdfまたはxpsでそれを事前レンダリングすることができます。 – TGlatzer

+0

@ Grumbler85これはオプションになりますが、PDF/XPSを生成するには、印刷ジョブを実行するのに多大な時間がかかります。私はあなたのアプローチについて疑問を持っていますが、私はそれを念頭に置いています。 – Stefan

+0

今日、ほとんどのプリンタはpdfとXPを直接印刷することができるので、チャンスがありますので、時間がかかりません。 – TGlatzer

答えて

0

あなたが行っていることは、行く方法のように聞こえる。しかし...

代わりに、XMLに出力し、XSLTを使用して出力のスタイルを設定することができます。これはページ設定を処理します。これにはかなりのリファクタリング作業が必要になる可能性が高いことに注意してください。状況によっては実現できない可能性がありますが、オプションです。

これは、よりモジュラーなアプローチを提供するため、道路の下に潜在的な柔軟性も提供します。これにより、HTML & PDFのような他の出力オプションをより簡単に提供することができます。また、「印刷プレビュー」を簡単にすることもできます。

+0

いいです。私は顧客にログインし、請求書を見たりダウンロードする機能を提供するWebポータルの設計を計画しています。このようなオプションを実装する簡単な方法を提供するだろう:私自身の答えは、Webサイト上にそのような機能を実装する簡単な方法を提供するかもしれないが、あなたのオプションは、おそらくWebサイトに印刷された請求書を取得するためにいくつかの仕事が必要です。私はあなたの答えを私の質問の答えとしてマークするつもりはありません、私は他の人がこれについて何を考えているのか不思議です。 – Stefan

関連する問題