PyPDF2 - 合并来自两个不同PDF文件的页面无效

问题描述 投票:2回答:2

我正在尝试将两个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页的任何数据。好像它没有合并。

python pdf pdf-generation pypdf pypdf2
2个回答
2
投票

在使用完全相同的代码时,我能够在一个页面中将两个PDF合并为PDF,第二个与第一个重叠,我引用此link获取详细信息。

并且,而不是file()最好使用open()按照这个Python Documentation,所以我做到了。

此外,我对您的代码进行了细微更改,但仍然在我的计算机上工作相同且正确。我正在使用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)

我希望这有帮助。


更新:

这是代码,它为我工作,并将两个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文件的驱动器。此外,我对pdfnup.py进行了轻微更改,以便与我的Immutableset系统兼容,如果你想使用同一个文件,你也可以在上面的驱动链接中找到它。


-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中运行,并且它可以将n个没有pdf文件合并到单个pdf文件中,但是no应该小于2或者更少会产生错误。

© www.soinside.com 2019 - 2024. All rights reserved.