文章目录

  • 1、借助`PyMuPDF`库
    • 1)安装
    • 2)查看版本
    • 3)常用接口
    • 4)将`pdf`转为图片实例
  • 2、基于`pdfplumber`库
    • 1)安装
    • 2)常用接口
    • 3)实例

本文主要记录几种pdf文件转为图片的几种方法,方便日后使用。

1、借助PyMuPDF

可以将页面呈现为光栅或矢量(SVG)图像,可以选择缩放、旋转、移动或剪切页面。

1)安装

pip install PyMuPDF

2)查看版本

import fitz
print(fitz.__doc__)

3)常用接口

  • 打开pdf文件,或者创建pdf文件

    doc=fitz.open(文件名)#或fitz.Document(文件名)
    

    Document的一些属性:

    属性 描述
    Document.page_count int类型,页数
    Document.get_toc() list类型,内容目录
    Document.load_page() 读取页面
  • 加载页面

    page = doc.load_page(pno)
    page = doc[pno]
    page = doc[-1] # 最后一页
    # 也可以作为迭代器
    for page in doc:....
    # 从后往前读取
    for page in reversed(doc): ....
    # 切片
    for page in doc.pages(start, stop, step):....
    
  • 呈现页面

    # 函数定义
    def get_pixmap(self,matrix: AnyType = None,colorspace: "Colorspace" = None,alpha: int = 0,
    ) -> "Pixmap":pix = page.get_pixmap()
    

    pix是一个Pixmap对象,它(在本例中)包含页面的RGB图像,可用于多种用途。方法Page.get_pixmap()提供了许多用于控制图像的变体:分辨率、颜色空间(例如,生成灰度图像或具有减色方案的图像)、透明度、旋转、镜像、移位、剪切等。
    例如:创建RGBA图像(即,包含alpha通道),指定pix=page.get_pixmap(alpha=True)
    Pixmap包含以下引用的许多方法和属性。其中包括整数宽度、高度(每个像素)和跨距(一个水平图像行的字节数)。属性示例表示表示图像数据的矩形字节区域(Python字节对象)。

  • 将页面图像保存到文件中

    pix.save('page.png') # 将页面图像保存到文件page.png中
    

4)将pdf转为图片实例

def pdf2img(pdf_path, zoom_x, zoom_y, rotate_angle=0, clip_roi=None):'''zoom_x x方向的缩放系数zoom_y y方向的缩放系数rotation_angle 旋转角度clip_roi 裁切区域坐标'''# open pdf filepdf = fitz.open(pdf_path)# logger.debug('Total: %d pages.'%pdf.pageCount)page = pdf[0] # 处理第一页# 设置缩放和旋转系数trans = fitz.Matrix(zoom, zoom).preRotate(rotate_angle)if clip_roi is not None:rect = page.rect  # 页面大小mp = rect.tl + (rect.br - rect.tl) * 0.5  # 矩形的中心# clip = fitz.Rect(mp, rect.br)  # 想要截取的区域clip = fitz.Rect(clip_roi[0], clip_roi[1])  # 想要截取的区域pix = page.get_pixmap(matrix=trans, alpha=False, clip=clip)  # 将页面转换为图像else:pix = page.get_pixmap(matrix=trans, alpha=False)save_roi_name = pdf_path[:-4] + '_clip.png'pix .save(save_roi_name)pdf.close()

2、基于pdfplumber

1)安装

pip install pdfplumber

