微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

后记剪切路径未应用

如何解决后记剪切路径未应用

我正在尝试在EPS边界框周围应用剪切路径,以便有效地剪切其内容。 EPS名为out-pdf.eps(之所以这样命名,是因为它来自PDF到EPS的转换),您可以下载here(约54MB)。 EPS是PDF转换为EPS的结果,并对其BoundingBox进行了修改,因为它需要具有特定的大小。

当我在使用BoundingBox渲染EPS大小的简单EPS Viewer上打开此EPS时,显示如下:

enter image description here

大小为1740x842pts,这正是我想要的,但是,当我在Adobe Illustrator或Inkscape上打开它时,BoundingBox被忽略了,我看到了整个EPS:

enter image description here

因此,我尝试在BoundingBox周围应用剪切路径,以便像这样裁剪EPS:

gswin32c.exe -q -dnopAUSE -dBATCH -dSAFER -sDEVICE=eps2write -dDEVICEWIDTHPOINTS="1740" -dDEVICEHEIGHTPOINTS="842" -o "clip.eps" -c "0 0 1740 842 rectclip" -f "out-pdf.eps"

但这不起作用(result),EPS看起来完全一样!但是,如果我仅使用较小的rectclip进行测试,则可以使用:

gswin32c.exe -q -dnopAUSE -dBATCH -dSAFER -sDEVICE=eps2write -dDEVICEWIDTHPOINTS="1740" -dDEVICEHEIGHTPOINTS="842" -o "clip.eps" -c "0 0 1000 400 rectclip" -f "out-pdf.eps"

为什么rectclip在第一种情况下不起作用?我一定错过了一些微不足道的东西,但是我已经苦苦挣扎了两天,我找不到解决办法!

解决方法

这与设备(eps2write)的工作方式有关。而且,尽管您没有这么说,但也已使用eps2write设备将PDF转换为EPS。顺便说一句,您应该升级,因为9.21年3岁了。

请注意,EPS文件不过是一张大图像,我认为原始的PDF文件包含透明性,导致整个页面以720 dpi的分辨率渲染为位图。

在处理提供的EPS文件时,最初会将剪辑设置为媒体的大小;如果您的文件(使用-dEPSCropt)将为1740x842。

然后您使用rectclip将剪辑设置为相同路径。

当写出内容时,设备会忽略初始剪辑,因此它最终不会向输出发出伪剪辑。由于您的剪辑与初始剪辑完全相同,因此设备无法将其检测为不同,因此将其忽略。

在第二种情况下,剪辑与初始剪辑不同,因此设备实际上将剪辑路径写入EPS输出文件。

因此rectclip要做的就是添加一个剪切路径,以剪切掉图像的一部分。不会使文件变小。

您还没有说过如何从PDF创建EPS文件,但是可能可以在那个点添加rectclip,从而生成所需大小的EPS并包含剪辑你要。否则,您可以使rectclip与EPS BoundingBox稍有不同,最终将被应用。

或者您也可以接受以下事实:您在Illustrator和Inkscape中看到的实际上是文件中的内容。尽管BoundingBox注释告诉导入的应用程序文件的放置方式,但毕竟只是注释。

哦,最后您可以将原始PDF文件渲染为图像,以所需的方式裁剪,然后使用ImageMagick或您选择的图像处理包,将其转换为EPS。

编辑

好的,我认为,您可以解决此问题。因为您生成的是EPS文件,而不是完整的PostScript程序,所以您实际上并不关心介质的大小。 eps2write设备会计算BoundingBox,它根本不使用实际的介质大小。

因此,您可以做的是将媒体尺寸设置为大于BoundingBox,然后实际上应用您想要的剪辑。生成的EPS文件将仍然具有正确的BoundingBox注释,并将包含所需的剪辑。它还将具有MediaBox,但是因为这是一个EPS文件,将永远不会实际使用。

我使用了以下命令行:

gswin64c -sDEVICE=eps2write -dDEVICEWIDTHPOINTS="2000" -dDEVICEHEIGHTPOINTS="842" -o "clip.eps" -c "0 0 1740 842 rectclip" -f "out-pdf.eps"

生成一个新的EPS文件(clip.eps),其中包含所需的剪辑。请注意,-o开关包括-dBATCH-dNOPAUSE,因此如果使用-o,则不需要这两个开关。如果您使用的是最新版本的Ghostscript,则也不需要-dSAFER,因为这是默认设置。

我也尝试过:

gswin64c -sDEVICE=eps2write -dDEVICEWIDTHPOINTS="1740" -dDEVICEHEIGHTPOINTS="842" -o "clip.eps" -c "0 0 1740 841.9 rectclip" -f "out-pdf.eps"

并创建了一个包含剪辑的EPS文件,因此似乎与初始剪辑之间的微小偏差都会导致将其写入输出,如我所想。但是941.91却没有,所以看起来像是0.1分左右是模糊性。

我当然使用的是当前版本(9.53.0)的Ghostscript,早期版本的行为可能有所不同。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。