Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 如何获取PDF页面的页面方向?_Perl_Pdf - Fatal编程技术网

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

Perl 如何获取PDF页面的页面方向?,perl,pdf,Perl,Pdf,函数getPageDimensions(CAM::PDF的)为纵向和横向页面返回相同的值。 如何识别PDF页面的方向? 我使用的是CAM::PDF Perl库,我想知道如何使用这个库来实现这一点。 但也欢迎使用任何其他方法来识别这一点(最好使用Perl库) 谢谢。我是CAM::PDF的作者 这有两个部分。一个是页面的尺寸,正如您所指出的。正如预期的那样:我使用Apple的Preview.app旋转PDF文件,并运行以下两个命令行: perl -MCAM::PDF -le'print "@{[CA

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


谢谢。

我是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";

谢谢你,克里斯。我计算了$pagedict->{Rotate}->{value}部分。但不是父部分。再次感谢。小更正。while中的“my$rotate”应该是$rotate。谢谢。我的测试PDF有一个明确的“/Rotate 0”(不确定为什么…),所以我没有注意到这个bug。