【问题标题】:Wand can't open existing file魔杖无法打开现有文件
【发布时间】:2023-03-10 23:14:01
【问题描述】:

我想打开一个pdf 文件并只获取第一页并将其另存为图像。 我用过this solution,效果很好。它仍然可以在我的本地环境中使用,但最近无法在 Travis 中使用。

是的,这段代码来自我的unittest,我正在尝试在 Travis 中运行它。 我有一个测试pdf 文件,我想打开它:

import os
from wand.image import Image

root_path = 'some/correct/path'
filename = 'two_page_pdf.pdf'
full_path = os.path.join(root_parg, filename)
Image(file=open(full_path, mode='rb'), resolution=300) # Error!!!

-----------------------------------------------
DelegateError                             
Traceback (most recent call last)
<ipython-input-2-1b1fd9537a14> in <module>()
----> 1 Image(file=open(full_path, mode='rb'), resolution=300)

~/virtualenv/python3.5.3/lib/python3.5/site-packages/wand/image.py in __init__(self, image, blob, file, filename, format, width, height, depth, background, resolution)
   2738                                                   b'buffer.' + format)
   2739                 if file is not None:
-> 2740                     self.read(file=file, resolution=resolution)
   2741                 elif blob is not None:
   2742                     self.read(blob=blob, resolution=resolution)

~/virtualenv/python3.5.3/lib/python3.5/site-packages/wand/image.py in read(self, file, filename, blob, resolution)
   2820             r = library.MagickReadImage(self.wand, filename)
   2821         if not r:
-> 2822             self.raise_exception()
   2823 
   2824     def close(self):

~/virtualenv/python3.5.3/lib/python3.5/site-packages/wand/resource.py in raise_exception(self, stacklevel)
    220             warnings.warn(e, stacklevel=stacklevel + 1)
    221         elif isinstance(e, Exception):
--> 222             raise e
    223 
    224     def __enter__(self):

DelegateError: Postscript delegate failed `/tmp/magick-5ypXvY6l': No such file or directory @ error/pdf.c/ReadPDFImage/677

检查文件:

os.path.isfile(full_path) == True 
len(open(full_path, mode='rb').read()) == 18386

环境:

  • python 3.5.3
  • 魔杖 0.4.4

怎么了?我被困住了。请帮忙

UPD 1:

Imagemagick 包似乎参与其中!上次测试通过8:6.6.9.7-5ubuntu3.9版本,更新到8:6.7.7.10-6ubuntu3.9后停止工作

UPD 2:

.travis.yml 文件。

language: python
sudo: false
cache: pip
python: "3.5"
services:
  - rabbitmq
addons:
  apt:
    packages:
    - imagemagick
    - python-enchant

【问题讨论】:

  • 你能发布你的 travis 脚本吗?我不相信默认的 vm 会包含 PDF 委托,所以你需要 apt-get 几个包。
  • @emcconville 已发布!
  • 尝试将ghostscript 添加到addons &gt; apt &gt; packages
  • @emcconville 酷!现在可以了!谢谢!
  • @emcconville 这个也让我明白了 - ghostscript 不见了 - 有什么方法可以让警告更明确吗? :\ :)

标签: python imagemagick travis-ci wand


【解决方案1】:

此错误的原因是缺少 PDF 委托 (ghostscript)。我刚刚将此应用添加到addons &gt; apt &gt; packagestravis.yml 部分

【讨论】:

    猜你喜欢
    • 2019-07-31
    • 2015-08-22
    • 1970-01-01
    • 2017-12-24
    • 2015-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多