我想裁剪 PS
的主要区域或 PDF
文件以创建 EPS
没有空格的文件。 ghostrcipt
的命令, ps2pdf
, epstools
可以裁剪出文档文件的主图。
问题是它们只以原始形式裁剪,但我想用 BoundingBox 0 0 x y
创建一个 EPS 文件。 ;裁剪并移动到左下角。
当我们想要在 PS 文档中插入生成的 EPS 文件时的区别 i。当有 BoundingBox x0 y0 x y
, PS 文档在 x0 y0 点插入 EPS 文件,而不是我们所在的位置。
示例:
考虑一个简单的 PS
文件为
%!
/Times-Roman findfont
11 scalefont setfont
72 700 moveto
(This is a test)show
如果将其转换为
EPS
用类似的命令ps2eps test.ps test.eps
它会产生
%!PS-Adobe-2.0 EPSF-2.0
%%BoundingBox: 72 700 127 708
%%HiResBoundingBox: 72.000000 700.000000 127.000000 707.500000
%%EndComments
% EPSF created by ps2eps 1.68
%%BeginProlog
save
countdictstack
mark
newpath
/showpage {} def
/setpagedevice {pop} def
%%EndProlog
%%Page 1 1
/Times-Roman findfont
11 scalefont setfont
72 700 moveto
(This is a test)show
%%Trailer
cleartomark
countdictstack
exch sub { end } repeat
restore
%%EOF
它已被裁剪为其原始坐标,结果
BoundingBox
是 72 700 127 708
.现在,如果尝试插入此 EPS
PS
中的文件文档,它试图在这个坐标上嵌套。如果创建
EPS
会很有用文件与 BoundingBox: 0 0 55 8
.当然,所有绘图坐标(此处为 moveto)都必须使用此新引用进行修改。注意:如前所述,我修复 BoundingBox 引用点的目的是使其可在 PS 文档中导入。因此,这个问题的另一个答案是:如何在 PS 文档中插入 EPS 文件而不管其 BoundingBox。
例如,如何在位置
200 200 255 208
插入此 EPS 文件一个PS文档。我尝试使用以下代码插入 EPS,但除非 BoundingBox 从 0 0
开始,否则它将无法工作:200 200 translate
save
/showpage {} bind def
(test.eps)run
restore
最佳答案
要将其转换为您想要的 BoundingBox 样式的 EPS,我将使用 Ghostscript 并让 EPS 进行往返:EPS => PDF => EPS。
诀窍是通过添加 -dEPSCrop
来确保 PDF 使用与 BoundingBox 宽度和高度相同的媒体尺寸。参数。
这两个命令创建您的“没有空格的 EPS”:
第一步:将 EPS 转换为 PDF:
gs \
-o so#12682621.pdf \
-sDEVICE=pdfwrite \
-dEPSCrop \
so#12682621.eps
第二步:将 PDF 转换回 EPS:
gs \
-o so#12682621.roundtripped.eps \
-sDEVICE=epswrite \
so#12682621.pdf
要测试生成的 EPS 的保真度,您可以使用 ImageMagick 的
compare
以红色像素显示差异,作为 PNG 文件: compare \
-density 600 \
12682621.roundtripped.eps \
12682621.eps \
-compose src \
12682621.png
结果是:
![enter image description here](https://i.sstatic.net/yNnRm.png)
您会注意到存在一些像素差异。它们是由
%%HiResBoundingBox
中的 707.500000 值引起的。 ,这会导致稍后出现舍入错误(PNG 不能有“半像素”)。
关于pdf - 如何调整EPS文件的BoundingBox?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12682621/