我正在使用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文件。
答案 0 :(得分:2)
首先不要使用epswrite
(实际上在最新版本的Ghostscript中,你不能 - 所以你必须使用旧版本,升级!)。您应该使用eps2write
设备。
其次,请勿转换 PDF-> EPS-> PDF 。
每次转化都会让您感到准确。如果您打算维护页面级别信息(如边距),则不要这样做。 EPS文件故意用于紧密的边界框,以及可能使其不适合您的目的的其他要求。
如果您想维护网页级数据,请使用ps2write
设备转换为 PostScript ,而不是 EPS 。
请注意,使用epswrite
设备时,您不是'删除文本信息(同时保持文本的矢量轮廓完整)',但在一般情况下,您是将文本呈现到位图。丑陋,并且不能很好地扩展!
要做到这一点,请使用当前版本的Ghostscript(9.16),使用pdfwrite
设备(PDF输入,PDF输出)并选择-dNoOutputFonts
开关。
这将做你想要的:它将文本绘制为矢量,而不是文本。当然,结果将是一个无法搜索的PDF文件,并且不受复制/粘贴的影响。