如何获取PDF页面的页面方向?

时间:2009-03-19 15:19:00

标签: perl pdf

函数getPageDimensions(CAM :: PDF)为纵向和横向页面返回相同的值。 如何识别PDF页面的方向? 我正在使用CAM :: PDF Perl库,想知道如何使用这个库。 但是也欢迎使用任何其他方法来识别它(最好使用Perl lib)。

感谢。

1 个答案:

答案 0 :(得分:4)

我是CAM :: PDF的作者。

嗯,这有两个部分。一个是页面的尺寸,如您所述。这按预期工作:我使用Apple的Preview.app来旋转PDF文件并运行这两个命令行:

perl -MCAM::PDF -le'print "@{[CAM::PDF->new(shift)->getPageDimensions(1)]}"' orig.pdf 
0 0 612 792
perl -MCAM::PDF -le'print "@{[CAM::PDF->new(shift)->getPageDimensions(1)]}"' rotated.pdf 
0 0 792 612

但是还有`/ Rotate'页面属性。参数是一个度数(默认为0,但90或270并不罕见)。与页面维度一样,它是一个可继承的属性,因此您必须导航到父页面。这是一个快速而简单的命令行工具,用于输出旋转值:

use CAM::PDF;
my $filename = shift || die;
my $pagenum = shift || die;
my $pdf = CAM::PDF->new($filename) || die;
my $pagedict = $pdf->getPage($pagenum);
my $rotate = 0;
while ($pagedict) {
   $rotate = $pdf->getValue($pagedict->{Rotate});
   if (defined $rotate) {
      last;
   }
   my $parent = $pagedict->{Parent};
   $pagedict = $parent && $pdf->getValue($parent);
}
print "/Rotate $rotate\n";