Отчет SSRS отказывается печатать в альбомной ориентации - PullRequest
0 голосов
/ 06 июня 2018

Это использует ReportViewer в приложении WinForms.Оригинальное приложение было написано еще в 2006 году. Отчет печатает пейзаж, если я иду прямо с сервера отчетов, но это не работает для моего варианта использования.

Я схожу с ума.Это должно быть легко и очевидно.В отчете есть альбомная настройка, допустимый размер страницы.Отчет должен распечатываться по всей странице.Но НООООООО ..... и я работаю над этим часами.Я наконец поняла это к чему-то, что может вызвать у кого-то знания и опыт.Во-первых, это страница настройки свойств отчета для отчета: enter image description here

Я намеренно установил размер бумаги как нестандартный, а размеры не совсем законные, потому что у меня есть отчеты, которые действительнозначки и совершенно нестандартный и тот же код, который я собираюсь показать, работает отлично.Меняя это на законный ландшафт и ширину 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]}

Как вы можете видеть, высота и ширина меняются на противоположные значениям, введенным в свойствах отчета.Я не смог ничего сделать, чтобы это исправить.В результате отчет выглядит следующим образом: enter image description here Если я запускаю тот же самый отчет с сервера отчетов напрямую, без привлечения средства просмотра отчетов, он запускается, как и ожидалось: enter image description here

...