簡體   English   中英

在Travis上用php-imagick閱讀pdf文件

[英]Read pdf file with php-imagick on Travis

我需要在php-imagick擴展上閱讀Travis上的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM