【问题标题】:Read pdf file with php-imagick on Travis在 Travis 上使用 php-imagick 读取 pdf 文件
【发布时间】:2019-07-26 08:48:33
【问题描述】:

我需要阅读 Travis 上带有 php-imagick 扩展名的 pdf 文件。

我了解到我需要调整 imagick policy.xml 文件以允许 imagick 读取 pdf 文件。 所以我添加了一个自定义 policy.xml。

env:
  global:
     - MAGICK_CONFIGURE_PATH=$HOME/.config/ImageMagick/
...
before_script:
    # Allow imagemagick to read PDF files
    - echo $MAGICK_CONFIGURE_PATH
    - mkdir $MAGICK_CONFIGURE_PATH
    - echo '<policymap>' > $MAGICK_CONFIGURE_PATH/policy.xml
    - echo '<policy domain="coder" rights="read" pattern="PDF" />' >> $MAGICK_CONFIGURE_PATH/policy.xml
    - echo '</policymap>' >> $MAGICK_CONFIGURE_PATH/policy.xml
    - sudo rm /etc/ImageMagick-6/policy.xml

但构建仍然失败,[Failed to read the file]

该文件在那里,在本地可以正常工作,我怀疑 imagick 仍然无法阅读 PDF。 新政策似乎也适用:

$convert -list policy

Path: /home/travis/.config/ImageMagick/policy.xml
  Policy: Coder
    rights: Read 
    pattern: PDF
  Policy: Coder
    rights: Read 
    pattern: PDF
Path: [built-in]
  Policy: Undefined
    rights: None 

我该如何解决这个问题?

失败的构建是:https://travis-ci.org/ivoba/silverstripe-simple-pdf-preview/jobs/563919021

【问题讨论】:

  • 使用 Imagick PHP 使用与 shell 不同的环境变量发送。因此,编辑 delegates.xml 文件并将 gs 的完整路径放在使用它的委托行中。 GS 是 Ghostscript。还要确保您已安装 Ghostscript 以供 ImageMagick 使用。
  • 是的,同时我还发现 ghostscript 不见了:- sudo apt-get install -y ghostscript 使它工作。随时提出答案。

标签: php travis-ci imagick


【解决方案1】:

过了一会儿,我只是回答我自己的问题:

问题是 imagemagick 需要 ghostscript 来处理 pdf,并且 ghostscript 需要安装在 Debian 中。

所以除了编辑 policy.xml 文件之外,将安装命令添加到 .travis.yml 就可以了。

sudo apt-get install -y ghostscript

完整的工作 travis 文件是:https://github.com/ivoba/silverstripe-simple-pdf-preview/blob/master/.travis.yml

【讨论】:

    【解决方案2】:

    您是否在标准 Debian 环境中尝试过。在我的情况下,Imagick 无需进一步处理即可处理 PDF - 请确保源 PDF 处于非 Adob​​e 限制版本,例如PDF1.4。否则它可能不起作用:

    $im = new \Imagick();
    $im->setResolution(300, 300);
    $im->readImage($path_of_pdf_file);
    $im->writeImages($folder_to_place_each_page . '/' . $name, false)
    

    【讨论】:

    • 本地在基于 debian:buster-slim 的 Docker 镜像 php7.1-cli 上运行。所以我猜这是一个 travis 问题?
    • 抱歉 - 我对 Travis 没有经验 - 只是我的猜测,这确实是 Travis 问题
    猜你喜欢
    • 2017-03-16
    • 1970-01-01
    • 1970-01-01
    • 2015-07-11
    • 1970-01-01
    • 2010-11-03
    • 2011-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多