我正在尝试将两个PDF文件中的页面合并为一个包含单个页面的PDF。所以我尝试了下面使用PyPDF2的代码:
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页的内容,但是我找不到file2第1页的任何数据。好像它没有合并。
答案 0 :(得分:2)
在使用完全相同的代码后,我可以在一个页面中将两个PDF
合并为PDF
,第二个与第一个重叠,我将此link详细说明信息。
而且,file()
不是open()
,而是按照Python Documentation使用Ubuntu 16.04
,所以我这样做了。
此外,我对您的代码进行了细微更改,但仍然在我的计算机上工作正常且正确。我将python 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)
一起使用。
以下是代码:
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页面合并为单页。
final.pdf
我添加了一个新代码,现在它也在旋转最终的pdf。您需要的输出PDF是PDF
以下是我pdfnup.py
文件驱动器的Google Drive link。此外,我对Immutableset
进行了轻微更改,以便与{{1}}的系统兼容,如果您想使用相同的文件,您也可以在上面的驱动器链接中找到它。
答案 1 :(得分:-1)
def merge_page(self, output_pdf,*input_pdfs):
a=len(input_pdfs)
print (a)
merge = PyPDF2.PdfFileMerger()
outputStream = open(output_pdf, "wb")
if a<2:
raise Exception ("Need Atleast Two Pdf for Merging")
else:
for x in input_pdfs:
merge.append(open(x,"rb"))
merge.write(outputStream)
outputStream.close()
对我来说,这段代码在PyCharm中运行,并且可以不合并任何pdf文件,但合并的pdf文件数量应少于2个或更多。