我有一个可搜索的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
有没有办法为PDF提供高质量的产品?
或者,有一种更简单的方法可将可搜索的PDF转换为不可搜索的PDF吗?
答案 0 :(得分:11)
您可以使用Ghostscript来实现这一目标。您需要两个步骤:
将PDF转换为PostScript文件,该文件全部使用转换为轮廓形状的字体。这里的关键是-dNOCACHE
参数:
gs -o somepdf.ps -dNOCACHE -sDEVICE=pswrite somepdf.pdf
将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 将支持新命令行参数: < / p>
-dNoOutputFonts
这将导致输出设备pdfwrite
,ps2write
和eps2write
“将'拼接'字形转换为'基本'标记操作(而不是将字体写入输出) “
这意味着可以避免上述两个步骤,只需一个命令即可实现所需的结果:
gs -o somepdf-with-outlines.pdf -dNoOutputFonts -sDEVICE=pdfwrite somepdf.pdf
警告:我使用基于当前Git源的自编译Ghostscript对一些输入文件进行了测试。它在每种情况下都完美无缺。
答案 1 :(得分:3)
从可搜索的向量pdf生成不可搜索的向量pdf的可能方法是
在单页中突发pdf
<强> pdftk file.pdf burst
强>
使用
转换svg中的任何单个页面<强> pdftocairo 强>
包含在 poppler utils
中for f in *.pdf; do pdftocairo -svg $f; done
3。删除文件夹
中的 所有 pdf4。然后,使用 batikrasterizer
将 所有 svg重新转换为pdf(这次生成的pdf将保持矢量化,但无法搜索)
java -jar ./batik-rasterizer.jar -m application/pdf *.svg
最后一步:在一个多页pdf文件中加入所有生成的单页pd
pdftk *.pdf cat output out.pdf
答案 2 :(得分:0)
我认为转换为像jpg这样的图像是可行的方法,可能值得转换为图像,优化/缩小图像的大小,然后用这些创建PDF?