如何编辑/修改/替换现有 PDF 文件中的文本?

abh*_*ava 2 python pypdf flask pymupdf

我正在做最后一年的项目,所以我正在开发一个用户可以阅读 PDF 的网站。我添加了一些功能,例如将货币转换为本国货币。我在我的项目中使用flask和pymuPDF,我不知道如何修改pdf中的文本,有人可以帮助我解决这个问题吗?

我听说这里使用 pymuPDF 或 pypdf 可以工作,但我没有找到任何替换文本的解决方案。

Jor*_*Kie 6

使用 PyMuPDF 的编辑功能可能就足够了。该方法:

  1. 确定要替换的文本的位置
  2. 擦除文本并使用密文替换它

必须注意掌握原始字体,以及新文本是否比原始文本长/短。

import fitz  # import PyMuPDF

doc = fitz.open("myfile.pdf")
page = doc[number]  # page number 0-based
# suppose you want to replace all occurrences of some text
disliked = "delete this"
better   = "better text"
hits = page.search_for("delete this")  # list of rectangles where to replace

for rect in hit:
    page.add_redact_annot(rect, better, fontname="helv", fontsize=11,
       align=fitz.TEXT_ALIGN_CENTER, ...)  # more parameters

page.apply_annots(images=fitz.PDF_REDACT_IMAGE_NONE)  # don't touch images
doc.save("replaced.pdf", garbage=3, deflate=True)
Run Code Online (Sandbox Code Playgroud)

这非常适合短文本和中等质量期望。

通过更多的努力,可以识别原始字体属性、颜色、字体大小等,以产生接近完美的结果。

  • 看来`apply_annots`应该被`apply_redactions`取代。 (3认同)