wv_output: support multiple-pages pdf

This commit is contained in:
Laurier Loiselle 2023-04-11 18:53:12 -04:00
parent 2ea9c447d8
commit b013369e3c
No known key found for this signature in database
GPG Key ID: 345920CC72089A3F

View File

@ -6,7 +6,7 @@ from pathlib import Path
from typing import Dict, List, Union from typing import Dict, List, Union
import logging import logging
from weasyprint import HTML, CSS from weasyprint import HTML
import wireviz # for doing wireviz.__file__ import wireviz # for doing wireviz.__file__
from wireviz.wv_dataclasses import Metadata, Options from wireviz.wv_dataclasses import Metadata, Options
@ -70,16 +70,16 @@ def generate_pdf_output(
filename_list = [filename_list] filename_list = [filename_list]
output_path = filename_list[0].with_suffix('.pdf') output_path = filename_list[0].with_suffix('.pdf')
else: else:
logging.warn('Multiple file pdf conversion is not supported!')
return
output_dir = filename_list[0].parent output_dir = filename_list[0].parent
output_path = (output_dir / output_dir.name).with_suffix('.pdf') output_path = (output_dir / output_dir.name).with_suffix('.pdf')
filepath_list = [f.with_suffix('.html') for f in filename_list] filepath_list = [f.with_suffix('.html') for f in filename_list]
print(f'Generating pdf output: {output_path}') print(f'Generating pdf output: {output_path}')
html = HTML(filename=filepath_list[0]) files_html = [HTML(path) for path in filepath_list]
html.write_pdf(output_path) documents = [f.render() for f in files_html]
all_pages = [p for doc in documents for p in doc.pages]
documents[0].copy(all_pages).write_pdf(output_path)
def generate_html_output( def generate_html_output(