使用Perl模块Image :: ExifTool

时间:2016-02-18 16:04:14

标签: perl pdf

我想使用Perl模块Image::ExifTool从PDF中读取元信息。我需要使用交叉引用流处理PDF(从PDF 1.5开始),其他完善的模块如PDF :: API2和CAM :: PDF似乎不支持它们或者支持有限。

无论如何,Image :: ExifTool显然读取了一些PDF tags,但如果我运行以下代码:

use Image::ExifTool qw(:Public);
my $file = 'file.pdf';
my $exifTool = new Image::ExifTool;
$exifTool->ExtractInfo($file);
my @tagList = $exifTool->GetFoundTags('File');
for (@tagList){
    print "$_\n"
}

我似乎无法获得更多这些标签:

ExifToolVersion
FileName
Directory
FileSize
FileModifyDate
FileAccessDate
FileCreateDate
FilePermissions
FileType
FileTypeExtension
MIMEType
PDFVersion
Linearized
Author
CreateDate
Creator (1)
ModifyDate
Producer (1)
Subject
Title (1)
XMPToolkit
CreateDate (1)
CreatorTool
ModifyDate (1)
MetadataDate
Producer
Format
Title
Description
Creator
DocumentID
InstanceID
PageLayout
PageMode
PageCount

特别是,我想得到例如PDF文档目录(Root标记)。但是,运行这样的代码不会返回任何值:

my $tag = 'Root';
my $exifTool = new Image::ExifTool;
my $info = $exifTool->ImageInfo($file, $tag);
for (sort keys %$info) {
        print "$_ => $$info{$_}\n";
}

请帮助: - )

1 个答案:

答案 0 :(得分:1)

要查看解析启用详细模式:$exifTool->Options(Verbose => 1);它表明Root确实正在被解析。

  7)  Root (SubDirectory) -->
  + [Root directory with 7 entries]
  | 0)  Metadata (SubDirectory) -->
  | + [Metadata directory with 3 entries]

我不确定您需要从根标记中获取哪些数据,但可以使用内部API:my $roottag = Image::ExifTool::GetTagTable('Image::ExifTool::PDF::Root');

来自Image::ExifTool

  

导出不是公共API的一部分,但由ExifTool模块使用: