2013-11-22 52 views
0

我嘗試使用PyPDF2將2個PDF頁面合併爲一個。PyPDF2 mergeTranslatedPage沒有以正確的方式合併頁面

這裏PDF示例文件http://ge.tt/9IvaIo01

但是,當我嘗試合併,我recive每一頁的副本,從頂部和底部。 這裏的示例演示何時使用第0頁和第1頁上的mergeTranslatedPage,您將收回第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

非常感謝https://www.freelancer.com/u/ils7.html花時間尋找錯誤。 解決的辦法是: 您需要更換_mergeResources功能pdf.py

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