我尝试使用PyPDF2将2个pdf页合并为一个。
此处为pdf示例文件http://ge.tt/9IvaIo01
但是当我尝试合并时,我会从顶部和底部收回每个页面的副本。 这里演示了在第0页和第1页上使用mergeTranslatedPage时的示例,您可以阅读第0页的第2个副本和第1页的非副本。
也许是我的错或误解。谢谢。
from PyPDF2 import PdfFileReader,PdfFileWriter
import os
api = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'api')
input = PdfFileReader(file(api+"/example_doc_in.pdf",'rb'))
output = PdfFileWriter()
#Some logic with merging page
input.getPage(0).mergeTranslatedPage(page2=input.getPage(1),tx='0',ty='-384')
output.addPage(input.getPage(0))
outputStream = file(api+'/example_doc_out.pdf','wb')
output.write(outputStream)
答案 0 :(得分:0)
感谢https://www.freelancer.com/u/ils7.html花时间寻找错误。 解决方案是: 您需要替换pdf.py中的_mergeResources函数
使用:
def _mergeResources(res1, res2, resource):
newRes = DictionaryObject()
newRes.update(res1.get(resource, DictionaryObject()).getObject())
page2Res = res2.get(resource, DictionaryObject()).getObject()
renameRes = {}
for key in page2Res.keys():
if newRes.has_key(key) and newRes[key] == page2Res[key]:
newname = NameObject(key + "renamed")
renameRes[key] = newname
newRes[newname] = page2Res[key]
elif not newRes.has_key(key):
newRes[key] = page2Res.raw_get(key)
return newRes, renameRes
_mergeResources = staticmethod(_mergeResources)
这段代码,错误在`
newRes[key] == page2Res[key]:`
这个地方,是:
newRes[key] != page2Res[key]:`
再次感谢ils