Ghostscript将.jpeg转换为.pdf



下面是我试图将.jpeg转换为.pdf 的命令

gswin64c.exe-sDEVICE=pdfwrite-dBATCH-dAutoRotatePages=/PageByPage-dNOPAUSE-sOutputFile=E:\temp\testPDF1.pdf"C: \Program Files\gs\gs9.10\lib\viewjpeg.ps&quot-c(E:/temp/test3.jpeg(视图jpeg

我得到了以下错误。

错误:/在
操作数堆栈:中未定义

执行堆栈:%interp_exit.runexec2-nostraingval--nostraingval--nostrangval-

  • 2%stopped_push--鼻孔----鼻孔--鼻孔--false 1%stopped_push。runexec2--nostringval----nostRingwal--2%停止推送--鼻孔--字典堆栈:--dict:1180/1684(ro((G(--dict:0/20(G(--dict:80/200(L(--当前分配模式为本地上一个操作系统错误:没有这样的文件或目录GPL Ghostscript 9.10:不可恢复的错误,退出代码1

请指导我完成这项工作。

viewjpeg.ps程序访问磁盘上的JPEG文件并尝试打开它。

由于存在安全漏洞,Ghostscript的最新版本现在以-dSAFER作为默认值运行,这将禁用PostScript解释器打开/读取/写入/删除磁盘上文件的能力。我本以为会出现无效访问错误,但我有理由相信这将是问题的根源。

您可以使用-dNOSAFER(NOT推荐(,也可以指定允许使用--permit-file_read=E:/temp访问文件(用于读取(。

这一切都记录在-dSAFER下。由于您使用的是Windows,请注意,即使在Windows上,--permit开关的路径匹配也是区分大小写的。

下面的命令对我有效。

gswin64c.exe-sDEVICE=pdfwrite-dBATCH-dAutoRotatePage=/PageByPage-dNOPAUSE-dNOSAFER-sOutputFile=E:\temp\testPDF4.pdf"C: \Program Files\gs\gs9.10\lib\viewjpeg.ps&quot-c";(E:/temp/test3.jpg(<lt/PageSize 2索引视图JPEGgetsize 2数组astore>gt;设置页面设备视图JPEG";

您可能会将其设置为批处理文件(这是在windows上(,但您需要在viewJPEG命令的输入文件路径上使用双反斜杠,否则会出现与上面相同的错误。它还需要@KenS提到的-dNOSAFER(或实现--permission-read(。

我使用以下批处理脚本来转换脚本所在目录中的所有jpg。您可能可以使用它,并在需要的地方添加页面旋转开关。

rem Convert JPG to a PDF
@echo off
chcp 65001
setlocal enabledelayedexpansion
set path=C:Program Filesgsgs10.01.1lib;C:Program Filesgsgs10.01.1bin;%path%
FOR %%A IN ((*.jpg;*.jpeg) DO (
set outfile="%%~dpnA.pdf"
set "infile=%%~dpnxA"
set "infile=!infile:=\!"
echo !outfile!
echo !infile!
gswin64c.exe -q -dNOPAUSE -dNOSAFER -dBATCH -sDEVICE=pdfwrite -sOutputFile=!outfile! viewjpeg.ps -c "(!infile!) viewJPEG showpage"
)

set "infile=!infile:=\!"行使反斜杠加倍。

对于一个文件,我希望这个命令能帮助你:

C:docscarappsgsbingswin64c -q -sPAPERSIZE=a4 -dNOPAUSE DNOSAFER -dBATCH -sDEVICE=pdfwrite -sOutputFile=foo.pdf "appsgslibviewjpeg.ps" -c "(asseg00.jpg) viewJPEG"

最新更新