Skip to content

PPF-1423: Creating Fields Erases PDF Metadata #1423

@MosheLaks

Description

@MosheLaks

Version

PyPDFForm=3.8.2

Issue Description

If I use PyPDF to add metadata to a PDF, then create a PdfWrapper with that PDF, and create a field with that wrapper, the metadata is gone.

Code Snippet

from io import BytesIO
from typing import Optional

from pypdf import PdfReader, PdfWriter
from PyPDFForm import PdfWrapper, BlankPage, Fields

def add_meta_tag(writer: PdfWriter, key: str, value: str) -> PdfWriter:
    """Add a metadata tag to the PDF. Prepends a '/' to the key"""
    key = "/" + key
    writer.add_metadata({key: value})
    return writer


def read_meta_tag(reader: PdfReader, key: str) -> Optional[str]:
    """Read a metadata tag from the PDF. Prepends a '/' to the key"""
    key = "/" + key
    return reader.metadata.get(key)

if __name__ == "__main__":
    pdf_stream = BytesIO(PdfWrapper(BlankPage()).read())
    writer = PdfWriter(pdf_stream)
    writer = add_meta_tag(writer, "test_key", "test_value")
    writer = add_meta_tag(writer, "other_key", "other_value")
    writer.write(pdf_stream)
    pdf_stream.seek(0)
    wrapper = PdfWrapper(pdf_stream)
    wrapper.create_field(Fields.TextField(name="Test", page_number=1, x=100, y=400))
    new_stream = BytesIO(wrapper.read())
    reader = PdfReader(new_stream)
    print(read_meta_tag(reader, "test_key"))
    print(read_meta_tag(reader, "other_key"))

PDF Form Template

Screenshots (if applicable)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions