0

Chris Dolan 的 CAM::PDF 对我来说是一项非凡的资产。最近的项目要求将 1,000 多个小型 PDF 文件合并为一个大文件。

一切都很好,直到页面达到 200 多页,此时它开始变慢。最终,附加每个附加文件大约需要 30 秒或更长时间。

我在每次追加后使用以下代码,希望清除缓存以加快速度:

if ($PDF->needsSave()) { $PDF->cleansave() }

我已经将每个小的 PDF 文件缩减到 45kb。

缺少服务器升级,在编码方面我还应该做些什么来提高速度吗?

提前致谢!

4

1 回答 1

1

克里斯多兰在这里。我从未尝试过以这种规模使用 CAM::PDF,但我使用 100kb 的 PDF 进行了测试,但无法重现减速。我用这个小程序进行了测试:

use warnings;
use strict;
use CAM::PDF;

my $file = shift;
my $in = CAM::PDF->new($file) or die;

for my $i (0..1000) {
   print "$i\n";
   $in->appendPDF(CAM::PDF->new($file));
}

并且追加第 1000 个文件与第一个文件所花费的时间大致相同。也许您的特定 PDF 的某些细节会导致库中的病态行为?没有更多信息,真的很难说。

也许问题在于您的内存不足和颠簸,但由于 PDF 非常小,我不会这么认为。我假设您尝试过使用和不使用 cleansave()?正如@zdmi 所说,将它们组合成二叉树可能有助于加快一些早期的组合,但组合最后几个节点可能仍然非常慢。

于 2018-08-11T17:27:18.273 回答