【发布时间】:2023-04-09 00:46:02
【问题描述】:
所以我有一个使用 Java 和 iText 构建的报告系统。 PDF 模板是使用 Scribus 创建的。 Java 代码使用 iText 将数据合并到文档中。然后将文件复制到 NFS 共享,并由 BASH 脚本打印它们。
我使用 acroread 将它们转换为 PS,然后 lpr 转换为 PS。
FOSS 应用程序 pdftops 效率极低。
我的主要问题是使用 iText/Scribus 生成的 PDF 非常大。 而且我最近遇到了 acroread 呕吐的问题,因为它在大型(300 多页)文档上使用了 4gb 的内存。 (Adobe 在将内容更新到 64 位方面非常缓慢)。
现在我可以在 Windows 上使用 Adobe 阅读器,并使用减小文件大小选项或其他任何名称,它极大地(> 10 倍)减小了 PDF 的大小(它删除了很多关于表单字段的元数据,并且出现) 并生成一个基本上是打印图像的 PDF。
我的问题是,有没有人知道在 Linux 上做类似事情的好解决方案/程序。理想情况下,它将优化 PDF、减小大小并降低 PS 复杂性,以便打印机可以更快地打印,因为现在打印一页大约需要 15-20 秒。
【问题讨论】:
-
Scribus 应该可以创建好的 PDF,iText 也很受推崇。 pdftops,OTOH,基本上是在 PostScript 中发出一个矢量列表,这几乎是最糟糕的方式。为什么需要后记? PDF 更容易处理
-
我实际上没有使用 pdftops,我使用的是 acroread。我正在使用 PS 打印到不直接支持 pdf 打印的打印机。
-
您可以使用 CUPS 打印 PDF,同时处理特定于打印机的问题。
-
lpr,如上所述,是 CUPS 系统的一部分。 CUPS 实际上使用 pdftops 来转换和打印 pdf 文件。由于前面提到的 pdftops 效率低下,我使用 acroread -toPostScript 将 pdf 转换为 ps。然后 lpr(CUPS) 打印生成的 Postscript 文件。
-
gs -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=output.pdf input.pdf 如此接近,却又如此遥远。这大大减小了文件大小,但字体乱码。我一直在试图弄清楚如何让它使用正确的字体无济于事。
标签: linux optimization pdf itext postscript