试了下R将pdf矢量图转换为png位图,不如linux下convert方便好用。
安装
sudo apt install imagemagick -y
版本
$ convert -version
Version: ImageMagick 6.9.11-60 Q16 x86_64 2021-01-25 https://imagemagick.org
Copyright: (C) 1999-2021 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC Modules OpenMP(4.5)
Delegates (built-in): bzlib djvu fftw fontconfig freetype heic jbig jng jp2 jpeg lcms lqr ltdl lzma openexr pangocairo png tiff webp wmf x xml zlib
报错
$ convert ./test.pdf ./test.png
convert-im6.q16: attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/421.
convert-im6.q16: no images defined `./test.png' @ error/convert.c/ConvertImageCommand/3229.
解决报错
- 必须进入root账户才能修改,
:wq!
命令未能成功保存
# 必须进入root账户
sudo su
vim /etc/ImageMagick-6/policy.xml
在配置文件最后几行找到
<policy domain="delegate" rights="none" pattern="URL" />
<policy domain="delegate" rights="none" pattern="HTTPS" />
<policy domain="delegate" rights="none" pattern="HTTP" />
<!-- in order to avoid to get image with password text -->
<policy domain="path" rights="none" pattern="@*"/>
<!-- disable ghostscript format types -->
<policy domain="coder" rights="none" 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="none" pattern="PDF" />
即修改为
-
xml格式单行注释格式是,即
<!-- 内容 -->
。 -
为了省事儿,大家可以把上面几行都注释掉
<!-- <policy domain="coder" rights="none" pattern="PDF" /> -->
再次运行
convert -density 300 test.pdf test.png