大家有时候会不会有 PDF 转 图片 或是 图片 合成 PDF 的需求,尤其是一些扫描版的手稿、画册、字帖一类的的文档。 当大家苦于不知道找什么在线应用或软件来进行转换的时候,我们用 Python几行代码就可以实现 PDF转图片的需求了。 今天小圈给大家安利3个可以实现PDF转图片的Python库,不要 so easy 了!
一、PyMuPDF1、PyMuPDF简介该三方库从命名形式中就可以看出,PyMuPDF 是 MuPDF 的Python接口形式。 而 MuPDF 是一个轻量级的 PDF、XPS和电子书查看器。MuPDF 由软件库、命令行工具和各种平台的查看器组成。这个工具很小,速度很快,而且很完整。它支持多种文档格式,如PDF、XPS、OpenXPS、CBZ、EPUB和FictionBook 2。 使用PyMuPDF,你可以访问扩展名为“.pdf”、“.xps”、“.oxps”、“.cbz”、“.fb2”或“.epub”。此外,大约10种流行的图像格式也可以像文档一样处理“.png”,“.jpg”,“.bmp”,“.tiff”等。 2、安装PyMuPDF 可以通过Python pip 官方方式安装,也可以下载离线 wheels包进行安装。 支持平台:Windows、Linux、Mac OS pip安装命令: pip install PyMuPDF 导入命令: import fitz
3、使用方法验证pymupdf 模块是否安装成功 import fitzprint(fitz.__doc__) 输出: PyMuPDF 1.21.0: Python bindings for the MuPDF 1.21.0 library.Version date: 2022-11-08 00:00:01.Built for Python 3.8 on darwin (64-bit). 加载PDF文件 # 加载pdf 文件doc = fitz.open('/test/demo.pdf') 获取Document 属性和方法 # 1、获取pdf 页数pageCount = doc.page_countprint('pdf 页数: ', pageCount) # 2、获取pdf 元数据metaData = doc.metadataprint('pdf 元数据: ', metaData) # 3、获取pdf 目录信息toc = doc.get_toc()print('pdf 目录:', toc) Page 加载方法 page = doc.load_page(pno) # 加载每页数据page = doc[pno] # 加载每页数据 页面展示/页面图像保存到文件中 # Page 页面-光栅图像pix = page.get_pixmap()print('打印页面图像对象:', pix)# 保存光栅图像图像,需要依赖第三方框架:Pillowpix.pil_save('page-%i.png' % page.number) PDF保存为图片完整代码: import osimport fitz def covert2pic(file_path, zoom, png_path): doc = fitz.open(file_path) total = doc.page_count for pg in range(total): page = doc[pg] zoom = int(zoom) # 值越大,分辨率越高,文件越清晰 rotate = int(0) trans = fitz.Matrix(zoom / 100.0, zoom / 100.0).prerotate(rotate) pm = page.get_pixmap(matrix=trans, alpha=False) if not os.path.exists(png_path): os.mkdir(png_path) save = os.path.join(png_path, '%s.png' %(pg+1)) pm.save(save) doc.close()if __name__ == '__main__': pdfPath = 'demo.pdf' imagePath = './imgs' covert2pic(pdfPath, 200, imagePath) 效果: PyMuPDF 还提供了丰富的功能来操作PDF文件,如读取、写入、分割、合并、旋转、裁剪等。此外,它还支持加密和解密PDF文档,以及提取文本、图像和元数据等信息。 至于其他进阶用法,小圈下次专门写个文章进行分享,有兴趣的同学可以先去使用尝试。 二、pdfplumber1、pdfplumber简介pdfplumber 也是一个可以处理pdf格式信息的库,可以查找关于每个文本字符、矩阵、和行的详细信息,也可以对表格进行提取并进行可视化调试。 主要功能:
最终返回的是一个 pdfplumber.Page对象。 2、安装跟PyMuPDF一样,支持使用pip安装,安装命令: pip install pdfplumber 导入命令: import pdfplumber 3、使用方法pdfplumber有2个基础类:PDF和Page PDF用来处理整个文档,Page用来处理整个页面
读取pdf文件,并输出pdf文件的基础信息 import pdfplumber# 打开pdf文件,有密码加入password参数pdf_info =pdfplumber.open('demo.pdf')meta_data = pdf_info.metadata # pdf的基础信息page_con = len(pdf_info.pages) # 获取pdf的总页数print('pdf文件的基础信息:\n', meta_data)print('pdf共%s页' % page_con) pdfplumber转图片完整代码: import pdfplumberdef covert2pic_v2(file_path, png_path): with pdfplumber.open(file_path) as pdf: # pdf.pages默认为pdf全部页 # 可通过切片的方式选择需要转换的1页或几页,如前2页:pdf.pages[:2] for i, page in enumerate(pdf.pages[:2]): im = page.to_image(resolution=150) # 保存 save = os.path.join(png_path, '%s.png' % (int(i) + 1)) im.save(save) print('----分割线,第%d页----' % (int(i) + 1)) 效果跟PyMuPDF一样,这里就不展示了。 三、Python-Office1、Python-Office简介Python-office 是一个Python 自动化办公第三方库,能解决大部分自动化办公的问题。而且每 个功能只需一行代码,不需要小白用户学习 Python 知识,做到了真正的开箱即用。 2、安装安装命令 pip install python-office 有时候易安装失败,小圈就遇到了,所以该库只能简单介绍下,请朋友们见谅哈!偷下懒! 3、使用方法# 导入这个库:python-office,简写为officeimport office# 一行代码,实现转换office.pdf.pdf2imgs( pdf_path='demo.pdf', out_dir='./imgs')# 参数说明:# pdf_path = 你的PDF文件的地址 # out_dir = 转换后的图片存放地址,可以不填,默认是PDF的地址 1行Python代码,实现PDF转图片,直接解决了!是不是还没体验够就完成了! 以上就是小编推荐的3款Python三方库,可快速实现PDF转图片的功能,有兴趣的同学可以下载食用!! |
|