pdf - 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。我错过了什么?
解决方案
无法打开的文件是输出文件,所以如果它存在,那将是一个潜在的问题。如果“其他”打开了输出文件,则无法对其进行写入。
从启动横幅来看,您似乎正在运行非标准版本的 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,这会导致您在写入输出文件时出现问题。
推荐阅读
- react-native - 如何调用组件的方法
- ios - 提供商不提供语音邮件时的 iOS 语音邮件应用程序/代码
- ruby-on-rails - 是否可以在不使用 gem 的情况下在 rails 中渲染/生成 pdf?
- sql-server - SQL Server 分组将 null 视为等于所有值
- visual-studio - 在 for 循环中使用 Instantiate 时 Unity 崩溃
- bash - 使用管道查找 xargs grep 不适用于 MacO
- r - 使用R匹配后提取不同的字符串
- groovy - 如何通过 Jmeter 中的后处理器在日志中打印会话 ID
- node.js - 显示来自 ngFor 的详细帖子
- php - 使标题顶部中心的文本不向左的最佳方法是什么