我一直在浏览 pymupdf 文档,虽然那里有很多,我可以看到如何识别注释(Annot 类),但我不知道如何将我在一个文档中找到的注释放在该文档中进入另一个。有没有人试过这个?
我正在尝试将 BlueBeam 在不同时间生成的标记合并到一个文档中。我不需要移动注释,只需转移它们。如果我可以将它们分配给不同的层或编辑“名称”属性,那也很好,但我可能会在它们转移后弄清楚如何做到这一点。
我一直在浏览 pymupdf 文档,虽然那里有很多,我可以看到如何识别注释(Annot 类),但我不知道如何将我在一个文档中找到的注释放在该文档中进入另一个。有没有人试过这个?
我正在尝试将 BlueBeam 在不同时间生成的标记合并到一个文档中。我不需要移动注释,只需转移它们。如果我可以将它们分配给不同的层或编辑“名称”属性,那也很好,但我可能会在它们转移后弄清楚如何做到这一点。
JorjMcKie 在PyMuPDF 存储库,问题 1310上回答了这个问题。没有以我想要的方式合并标记的直接方法,但 Jorj 展示了一种涉及提取源数据并将其放置在新文件中的方法(从下面的回复中复制了详细信息)。
您可以通过
doc.xref_object(annot.xref, compressed=True/False)
. “compressed” False 为您提供如上所示的语法。True 将提供一个没有换行符和不必要空格的字符串。同样,您可以通过 访问该源的部分内容doc.xref_get_key(annot.xref, "Subtype")
,这将("name", "/Polygon")
在上述情况下返回。后一个功能还支持字典层次结构:doc.xref_get_key(annot.xref, "AP/N")
将为您提供xref
表单中正常外观字典的字符串("xref", "38 0 R")
。
反之亦然,可以将 PyMuPDF 用作以下内容的编辑器:
doc.update_object(annot.xref, modified_source)
使用上面的一些修改后的版本,doc.xref_set_key(annot.xref, "C", "[1 0 0]")
在这种情况下会将笔触颜色从蓝色变为红色。
所有这些也适用于 PDF 预告片:只需使用 -1 而不是 positive
xref
。彻底破坏您的 PDF 的独特机会