【问题标题】:Read meta information from PDF using Perl module Image::ExifTool使用 Perl 模块 Image::ExifTool 从 PDF 中读取元信息
【发布时间】:2016-02-18 16:04:14
【问题描述】:

我想使用 Perl 模块 Image::ExifTool 从 PDF 中读取元信息。我需要使用交叉引用流(从 PDF 1.5 开始)处理 PDF,而其他完善的模块,如 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 文档目录(根标签)。但是运行这样的代码不会返回任何值:

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

请帮忙:-)

【问题讨论】:

  • metacpan.org/source/EXIFTOOL/Image-ExifTool-10.10/lib/Image/… 开始,有几处提到了Root。我不熟悉这些标签的结构,也不熟悉 Root 是什么,但我建议您研究该模块中的代码,以及它使用的模块。这可能会有所帮助。可能界面没有暴露那个东西,但你也许可以用一些黑魔法来抓住它。

标签: perl pdf


【解决方案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 模块使用:

【讨论】:

    猜你喜欢
    • 2014-06-26
    • 1970-01-01
    • 1970-01-01
    • 2013-06-21
    • 1970-01-01
    • 2014-11-23
    • 2019-05-09
    • 1970-01-01
    • 2012-12-21
    相关资源
    最近更新 更多