我有一个 pyPdf 应用程序,将一堆 PDF 组合成一个 PDF,并使用外部元数据正确构建目录。它对某些 PDF 非常有效,但对于其他 PDF,它似乎挂起并且从未真正编写过 PDF。我将写操作复制到测试库中,以查看它挂在哪里,它似乎挂在方法“_sweepIndirectReferences”(此处为第 311 行)中。我可以设置它运行,15-20 分钟后返回并设置断点以发现它仍在解析第一页上的间接引用,堆栈深度为 25-30。如果我使用 Acrobat 合并文件,它会在一分钟内完成所有 200 多页。
我不需要我的写操作那么快,但是我可以做些什么来加快这个过程吗?似乎 Adobe 可以在一分钟内完成的事情,我应该能够在不到 4 小时内完成!我应该注意,它只发生在某些文件上,而不发生在其他文件上。我的猜测是,取决于 PDF 对间接引用的依赖程度会有所不同。
作为参考,我正在生成这样的pdf:
opened_pdfs = []
o_pdf = PdfFileWriter()
for fname in list_of_pdfs:
i_pdf = PdfFileReader(file(fname, 'rb'))
opened_pdfs.append(i_pdf)
for page in i_pdf.pages:
o_pdf.addPage(page)
of = open(file_name, 'wb')
o_pdf.write(of)
of.close()
for pdf in opened_pdfs:
pdfs.stream.close()
这忽略了关于书签的部分,但我认为这可能很好。有问题的没有更多的书签或任何东西。