关于vb.net:标签打印机开始在大型作业中打印空白页

Label printer starts printing blank pages in large jobs

我遇到了一个非常奇怪的问题,我的一个用户正在报告:
Crystal Reports报表正在打印空白页面超过特定点。我的疑难解答已缩小了罪魁祸首的范围,但同时却显示出一些不一致的结果。

这是最低点:

  • 该应用程序是使用.NET 4的VB.NET应用程序。
  • 解决方案中嵌入了多个Crystal Report报表,并且使用一个表格来显示和打印任何报表。
  • 通过代码后端处理要显示的报告,并在显示表单之前将其分配给表单的CrystalReportViewer对象。
  • 对于问题报告,数据源来自在代码中运行的SQL查询,然后将其分配为报告的数据源,然后在表单中将报告分配为CRV对象的报告源。
  • 标签打印机通过USB连接到有问题的计算机,并使用安装程序提供驱动程序。
  • 如果重要的话,它是一台Citizen CLP-7201e标签打印机。

将数据源分配给报表的代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
    myCommand = New SqlClient.SqlCommand(strSQL, conPlanning)
    myCommand.ExecuteNonQuery()

    Da = New SqlClient.SqlDataAdapter(myCommand)

    Da.Fill(dsData,"TempPrintLabels")

    rptPrintLabels.SetDataSource(dsData.Tables(0))
    rptPrintLabels.PrintOptions.PaperOrientation = CrystalDecisions.Shared.PaperOrientation.Portrait

    frmReports.rptViewer.ReportSource = rptPrintLabels

    frmReports.Show()

strSQL是基本的SQL语句,基于该语句从此特定形式中选择。报表的SQL查询为SELECT * FROM TempPrintLabels

有基本信息。该报告生成良好,对于带有?100个标签的报告,它可以正常打印。当报告超出该限制时,就会发生奇怪的事情。它在95-120标签范围内。它似乎不一致。报告将一直打印,直到达到该点为止。届时,该报告的其余部分将只打印空白。空白将与应该剩余的页面数一样多。但是,如果您在空白开始的地方再次开始作业,则可以正常打印。

当我在CrystalReportViewer中查看此报表时,它看起来还不错。所有标签均正确呈现。当我将其打印到PDF或文本文件打印机时,所有页面都在那里。因此,报告和打印生成似乎对我有用。

我以为是打印机。为了进行测试,我将185页的作业打印为PDF,然后将其打印至打印机。那打印得很好。

我无所适从地对此进行解释,甚至无法进一步诊断。表格中没有用于打印的代码;它使用CrystalReportViewer对象处理所有内容。如果这是CRV对象,则打印为PDF应该给我空白页。没有。如果是打印机,则应该在与从CRV对象直接打印相同的位置开始从PDF打印空白。没有。

我还能寻找什么?


对于这个问题,我有一些想法导致打印时出现此行为。

  • 所有标签长度的宽度问题可能超出页面尺寸。因此,您可以在缩小标签宽度时检查所有标签和页面是否为空白(即使标签显示不正确,我们也可以单独处理)。如果未显示(如您当前所知),则只需将所有标签的"可以增长"选项设置为true即可处理标签宽度。

  • 如果一切正常,那么我认为您可以检查打印机的页面设置/边距。

  • 如果上述方法不起作用,则只需添加静态标签和值即可创建新报告或现有报告,然后先进行预览,然后从代码中调用。您找到的东西。

  • 根据我的经验(在这种情况下,我可能是错的),每当您的列将增加时,水晶报表中出现空白页时,报表的宽度就会造成问题。因此,要么将报告宽度设置为减小,要么将打印机页面设置为更大。因此它可以打印,否则它不会引发错误,而是提供空白页。