From 9ce0556bc91a9dbc2a8bab550afdb3af93b185fa Mon Sep 17 00:00:00 2001 From: andrea Date: Sat, 7 Sep 2024 09:34:54 +0200 Subject: [PATCH] fixes --- .~lock.example.xlsx# | 1 - README.md | 4 +- example.svg | 877 +++++++++++++++++++++++++++++---- example.xlsx | Bin 6321 -> 6398 bytes inkscape_uprint.code-workspace | 11 + inkscape_uprint.py | 5 +- logo.png | Bin 0 -> 5699 bytes logo.svg | 132 +++++ 8 files changed, 936 insertions(+), 94 deletions(-) delete mode 100644 .~lock.example.xlsx# create mode 100644 inkscape_uprint.code-workspace create mode 100644 logo.png create mode 100644 logo.svg diff --git a/.~lock.example.xlsx# b/.~lock.example.xlsx# deleted file mode 100644 index 979e80e..0000000 --- a/.~lock.example.xlsx# +++ /dev/null @@ -1 +0,0 @@ -,andrea,elena-thinkpad,01.09.2024 14:58,file:///home/andrea/.config/libreoffice/4; \ No newline at end of file diff --git a/README.md b/README.md index 7966918..65b3ce5 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # inkscape_uprint +![logo](logo.png "logo") + Inkscape plugin to create multiple clones of the same object with pattern substitution ## Install @@ -15,7 +17,7 @@ or equivalently get it using git clone: reload inkscape -find the extension in **Extensions -> Renderg -> InkscapeUprint** +find the extension in **Extensions -> Renderig -> InkscapeUprint** ## INSTRUCTIONS: diff --git a/example.svg b/example.svg index 16c5042..4c7dd8b 100644 --- a/example.svg +++ b/example.svg @@ -7,8 +7,8 @@ viewBox="0 0 210 297" version="1.1" id="svg1" - sodipodi:docname="example.svg" inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, custom)" + sodipodi:docname="example.svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" @@ -23,29 +23,42 @@ inkscape:pagecheckerboard="0" inkscape:deskcolor="#d1d1d1" inkscape:document-units="mm" - inkscape:zoom="0.45968013" - inkscape:cx="1070.3095" - inkscape:cy="417.68174" - inkscape:window-width="1366" - inkscape:window-height="709" + inkscape:zoom="0.73762626" + inkscape:cx="612.0986" + inkscape:cy="446.02533" + inkscape:window-width="1920" + inkscape:window-height="1021" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="1" - inkscape:current-layer="layer1" /> + inkscape:current-layer="layer1"> + + + + - + x="381.91656" + y="92.793617" + width="378.68661" + height="413.95236" + id="rect1178" /> + - InkscapeUprint + x="58.835838" + y="29.776552">InkscapeUprint + id="g4" + transform="translate(-13.852187,-32.315918)"> + x="108.77037" + y="81.03743" /> The size of the output pages is copied from the model one - + id="g1"> + x="17.244392" + y="48.721512" /> {{nome}}{{cognome}} {{ruolo}} + transform="matrix(1.13358 0 0 1.13358 -89.2567 -6.27302)" /> {{affiliazione}} + id="g2"> + height="109.49339" + x="17.244392" + y="96.823288" /> {{nome}}{{cognome}} {{ruolo}} - - + + + + {{affiliazione}} + + + + HarrisonWells + STAFF + + + Central City University +Head of sustainability of disasters dept. + + + + + BarryAllen + FLASH + + + S.T.A.T. Labs research center +Professional speedster + + + + + IrisWest + PRESS + + + self employed +Journalist and story teller without talent + + + + + KillerFrost + MD + + + Medical Doctor +Carnaval General Hospital + + + + + ThomasCavanagh + ACTOR + + + + + + + + HarrisonWells + STAFF + + + + + Central City University +Head of sustainability of disasters dept. + + + + + BarryAllen + FLASH + + + + + S.T.A.T. Labs research center +Professional speedster + + + + + IrisWest + PRESS + + + + + self employed +Journalist and story teller without talent + + + + + KillerFrost + MD + + + + + Medical Doctor +Carnaval General Hospital + + + + + ThomasCavanagh + ACTOR + + + + + + diff --git a/example.xlsx b/example.xlsx index 5fa1ff9200d89207fb5ab4b32859823c61b3d966..06cc05bc8a49b8461c6e5faaffbffba5f063e4a7 100644 GIT binary patch delta 3465 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 Q1>d42#htlfkO08{0nHv9KL7v# diff --git a/inkscape_uprint.code-workspace b/inkscape_uprint.code-workspace new file mode 100644 index 0000000..eba5d12 --- /dev/null +++ b/inkscape_uprint.code-workspace @@ -0,0 +1,11 @@ +{ + "folders": [ + { + "path": "." + }, + { + "path": "../../../../../usr/share/inkscape/extensions/inkex" + } + ], + "settings": {} +} \ No newline at end of file diff --git a/inkscape_uprint.py b/inkscape_uprint.py index 5e8eff4..2cb699c 100755 --- a/inkscape_uprint.py +++ b/inkscape_uprint.py @@ -297,13 +297,12 @@ class InkscapeUprint(inkex.Effect): headings = [cell.value for cell in ws[1]] substs = [] for row in ws.iter_rows(min_row=2, values_only=True): - substs.append(dict(zip(headings, row))) + if all([cell is None or cell.strip() == '' for cell in row]): continue + substs.append(dict(zip(headings, [cell if cell is not None else '' for cell in row]))) new_objects = [] - for i, subst in enumerate(substs): dup = self.duplicate_object(parent, selected) - # self.translate_object(dup, (i+1) * (self.x_offset + self.bbox.width), self.y_offset) self.replace_text(dup, subst) new_objects.append(dup) diff --git a/logo.png b/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..29c60bf95b064db80a304f825c1d9de058ac3a23 GIT binary patch literal 5699 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 LSx2c%(K6zHk5JA& literal 0 HcmV?d00001 diff --git a/logo.svg b/logo.svg new file mode 100644 index 0000000..f29ee4f --- /dev/null +++ b/logo.svg @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +