【问题标题】:Label printer starts printing blank pages in large jobs标签打印机开始打印大型作业中的空白页
【发布时间】:2015-09-26 20:04:00
【问题描述】:

我遇到了一个我的用户报告的非常奇怪的问题: Crystal Reports 报表正在打印超过某个点的空白页。我的故障排除在某种程度上缩小了罪魁祸首,但同时显示了一些不一致的结果。

这是内幕:

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

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

    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 打印空白。没有。

我还能寻找什么?

【问题讨论】:

  • 嗨,@Ajay2707。虽然感谢您的编辑,但您正在修改不应该的特定部分。例如,CrystalReportViewer 是在 Visual Studio 中引用的对象;单词之间不应有空格。除此之外,宫缩是我自己的风格,与改进无关。
  • 是一个特定的报表展示了这种消隐行为,还是所有超过 90-120 个标签的 Crystal Reports 都会出现这种情况?
  • @ChicagoMike 只有一份报告打印了这么多标签,所以很遗憾,我没有其他报告可以测试它是否是一个孤立事件。
  • 您能创建一个报告吗?我知道这听起来很傻,但如果您新创建的报告能够打印 120 个标签,那将是一个巨大的洞察力。
  • @ChicagoMike 我也许可以,但我不确定它会提供什么价值;愿意分享你的假设吗?

标签: vb.net printing crystal-reports


【解决方案1】:

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

  1. 可能是您所有标签的长度超出页面大小的宽度问题。所以你可以在缩小标签宽度时检查所有标签和页面是否空白(即使标签显示不正常,我们可以单独处理)。如果它没有显示(正如你目前所得到的那样),那么你只需将所有标签的“可以增长”选项设置为 true 来处理标签宽度。

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

  3. 如果上述方法不起作用,则只需添加静态标签和值即可创建新报告或现有报告,然后先预览,然后从代码中调用。你会发现一些东西。

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

【讨论】:

  • 这不是页面大小或边距问题;如果是这样,标签就会误印每项工作。它不会显示这些症状。
  • 这个标签报告有页码吗?不过,这会使 3 位数溢出不断在第 100 页显示此行为。
  • 配置打印队列以保留作业,然后检查假脱机文件,您将能够判断它是否未正确呈现或打印机/驱动程序是否正在死机。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-15
  • 2015-05-18
  • 1970-01-01
  • 2018-11-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多