首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Pikepdf编辑元数据

用Pikepdf编辑元数据
EN

Stack Overflow用户
提问于 2020-09-14 13:47:17
回答 1查看 946关注 0票数 1

有人有用pikepdf编辑pdf元数据的经验吗?

我安装了这个库,因为其他库似乎对目录和/或书签有一些问题。我也尝试了pdfrw,但是这个库不能覆盖现有的值,所以,现在我尝试一下pikepdf。

文件上说:

在with块中打开元数据以打开元数据以进行编辑。当块退出时,提交更改(更新XMP和Document字典)并附加到PDF对象。PDF仍然必须保存。如果在块中发生异常,则将放弃更改。

代码语言:javascript
复制
In [4]: with pdf.open_metadata() as meta:
   ...:     meta['dc:title'] = "Let's change the title"

我尝试过这种方法,使用了一个函数:

代码语言:javascript
复制
from pikepdf import Pdf

def add_metadata(source_pdf, author, title, out_dir):
    with Pdf.open(source_pdf) as pdf:
        with pdf.open_metadata() as meta:

            meta['dc:title'] = title
            meta['dc:creator'] = author
    
        pdf.save(os.path.join(out_dir, os.path.basename(source_pdf)))

存钱后,一切都没有改变。我是不是漏掉了什么明显的东西?

如果我在函数中添加了一个断点并尝试检查现有的值,我就会得到一个无键找到的错误。因此,我想这是问题的一部分--我无法访问正确的键,但是如何才能看到open_metadata()返回的这个对象中存在哪些键值对?如果按原样打印"meta“对象,则得到以下内容:

代码语言:javascript
复制
<x:xmpmeta xmlns:x="adobe:ns:meta/"
            x:xmptk="XMP toolkit 2.9.1-13, framework 1.6">
    <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
            xmlns:iX="http://ns.adobe.com/iX/1.0/">
        <rdf:Description xmlns:pdf="http://ns.adobe.com/pdf/1.3/"
                        rdf:about="Q"
                        pdf:Producer="GPL Ghostscript 8.70"/>
        <rdf:Description xmlns:xmp="http://ns.adobe.com/xap/1.0/"
                        rdf:about="W">
            <xmp:ModifyDate>2020-05-28T09:26:1Z</xmp:ModifyDate>
            <xmp:CreateDate>2020-05-28T09:26:1Z</xmp:CreateDate>
            <xmp:CreatorTool>XYZ</xmp:CreatorTool>
        </rdf:Description>
        <rdf:Description xmlns:xapMM="http://ns.adobe.com/xap/1.0/mm/"
                        rdf:about="E"
                        xapMM:DocumentID="R"/>
        <rdf:Description xmlns:dc="http://purl.org/dc/elements/1.1/"
                        rdf:about="T"
                        dc:format="application/pdf">
            <dc:title>
                <rdf:Alt>
                    <rdf:li xml:lang="x-default">Unknown</rdf:li>
                </rdf:Alt>
            </dc:title>
            <dc:creator>
                <rdf:Seq>
                    <rdf:li>user-id,S-D-F-G-12345678</rdf:li>
                </rdf:Seq>
            </dc:creator>
        </rdf:Description>
    </rdf:RDF>
</x:xmpmeta>

print(meta.keys()) -> KeysView(<pikepdf.models.metadata.PdfMetadata object at 0x000001E4024306A0>)

list(meta.keys()) -> []

有人能给我指个正确的方向吗?如何更改“未知”和“用户id,S-D-F-G-12345678”值?

EN

回答 1

Stack Overflow用户

发布于 2020-11-29 15:04:22

解决办法:删除所有元数据,然后添加新元数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63885649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档