Skip to content

Commit 245e4f5

Browse files
committed
Add support of PDF/A-?u
1 parent c75cc9f commit 245e4f5

File tree

2 files changed

+26
-4
lines changed

2 files changed

+26
-4
lines changed

weasyprint/document.py

+2
Original file line numberDiff line numberDiff line change
@@ -400,6 +400,8 @@ def write_pdf(self, target=None, zoom=1, finisher=None, **options):
400400
_, properties = VARIANTS[variant]
401401
if 'version' in properties:
402402
version = properties['version']
403+
if 'identifier' in properties and not identifier:
404+
identifier = properties['identifier']
403405

404406
if finisher:
405407
finisher(self, pdf)

weasyprint/pdf/pdfa.py

+24-4
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ def read_binary(package, resource):
1818

1919

2020
def pdfa(pdf, metadata, document, page_streams, attachments, compress,
21-
version):
21+
version, variant):
2222
"""Set metadata for PDF/A documents."""
2323
# Add ICC profile.
2424
profile = pydyf.Stream(
@@ -86,9 +86,29 @@ def pdfa(pdf, metadata, document, page_streams, attachments, compress,
8686
pdf_object['F'] = 2 ** (3 - 1)
8787

8888
# Common PDF metadata stream.
89-
add_metadata(pdf, metadata, 'a', version, 'B', compress)
89+
add_metadata(pdf, metadata, 'a', version, variant, compress)
9090

9191

9292
VARIANTS = {
93-
f'pdf/a-{i}b': (partial(pdfa, version=i), {'version': pdf_version})
94-
for i, pdf_version in enumerate(('1.4', '1.7', '1.7', '2.0'), start=1)}
93+
'pdf/a-1b': (
94+
partial(pdfa, version=1, variant='B'),
95+
{'version': '1.4', 'identifier': True}),
96+
'pdf/a-2b': (
97+
partial(pdfa, version=2, variant='B'),
98+
{'version': '1.7', 'identifier': True}),
99+
'pdf/a-3b': (
100+
partial(pdfa, version=3, variant='B'),
101+
{'version': '1.7', 'identifier': True}),
102+
'pdf/a-4b': (
103+
partial(pdfa, version=4, variant='B'),
104+
{'version': '2.0', 'identifier': True}),
105+
'pdf/a-2u': (
106+
partial(pdfa, version=2, variant='U'),
107+
{'version': '1.7', 'identifier': True}),
108+
'pdf/a-3u': (
109+
partial(pdfa, version=3, variant='U'),
110+
{'version': '1.7', 'identifier': True}),
111+
'pdf/a-4u': (
112+
partial(pdfa, version=4, variant='U'),
113+
{'version': '2.0', 'identifier': True}),
114+
}

0 commit comments

Comments
 (0)