2

我正在进行的项目是使用第 3 方组件在名为 ABCpdf.Net 的 VB.Net 网络系统中构建动态 PDF。(不是一个糟糕的工具,但也不是一个伟大的工具。)

有时,由于我无法理解的原因,文档对象会抛出 SEHException。进一步挖掘,事实证明这是由 WebSupergoo.ABCpdf6.Internal.PDFException 类型的文档对象中的自定义异常引起的。内容仅包含不太有用的标题“无法获取图像数据。内存不足”通常在尝试将图像添加到 PDF 时发生。由于这些图像是小于 100k 的 PNG,我猜它们的大小不是问题。

此外,真正奇怪的是,一旦这个问题开始发生,让它停止的唯一方法似乎是重新启动 Web 服务器,这显然有点低于标准。

有没有人遇到过这个问题(甚至使用过这个工具?)

4

3 回答 3

2

迷人。我得出的结论是一定会发生什么。你还在 using 块的末尾调用 doc.Clear() 吗?

于 2008-10-06T21:27:08.493 回答
2

三个月后更新:

据我所知,当我们从 ABCpdf 6 升级到 7 时,内存问题都得到了解决。似乎版本 7 不再是带有 .NET 包装器的 COM 对象,而是所有自下而上的托管代码。它仍然不是最好的 PDF 生成器,但资源处理问题似乎已经解决。

于 2009-01-09T18:44:13.547 回答
1

我以前没有特别看到过这个错误,但是我们以前遇到过 ABC PDF 的内存问题。

长话短说,它不是一个完全托管的代码库,而只是一个围绕其 COM 版本的 .NET 包装器。话虽如此,我们将内存使用问题追溯到没有正确处理它们的对象。

所以,而不是:


Dim doc As New Doc()
'etc...

做这个:


    Dim doc as Doc
    Using doc As New Doc()
      'etc...
    End Using
于 2008-10-06T20:51:49.127 回答