介绍

python实现的PDF小工具,可以实现下述三个功能:

  • PDF分割,可以提取某一个PDF,也可以按页分割
  • PDF转图片,可以将每页PDF转化为PNG格式的图片
  • PDF合并,可以将制定文件夹中的PDF合并为一个PDF

使用方法

window平台

直接下载运行后选择功能码即可

linux平台

直接下载 下载运行后选择功能码即可

WINDOWS代码

linux平台源码可以直接去仓库x下载

# -*- encoding: utf-8 -*-
"""
@desc    :   PDF编辑器
@author  :   Young
@date    :   2022-07-16 12:30PyMuPDF==1.20.1
PyPDF2==1.26.0"""
import osimport fitz
from PyPDF2 import PdfFileWriter, PdfFileMerger, PdfFileReaderclass PdfEditor:"""提取某一页PDF"""def get_page(self, from_pdf_file, page_num=None):pdf_reader = PdfFileReader(open(from_pdf_file, 'rb'))if page_num is None or page_num < 0:for i in range(pdf_reader.getNumPages()):self.do_get_page(from_pdf_file, i, pdf_reader)returnif page_num < 1:print("待提取页码必须大于或等于1, 您的输入为: %s" % page_num)returnif page_num > pdf_reader.getNumPages():print("待提取的页码不能超过PDF总页数, 您的输入为: %s, PDF总页数为: %s" % (page_num, pdf_reader.getNumPages()))returnself.do_get_page(from_pdf_file, page_num - 1, pdf_reader)"""获取pdf某一页"""def do_get_page(self, from_pdf_file, page_num, pdf_reader):to_pdf_dir = os.path.dirname(os.path.abspath(from_pdf_file)) + '/split_pdf'if not os.path.exists(to_pdf_dir):# 判断文件夹是否存在, 文件夹不存在就创建os.makedirs(to_pdf_dir)to_pdf_file = to_pdf_dir + '/pdf_%s.pdf' % page_numpdf_writer = PdfFileWriter()pdf_writer.addPage(pdf_reader.getPage(page_num))output = open(to_pdf_file, 'wb')pdf_writer.write(output)output.close()"""PDF转图片"""def pdf_to_image(self, from_pdf_file):image_path = os.path.dirname(os.path.abspath(from_pdf_file)) + "/pdf_images"if not os.path.exists(image_path):# 判断文件夹是否存在, 文件夹不存在就创建os.makedirs(image_path)pdf_doc = fitz.open(from_pdf_file)for pg in range(pdf_doc.page_count):page = pdf_doc[pg]rotate = int(0)# 每个尺寸的缩放系数为1.3,这将为我们生成分辨率提高2.6的图像。# 此处若是不做设置,默认图片大小为:792X612, dpi=72# (1.33333333-->1056x816)   (2-->1584x1224)zoom_x = 1.33333333zoom_y = 1.33333333mat = fitz.Matrix(zoom_x, zoom_y).prerotate(rotate)pix = page.get_pixmap(matrix=mat, alpha=False)# 将图片写入指定的文件夹内pix.save(image_path + '/' + 'pdf_images_%s.png' % pg)"""PDF合并@:param target_path: 源PDF文件目录@:param out_pdf_file: 输出PDF"""def merge_pdf(self, target_path):pdf_lst = [f for f in os.listdir(target_path) if f.endswith('.pdf')]pdf_lst.sort()pdf_lst = [os.path.join(target_path, filename) for filename in pdf_lst]pdf_merger = PdfFileMerger()for pdf in pdf_lst:pdf_merger.append(pdf)out_path = target_path + '/merge_pdf'if not os.path.exists(out_path):# 判断文件夹是否存在, 文件夹不存在就创建os.makedirs(out_path)pdf_merger.write(out_path + '/merge.pdf')def get_opt_code():opt_code_dict = {'1': '1-PDF提取','2': '2-PDF转图片','3': '3-合并PDF'}opt_code = ''while opt_code == '':opt_code = input('请输入您的操作码: 1-PDF提取, 2-PDF转图片, 3-合并PDF')if opt_code_dict.get(opt_code) is None:print('您的输入[%s]有误,请重新输入' % opt_code)opt_code = ''print('您即将进行的操作是: %s, 请您按提示操作' % opt_code_dict[opt_code])return opt_codedef get_input_path(tips):ori_pdf_path = ''while ori_pdf_path == '':ori_pdf_path = input(tips)if os.path.exists(ori_pdf_path) is False:print("您的输入不存在, 请检查后重新输入")ori_pdf_path = ''return ori_pdf_pathdef is_int(num):try:num = int(str(num))return isinstance(num, int)except:return Falsedef get_input_page():pdf_page_num = ''while pdf_page_num == '':pdf_page_num = input('请输入您要提取的PDF页码, 输入-1表示按页提取')if is_int(pdf_page_num) is False:print("您的输入不正确, 请输入整数(输入-1表示按页提取)")pdf_page_num = ''return int(pdf_page_num)if __name__ == '__main__':opt_code = get_opt_code()pdf_editor = PdfEditor()if opt_code == '1':ori_pdf_path = get_input_path('请输入您的PDF的绝对路径: ')pdf_page_num = get_input_page()pdf_editor.get_page(ori_pdf_path, pdf_page_num)print('PDF提取完成,请在PDF所在目录的split_pdf目录下查看')elif opt_code == '2':ori_pdf_path = get_input_path('请输入您要转换的PDF的绝对路径: ')pdf_editor.pdf_to_image(ori_pdf_path)print('PDF转换图片完成,请在PDF所在目录的pdf_images目录下查看')else:print('请务必保证您的PDF文件名是有序的')ori_pdf_path = get_input_path('请输入您要合并的PDF的绝对路径: ')pdf_editor.merge_pdf(ori_pdf_path)print('PDF合并完成,请在PDF所在目录的merge_pdf目录下查看')

