Github Actions에서 PDF를 이미지로 변환할 때 오류 발생

Error:
Documents::UploadJobTest#test_#perform_creates_an_activity_for_document:
MiniMagick::Error: `convert /tmp/shrine20201009-22018-5itpj9.pdf[0] -auto-orient /tmp/image_processing20201009-22018-1uk39lv.png` failed with error:
convert-im6.q16: not authorized `/tmp/shrine20201009-22018-5itpj9.pdf' @ error/constitute.c/ReadImage/412.
convert-im6.q16: no images defined `/tmp/image_processing20201009-22018-1uk39lv.png' @ error/convert.c/ConvertImageCommand/3258.

    app/uploaders/document_uploader.rb:13:in `block in <class:DocumentUploader>'
    test/jobs/documents/documents_upload_job_test.rb:8:in `block in <class:UploadJobTest>'


내 Ruby on Rails 애플리케이션에서 이 오류는 MiniMagick을 사용하여 PDF를 이미지로 변환할 때 발생합니다.
MiniMagick은 ImageMagick을 사용하여 포스트스크립트 파일과 관련된 모든 것(예: PDF)에 대해 Ghostscript을 사용합니다.

security vulnerability in Ghostscript < 9.24으로 인해 ImageMagick은 Ghostscript를 사용한 변환을 허용하지 않도록 기본 정책을 변경했습니다.
Ghostscript가 취약점을 수정하더라도 ImageMagick 정책은 변경되지 않았습니다.

내 응용 프로그램에서는 PDF가 축소판을 가져오기 위해 처리되는 Shrine이라는 보석을 통해 MiniMagick을 사용합니다. 이에 대한 자세한 내용은 Shrine documentation을 참조하십시오.

Github Actions에서 기본 Linux 이미지는 Ubuntu 18.04 (20.04 in preview) 입니다.
Ubuntu 18.04에는 업데이트된 버전의 Ghostscript가 있어야 하지만 PDF에서 이미지로의 변환을 허용하지 않는 ImageMagick에 대한 정책이 여전히 있습니다.

해결책



내 솔루션은 이것에서 영감을 받았습니다StackOverflow answer.
다음과 같이 Github Action에 추가할 수 있습니다.

# ---
jobs:
  job01:
    runs-on: ubuntu-latest # ubuntu-18.04
    steps:
      - name: Change ImageMagick policy to allow pdf->png conversion.
        run: |
          sudo sed -i 's/^.*policy.*coder.*none.*PDF.*//' /etc/ImageMagick-6/policy.xml
      - <more steps>


맥 OS



Mac OS에서 이 오류가 발생하면 ImageMagick 및 Ghostscript를 다시 설치하는 것이 도움이 될 수 있습니다.

brew uninstall ghostscript imagemagick
brew install ghostscript imagemagick

gs --version # make sure it is > 9.24 (9.53.3 on my machine currently.)
magick --version # make sure the row `Delegates` includes `gslib`

좋은 웹페이지 즐겨찾기