で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));
}
これは機能しますが、明らかにこれは面倒です。しかし、これはまた、データを手動で改ページし、各ページのヘッダー行を再描画する必要があるので、私に問題をもたらします。またページネーションのために、私は明らかに得られないプリンタのページサイズとプリンタ解像度が必要になります。
アイデア?グリッドビューをランドスケープで印刷し、各ページでヘッダー行を繰り返すページネーションを印刷するにはどうすればよいですか?これを行うためのより簡単で良い方法がありますか?
ありがとうございました。しかし、私の手段は限られています。私は、他の多くのプロジェクトやチームが関与し、承認、巨大な負荷を伴うなど、プロジェクトに新しい図書館を導入することはできません。しかし、PrintDocumentクラスについての詳細を指摘してくれてありがとう。私はたぶん細かい印刷物を読まなかったし、開発環境でうまくいっていたので、それは道のりだったと確信していました。 – pavanred