PyPDF2 - 合并来自两个不同 PDF 文件的页面不起作用
PyPDF2 - merging pages from two different PDF files is not working
我正在尝试将两个 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 页中找到任何数据。好像没合并。
在使用您完全相同的代码时,我能够在一页中合并 PDF
两个 PDF
,其中第二个与第一个重叠,我引用了这个 link获取详细信息。
而且,根据这个 Python Documentation,最好使用 open()
而不是 file()
,所以我这样做了。
此外,我对您的代码进行了细微的更改,但在我的机器上仍然可以正常工作。我正在使用 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 link 到我的 PDF
文件的驱动器。此外,我对 pdfnup.py
进行了细微改动,以便与我的 Immutableset
系统兼容,如果你想使用相同的文件,你也可以在上面的驱动器 link 中找到它。
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 个或更多,否则会出错。
我正在尝试将两个 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 页中找到任何数据。好像没合并。
在使用您完全相同的代码时,我能够在一页中合并 PDF
两个 PDF
,其中第二个与第一个重叠,我引用了这个 link获取详细信息。
而且,根据这个 Python Documentation,最好使用 open()
而不是 file()
,所以我这样做了。
此外,我对您的代码进行了细微的更改,但在我的机器上仍然可以正常工作。我正在使用 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 link 到我的 PDF
文件的驱动器。此外,我对 pdfnup.py
进行了细微改动,以便与我的 Immutableset
系统兼容,如果你想使用相同的文件,你也可以在上面的驱动器 link 中找到它。
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 个或更多,否则会出错。