使用Ghostscript v7.07裁剪PDF

时间:2016-02-10 04:44:59

标签: freebsd ghostscript

我尝试裁剪有意输出超出尺寸的PDF,因为输出它的程序并不知道它的大小。在有问题的FreeBSD系统上安装了Ghostscript v7.07。基于另一个问题的现有答案(Cropping a PDF using Ghostscript 9.01)并将其调整为v7.07文档(http://ghostscript.com/doc/7.07/Readme.htm)我已尝试使用-sOutputFile =将-o替换为-o,因为它可以实现&# 39;识别-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.

当搜索该错误时,它似乎主要是由于输出文件位置没有写权限或类似的东西,但看起来并非如此,因为我已经chmod我的文件夹在这里驱动我的是,如果我删除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是未知的错误,所以我不知所措。我想我做错了什么,或者ghostsciprt安装有什么问题或它的依赖性。任何人都可以给予我任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

首先关闭升级,您使用的是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