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