#!/bin/bash # ideone boilerplate - we can't write files in the home directory; # so create a temporary directory for our files instead t=$(mktemp -d -t ideone.XXXXXXXXXXXX) || exit trap 'rm -rf "$t"' ERR EXIT cd "$t" svg_name=template pdf_base_name=pdf image_width=1024 cat <<\: >template.svg <svg> <title>Sorry, I don't remember what SVG looks like</title> <box>Certificate for $name_placeholder</box> <circle>* E pluribus unum *</circle> <triangle>Join the Illuminati! <eye/> </triangle> <box>This is to certify that <center><cursive><large>$name_placeholder</large></cursive></center> has completed their studies at <center><bombastic>$cole_placeholder</bombastic></center> with a degree of $dni_placeholder. </box> <text>Pamplona, $date_placeholder</text> <signature>Bugs Bunny, Esq.</signature> </svg> : inkscape () { # just a placeholder to show that it was run tr A-Za-z a-zA-Z <"$1" >"${3#--export-filename=}" } tmp=$(mktemp -t svg2pdf.XXXXXXXXXX) || exit #trap 'rm -f "$tmp"' EXIT # don't override the ideone trap above while IFS=":" read -r name cole dni date; do # write diagnostics to standard error; include name of script echo "$0: $name" >&2 # run sed just once, replaces cp too sed -e "s/\$name_placeholder/${name// /\\ }/" \ -e "#s/\$cole_placeholder/$cole/" \ -e "s/\$dni_placeholder/${dni// /\\ }/" \ -e "s/\$date_placeholder/$date/" "$svg_name.svg" >"$tmp" inkscape "$tmp" --export-area-page \ --export-filename="$pdf_base_name\ ${cole// /_}\ ${name// /_}.pdf" \ --export-width=$image_width --export-type="pdf" done ls -la nl *.pdf rm -f "$tmp"
Fred Flintstone:École Supérieure de Bédrocque:code 1234:31 de mayo de 2022 Barney Rubble:Outback Academy of Alice Springs:code 5555:31 de mayo de 2022
total 12
drwx------ 2 20050 1000 100 Jun 1 07:46 .
drwxrwx--- 3 root 1000 80 Jun 1 07:46 ..
-rw-rw-r-- 1 20050 1000 541 Jun 1 07:46 pdf\ École_Supérieure_de_Bédrocque\ Fred_Flintstone.pdf
-rw-rw-r-- 1 20050 1000 537 Jun 1 07:46 pdf\ Outback_Academy_of_Alice_Springs\ Barney_Rubble.pdf
-rw-rw-r-- 1 20050 1000 551 Jun 1 07:46 template.svg
1 <SVG>
2 <TITLE>sORRY, i DON'T REMEMBER WHAT svg LOOKS LIKE</TITLE>
3 <BOX>cERTIFICATE FOR fRED fLINTSTONE</BOX>
4 <CIRCLE>* e PLURIBUS UNUM *</CIRCLE>
5 <TRIANGLE>jOIN THE iLLUMINATI! <EYE/> </TRIANGLE>
6 <BOX>tHIS IS TO CERTIFY THAT
7 <CENTER><CURSIVE><LARGE>fRED fLINTSTONE</LARGE></CURSIVE></CENTER>
8 HAS COMPLETED THEIR STUDIES AT
9 <CENTER><BOMBASTIC>$COLE_PLACEHOLDER</BOMBASTIC></CENTER>
10 WITH A DEGREE OF CODE 1234.
11 </BOX>
12 <TEXT>pAMPLONA, 31 DE MAYO DE 2022</TEXT>
13 <SIGNATURE>bUGS bUNNY, eSQ.</SIGNATURE>
14 </SVG>
15 <SVG>
16 <TITLE>sORRY, i DON'T REMEMBER WHAT svg LOOKS LIKE</TITLE>
17 <BOX>cERTIFICATE FOR bARNEY rUBBLE</BOX>
18 <CIRCLE>* e PLURIBUS UNUM *</CIRCLE>
19 <TRIANGLE>jOIN THE iLLUMINATI! <EYE/> </TRIANGLE>
20 <BOX>tHIS IS TO CERTIFY THAT
21 <CENTER><CURSIVE><LARGE>bARNEY rUBBLE</LARGE></CURSIVE></CENTER>
22 HAS COMPLETED THEIR STUDIES AT
23 <CENTER><BOMBASTIC>$COLE_PLACEHOLDER</BOMBASTIC></CENTER>
24 WITH A DEGREE OF CODE 5555.
25 </BOX>
26 <TEXT>pAMPLONA, 31 DE MAYO DE 2022</TEXT>
27 <SIGNATURE>bUGS bUNNY, eSQ.</SIGNATURE>
28 </SVG>
./prog.sh: Fred Flintstone ./prog.sh: Barney Rubble