使用Ghostscript 9.01裁剪PDF

时间:2011-05-31 05:46:09

标签: pdf crop ghostscript

我不是程序员,但想学习如何使用Ghostscript裁剪PDF。

我在我的机器上安装了Ghostscript 9.01。

请指导我一步一步(从调用Ghostscript开始)以裁剪具有特定坐标的PDF。

我甚至是Ghostscript的新手。

1 个答案:

答案 0 :(得分:62)

首先,请注意PDF的测量单位与PostScript相同:它称为 [pt]。

72 points == 1 inch == 25.4 millimeters

假设您的网页尺寸为A4。然后媒体维度是:

595 points width  == 210 millimeters
842 points height == 297 millimeters

假设您要裁剪:

   left edge: 24 points == 1/3 inch ~=  8.5 millimeters
  right edge: 36 points == 1/2 inch ~= 12.7 millimeters
    top edge: 48 points == 2/3 inch ~= 17.0 millimeters
 bottom edge: 72 points ==   1 inch ~= 25.4 millimeters

然后你的Ghostscript命令行就是这个(在Windows上):

gswin32c.exe                     ^
  -o cropped.pdf                 ^
  -sDEVICE=pdfwrite              ^
  -c "[/CropBox [24 72 559 794]" ^
  -c " /PAGES pdfmark"           ^
  -f uncropped-input.pdf

或者在Linux上:

gs                               \
  -o cropped.pdf                 \
  -sDEVICE=pdfwrite              \
  -c "[/CropBox [24 72 559 794]" \
  -c " /PAGES pdfmark"           \
  -f uncropped-input.pdf

但是,对于所有类型的PDF [1] ,这可能无法可靠地运行。在这些情况下,你应该尝试这些命令:

gswin32c.exe                 ^
  -o cropped.pdf             ^
  -sDEVICE=pdfwrite          ^
  -dDEVICEWIDTHPOINTS=595    ^
  -dDEVICEHEIGHTPOINTS=842   ^
  -dFIXEDMEDIA               ^
  -c "24 72 translate"       ^
  -c " 0 0 535 722 rectclip" ^
  -f uncropped-input.pdf

gs                           \
  -o cropped.pdf             \
  -sDEVICE=pdfwrite          \
  -dDEVICEWIDTHPOINTS=595    \
  -dDEVICEHEIGHTPOINTS=842   \
  -dFIXEDMEDIA               \
  -c "24 72 translate"       \
  -c " 0 0 535 722 rectclip" \
  -f uncropped-input.pdf

[^] 更具体一点:它不适用于已经定义为特定的/CropBox的PDF值。一个肮脏的黑客是在运行上述GS命令之前,使用文本编辑器更改所需页面/CropBox(或类似的大小写更改)的字符串/cROPBoX。大小写更改有效地“撤消”裁剪框设置(不更改任何PDF对象偏移使现有xref表无效),因此PDF渲染器不再考虑它。

相关问题