1 python按照页数拆分PDF文档

目的:
将一个PDF文档按照指定的页数拆份额为多个文档
思路:
使用PyPDF库中的PdfFileReader, PdfFileWriter类,这两个类是PyPDF2的核心,完成PDF文件的读写操作。

# 安装包
pip install PyPDF2
# 导入包
from PyPDF2 import PdfFileReader, PdfFileWriter
import os# 读取 PDF 文件
path = './保利发展.pdf'
# 读取PDF文件
input_file = PdfFileReader(path)
# 要拆分的页数(每个文件)
page_bins=20
#总页数
page_sum = input_file.getNumPages()
#文件名
fname = os.path.splitext(os.path.basename(path))[0] # 创造一个空的PDF
pdf_writer = PdfFileWriter()
# 循环取出写入,页数从0开始,page+1为实际的文件页码
for page in range(page_sum):# 如果剩下的页数大于要拆分的页数,则继续拆分,否则就输出if page_sum - page >= page_sum % page_bins:# 获取某一页 input_file.getPage(1)pdf_writer.addPage(input_file.getPage(page))# 页数 可以对 要拆分的页数 整除,则保存if (page+1) % page_bins == 0:output_filename = f'{fname}_page_{page-page_bins+2}-{page+1}.pdf' # 创建一个文件,这个文件是PDF文件with open(output_filename, 'wb') as out:pdf_writer.write(out)         print(f'已创建: {output_filename}')pdf_writer = PdfFileWriter()else:continue    else:      pdf_writer.addPage(input_file.getPage(page))if (page+1) == page_sum:output_filename = f'{fname}_page_{page_sum - page_sum % page_bins+1}-{ page_sum }.pdf' with open(output_filename, 'wb') as out:pdf_writer.write(out)         print(f'已创建: {output_filename}')


PDF拆分结果:

2 python批量合并PDF文档

# 导入包
import os
from PyPDF2 import PdfFileReader, PdfFileWriter# 实例化写入对象,就是创造一个可以写入PDF内容的变量
output_file = PdfFileWriter()# 读取全部PDF
all_pdfs = os.listdir('E:/火狐下载/data/')# 按照页数结尾页排序,用sort来排序
all_pdfs.sort(key=lambda x: int(x[x.find('-')+1:x.find('.')]))# 循环写入
for i in all_pdfs:if os.path.splitext(i)[-1][1:] == 'pdf':print(i,'已合并完成')input_file = PdfFileReader(f'E:/火狐下载/data/{i}')pageCount = input_file.getNumPages()for iPage in range(pageCount):output_file.addPage(input_file.getPage(iPage))with open('E:/火狐下载/data/合并的PDF.pdf', "wb") as outputfile:# 注意这里的写法和正常的上下文文件写入是相反的output_file.write(outputfile)


注意:

因为合并时,要按照页数正确合并,所以文件需要排好序再合并。

# 导入包
import os
from PyPDF2 import PdfFileReader, PdfFileWriter# 读取全部PDF
all_pdfs = os.listdir('E:/火狐下载/data/')
all_pdfs


这些文件没有按照我想要的顺序进行排序,而是按照字符串进行的排序

# 排序方式一:获取结尾页码,按照页码进行排序
all_pdfs.sort(key=lambda x: int(x[x.find('-')+1:x.find('.')]))
all_pdfs

#获取所在文件的全路径
all_pdfs_all =list(map(lambda i: 'E:/火狐下载/data/'+i, all_pdfs))
all_pdfs_all
#排序方式二
all_pdfs_all.sort(key=lambda x: os.path.getctime(x))  # 精确到秒
#排序方式三
all_pdfs_all.sort(key=lambda x: os.stat(x).st_ctime_ns)  # 精确到纳秒

