【发布时间】:2019-01-12 12:10:37
【问题描述】:
我正在尝试编写一些gs 命令供服务器端使用。不能假定我必须使用的用户提供的 PDF/JPEG 文件是安全的(可能会提供损坏的甚至恶意文件)。因此,我尝试使用-dSAFER 编写我所有的 Ghostscript 命令,以保证至少基本级别的安全性。
很遗憾,-dSAFER 似乎与某些gs 命令不兼容。以下面的命令为例:
# count number of pages in PDF
gs -dQUIET -dBATCH -dNOPAUSE -dNOSAFER -dNODISPLAY \
-c "(input.pdf) (r) file runpdfbegin pdfpagecount = quit"
你会如何用-dSAFER 重写这个命令?如果我只添加-dSAFER,命令将失败,因为gs 无法读取文件input.pdf(这是我所期望的)。我如何告诉gs 允许阅读input.pdf,但没有别的?也许有办法只允许从某些目录读取文件?
这是第二个示例命令:
# convert JPEG to single-page PDF
gs -dQUIET -dBATCH -dNOPAUSE -dNOSAFER \
-sDEVICE=pdfwrite -dCompatibilityLevel=1.5 -dPDFSettings=/printer \
-sColorConversionStrategy=Gray -dProcessColorModel=/DeviceGray \
-sOutputFile=output.pdf \
viewjpeg.ps \
-c "(input.jpg) << /PageSize 2 index viewJPEGgetsize 2 array astore >> setpagedevice viewJPEG"
此命令与第一个命令的问题完全相同。我如何用-dSAFER 重写这个?
如果您认为我的命令确实不需要-dSAFER,请在您的回答中包含指向相关文档的链接。
【问题讨论】:
标签: ghostscript