2016-12-17 70 views
2

我試圖將兩個PDF文件中的頁面合併成一個PDF頁面。所以,我想下面的代碼使用PyPDF2:PyPDF2 - 合併來自兩個不同PDF文件的頁面不起作用

from PyPDF2 import PdfFileReader,PdfFileWriter 
import sys 
f = sys.argv[1] 
k = sys.argv[2] 
print f,k 
file1 = PdfFileReader(file(f, "rb")) 
file2 = PdfFileReader(file(k, "rb")) 
output = PdfFileWriter() 
page = file1.getPage(0) 
page.mergePage(file2.getPage(0)) 
output.addPage(page) 
outputStream = file("join.pdf", "wb") 
output.write(outputStream) 
outputStream.close() 

它產生一個單一的文件和單頁與頁1的從第一個文件的內容,但我不從第1頁文件2中發現任何數據。似乎它沒有合併。

回答

2

在使用完全相同的代碼,我能夠得到兩個PDFPDF與第二個重疊的第一個一頁合併,我提到這個link的詳細信息。

而不是file()根據這Python Documentation最好使用open(),所以我這樣做。

另外,我對你的代碼做了些許修改,但仍然在我的機器上工作是一樣的和正確的。我正在使用Ubuntu 16.04python 2.7

下面是代碼:

from PyPDF2 import PdfFileReader,PdfFileWriter 
import sys 

f = sys.argv[1] 
k = sys.argv[2] 
print f, k 
file1 = PdfFileReader(open(f, "rb")) 
file2 = PdfFileReader(open(k, "rb")) 
output = PdfFileWriter() 
page = file1.getPage(0) 
page.mergePage(file2.getPage(0)) 
output.addPage(page) 

with open("join.pdf", "wb") as outputStream: 
    output.write(outputStream) 

我希望這有助於。


UPDATE:

這裏是爲我工作和合並兩個PDF的頁面作爲單頁的代碼。

from pyPdf import PdfFileWriter, PdfFileReader 
from pdfnup import generateNup 

initial_output = PdfFileWriter() 
input1 = PdfFileReader(open("landscape1.pdf", "rb")) 
input2 = PdfFileReader(open("landscape2.pdf", "rb")) 

initial_output.addPage(input1.getPage(0)) 
initial_output.addPage(input2.getPage(0)) 

# creates a new pdf file with required pages as separate pages. 
initial_output.write(file("final.pdf", "wb")) 

# merges newly created pdf file pages as one. 
generateNup("final.pdf", 2, "intermediate.pdf") 

# overwrite and rotates the final.pdf 
final_output = PdfFileWriter() 
final_output.addPage(PdfFileReader(open("intermediate.pdf", "rb")).getPage(0).rotateClockwise(90)) 
final_output.write(open("final.pdf", "wb")) 

我已經添加了一個新的代碼,現在它也在旋轉最終的pdf。輸出PDF,你需要的是final.pdf

而這裏是Google Drive link我的驅動器爲PDF文件。另外,爲了兼容我的系統Immutableset,我對pdfnup.py做了輕微更改,如果您想使用相同的文件,那麼您也可以在上面的驅動器鏈接中找到它。

+0

我可以得到樣本pdf文件的輸入?我仍然只是第二頁,.. –

+0

當然,這裏是我的谷歌驅動器的鏈接: https://drive.google.com/open?id=0B45dOHQNtoKLQVVDcHl0RUhDZHM –

+0

是mergePage的默認功能?好像第二個文件放在第一個文件的頂部..我認爲它會將兩個頁面的內容合併到一個垂直文件中......就像我們在第一頁中有兩個頁面的內容爲「foo」* 100並且bar * 100在第二頁,它會合並頁面(頂部的第一頁的前半部分和底部的第二頁的前半部分)。所以「foo」出現在頂部,「bar」出現在底部。有沒有辦法做到這一點? –

相關問題