PyPDF2 mergeTranslatedPage没有以正确的方式合并页面

时间:2013-11-22 17:46:30

标签: python pdf pypdf

我尝试使用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)

1 个答案:

答案 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