在没有预览的情况下在rdlc中打印横向/纵向

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在没有预览的情况下在rdlc中打印横向/纵向相关的知识,希望对你有一定的参考价值。

我试图以横向或纵向打印本地报告。

private void Export(LocalReport report)
{
    Warning[] warnings;
    m_streams = new List<Stream>();

    var deviceInfo = new StringBuilder();
    deviceInfo.AppendLine("<DeviceInfo>");
    deviceInfo.AppendLine("<OutputFormat>EMF</OutputFormat>");
    //"11.7in", "8.3in"
    deviceInfo.AppendLine("<PageWidth>11.7in</PageWidth>");
    deviceInfo.AppendLine("<PageHeight>8.3in</PageHeight>");

    deviceInfo.AppendLine("</DeviceInfo>");

    report.Render("Image", deviceInfo.ToString(), CreateStream, out warnings);            
    foreach (var stream in m_streams) { stream.Position = 0; }
}

我有两个不同的报告,一个是纵向模式,另一个是横向模式,但是我为PageWidth和PageSize更改的值无关紧要,它始终以纵向打印。我已经在11.7英寸和8.3英寸之间交换宽度和高度,但它始终以纵向模式打印。

答案

您可以使用ReportPageSettings.IsLandscape属性来验证报告是否定义为横向(报告属性>页面设置>方向)。

如果是横向,您需要在DeviceInfo声明中交换纸张宽度和纸张高度。

Dim rdlLocalReport As New LocalReport
Dim strDeviceInfo As String

With rdlLocalReport.GetDefaultPageSettings

    Dim intPaperSizeWidth As Integer = 0
    Dim intPaperSizeHeight As Integer = 0

    If .IsLandscape Then
        intPaperSizeWidth = .PaperSize.Height
        intPaperSizeHeight = .PaperSize.Width
    Else
        intPaperSizeWidth = .PaperSize.Width
        intPaperSizeHeight = .PaperSize.Height
    End If

    strDeviceInfo = "<DeviceInfo>" _
        & "<OutputFormat>EMF</OutputFormat>" _
        & "<PageWidth>" & Strings.Replace(intPaperSizeWidth / 100, ",", ".") & "in</PageWidth>" _
        & "<PageHeight>" & Strings.Replace(intPaperSizeHeight / 100, ",", ".") & "in</PageHeight>" _
        & "<MarginTop>" & Strings.Replace(.Margins.Top / 100, ",", ".") & "in</MarginTop>" _
        & "<MarginLeft>" & Strings.Replace(.Margins.Left / 100, ",", ".") & "in</MarginLeft>" _
        & "<MarginRight>" & Strings.Replace(.Margins.Right / 100, ",", ".") & "in</MarginRight>" _
        & "<MarginBottom>" & Strings.Replace(.Margins.Bottom / 100, ",", ".") & "in</MarginBottom>" _
        & "</DeviceInfo>"

End With

如果您使用PrintDocument,您还需要相应地更改PageSettings.Landscape属性。

Dim printDoc As New PrintDocument
printDoc.DefaultPageSettings.Landscape = rdlLocalReport.GetDefaultPageSettings.IsLandscape

以上是关于在没有预览的情况下在rdlc中打印横向/纵向的主要内容,如果未能解决你的问题,请参考以下文章

在WORD中,怎样将需要打印的字体调成横向?

rdlc 怎样能直接显示打印布局预览页面

Objective-c:如何在启用纵向锁定的情况下在捕获后修复图像方向

java的PDF纵横向打印

excel怎么让表格居中

在 Java 中使用 Apache POI XWPF 在 Word 文档中的横向/纵向之间切换