我正在编写邮件合并软件作为 Python 网络应用程序的一部分。
我有一个名为 letter.pdf
的模板,它是从 MS Word 文件生成的,包含文本 {name},居民的姓名将用于此位置。我还有一个c的列表。 100个居民的名字。
我想做的是读入 letter.pdf
搜索 "{name}"
并将其替换为居民姓名(对于每个居民),然后将结果写入另一个 pdf。然后我想将所有这些 pdf 一起收集成一个大 pdf(每个字母一页),我的网络应用程序的用户将打印出来以创建他们的字母。
是否有任何 Python 库可以执行此操作?我看过 pdfrw 和 pdfminer,但我看不出他们在哪里可以做到这一点。
(注意:我也有 MS Word 文件,所以如果有另一种使用它的方法,而不是通过 pdf,那也可以完成这项工作。)
原文由 Phil Hunt 发布,翻译遵循 CC BY-SA 4.0 许可协议
这可以通过 PyPDF2 包来完成。实现可能取决于原始 PDF 模板结构。但是,如果模板足够稳定并且不经常更改,则替换代码不应该是通用的,而应该是简单的。
我做了一个关于如何替换 PDF 文件 中的文本的小草图。它将所有出现的
PDF
标记替换为DOC
。结果是
更新 2021-03-21:
更新了代码示例以处理
DecodedStreamObject
和EncodedStreamObject
这实际上包含要更新的文本数据流。