python的PDF工具相关推荐

  1. python提取pdf中的文字和图片_Python操作PDF-文本和图片提取(使用PyPDF2和PyMuPDF)...

    PDF文件格式 如今,可移植文档格式(PDF)属于最常用的数据格式.在1990年,PDF文档的结构由Adobe定义.PDF格式的思想是,对于通信过程中涉及的双方(创建者,作者或发送者以及接收者)而言, ...

  2. html转换成pdf工具-wkhtmltopdf、Python生成PDF(pdfkit库)

    文章目录 一.html转换成pdf工具-wkhtmltopdf 1. 什么是wkhtmltopdf 2. 如何使用它? 3. 常见问题 error while loading shared libra ...

  3. python小工具小发明_用python写PDF转换器的实现

    前言 某个夜深人静的夜晚,夜微凉风微扬,月光照进我的书房~ 当我打开文件夹以回顾往事之余,惊现许多看似杂乱的无聊代码.我拍腿正坐,一个想法油然而生:"生活已然很无聊,不如再无聊些叭" ...

  4. python图片转pdf文件_用python 制作图片转pdf工具

    这篇文章主要介绍了用python 制作图片转pdf工具的思路及代码,非常详细,有需要的小伙伴参考下 最近因为想要看漫画,无奈下载的漫画是jpg的格式,网上的转换器还没一个好用的,于是乎就打算用pyth ...

  5. python图片识别验证码软件_基于python图片识别工具(图片识别,车牌,PDF,验证码)...

    先上图  不多说. 对于一般的用户来说识别率还是能达到百分之90以上. 已经打包成exe文件.windows用户可以直接使用.要软件的加我QQ python代码: # -*- coding: UTF- ...

  6. python实现pdf转excel_使用python写的PDF转EXCEL工具,已打包exe

    1.转换 PDF中的表格 文件到 Microsoft Excel 文档 2.程序自动识别pdf中的表格 3.电子工程师用excel建原理图的库(orcad)会需要,特别是引脚多的原理图库,如FPGA等 ...

  7. 用python和FreePic2Pdf工具手把手教你生成扫描版PDF文档的目录

    从网上下载一本书籍来看,结果却是书籍页数几百页还没有目录,要想找到自己想看的部分还的自己徒手去翻,哇.....这时心态就崩了,你识别是也遇到过这种情况.很多下载下来的pdf文档都是扫描版的,一般都没有 ...

  8. python怎么玩pdf_最全总结!聊聊 python 操作PDF的几种方法

    作者:陈熹 来源:早起Python 一.前言 大家好,有关Python操作PDF的案例之前已经写过一个PDF批量合并,这个案例初衷只是给大家提供一个便利的脚本,并没有太多讲解原理,其中涉及的就是PDF ...

  9. 疯狂python讲义视频 百度云-疯狂Python讲义 PDF高清版附源码

    内容简介 本书全面,深入地介绍了Python编程的相关内容,大致可分为四个部分.*系统部分介绍了Python的基本语法结构,函数编程,类和对象,模块和包,异常处理等: 第二部分主要介绍Python常用 ...

最新文章

  1. 在archlinux上搭建twitter storm cluster
  2. redis 自减命令_Redis 实战 —— 04. Redis 数据结构常用命令简介
  3. 重新想象 Windows 8 Store Apps (61) - 通信: http, oauth
  4. 移动端横屏返回后无法恢复原来大小解决方案
  5. 在IDEA中设置自己的名字和时间
  6. 一生只有一个配偶的动物,如果一方死亡了,另一方会怎么办?
  7. ajax中POST请求与参数(请求体)设置
  8. Java排序算法(一)——归并排序
  9. pdf根据目录生成书签
  10. (附源码)spring boot跨境电商系统 毕业设计 211003
  11. elasticjob-配置手册
  12. 计算机中的dump到底是什么意思?
  13. 公司算法面试笔试题目集锦,个人整理,不断更新中
  14. Theory for the information-based decomposition of stock price
  15. unity 显示 html页面,unity打开外部或本地html网页方法
  16. 理财产品信息管理系统项目代码分享
  17. FileWriter学习
  18. 经济数据预测 | Python实现ARIMA时间序列金融市场预测
  19. 绩效反馈评语:如何评估团队合作
  20. oracle为表空间增加数据文件,创建Oracle表空间,增加数据文件的步骤

热门文章

  1. Android自定义弹窗——右上角悬浮关闭
  2. [转] 一生用10亿元也买不来的经商经验
  3. 【转载】开漏、开集电路详解
  4. 迪桑特宣布彭于晏成为品牌代言人;福成股份“中央厨房”创造预制菜新理念 | 知消...
  5. 使用ffmpeg调整视频时长倍速
  6. java获取视频时长(实测可行)
  7. 云计算学习日志-第2周-2-linux文件管理3
  8. 计算机辅助审计技术MYSQL_虚拟机windows7密钥
  9. 第16课 Altium Designer20(AD20)+VESC6.4实战教程:总体布局和定义板子边框 (第一版)(北冥有鱼)
  10. 媒体人都在使用的全能超强视频格式转换器 - OmniConverter (Mac版)