From 2143975c207cb5f7ae8c898cb8a9672033472b4a Mon Sep 17 00:00:00 2001 From: Radek Czajka <radek.czajka@gmail.com> 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 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="354.33069" + height="212.59842" + id="svg2" + version="1.1" + inkscape:version="0.48.3.1 r9886" + sodipodi:docname="wzor.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.7" + inkscape:cx="119.01817" + inkscape:cy="329.55491" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" + inkscape:window-width="1024" + inkscape:window-height="711" + inkscape:window-x="340" + inkscape:window-y="27" + inkscape:window-maximized="0" + showguides="true" + inkscape:guide-bbox="true" + units="mm" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-239.5,-383.12108)"> + <flowRoot + xml:space="preserve" + id="textroot" + style="font-size:40px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + transform="translate(19.034813,588.15032)" + inkscape:label="#flowRoot3237"><flowRegion + id="flowRegion3239"><rect + id="rect3241" + width="330.505" + height="164.86259" + x="231.42857" + y="-83.509575" + style="text-align:center;text-anchor:middle" /></flowRegion><flowPara + style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Lato;-inkscape-font-specification:Lato" + id="flowPara3332">ImiÄ i nazwisko</flowPara><flowPara + style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Lato;-inkscape-font-specification:Lato" + id="flowPara3334">Organizacja</flowPara><flowPara + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Lato;-inkscape-font-specification:Lato Bold" + id="flowPara2988">Funkcja</flowPara></flowRoot> <image + y="400.50504" + x="338.43109" + id="image3315" + xlink:href="logo.png" + height="78.343658" + width="156.46848" /> + </g> +</svg> -- 2.20.1