#!/usr/bin/env python3 """Eksportuje hurtowo wizytówki z SVG do PDF na podstawie tabeli z danymi """ from dataclasses import dataclass from os import makedirs from os.path import join as join_path import subprocess DATA_FILE = 'dane.csv' MASTER_DESIGN = 'projekt_awers_v7_90x50_spad5.svg' OUTPUT_DIR = 'eksport' OUTPUT_DESIGN = 'awers_v7_{}_90x50_spad5.{}' INKSCAPE_CMD = r"C:\Program Files\Inkscape\bin\inkscape.com" def inkscape(input_svg: str, output_pdf: str) -> None: subprocess.run([ INKSCAPE_CMD, '--export-type=pdf', f'--export-filename={output_pdf}', '--export-overwrite', '--export-area-drawing', '--pdf-font-strategy=draw-all', input_svg]) def customize(input_svg: str, output_svg: str, replacements: list[tuple[str, str]]) -> None: content = "" with open(input_svg, "r", encoding="utf8") as file_in: content = file_in.read() for old, new in replacements: content = content.replace(old, new) with open(output_svg, "w", encoding="utf8") as file_out: file_out.write(content) def load_variants(input_csv: str) -> tuple[list[str], list[list[str]]]: columns = [] variants = [] with open(input_csv, "r", encoding="utf8") as file_in: line = file_in.readline().strip() for part in line.split(","): name = part.strip('"') columns.append(name) for line in file_in.readlines(): variant = [] line = line.strip() for part in line.split(","): value = part.strip('"') variant.append(value) variants.append(variant) return columns, variants columns, variants = load_variants(DATA_FILE) makedirs(OUTPUT_DIR, exist_ok=True) inkscape( join_path('projekt_rewers_v7_90x50_spad5.svg'), join_path(OUTPUT_DIR, 'rewers_v7_90x50_spad5.pdf'), ) for variant in variants: custom_design = join_path(OUTPUT_DIR, OUTPUT_DESIGN.format(variant[0], "svg")) custom_export = join_path(OUTPUT_DIR, OUTPUT_DESIGN.format(variant[0], "pdf")) customize(MASTER_DESIGN, custom_design, zip(columns[1:], variant[1:])) inkscape(custom_design, custom_export)