2020-09-20 22:58发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我们正在使用Crystal Reports在多线程循环中生成145,112个PDF。
生成大约826个PDF后,我们的应用程序将崩溃。
我们已将此问题隔离为在报告中打印泰语字符并使用 PSL Kittithada Pro 字体的组合。
使用Crystal Reports时是否需要某种泰文多语言支持?
更改该注册表项不会影响它可以顺序处理的报告数量,最好将其保留为默认值75。
您使用的是CR运行时的免费版本,它不能重复处理数千个报告,也称为报告突发。 要升级到下一版本的Crystal Server,您最多可以运行4台RAS服务器来处理报告。
您可以从这里获取它:
https://www.sap.com/products/crystal-server.html
Don
定期,您需要致电
Marshal.ReleaseComObject( reportdocument );
获取该程序以释放它用于ReportDocument的内存。
此外,您不能真正更改.NET SDK的打印作业限制-运行时许可证将其限制为100个并发打印作业。 因此,如果您使用多线程并同时运行多个报告,则可能会遇到问题。 "打印作业"定义为主报告以及该报告中子报告的每个实例。 例如,如果您有一个仅在报表标题中运行的子报表,则您有2个打印作业。 但是,如果您有一个在详细信息部分中运行的子报表,并且显示了100条记录,则您有101个打印作业,这将失败。
-Dell
首先,我将介绍一些与语言和字体无关的东西。
应用程序是用哪种语言编写的-Java, VB.NET 或C#.NET?
如果是.NET语言中的任何一种,则代码是否曾经在ReportDocument实例上显式调用.dispose()或该实例在" using"子句中? 如果没有,那可能至少是您问题的一部分。 .NET SDK建立在COM对象的基础上,.NET无法很好地管理内存,因此需要明确处理,否则应用程序的内存使用量将一直增加,直到计算机上的所有内存用完为止。/p>
其他一些对内存使用造成负面影响的事情是:
1。 使用" TotalPages"或" PageNofM"。 如果不使用这些选项,Crystal将在渲染每个页面时将其导出。 如果使用它们,Crystal必须渲染所有页面,然后才能导出任何报告。
2。 子报表的使用,尤其是在详细信息部分中时。
我在VS版本13.0.9.1312中使用CR。
我还附上了该字体的屏幕截图。 看起来确实是True Type字体,不是吗?
向SP 22迁移可能会有所帮助,它使用了usp10.dll的更新版本,如果先前版本中存在问题,则可以修复该问题。
更新时,您必须阅读SP 21信息以更新项目参考等。
第二个问题/问题是CR仅支持TTF类型的字体,如果您的字体不是,请使用该字体的ttf版本进行测试。
在CR Designer中打开报表,然后依次单击"视图","首选查看区域设置",然后单击"更多..."。向下滚动,您应该会看到泰语。
进行设置,然后右键单击其中一个字段并选择True Type字体。
现在可以多次预览报告,并查看它是否始终如一。
我认为这是导致内存问题的字体,请尝试使用其他字体,看看它在您的应用程序中是否仍然存在内存问题。
我现在所建议的就是升级到SP 22,看看更新的usp10.dll是否有助于解决问题
最多设置5个标签!
更改该注册表项不会影响它可以顺序处理的报告数量,最好将其保留为默认值75。
您使用的是CR运行时的免费版本,它不能重复处理数千个报告,也称为报告突发。 要升级到下一版本的Crystal Server,您最多可以运行4台RAS服务器来处理报告。
您可以从这里获取它:
https://www.sap.com/products/crystal-server.html
Don
定期,您需要致电
Marshal.ReleaseComObject( reportdocument );
获取该程序以释放它用于ReportDocument的内存。
此外,您不能真正更改.NET SDK的打印作业限制-运行时许可证将其限制为100个并发打印作业。 因此,如果您使用多线程并同时运行多个报告,则可能会遇到问题。 "打印作业"定义为主报告以及该报告中子报告的每个实例。 例如,如果您有一个仅在报表标题中运行的子报表,则您有2个打印作业。 但是,如果您有一个在详细信息部分中运行的子报表,并且显示了100条记录,则您有101个打印作业,这将失败。
-Dell
首先,我将介绍一些与语言和字体无关的东西。
应用程序是用哪种语言编写的-Java, VB.NET 或C#.NET?
如果是.NET语言中的任何一种,则代码是否曾经在ReportDocument实例上显式调用.dispose()或该实例在" using"子句中? 如果没有,那可能至少是您问题的一部分。 .NET SDK建立在COM对象的基础上,.NET无法很好地管理内存,因此需要明确处理,否则应用程序的内存使用量将一直增加,直到计算机上的所有内存用完为止。/p>
其他一些对内存使用造成负面影响的事情是:
1。 使用" TotalPages"或" PageNofM"。 如果不使用这些选项,Crystal将在渲染每个页面时将其导出。 如果使用它们,Crystal必须渲染所有页面,然后才能导出任何报告。
2。 子报表的使用,尤其是在详细信息部分中时。
-Dell
我在VS版本13.0.9.1312中使用CR。
我还附上了该字体的屏幕截图。 看起来确实是True Type字体,不是吗?
向SP 22迁移可能会有所帮助,它使用了usp10.dll的更新版本,如果先前版本中存在问题,则可以修复该问题。
更新时,您必须阅读SP 21信息以更新项目参考等。
第二个问题/问题是CR仅支持TTF类型的字体,如果您的字体不是,请使用该字体的ttf版本进行测试。
在CR Designer中打开报表,然后依次单击"视图","首选查看区域设置",然后单击"更多..."。向下滚动,您应该会看到泰语。
进行设置,然后右键单击其中一个字段并选择True Type字体。
现在可以多次预览报告,并查看它是否始终如一。
我认为这是导致内存问题的字体,请尝试使用其他字体,看看它在您的应用程序中是否仍然存在内存问题。
Don
我现在所建议的就是升级到SP 22,看看更新的usp10.dll是否有助于解决问题
一周热门 更多>