fork download
  1. #!/bin/bash
  2.  
  3. # ideone boilerplate - we can't write files in the home directory;
  4. # so create a temporary directory for our files instead
  5. t=$(mktemp -d -t ideone.XXXXXXXXXXXX) || exit
  6. trap 'rm -rf "$t"' ERR EXIT
  7. cd "$t"
  8.  
  9. svg_name=template
  10. pdf_base_name=pdf
  11. image_width=1024
  12. cat <<\: >template.svg
  13. <svg>
  14. <title>Sorry, I don't remember what SVG looks like</title>
  15. <box>Certificate for $name_placeholder</box>
  16. <circle>* E pluribus unum *</circle>
  17. <triangle>Join the Illuminati! <eye/> </triangle>
  18. <box>This is to certify that
  19. <center><cursive><large>$name_placeholder</large></cursive></center>
  20. has completed their studies at
  21. <center><bombastic>$cole_placeholder</bombastic></center>
  22. with a degree of $dni_placeholder.
  23. </box>
  24. <text>Pamplona, $date_placeholder</text>
  25. <signature>Bugs Bunny, Esq.</signature>
  26. </svg>
  27. :
  28.  
  29. inkscape () {
  30. # just a placeholder to show that it was run
  31. tr A-Za-z a-zA-Z <"$1" >"${3#--export-filename=}"
  32. }
  33.  
  34. tmp=$(mktemp -t svg2pdf.XXXXXXXXXX) || exit
  35. #trap 'rm -f "$tmp"' EXIT # don't override the ideone trap above
  36.  
  37. while IFS=":" read -r name cole dni date; do
  38. # write diagnostics to standard error; include name of script
  39. echo "$0: $name" >&2
  40. # run sed just once, replaces cp too
  41. sed -e "s/\$name_placeholder/${name// /\\ }/" \
  42. -e "#s/\$cole_placeholder/$cole/" \
  43. -e "s/\$dni_placeholder/${dni// /\\ }/" \
  44. -e "s/\$date_placeholder/$date/" "$svg_name.svg" >"$tmp"
  45. inkscape "$tmp" --export-area-page \
  46. --export-filename="$pdf_base_name\ ${cole// /_}\ ${name// /_}.pdf" \
  47. --export-width=$image_width --export-type="pdf"
  48. done
  49.  
  50. ls -la
  51. nl *.pdf
  52. rm -f "$tmp"
Success #stdin #stdout #stderr 0.02s 5448KB
stdin
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
stdout
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>
stderr
./prog.sh: Fred Flintstone
./prog.sh: Barney Rubble