如何在使用Ghostscript将PDF转换为EPS大纲时保留边距?

如何在使用Ghostscript将PDF转换为EPS大纲时保留边距?,pdf,pdf-generation,ghostscript,eps,Pdf,Pdf Generation,Ghostscript,Eps,我正在使用Ghostscript将PDF文档转换为EPS文件 我的目标是删除文本信息,同时在PDF中保持文本的矢量轮廓完整。我这样做是通过转换为每股收益,然后将其转换回PDF。当然,我不希望阻止人们运行OCR来获取文本 我使用的命令是: gs -q -dNOCACHE -dNOPAUSE -dBATCH -dSAFER \ -sDEVICE=epswrite -sOutputFile=output.eps input.pdf 但当我将生成的EPS转换回PDF时,原始边距大部分丢失,页面大

我正在使用Ghostscript将PDF文档转换为EPS文件

我的目标是删除文本信息,同时在PDF中保持文本的矢量轮廓完整。我这样做是通过转换为每股收益,然后将其转换回PDF。当然,我不希望阻止人们运行OCR来获取文本

我使用的命令是:

gs -q -dNOCACHE -dNOPAUSE -dBATCH -dSAFER \
   -sDEVICE=epswrite -sOutputFile=output.eps input.pdf
但当我将生成的EPS转换回PDF时,原始边距大部分丢失,页面大小缩小,偶数页上的文本在右侧被裁剪

有没有办法在转换过程中保持原始页面大小和边距

我试过的另一个工具是ps2eps

虽然它支持指定页面大小,但实际上并没有删除文本信息,因此仍然可以从生成的PDF中选择和复制文本。这违背了我的目的

另一个缺点是它只支持转换单个页面,因此我必须首先使用psselect将我的PDF转换为一组单页PS文件。

首先不要使用epswrite事实上,在最新版本的Ghostscript中,您不能-因此您必须使用旧版本,升级!。您应该改用eps2write设备

其次,不要转换PDF->EPS->PDF

每次转换都会降低精度。如果您打算维护页边距之类的页面级信息,请不要这样做。EPS文件有意具有一个紧凑的边界框,以及其他可能使其不适合您的用途的要求

如果要维护页面级数据,请使用ps2write设备将其转换为PostScript,而不是EPS

请注意,使用epswrite设备时,您并不是“删除文本信息,同时保持文本的矢量轮廓完整”,而是在一般情况下,将文本渲染为位图。很丑,而且缩放不好

要明智地执行此操作,请使用当前版本的Ghostscript 9.16,将pdfwrite设备与PDF in、PDF out一起使用,然后选择-dNoOutputFonts开关


这将实现您想要的功能:它将文本绘制为向量,而不是文本。当然,结果将是一个无法检索的PDF文件,并且不可复制/粘贴。

谢谢您的建议。我放大了从EPS转换的PDF,它肯定是矢量曲线,而不是位图。我升级了我的GhostScript并尝试了你的PDF in-PDF-out方法。它工作得很好,但生成了一个更大的PDF,可能是因为字形没有被重用。我原来的PDF是50KB,通过EPS的PDF是20KB,现在直接的PDF是800KB。奇怪的是,字形的形状似乎在EPS中被重用,这可以解释为什么文件太小。我发现自己现在无法重现PDF->EPS->PDF过程。因此,这个答案是剩下的唯一工作方法。形状被“重用”的唯一方法是将它们存储为类型3字体中的字形描述。这是可能的,在某些情况下,epswrite将生成矢量图示符描述而不是位图,但通常它会生成位图。请注意,如果它生成位图或向量,它将以Type3字体进行,因此它仍然保存文本信息。pdfwrite方法完全删除所有文本信息,但epswrite不会,尽管它通常不会100%地对文本进行重新编码,因此对复制/粘贴/搜索毫无用处。