gpt4 book ai didi

ubuntu - 如何从 PDF 文件中删除流/对象?

转载 作者:行者123 更新时间:2023-12-04 18:37:24 28 4
gpt4 key购买 nike

我注意到几个 PDF 文件和 mupdf 存在问题。我无法按原样共享 PDF,但我仍然想帮助 mupdf 的开发人员了解问题。我希望我可以删除/替换 PDF 的内容,以便我可以分享它。
peepdf给我:

$ peepdf input.pdf
File: input.pdf
MD5: 243d9decc63d45866dcdcb18ca0ff686
SHA1: f025ee7fc151dc8241464bf78eab2f8b8692dba1
SHA256: c604a4eb5fe3b657543b1330fc98c5d3d64e8b4c16821dcba2c3123fbcb025da
Size: 212245 bytes
Version: 1.5
Binary: True
Linearized: False
Encrypted: False
Updates: 0
Objects: 101
Streams: 7
URIs: 0
Comments: 0
Errors: 1

Version 0:
Catalog: 1
Info: 2
Objects (101): [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101]
Streams (7): [3, 10, 16, 44, 46, 100, 101]
Encoded (6): [10, 16, 44, 46, 100, 101]
Decoding errors (6): [10, 16, 44, 46, 100, 101]
我希望我可以创建一个与当前 PDF 相同的新 PDF,除了例如流 44 不在其中。我会这样做以获得显示错误的最小 PDF。
我已经删除了除一页之外的所有页面。
(解决方案必须在 Ubuntu 上运行;最好通过 Python)
我无法分享原始 PDF,但我们可以将其用作 an example PDF file

最佳答案

使用 pikepdf,您可以删除对象。使用提供的示例文件,该对象在 PDF 的 /Catalog/StructTreeRoot 中被引用。 .

import pikepdf
with pikepdf.open("file.pdf") as p:
del p.Root.StructTreeRoot
p.save("file_without_structtreeroot.pdf")
您不能像在 pikepdf 的对象模型中那样轻松地按对象编号删除对象,因为 PDF 中的其他对象仍然引用该对象。相反,您必须删除对该对象的所有引用,然后剔除未引用的对象。如果对象被多次引用,您将需要定位其他引用。
(如果您使用 pikepdf.Pdf.get_object((44, 0)) ,您将获得对对象 (44, 0) 的新引用。删除它时,您只会删除您创建的新引用。)

关于ubuntu - 如何从 PDF 文件中删除流/对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63533504/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com