美文网首页
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