结合主题和关键字标签的Python ExifTool

时间:2015-02-18 16:31:45

标签: python-2.7 pdf exiftool

我有一个使用exiftool的python脚本来更新给定PDF中的元数据。可以在此处找到exiftool的文档和下载:PyExifTool

以下是我目前的代码:

if __name__ == '__main__':
    from exif_tool import ExifTool, fsencode

    source_file = 'D:\\my_file.pdf'
    author = 'some author'
    keywords = 'some keywords'
    subject = 'some subject'
    title = 'some title'   

    with ExifTool('exiftool.exe') as et:
        params = map(fsencode, ['-Title=%s' % title,
                                '-Author=%s' % author,
                                '-Creator=%s' % author,
                                '-Subject=%s' % subject,
                                '-Keywords=%s' % keywords,
                                '%s' % source_file])

        et.execute(*params)
        os.remove('%s_original' % source_file)

        for key, value in dict(et.get_metadata(source_file)).items():
              if key.startswith('PDF:') and ('Author' in key or 'Keywords' in key or 'Title' in key or 'Subject' in key):
                print key, value


>>> PDF:Keywords [u'some', u'keywords']
>>> PDF:Title some title
>>> PDF:Subject some subject
>>> PDF:Author some author

上述代码相应地工作和更新PDF元数据。但是,当我在Adobe Acrobat或Adobe Reader中查看PDF元时,主题和关键字的值都显示在关键字字段中。

enter image description here

总而言之,在大多数情况下,这不是一个关键问题,但我可以预见会收到很多关于此的投诉。

我可能只是缺少一些小配置或设置,但我已阅读文档,但我找不到任何可以解决此问题的方法。

有人有任何想法或想法吗?

1 个答案:

答案 0 :(得分:1)

我能够找到解决方案来解决这个问题,这就是我想出来的。为了防止主题和关键字在关键字字段中合并,还需要使用Exiftool更新一些标记。

params = map(fsencode, ['-PDF:Subject=%s' % subject,
                        '-XMP:Subject=',
                        '-PDF:Title=%s' % title,
                        '-XMP:Title=',
                        '-PDF:Author=%s' % author,
                        '-XMP:Author=',
                        '-PDF:Keywords=%s' % keywords,
                        '-XMP:Keywords=',
                        '-overwrite_original',
                        '%s' % source_file])