ボードゲームのルールやスコアシート参照のため、PDFを用いる機会は多いもの。

そこで、redmineに導入してみました。

導入

aptitude install build-essential libmagic-dev ghostscript
# これが入っていないとインストールできませんでした
cd /var/lib/redmine/plugins
#redmineが導入されているディレクトリ
git clone https://github.com/nanego/redmine_preview_pdf.git redmine_preview_pdf
chown -R www-data:www-data redmine_preview_pdf
bundle install
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
systemctl restart apache2

導入後のテスト

redmineにログインし、任意のテキスト編集画面(markdown)で以下の様に入力しました。

attachement:hoge.pdf

うまく表示されず。

apacheのエラーログに以下を発見。

App 385988 stderr: convert-im6.q16: attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/408.

このエラーを頼りに検索すると以下の記事を発見。

http://sstto.blog.shinobi.jp/%E7%94%BB%E5%83%8F%E5%87%A6%E7%90%86/imagemagick%E3%81%A7pdf%E5%A4%89%E6%8F%9B%E5%A4%B1%E6%95%97%E3%81%A8%E5%AF%BE%E5%BF%9C

ImageMagicの脆弱性対応のため、初期状態では無効化されているとか。

なので、この通りに対応します。

cd /etc/Image-Magic6
cp -pi policy.xml policy.xml.org

差分

以下の差分の通り編集。

   <policy domain="path" rights="none" pattern="@*"/>
   <!-- disable ghostscript format types -->
-  <policy domain="coder" rights="none" pattern="PS" />
+  <policy domain="coder" rights="read|write" pattern="PS" />
   <policy domain="coder" rights="none" pattern="PS2" />
   <policy domain="coder" rights="none" pattern="PS3" />
-  <policy domain="coder" rights="none" pattern="EPS" />
-  <policy domain="coder" rights="none" pattern="PDF" />
-  <policy domain="coder" rights="none" pattern="XPS" />
+  <policy domain="coder" rights="read|write" pattern="EPS" />
+  <policy domain="coder" rights="read|write" pattern="PDF" />
+  <policy domain="coder" rights="read|write" pattern="XPS" />

編集後

うまく表示されました。

この手のプラグインで機能を次々に改良できるのもredmineならではです。