使用 Ghostscript v7.07 裁剪 PDF
Cropping a PDF with Ghostscript v7.07
我正在尝试裁剪故意输出过大的 PDF,因为输出它的程序不知道其内容的大小。在有问题的 FreeBSD 系统上安装了 Ghostscript v7.07。基于对另一个问题 (Cropping a PDF using Ghostscript 9.01) and adapting it to v7.07 documentation (http://ghostscript.com/doc/7.07/Readme.htm) 的现有答案,我尝试了以下将 -o 替换为 -sOutputFile= 的方法,因为它无法识别 -o。
gs \
-dNOPAUSE \
-dBATCH \
-sDEVICE=pdfwrite \
-c "[/CropBox [0 6785 433 7128]" \
-c " /PAGES pdfmark" \
-sOutputFile=testout.pdf \
testin.pdf \
我也试过了
gs \
-dNOPAUSE \
-dBATCH \
-sDEVICE=pdfwrite \
-dDEVICEWIDTHPOINTS=433 \
-dDEVICEHEIGHTPOINTS=343 \
-dFIXEDMEDIA \
-c "0 6785 translate" \
-c "0 0 433 343 rectclip" \
-sOutputFile=testout.pdf \
testin.pdf \
我的问题是在这两种情况下我都收到以下消息
**** Unable to open the initial device, quitting.
在搜索该错误时,它似乎主要是由于输出文件位置没有写入权限或类似的东西,但情况似乎并非如此,因为我已将我的文件夹更改为 777 . 驱使我来到这里的是,如果我像下面那样删除 postscript 命令行 (-c),它会输出 testout.pdf 文件就好了(但显然没有裁剪或翻译到正确的位置)。
gs \
-dNOPAUSE \
-dBATCH \
-sDEVICE=pdfwrite \
-sOutputFile=testout.pdf \
testin.pdf \
和
gs \
-dNOPAUSE \
-dBATCH \
-sDEVICE=pdfwrite \
-dDEVICEWIDTHPOINTS=433 \
-dDEVICEHEIGHTPOINTS=343 \
-dFIXEDMEDIA \
-sOutputFile=testout.pdf \
testin.pdf \
我认为 7.07 可能根本不支持这些命令,因为我在 -c 中放入什么似乎并不重要,如果 -c 存在,它总是会给出该错误,但它是出现在 7.07 文档 (http://ghostscript.com/doc/7.07/Use.htm#General_switches) 中,它并没有给我一个 -c is unknown 错误,所以我不知所措。我想我要么做错了什么,要么 ghostsciprt 安装或它的依赖项有问题。如果有人能给我任何帮助,我将不胜感激。
好的,首先升级您使用的是 13 年以上的软件版本。
其次,您的命令行不正确,您使用的是 -c 但没有提供匹配的 -f 这意味着 -c 之后的所有内容 包括输入和输出文件名正在被视为 PostScript。
现在更新版本的 Ghostscript 会告诉你它需要一个输出文件名,你那令人难以置信的古老版本只能告诉你设备没有打开(因为没有输出文件名)这就是为什么你收到误导性信息。
不要两次使用 -c,-c 之后的所有内容(直到 -f)都被视为 PostScript,因此您不需要指定它两次。
我希望它能工作,但由于您使用的是太旧的版本,我无法确定:
gs \
-dNOPAUSE \
-dBATCH \
-sDEVICE=pdfwrite \
-dDEVICEWIDTHPOINTS=433 \
-dDEVICEHEIGHTPOINTS=343 \
-dFIXEDMEDIA \
-c "0 6785 translate \
0 0 433 343 rectclip" -f \
-sOutputFile=testout.pdf \
testin.pdf
我正在尝试裁剪故意输出过大的 PDF,因为输出它的程序不知道其内容的大小。在有问题的 FreeBSD 系统上安装了 Ghostscript v7.07。基于对另一个问题 (Cropping a PDF using Ghostscript 9.01) and adapting it to v7.07 documentation (http://ghostscript.com/doc/7.07/Readme.htm) 的现有答案,我尝试了以下将 -o 替换为 -sOutputFile= 的方法,因为它无法识别 -o。
gs \
-dNOPAUSE \
-dBATCH \
-sDEVICE=pdfwrite \
-c "[/CropBox [0 6785 433 7128]" \
-c " /PAGES pdfmark" \
-sOutputFile=testout.pdf \
testin.pdf \
我也试过了
gs \
-dNOPAUSE \
-dBATCH \
-sDEVICE=pdfwrite \
-dDEVICEWIDTHPOINTS=433 \
-dDEVICEHEIGHTPOINTS=343 \
-dFIXEDMEDIA \
-c "0 6785 translate" \
-c "0 0 433 343 rectclip" \
-sOutputFile=testout.pdf \
testin.pdf \
我的问题是在这两种情况下我都收到以下消息
**** Unable to open the initial device, quitting.
在搜索该错误时,它似乎主要是由于输出文件位置没有写入权限或类似的东西,但情况似乎并非如此,因为我已将我的文件夹更改为 777 . 驱使我来到这里的是,如果我像下面那样删除 postscript 命令行 (-c),它会输出 testout.pdf 文件就好了(但显然没有裁剪或翻译到正确的位置)。
gs \
-dNOPAUSE \
-dBATCH \
-sDEVICE=pdfwrite \
-sOutputFile=testout.pdf \
testin.pdf \
和
gs \
-dNOPAUSE \
-dBATCH \
-sDEVICE=pdfwrite \
-dDEVICEWIDTHPOINTS=433 \
-dDEVICEHEIGHTPOINTS=343 \
-dFIXEDMEDIA \
-sOutputFile=testout.pdf \
testin.pdf \
我认为 7.07 可能根本不支持这些命令,因为我在 -c 中放入什么似乎并不重要,如果 -c 存在,它总是会给出该错误,但它是出现在 7.07 文档 (http://ghostscript.com/doc/7.07/Use.htm#General_switches) 中,它并没有给我一个 -c is unknown 错误,所以我不知所措。我想我要么做错了什么,要么 ghostsciprt 安装或它的依赖项有问题。如果有人能给我任何帮助,我将不胜感激。
好的,首先升级您使用的是 13 年以上的软件版本。
其次,您的命令行不正确,您使用的是 -c 但没有提供匹配的 -f 这意味着 -c 之后的所有内容 包括输入和输出文件名正在被视为 PostScript。
现在更新版本的 Ghostscript 会告诉你它需要一个输出文件名,你那令人难以置信的古老版本只能告诉你设备没有打开(因为没有输出文件名)这就是为什么你收到误导性信息。
不要两次使用 -c,-c 之后的所有内容(直到 -f)都被视为 PostScript,因此您不需要指定它两次。
我希望它能工作,但由于您使用的是太旧的版本,我无法确定:
gs \
-dNOPAUSE \
-dBATCH \
-sDEVICE=pdfwrite \
-dDEVICEWIDTHPOINTS=433 \
-dDEVICEHEIGHTPOINTS=343 \
-dFIXEDMEDIA \
-c "0 6785 translate \
0 0 433 343 rectclip" -f \
-sOutputFile=testout.pdf \
testin.pdf