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

时间:2016-12-17 11:42:19

标签: python pdf pdf-generation pypdf pypdf2

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

2 个答案:

答案 0 :(得分:2)

在使用完全相同的代码后,我可以在一个页面中将两个PDF合并为PDF,第二个与第一个重叠,我将此link详细说明信息。

而且,file()不是open(),而是按照Python Documentation使用Ubuntu 16.04,所以我这样做了。

此外,我对您的代码进行了细微更改,但仍然在我的计算机上工作正常且正确。我将python 2.7from 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个或更多。