gpt4 book ai didi

c# - 在没有预览的情况下在 rdlc 中打印风景/肖像

转载 作者:行者123 更新时间:2023-11-30 18:30:26 24 4
gpt4 key购买 nike

我正在尝试以横向或纵向打印本地报告。

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; }
}

我有 2 种不同的报告,一种是纵向模式,一种是横向模式,但无论我为 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属性(property)。

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

关于c# - 在没有预览的情况下在 rdlc 中打印风景/肖像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21455090/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com