如何在命令行中在 Mac OS 中完全展平 PDF?

Mat*_*ang 19 pdf macos

我使用 Mac OS X 雪豹。我有一个包含表单域、注释和图章的 PDF。我想冻结(或“展平”)该 PDF,以便无法更改表单字段并且注释/图章不再可编辑。由于我实际上有很多这样的 PDF,我想在命令行上自动执行此操作。

我尝试/考虑过的一些事情,以及它们的成功程度:

  • 在预览中打开并打印到文件。这将创建一个完全平面的 PDF,而不会更改文件大小。不过,自动化的唯一方法似乎是编写一个笨拙的基于 UI 的 AppleScript,但我一直试图避免这种情况。
  • 在 Acrobat Pro 中打开并使用JavaScript 函数将. 同样,不确定如何在命令行上自动执行此操作。
  • pdftkflatten选项一起使用。但这只会使表单字段变平,而不是邮票和其他注释。
  • 使用cupsfilter它可以从多种文件格式创建 PDF。像pdftk这样只压平了表单字段。
  • 使用cups-pdf挂接到Mac的打印服务器,并保存为PDF文件,而不是打印。我使用了macports 版本。生成的文件是扁平的但很大。我在一个 8MB 的文件上试过这个;扁平化的 PDF 是 358MB!也许这可以与Ubuntu Tip:Howto reduce PDF file size from command line 中的 ghostscript 调用结合使用。

任何其他建议将不胜感激。

小智 11

尝试使用pdf2psps2pdf连续。这有点麻烦,但它帮助我将 30MB 的文档减少到 17MB。没有我想要的那么多,但仍然更好。我从一个朋友那里得到了这个想法,他使用这种方法来摆脱 pdf 上的密码权限。

pdf2ps your_pdf_file.pdf your_pdf_file.ps
ps2pdf your_pdf_file.ps your_pdf_file_from_ps.pdf
Run Code Online (Sandbox Code Playgroud)

希望有帮助!

  • GhostScript FTW!我通过使用管道将其归结为单行:`pdf2ps file.pdf - | ps2pdf - file_flat.pdf`。文件从 300K 增加到 500K,这是一个很大的百分比增加,但没有像 `cups-pdf` 方法产生的 4400% 增加。 (4认同)
  • 请注意,在 Mac 上,您可以安装 Ghostscript 以通过 [homebrew](https://brew.sh/) 使用 `brew install ghostscript` 使上述命令可用。 (4认同)

Mat*_*ang 7

编辑2020-07-25 这曾经有效但不再有效。现在这些命令继续保留 PDF 图层。


所以这就是我最近一直在使用的。我认为它在功能上与 做同样的事情pdf2ps file.pdf - | ps2pdf - file_flat.pdf,但它似乎更适合我。

gs -sDEVICE=pdfwrite -dPDFSETTINGS=/default -dNOPAUSE -dQUIET -dBATCH -sOutputFile=<newfile> <oldfile>
Run Code Online (Sandbox Code Playgroud)


Ala*_*Dea 7

警告:gs 和 pdf2ps|ps2pdf 不要压平 PDF!

使用 gs 或 pdf2ps 后跟 ps2pdf 将产生一个多层PDF,其内容在以原始形式存在的注释下。您可以通过使用全选,然后复制,然后粘贴到 TextEdit 窗口(在富文本模式下)来验证预览中的此缺陷。例如,您将在编辑注释下看到文本或图形。如果您在法律上需要从输出中删除该内容,这显然非常糟糕。

一个有效的解决方案

ImageMagick 可以使用以下命令生成具有每页光栅的可配置质量、多页、单层平展 PDF:

convert -density 150 document_original.pdf document_flat.pdf
Run Code Online (Sandbox Code Playgroud)

此命令光栅化 document_original.pdf,以 150 DPI 制作每个页面的基于像素的图像,并将结果输出为 document_flat.pdf。

图像质量注意事项

由于光栅化,它会生成一个不可缩放(缩放,你会看到文本或原始矢量图像变成像素化)PDF。除非原始文件具有非常复杂的矢量内容,例如百万点散点图,否则它可能会具有更大的文件大小。

通过更改密度,您可以用更大的文件大小换取更高分辨率的输出。

所有文本都将转换为每个页面图像中的原始像素。文本和矢量图受到的影响最大,因此请尝试使用 DPI,直到获得可用的输出文件。

  • 这就说得通了。我想象 Ghostscript 的行为在扁平化注释方面发生了变化。我尝试添加 -PreserveAnnots=false 但它仍然不起作用。在后台使用 Ghostscript 进行 PDF 处理转换。我想要一些能完成 Acrobat 功能的东西:它保留注释,删除注释后面的内容,并保留未覆盖的矢量图像。不过,新 Acrobat 的 Document Cloud 部分确实让我对将其用于敏感数据感到紧张。 (2认同)