我们有一个系统可以从未知来源获取大量不同的 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 文件(想到 Adobe 和 Global Graphics 的库)。这些通常是商业产品,但(我最了解 Adobe 库)它们确实允许您打开文件并保存它,并在此过程中执行许多优化。 Adobe 库目前通过一家名为 DataLogics (http://www.datalogics.com) 的公司获得许可
-) 使用嵌入这些库的商业产品。我想到了 callas pdfToolbox(警告,我隶属于该产品)。这基本上为您提供了与前一点相同的可能性,但在更易于使用的包中(例如命令行使用)。
-) 使用开源产品。我不太适合为此提供有用的链接。
还有另一种方法可能会起作用,具体取决于您的工作流程和文件。在图形艺术中,坏文件有时会通过称为重新蒸馏的过程“变得更好”;您基本上将 PDF 文件转换为 PostScript,然后再次将 postscript 重新提取为 PDF。因为这会重写整个文件结构,所以它通常可以解决根本问题。但是,当您使用不同的文件格式时,它也会带来风险。 GhostScript 等库(查看许可条件)可能允许您执行此操作。
鉴于您的文件似乎仅通过使用预览就得到了修复,我认为重新蒸馏的方法过于危险和矫枉过正。我会寻找一个可以自动打开和保存文件的好 PDF 库。
关于ruby - 准备用作 Prawn 模板的 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20963218/