首页 > 解决方案 > ps2pdf - 无法打开初始设备

问题描述

我使用 LaTeX 和lualatex编译器构建了一个非常大的 PDF(我需要那个因为特定的字体),现在想ps2pdf按照这个指令缩小 PDF(第二多票的答案,因为gs不被识别为命令我电脑上的线工具)。我的命令如下所示:

ps2pdf -dPDFSETTINGS=/ebook -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -q -sOutputFile=output.pdf input.pdf

我收到此错误消息:

MiKTeX GPL Ghostscript 9.25: Device 'pdfwrite' requires an output file but no file was specified.
**** Unable to open the initial device, quitting.

我确定该文件存在,我尝试使用它作为*.ps文件作为输入,给出完整路径,一次有和没有双引号(Windows 系统),但没有任何效果。奇怪的是,只是运行ps2pdf ouput.pdf input.ps工作,但会产生更大的 PDF。我错过了什么?

标签: pdfghostscript

解决方案


无法打开的文件是输出文件,所以如果它存在,那将是一个潜在的问题。如果“其他”打开了输出文件,则无法对其进行写入。

从启动横幅来看,您似乎正在运行非标准版本的 Ghostscript,如果我是您,即使您必须自己构建它,我也会安装并使用标准版本的 Ghostscript。

奇怪的是,'ps2pdf' 只是一个运行 Ghostscript 的脚本,而简单的 'gs' 则不会。我个人不会使用该脚本。尝试找到 Ghostscript 可执行文件并直接运行它。

我也会放弃 -q (安静)开关,至少在尝试解决问题时,抑制消息可能会隐藏一些有用的东西。

哦,我明白了,您实际上是在使用 Windows。好吧,Windows 上的可执行文件不称为“gs”,它称为 gswin,后跟 32 或 64 表示字长,如果是命令行(而不是窗口)版本,则为 c。所以你想要 gswin32、gswin32c、gswin64 或 gswin64c 之一。请注意,Ghostscript 安装程序不会将安装目录添加到 $PATH 环境变量,因此如果您只是打开 Windows 命令 shell 并键入“gswin32c”,它将不会被找到。您需要将 isntall 目录添加到 $PATH 或提供可执行文件的完整路径。

我个人会使用 vanilla Windows 二进制文件,而不是在 MingW 或您使用的任何 Linux shell 下提供的修改版本。也可以想象,如果目录不可用或只读到 shell,这会导致您在写入输出文件时出现问题。


推荐阅读