不同的打印性能时间

2020-08-31 08:27发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我使用CR VS SP ...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我使用CR VS SP 25(与VB 2019一起使用)。 我们有一个ERP系统,可以在两种打印模式之间进行切换:

  • 旧RDC(CR XI R2)
  • 用于VS的CR-PrintToPrinter(P2P)
  • 用于VS的CR-PrintOutputcontroller(POC)

我使用带有Microsoft示例SQL数据库AdventureWorks的CR 2016 SP 7创建了一个基本示例报告,可以在这里下载: https://www.microsoft.com/zh-cn/download/details.aspx?id=49502 (在这里用于 SQL 2016,我正在使用SQL 2014,但应该不会有问题。

示例报告放在"人"表上,并带有过滤器,该报告约有20页。
@Don:我可以通过电子邮件将报告发送给您。 您可以使用测试程序来测量时间:

现在次数(直到程序返回 控件的那一刻):

  • 旧RDC:
    -使用" CRAXDRT.Report.PrintOut()" => 2"(秒)直接打印
    -通过查看器中的"打印"按钮:少于1"
  • P2P:
    -使用" CrystalReports.Engine.ReportDocument.PrintToPrinter()"直接打印=> 4"
    -查看器中的打印按钮:11"(!!)
  • POC:
    -使用" mainReport.ReportClientDocument.PrintOutputController.PrintReport()" => 11"(!!)直接打印
    -查看器中的打印按钮:11"(!!)

这是同一份报告,位于同一台打印机上(出于测试目的,Ricoh MP 2553 PCL 5e->我暂停了打印机)。

有什么解释吗?

此致

帕特里克

(80.4 kB)
7条回答
huskylover
2020-08-31 09:06

数字听起来很正确。

RDC包裹在crpe32上 .dll或内嵌有crpe32的inproc版本。

P2P使用基本的Windows Framework打印机集合:

System.Drawing.Printing.PrintDocument pDoc = new System.Drawing。 Printing.PrintDocument();
System.Drawing.Printing.PageSettings pPage = new PageSettings();

输出由crpe32.dll处理,因此它位于...之上。

POC使用相同的Windows API,但是在其顶部还包裹了RAS,因此在呈现报告时它会进行更多处理。

戴尔指出,第一个 由于CR仅在需要时才加载程序集,然后加载/读取打印机驱动程序属性,因此时间总是较慢。

提高性能的方法是将所有默认值保存在RPT文件中 ,默认值,数据库信息,打印机信息(单击"打印"按钮,然后设置 除默认设置和保存外),信息将保存在RPT文件中,然后可以使用通用P2P API。 多数情况下可以使用,但是由于P2P是基本的并且使用默认打印机,因此可能并不总是使用它。

另一个选择是更改应用程序并使用Threading,STA模型,为每个STA创建一个新线程。 报告对象,那么如果其中一个失败,则可以终止该过程,而另一个对象正在工作时,则可以开始处理另一份报告。 您仍然可以进行延迟处理,但是在处理过程中不会使应用处于混乱状态(不响应)。

Don

一周热门 更多>