我需要使 PDF 不可编辑,实现此目的的一个好方法是使用大多数 PDF 阅读器中的“打印到文件”功能来生成另一个 PDF。我想他们的工作原理是将 PDF 转换为图像,然后将这些图像嵌入到另一个 PDF 中。
我需要从命令行完成上述操作,但我还没有找到保持质量的选项。我尝试了以下方法:
convert -quality 100 -density 600 input.pdf output.pdf
pdf2ps input.pdf - | ps2pdf - output.pdf
这两个选项都会生成模糊的 PDF。我不知道为什么,因为输入的 PDF 仅包含文本和条形码。选项2)肯定更好,但它仍然对条形码有轻微影响。
相比之下,使用 Evince 中的“打印到文件”功能生成的 PDF 几乎与原始 PDF 完全相同,而且速度也更快。我也尝试过pdftk
,但它生成了一个可编辑的 PDF。
我怎样才能通过命令行完成 Evince 所做的事情?
笔记:我的 PDF 也包含注释(或“图章”),并且之后它们不必可编辑(例如使用 Adobe Acrobat)。我上面概述的两个解决方案在这方面起作用,同时pdftk
生成一个可以编辑图章的 PDF。
答案1
尝试pdftoppm
一下poppler
。
pdftoppm -aa yes -aaVector yes -png ./input.pdf ./out && convert ./out-*.png ./output.pdf
它将所有页面提取为 png(您还可以输出 ppm、jpg 和 tiff)并将其转换为另一个 pdf。标志 -aa 和 -aaVector 用于字体和矢量 ant 锯齿。还有一些其他标志,例如 FreeType 字体光栅化、细线模式,我不知道它们如何派上用场,您也可以检查调整它们。
Evince 需要poppler-glib
,因此它可能使用 poppler 库来执行“打印到文件”操作。