更多课程 选择中心


Python培训

400-111-8989

如何利用python将PDF转化为图片?

  • 发布:qikqiak
  • 来源:阳明的博客
  • 时间:2018-05-17 17:02

如何利用python将PDF转化为图片

python的功能真是强大,可以做词云图、可以优雅地八卦、可以做游戏外挂、还可以将PDF转化成图片,这个功能你还不知道吧,赶紧随小编我一起来看看吧:

之前收集了很多优秀的 PDF文档,但是需要看的时候不是很方便,需要去找到这个文件,如果是在手机上的话往往还需要下载 PDF相关的插件才行,而且最大的问题是不便于资料的整理和分享。如果能够将 PDF转换成网页,岂不是就能解决这些问题了?还能直接分享出去。

这里利用 PyPDF包来处理 PDF文件,为了方便快捷,我这里直接将一个页面转换成图片,就不需要去识别页面中的每一个 PDF元素了,这是没必要的。

转换

核心代码很简单,就是将 PDF文件读取出来,转换成 PdfFileReader,然后就可以根据 PyPDF2的API去获得每一个页面的二进制数据,拿到二进制数据过后,就能很方便的进行图片处理了,这里用 wand包来进行图片处理。

# -*- coding: utf-8 -*-

import io

from wand.image import Image

from wand.color import Color

from PyPDF2 import PdfFileReader, PdfFileWriter

memo = {}

def getPdfReader(filename):

reader = memo.get(filename, None)

if reader is None:

reader = PdfFileReader(filename, strict=False)

memo[filename] = reader

return reader

def _run_convert(filename, page, res=120):

idx = page + 1

pdfile = getPdfReader(filename)

pageObj = pdfile.getPage(page)

dst_pdf = PdfFileWriter()

dst_pdf.addPage(pageObj)

pdf_bytes = io.BytesIO()

dst_pdf.write(pdf_bytes)

pdf_bytes.seek(0)

img = Image(file=pdf_bytes, resolution=res)

img.format = 'png'

img.compression_quality = 90

img.background_color = Color("white")

img_path = '%s%d.png' % (filename[:filename.rindex('.')], idx)

img.save(filename=img_path)

img.destroy()

需要注意的是一般PDF文件较大,如果一次性转换整个PDF文件需要小心内存溢出的问题,我们这里将第一次载入的整个PDF文件保存到内存,避免每次读取的时候都重新载入。

批量处理

上面已经完成了一个 PDF页面的转换,要完成整个文件的转换就很简单了,只需要拿到文件的总页码,然后循环执行就行。考虑到转换比较耗时,可以使用异步处理的方式加快速度。比如可以使用 celery来搭配处理,一定注意小心内存泄露。

核心代码已经整理放到github上去了,好了,等有时间的时候准备做一个公共的PDF转成 H5的服务,开放给大众使用。

恭喜你阅读完了本文,相信你已经知道怎样用python将PDF转化成图片了,赶紧叫上小伙伴一起试试吧。你还发现使用python编程的更多乐趣了吗?欢迎你来达内python培训机构跟我们一起分享交流吧!

免责声明:内容和图片源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

预约申请免费试听课

填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:是否选择python培训,这些问题你肯定关注!
下一篇:如何用python编程追溯函数调用及错误日志的详细打印?

你知道达内Python培训班的学员为什么受欢迎吗?

看看别人是怎么学习Python编程的!

听有经验的人谈如何学习Python编程!

Python爬虫、Python数据分析、Python开发、Python架构...哪个工资高?

  • 扫码领取资料

    回复关键字:视频资料

    免费领取 达内课程视频学习资料

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省