繁体   English   中英

使用 Crystal Reports 将批量 XML 导出到 PDF 的正确方法?

[英]Correct way to export batches of XML to PDF using Crystal Reports?

我有以下 function 在循环内运行,在指定目录中的每个 xml 文件上:

 Public Function createReport(ByVal rptName As String, ByVal pdfName As String, ByVal xmlInput As String) As String

        Dim ds As New DataSet
        Dim cr As New ReportDocument
        Dim CRfile As String = crystalFilePath & rptName & "Template.rpt"
        ds.ReadXml(xmlInput)

        cr.FileName = CRfile
        cr.DataSourceConnections.Clear()

        cr.SetDataSource(ds)
        cr.Refresh()
        cr.VerifyDatabase()

        Dim pdfPath As String = outputDirectory & rptName & "\pdf\" & pdfName & ".pdf"

        Try
            cr.ExportToDisk(ExportFormatType.PortableDocFormat, pdfPath)
        Catch ex As Exception
            If Not ex.InnerException Is Nothing Then
                Return pdfName & "<br /> <strong>Error:</strong> " & ex.InnerException.ToString
            Else
                Return pdfName & "<br /> <strong>Error:</strong> Unknown error (no inner exception text)"
            End If

        End Try

        cr.Close()
        cr.Dispose()
        GC.Collect()


        Return "Success"

    End Function

有时我会遇到错误

已达到系统管理员配置的最大报表处理作业限制

我怀疑我在每次迭代中都没有正确处理 memory?

此错误旨在帮助开发人员和用户了解他们何时将高报告负载置于运行报告的服务器上。 我建议阅读这篇博文,了解如何解决您的错误的一些想法。

默认情况下,限制为 75 个报告打印作业。 请记住,放置在主报告中的子报告计入此限制。 因此,单次打印具有 4 个子报表的报表将计为 5 次打印。 有一个注册表编辑可用于增加此限制,但如果您增加限制,运行报告的机器可能会遇到性能问题。 在过去,我遇到过 memory 错误,这是由于对运行报告的机器设置过高的限制直接导致的。

此博客还讨论了一些编码实践,您可以遵循这些实践来清理对象和临时文件,以帮助您解决问题。 我建议在尝试注册表编辑解决方案之前先用尽所有编码实践。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM