gpt4 book ai didi

command-line - GhostScript 使用 bbox 裁剪 Postscript 文件

转载 作者:行者123 更新时间:2023-12-05 03:15:41 24 4
gpt4 key购买 nike

我想要完成的是使用 bbox 中描述的输出裁剪名为 example.ps 的 PostScript 文件。我在批处理过程中执行此操作,其中某些文件的 bbox 可能不同。我查看了 pdfcrop 并发现它使用了类似的方法。这是我现在用来裁剪的命令。

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 时,您在控制台窗口中看到的是 stdinstdout 输出 channel 的混合.但是,您要获取的信息将发送至 stderr。如果您将命令输出重定向到一个文件,您捕获的是 stdout,而不是 stderr!要抑制某些版本和调试信息进入 stderr,请将 -q 添加到命令行。

因此,为了获得所有页面边界框的“干净*”输出,您必须首先重新定向 stderr channel ,然后将其捕获到文件 info.h 中。 txt.所以运行这样的命令(或类似的):

gs              \
-dBATCH \
-dNOPAUSE \
-q \
-sDEVICE=bbox \
example.ps \
2>&1 \
| tee 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 代码:

关于command-line - GhostScript 使用 bbox 裁剪 Postscript 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13995097/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com