我有一个 Windows 窗体应用程序,其中包含textbox
、 abutton
和 3 ReportViewer
。3个ReportViewer
盒子是隐藏的。当你ShopOrder
在文本框中输入 a并点击按钮时,它会自动将 Shop order 值作为参数传递给所有 3 个报表,渲染报表,渲染完成后,将报表渲染为 EMF 文件,打印报表.
我使用此链接作为从 Windows 窗体应用程序自动打印 SSRS 报告的指南。
我的应用程序中有一些差异,因为我ServerReports
在我的ReportViewer
而不是LocalReport
. 但是在所有这些更改之后,我的应用程序可以毫无问题地将它们全部打印出来。
但我唯一的问题是,Landscape
即使我的报告上的方向是横向,我也无法将页面方向设置为 。
所以我想也许我需要相应地设置deviceInfo
变量PageWidth
和PageHeight
变量,所以这就是deviceInfo
变量所具有的:
string deviceInfo = @"<DeviceInfo> <OutputFormat>EMF</OutputFormat> <PageWidth>11in</PageWidth> <PageHeight>8.5in</PageHeight> <MarginTop>0.25in</MarginTop> <MarginLeft>0.25in</MarginLeft> <MarginRight>0.25in</MarginRight> <MarginBottom>0.25in</MarginBottom> </DeviceInfo>";
我有两个Export功能:Export和ExportLandscape。上面的代码片段是ExportLandscape. 当我调用 时ExportLandscape,我的报告仍然以纵向打印。
我尝试从我的DeviceInfo变量中完全删除页面设置选项,并让它只说OutputFormat. 那也没有做到。
我的报告要在横向打印时还有什么需要更改的吗?我错过了什么?
还值得注意的是,在我的 3 份报告中,其中 2 份以横向打印,1 份以纵向打印。所以我真的希望我的应用程序只在报告所在的任何页面设置中打印它。我只是尝试获取报告的页面大小和报告的边距,并将它们设置为我的DeviceInfo变量,如此处建议的那样。仍然没有运气!
我只是尝试在Export(ReportViewer report)函数上添加一个断点并逐步完成。当我进入report.ServerReport.GetDefaultPageSettings().PaperSize直接窗口时,我看到:
{[PaperSize Letter Kind=Letter Height=1100 Width=850]}
Height: 1100
Kind: Letter
PaperName: "Letter"
RawKind: 1
Width: 850
这让我觉得即使我的报告设置为横向(高度 = 8.5 英寸,宽度 = 11 英寸),我的应用程序似乎也无法识别它。
重要更新:
我要打印的打印机有 2 个纸盘。当我打印纵向报告时,它从具有默认纸张尺寸的默认纸盘(纸盘 2)中取出。但是当我的应用程序发送横向报告进行打印时,打印机尝试从纸盘 1 中取出一张纸。当我在纸盘 1 中装入纸盘 2 中的相同纸张时,它会要求我输入纸的宽度和高度. 当我告诉它横向打印时,打印机似乎不明白。或者更确切地说,打印机认为这是一些它不知道的新设置。当我输入 11 的宽度和 8.5 的高度时,它会在纵向纸上打印横向数据。
为了让我自己更清楚,数据以 11 的宽度和 8.5 的高度打印。也就是,只有 75% 的数据被打印出来。其余部分被推出页面,因为页面仍然是纵向的。
心有法竹
相关分类