2)常用接口

  • 读取pdf文件

    # 打开pdf文件
    pdfplumber.open("test.pdf")
    # 从内存加载
    pdfplumber.load(file_like_object)
    

    这两种方法都返回pdfplumber.PDF类的实例。
    pdf带有密码,则需要传入password参数

    pdfplumber.open('test.pdf', password='test')`
    
  • pfplumber.Page
    pdfplumber.Page类是pdfplumber整个的核心,有以下几个属性和方法:
属性 描述
.page_number 页码顺序,从1开始
.width 页面宽度
.height 页面高度
.objects /.chars / .lines / .rects / .curves / .images / .figures 这些属性都是列表形式
方法 描述
.crop(bounding_box) 返回裁剪后的页面,bounding_box的值表示为(x0, top, x1, bottom)的四元组。
.extract_text(x_tolerance=0, y_tolerance=0) 将页面中所有的字符对象提取到一个字符串中
.extract_words(x_tolerance=0, y_tolerance=0, horizontal_ltr=True, vertical_ttb=True) 返回所有单词外观及其边界框的列表
.to_image(**conversion_kwargs) 返回PageImage类的实例。
  • 保存图像

    im.save(path_or_object, format="PNG")
    

3)实例

import pdfplumberpath = './express_datas/YTO.pdf'
pdf = pdfplumber.open(path)first_page = pdf.pages[0] # 第一页print(first_page.page_number)
print('Page_W: ', first_page.width)
print('Page_H: ',first_page.height)text = first_page.extract_text() # 提取页面中的文本内容
print(text)im = first_page.to_image(resolution=96)im.save('output.jpg')
pdf.close()

pdf文件转图片的两种方法相关推荐

  1. 提取pdf文件中文字的两种方法

    如今,在我们的工作与学习中已经不是单单使用word.Excel等格式文件了,pdf格式的文件已经被广泛地运用到我们的办公室中.大家都知道pdf文件是不可直接编辑与修改的,使用起来有些不便.那么当我们需 ...

  2. MATLAB 保存imshow绘制图片到指定文件夹中的两种方法

    MATLAB 保存imshow绘制图片到指定文件夹中的两种方法 imwrite函数 imwrite(image,filename) imwrite(image,filename)是将图像数据image ...

  3. php imagick 取得psd缩略图,PHP利用imagick读取PDF生成png缩略图的两种方法

    PHP利用imagick读取PDF生成png缩略图的两种方法 发表于2019-04-24 06:08| 次阅读| 来源网络整理| 作者session 摘要:PHP利用imagick读取PDF生成png ...

  4. java对文件进行压缩的两种方法

    在工作中,我们或多或少都会接触到文件的压缩和解压,在window系统中,我们只需下载一个能对文件进行解压缩的应用即可,但如果让我们自己动手写对文件压缩的代码,顿时就头大了. 在java中,我们都知道输 ...

  5. JavaBean实现多个文件上传的两种方法

    JavaBean实现多个文件上传的两种方法 王新芳        刘杰 北京工商大学计算机学院 摘要:本文介绍了JavaBean实现多个文件上传的两种方法,分别是使用http协议和ftp协议实现.首先 ...

  6. SketchUp 2019 文件导入AI的两种方法(附插件)

    作者:TutorialsUp 今天与大家分享TutorialsUp教程 将SketchUp文件导入AI的两种方法 作者通过两种方式,完美地将SU文件导入AI进行编辑. 第一种方法是SketchUp原生 ...

  7. python 学习系列(3) 读取并显示图片的两种方法

    python 读取并显示图片的两种方法 在 python 中除了用 opencv,也可以用 matplotlib 和 PIL 这两个库操作图片.本人偏爱 matpoltlib,因为它的语法更像 mat ...

  8. 浏览器访问云服务器上图片的两种方法

    浏览器访问云服务器上图片的两种方法 1. Tomcat方式 打开tomcat的conf目录下配置文件server.xml 添加以下内容: <Context docBase="/home ...

  9. word涂改涂掉图片_怎么在word中修改图片的两种方法

    有时我们插入的图片只有一部分是我们想要的,那就需要我们将这一部分裁剪出来,word本身就可以方便快捷的对图片进行裁剪,那么下面就由学习啦小编给大家分享下在word中修改图片的技巧,希望能帮助到您. 在 ...

  10. PDF怎么转成PPT文件?记下这两种方法轻松化解难题

    如何将PDF文件转换成PPT文件格式呢?PDF文件大家在日常中经常会遇到,尤其是在发送文件.保存文件用途上会使用.PPT文件大家都是用来展示.汇报具体内容的一种手段,当我们收到一份PDF文件,要求把P ...

最新文章

  1. [转]深夜无人的街道
  2. 【NOI2002】贪吃的九头龙
  3. Java黑皮书课后题第10章:***10.8(金融:Tax类)编程练习题8.12使用数组编写一个计算税款的程序。设计一个名为Tax类,该类包含下面的实例数据域
  4. win 7开机要点用户名的解决方法
  5. 苹果无线耳机使用方法_苹果官方:如果 AirPods Pro 出现这些问题,我们将免费更换!...
  6. 回发后动态设置的标题丢失
  7. Hive中时间格式的转换
  8. iphone 开发内存管理 心得
  9. eclipse插件开发总结
  10. ubuntu安装无线网卡驱动(Ralink)
  11. 至强服务器性能排行,至强cpu天梯图,至强服务器cpu排行-
  12. 几天几夜,终解移动MM计费SDK接入bug
  13. oracle查询dictionary,Oracle的DICTIONARY/DICT视图。
  14. 中国塑料电镀市场预测及投资价值报告(2022版)
  15. mysql删除视图sql语句_怎么样删除视图中的全部数据 用SQL语言编写。
  16. 名帖380 张弼 草书《草书帖选》
  17. 斐波那契数列求和——C语言(小白版)
  18. 新鲜的蔬菜和水果中富含抗氧化物,可以有效延缓衰老和疾病
  19. linux-Perl-语言入门
  20. 2020年超级计算机排名,2020中国高性能计算机TOP100榜单正式发布

热门文章

  1. Qt配置OpenCV时mingw32-make反复出错的原因
  2. 泛微E9 MVC开发
  3. log4j日志级别配置完成后不生效 系统一直打印debug日志
  4. ios人脸照片_基于iOS用CoreImage实现人脸识别
  5. 系统集成方案(一).NET集成方案
  6. CATIA—机电产品数字化设计工具
  7. 【Ubuntu】如何使用命令行(优雅地)安装/卸载Microsoft Edge
  8. 苹果怎么使用计算机,苹果系统电脑怎么用_超详细mac新手教程-win7之家
  9. 树莓派搭建物联网服务器
  10. 互联网网站的反爬虫策略浅析