【问题标题】:ABCPdf uses a lot of memory and generates huge files. Solution?ABCPdf 使用大量内存并生成巨大的文件。解决方案?
【发布时间】:2010-12-17 10:10:28
【问题描述】:

我有一个从用户自己的图像创建 pdf 书籍的系统。这些图像是高分辨率的,pdf 最终大约有 70 页,其中大部分都带有图片。

在服务器上的本地应用程序中生成 pdf 时,该进程使用大约 3Gb 的内存,这使得它更频繁地崩溃然后成功。这些文件也非常大,大约 1,2 Gb。通过打印到 pdf 运行它会使它缩小一百倍。

有没有办法让 ABCPdf 使用更少的内存并创建更小的文件?

【问题讨论】:

  • 您使用什么大小的文件?什么分辨率? PDF 页面的大小是多少?
  • 因为是商业产品,请问支持如何:websupergoo.com/contactus.htm#

标签: c# .net abcpdf


【解决方案1】:

我在使用 iTextSharp 时有过非常相似的经历,每当我创建包含图像的大型 PDF 时,我基本上都会耗尽内存。

我发现在处理完图像后,我应该调用一个函数来释放图像,因为它将它保存在内存中,以防您想再次使用它或最终关闭 PDF。

如果他们重复页眉/页脚徽标,则可以重复使用该图像,或者随时发布图像。
这很可能是您面临的问题,但我没有 ABCPdf 经验。

【讨论】:

  • 听起来是一个公平的解决方案,但如何在 ABCPdf 中做到这一点?
  • @Martin -- 我不确定你是如何使用它的,但如果你使用的是XImage 类,请尝试调用Clear()Dispose() 函数。我在websupergoo.com/helppdf7net/source/5-abcpdf6/ximage/default.htm 找到了它
  • @Martin -- 打电话给他们,我的意思是每次你把他们添加到文档之后。
【解决方案2】:

我没有直接使用 ABCPdf,但我怀疑图像是您的问题的根源,请在它们包含在 PDF 对象中之前调整它们的大小。我怀疑这就是打印到 PDF 的过程。

【讨论】:

    【解决方案3】:

    另一个注意事项,对于非常大的 PDF,您可能需要将“linearize”设置为 false。

            <pdfDoc.SaveOptions.Linearize = false;>
    

    这为网络流式传输优化了 PDF,因此如果您正在流式传输 PDF,那么您可能希望将其保留为 true,但我发现它大大增加了 ABCPDF 在保存期间使用的内存。

    【讨论】:

      猜你喜欢
      • 2014-05-22
      • 2010-10-04
      • 1970-01-01
      • 2019-10-21
      • 1970-01-01
      • 2020-08-17
      • 2013-08-15
      • 1970-01-01
      • 2017-08-15
      相关资源
      最近更新 更多