鱼C论坛

 找回密码
 立即注册
查看: 1213|回复: 2

[已解决]python pdf模块

[复制链接]
发表于 2020-12-1 13:32:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import PyPDF2
minutesFile = open('meetingminutes.pdf', 'rb')
pdfReader = PyPDF2.PdfFileReader(minutesFile)
minutesFirstPage = pdfReader.getPage(0)
pdfWatermarkReader = PyPDF2.PdfFileReader(open('watermark.pdf', 'rb'))
minutesFirstPage.mergePage(pdfWatermarkReader.getPage(0))
pdfWriter = PyPDF2.PdfFileWriter()
pdfWriter.addPage(minutesFirstPage)

for pageNum in range(1, pdfReader.numPages):
    pageObj = pdfReader.getPage(pageNum)
    pdfWriter.addPage(pageObj)
resultPdfFile = open('watermarkedCover.pdf', 'wb')
pdfWriter.write(resultPdfFile)
print(minutesFile.close())
print(resultPdfFile.close())

请问大佬,这个文档生成只会对第一页添加水印,如果我想将每个页面都添加我该添加什么代码呀
最佳答案
2020-12-1 14:21:33
从你们的描述和代码看,应该在for循环里面补充一句pageObj.mergePage(pdfWatermarkReader.getPage(0))

也就是变成

  1. import PyPDF2
  2. minutesFile = open('meetingminutes.pdf', 'rb')
  3. pdfReader = PyPDF2.PdfFileReader(minutesFile)
  4. minutesFirstPage = pdfReader.getPage(0)
  5. pdfWatermarkReader = PyPDF2.PdfFileReader(open('watermark.pdf', 'rb'))
  6. minutesFirstPage.mergePage(pdfWatermarkReader.getPage(0))
  7. pdfWriter = PyPDF2.PdfFileWriter()
  8. pdfWriter.addPage(minutesFirstPage)

  9. for pageNum in range(1, pdfReader.numPages):
  10.     pageObj = pdfReader.getPage(pageNum)
  11.     pageObj.mergePage(pdfWatermarkReader.getPage(0))
  12.     pdfWriter.addPage(pageObj)
  13. resultPdfFile = open('watermarkedCover.pdf', 'wb')
  14. pdfWriter.write(resultPdfFile)
  15. print(minutesFile.close())
  16. print(resultPdfFile.close())
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-1 14:21:33 | 显示全部楼层    本楼为最佳答案   
从你们的描述和代码看,应该在for循环里面补充一句pageObj.mergePage(pdfWatermarkReader.getPage(0))

也就是变成

  1. import PyPDF2
  2. minutesFile = open('meetingminutes.pdf', 'rb')
  3. pdfReader = PyPDF2.PdfFileReader(minutesFile)
  4. minutesFirstPage = pdfReader.getPage(0)
  5. pdfWatermarkReader = PyPDF2.PdfFileReader(open('watermark.pdf', 'rb'))
  6. minutesFirstPage.mergePage(pdfWatermarkReader.getPage(0))
  7. pdfWriter = PyPDF2.PdfFileWriter()
  8. pdfWriter.addPage(minutesFirstPage)

  9. for pageNum in range(1, pdfReader.numPages):
  10.     pageObj = pdfReader.getPage(pageNum)
  11.     pageObj.mergePage(pdfWatermarkReader.getPage(0))
  12.     pdfWriter.addPage(pageObj)
  13. resultPdfFile = open('watermarkedCover.pdf', 'wb')
  14. pdfWriter.write(resultPdfFile)
  15. print(minutesFile.close())
  16. print(resultPdfFile.close())
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-1 15:18:21 | 显示全部楼层
2012277033 发表于 2020-12-1 14:21
从你们的描述和代码看,应该在for循环里面补充一句pageObj.mergePage(pdfWatermarkReader.getPage(0))

...

太厉害了哥!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-17 16:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表