Python - PyPDF2模块的简单使用

打印 上一主题 下一主题

主题 893|帖子 893|积分 2689

1.简介

PyPDF的前身是PyPDF包在2005年发布,该包的最后一个版本发布于2010年,后来大约经过一年左右,名为Phasit的公司赞助PyPDF的一个分支后来命名为PyPDF2,两个版本功能都基本一样,最大的区别就是PyPDF2中加入了支持Python3功能。后面又出现了PyPDF3、PyPDF4等不同版本,但这些包并没有对PyPDF2功能向后完全兼容,受欢迎程度当然也不如PyPDF2。

2.安装

使用命令:pip install pypdf2。
3.应用1:将单个PDF拆分为多个PDF文件
  1. #! /usr/bin/env python3
  2. # -*- coding:utf-8 -*-
  3. # Author   : MaYi
  4. # Blog     : http://www.cnblogs.com/mayi0312/
  5. # Date     : 2022-08-19
  6. # Name     : test01
  7. # Software : PyCharm
  8. # Note     : 使用PyPDF2模块将单个PDF拆分为多个PDF文件
  9. # 导入模块
  10. from  PyPDF2 import PdfFileReader, PdfFileWriter
  11. # pdf 文档
  12. pdf_name = "test.pdf"
  13. pdf_reader = PdfFileReader(pdf_name)
  14. # PDF页数
  15. page_num = pdf_reader.getNumPages()
  16. i_count = 0  # 计数
  17. for i in range(0, page_num, 20):
  18.     # 每20页拆分成一个新的PDF文件
  19.     i_count += 1
  20.     pdf_writer = PdfFileWriter()
  21.     for j in range(i, min(i + 20, page_num)):
  22.         pdf_writer.addPage(pdf_reader.getPage(j))
  23.     save_pdf_name = str(i_count).zfill(3) + ".pdf"
  24.     with open(save_pdf_name, "wb") as fo:
  25.         pdf_writer.write(fo)
复制代码
4.应用2:将多个PDF合并为一个PDF文件
  1. #! /usr/bin/env python3
  2. # -*- coding:utf-8 -*-
  3. # Author   : MaYi
  4. # Blog     : http://www.cnblogs.com/mayi0312/
  5. # Date     : 2022-08-19
  6. # Name     : test02
  7. # Software : PyCharm
  8. # Note     : 使用PyPDF2模块将多个PDF合并为一个PDF文件
  9. # 导入模块
  10. from  PyPDF2 import PdfFileReader, PdfFileWriter
  11. # 需要合并的PDF文件名列表
  12. merge_pdf_names = ["001.pdf", "002.pdf", "003.pdf", "004.pdf"]
  13. merge_writer = PdfFileWriter()
  14. # 遍历处理每一个PDF文件
  15. for pdf_name in merge_pdf_names:
  16.     curr_reader = PdfFileReader(pdf_name)
  17.     page_num = curr_reader.getNumPages()
  18.     for i in range(page_num):
  19.         merge_writer.addPage(curr_reader.getPage(i))
  20. with open("merge.pdf", "wb") as fo:
  21.     merge_writer.write(fo)
复制代码
5.应用3:对PDF添加水印
  1. #! /usr/bin/env python3
  2. # -*- coding:utf-8 -*-
  3. # Author   : MaYi
  4. # Blog     : http://www.cnblogs.com/mayi0312/
  5. # Date     : 2022-08-19
  6. # Name     : test03
  7. # Software : PyCharm
  8. # Note     : 使用PyPDF2模块对PDF添加水印
  9. # 导入模块
  10. from  PyPDF2 import PdfFileReader, PdfFileWriter
  11. # pdf 文档
  12. pdf_name = "test.pdf"
  13. # 水印pdf 文档
  14. water_mark = "watermark.pdf"
  15. # 加完水印的pdf 文档
  16. new_pdf_name = "test_watermark.pdf"
  17. water_mark_page = PdfFileReader(water_mark).getPage(0)
  18. pdf_reader = PdfFileReader(pdf_name)
  19. pdf_writer = PdfFileWriter()
  20. page_num = pdf_reader.getNumPages()
  21. for i in range(page_num):
  22.     page = pdf_reader.getPage(i)
  23.     page.mergePage(water_mark_page)
  24.     pdf_writer.addPage(page)
  25. with open(new_pdf_name, "wb") as fo:
  26.     pdf_writer.write(fo)
