From 61f8bb37d435e12e4777ec0d3b9d7fb2ba59e78d Mon Sep 17 00:00:00 2001 From: Guillaume Ayoub Date: Wed, 5 Jun 2024 14:31:54 +0200 Subject: [PATCH] Set default PDF variant values in options before generating PDF We then have the PDF identifier and version set to the variant defaults during generation. --- tests/test_api.py | 6 ++++++ weasyprint/document.py | 22 +++++++++++----------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/tests/test_api.py b/tests/test_api.py index 2e81f0846..705ae5887 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -464,6 +464,12 @@ def test_pdfa_compressed(version, pdf_version): _run(f'--pdf-variant=pdf/a-{version}b - -', b'test') +def test_pdfa1b_cidset(): + stdout = _run('--pdf-variant=pdf/a-1b --uncompressed-pdf - -', b'test') + assert b'PDF-1.4' in stdout + assert b'CIDSet' in stdout + + def test_pdfua(): stdout = _run('--pdf-variant=pdf/ua-1 --uncompressed-pdf - -', b'test') assert b'part="1"' in stdout diff --git a/weasyprint/document.py b/weasyprint/document.py index 08b7e7f64..1e96428b6 100644 --- a/weasyprint/document.py +++ b/weasyprint/document.py @@ -388,24 +388,24 @@ def write_pdf(self, target=None, zoom=1, finisher=None, **options): new_options = DEFAULT_OPTIONS.copy() new_options.update(options) options = new_options - pdf = generate_pdf(self, target, zoom, **options) - - identifier = options['pdf_identifier'] - compress = not options['uncompressed_pdf'] - version = options['pdf_version'] - variant = options['pdf_variant'] # Set default PDF version for PDF variants. - if version is None and variant: + if variant := options['pdf_variant']: _, properties = VARIANTS[variant] - if 'version' in properties: - version = properties['version'] - if 'identifier' in properties and not identifier: - identifier = properties['identifier'] + if 'version' in properties and not options['pdf_version']: + options['pdf_version'] = properties['version'] + if 'identifier' in properties and not options['pdf_identifier']: + options['pdf_identifier'] = properties['identifier'] + + pdf = generate_pdf(self, target, zoom, **options) if finisher: finisher(self, pdf) + identifier = options['pdf_identifier'] + compress = not options['uncompressed_pdf'] + version = options['pdf_version'] + if target is None: output = io.BytesIO() pdf.write(output, version, identifier, compress)