使用Ghostscript将PDF转换为EPS轮廓时如何保留边距?

时间:2015-04-06 15:13:09

标签: pdf pdf-generation ghostscript eps

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

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

我使用的命令是:

gs -q -dNOCACHE -dNOPAUSE -dBATCH -dSAFER \
   -sDEVICE=epswrite -sOutputFile=output.eps input.pdf

但是当我将生成的EPS转换回PDF时,原始边距大部分丢失,页面大小缩小,偶数页面上的文本在右侧裁剪。

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

我尝试过的另一个工具是ps2eps

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

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

1 个答案:

答案 0 :(得分:2)

首先不要使用epswrite(实际上在最新版本的Ghostscript中,你不能 - 所以你必须使用旧版本,升级!)。您应该使用eps2write设备。

其次,请勿转换 PDF-> EPS-> PDF

每次转化都会让您感到准确。如果您打算维护页面级别信息(如边距),则不要这样做。 EPS文件故意用于紧密的边界框,以及可能使其不适合您的目的的其他要求。

如果您想维护网页级数据,请使用ps2write设备转换为 PostScript ,而不是 EPS

请注意,使用epswrite设备时,您不是'删除文本信息(同时保持文本的矢量轮廓完整)',但在一般情况下,您是将文本呈现到位图。丑陋,并且不能很好地扩展!

要做到这一点,请使用当前版本的Ghostscript(9.16),使用pdfwrite设备(PDF输入,PDF输出)并选择-dNoOutputFonts开关。

这将做你想要的:它将文本绘制为矢量,而不是文本。当然,结果将是一个无法搜索的PDF文件,并且不受复制/粘贴的影响。