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文件转图像相关推荐

  1. Python PDF文件转Word格式

    1.免费在线转换网站 PDF转换器,限制50页: http://pdfdo.com/pdf-to-word.aspx 迅捷PDF转换器,限制2M: http://app.xunjiepdf.com/p ...

  2. [Python]PDF文件与图片转换(PyMuPDF)及转PPT

    文章目录 安装与简介 MuPDF PyMuPDF PyMuPDF使用 元数据 页面Page 代码示例 PDF转图片 图片转PDF PDF转PPT PyMuPDF提供了PDF及流行图片处理接口. 安装与 ...

  3. Python PDF文件合并,提取

    文章目录 1. 功能介绍 2.项目难点 1. tkinter设置图标显示 3. 源代码 3. 代码打包 1. 打包过后程序运行出错 2. 打包命令 3.打包技巧 1. 功能介绍 选择两个pdf指定的页 ...

  4. xdf文档怎么转换为pdf_如何将PDF文件和图像转换为Google文档文档

    xdf文档怎么转换为pdf You probably know you can create and edit documents with Google Docs, but you can edit ...

  5. Python PDF文件转Word格式,只需要3秒(附打包)

    PDF文档遵循一定的规范,例如精确定位了每个字符出现在页面上的坐标.根据坐标绘制的各种形状(线.矩形.曲线等).所以,用PDF格式传输和打印文档可以保证格式的一致性,不会像Word那样因为渲染引擎的不 ...

  6. 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 ...

  7. 如何在Windows中将图像合并为一个PDF文件

    PDFs were designed to be a universal, easy-to-read document format, and they serve that purpose well ...

  8. pdf文件怎么转化为word,pdf转换成word的方法

    如果收到一份PDF文件,但是不是自己想要的格式,需要将其转换成Word格式,有什么办法可以解决呢?在本文中,我们会告诉你pdf文件怎么转化为word,大家赶紧学起来吧. 方法一.使用Adobe Acr ...

  9. pdf文件转换ppt可编辑_创建,转换和编辑PDF文件的免费工具

    PDF可靠且通用,是当今使用最广泛的电子文档格式之一. 但是,有时您想将PDF文件的数据转换为其他格式或编辑其中的信息 . 在这种情况下,您将根据需要寻找PDF编辑器或转换器. 好吧,像所有其他在线工 ...

最新文章

  1. python常用的数据预处理方法
  2. Zabbix监控,详细部署
  3. JS 调试(debug)
  4. 解决安卓SDK无法下载Package的问题
  5. Netty技术细节源码分析-MpscLinkedQueue队列原理分析
  6. axure rp 使用心得
  7. python基础代码大全-python文件及目录操作代码汇总
  8. 测试管理工具实践(小组作业)
  9. thinkphp5微信公众号推送模板消息
  10. 读书笔记-项目计划、进度与控制
  11. 《Linux命令行与Shell脚本编程大全第2版.布卢姆》pdf
  12. windows控制台cmd查看wifi密码
  13. 如何在直播中解决黑屏、花屏、闪屏问题 | 直播疑难杂症排查
  14. 深度理解PHP执行流程
  15. 手机上的计算机黑屏怎么办,手机黑屏是怎么回事,详细教您苹果手机黑屏怎么办...
  16. linux终端玩fc游戏,在UBuntu下玩FC和街机模拟器
  17. 深圳-国信证券项目组-市场风险二期
  18. 国际码可以直接应用于计算机,2001年4月份全国高等教育自学考试计算机应用基础试题...
  19. 为什么黑客从不用鼠标,一直在敲键盘?看完长见识了
  20. 用MATLAB实现m序列的生成(MATLAB 2021a适用)

热门文章

  1. Source Insight 4.0 常用设置
  2. Golang go 命令
  3. ASP.NET Atlas简单控件介绍——InputControl,TextBox,Button和CheckBox
  4. mysql 主从手动切换
  5. data-packed volume container - 每天5分钟玩转 Docker 容器技术(43)
  6. window下Jekyll+github搭建自己的博客
  7. 程序-进程-线程 ( 多线程 )
  8. [HTML] 关于DIV被Flash或表单遮盖的解决方法
  9. 使用netcat的正向 / 反向shell
  10. Git-如何回滚代码 revert和reset