我查找了使用 fitz 打开文件对文件执行的操作,但没有找到任何内容。代码很简单:
import fitz
doc = fitz.open('a.pdf')
doc.save('b.pdf')
我不明白为什么这会改变pdf大小。我尝试的文件大小从 829kb 变为 854kb。
我对此感到不舒服,因为我想更改大量文件的特征,并且在确定这不会以任何方式改变它们但在我想要更改的特征之前我无法做到这一点。
顺便说一句,我想要的只是将 pdf 的内部标题设置为等于其文件的显示名称。
import fitz
doc = fitz.open(r'a.pdf')
doc.metadata['title']=None
doc.setMetadata(doc.metadata)
doc.save(r'b.pdf')
我可以假设在第二个示例中我不会丢失一些信息吗?为什么当我在第一个示例中打开并保存文件时大小会发生变化?
您应该检查文档的元数据。 它可能包含有关修改日期、保存日期等信息,这可以解释增加的大小。
对我来说它有帮助:
import fitz
doc = fitz.open(r'a.pdf')
# to clear metadata dict
doc.metadata = {}
# to clear all xml metadata
doc.del_xml_metadata()
# garbage=4 -- is cleaning duplications!
doc.save(filename=r'b.pdf',
garbage=4)
通常尺寸会减小 30% 以上。
garbage
(int)
:
0 = none
1 = remove unused (unreferenced) objects.
2 = in addition to 1, compact the xref table.
3 = in addition to 2, merge duplicate objects.
4 = in addition to 3, check stream objects for duplication. This may be slow because such data are typically large.