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

标签 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文件。 .

最佳答案

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

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

每次转换都会消耗您的准确性。如果您打算维护页面级别的信息(如边距),请不要这样做。 EPS 文件有意具有紧密的边界框,其中包括可能使其不适合您的目的的其他要求。

如果要维护页面级数据,则转换为后记 ,不是 每股 yield ,使用 ps2write设备。

请注意,使用 epswrite 时设备,您不是“删除文本信息(同时保持文本的矢量轮廓完好无损)”,但在一般情况下,您将文本呈现为位图。难看,而且伸缩性不好!

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

这将执行您似乎想要的操作:它将文本绘制为向量,而不是文本。当然,结果将是一个无法搜索且不受复制/粘贴影响的 PDF 文件。

关于pdf - 使用 Ghostscript 将 PDF 转换为 EPS 轮廓时如何保持边距?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29474015/

相关文章:

linux - 帮助使用 PDFKit 和 Rails 应用程序

python - 如何从 Django View 生成报告文件(ODF、PDF)

pdf - 合并的 PDF 空白

ghostscript - 如何使用 ghostscript 将 CMYK eps 转换为 CMYK jpeg?

c# - 处理 .eps 格式图像

iphone - quartz 无需其他库就能渲染pdf吗?

java - 使用什么来生成将包含动态生成的条形码(Java)的pdf文档?

ios - 如何检查 PDF 是否有效并且可以在 UIWebView 中打开

c# - 在 PDFsharp 中打开文档

java - 如何在Java中将HTML文件转换为PDF?