Linux PDF/Postscript 优化

标签 linux optimization pdf itext postscript

所以我有一个使用 Java 和 iText 构建的报告系统。 PDF 模板是使用 Scribus 创建的。 Java 代码使用 iText 将数据合并到文档中。然后将文件复制到 NFS 共享,然后 BASH 脚本将它们打印出来。

我使用 acroread 将它们转换为 PS,然后对 PS 进行 lpr。

FOSS 应用程序 pdftops 效率极低。

我的主要问题是使用 iText/Scribus 生成的 PDF 非常大。 我最近遇到了 acroread 呕吐的问题,因为它在大型(300 页以上)文档上使用了 4gb 的内存。 (Adobe 将内容更新到 64 位的速度非常慢)。

现在我可以在 Windows 上使用 Adob​​e 阅读器,并使用“减少文件大小”选项或其他名称,它大大(> 10 倍)减小了 PDF 的大小(它删除了很多关于表单字段的元数据,因此看起来) 并生成基本上是打印图像的 PDF。

我的问题是有没有人知道在 Linux 上做类似事情的好的解决方案/程序。理想情况下,它将优化 PDF、减小大小并降低 PS 复杂性,以便打印机可以更快地打印,因为现在打印一页大约需要 15-20 秒。

最佳答案

要减小 PDF 文件的大小,请使用 pdfsizeopt ,我正在开发的软件。 pdfsizeopt 可在 Linux、Mac OS X、Windows(也可能在其他系统上)上运行。

pdfsizeopt 有很多依赖项,因此安装起来可能有点麻烦(大约需要 10 分钟的时间)。我正在努力简化安装。

如果你需要快速的东西,你可以试试它的依赖之一:Multivalent tool.pdf.Compress,这是一个纯 Java 工具。

获取Multivalent20060102.jar , 安装Java并运行

java -cp Multivalent20060102.jar tool.pdf.Compress input.pdf

gs -sDEVICE=pdfwrite 的功能有限制:

  • 它不能生成外部参照流(所以 PDF 会比需要的大)
  • 它不能生成对象流(所以 PDF 会比需要的大)
  • 它不会对图像或其他对象进行重复数据删除(即,如果同一图像在输入 PDF 中多次出现,gs 会在每次出现时在输出中制作一个副本)
  • 它以次优方式发出图像
  • 它将图像重新采样到低分辨率
  • 它有时会省略 PDF 中的超链接
  • 它无法转换某些构造(因此输出的 PDF 可能与输入的在视觉上不同)

pdfsizeopt 和 Multivalent 的 tool.pdf.Compress 都没有这些限制。

关于Linux PDF/Postscript 优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2656329/

相关文章:

c++ - 编译器会简化按顺序执行多次的操作吗?

ruby-on-rails - rails : WickedPDF: Page Breaks

java - 在Linux上的java中获取文件的更改时间而不是修改时间

linux - 如何使用 ANT 任务在 Linux 中运行 LDAP 删除条目工具

C++ 在 Windows 和 Linux 上编译 : ifdef switch

JavaScript 增长优化

r - 是否不可能在 Ubuntu 18.04.4 LTS 上安装 R 4.0,因为 r-base-core 需要 libc6 版本 >= 2.29?

apache-spark - 禁用 Spark 催化剂优化器

javascript - 如何使用jsPDF打印页数相同的 Canvas 上的PDF?

pdf - 如何在没有 X11 的情况下从 Octave 音程绘制到 pdf