在未知高度的热敏打印机上打印rdlc

时间:2017-05-19 19:06:44

标签: c# reportviewer

如何使用RDLC报告打印可变高度的收据?高度需要是报告中所有元素的总和。我的报告可以缩小规模。

我在导出方法中使用的设备信息xml:

<DeviceInfo>
            <OutputFormat>EMF</OutputFormat>
            <PageWidth>6.5cm</PageWidth>
            <PageHeight>10cm</PageHeight>
            <MarginTop>0cm</MarginTop>
            <MarginLeft>0cm</MarginLeft>
            <MarginRight>0cm</MarginRight>
            <MarginBottom>0cm</MarginBottom>
</DeviceInfo>

我试图将每个项目的高度相加并将PageHeight设置为它,但这不起作用。

Here是一个MSDN页面,我们可以在其中找到完整的示例。

2 个答案:

答案 0 :(得分:1)

您可以将身高设置为大于您认为的最高身高。打印机将在报告结束时停止打印,因为它只会看到空白区域。请参阅下面的报告:

enter image description here

每次我的报告都有效,唯一的缺点是你需要确保报告的实际高度永远不会超过你的固定高度。你也可以做一些计算,并将你的变量高度放在PageHeight中,如下所示:

double totalHeight = 0; //this will be your calculated height based on report elements

var sb = new StringBuilder();
var xr = XmlWriter.Create(sb);
xr.WriteStartElement("DeviceInfo");
xr.WriteElementString("OutputFormat", "EMF");
xr.WriteElementString("PageHeight", string.Format("{0}in", totalHeight));
xr.Close();

答案 1 :(得分:0)

我最近发现自己正在寻求有关此问题的帮助。我需要将RDLC报告(比尔类型的报告)打印到热敏打印机上,但被切断为11英寸(信纸大小)。经过大量浏览和测试后,解决该问题的一件事是将“报告高度”设置为与打印机选择的相同纸张高度(在我的情况下为RollPaper 80x3276mm)。已经很晚了,但是希望这可以帮助您节省遇到相同问题的任何人的时间。