美文网首页
PDF文档转换成图片

PDF文档转换成图片

作者: StataPython数据分析 | 来源:发表于2020-07-22 08:43 被阅读0次

本文作者:王碧琪
文字编辑:方 言
技术总编:张 邯

PDF是一种稳定性和安全性都很强的格式文件,有很多资料会选择采用PDF格式来保存,但是文件中的文字内容可以复制。为了防止这一点,我们可以将PDF再转换成JPG图片,这样就更加保护PDF文件中的信息了。之前我们了解了pymupdf库可以提取PDF中的文本信息,今天我们继续用它把PDF转换成图片文件。

一、简介

使用的库仍然是pymupdf。待处理文档名为“demo1”,共有三页,内容如下:

image

二、转换处理

(一)导入文件

import fitz  
doc = fitz.open(f".\\pdfs\\ demo1.pdf")  
print(doc)
print(doc.pageCount)

运行结果为:

fitz.Document('.\pdfs\demo1.pdf')
3

结果显示,fitz处理之后的文档“demo1”文件共有3页。

(二)转换成图片
下面是几个常用的用法。

方法 含义
Matrix.preRotate(deg) 旋转。填入旋转角度(以度为单位)。
Matrix.preScale(sx,sy) 缩放。sx表示x方向上的缩放系数,sy表示y方向上的缩放系数。
Matrix.preShear(sx,sy) 剪切(倾斜)。sx表示x方向上的剪切效果,sy表示y方向上的剪切效果。
init(self, zoom-x, zoom-y) 指定缩放值。
init(self, shear-x, shear-y, 1) 指定剪切值。

首先设置转换的参数。利用Matrix()可以设置图片的大小、旋转的角度等。

rotate = int(0)  # 设置图片的旋转角度为0
zoom_x = 2.0  # 设置图片相对于PDF文件在X轴上的缩放比例为2
zoom_y = 2.0  # 设置图片相对于PDF文件在Y轴上的缩放比例为2
trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)
print(f"{filename}开始转换...")

接下来进行转换,利用page.getPixmap()用于创建一个pixmap,把设置好的转换参数填入。Pixmap(“pixel maps”)是mupdf渲染功能的核心。他们代表像素的平面矩形集。每个像素由定义其颜色的多个字节(“components”)以及定义其透明度的可选alpha字节描述。
再用writeImage( )把转换好的图片输出。它的语法是:writeImage(filename, output=None)。filename填入文件名,output是输出的图片格式,默认值为文件的扩展名,无法识别时假定为png。

for pg in range(doc.pageCount):
    page = doc[pg]  # 获得第pg页
    pm = page.getPixmap(matrix=trans, alpha=False)  # 创建pixmap
    pm.writeImage(f"{filename}-{pg+1}.jpg")  # 输出为jpg图片格式
print(f"{filename}转换完成!")

运行结果如下:

demo1开始转换...
demo1转换完成!

去看一下工作路径下生成的图片:

image

大功告成!利用pymupdf库的几个函数成功把PDF文档变成了不可编辑的图片。


image

相关文章

网友评论

      本文标题:PDF文档转换成图片

      本文链接:https://www.haomeiwen.com/subject/lwaakktx.html