极速系列05—python批量拆分/合并PDF文档相关推荐

  1. 极速系列04—python批量获取word/PDF/网页中的表格

    这里写目录标题 1 python批量获取word中的表格 目的: 1.1 简介 1.2 读取word文档内容 方法一 方法二 2 python批量获取PDF中的表格 目的: 2.1 简介 2.2 读取 ...

  2. PyPDF2--如何使用python操作你的PDF文档

    PyPDF2–如何使用python操作你的PDF文档 前言 大家好!最近想操作一下PDF文档,总是收费,于是浅尝辄止地了解了一下python当中的PyPDF2这个库.借助本篇博客总结了一下个人所学到的 ...

  3. Latex提取与合并pdf文档(超实用)

    参考链接:LATEX合并PDF https://blog.csdn.net/feixingfei/article/details/78557025 LaTeX 提取,合并多个pdf页 https:// ...

  4. python处理word或者pdf文件_利用python程序生成word和PDF文档的方法

    一.程序导出word文档的方法 将web/html内容导出为world文档,再java中有很多解决方案,比如使用Jacob.Apache POI.Java2Word.iText等各种方式,以及使用fr ...

  5. Python批量处理lrmx格式文档内指定内容

    Python批量处理lrmx格式文档内指定内容 实现代码: import glob import random xing = [ '赵', '钱', '孙', '李', '周', '吴', '郑', ...

  6. 使用Python的PyPD创建PDF文档

    原文地址: 顺藤摸瓜找到一个有很多学习python电子书的窝.在这里 希望你喜欢. 文章是自己瞎翻译的,不足之处,麻烦指出. 生成PDFs文件,我会将 ReportLab作为首选工具.不过,我发现在P ...

  7. Python自动化办公:pdf文档操作

    在后台回复[阅读书籍] 即可获取python相关电子书~ Hi,我是山月. 之前给大家介绍了python处理excel.word.ppt的相关教程,不知道大家学的怎么样? 在后台回复[自动化办公]即可 ...

  8. 10个免费合并PDF文档的方法推荐

    问:我是大四学生,写论文时有好多文献要参考,都是PDF格式的.他们太分散了,十几二十个文件难以保存和阅读,有什么方法可以把他们都合并成一个PDF文档呢? 答:您可以在免费网站的帮助下合并PDF文件.这 ...

  9. python 使用pdfminer3k 读取PDF文档

    1.安装 pdfminer3k 通过pip安装:  pip install pdfminer3k 下载安装:在网页 https://pypi.org/project/pdfminer3k/1.3.1/ ...

最新文章

  1. PyTorch核心开发者灵魂发问:我们怎么越来越像Julia了?
  2. JS+库+框架+工具
  3. 交换两个整型变量的数值
  4. 吴恩达 神经网络和深度学习 第一课 第一周(笔记,代码,数据集)
  5. STM32程序中使用printf打印中文字符乱码
  6. 登录权限验证token
  7. 软件测试文档类型有哪些?
  8. 硅谷课堂 13_公众号点播课程和直播管理
  9. 卫生事业单位计算机科学与技术,卫生事业单位考试(计算机科学与技术)知识点.doc...
  10. LOL英雄联盟代打外挂程序-java实现
  11. 矩阵分析与应用 -- 线性方程组
  12. 家庭必备,轻、快、好用的WIN10自带虚拟机
  13. 适用于window平台的java虚拟机_雪豹系统安装说明
  14. allegro 过孔删除不掉
  15. 翻译程序,编译程序,解释程序和汇编程之间关系
  16. 电商中spu和sku是什么?怎么去设计表结构?
  17. Java内存区域和GC机制
  18. 基于同态加密体制的安全多方计算
  19. 读书笔记(四)《奇特的一生》格拉宁
  20. 适合小白的pathon学习网站

热门文章

  1. 概率论考点之相关系数
  2. 数据库——postgresql数据库中standard_conforming_strings对‘\\’的影响
  3. 遥感图像去雾文章解读
  4. java503错误是什么_打开网页后出现503 service unavailable等字样,什么意思
  5. FPGA仿真--前仿真和后仿真
  6. 0008基于单片机自动喂养控制系统设计
  7. MATLAB算法实战应用案例精讲-【图像处理】小目标检测(补充篇)(附python代码实现)
  8. 《Linux性能优化实战》笔记(十三)—— 如何“快准狠”找到系统内存的问题
  9. 安装Ubuntu16.04视频播放器smplayer
  10. 计算机一级怎么上网题怎样保存页面,全国计算机一级上网操作题知识点