Mercurial > hgrepos > Python2 > PyMuPDF
view tests/test_metadata.py @ 23:3b13504f9d89
Use the official packaging.version.Version to parse version strings.
While there revert the previons change to _int_rc(): it is not needed
now.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Fri, 19 Sep 2025 12:40:07 +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}"
