回答问题

我需要生成模板文档的自定义 PDF 副本。我认为最简单的方法是创建一个源 PDF,其中包含一些需要自定义的占位符文本,即<first_name><last_name>,然后用正确的值替换它们。

我搜索了高低,但真的没有办法基本上取源模板PDF,用实际值替换占位符并写入新的PDF吗?

我查看了 PyPDF2 和 ReportLab,但似乎都不能这样做。有什么建议么?我的大部分搜索导致使用 Perl 应用程序 CAM::PDF,但我更愿意将其全部保存在 Python 中。

Answers

没有直接的方法可以可靠地执行此操作。 PDF 与 HTML 不同:它们逐个字符地指定文本的位置。它们甚至可能不包括用于呈现文本的整个字体,仅包括呈现文档中特定文本所需的字符。我发现没有一个库会做一些好事,比如在更新文本后重新换行段落。 PDF 在很大程度上是一种仅显示格式,因此使用将标记转换为 PDF 的工具比就地更新 PDF 要好得多。

If that's not an option, you can create a PDF form in something like Acrobat, then use a PDF manipulation library like iText (AGPL) or pdfbox, which has a nice clojure wrapper called pdfboxing可以处理其中的一些。

根据我的经验,Python 对写入 PDF 的支持非常有限。到目前为止,Java 拥有最好的语言支持。此外,你得到你所支付的,所以如果你将它用于商业目的,它可能值得支付 iText 许可证。我在围绕 PDF 操作 CLI 工具(如 pdfboxing 和 ghostscript)编写 python 包装器时取得了不错的效果。对于您的用例而言,这可能比试图将其硬塞到 Python 的 PDF 生态系统中要容易得多。

Logo

Python社区为您提供最前沿的新闻资讯和知识内容

更多推荐