2012-02-22 4 views
1

でGridViewの(ヘッダ行が各ページに印刷される)印刷私は風景モードでのGridViewを印刷しても、ページ付けを必要とする必要がある風景モード

私はCSSで@pageプロパティを使用してみましたが、私は使用できませんブラウザの互換性の問題が原因です。だからそれは除外されている。

私は PrintDocumentクラスを使用し、風景モード

PrintDocument pd1 = new PrintDocument(); 
pd1.DefaultPageSettings.Landscape = true; //this works 

もののにページを設定する代替手段を見つけ、これは働いていたと私は風景モードで文書を印刷することができています。 PrintDocumentクラスはストリームを印刷できますが、レンダリングされたHTMLマークアップは印刷できません。私はgridviewを印刷する必要があり、それを行う方法を理解することはできません。何か案は?

また、PrintDocumentクラスを使用してgridviewを印刷するもう1つの方法が見つかりましたが、これはやや面倒です。私は、gridviewデータをループし、System.DrawingのRectangleFクラスを使用し、グリッドビュー内の各セルの矩形とテキストを手動で描画し、矩形の寸法とx/yオフセットを管理してテーブル全体を描画します。

PrintDocument pd1 = new PrintDocument(); 
pd1.DefaultPageSettings.Landscape = true; 
pd1.PrintPage += printer_PrintPage; 
pd1.Print(); 

//Draw a rectangle and fill text in it. 
//I Change values of xoffset, yoffset accordingly to draw a row one cell after other 
protected void printer_PrintPage(object sender, PrintPageEventArgs e) 
{ 
    var rectF1 = new RectangleF(xoffset, yoffset, cellWidth, cellHeight); 
    e.Graphics.DrawString(propertyinfo.GetValue(obj, null).ToString(), font1, Brushes.Black, rectF1); 
    e.Graphics.DrawRectangle(Pens.Black, Rectangle.Round(rectF1)); 
} 

これは機能しますが、明らかにこれは面倒です。しかし、これはまた、データを手動で改ページし、各ページのヘッダー行を再描画する必要があるので、私に問題をもたらします。またページネーションのために、私は明らかに得られないプリンタのページサイズとプリンタ解像度が必要になります。

アイデア?グリッドビューをランドスケープで印刷し、各ページでヘッダー行を繰り返すペー​​ジネーションを印刷するにはどうすればよいですか?これを行うためのより簡単で良い方法がありますか?

答えて

1

ここでシナリオをミックスしていると思います。クライアント側(Webページを訪問しているユーザー)から印刷する場合は、HTMLなどのブラウザを使用して「印刷可能」領域をレンダリングする必要があります。もちろん、HTML印刷はかなり限られており、特定のブラウザだけが正しいCSS印刷ルールを実装していることがわかります。

ほとんどの開発者は、動的に作成し、プラグインとして、今日はかなり哀れなPDFドキュメントにユーザーをリダイレクトすることでこの問題を回避します。警告の1つの言葉では、あなたは「面倒な」描画/レンダリングについて言及していますが、まあまあ同じコーディング経験を期待するべきです。

open-source PDF creation toolkitについてはこの記事をご覧ください。しかし、商用のものを使いやすくすることができます。

最後に、PrintDocumentオブジェクトはサーバー側(ASP.NETコード内)でのみ実行され、そのコードを実行しているマシン/サーバーでのみ印刷されます。ユーザーのプリンタでは印刷されません。

+0

ありがとうございました。しかし、私の手段は限られています。私は、他の多くのプロジェクトやチームが関与し、承認、巨大な負荷を伴うなど、プロジェクトに新しい図書館を導入することはできません。しかし、PrintDocumentクラスについての詳細を指摘してくれてありがとう。私はたぶん細かい印刷物を読まなかったし、開発環境でうまくいっていたので、それは道のりだったと確信していました。 – pavanred

関連する問題