【问题标题】:Preparing PDFs for use as Prawn templates准备用作 Prawn 模板的 PDF
【发布时间】:2014-01-07 03:07:36
【问题描述】:

我们有一个系统,可以接收来自未知来源的大量 PDF,然后将它们用作 Prawn 生成的新 PDF 的模板。

有时,某些 PDF 不能用作 Prawn 的模板 - 它们要么触发一般的 Prawn 错误(“Prawn::Errors::TemplateError => Error reading template file. If you are sure it's a valid PDF, it may be a bug.”),要么生成的 PDF 格式错误。

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

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

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

【问题讨论】:

  • 什么是真正有问题的 PDF?大虾限制它们的依据是什么?
  • 您想自动化重新保存 PDF 程序以允许 praswn 使用它吗?如果您已经知道该过程,则可以使用 ruby​​ 代码将其自动化。
  • @uDaY - 无数格式问题 - 有关详细信息,请参阅参考链接。

标签: ruby pdf prawn


【解决方案1】:

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 库。

【讨论】:

  • 可能值得找出“某些 PDF 无法正常工作”的原因。在这种情况下,只有有问题的文件需要后处理。
  • 当然可以,但这可能很困难。如果可行,更简单的技巧可能是将它们作为模板提供,如果它们失败,则仅使用备用路线并清理它们。这避免了必须寻找可能导致这种情况的多种条件,并且避免了因为出现或注意到新问题而不得不不断扩展条件检查......
  • @DavidvanDriessche - 谢谢,我应该澄清我的开源要求。鉴于此,恐怕这个答案不会让我更接近任何解决方案,因为“找到一个可以自动打开和保存文件的好的 PDF 库”基本上就是我要问的。
  • @Jongware - 找出“某些 PDF 不起作用”的原因是不切实际的,因为 PDF 实现和格式可变性比可能提供的要多 - 我们只能希望减少错误/畸形率
猜你喜欢
  • 1970-01-01
  • 2016-12-03
  • 1970-01-01
  • 2015-01-18
  • 1970-01-01
  • 2015-05-08
  • 2010-11-18
  • 2010-12-27
  • 1970-01-01
相关资源
最近更新 更多