ruby - 准备用作 Prawn 模板的 PDF

标签 ruby pdf prawn

我们有一个系统可以从未知来源获取大量不同的 PDF,然后将它们用作 Prawn 生成的新 PDF 的模板。

有时某些 PDF 不能作为 Prawn 的模板使用——它们要么触发一般的 Prawn 错误(“Prawn::Errors::TemplateError => 读取模板文件时出错。如果您确定它是有效的 PDF,这可能是一个错误。") 或生成的 PDF 格式不正确。

(一些 PDF 不能在 Prawn 中用作模板是一个已知问题,所以我不想在这里解决这个问题: [1] [2] )

如果我使用任何有问题的 PDF,并使用“预览”>“另存为 [新 PDF]”手动将它们重新保存在我的 Mac 上,那么我始终可以毫无问题地将它们用作 Prawn 模板。

我的问题是,是否有一些我可以使用的(开源)服务器端实用程序可能能够做同样的事情——即将有问题的 PDF 处理成 Prawn 可以使用的东西?

最佳答案

Yarin,这至少部分取决于为什么 PDF 最初不起作用。如果您可以在使用 Apple 的(非常糟糕的)预览 PDF 代码重新保存后使用它们,您应该能够使用多种不同的策略获得相同的结果:

-) 使用实际的 PDF 库打开和保存 PDF 文件(想到 Adob​​e 和 Global Graphics 的库)。这些通常是商业产品,但(我最了解 Adob​​e 库)它们确实允许您打开文件并保存它,并在此过程中执行许多优化。 Adobe 库目前通过一家名为 DataLogics (http://www.datalogics.com) 的公司获得许可

-) 使用嵌入这些库的商业产品。我想到了 callas pdfToolbox(警告,我隶属于该产品)。这基本上为您提供了与前一点相同的可能性,但在更易于使用的包中(例如命令行使用)。

-) 使用开源产品。我不太适合为此提供有用的链接。

还有另一种方法可能会起作用,具体取决于您的工作流程和文件。在图形艺术中,坏文件有时会通过称为重新蒸馏的过程“变得更好”;您基本上将 PDF 文件转换为 PostScript,然后再次将 postscript 重新提取为 PDF。因为这会重写整个文件结构,所以它通常可以解决根本问题。但是,当您使用不同的文件格式时,它也会带来风险。 GhostScript 等库(查看许可条件)可能允许您执行此操作。

鉴于您的文件似乎仅通过使用预览就得到了修复,我认为重新蒸馏的方法过于危险和矫枉过正。我会寻找一个可以自动打开和保存文件的好 PDF 库。

关于ruby - 准备用作 Prawn 模板的 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20963218/

相关文章:

ruby - 在继承方面如何为ruby中的类定义 "<"?

android - 如何读取 Assets 文件夹中的 .pdf 文件

ruby-on-rails - 如何安装 Prawn for Rails 4

ruby - 在 ruby​​ 中旋转 pdf

ruby - Ruby 中的多行条件语句和其他谜题——为什么不能编译?

ruby-on-rails - 简单的递归方法

ruby - Heroku 进程以状态 0 退出,但其测功机仍为 "crashes"

java.lang.ClassNotFoundException : org. bouncycaSTLe.asn1.ASN1Encodable

html - wkhtmltopdf 没有考虑 --user-style-sheet 命令行参数

ruby-on-rails - 打印 Prawn 生成的pdf