Mercurial > hgrepos > Python2 > PyMuPDF
view tests/test_metadata.py @ 33:c4daa0c83d64
Apply also -fstack-clash-protection and -fstack-protector-strong for all generated binaries.
Only done if EXTRA_CHECKS is not empty and not 0.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Sun, 21 Sep 2025 17:55:13 +0200 |
| parents | 1d09e1dec1d9 |
| children |
line wrap: on
line source
""" 1. Read metadata and compare with stored expected result. 2. Erase metadata and assert object has indeed been deleted. """ import json import os import sys import pymupdf scriptdir = os.path.abspath(os.path.dirname(__file__)) filename = os.path.join(scriptdir, "resources", "001003ED.pdf") metafile = os.path.join(scriptdir, "resources", "metadata.txt") doc = pymupdf.open(filename) def test_metadata(): assert json.dumps(doc.metadata) == open(metafile).read() def test_erase_meta(): doc.set_metadata({}) # Check PDF trailer and assert that there is no more /Info object # or is set to "null". statement1 = doc.xref_get_key(-1, "Info")[1] == "null" statement2 = "Info" not in doc.xref_get_keys(-1) assert statement2 or statement1 def test_3237(): filename = os.path.abspath(f'{__file__}/../../tests/resources/001003ED.pdf') with pymupdf.open(filename) as doc: # We need to explicitly encode in utf8 on windows. metadata1 = doc.metadata metadata1 = repr(metadata1).encode('utf8') doc.set_metadata({}) metadata2 = doc.metadata metadata2 = repr(metadata2).encode('utf8') print(f'{metadata1=}') print(f'{metadata2=}') assert metadata1 == b'{\'format\': \'PDF 1.6\', \'title\': \'RUBRIK_Editorial_01-06.indd\', \'author\': \'Natalie Schaefer\', \'subject\': \'\', \'keywords\': \'\', \'creator\': \'\', \'producer\': \'Acrobat Distiller 7.0.5 (Windows)\', \'creationDate\': "D:20070113191400+01\'00\'", \'modDate\': "D:20070120104154+01\'00\'", \'trapped\': \'\', \'encryption\': None}' assert metadata2 == b"{'format': 'PDF 1.6', 'title': '', 'author': '', 'subject': '', 'keywords': '', 'creator': '', 'producer': '', 'creationDate': '', 'modDate': '', 'trapped': '', 'encryption': None}"
