37 lines
867 B
Python
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}")
|