Command line GhostScript使用bbox裁剪Postscript文件
我试图完成的是使用bbox中描述的输出裁剪名为example.ps的PostScript文件。我是在批处理过程中这样做的,在批处理过程中,bbox对于某些文件可能是不同的。我看过pdfcrop,发现它使用了类似的方法。这是我现在用来裁剪的命令Command line GhostScript使用bbox裁剪Postscript文件,command-line,runtime,crop,ghostscript,postscript,Command Line,Runtime,Crop,Ghostscript,Postscript,我试图完成的是使用bbox中描述的输出裁剪名为example.ps的PostScript文件。我是在批处理过程中这样做的,在批处理过程中,bbox对于某些文件可能是不同的。我看过pdfcrop,发现它使用了类似的方法。这是我现在用来裁剪的命令 gs -o cropped.pdf \ -sDEVICE=pdfwrite \ -dDEVICEWIDTHPOINTS=160 \ -dDEVICEHEIGHTPOINTS=840 \ -dFIXEDMEDIA \ -c "0
gs -o cropped.pdf \
-sDEVICE=pdfwrite \
-dDEVICEWIDTHPOINTS=160 \
-dDEVICEHEIGHTPOINTS=840 \
-dFIXEDMEDIA \
-c "0 0 translate 0 0 160 840 rectclip" \
-f example.ps
这个命令的问题是我必须指定要使用的宽度和高度。我想先调用bbox,然后通过代码或使用命令行重定向调用此语句。首先,请注意,并非多页PostScript文件中的每个页面都会显示完全相同的“边界框”值(事实上,这种情况相当罕见)。因此,您可能希望找出所有可能的边界框(其中包括所有边界框)的公分母 其次,当您运行
gs-sDEVICE=bbox
时,您在控制台窗口中看到的是stdin和stdout输出通道的混合。但是,您要查找的信息将被发送到stderr。如果您将命令输出重定向到一个文件,那么您捕获的是stdout,而不是stderr!要抑制进入stderr的某些版本和调试信息,请将-q
添加到命令行
因此,为了获得所有页面边界框的“干净”输出,您必须首先重新定向stderr通道,然后将其捕获到文件info.txt中。因此,运行如下(或类似)命令:
或者,如果您不需要有关HiResBoundingBox
的信息:
gs \
-dBATCH \
-dNOPAUSE \
-q \
-sDEVICE=bbox \
example.ps \
2>&1 \
| grep ^%%Bound \
| tee info.txt
另外,顺便说一句,注意它可以确定PostScript和PDF输入文件的边界框
这将为您提供如下输出,其中每行表示输入文件的一页,从第一行的第1页开始:
%%BoundingBox: 36 18 553 802
%%BoundingBox: 37 18 553 804
%%BoundingBox: 36 18 553 802
%%BoundingBox: 37 668 552 803
%%BoundingBox: 40 68 532 757
最后,您可能需要在下面的答案中阅读Ghostscript的bbox
设备的一些背景信息。您还可以在此处找到用于裁剪作业的其他PostScript代码:
findstr“%%绑定”而不是grep
。您可以使用普通重定向来代替tee
:1>info.txt
。
%%BoundingBox: 36 18 553 802
%%BoundingBox: 37 18 553 804
%%BoundingBox: 36 18 553 802
%%BoundingBox: 37 668 552 803
%%BoundingBox: 40 68 532 757