5

我想用 Perl 阅读一些 PDF 文档属性。我的系统上已经安装了CAM::PDF

是否可以选择使用此模块来读取 PDF 文档的属性?如果是的话,有人可以举个例子或参考相关的子程序吗?

或者,我应该使用另一个模块吗?如果是,是哪个模块?

4

2 回答 2

8

我不太了解CAM::PDF。但是,如果您愿意安装PDF::API2,您可以执行以下操作:

#!/usr/bin/env perl

use strict; use warnings;

use Data::Dumper;
use PDF::API2;

my $pdf = PDF::API2->open('U3DElements.pdf');

print Dumper { $pdf->info };

输出:

$VAR1 = {
          'ModDate' => 'D:20090427131238-07\'00\'',
          '主题' => 'Adobe Acrobat 9.0 SDK',
          'CreationDate' => 'D:20090427125930Z',
          '生产者' => 'Acrobat Distiller 9.0.0 (Windows)',
          '创造者' => 'FrameMaker 7.2',
          '作者' => 'Adobe 开发者支持',
          '标题' => 'U3D 支持的元素'
        };
于 2011-11-17T18:36:10.670 回答
8

我喜欢 Sinan Ünür 的 PDF::API2 答案。PDF::API2 很棒。

我是 CAM::PDF 的作者。抱歉,我之前错过了这个问题。CAM::PDF 带有一个命令行工具来提取此类数据 (pdfinfo.pl)。

我的图书馆不正式支持这一点,但如果你不介意侵入内部,这很容易做到。

#!perl -w                                                                                                                            
use strict;
use CAM::PDF;
my $infile = shift || die 'syntax...';
my $pdf = CAM::PDF->new($infile) || die;
my $info = $pdf->getValue($pdf->{trailer}->{Info});
if ($info) {
    for my $key (sort keys %{$info}) {
        my $value = $info->{$key};
        if ($value->{type} eq 'string') {
            print "$key: $value->{value}\n";
        } else {
            print "$key: <$value->{type}>\n";
        }
    }
}
于 2012-05-07T15:27:50.017 回答