Это использует ReportViewer в приложении WinForms.Оригинальное приложение было написано еще в 2006 году. Отчет печатает пейзаж, если я иду прямо с сервера отчетов, но это не работает для моего варианта использования.
Я схожу с ума.Это должно быть легко и очевидно.В отчете есть альбомная настройка, допустимый размер страницы.Отчет должен распечатываться по всей странице.Но НООООООО ..... и я работаю над этим часами.Я наконец поняла это к чему-то, что может вызвать у кого-то знания и опыт.Во-первых, это страница настройки свойств отчета для отчета:
Я намеренно установил размер бумаги как нестандартный, а размеры не совсем законные, потому что у меня есть отчеты, которые действительнозначки и совершенно нестандартный и тот же код, который я собираюсь показать, работает отлично.Меняя это на законный ландшафт и ширину 14,5, высота не имеет значения.Теперь вот код, который запускается, когда нажимается кнопка печати в средстве просмотра отчетов.
private void Print(bool showDialog)
{
if (_streams == null || _streams.Count == 0)
return;
PrintDocument printDoc = new PrintDocument();
//printDoc.PrinterSettings.PrinterName = printerName;
printDoc.PrinterSettings.Copies = _report.Copies;
//if (!printDoc.PrinterSettings.IsValid)
//{
// MessageBox.Show("error");
// return;
//}
//Reports like Registration and Overview Badges have custom page
//sizes defined in the RDL file, grab that PaperSize and assign
//it to the current print document.
ReportPageSettings settings = reportViewer.ServerReport.GetDefaultPageSettings();
printDoc.DefaultPageSettings.PaperSize = settings.PaperSize;
printDoc.PrintPage += new PrintPageEventHandler(PrintPage);
//printDoc.Print();
PrintDialog dlg = new PrintDialog();
dlg.Document = printDoc;
if (showDialog == false || dlg.ShowDialog() == DialogResult.OK)
printDoc.Print();
}
, когда это выполняется, и существует разрыв в PrintDoc.DefaultPageSettings.PaperSize = settings.PaperSize, непосредственном окнепоказывает:
? settings
{Microsoft.Reporting.WinForms.ReportPageSettings}
IsLandscape: true
Margins: {[Margins Left=50 Right=50 Top=0 Bottom=0]}
PaperSize: {[PaperSize Kind=Custom Height=1350 Width=825]}
Как вы можете видеть, высота и ширина меняются на противоположные значениям, введенным в свойствах отчета.Я не смог ничего сделать, чтобы это исправить.В результате отчет выглядит следующим образом: Если я запускаю тот же самый отчет с сервера отчетов напрямую, без привлечения средства просмотра отчетов, он запускается, как и ожидалось: