pdf-annotation-merge/app/update_existing.py

37 lines
867 B
Python

#!/usr/bin/env python3
from pathlib import Path
import fitz
BASE_DIR = Path(__file__).resolve().parents[1]
INPUT = BASE_DIR / "input" / "okular_test.pdf"
OUTPUT = BASE_DIR / "output" / "okular_test_updated.pdf"
OLD_TEXT = "TITLE TEXT HERE"
NEW_TEXT = "UPDATED TITLE TEXT\nLINE 2 UPDATED\nLINE 3 UPDATED"
doc = fitz.open(INPUT)
changed = 0
for page in doc:
for annot in page.annots() or []:
info = annot.info or {}
content = info.get("content", "")
if OLD_TEXT in content:
info["content"] = NEW_TEXT
annot.set_info(info)
# FreeText annotations need appearance regenerated
if annot.type[1] == "FreeText":
annot.update()
changed += 1
doc.save(OUTPUT, garbage=4, deflate=True)
doc.close()
print(f"Updated {changed} annotation(s)")
print(f"Wrote {OUTPUT}")