Yo optaría por el modo practico, no siempre un diseño puede ser maqueteado correctamente o de forma sencilla, por eso mi propuesta es:
1) Diseñar en CorelDraw (O cualquier otro programa de diseño vectorial) la tarjeta poniendo textos de prueba.
2) Exportar el diseño terminado a SVG.
3) Guardar el SVG exportado en una carpeta y con PHP cambiar los textos de prueba por los del formulario.
Esto es sumamente practico, ya que incluso puedes delegarle a un diseñador la tarea de armar la tarjeta y por mas que cambie completamente el diseño, el código PHP no requiere ser modificado en absoluto.
Por dar un ejemplo practico, supongamos que diseñaste un logo y lo exportaste a SVG, siendo este el resultado:
template.svg
Código SVG:
Ver original<svg xmlns="http://www.w3.org/2000/svg" width="300" height="300">
<defs>
<style type="text/css">
.fil1 {fill:#DBDBDB}
.fil2 {fill:#283785}
.fil3 {fill:#848688}
.txt {font-family:'Arial'; text-anchor:middle;}
.txt1 {font-weight:bold; font-size:36px;}
.txt2 {font-size:16px;}
</style>
</defs>
<g>
<path class="fil1" d="M112 228l18 -68 -6 -1c1,-3 -1,-10 -1,-13l-2 1 -8 -21c0,-1 -3,2 -7,-12 -2,-10 0,-12 -3,-17 -4,-7 11,-26 14,-29l4 3c32,-29 44,-5 74,-11l-8 10 21 58 -10 3 -2 31c-11,11 -34,-10 -28,26 2,12 17,27 21,39 97,-40 68,-189 -37,-190 -113,-1 -139,151 -41,190l0 0z"/>
<path class="fil2" d="M112 228l78 0c-4,-13 -19,-27 -21,-39 -7,-36 16,-15 28,-26l2 -31 10 -3 -21 -58 8 -10c-29,5 -42,-19 -74,11l-4 -3c-3,3 -18,22 -14,29 3,6 0,8 3,17 3,14 6,11 7,12l8 21 2 -1c0,3 2,10 1,13l6 1 -18 68 0 0z"/>
<text x="150" y="257" class="fil2 txt txt1">[NAME]</text>
<text x="150" y="272" class="fil3 txt txt2">[SLOGAN]</text>
</g>
</svg>
En la misma carpeta que esta ese archivo, tendrías un index.php asi:
Ahora simplemente ingresas a:
index.php?name=NSD&slogan=Web%20Developer y puedes ver el logo con mi nombre.
Al ser SVG puedes mostrarlo en cualquier resolución sin perder calidad. Me parece que esta seria la técnica mas simple y viable para esta tarea.