Ghostscript:“不可恢复的错误:setpagedevice 中的未定义文件名”
Posted
技术标签:
【中文标题】Ghostscript:“不可恢复的错误:setpagedevice 中的未定义文件名”【英文标题】:Ghostscript: "Unrecoverable error: undefinedfilename in setpagedevice" 【发布时间】:2014-12-13 00:48:31 【问题描述】:我正在尝试使用这样的 ghostscript 压缩 pdf 文件:
gs -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -dCompatibilityLevel=1.4 -dNOPAUSE -dBATCH -sOutputfile=output.pdf input.pdf
我过去成功地做到了这一点,但由于某种原因,现在它不起作用了。我收到以下错误:
GPL Ghostscript 9.15 (2014-09-22)
Copyright (C) 2014 Artifex Software, Inc. All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
**** Unable to open the initial device, quitting.
Unrecoverable error: undefinedfilename in setpagedevice
Operand stack:
true --nostringval-- --nostringval-- --nostringval-- --nostringval-- --nostringval-- --nostringval-- --nostringval-- --nostringval--
[编辑:我修正了从 -SOutputFile 到 -sOutputFile 的错字以避免这种红鲱鱼。 (但这就是一些 cmets/answers 所指的。)]
【问题讨论】:
-SOutputFile 不正确,应该是-sOutputFile。因为你没有指定一个输出文件,你得到一个未定义的文件名。不足为奇 :-) 我强烈建议您不要使用 -dPDFSETTINGS,而是单独设置所需的开关。 抱歉打错了。不幸的是,即使使用正确的语法(-sOutputFile),我仍然得到完全相同的错误。 【参考方案1】:这对我有用...
gs \
-sDEVICE=pdfwrite \
-dCompatibilityLevel=1.4 \
-dPDFSETTINGS=/printer \
-dNOPAUSE \
-dQUIET \
-dBATCH \
-sOutputFile=output.pdf \
input.pdf
由-kp-编辑
明确说明(并重申 KenS 在他的评论中所写的内容):
-SOutputFile=...
不起作用
-sOutputFile=...
是正确的语法。 (Ghostscript 命令行参数区分大小写!)
此外,对于最新版本的 Ghostscript,您现在可以使用 -o output.pdf
而不是长版本。 -o ...
也自动且隐含地设置 -dBATCH -dNOPAUSE
参数。所以写这个命令的最短方法是:
gs \
-sDEVICE=pdfwrite \
-dCompatibilityLevel=1.4 \
-dPDFSETTINGS=/printer \
-q \
-o output.pdf \
input.pdf
【讨论】:
抱歉打错了。不幸的是,即使使用正确的语法(-sOutputFile),我仍然得到完全相同的错误。 不,OutputFile 继续运行良好。尝试删除 PDFSETTINGS 和 CompatibilityLevel。简而言之,试着缩小问题的范围,直到你发现是什么引起了错误。听起来您由于使用电子书而遇到错误。如果是这样,请将配置设置为与预定义的设置相同,然后将它们一一删除,直到您看到问题为止。 @KenS 我已经尝试删除其他各种位,但只要我有-sOutputFile=output.pdf
,就没有任何效果。只要我切换到-o output.pdf
,它就可以工作了。
@KenS - 来自发行版。有时间我得再玩一下,看看-sOutputFile
有什么问题。
我不得不说,发行版似乎以某种方式破坏了 Ghostscript(几个发行版在打包时对 Ghostscript 进行了更改)。您最好的选择可能是下载源代码并自己构建。您也可以将问题作为错误报告给相关的发行版。我要告诉你的是(从源代码构建)-sOutputFile 在 Linux 上对我来说效果很好。【参考方案2】:
可能是您只是混淆了输入和输出文件名。我以前做过,得到了同样的信息。这很容易做到,因为输出文件命令在输入文件之前。
【讨论】:
以上是关于Ghostscript:“不可恢复的错误:setpagedevice 中的未定义文件名”的主要内容,如果未能解决你的问题,请参考以下文章
python ghostscript:RuntimeError:找不到Ghostscript库(libgs)
PS转PDF。 GhostScript 异常 - 无法初始化 Ghostscript 解释器。错误代码是-100
如何使用 Ghostscript 和 Ghostscript .NET 通过嵌入 IIC 配置文件生成正确的 PDF/A