昨天在公司需要把一份PDF格式认证表转换为图片JPEG格式,所以在网上查询了一些与此相关的python库,最后看网上大多都是使用Wand和PyMuPDF,在安装了Wand库后,导入相应的模块后报错了,好像要安装什么依赖项,最后选择了PyMuPDF,下载库文件就可以直接用。

1、下载PyMuPDF库文件

pip install PyMuPDF

2、源文件贴上

import os
import fitz # 导入的是fitz if __name__ == '__main__':
base_path = input("请输入要转换的文件路径:") # 输入要转换的PDF所在的文件夹
filenames = os.listdir(base_path)      # 获取PDF文件列表
for filename in filenames:
full_path = os.path.join(base_path, filename) # 拼接,得到PDF文件的绝对路径
print(full_path)
doc = fitz.open(full_path) # 打开一个PDF文件,doc为Document类型,是一个包含每一页PDF文件的列表
rotate = int(0) # 设置图片的旋转角度
zoom_x = 2.0 # 设置图片相对于PDF文件在X轴上的缩放比例
zoom_y = 2.0 # 设置图片相对于PDF文件在Y轴上的缩放比例
trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)
print("%s开始转换..." % filename)
if doc.pageCount > 1: # 获取PDF的页数
for pg in range(doc.pageCount):
page = doc[pg] # 获得第pg页
pm = page.getPixmap(matrix=trans, alpha=False) # 将其转化为光栅文件(位数)
new_full_name = full_path.split(".")[0] # 保证输出的文件名不变
pm.writeImage("%s%s.jpg" % (new_full_name, pg)) # 将其输入为相应的图片格式,可以为位图,也可以为矢量图
       # 我本来想输出为jpg文件,但是在网页中都是png格式(即调用writePNG),再转换成别的图像文件前,最好查一下是否支持
else:
page = doc[0]
pm = page.getPixmap(matrix=trans, alpha=False)
new_full_name = full_path.split(".")[0]
pm.writeImage("%s.jpg" % new_full_name)
print("%s转换完成!" % filename)

3、PyMuPDF文档

https://pymupdf.readthedocs.io/en/latest/

PyMuPDF库(处理PDF)的更多相关文章

  1. 利用python第三方库提取PDF文件的表格内容

    小爬最近接到一个棘手任务:需要提取手机话费电子发票PDF文件中的数据.接到这个任务的第一时间,小爬决定搜集各个地区各个时间段的电子发票文件,看看其中的差异点.粗略统计下来,PDF文件的表格框架是统一的 ...

  2. 使用iText库创建PDF文件

    前言 译文连接:http://howtodoinjava.com/apache-commons/create-pdf-files-in-java-itext-tutorial/ 对于excel文件的读 ...

  3. 转:在 C# 中使用 P/Invoke 调用 Mupdf 函数库显示 PDF 文档

    在 C# 中使用 P/Invoke 调用 Mupdf 函数库显示 PDF 文档 一直以来,我都想为 PDF 补丁丁添加一个 PDF 渲染引擎.可是,目前并没有可以在 .NET 框架上运行的免费 PDF ...

  4. 在Qt中调用Mupdf库进行pdf显示

    2018.5.10 更新内存对齐说明 感谢知乎网友@孤独子狮 指出QImage处需要考虑内存对齐的问题.因为本人缺乏跨平台.图形库开发经验,所以在调试成功后就没有深入探究. 主要修改了QImage的构 ...

  5. PdfSharp库剪裁Pdf页面边缘空白部分

    背景 网上下载下来的Pdf格式电子书放到Kindle后由于页面太大,缩放后字常常小得看不清,因此可以通过剪裁页面边缘的空白以缩小页面,使Kindle上显示的字放大.在GitHub上星最多的C# Pdf ...

  6. 根据第三方库spire.pdf使用指定打印机打印pdf文件

    private void button1_Click(object sender, EventArgs e) { PdfDocument doc = new PdfDocument(); string ...

  7. pdfplumber库解析pdf格式

    参考地址:https://github.com/jsvine/pdfplumber 简单的pdf转换文本: import pdfplumber with pdfplumber.open(path) a ...

  8. Box2D 一、学习资料(库、pdf)

    参考: 在Egret中使用Box2D --- 拉小登   (提供了box2d的ts和dts文件下载,以及egret中第三方库配置教程) Egret中成功集成Box2D --- Egret论坛水友 bo ...

  9. 使用iTEXT库生成pdf

    iTEXT下载地址 https://sourceforge.net/projects/itext/files/ 选择绿色的按钮,下载最新版本,解压后是一些jar包 为了使用方便,将文件夹放到JAVA_ ...

随机推荐

  1. Django中间件-跨站请求伪造-django请求生命周期-Auth模块-seettings实现可插拔配置(设计思想)

    Django中间件 一.什么是中间件 django中间件就是类似于django的保安;请求来的时候需要先经过中间件,才能到达django后端(url,views,models,templates), ...

  2. 形参和实参|默认值|可选实参|tuple|*tuple|args|*args | **kwargs|args[:]|

    #!/usr/bin/python def hello(i,greet='long time to see!'): out = "hello "+i+" "+g ...

  3. Django线上部署实战教程之Nginx+Gunicorn+Django篇

    #############################################   推荐 nginx supervisor gunicorn  配置简单,运维方便. Nginx (engi ...

  4. Estimating Gene Frequencies| method of maximum likelihood|point estimate

    I.11 Estimating Gene Frequencies 在小样本上计算基因A的概率PA,举例如下: 通过加大样本会将通过观察值得到的数趋近于真实数据,所以该问题转化为了统计学上利用大量观察值 ...

  5. 安装Rational Rose启动报错:无法启动此程序,因为计算机中丢失 suite objects.dll。

    运行Rational Rose的时候如果出现这样的错误,先检查环境变量有没有common的地址,如果没有直接配上就OK:配置如下:D:\Program Files\Rational\Common; 我 ...

  6. TCP、UDP、HTTP与HTTPS

    TCP.UDP.HTTP与HTTPS都是通信协议,在这里首先先介绍一下什么是通信协议. 什么是通信协议? 通信协议(communications protocol)是指双方实体完成通信或服务所必须遵循 ...

  7. form提供的两种数据传输方式 get和post method=”post“和method=”get”

    虽然它们都是数据的提交方式,但是在实际传输时确有很大的不同,并且可能会对数据产生严重的影响.虽然为了方便的得到变量值,Web容器已经屏蔽了二者的一些差异,但是了解二者的差异在以后的编程也会很有帮助的. ...

  8. TZOJ-STL系列题

    C++实验:STL之vector #include <bits/stdc++.h> using namespace std; void Input(vector<int>&am ...

  9. 吴裕雄--天生自然python学习笔记:python用 Selenium 组件实现浏览器操作自动化

    一般情况下,我们都是用手工操作的方式来对浏览器进行各种操作 . 实际上, 只要我们安装一个自动化操作组件, Python 就可以让我们的很多操作实现自动化 . Selenium 组件 在开发网页时,用 ...

  10. B 小雨的三角形

    题目链接:https://ac.nowcoder.com/acm/contest/949/B 思路: 一个找规律题,找到规律就很简单,只剩下代码实现了.规律:第i行去头尾剩下的数的和等于第i-1行去头 ...