【问题标题】:What is the best Perl module to use for creating a .pdf from scratch?从头开始创建 .pdf 的最佳 Perl 模块是什么?
【发布时间】:2010-10-08 02:13:36
【问题描述】:

CPAN 上有很多与 .pdf 文件的创建和操作相关的模块,我希望这个社区可以为我节省一些走上死胡同的时间。

我希望从头开始创建 .pdf 文件,只有简单的格式,例如粗体/斜体和左/右/中心对齐。从 MVC 的角度来看,能够使用模板文件会很好,但如果最好的模块不支持,我没关系。我想要针对我的狭窄问题集的最佳模块。

编辑:让我们添加它必须是 Perl 模块的约束,如果不是纯 perl 解决方案。感谢您迄今为止的回答!

更新:PDF 创建是一个很难决定如何处理的问题。除了这里的好建议外,似乎还有大约 1,000 种不同的方法可以解决这个问题,而知道将时间花在哪些解决方案上是一个真正的挑战。在构建这个解决方案的过程中很容易获得对外部可执行文件的依赖,这就是为什么我一直倾向于尽可能在 Perl 中做所有事情。

我尝试使用 PDF::Create,但发现它太局限了。您必须给出坐标来放置每个文本字符串,并且没有内置的文本换行概念......这就是您必须做的所有工作。我的任务的开销是不可能的。

我现在使用的是 PDF::API2,它比 PDF::Create 功能强大得多,但仍要求 PDF 以令人不安的低级别组装。幸运的是,网上有一些帮助。请参阅Rick Measham's excellent PDF::API2 tutorial with accompanying text_block() subroutine,幸好它解决了文本换行问题。

除非您在这里看到另一个更新,否则这是最终对我有用的解决方案。

【问题讨论】:

  • 我同意使用 PDF::API2(我试图引导你朝着这个大方向前进!)。发布后续和教程链接做得很好。

标签: perl pdf cpan


【解决方案1】:

我是 CPAN 模块 CAM::PDF 的作者,这绝对不是这项工作的最佳工具——它是为高性能编辑而不是创建而设计的。

在免费的 PDF 创建库中,我最喜欢 PDF::API2。它具有非常丰富的功能集和良好的加密支持(灵感来自我可能添加的 CAM::PDF!)作者 Alfredo 管理着一个流行的电子邮件列表。人们有时会抱怨文档,但我发现它已经足够了。

在商业图书馆中,我对 pdflib 有很好的体验。

【讨论】:

  • 文档很糟糕。不过,我怀疑,一旦你掌握了它,你就不再记得掌握它是多么令人沮丧,因此没有人对文档做任何事情。
  • Alfredo 不再维护该模块 .. 他从 perl 移出,因此该模块无人维护。我正在考虑接管它,以便有人用它做点什么。
  • @RickMeasham:我不知道——我比我意识到的更过时了......如果你接手并有具体问题,请随时给我发电子邮件。
  • @ChrisDolan:那么有人能指出这种加密支持吗?我对源代码进行了 grep,直到我脸色发青,除了一个布尔函数来判断打开的 PDF 是否被加密,我没有看到任何其他东西。
  • @kovacsbv - 嗯,哇,你是对的。这真的很奇怪。多年来,我一直在告诉人们 PDF::API2 已错误地解密。时间太长了,我不记得我是如何得出这个结论的。也许弗雷多开始构建加密代码但从未完成?我真的不能说...
【解决方案2】:

我想到了三个用于创建 PDF 的模块(不分先后)......

PDF::Template 为您提供了您可能渴望的模板选项? PDF::Create 似乎更简单(至少从文档中)并且可能更充分地满足您的“简单格式”要求。

但是,如果您想知道“社区”的想法,那么只有 PDF::API2 以CPAN Ratings 的总分获得4 out of 5 stars 的评分。

希望对您有所帮助。

PS。免责声明:我没有使用任何这些模块。过去,我一直使用Apache FOP 使用 XML/XSLT/XSL-FO,而 Perl 被用于创建初始 XML 数据。如果你想将 PDF 生成嵌入到你的 Perl 应用程序中,这对于一些小东西来说可能是一种过度杀伤,而且并不总是理想的。

PPS。因此,在不久的将来,我也会关注这些 CPAN PDF 模块!

【讨论】:

  • 我使用过PDF::API2,它比PDF::Create 更好,因为您可以重用pdf 来生成新的。 :)
【解决方案3】:

它必须是 Perl 模块吗?您总是可以使用 LaTeX 并将其转换为 PDF。不是很直接,但它是另一种选择。

【讨论】:

  • 另外,您将制作精美的排版文档。
  • 我已经使用这种方法创建了相当复杂的文档。事实上,您可以在各种应用程序中创建 PDF 的点点滴滴,并使用 search.cpan.org/~larslund/PDF-Reuse-0.35 组合它们的输出
【解决方案4】:

祝马库斯,

很高兴您找到了本教程。我在 PDF::API2 方面做了很多工作,所以如果有什么我可以帮忙的,请告诉我。

当然,我推荐 PDF::API2!

有一个人 Jay Hannah,他目前正在将文本块转换为 CPAN 的模块,该模块完全符合您的要求:粗体、斜体等。如果您查看邮件列表,您会在顶部看到他的帖子。

干杯!

瑞克·米沙姆

【讨论】:

  • 非常感谢您与我接触,瑞克。我刚刚加入了雅虎组邮件列表“perl-text-pdf-modules”,我希望这就是你的意思?
  • 是的,就是这个——干杯!
【解决方案5】:

是的,如果不确切知道您的限制是什么,就很难回答。如果纯 Perl 不是必需品,我会倾向于DocBook

您将生成的初始标记可以是非常简单的 XML;并且这种转换只需要一个 XSL 处理器,并且需要像 Apache 的 FOP 这样的东西。

【讨论】:

    【解决方案6】:

    如何使用 perl 保存在线 pdf 文件? http://www.nwcc.bc.ca/FNC/pdfs/Stepping%20Stones%20to%20improved%20Relationships%20-%20web.pdf

    我正在使用文件::下载。但问题是它没有下载带有 url 编码字符串的 url。

    夏尔玛

    【讨论】:

    • 使用 $mech->get( $uri, ':content_file' => $tempfile );夏尔马
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-03
    • 2017-08-06
    • 1970-01-01
    • 1970-01-01
    • 2017-07-24
    • 1970-01-01
    • 2017-03-23
    相关资源
    最近更新 更多