安利3款Python三方库!轻松实现PDF转图片,最快的只需一行代码!

简介: 安利3款Python三方库!轻松实现PDF转图片,最快的只需一行代码!

大家有时候会不会有 PDF 转 图片 或是 图片 合成 PDF 的需求,尤其是一些扫描版的手稿、画册、字帖一类的的文档。

当大家苦于不知道找什么在线应用或软件来进行转换的时候,我们用 Python几行代码就可以实现 PDF转图片的需求了。


今天小圈给大家安利3个可以实现PDF转图片的Python库,不要 so easy 了!

  • ✅ PyMuPDF
  • ✅ pdfplumber
  • ✅ python-office


一、PyMuPDF


1、PyMuPDF简介


该三方库从命名形式中就可以看出,PyMuPDFMuPDF 的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

关于命名fitz的说明

这个库的标准Python导入语句是import fitz。这是有历史原因的: MuPDF的原始渲染库被称为Libart。

在Artifex软件获得MuPDF项目后,开发的重点转移到编写一种新的现代图形图书馆称为“Fitz”。Fitz最初是作为一个研发项目,以取代老化的Ghostscript图形库,但却成为了MuPDF的渲染引擎。


3、使用方法

验证pymupdf 模块是否安装成功

import fitz
print(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_count
print("pdf 页数: ", pageCount)
 
# 2、获取pdf 元数据
metaData = doc.metadata
print("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)
# 保存光栅图像图像,需要依赖第三方框架:Pillow
pix.pil_save("page-%i.png" % page.number)

PDF保存为图片完整代码:

import os
import 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)

效果:

image.png

PyMuPDF 还提供了丰富的功能来操作PDF文件,如读取、写入、分割、合并、旋转、裁剪等。此外,它还支持加密和解密PDF文档,以及提取文本、图像和元数据等信息。


至于其他进阶用法,小圈下次专门写个文章进行分享,有兴趣的同学可以先去使用尝试。


二、pdfplumber


1、pdfplumber简介


pdfplumber 也是一个可以处理pdf格式信息的库,可以查找关于每个文本字符、矩阵、和行的详细信息,也可以对表格进行提取并进行可视化调试。


主要功能:

  • 可返回csv或json格式的信息: pdf级和页面级的元数据以及字典的嵌套属性。
  • 可以指定页面以及页面范围进行解析: 以空格分隔、1索引的页面列表或带连字符的页面范围。例如,1, 11-15将返回第 1、11、12、13、14 和 15 页的数据。
  • 可以指定解析的类型: 比如char、rect、line、curve、image或annot等,默认为所有可用。


最终返回的是一个 pdfplumber.Page对象


2、安装


跟PyMuPDF一样,支持使用pip安装,安装命令:

pip install pdfplumber

导入命令:

import pdfplumber

3、使用方法


pdfplumber有2个基础类:PDF和Page


PDF用来处理整个文档,Page用来处理整个页面

用法简介
pdfplumber.PDF .metadata,获取pdf基础信息,返回字典格式,包含作者、创建时间等。.pages,返回pdfplumber.Page实例的列表,每一个实例包含pdf每一页的信息
pdfplumber.Page pdfplumber核心功能,对PDF的大部分操作都是基于这个类,包括提取文本、表格等


读取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 pdfplumber
def 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-Office


1、Python-Office简介


Python-office 是一个Python 自动化办公第三方库,能解决大部分自动化办公的问题。而且每 个功能只需一行代码,不需要小白用户学习 Python 知识,做到了真正的开箱即用。


2、安装


安装命令

pip install python-office

有时候易安装失败,小圈就遇到了,所以该库只能简单介绍下,请朋友们见谅哈!偷下懒!


3、使用方法

# 导入这个库:python-office,简写为office
import office
# 一行代码,实现转换
office.pdf.pdf2imgs(
    pdf_path='demo.pdf',
    out_dir='./imgs'
)
# 参数说明:
# pdf_path = 你的PDF文件的地址 
# out_dir = 转换后的图片存放地址,可以不填,默认是PDF的地址

1行Python代码,实现PDF转图片,直接解决了!是不是还没体验够就完成了!


相关文章
|
2月前
|
运维 监控 算法
时间序列异常检测:MSET-SPRT组合方法的原理和Python代码实现
MSET-SPRT是一种结合多元状态估计技术(MSET)与序贯概率比检验(SPRT)的混合框架,专为高维度、强关联数据流的异常检测设计。MSET通过历史数据建模估计系统预期状态,SPRT基于统计推断判定偏差显著性,二者协同实现精准高效的异常识别。本文以Python为例,展示其在模拟数据中的应用,证明其在工业监控、设备健康管理及网络安全等领域的可靠性与有效性。
612 13
时间序列异常检测:MSET-SPRT组合方法的原理和Python代码实现
|
2月前
|
SQL 自然语言处理 数据库
【Azure Developer】分享两段Python代码处理表格(CSV格式)数据 : 根据每列的内容生成SQL语句
本文介绍了使用Python Pandas处理数据收集任务中格式不统一的问题。针对两种情况:服务名对应多人拥有状态(1/0表示),以及服务名与人名重复列的情况,分别采用双层for循环和字典数据结构实现数据转换,最终生成Name对应的Services列表(逗号分隔)。此方法高效解决大量数据的人工处理难题,减少错误并提升效率。文中附带代码示例及执行结果截图,便于理解和实践。
|
1月前
|
程序员 开发者
PDF 转图片,一行代码搞定!批量支持已上线!
大家好,我是程序员晚枫!今天为大家介绍 `popdf` 的新功能:PDF 转图片,支持批量操作!只需一行代码即可完成单文件转换,批量处理也只需简单修改参数。工具简单易用,小白也能快速上手。`popdf` 是我开发的实用工具之一,旨在解决开发中的小痛点。欢迎访问 GitHub 项目地址 (<https://github.com/CoderWanFeng/popdf>),提出建议或加入开源小组,一起交流进步!快来体验吧,保证让你惊艳! 😄
81 16
|
1月前
|
程序员 开发者
开源项目:一行代码,批量 PDF 转 Word 轻松搞定!
程序员晚枫分享了 `popdf` 的新功能:支持批量 PDF 转 Word!只需简单代码,即可轻松实现单文件或批量转换。`input_path` 和 `output_path` 参数让操作更便捷,适合处理大量 PDF 文件。作为开发者,晚枫致力于解决技术小痛点,欢迎体验并反馈。项目地址:[https://github.com/CoderWanFeng/popdf](https://github.com/CoderWanFeng/popdf)
|
1月前
|
文字识别 程序员 UED
Python + 腾讯云,多页PDF发票识别一键搞定!
程序员晚枫团队推出了基于Python和腾讯云的多页PDF发票识别功能!通过一行代码即可实现整本PDF发票的高效识别,并直接导出为Excel文件,极大提升工作效率。此次更新修复了仅识别第一页的bug,支持多页PDF完整识别。未来还将拓展更多票据类型、优化速度并加强平台合作。欢迎用户体验并提出建议,共同推动开源项目poocr的成长与进化!
|
22天前
|
开发框架 Java .NET
Python中main函数:代码结构的基石
在Python中,`main`函数是程序结构化和模块化的重要组成部分。它实现了脚本执行与模块导入的分离,避免全局作用域污染并提升代码复用性。其核心作用包括:标准化程序入口、保障模块复用及支持测试驱动开发(TDD)。根据项目复杂度,`main`函数有基础版、函数封装版、参数解析版和类封装版四种典型写法。 与其他语言相比,Python的`main`机制更灵活,支持同一文件作为脚本运行或模块导入。进阶技巧涵盖多文件项目管理、命令行参数处理、环境变量配置及日志集成等。此外,还需注意常见错误如全局变量污染和循环导入,并通过延迟加载、多进程支持和类型提示优化性能。
86 0
|
3月前
|
数据采集 供应链 API
实战指南:通过1688开放平台API获取商品详情数据(附Python代码及避坑指南)
1688作为国内最大的B2B供应链平台,其API为企业提供合法合规的JSON数据源,直接获取批发价、SKU库存等核心数据。相比爬虫方案,官方API避免了反爬严格、数据缺失和法律风险等问题。企业接入1688商品API需完成资质认证、创建应用、签名机制解析及调用接口四步。应用场景包括智能采购系统、供应商评估模型和跨境选品分析。提供高频问题解决方案及安全合规实践,确保数据安全与合法使用。立即访问1688开放平台,解锁B2B数据宝藏!
|
3月前
|
API 开发工具 Python
【Azure Developer】编写Python SDK代码实现从China Azure中VM Disk中创建磁盘快照Snapshot
本文介绍如何使用Python SDK为中国区微软云(China Azure)中的虚拟机磁盘创建快照。通过Azure Python SDK的Snapshot Class,指定`location`和`creation_data`参数,使用`Copy`选项从现有磁盘创建快照。代码示例展示了如何配置Default Azure Credential,并设置特定于中国区Azure的`base_url`和`credential_scopes`。参考资料包括官方文档和相关API说明。
|
4月前
|
存储 缓存 Java
Python高性能编程:五种核心优化技术的原理与Python代码
Python在高性能应用场景中常因执行速度不及C、C++等编译型语言而受质疑,但通过合理利用标准库的优化特性,如`__slots__`机制、列表推导式、`@lru_cache`装饰器和生成器等,可以显著提升代码效率。本文详细介绍了这些实用的性能优化技术,帮助开发者在不牺牲代码质量的前提下提高程序性能。实验数据表明,这些优化方法能在内存使用和计算效率方面带来显著改进,适用于大规模数据处理、递归计算等场景。
114 5
Python高性能编程:五种核心优化技术的原理与Python代码
|
5月前
|
Python
课程设计项目之基于Python实现围棋游戏代码
游戏进去默认为九路玩法,当然也可以选择十三路或是十九路玩法 使用pycharam打开项目,pip安装模块并引用,然后运行即可, 代码每行都有详细的注释,可以做课程设计或者毕业设计项目参考
115 33

热门文章

最新文章