复制代码
6.应用4:对PDF加密
  1. #! /usr/bin/env python3
  2. # -*- coding:utf-8 -*-
  3. # Author   : MaYi
  4. # Blog     : http://www.cnblogs.com/mayi0312/
  5. # Date     : 2022-08-19
  6. # Name     : test04
  7. # Software : PyCharm
  8. # Note     : 使用PyPDF2模块对PDF文件加密
  9. # 导入模块
  10. from  PyPDF2 import PdfFileReader, PdfFileWriter
  11. # pdf 文档
  12. pdf_name = "test.pdf"
  13. # 加密后的pdf 文档
  14. new_pdf_name = "test_encryption.pdf"
  15. pdf_reader = PdfFileReader(pdf_name)
  16. pdf_writer = PdfFileWriter()
  17. page_num = pdf_reader.getNumPages()
  18. for i in range(page_num):
  19.     page = pdf_reader.getPage(i)
  20.     pdf_writer.addPage(page)
  21. # 加密
  22. pdf_writer.encrypt(user_pwd="mayi", use_128bit=True)
  23. with open(new_pdf_name, "wb") as fo:
  24.     pdf_writer.write(fo)
复制代码
7.应用5:对PDF解密
  1. #! /usr/bin/env python3
  2. # -*- coding:utf-8 -*-
  3. # Author   : MaYi
  4. # Blog     : http://www.cnblogs.com/mayi0312/
  5. # Date     : 2022-08-19
  6. # Name     : test05
  7. # Software : PyCharm
  8. # Note     : 使用PyPDF2模块对PDF文件解密
  9. # 导入模块
  10. from  PyPDF2 import PdfFileReader, PdfFileWriter
  11. # pdf 文档
  12. pdf_name = "test_encryption.pdf"
  13. # 解密后的pdf 文档
  14. new_pdf_name = "test.pdf"
  15. # 密码
  16. pass_word = "mayi"
  17. pdf_reader = PdfFileReader(pdf_name)
  18. # 解密
  19. pdf_reader.decrypt(pass_word)
  20. pdf_writer = PdfFileWriter()
  21. page_num = pdf_reader.getNumPages()
  22. for i in range(page_num):
  23.     page = pdf_reader.getPage(i)
  24.     pdf_writer.addPage(page)
  25. with open(new_pdf_name, "wb") as fo:
  26.     pdf_writer.write(fo)
复制代码
8.应用6:获取PDF文件的基本信息

使用PyPDF2可以从PDF中提取到一些元数据和文本信息,对PDF有个大致了解。
  1. #! /usr/bin/env python3
  2. # -*- coding:utf-8 -*-
  3. # Author   : MaYi
  4. # Blog     : http://www.cnblogs.com/mayi0312/
  5. # Date     : 2022-08-19
  6. # Name     : test06
  7. # Software : PyCharm
  8. # Note     : 使用PyPDF2模块获取PDF文件的基本信息
  9. # 导入模块
  10. from  PyPDF2 import PdfFileReader
  11. # pdf 文档
  12. pdf_name = "test.pdf"
  13. with open(pdf_name, 'rb') as f:
  14.     pdf = PdfFileReader(f)
  15.     # 获取PDF文件的基本信息
  16.     infomation = pdf.getDocumentInfo()
  17.     # 作者
  18.     author = infomation.author
  19.     # 创建者
  20.     creator = infomation.creator
  21.     # 制作者
  22.     producer = infomation.producer
  23.     # Subject(主题)
  24.     subject = infomation.subject
  25.     # 标题
  26.     title = infomation.title
  27.     # 页数
  28.     page_num = pdf.getNumPages()
  29.     # 打印获取的基本信息
  30.     print("作者:%s\t创建者:%s\t制作者:%s\t主题:%s\t标题:%s\t页数:%s" % (author, creator, producer, subject, title, page_num))
复制代码
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

篮之新喜

金牌会员
这个人很懒什么都没写!

标签云

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