1# SPDX-FileCopyrightText: 2022 James R. Barlow
2# SPDX-License-Identifier: MPL-2.0
3
4"""PDF metadata handling.
5
6This module provides XMP and DocumentInfo metadata access for PDF files.
7"""
8
9from __future__ import annotations
10
11from pikepdf.models.metadata._constants import (
12 DEFAULT_NAMESPACES,
13 XMP_CONTAINERS,
14 XMP_EMPTY,
15 XMP_NS_DC,
16 XMP_NS_PDF,
17 XMP_NS_PDFA_EXTENSION,
18 XMP_NS_PDFA_ID,
19 XMP_NS_PDFA_PROPERTY,
20 XMP_NS_PDFA_SCHEMA,
21 XMP_NS_PDFUA_ID,
22 XMP_NS_PDFX_ID,
23 XMP_NS_PHOTOSHOP,
24 XMP_NS_PRISM,
25 XMP_NS_PRISM2,
26 XMP_NS_PRISM3,
27 XMP_NS_RDF,
28 XMP_NS_XML,
29 XMP_NS_XMP,
30 XMP_NS_XMP_MM,
31 XMP_NS_XMP_RIGHTS,
32 XPACKET_BEGIN,
33 XPACKET_END,
34 AltList,
35 XmpContainer,
36)
37from pikepdf.models.metadata._converters import (
38 DOCINFO_MAPPING,
39 AuthorConverter,
40 Converter,
41 DateConverter,
42 DocinfoMapping,
43 decode_pdf_date,
44 encode_pdf_date,
45)
46from pikepdf.models.metadata._core import PdfMetadata
47from pikepdf.models.metadata._xmp import XmpDocument
48
49
50def __getattr__(name):
51 if name == 'LANG_ALTS':
52 from pikepdf.models.metadata import _constants
53 val = getattr(_constants, 'LANG_ALTS')
54 globals()[name] = val
55 return val
56 raise AttributeError(f"module {__name__} has no attribute {name}")
57
58__all__ = [
59 # Main classes
60 'PdfMetadata',
61 'XmpDocument',
62 # Converters
63 'Converter',
64 'AuthorConverter',
65 'DateConverter',
66 'DocinfoMapping',
67 'DOCINFO_MAPPING',
68 'decode_pdf_date',
69 'encode_pdf_date',
70 # Namespace constants
71 'XMP_NS_DC',
72 'XMP_NS_PDF',
73 'XMP_NS_PDFA_ID',
74 'XMP_NS_PDFA_EXTENSION',
75 'XMP_NS_PDFA_PROPERTY',
76 'XMP_NS_PDFA_SCHEMA',
77 'XMP_NS_PDFUA_ID',
78 'XMP_NS_PDFX_ID',
79 'XMP_NS_PHOTOSHOP',
80 'XMP_NS_PRISM',
81 'XMP_NS_PRISM2',
82 'XMP_NS_PRISM3',
83 'XMP_NS_RDF',
84 'XMP_NS_XML',
85 'XMP_NS_XMP',
86 'XMP_NS_XMP_MM',
87 'XMP_NS_XMP_RIGHTS',
88 # Other exports
89 'DEFAULT_NAMESPACES',
90 'LANG_ALTS',
91 'XPACKET_BEGIN',
92 'XPACKET_END',
93 'XMP_CONTAINERS',
94 'XMP_EMPTY',
95 'AltList',
96 'XmpContainer',
97]