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

Print rdlc on thermal printer with unknown height

如何使用 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 页面,我们可以在其中找到完整的示例。

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

这对我的报告每次都有效,唯一的缺点是您需要确保报告的实际高度永远不会大于您的固定高度。你也可以做一些计算并将你的可变高度放在 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();

我最近发现自己正在寻求有关此问题的帮助。我需要将 RDLC 报告(Bill 类报告)打印到热敏打印机,但它在 11 英寸(Letter 尺寸)处被切断。在大量浏览和测试纸张尺寸、报告尺寸、打印机设置等之后,解决问题的一件事是将报告高度设置为打印机选择的相同纸张高度(在我的例子中,RollPaper 80x3276mm)。已经很晚了,但希望这可以帮助遇到相同问题的任何人节省时间。