将可搜索的PDF转换为不可搜索的PDF

Ste*_*ong 6 pdf ghostscript

我有一个可搜索的PDF,我需要将其转换为不可搜索的PDF.

我尝试使用Ghostscript并将其更改为JPEG,然后返回到PDF,这样可以解决问题,但文件大小太大而且不可接受.

我尝试使用Ghostscript将PDF首先转换为PS,然后使用PDF将其转换为诀窍,但质量不够好.

gswin32.exe -q -dNOPAUSE -dBATCH -dSAFER -sDEVICE=pswrite -r1000 -sOutputFile=out.ps in.pdf
gswin32.exe -q -dNOPAUSE -dBATCH -dSAFER -dDEVICEWIDTHPOINTS=596 -dDEVICEHEIGHTPOINTS=834 -dPDFSETTINGS=/ebook -sDEVICE=pdfwrite -sOutputFile=out.pdf out.ps
Run Code Online (Sandbox Code Playgroud)

有没有办法为PDF提供高质量的产品?

或者,是否有更简单的方法将可搜索的PDF转换为不可搜索的PDF?

Kur*_*fle 11

您可以使用Ghostscript来实现这一目标.你需要两个步骤:

  1. 将PDF转换为PostScript文件,该文件全部使用转换为轮廓形状的字体.这里的关键是-dNOCACHE参数:

    gs -o somepdf.ps -dNOCACHE -sDEVICE=pswrite somepdf.pdf

  2. 将PS转换回PDF(并且可能再次删除中间PS):

    gs -o somepdf-with-outlines.pdf -sDEVICE=pdfwrite somepdf.ps
    rm somepdf.ps

请注意,生成的PDF很可能比原始PDF大.(并且,如果没有其他命令行参数,原始PDF中的所有图像都可能会根据Ghostscript内置默认值进行转换,除非您添加更多命令行参数.但质量应该优于您自己尝试使用Ghostscript ...)


更新

显然,从版本9.15(将于2014年9月/ 10月发布),Ghostscript将支持新的命令行参数:

 -dNoOutputFonts
Run Code Online (Sandbox Code Playgroud)

这将导致输出设备pdfwrite,ps2writeeps2write "将'字形变平'为'基本'标记操作(而不是将字体写入输出)".

这意味着可以避免上述两个步骤,并通过一个命令实现所需的结果:

 gs -o somepdf-with-outlines.pdf -dNoOutputFonts -sDEVICE=pdfwrite somepdf.pdf
Run Code Online (Sandbox Code Playgroud)

注意事项:我使用基于当前Git源的自编译Ghostscript对一些输入文件进行了测试.它在每种情况下都完美无缺.

  • @Dingo:如果使用最新的GS版本,`-o out.ps`与`-dBATCH -dNOPAUSE -sOutputFile = out.ps`相同.此外,最新版本的GS会自动将输出文件的(PostScript)页面大小设置为与输入文件(PDF)相同.如果你想要安全,你可以另外用`-gNNNxMMM`设置它没有问题.在大多数情况下,我不喜欢`ps2pdf`,因为它无论如何都是围绕Ghostscript命令行的包装器.... - 那么,你最新推荐和我的推荐之间还有什么区别呢? (2认同)