在 Travis 上使用 php-imagick 阅读 pdf 文件
Read pdf file with php-imagick on Travis
我需要在 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
您是否在标准 Debian 环境中尝试过。在我的例子中,Imagick 能够处理 PDF 而无需进一步操作 - 请确保源 PDF 是非 Adobe 限制版本,例如PDF1.4。否则它可能无法工作:
$im = new \Imagick();
$im->setResolution(300, 300);
$im->readImage($path_of_pdf_file);
$im->writeImages($folder_to_place_each_page . '/' . $name, false)
过了一会儿我才回答我自己的问题:
问题是 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
我需要在 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
您是否在标准 Debian 环境中尝试过。在我的例子中,Imagick 能够处理 PDF 而无需进一步操作 - 请确保源 PDF 是非 Adobe 限制版本,例如PDF1.4。否则它可能无法工作:
$im = new \Imagick();
$im->setResolution(300, 300);
$im->readImage($path_of_pdf_file);
$im->writeImages($folder_to_place_each_page . '/' . $name, false)
过了一会儿我才回答我自己的问题:
问题是 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