3

我刚刚继承了一个 PHP 项目,该项目会生成大型 PDF 文件,并且通常会在几千页和几台服务器内存之后窒息。该项目使用 PDFLib 在“内存”中生成这些文件。

我的任务是解决这个问题,所以我做的第一件事就是将 PDFLib 输出发送到文件而不是在内存中构建。问题是,它似乎仍在构建 PDF 内存。而且大部分内存似乎永远不会返回给操作系统。最终,整个事情都窒息而死。

当我让程序只构建大型 PDF 的片段时,似乎数据没有完全刷新到 end_document() 上的文件中。我没有收到任何错误,但 PDF 不可读,并且在十六进制编辑器中打开它很明显流不完整。

我希望有人遇到过类似的困难。

4

2 回答 2

2

解决了!需要在每个文本流上调用 PDF_delete_textflow(),因为它们被赋予了文档范围并且在文档关闭之前不会消失,因为在此之前所有可用内存都已用尽,所以从来没有。

于 2009-06-05T23:35:16.997 回答
1

您必须确保关闭每个页面以及关闭文档。这将通过在每个书面页面的末尾调用“end_page_ext”来完成。

此外,如果您要从另一个 PDF 导入页面,则必须在每个导入的页面之后调用“close_pdi_page”,在完成每个导入的文档后调用“close_pdi_document”。

于 2009-06-05T15:14:53.677 回答