Python:PDF文件转图像
Python:PDF文件转图像
什么是PyMuPDF?
Python环境下想要将PDF文件转图像,可以使用PyMuPDF库。
PyMuPDF是MuPDF的Python绑定-“轻量级PDF和XPS查看器”。
MuPDF可以访问PDF,XPS,OpenXPS,CBZ(漫画书档案),FB2和EPUB(电子书)格式的文件,也可以是扩展名为.pdf,.xps,.oxps,.cbz,.fb2 或.epub的文件(因此您可以使用Python开发电子书查看器……),因此它不仅仅可以解析PDF文件。
支持的操作系统是哪些?
PyMuPDF可以在Mac,Linux,Windows XP SP2及更高版本上运行,Python 2.7到Python 3.7(请注意,Python仅支持v3.4以下的Windows XP),32位和64位版本上运行并经过测试。
只要MuPDF和Python支持它们,其他平台也应该可以正常工作。
支持的操作系统还是很广泛的。
如何安装PyMuPDF?
PyMuPDF托管在Github和PyPi上,因此我们可以很方便的安装。
pip install pymupdf
具体安装方法参考:
Installation — PyMuPDF 1.19.1 documentationhttps://pymupdf.readthedocs.io/en/latest/installation.html
PyMuPDF的前世今生
该库的标准Python import语句是import fitz。
这有历史原因:
MuPDF的原始渲染库称为Libart。
“在Artifex Software收购MuPDF项目之后,开发重点转移到编写名为* Fitz的新现代图形库。Fitz最初是作为一个研发项目来替代老化的Ghostscript图形库,但后来成为支持MuPDF的渲染引擎。” *(引自Wikipedia)。
转换图片代码
"""
****************************************************************************************************
@版权声明: Copyright (c) 2012-2021 LiuBing. All rights reserved.
@许可版本: Corporation & Enterprise
@创建时间: 2021-11-18
@创建作者: 370711753
@文件名称: pdf2image.py
@文件功能: PDF文件转图像.
@软件版本: V1.0.1
****************************************************************************************************
"""####################################################################################################
# Linux/OS X 系统下声明这是一个 Python 可执行程序; Windows 系统会忽略这个注释.
# !/usr/bin/env python
# 指定 Python 解释器按照 UTF-8 编码读取源代码, 否则源代码中的中文输出时可能会乱码.
# -*- coding: utf-8 -*-####################################################################################################
# 【系统模块】
# 加入“绝对引入”新特性:
# 这样就可用import string引入系统标准string.py, 而用from pkg import string来引入当前目录下的string.py.
from __future__ import absolute_import, division, print_function, unicode_literals
# 导入 os 库: 用于读取文件和目录结构.
import os
# 导入 sys 库: 包含与 Python 解释器和它的环境有关的函数.
import sys
# 导入 time 库: 用于获取时间信息.
import time
# 导入 fitz 库: PyMuPDF, 用于处理PDF.
import fitz####################################################################################################
# 单个PDF文件转图像
def lmc_pdffile2image(pdf_file, image_path, image_format):"""函数功能: 单个PDF文件转图像.pdf_file: 单个PDF文件名称.image_path: 图像保存路径.image_format: 图像格式."""# 开始时间time_start = time.time()# 检验PDF文件是否存在if not os.path.exists(pdf_file):print(f"PDF文件 {pdf_file} 不存在, 请您核查!")returnelse:print(f"PDF文件名称为: {pdf_file}")# 检验图像保存路径是否存在if not os.path.exists(image_path):print(f"图像保存路径 {image_path} 不存在, 自动创建!")os.makedirs(image_path)else:print(f"图像保存路径: {image_path}")# 检验文件名称是否合法if (image_format != "jpg") and (image_format != "bmp") and (image_format != "png") \and (image_format != "tif") and (image_format != "gif"):print(f"图像文件扩展名: {image_format} 不合法, 请您核查!")else:print(f"图像文件扩展名: {image_format}")# 打开PDF文件pdf_doc = fitz.open(pdf_file)# 遍历所有PDF页面for page_index in range(pdf_doc.pageCount):page = pdf_doc[page_index]rotate = int(0)# 默认页面转图片大小为: "letter": (612, 792), dpi=96# 页面缩放系数设为1.3, 这将生成分辨率提高2.6的图像.# (1.33333333-->816x1056) (2-->1224x1584)zoom_x = 1.33333333zoom_y = 1.33333333# 页面缩放mat = fitz.Matrix(zoom_x, zoom_y).prerotate(rotate)# 转化成图像pix = page.get_pixmap(matrix=mat, alpha=False)# 保存图像pix.save(image_path + '/' + '图像_%08d' % page_index + '.' + image_format)print(f"第 {page_index} 页转换完毕...")# 结束时间time_end = time.time()print(f"PDF文件转图像完毕, 总计耗时: %.3f秒!" % (time_end - time_start))####################################################################################################
# 指定路径下所有PDF文件转图像
def lmc_pdfpath2image(pdf_path, image_format):"""函数功能: 指定路径下所有PDF文件转图像.pdf_path: PDF文件路径.image_format: 图像格式."""# 开始时间time_start = time.time()# 检验PDF文件路径是否存在if not os.path.exists(pdf_path):print(f"PDF文件路径 {pdf_path} 不存在, 请您核查!")returnelse:print(f"PDF文件路径为: {pdf_path}")# 检验文件名称是否合法if (image_format != "jpg") and (image_format != "bmp") and (image_format != "png") \and (image_format != "tif") and (image_format != "gif"):print(f"图像文件扩展名: {image_format} 不合法, 请您核查!")else:print(f"图像文件扩展名: {image_format}")# 过滤指定路径下 PDF 文件pdf_files = list(filter(file_filter, os.listdir(pdf_path)))for pdf_file in pdf_files:image_path = os.path.splitext(pdf_file)[0]# 检验图像保存路径是否存在if not os.path.exists(image_path):print(f"图像保存路径 {image_path} 不存在, 自动创建!")os.makedirs(image_path)else:print(f"图像保存路径: {image_path}")# 打开PDF文件pdf_doc = fitz.open(pdf_file)# 遍历所有PDF页面for page_index in range(pdf_doc.pageCount):page = pdf_doc[page_index]rotate = int(0)# 默认页面转图片大小为: "letter": (612, 792), dpi=96# 页面缩放系数设为1.3, 这将生成分辨率提高2.6的图像.# (1.33333333-->816x1056) (2-->1224x1584)zoom_x = 1.33333333zoom_y = 1.33333333# 页面缩放mat = fitz.Matrix(zoom_x, zoom_y).prerotate(rotate)# 转化成图像pix = page.get_pixmap(matrix=mat, alpha=False)# 保存图像pix.save(image_path + '/' + '图像_%08d' % page_index + '.' + image_format)print(f"第 {page_index} 页转换完毕...")# 结束时间time_end = time.time()print(f"PDF文件转图像完毕, 总计耗时: %.3f秒!" % (time_end - time_start))# 过滤器
def file_filter(f):if f[-4:] in ['.pdf', '.pdf', '.pdf']:return Trueelse:return Falseif __name__ == "__main__":# 单个PDF文件转图像# lmc_pdffile2image('1.pdf', './image', 'png')# lmc_pdffile2image(sys.argv[1], sys.argv[2], sys.argv[3])# 指定路径下所有PDF文件转图像# lmc_pdfpath2image('./', 'png')lmc_pdfpath2image(sys.argv[1], sys.argv[2])
Python:PDF文件转图像相关推荐
- Python PDF文件转Word格式
1.免费在线转换网站 PDF转换器,限制50页: http://pdfdo.com/pdf-to-word.aspx 迅捷PDF转换器,限制2M: http://app.xunjiepdf.com/p ...
- [Python]PDF文件与图片转换(PyMuPDF)及转PPT
文章目录 安装与简介 MuPDF PyMuPDF PyMuPDF使用 元数据 页面Page 代码示例 PDF转图片 图片转PDF PDF转PPT PyMuPDF提供了PDF及流行图片处理接口. 安装与 ...
- Python PDF文件合并,提取
文章目录 1. 功能介绍 2.项目难点 1. tkinter设置图标显示 3. 源代码 3. 代码打包 1. 打包过后程序运行出错 2. 打包命令 3.打包技巧 1. 功能介绍 选择两个pdf指定的页 ...
- xdf文档怎么转换为pdf_如何将PDF文件和图像转换为Google文档文档
xdf文档怎么转换为pdf You probably know you can create and edit documents with Google Docs, but you can edit ...
- Python PDF文件转Word格式,只需要3秒(附打包)
PDF文档遵循一定的规范,例如精确定位了每个字符出现在页面上的坐标.根据坐标绘制的各种形状(线.矩形.曲线等).所以,用PDF格式传输和打印文档可以保证格式的一致性,不会像Word那样因为渲染引擎的不 ...
- pypdf2 存储pdf_PyPDF2:用于PDF文件操作的Python库
pypdf2 存储pdf PyPDF2 is a pure-python library to work with PDF files. We can use the PyPDF2 module to ...
- 如何在Windows中将图像合并为一个PDF文件
PDFs were designed to be a universal, easy-to-read document format, and they serve that purpose well ...
- pdf文件怎么转化为word,pdf转换成word的方法
如果收到一份PDF文件,但是不是自己想要的格式,需要将其转换成Word格式,有什么办法可以解决呢?在本文中,我们会告诉你pdf文件怎么转化为word,大家赶紧学起来吧. 方法一.使用Adobe Acr ...
- pdf文件转换ppt可编辑_创建,转换和编辑PDF文件的免费工具
PDF可靠且通用,是当今使用最广泛的电子文档格式之一. 但是,有时您想将PDF文件的数据转换为其他格式或编辑其中的信息 . 在这种情况下,您将根据需要寻找PDF编辑器或转换器. 好吧,像所有其他在线工 ...
最新文章
- python常用的数据预处理方法
- Zabbix监控,详细部署
- JS 调试(debug)
- 解决安卓SDK无法下载Package的问题
- Netty技术细节源码分析-MpscLinkedQueue队列原理分析
- axure rp 使用心得
- python基础代码大全-python文件及目录操作代码汇总
- 测试管理工具实践(小组作业)
- thinkphp5微信公众号推送模板消息
- 读书笔记-项目计划、进度与控制
- 《Linux命令行与Shell脚本编程大全第2版.布卢姆》pdf
- windows控制台cmd查看wifi密码
- 如何在直播中解决黑屏、花屏、闪屏问题 | 直播疑难杂症排查
- 深度理解PHP执行流程
- 手机上的计算机黑屏怎么办,手机黑屏是怎么回事,详细教您苹果手机黑屏怎么办...
- linux终端玩fc游戏,在UBuntu下玩FC和街机模拟器
- 深圳-国信证券项目组-市场风险二期
- 国际码可以直接应用于计算机,2001年4月份全国高等教育自学考试计算机应用基础试题...
- 为什么黑客从不用鼠标,一直在敲键盘?看完长见识了
- 用MATLAB实现m序列的生成(MATLAB 2021a适用)
热门文章
- Source Insight 4.0 常用设置
- Golang go 命令
- ASP.NET Atlas简单控件介绍——InputControl,TextBox,Button和CheckBox
- mysql 主从手动切换
- data-packed volume container - 每天5分钟玩转 Docker 容器技术(43)
- window下Jekyll+github搭建自己的博客
- 程序-进程-线程 ( 多线程 )
- [HTML] 关于DIV被Flash或表单遮盖的解决方法
- 使用netcat的正向 / 反向shell
- Git-如何回滚代码 revert和reset