我们有一个 asp.net 3.5 应用程序,它允许用户生成许多图表并通过 pdf 导出它们。这适用于较小的 pdf(少于 100 页),但是当我们处理较大的 pdf 时,会出现随机错误。我们看到的一些错误是:
--System.OutOfMemoryException
-- 无法呈现 HTML 字符串。无法从 html 字符串获取图像。尝试设置 LoadHtmlConcurrencyLevel = 1..
--克隆错误。内存不足..
-- 等待转换完成超时。
--System.OutOfMemoryException:内存不足。在 System.Drawing.Image.FromStream(流流,布尔 useEmbeddedColorManagement,布尔 validateImageData) 在 System.Drawing.Image.FromStream(流流)
如果我多次运行大型报告,我通常会得到不同的异常。有时我可以让 IIS 崩溃,我必须执行 iisreset 才能恢复应用程序。
这是我们运行的代码。我们使用图表(png 图像)创建 PDF 文档,然后将其导出到字节数组并放入内存流中。我们将内存流传递给旋转一些图像等的函数,然后调用 doc.save 方法将其导出。
Dim mainPageBytes() As Byte = PDF.GetBytes
Dim stream As New System.IO.MemoryStream(mainPageBytes)
Dim existingDoc As New PDFCreator.Document(stream)
Dim doc As PDFCreator.Document = GetDocument(mainPageBytes, GetChartingPageNumbers(PDF.ConversionSummary), pageOrientation, user, existingDoc)
doc.Save(response, True, Me.DocumentName)