需求

几行代码快速合并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文件合并且可自动添加书签相关推荐

  1. 【Python】用于在 Python 中处理 PDF 文件的 PyPDF2 库

    作者 | megha152 编译 | Flin 来源 | analyticsvidhya 介绍 PDF 代表便携式文档格式.它使用 .pdf 扩展名.这种类型的文件主要用于共享目的.它们不能被修改,从 ...

  2. python PyPDF2处理PDF文件

    python PyPDF2处理PDF文件 安装PyPDF2 pip install PyPDF2 官方文档: https://pypdf2.readthedocs.io/en/latest/ 导入模块 ...

  3. python如何解析PDF文件

    python如何解析PDF文件 python中读取pdf的方法:使用python第三方库pdfminerk3k 1.使用pdfminer库 pdfminer是一个主流的分析pdf的库.如果是pytho ...

  4. 第19天---python办公自动化---操作PDF文件

    第19天-python办公自动化-操作PDF文件 在Python中,可以使用名为PyPDF2的三方库来读取PDF文件,可以使用下面的命令来安装它. pip install PyPDF2 读取PDF并抽 ...

  5. Python办公自动化——提取pdf文件中表格并到Excel

    Python办公自动化--提取pdf文件中表格合并到Excel 需求描述 现有一 pdf 文件内容如下,文件中内容主要是表格形式的获奖名单,共158页.现要读取这些表格信息并保存到 excel 文件中 ...

  6. Python怎么将pdf转为图片?Python如何实现pdf文件转图片

    而pdf则是用来保存一些内容已经确定好的数据,因为pdf是无法直接修改内容的,所以也会经常将pdf转为图片来保存.本文就将会来介绍一下pdf转图片的方法,往下看看吧. 1.pdf转图片的话主要实现所需 ...

  7. Python使操作PDF文件变得有趣

    大家好 我是毕加锁 (锁!) 大家在平时操作PDF文件时是不是感觉很枯燥 那么今天就教大家利用Python让操作PDF文件变得有趣起来  目录  工具  从PDF中提取文本  旋转和叠加页面  加密P ...

  8. Py自动化办公—Word文档替换、Excel表格读取、Pdf文件生成和Email自动邮件发送实战案例...

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 平阳歌舞新承宠,帘外春寒赐锦袍. ...

  9. 扫描版PDF自动添加书签 | 电子书目录自动获取

    经常遇到扫描版PDF没有书签的情况,阅读起来很不方便,手动添加书签耗时较多. 自动获取目录,自动添加书签,完美解决.

最新文章

  1. Python 字符串大小写转换,值域范围
  2. NetStream.appendBytes, 走向Flash P2P VOD的第一步
  3. HDFS的访问方式之HDFS shell的常用命令
  4. 【嵌入式】Libmodbus源码分析(一)-类型和结构体
  5. java流行的测试框架调研+市面上书籍调研
  6. c#10:string内插处理
  7. 项目管理(1):管理过程
  8. 【java】dubbo基础学习
  9. 关于秒杀的系统架构优化思路
  10. 用纯JSP实现按条件查询数据库
  11. 古文观止 —— 千古名篇
  12. LINUX 循环脚本
  13. 记录一个很好用的截图软件greenShot
  14. acer软件保护卡怎么解除_Acer软件保护卡使用说明全解.doc
  15. ONLYoffice在线编辑的接口测试
  16. 计算机电路基础 - 1,计算机电路基础1.1.doc
  17. 无监督学习-案例分析:利率期限结构
  18. 仿微信朋友圈动态列表
  19. Java简单的记账本项目
  20. 精彩回顾 | 客户体验官俱乐部(CEOC)首届主题论坛在深圳圆满落幕

热门文章

  1. securecrt英文乱码怎么办_本科毕业论文查重率不合格怎么办?如何使用知网正版查重本科毕业论文?...
  2. 关于异常和错误处理编程的精华文章。。来自Damien Katz
  3. 3D点云基础知识(二)-bilibili视频资源整理(二)鞋点胶点云轮廓提取
  4. Linux进阶(日志分割工具logrotate)
  5. Arm-Trusted-Firmware代码分析
  6. mac jdk安装配置环境变量
  7. Shell:环境变量
  8. Python连接mysql,sql优化
  9. windows系统“彻底”隐藏任务栏
  10. Java微信开发-微信java开发接入平台实例