本文作者:王碧琪
文字编辑:方 言
技术总编:张 邯
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
网友评论