我正在构建基于Django-REST框架,在macosenv上,将上传的pdf转换为图像的API。 当然,在系统上安装了imagemagick和ghostscript。在
这是我的代码片段。在
from wand.image import Image
try:
with Image(filename=pdffile, resolution=300) as img:
for i, page in enumerate(img.sequence):
filename = '{}-{}.jpg'.format(imagefilename, i + 1)
file ='{}/{}'.format(tmp_dir, filename)
Image(page).save(filename=file)
filelist.append(filename)
except WandException as e:
print e
except TypeError as e:
print e
但我得到了一个错误:
Exception TypeError: TypeError("object of type 'NoneType' has no len()",) in bound method Image.del of wand.image.Image: (empty) ignored
在线:
^{pr2}$以下是trackback:
内部服务器错误:/api/v1/admin/upload/pdf
Traceback (most recent call last): File "/Volumes/WORK/Projects/BazeanAnalytics/web-app-baz-analytics/API/data-api/venv/lib/python2.7/site-packages/django/core/handlers/base.py", line 149, in get_response response = self.process_exception_by_middleware(e, request)
File "/Volumes/WORK/Projects/BazeanAnalytics/web-app-baz-analytics/API/data-api/venv/lib/python2.7/site-packages/django/core/handlers/base.py", line 147, in get_response response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Volumes/WORK/Projects/BazeanAnalytics/web-app-baz-analytics/API/data-api/venv/lib/python2.7/site-packages/django/views/decorators/csrf.py", line 58, in wrapped_view return view_func(*args, **kwargs)
File "/Volumes/WORK/Projects/BazeanAnalytics/web-app-baz-analytics/API/data-api/venv/lib/python2.7/site-packages/django/views/generic/base.py", line 68, in view return self.dispatch(request, *args, **kwargs) File "/Volumes/WORK/Projects/BazeanAnalytics/web-app-baz-analytics/API/data-api/venv/lib/python2.7/site-packages/rest_framework/views.py", line 466, in dispatch response = self.handle_exception(exc) File "/Volumes/WORK/Projects/BazeanAnalytics/web-app-baz-analytics/API/data-api/venv/lib/python2.7/site-packages/rest_framework/views.py", line 463, in dispatch response = handler(request, *args, **kwargs)
File "/Volumes/WORK/Projects/BazeanAnalytics/web-app-baz-analytics/API/data-api/data_api/announcement/views.py", line 582, in post filelist = self._slice_n_convert_pdf_to_image(tmp_dir, file_obj.name)
File "/Volumes/WORK/Projects/BazeanAnalytics/web-app-baz-analytics/API/data-api/data_api/announcement/views.py", line 557, in _slice_n_convert_pdf_to_image with Image(filename=pdffile, resolution=300) as img:
File "/Volumes/WORK/Projects/BazeanAnalytics/web-app-baz-analytics/API/data-api/venv/lib/python2.7/site-packages/wand/image.py", line 2744, in init self.read(filename=filename, resolution=resolution)
File "/Volumes/WORK/Projects/BazeanAnalytics/web-app-baz-analytics/API/data-api/venv/lib/python2.7/site-packages/wand/image.py", line 2822, in read self.raise_exception()
File "/Volumes/WORK/Projects/BazeanAnalytics/web-app-baz-analytics/API/data-api/venv/lib/python2.7/site-packages/wand/resource.py", line 222, in raise_exception raise e DelegateError: FailedToExecuteCommand `'gs' -sstdout=%stderr -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 '-sDEVICE=pngalpha' -dTextAlphaBits=4 -dGraphicsAlphaBits=4 '-r300x300' '-sOutputFile=/var/folders/kl/5qf5q4x50xj2rbdp8t2prsbh0000gn/T/magick-645443wbRHI2nYLWV%d' '-f/var/folders/kl/5qf5q4x50xj2rbdp8t2prsbh0000gn/T/magick-64544qCe-gNjUlDXO' '-f/var/folders/kl/5qf5q4x50xj2rbdp8t2prsbh0000gn/T/magick-64544VNalr_sUZm2w'' (1) @ error/pdf.c/InvokePDFDelegate/292
我在谷歌上搜索这个问题,但找不到正确的解决办法。他们大多这样说:
这些解决方案对我不起作用。你有没有遇到过这样的问题?有其他解决办法吗?在
例外。。。在
。。。是由于魔杖认为光栅图像已经加载,即使它没有加载。这个
TypeError
已经在将来的版本中得到了解决,但这是问题的一个症状。真正的解决方案是发现为什么ghostscript无法读取/呈现PDF。在通常PDF是问题所在。可能是格式错误的数据流,或者ghostscript/libtiff无法理解的令人困惑的元标记。不管是什么原因,gs以非零错误状态退出,ImageMagick将作为委派错误拒绝请求。在
验证ImageMagick是否可以按预期呈现文件。在
-debug All
查看所有操作的详细日志。在验证Ghostscript是否可以按预期渲染文件。在
^{pr2}$$?
在gs
命令之后,通过返回0
状态验证ghostscript成功完成。在相关问题 更多 >
编程相关推荐