from pathlib import Path from jinja2 import Environment, FileSystemLoader from weasyprint import HTML def generate_invoice(data: dict) -> bytes: template_dir = Path("templates") env = Environment(loader=FileSystemLoader(template_dir)) template = env.get_template("invoice.html") rendered = template.render(**data) return HTML(string=rendered).write_pdf()
:
from pypdf import PdfReader, PdfWriter reader = PdfReader("form.pdf") writer = PdfWriter() writer.clone_document_from_reader(reader) writer.update_page_form_field_values( writer.pages[0], {"full_name": "Ada Lovelace", "date": "2026-01-15"} ) with open("filled.pdf", "wb") as f: writer.write(f) from pathlib import Path from jinja2 import Environment,
def filter_keywords(stream: Iterator, keywords: set[str]) -> Iterator: for path, i, text in stream: if any(kw in text for kw in keywords): yield (path, i, text) pages = pdf_page_generator(Path("/invoices")) important = filter_keywords(pages, {"refund", "dispute"}) {"full_name": "Ada Lovelace"