2011-06-20 16 views
1

this codeを使用してドットマトリックスプリンタにrdlcレポートを印刷しています。レポートは請求書領収書の形式です。私が望むのは、領収書が完全に印刷される(すなわち、印刷されるテキストの最後)点でプリンタが正確に停止し、残りの用紙を取り込まずに何も印刷しないことです。ドットマトリックスプリンタへの印刷

領収書の量が印刷され、長いキューが存在する可能性があるため、エンドユーザーが用紙を無駄にプリンタに再ロードする必要がある場合は時間がかかります。それで、私は、印刷されるテキストが完成するとすぐにプリンタが紙の摂取を止める方法を探しています。

+0

どのプリンタがメーカ/モデルですか?通常はプリンタ固有のもので、オーナーズマニュアルに記載されています。関連する(ただし必ずしも似ているとは限りませんが)質問への前回の回答は、あなたの状況を明らかにするかもしれません。 http://stackoverflow.com/questions/449777/print-on-dot-matrix-printer-in-net – David

+0

ワイプロです!オーナーのマニュアルではどういう意味ですか?それを止める方法のように?いくつかの設定を変更する必要がありますか? – Saurabh

+0

そのコードは通常のWindowsプリンタとして使用しているようです。つまり、領収書をページにまとめる必要があります。 –

答えて

3

あなたが求めているように聞こえるのは、ページ単位ではなく、連続したストリームとして領収書を印刷する方法です。あなたがリンクしたコードは、完全にページ駆動型であり、ページ指向です。ページ支配のビューシステムで作業することはできますが、余分な作業をする必要があります。

PrintPageコードを変更して1ページに複数のイメージチャンクを出力することで、1ページに複数のものを印刷できるはずです。各矩形のオフセットを管理して、2番目のイメージを1番目のイメージの下に配置する必要があります。次のレポートページで実行したいことが、現在のページに残っているスペースに収まらないことがわかります。出力が現在のページにクリップされることが予想されるので、ページ境界の外側(ページの最後を過ぎて)に描画すると何も出力されません。

次のレポートイメージが現在のページに残っているスペースに収まらない場合は、次のページに進むことができます。

または、このページに収まるように印刷し、残りのレポートイメージを次のページの上部に印刷できます。これを行うには、ページ1の残りのスペースとレポート画像矩形の交点を計算し、その交点の高さを保存する必要があります。ページを終了します。ページ2が回転すると、同じレポートイメージが再度印刷されますが、今回は出力矩形を前のページに印刷された矩形の高さでオフセットします。これは、クリッピング矩形がすでに印刷デバイスハンドル上にあると想定しています(これはおそらくそうです)。

このようなページ間でレポートを分割することの欠点は、ページ間で切断または分割されたグラフやテキスト行で終わる可能性があることです。これらは読みにくいでしょう。フォントの高さと行間を知っていて、レポートの配置方法が分かっていれば、出力矩形内にテキスト行がどこにあるのかを推定し、出力矩形を最も近い行の高さの倍数に丸めるしかし、これはハッキーなクルージング領域に深く入り込んでいます。

関連する問題