美文网首页
利用Python将pdf转为图片

利用Python将pdf转为图片

作者: 韦子扬 | 来源:发表于2018-03-03 23:54 被阅读0次

    根据公司项目要求,需要实现将数据输入一个现有的pdf格式的表格中的功能,鉴于没有直接操作pdf的库,因此,需要先将pdf转成图片,再利用report-lab将图片置于背景,再加入文字,最后生成pdf。

    PythonMagick

    代码如下:

    import PythonMagick
    im = PythonMagick.Image('philip.pdf')
    im.write('output.png')
    

    另外PythonMagick库无法用pip或者easy_install来安装,因此,需要手动安装,地址如下:
    https://www.lfd.uci.edu/~gohlke/pythonlibs/#pythonmagick
    选择合适版本下载后,进入文件所在位置,直接pip install + 文件名即可完成安装。

    wand

    这是方法二,代码如下:

    from wand.imag import Image
    with Image(filename='philip.pdf') as img:
         with img.convert('jpeg') as converted:
            converted.save(filename='image.jpeg')
    

    这种方法底层也是调用了Magick库,如果没有安装的话,在import Color时则会抛出异常,异常信息中会给出下载地址,记得选择与Python版本相同的第三方库进行下载安装。

    问题

    以上两种方法都可以实现转换,但是问题是这两种方法所得出的图片都是A4大小的,也就是595*842。如果使用市面上的PDF转换器所得到的图片,是2482*3506大小的,也就是说比我们自己写代码得出的图片要清晰很多,倘若我们将得到的图片再转回成pdf,代码如下:

    def convert_to_pdf(im_name,pdf_name):
        from reportlab.pdfgen import canvas
        import io
        from reportlab.lib.pagesizes import A4, landscape
        (w, h) = landscape(A4)
        with open(pdf_name,'wb') as f:
            c = canvas.Canvas(f,pagesize=A4)
            c.drawImage(im_name,0,0)
            c.showPage()
            c.save()
    

    得到的pdf文件明显模糊不清,干扰阅读。所以,这里我仍然无法得到一个能够将PDF文件无损转化成图片的方法,这里如果各位看官有更好的选择,请联系我。

    相关文章

      网友评论

          本文标题:利用Python将pdf转为图片

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