мне нужно напечатать GridView в ландшафтном режиме, а также необходима пагинация (строка заголовка будет печататься на каждой странице)Распечатайте GridView в ландшафтном режиме
Я попытался использовать @page
свойства в моем CSS, но я не могу использовать это из-за проблемы совместимости с браузером. Так что это исключено.
я нашел альтернативу, используя PrintDocument
класс и настройки страницы в ландшафтном режиме
PrintDocument pd1 = new PrintDocument();
pd1.DefaultPageSettings.Landscape = true; //this works
Хотя, это работает, и я могу напечатать документ в ландшафтном режиме. PrintDocument
класс может печатать поток, но не отображать разметку HTML. Мне нужно распечатать gridview, и я не могу понять, как это сделать. Есть идеи?
Кроме того, я нашел еще одну альтернативу печати сетки с использованием класса PrintDocument
, но это довольно трудоемко. Я прокручиваю данные gridview и использую класс RectangleF System.Drawing и вручную рисую прямоугольники и текст для каждой ячейки в gridview и управляю размерами прямоугольника и смещениями 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));
}
Это работает, но, очевидно, это трудоемко. Но это также создает проблемы, поскольку мне нужно вручную разбивать данные и перерисовывать строку заголовка на каждой странице. И для разбивки на страницы мне понадобится размер страницы и разрешение принтера, которые я, очевидно, не могу получить.
Любые идеи? Как распечатать gridview в ландшафте и с разбивкой на страницы с повторением строки заголовка на каждой странице? Есть ли более простой и лучший способ сделать это?
Спасибо. Но мои средства ограничены, я не могу представить какую-либо новую библиотеку для проекта, как много других проектов и команд, а также огромную нагрузку на согласования, время и т. Д. - короче говоря, это не практично. Спасибо, что указали подробно на класс PrintDocument. Я, возможно, не читал мелкий шрифт, и он отлично работал в среде Dev, поэтому я убедился, что это путь. – pavanred