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

Python ExifTool combining subject and keyword tags

我有一个 python 脚本使用 exiftool 来更新给定 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 元数据。但是,当我在 Adob​​e Acrobat 或 Adob​​e Reader 中查看 PDF 元数据时,主题和关键字的值都显示在关键字字段中。

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

我可能只是遗漏了一些小的配置或设置,但我已经通读了文档,但我还没有找到解决这个问题的方法。

有没有人有什么想法或想法?

我找到了解决这个问题的方法,这就是我想到的。为了防止主题和关键字在关键字字段中组合,还有一些标签需要使用 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])