首页 > 解决方案 > 如何使用 wand 在 Django 中将上传的文件(InMemoryUploadedFile)从 pdf 转换为 jpeg?

问题描述

我正在尝试将在 Django 中上传的 pdf 文件转换为 jpg 文件。我想直接在 InMemoryUploadedFile 状态下使用文件。

我尝试使用魔杖但没有任何成功。这是我写的代码:

from django.shortcuts import render
from wand.image import Image as wi

# Create your views here.
def readPDF(request):
    context = {}
    if request.method == 'POST':
        uploaded_file = request.FILES['document']
        if uploaded_file.content_type == 'application/pdf':
            pdf = wi(filename=uploaded_file.name, resolution=300)
            pdfImage = pdf.convert("jpeg")
    return render(request, 'readPDF.html', {"pdf": pdfImage})

我尝试了不同的方法,例如使用uploaded_file.file 或uploaded_file.name 作为魔杖图像的第一个参数,但没有任何成功。`

我提前感谢您的帮助!

标签: djangopython-3.xfile-uploadtype-conversionwand

解决方案


应该可以InMemoryUploadedFile直接传递给 Wand 的构造函数。

uploaded_file = request.FILES['document']
if uploaded_file.content_type == 'application/pdf':
    with wi(file=uploaded_file, resolution=300) as pdf:
        # ...

但是,我不建议尝试在 HTTP 请求中将 PDF 页面转换为 JPEG。最好将文档写入存储,并让后台工作人员管理缓慢/不安全的任务。


推荐阅读