是否有可靠的方法使用perl脚本检测空白页?我尝试使用getPageText方法执行以下脚本。如果我这样做,只包含没有文本的图形的页面也被识别为空白页面。
#!/usr/bin/perl -w
use CAM::PDF;
my $filename=$ARGV[0];
my $doc = CAM::PDF->new($filename) || die "$CAM::PDF::errstr\n";
my $pages = $doc->numPages();
print $pages;
$content=$doc->getPageText(1);
print "length".length($content);
if(length($content)==0)
{
print "File is empty";
}
foreach my $p ( 1 .. $doc->numPages() ) {
my $str = $doc->getPageText($p);
$str =~ m/[[:alnum:]]+/ms ); # actually returned text
print "Result text:".qq($str);
}
是否有其他方法可以找到空白页?
答案 0 :(得分:3)
抱歉,无法可靠地检测空白页面。
但是,我过去做过这个:
我使用pdftk将pdf破解成一页pdf文档。 如果其中一个pdf大小非常低,则不包含图像。 如果pdftotext返回空字符串,则它不包含文本。 使用pdftk将所有优秀的pdf组合成一个。
我希望它会对你有所帮助。
答案 1 :(得分:0)
如果使用getPageContentTree方法而不是getPageText,则可以获取包含页面上所有对象的内容流,包括图像。检查“content”哈希键的值的长度,如果等于0,则表示您有一个真正的空白页。
use CAM::PDF;
my $filename="testBook.pdf";
my $doc = CAM::PDF->new($filename) || die "$CAM::PDF::errstr\n";
my $pages = $doc->numPages();
my $i = 1;
while ($i <= $pages) {
my $contentTree = $doc->getPageContentTree($i);
my $content = $contentTree->{"content"};
my $length = length($content);
if ($length == 0) {
print "page $i is blank!" ## delete it, log it to a list of blanks, etc.
}
$i++;
}