函数 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
Run Code Online (Sandbox Code Playgroud)
但是还有`/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";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1805 次 |
| 最近记录: |