我不是程序员,但想学习如何使用Ghostscript剪裁PDF。
我已在我的计算机上安装了Ghostscript 9.01。
请按照以下步骤(从调用Ghostscript开始)引导我如何裁剪具有特定坐标的PDF。
我甚至对Ghostscript也不熟悉。
我不是程序员,但想学习如何使用Ghostscript剪裁PDF。
我已在我的计算机上安装了Ghostscript 9.01。
请按照以下步骤(从调用Ghostscript开始)引导我如何裁剪具有特定坐标的PDF。
我甚至对Ghostscript也不熟悉。
首先,需要注意的是PDF的测量单位与PostScript相同:它被称为point[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渲染器考虑。function crop_pdf() {
input=$1
output=$6
pdf_info=$(pdfinfo -box $input)
currentWidth=$(echo "$pdf_info" | grep "Page size:" | awk '{print $3}')
currentHeight=$(echo "$pdf_info" | grep "Page size:" | awk '{print $5}')
left=$2
bottom=$3
right=$(echo "$currentWidth - $4" | bc)
top=$(echo "$currentHeight - $5" | bc)
gs -o $output -sDEVICE=pdfwrite -c "[/CropBox [$left $bottom $right $top] /PAGES pdfmark" -f $input
}
crop_pdf input.pdf left bottom right top output.pdf
例如:
crop_pdf mypdf.pdf 20 30 10 33 mypdf-cropped.pdf
gs -q -dBATCH -dNOPAUSE -sDEVICE=bbox myFile.pdf
%%BoundingBox: 16 14 585 781
%%HiResBoundingBox: 16.991999 14.904000 584.207068 780.500015
gs -o cropped.pdf -sDEVICE=pdfwrite -dDEVICEWIDTHPOINTS=430 -dDEVICEHEIGHTPOINTS=781 -dFIXEDMEDIA -f myFile.pdf
gs --version
10.02.1
gs -sDEVICE=bbox -f uncropped-input.pdf
。 - simonbpdfinfo -box some.pdf
。 - Kurt Pfeiflepdfinfo
,因为它似乎更有用。 - simonb