Python的PDF转PNG图片

下面的代码为PDF转成PNG图片的代码,upload_house_image()函数

def upload_house_image(request):
    from datetime import datetime
    import fitz

    url_list = []	# 因为PDF是多页图片,所以要用list类型将这些图片信息全部传入到前端显示

    file = request.FILES.get('file')	# 从前端获取file文件
    name = file.name
    time_name = datetime.now().strftime('%Y%m%d_%H%M%S%f')[:-4]	# 这里是通过当前时间给文件命名
    new_name = name.split('.')  # 分割文件名名称

    if new_name[-1] == 'pdf':	# 如果文件类型为PDF
        print("传入的文件为PDF")
        new_name = time_name + "." + new_name[-1]  # 这个输出的为含有时间字符串的名字,文件类型为new_name[-1],例如20200603_10250697.jpg
        with open(os.path.join(settings.MEDIA_ROOT, new_name), 'wb') as fp:  # 写入PDF文件
            for chunk in file.chunks():
                fp.write(chunk)

        pdf = fitz.Document(os.path.join(settings.MEDIA_ROOT, new_name))
        for pg in range(0, pdf.pageCount):  #pdf.pageCount为页码
            page = pdf[pg]  # 获得每一页的对象,此处的pg为数字0、1、2、……
            trans = fitz.Matrix(1.0, 1.0).preRotate(0)
            pm = page.getPixmap(matrix=trans, alpha=False)  # 获得每一页的流对象
            PNG_name = time_name + '_%s'%pg + '.png'	# 此处将png改成jpg也可以正常显示,但我这里还是跟原来代码一样
            pm.writePNG(os.path.join(settings.MEDIA_ROOT, PNG_name))  # 保存图片
            url = "http://" + request.get_host() + settings.MEDIA_URL + PNG_name
            url_list.append(url)
        pdf.close()
        print(url_list)
        return restful.result(data={'url_list':url_list})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值