PDF到EPS或PS到EPS转换保持页面大小

PDF到EPS或PS到EPS转换保持页面大小,pdf,ghostscript,vector-graphics,postscript,eps,Pdf,Ghostscript,Vector Graphics,Postscript,Eps,我需要将PDF或Postscript文件转换为EPS,我尝试使用Ghostscript和以下命令将Postscript转换为EPS: gswin32.exe -o output.eps -sDEVICE=eps2write -dFitPage input.ps 或PDF至EPS: gswin32c.exe -q -dNOCACHE -dNOPAUSE -dBATCH -dSAFER -sDEVICE=eps2write -o output.eps -dFitPage input.pdf 它们

我需要将PDF或Postscript文件转换为EPS,我尝试使用Ghostscript和以下命令将Postscript转换为EPS:

gswin32.exe -o output.eps -sDEVICE=eps2write -dFitPage input.ps
或PDF至EPS:

gswin32c.exe -q -dNOCACHE -dNOPAUSE -dBATCH -dSAFER -sDEVICE=eps2write -o output.eps -dFitPage input.pdf
它们都已成功完成,但未保持页面大小。输入的PDF或PS文件是相同的图形,它们的页面大小均为300x300pts。您可以下载这些文件并下载。它们看起来像这样:

但在将它们转换为每股收益后,结果就是这些。它们看起来是这样的,第一个是从PS到EPS的结果,第二个是从PDF到EPS的结果(它们是使用EPS查看器打开的,该查看器将图像光栅化,这是图像质量低的原因):


正如您所见,它们都没有原来的300x300分大小,我尝试了许多Ghostscript选项,但我无法获得具有正确边界框的EPS。我只需要将PDF或PS转换为EPS,任何更简单或效果更好的都可以。

您所要求的或多或少与通常所要求的完全相反

一般来说,人们希望EPS边界框与EPS所做的实际标记尽可能紧密,因为EPS文件的正常用途是将其“嵌入”到另一个文档中。如果您想要额外的空白,通常会在嵌入EPS时将其添加到EPS周围

事实上,EPS规范规定边界框注释不应包含空格。EPSF规范第8页:

对于EPS文件,边界框是包围EPS文件单页上绘制的所有标记的最小矩形

处理Ghostscript开关对您没有任何帮助,设备会显式记录输入所做的标记,并根据这些标记设置BoundationBox

也许,如果您要解释为什么希望EPS文件具有不正确的边界框注释,您可以提出一些建议,但是Ghostscript正在做它应该做的事情

[增编]

(见下面的评论,这是回复)

我怀疑你需要以某种方式改变你的流程。一种解决方案是让PDF从用白色填充整个页面开始。与许多人的期望相反,在页面上做一个标记,这样整个页面就会被视为边界框

只要您使用的是Ghostscript eps2write设备,您也可以为%%BeginPageSetup解析文档,eps2write设备仍会在本节中写入原始文档大小,例如:

%!PS-Adobe-3.0 EPSF-3.0
%%Invocation: path/gswin32c -dDisplayFormat=198788 -dDisplayResolution=96 -sDEVICE=eps2write -sOutputFile=? ?
%%BoundingBox: 101 132 191 256
%%HiResBoundingBox: 101.80 132.80 190.30 255.20
%%Creator: GPL Ghostscript GIT PRERELEASE 951 (eps2write)
....
....
%%EndProlog
%%Page: 1 1
%%BeginPageSetup
4 0 obj
<</Type/Page/MediaBox [0 0 300 300]
/Parent 3 0 R
/Resources<</ProcSet[/PDF]
>>
/Contents 5 0 R
>>
endobj
%%EndPageSetup
%!PS-Adobe-3.0 EPSF-3.0
%%调用:path/gswin32c-dDisplayFormat=198788-dDisplayResolution=96-sDEVICE=eps2write-sOutputFile=?
%%边界框:101 132 191 256
%%雇佣边界框:101.80 132.80 190.30 255.20
%%创建者:GPL Ghostscript GIT预发行版951(eps2write)
....
....
%%EndProlog
%%页码:1
%%开始页面设置
40 obj
endobj
%%尾页设置
您可以在这里看到,原始媒体大小为300x300,即使边界框正确反映了页面上的标记。注意!这是当前版本的eps2write生成的EPS文件的特点,它不适用于其他来源的EPS文件,将来可能也不适用于eps2write

除此之外,您还需要从输入中查找媒体大小,并将其分别传递给执行插入的程序,大概是通过将数据放在其他文本文件中随EPS一起。当然,也可以手动或编程编辑边界框的urx、ury坐标


恐怕Ghostscript不会为您这样做。

这是有道理的,谢谢您的澄清。我需要它具有与PDF相同的尺寸,因为我正在以编程方式将此EPS文件定位并缩放为另一个EPS以及相对于PDF大小的X/Y坐标和比例,因此,更改大小会影响定位和缩放Hank you@KenS这非常有用,我想我将以编程方式编辑边界框坐标,谢谢!