计算大量pdf文件中的页数:内存不足

时间:2014-02-19 09:38:54

标签: perl pdf

我正在尝试获取大量PDF文件(300.000)中的总页数。我编写的脚本可以正常运行,但是出现“内存不足”错误。在TaskManager中,我看到内存使用量逐渐增长。

File :: Find的标准行为是什么?有没有人有另一种方法?

#!/usr/bin/perl

use File::Find;
use PDF::API2;

$totalpages = 0;

sub pagesPDF {
  return unless -f; 
  my $fullpath = $File::Find::name;
  my $pdf = PDF::API2->open($fullpath);
  my $pages = $pdf->pages;
  $totalpages += $pages;      
}

find (\&pagesPDF, "G:/MYDIR/1");


print "Total pages of pdf pages = $totalpages\n";

2 个答案:

答案 0 :(得分:1)

你可以试试这个,它可能会有所帮助:

sub pagesPDF {
  return unless -f; 
  my $fullpath = $File::Find::name;
  my $pdf = PDF::API2->open($fullpath);
  my $pages = $pdf->pages;
  $totalpages += $pages; 
  undef $pdf;     
}

或者你可以采用不同的方法:

sub pagesPDF {
  return unless -f; 
  my $fullpath = $File::Find::name;
  my $pages = `/usr/bin/pdfinfo $fullpath | grep 'Pages:'| cut -f2- -d":"`;
  $pages =~ s!\D+!!gis;
  $totalpages += $pages;      
}

答案 1 :(得分:1)

显然这里的文档有点奇怪。 $pdf->end()似乎没有按照规定销毁文件,而是要妥善销毁物品,从而关闭文件。