From 2143975c207cb5f7ae8c898cb8a9672033472b4a Mon Sep 17 00:00:00 2001 From: Radek Czajka Date: Wed, 2 Jan 2013 19:36:52 +0100 Subject: [PATCH 1/1] initial commit --- generate.py | 149 ++++++++++++++++++++++++++++++++++++++++++++++++++++ logo.png | Bin 0 -> 13033 bytes wzor.svg | 89 +++++++++++++++++++++++++++++++ 3 files changed, 238 insertions(+) create mode 100755 generate.py create mode 100644 logo.png create mode 100644 wzor.svg diff --git a/generate.py b/generate.py new file mode 100755 index 0000000..17488f1 --- /dev/null +++ b/generate.py @@ -0,0 +1,149 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + + +# use mms +page_width = 210 +page_height = 297 +margin_left = 5 +margin_top = 28.5 +extra_pages = 1 +with_lines = True + + +from copy import deepcopy +from lxml import etree +import re +import os + +page_template = etree.parse('wzor.svg') +orig_text_height = float(os.popen('inkscape --query-id=textroot -H wzor.svg').read()) + +def mm_to_px(mm): + return float(mm) / 25.4 * 90 + +def get_translate(elem): + match = re.match("translate\((-?\d*\.?\d*),(-?\d*\.?\d*)\)", elem.get('transform')) + return float(match.group(1)), float(match.group(2)) + +def set_translate(elem, x, y): + elem.set('transform', "translate(%f,%f)" % (x, y)) + + +root = page_template.getroot() +template_width = float(root.get('width')) +template_height = float(root.get('height')) + +grid_width = int(mm_to_px(page_width) / template_width) +grid_height = int(mm_to_px(page_height) / template_height) +on_page = grid_height * grid_width + +nazwiska = [] +import sys +for fname in sys.argv[1:]: + with open(fname) as f: + nazwiska += [(n.decode('utf-8').strip('\n') + '\t\t\t').split('\t')[:4] for n in f] + +nazwiska.extend( + ['', '', '', ''] for i in range((len(nazwiska) / on_page + (extra_pages + 1)) * on_page - len(nazwiska))) + +root.set('width', str(mm_to_px(page_width))) +root.set('height', str(mm_to_px(page_height))) +template = root.find('{http://www.w3.org/2000/svg}g') +transform_x, transform_y = get_translate(template) +root.remove(template) + +line = etree.Element('{http://www.w3.org/2000/svg}path') +line.set('style', 'stroke: #888; stroke-width: .1mm;') + +x = y = page = 0 +output_odd = deepcopy(page_template) +output_even = deepcopy(page_template) +for nazwisko, imie, org, funkcja in nazwiska: + print "%s (%s)" % (nazwisko, org) + card = deepcopy(template) + flow = card.find('.//{http://www.w3.org/2000/svg}flowRoot') + current_id = 'card-%d-%d' % (x, y) + flow.set('id', current_id) + for elem in flow.findall('.//{http://www.w3.org/2000/svg}flowPara'): + if elem.text == u'Imię i nazwisko': + elem.text = imie + ' ' + nazwisko + elif elem.text == u'Organizacja': + elem.text = org + elif elem.text == u'Funkcja': + elem.text = funkcja + set_translate(card, + transform_x + mm_to_px(margin_left) + x * template_width, + transform_y + mm_to_px(margin_top) + y * template_height + ) + output_even.getroot().append(card) + # Check height + output_even.write('tmp.svg') + text_height = float(os.popen('inkscape --query-id=%s -H tmp.svg' % (current_id,)).read()) + tx, ty = get_translate(flow) + set_translate(flow, tx, ty + (orig_text_height - text_height) / 2) + + odd_card = deepcopy(card) + odd_card.set('transform', "translate(%f,%f)" % ( + transform_x + mm_to_px(page_width) - mm_to_px(margin_left) - (x + 1) * template_width, + transform_y + mm_to_px(margin_top) + y * template_height + )) + output_odd.getroot().append(odd_card) + + x += 1 + if x >= grid_width: + y += 1 + x = 0 + if y >= grid_height: + if with_lines: + for xx in range(grid_width + 1): + l = deepcopy(line) + l.set('d', 'm %f,%f %f,%f' % ( + mm_to_px(margin_left) + xx * template_width, + 0, + 0, + mm_to_px(margin_top - 1), + )) + output_even.getroot().append(l) + l = deepcopy(line) + l.set('d', 'm %f,%f %f,%f' % ( + mm_to_px(margin_left) + xx * template_width, + mm_to_px(margin_top + 1) + grid_height * template_height, + 0, + mm_to_px(page_height) - mm_to_px(margin_top + 1) - grid_height * template_height, + )) + output_even.getroot().append(l) + for yy in range(grid_height + 1): + l = deepcopy(line) + l.set('d', 'm %f,%f %f,%f' % ( + 0, + mm_to_px(margin_top) + yy * template_height, + mm_to_px(margin_left - 1), + 0, + )) + output_even.getroot().append(l) + l = deepcopy(line) + l.set('d', 'm %f,%f %f,%f' % ( + mm_to_px(margin_left + 1) + grid_width * template_width, + mm_to_px(margin_top) + yy * template_height, + mm_to_px(page_width) - mm_to_px(margin_left + 1) - grid_width * template_width, + 0, + )) + output_even.getroot().append(l) + + output_even.write('out-%02d.svg' % (2 * page)) + output_odd.write('out-%02d.svg' % (2 * page + 1)) + output_odd = deepcopy(page_template) + output_even = deepcopy(page_template) + page += 1 + x = y = 0 + +if x or y: + output_even.write('out-%02d.svg' % (2 * page)) + output_odd.write('out-%02d.svg' % (2 * page + 1)) + page += 1 + +for p in range(2 * page): + os.system('inkscape out-%02d.svg -A out-%02d.pdf' % (p, p)) + +os.system('pdftk %s cat output output.pdf' % (" ".join("out-%02d.pdf" % p for p in range(2*page)))) diff --git a/logo.png b/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e5c4af77fd36865316ee138b96961a7c04722cb9 GIT binary patch literal 13033 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 J#m`Iw{tKTKHP`?E literal 0 HcmV?d00001 diff --git a/wzor.svg b/wzor.svg new file mode 100644 index 0000000..9869ff7 --- /dev/null +++ b/wzor.svg @@ -0,0 +1,89 @@ + + + + + + + + + + image/svg+xml + + + + + + + Imię i nazwiskoOrganizacjaFunkcja + + -- 2.20.1