python PyPDF2模块合成pdf问题

hjf12402 2019-06-06 10:01:01
求助各位大神,为何第一段代码能成功,第二段代码得到的是一个内容空白的pdf文件,但是总页数等于两个pdf页数之和。


#利用PyPDF2模块将两个pdf文档合成一个新pdf
import os,PyPDF2

os.chdir(r'C:\Users\hjf\Desktop')

pdfWriter = PyPDF2.PdfFileWriter()

pdf1 = open('test1.pdf','rb')
pdf1Reader = PyPDF2.PdfFileReader(pdf1)
for pageNum in range(pdf1Reader.numPages):
page=pdf1Reader.getPage(pageNum)
pdfWriter.addPage(page)

pdf2 = open('test2.pdf','rb')
pdf2Reader = PyPDF2.PdfFileReader(pdf2)
for pageNum in range(pdf2Reader.numPages):
page=pdf2Reader.getPage(pageNum)
page.rotateClockwise(180)
pdfWriter.addPage(page)

pdf3 = open('test3.pdf','wb')
pdfWriter.write(pdf3)

pdf3.close()
pdf1.close()
pdf2.close()



#利用PyPDF2模块将两个pdf文档合成一个新pdf
import os, PyPDF2

os.chdir(r'C:\Users\hjf\Desktop')
with open('test3.pdf', 'wb') as pdf3:
writer = PyPDF2.PdfFileWriter()
with open('test1.pdf', 'rb') as pdf1:
pdf1Reader = PyPDF2.PdfFileReader(pdf1)
for pageNum in range(pdf1Reader.numPages):
page = pdf1Reader.getPage(pageNum)
writer.addPage(page)

with open('test2.pdf', 'rb') as pdf2:
pdf2Reader = PyPDF2.PdfFileReader(pdf2)
for pageNum in range(pdf2Reader.numPages):
page = pdf2Reader.getPage(pageNum)
page.rotateClockwise(180)
writer.addPage(page)

writer.write(pdf3)

...全文
148 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yshuise 2019-06-07
  • 打赏
  • 举报
回复
调试看看
hjf12402 2019-06-07
  • 打赏
  • 举报
回复
引用 2 楼 RuiyuanZHOU的回复:
#利用PyPDF2模块将两个pdf文档合成一个新pdf import os, PyPDF2 os.chdir(r'C:\Temp') pdfWriter = PyPDF2.PdfFileWriter() with open('hb2.pdf', 'wb') as pdf3: with open('1.pdf', 'rb') as pdf1: with open('2.pdf', 'rb') as pdf2: pdf1Reader = PyPDF2.PdfFileReader(pdf1) for pageNum in range(pdf1Reader.numPages): page = pdf1Reader.getPage(pageNum) pdfWriter.addPage(page) pdf2Reader = PyPDF2.PdfFileReader(pdf2) for pageNum in range(pdf2Reader.numPages): page = pdf2Reader.getPage(pageNum) page.rotateClockwise(180) pdfWriter.addPage(page) pdfWriter.write(pdf3) ---------------------------------- with open as 语句在块结束后自动关闭了stream。 pdfWriter.addPage(page)只是将当前pdf页信息加入pdfWriter中,并没有将真正内容写入,所以汪with open as 块结束后,pdf页内容也丢失了。
感谢,不太懂stream啥意思,不过大概意思明白了。 是writer里面的内容是类似指针的东西,关闭源文件指针就找不到目标了,是这意思吧。
hjf12402 2019-06-07
  • 打赏
  • 举报
回复
引用 1 楼 yshuise 的回复:
调试看看

小白表示调试也看不太懂。。
RuiyuanZHOU 2019-06-07
  • 打赏
  • 举报
回复
#利用PyPDF2模块将两个pdf文档合成一个新pdf import os, PyPDF2 os.chdir(r'C:\Temp') pdfWriter = PyPDF2.PdfFileWriter() with open('hb2.pdf', 'wb') as pdf3: with open('1.pdf', 'rb') as pdf1: with open('2.pdf', 'rb') as pdf2: pdf1Reader = PyPDF2.PdfFileReader(pdf1) for pageNum in range(pdf1Reader.numPages): page = pdf1Reader.getPage(pageNum) pdfWriter.addPage(page) pdf2Reader = PyPDF2.PdfFileReader(pdf2) for pageNum in range(pdf2Reader.numPages): page = pdf2Reader.getPage(pageNum) page.rotateClockwise(180) pdfWriter.addPage(page) pdfWriter.write(pdf3) ---------------------------------- with open as 语句在块结束后自动关闭了stream。 pdfWriter.addPage(page)只是将当前pdf页信息加入pdfWriter中,并没有将真正内容写入,所以汪with open as 块结束后,pdf页内容也丢失了。

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