python 多个PDF文件合并且可自动添加书签
需求
几行代码快速合并PDF文件,免去收费烦恼,多个PDF文件合并,每个文件名当做书签,每个文件的首页当做书签页,可快速定位至浏览位置。
给一个文件夹名称,自动遍历文件夹下的所有PDF文件,如需按序合并,请手动修改文件名,可打印 FileNameWithPath 信息查看PDF导入的顺序。
库
- PyPDF2
- fitz
- PyMuPDF
换源安装
- pip install PyPDF2 -i https://pypi.doubanio.com/simple
- pip install fizt -i https://pypi.doubanio.com/simple
- pip install PyMuPDF -i https://pypi.doubanio.com/simple
整体代码
import PyPDF2
import os
import re
import fitz# pip install PyPDF2 -i https://pypi.doubanio.com/simple
# ModuleNotFoundError: No module named 'fitz'
# pip install fitz -i https://pypi.doubanio.com/simple
# ModuleNotFoundError: No module named 'frontend'
# pip install PyMuPDF -i https://pypi.doubanio.com/simpledef GetNameByEveryDir(file_dir,Property): # Input Root Dir and get all img in per Dir.# Out Every img with its filename and its dir and its path FileNameWithPath = [] FileName = []FileDir = []for root, dirs, files in os.walk(file_dir): for file in files: if os.path.splitext(file)[1] in Property: FileNameWithPath.append(os.path.join(root, file)) # 保存图片路径FileName.append(file) # 保存图片名称FileDir.append(root[len(file_dir):]) # 保存图片所在文件夹return FileName,FileNameWithPath,FileDirdef add_page_index():"""添加书签每个文件的首页当作书签页"""global tocs,path,new_pathdoc = fitz.open(new_path+'\\merge.pdf')toc=[]# 获取源文件目录,不做更改toc = doc.getToC()for t in tocs:toc.append(t)doc.setToC(toc)doc.save(new_path+'\\merge_add_page_index.pdf')doc.close()def add_pdf():"""读取PDF文件夹下的所有文件合并PDF文件获取每个文件名字作为书签名写入书签数组以备写入"""global tocs,path,new_pathFileName,FileNameWithPath,FileDir = GetNameByEveryDir(path,'.pdf')opened_file = [open(file_name,'rb') for file_name in FileNameWithPath]pdfFM = PyPDF2.PdfFileMerger()page_sum=1tocs = [] # [[目录level,标题,页码]]for file in range(len(opened_file)):title=[1,str(FileName[file][:-4]),page_sum]reader = PyPDF2.PdfFileReader(opened_file[file])page = reader.getNumPages() #读取每个文件页数page_sum+=pagetocs.append(title)pdfFM.append(opened_file[file])with open(new_path + "\\merge.pdf", 'wb') as write_out_file:pdfFM.write(write_out_file)+for file in opened_file:file.close()if __name__ == '__main__':global tocs,path,new_pathtocs=[]path='.\\test' #包含全部PDF文件的路径new_path='.\\merge_dir' #合并后的目录if not os.path.exists(new_path):os.makedirs(new_path)add_pdf()add_page_index()#完成后打开文件夹 windows下使用os.system("start explorer %s" % new_path)
注意
该脚本在windows下测试,在linux下使用可能需要更改路径或者修改源码。
python 多个PDF文件合并且可自动添加书签相关推荐
- 【Python】用于在 Python 中处理 PDF 文件的 PyPDF2 库
作者 | megha152 编译 | Flin 来源 | analyticsvidhya 介绍 PDF 代表便携式文档格式.它使用 .pdf 扩展名.这种类型的文件主要用于共享目的.它们不能被修改,从 ...
- python PyPDF2处理PDF文件
python PyPDF2处理PDF文件 安装PyPDF2 pip install PyPDF2 官方文档: https://pypdf2.readthedocs.io/en/latest/ 导入模块 ...
- python如何解析PDF文件
python如何解析PDF文件 python中读取pdf的方法:使用python第三方库pdfminerk3k 1.使用pdfminer库 pdfminer是一个主流的分析pdf的库.如果是pytho ...
- 第19天---python办公自动化---操作PDF文件
第19天-python办公自动化-操作PDF文件 在Python中,可以使用名为PyPDF2的三方库来读取PDF文件,可以使用下面的命令来安装它. pip install PyPDF2 读取PDF并抽 ...
- Python办公自动化——提取pdf文件中表格并到Excel
Python办公自动化--提取pdf文件中表格合并到Excel 需求描述 现有一 pdf 文件内容如下,文件中内容主要是表格形式的获奖名单,共158页.现要读取这些表格信息并保存到 excel 文件中 ...
- Python怎么将pdf转为图片?Python如何实现pdf文件转图片
而pdf则是用来保存一些内容已经确定好的数据,因为pdf是无法直接修改内容的,所以也会经常将pdf转为图片来保存.本文就将会来介绍一下pdf转图片的方法,往下看看吧. 1.pdf转图片的话主要实现所需 ...
- Python使操作PDF文件变得有趣
大家好 我是毕加锁 (锁!) 大家在平时操作PDF文件时是不是感觉很枯燥 那么今天就教大家利用Python让操作PDF文件变得有趣起来 目录 工具 从PDF中提取文本 旋转和叠加页面 加密P ...
- Py自动化办公—Word文档替换、Excel表格读取、Pdf文件生成和Email自动邮件发送实战案例...
点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 平阳歌舞新承宠,帘外春寒赐锦袍. ...
- 扫描版PDF自动添加书签 | 电子书目录自动获取
经常遇到扫描版PDF没有书签的情况,阅读起来很不方便,手动添加书签耗时较多. 自动获取目录,自动添加书签,完美解决.
最新文章
- Python 字符串大小写转换,值域范围
- NetStream.appendBytes, 走向Flash P2P VOD的第一步
- HDFS的访问方式之HDFS shell的常用命令
- 【嵌入式】Libmodbus源码分析(一)-类型和结构体
- java流行的测试框架调研+市面上书籍调研
- c#10:string内插处理
- 项目管理(1):管理过程
- 【java】dubbo基础学习
- 关于秒杀的系统架构优化思路
- 用纯JSP实现按条件查询数据库
- 古文观止 —— 千古名篇
- LINUX 循环脚本
- 记录一个很好用的截图软件greenShot
- acer软件保护卡怎么解除_Acer软件保护卡使用说明全解.doc
- ONLYoffice在线编辑的接口测试
- 计算机电路基础 - 1,计算机电路基础1.1.doc
- 无监督学习-案例分析:利率期限结构
- 仿微信朋友圈动态列表
- Java简单的记账本项目
- 精彩回顾 | 客户体验官俱乐部(CEOC)首届主题论坛在深圳圆满落幕
热门文章
- securecrt英文乱码怎么办_本科毕业论文查重率不合格怎么办?如何使用知网正版查重本科毕业论文?...
- 关于异常和错误处理编程的精华文章。。来自Damien Katz
- 3D点云基础知识(二)-bilibili视频资源整理(二)鞋点胶点云轮廓提取
- Linux进阶(日志分割工具logrotate)
- Arm-Trusted-Firmware代码分析
- mac jdk安装配置环境变量
- Shell:环境变量
- Python连接mysql,sql优化
- windows系统“彻底”隐藏任务栏
- Java微信开发-微信java开发接入平台实例