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

How to keep margins when converting PDF to EPS outlines using Ghostscript?

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

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

我使用的命令是:

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

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

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

我尝试的另一个工具是 ps2eps

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

另一个缺点是它只支持转换单页,所以我必须先使用 psselect.

将我的 PDF 转换为一组单页 PS 文件

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

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

每次转换都会降低准确性。如果您打算维护页面级信息(如页边距),请加倍不要这样做。 EPS 文件故意有一个紧密的边界框,以及其他可能使其不适合您的目的的要求。

如果要保留页面级数据,请转换为 PostScript,而不是 EPS,使用 ps2write设备。

请注意,当使用 epswrite 设备时,您不是 'removing the textual information (while keeping the vector outlines of the text intact)',但在一般情况下您是将文本渲染为位图。丑陋,而且伸缩性不好!

要明智地执行此操作,请使用当前版本的 Ghostscript (9.16),使用 pdfwrite 设备(PDF 输入,PDF 输出)和 select -dNoOutputFonts 开关。

这将执行您似乎想要的操作:它将文本绘制为矢量,而不是文本。当然,结果将是一个无法搜索且不受 copy/paste.

影响的 PDF 文件