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 页中找到任何数据。好像没有合并。

4

2 回答 2

5

在使用完全相同的代码时,我可以将两个PDF合并PDF到一个页面中,第二个与第一个重叠,我参考了此链接以获取详细信息。

而且,与其按照这个Python Documentationfile()使用更好,所以我这样做了。open()

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

我希望这有帮助。


更新:

这是对我有用并将两个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 链接PDFpdfnup.py另外,为了与我的系统兼容,我做了一些小改动,Immutableset如果你想使用相同的文件,你也可以在上面的驱动器链接中找到它。

于 2016-12-20T04:22:10.407 回答
-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 会产生错误。

于 2018-08-18T10:15:06.623 回答