89

Since LaTeX can produce outstanding typesetting results and excellent graphics design, I began to wonder if it can recreate certificates. With so many packages and styles out there does anyone know if there is one to create certificate templates like the following example.

Free diploma certificate

I suppose that the borders would be the limiting factor like those shown here.

3
  • 2
    Regarding the borders, maybe you should have a look at this question, and especially at Altermundus' answer.
    – ienissei
    Mar 1, 2012 at 19:44
  • @ienissei I just read that post a few minutes ago and that is why I began to wonder about certificates.
    – azetina
    Mar 1, 2012 at 19:49
  • This would make a good candidate for a beamer package using Tikz/pgf to create the borders. I would envision a set of certificate themes and alternatives for the contents. Mar 1, 2012 at 21:49

7 Answers 7

64

I had to prepare certificates for a workshop recently and this is how I did it.

First, I prepared a border using smartdraw and called it border-2.jpg. enter image description here

Since certificates are given to many, I used datatool package. I used the particulars of participants in a .csv file namelist-1.csv like this:

degree,Name,Dgn,subject,inst,place
Dr,Abdul Ali,Assistant Professor, E \& I,Pondicherry Engineering College, Pondicherry - 605 014 
Mrs,Francesca Joestar,Assistant Professor, ECE,Pondicherry Engineering College, Pondicherry - 605 014 
Mr,Chan Ker Mei,Assistant Professor, CSE,Pondicherry Engineering College, Pondicherry - 605 014 
Dr,Hikaru Yagami,Assistant Professor, Mechanical Engg.,Pondicherry Engineering College, Pondicherry - 605 014 
Dr,Harish Kumar,Professor,Physics,Pondicherry Engineering College, Pondicherry - 605 014
Dr,R. Rajathy,Assistant Professor, EEE,Pondicherry Engineering College, Pondicherry - 605 014 

and finally the latex code to generate the certificates is:

\documentclass[16pt]{scrartcl}
\usepackage[a4paper,left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry}
\usepackage{pdflscape,setspace,amsmath,amssymb}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{calligra}
\usepackage{tgschola}
\usepackage{fourier-orns}
\usepackage{graphicx}
\usepackage{wallpaper}
\usepackage[normalem]{ulem}
\usepackage{charter}
\usepackage{microtype}
\hyphenpenalty 100000
%=============================
\input Zallman.fd
\newcommand*\initfamily{\usefont{U}{Zallman}{xl}{n}}
%=============================
\usepackage{datatool}
\DTLloaddb{names}{namelist-1.csv}
%=============================
\def\signature#1#2{\parbox[b]{1in}{\smash{#1}\vskip12pt}
\hfill \parbox[t]{2.8in}{\shortstack{\vrule width 2.8in height 0.4pt\\\small#2}}}
\def\sigskip{\vskip0.4in plus 0.1in}
        \def\beginskip{\vskip0.5875in plus 0.1in}
%=============================
\definecolor{title}{RGB}{180,0,0}
\definecolor{other}{RGB}{171,0,255}
\definecolor{name}{RGB}{255,0,0}
\definecolor{phd}{RGB}{0,0,240}
%=============================
\begin{document}
\begin{landscape}
\linespread{2}\selectfont
\pagestyle{empty}
\TileWallPaper{1\paperwidth}{1\paperheight}{border-2.jpg}
%=============================
\DTLforeach{names}{
\dg=degree, \name=Name, \dgn=Dgn, \sub=subject, \inst=inst, \place=place}{
%=============================
\noindent
\begin{minipage}[l]{1.5in}
 \includegraphics[width=.72\linewidth]{pec_emblem}
\end{minipage}
\hfill
%=============================
\begin{minipage}[c]{6.5in}
{\centering
{\onehalfspacing
    {\LARGE\bfseries {\color{other}{{ Pondicherry  Engineering College}}}}\\%\initfamily
    {\calligra Puducherry} -- {\calligra 605 014\\}
    \vskip0.4em
    {\large ISTE Short Term Training Program on\\}
    {\Large\bfseries\color{phd}{NANO ENGINEERING MATERIALS}}}\\
    \par}
\end{minipage}
\hfill
%=============================
\begin{minipage}[r]{1.5in}
\includegraphics[width=.92\linewidth]{istelogo/istelogo-1}
\end{minipage}
\vskip1em
%=============================
\begin{minipage}[l]{1.5in}
\end{minipage}
\hfill
\begin{minipage}[c]{6.5in}
{\centering
{\onehalfspacing
    {\Large\bfseries \color{title}{Certificate of Participation}}\par
    \vskip0.5em
    {\color{pink}\Large\decofourleft\quad{\color{blue}\decoone}\quad\decofourright}
    \par}}
\end{minipage}
\hfill
\begin{minipage}[r]{1.5in}
\end{minipage}
\vskip1.8em

{\doublespacing 
This is to certify that \uuline{{\large\sffamily\bfseries\color{name}{\dg. \MakeUppercase{\name}}}}, { \dgn}
of {\sub}, {\inst}, {\place},
has successfully participated in the two week  Short  Term   Training  Program
on  ``\emph{\color{phd}{Nano   Engineering   Materials}}''   sponsored   by  ISTE  and  organized  by  Department of  Physics, Pondicherry  Engineering   College,  Puducherry,  from
13$^{\text{th}}$ December to 23$^{\text{rd}}$ December 2010.}

\noindent
%\beginskip
{\singlespacing
\vfil
\begin{minipage}[l]{2.8in}
 \sigskip \signature{}{Dr. Harish Kumar \\ Co-ordinator }
\end{minipage}
\hfill
\begin{minipage}[c]{2.8in}
\sigskip \signature{}{Dr. Harish Kumar \\ Co-ordinator }
\end{minipage}
\hfill
\begin{minipage}[r]{2.8in}
\sigskip \signature{}{Dr. Harish Kumar \\ Principal }
\end{minipage}}
%=============================
\pagebreak
}
\end{landscape}
\end{document} 

pec_emblem and istelogo-1 are the logos:

enter image description here enter image description here

And finally the certificate is here: enter image description here

This is just for fun and dedicated to Paulo :)

enter image description here

8
  • 9
    +1 Very nice result. --- I'm disappointed: you're the co-ordinator, co-ordinator, and principal, it'd be neat if you were also the assistant professor too ;-). Mar 2, 2012 at 8:17
  • 1
    @BrunoLeFloch, Ooops and sorry, that is a dummy text put for illustration only. I just wanted to illustrate that we can put multiple signatures at the bottom with their role.
    – user11232
    Mar 2, 2012 at 9:23
  • 1
    @Dr.HarishKumar Nice output.
    – azetina
    Mar 2, 2012 at 16:24
  • 1
    Nicely done borders!
    – imnothere
    Mar 7, 2012 at 11:59
  • 1
    Oh my .... Does Paulo know this? :D :D
    – user31729
    Oct 13, 2015 at 10:06
60

Mi little contribution with niceframe and wallpaper packages: enter image description here

\documentclass[landscape]{article}
\usepackage{wallpaper}
\usepackage{niceframe}
\usepackage{xcolor}
\usepackage{ulem}
\usepackage{graphicx}
\usepackage{geometry}
\geometry{tmargin=.5cm,bmargin=.5cm,
lmargin=.5cm,rmargin=.5cm}
\usepackage{multicol}
\setlength{\columnseprule}{0.4pt}
\columnwidth=0.3\textwidth

\begin{document}

\TileWallPaper{4cm}{2cm}{tiling.png}

\centering
\scalebox{3}{\color{green!30!black!60}
\begin{minipage}{.33\textwidth}
\font\border=umrandb
\generalframe
{\border \char113} % up left
{\border \char109} % up
{\border \char112} % up right
{\border \char108} % left 
{\border \char110} % right
{\border \char114} % lower left
{\border \char111} % bottom
{\border \char115} % lower right
{\centering

\begin{minipage}{.9\textwidth}
\centering
\includegraphics[height=1.1cm]{escudozz.pdf}
\end{minipage}
\vspace{-8mm}

\curlyframe[.9\columnwidth]{

\textcolor{red!10!black!90}
{\small University of Nobodyknows}\\

\textcolor{green!10!black!90}{
\tiny In honour of out standing performance and dedication to waste time in class we hereby award the}

\smallskip

\textcolor{red!30!black!90}
{\textit{Certificate of}}

\textcolor{black}{\large \textsc{Biggest Sleeper Class}}

\vspace{2mm}

\tiny
to: \uline{\textcolor{black}
{Mr. Dormouse Overwintering Marmot}}

(Master degree)

\vspace{4mm}

{\color{blue!40!black}
\scalebox{.7}{
\begin{tabular}{ccccc}
\cline{1-1} 
\cline{3-3}
\cline{5-5}
\\
Dr. DavidRestless  & &  Dr. Peter Awakened & & Dr. John Workerhard \\
Head of  Department & & Examinor & & Academic Advisor \\ 
\end{tabular}
}}}}
\end{minipage}
}
\end{document}

The images used in this certificate are:

The tile (really a IM FELL FLOWERS 1 font converted to image):

Wallpaper tiling

The University Coat of Arms (self-made pdf with Inkscape using open svg clip-arts). Note that the MWE use the pdf version (change the extension if you wan to compile with this png).

University Coat of Arms

7
  • 1
    This is incredible, can you provide the png files you used?
    – azetina
    Sep 23, 2012 at 3:32
  • 2
    @azetina, of course, I've uploaded the two images.
    – Fran
    Sep 23, 2012 at 5:42
  • 1
    Nice output. where do we get information on characters (\char115).?
    – user11232
    Sep 23, 2012 at 6:49
  • 2
    @HarishKumar, I handle the umrandb characters of niceframe package as explained in this forgotten answer.
    – Fran
    Sep 23, 2012 at 7:00
  • 1
    Can you consider releasing your code in this answer under creativecommons.org/publicdomain/zero/1.0 ? Or add attribution required by the current licence (cc by-sa 3.0 with attribution required)? Nov 20, 2016 at 8:47
26

I have not built entirely the certificates but it's easy to complete the frame.

enter image description here

enter image description here

\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc} 
\usepackage{concrete}  
\PassOptionsToPackage{dvipsnames,svgnames}{xcolor}
\usepackage[object=vectorian]{pgfornament}


\begin{document}

\begin{center} 

\begin{tikzpicture}[color=MidnightBlue,transform shape,scale=1.5, 
                     every node/.style={inner sep=0pt}]
\node[minimum width=10cm,minimum height=8cm,fill=gray!70!blue!15,inner sep=0pt](vecbox){}; 
\node[anchor=north west] at (vecbox.north west)%
{\pgfornament[color=MidnightBlue,width=1cm]{39}};
\node[anchor=north east] at (vecbox.north east)%
{\pgfornament[color=MidnightBlue,width=1cm,symmetry=v]{39}};
\node[anchor=south west] at (vecbox.south west)%
{\pgfornament[color=MidnightBlue,width=1cm,symmetry=h]{39}};
\node[anchor=south east] at (vecbox.south east)%
{\pgfornament[color=MidnightBlue,width=1cm,symmetry=c]{39}};
 \node[anchor=north,yshift=2pt] at (vecbox.north){\pgfornament[width=8 cm,symmetry=h]{88}};
 \node[anchor=south,yshift=-2pt] at (vecbox.south){\pgfornament[width=8 cm]{88}};
 \node[anchor=north,rotate=90,yshift=2pt]  at (vecbox.west){\pgfornament[width=6 cm,symmetry=h]{88}};
 \node[anchor=north,rotate=-90,yshift=2pt] at (vecbox.east){\pgfornament[width=6 cm,symmetry=h]{88}};
 \node[yshift=2cm] (text) at (vecbox.center){\huge Free Diploma College}; 

\end{tikzpicture} 
\end{center}
 \tikzset{pgfornamentstyle/.style={draw = Periwinkle,
                                  fill = purple}}  
\begin{tikzpicture}[color=MidnightBlue,transform shape,scale=1.5, 
                     every node/.style={inner sep=0pt}]
   \draw[fill=gray!70!blue!15](-1.1,0) rectangle coordinate (text) (9.1,8) ;                 
  \foreach \i in {0,2,4,6,8}
     { \node[anchor=south] at (\i,7.32){\pgfornament[width=2 cm]{70}};
       \node[anchor=south] at (\i,0){\pgfornament[width=2 cm]{70}};}
         \foreach \i in {2,4,6,8}
     { \node[anchor=south,rotate=90] at  (-.4cm,\i*0.8){\pgfornament[width=2 cm]{70}};
       \node[anchor=north,rotate=90] at (8.4cm,\i*0.8){\pgfornament[width=2 cm]{70}};} 
   \node[yshift=2cm]  at (text){\huge Free Diploma College};  
\end{tikzpicture}

\end{document}
5
  • 1
    Nice output with your pgornament. Have you seen my post on guilloche?
    – azetina
    Mar 2, 2012 at 16:23
  • 1
    yes and I gave a first answer but I need to find another curve. The problem is completely different. I know that it's about pattern but you need function to draw guilloche. Mar 2, 2012 at 16:45
  • 1
    I figured that one. I remember when my professor asked me to come up with a function that draws a heart...
    – azetina
    Mar 2, 2012 at 16:50
  • 1
    This is just beautiful!
    – percusse
    Mar 2, 2012 at 18:12
  • 1
    I wanted to use LaTeX entirely for the certificate but for borders Hmmmmm... But now Altermundus has a way. My next certificate will be entirely using LaTeX (including borders... Courtesy pgfornaments and Altermundus.). Thanks @Altermundus. Great work.
    – user11232
    Mar 3, 2012 at 0:35
26

There are two approaches you can use. One is to import a picture and accurately place the text over it using the overpic package (see https://tex.stackexchange.com/a/45023/963 for some macros and a key value approach to assist in placing the text). The second is to build the certificate from scratch. If you want a fancy and modern border use the braids package or you can do one with TikZ (note the modern trend is not to use a fancy border).

enter image description here

\documentclass[a4page]{article}
\usepackage[left=2cm,right=1cm,bottom=1cm,top=1cm]{geometry}
\usepackage{lscape}
\usepackage{graphicx}
\usepackage{times}
\usepackage{overpic}
\begin{document}
\begin{center}
\begin{landscape}
\fbox{\begin{minipage}{1.1\textwidth}
\centering
\vspace{1cm}
\centerline{\includegraphics[scale=1.0]{tex}}\par
\vspace{1.3cm}
{\LARGE\itshape This is to certify the Yiannis Lazarides has been\\
 a member of this site for two  years and has answered 500 questions.\par}
\vspace{3cm}
\hbox to 0.9\textwidth{\hfill\Large The Chief Member}
\hbox to 0.9\textwidth{\hfill\Large\bfseries egreg}
\end{minipage}}
\end{landscape}
\end{center}
\end{document}
18

Just for fun with PSTricks. The package psvectorian is not included in TeXLive so you need to download it from http://melusine.eu.org/syracuse/pstricks/vectorian/ and install it. Unfortunately, the manual in English is not available.

enter image description here

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{psvectorian}
%\renewcommand*{\psvectorianDefaultColor}{black}%
\begin{document}

\begin{pspicture}(-5,-5)(5,5)
\psframe(-5,-5)(5,5)
%haut+bas
\rput[tl](-3,5){\psvectorian[width=6cm]{71}}
\rput[bl](-3,-5){\psvectorian[width=6cm,flip]{71}}
%coins
\rput[tl](-5,5){\psvectorian[width=2cm]{63}}
\rput[tr](5,5){\psvectorian[width=2cm,mirror]{63}}
\rput[bl](-5,-5){\psvectorian[width=2cm,flip]{63}}
\rput[br](5,-5){\psvectorian[width=2cm,flip,mirror]{63}}
% cotes
\rput[bl]{-90}(-5,3){\psvectorian[width=6cm]{46}}
\rput[bl]{90}(5,-3){\psvectorian[width=6cm]{46}}
%texte+soulignement+chapeau
\rput(0,0){\Huge Garbage Collector}
\rput[t](0,-0.5){\psvectorian[width=5cm]{75}}
\rput[b](0,0.5){\psvectorian[width=5cm]{69}}
%oiseaux
\rput[tr]{-30}(-1,2.5){\psvectorian[width=2cm]{57}}
\rput[tl]{30}(1,2.5){\psvectorian[width=2cm,mirror]{57}}
\end{pspicture}

\end{document}
4
  • 1
    Just a reminder: One of our senior TikZers Alain Matthes is working on the PGF/TikZ counterpart pgfornament which is currently in beta.
    – percusse
    Sep 22, 2012 at 18:19
  • 1
    @percusse: I submitted this answer to show there is a PSTricks counterpart for pgfornament used by Alain Matthes. :-) Sep 22, 2012 at 18:41
  • 2
    I'll leave my comment here for a proof of my stupidity :) I need a Scroll Lock key.
    – percusse
    Sep 22, 2012 at 18:43
  • 1
    Can you consider releasing your code in this answer under creativecommons.org/publicdomain/zero/1.0 ? Or add attribution required by the current licence (cc by-sa 3.0 with attribution required)? Nov 20, 2016 at 8:49
9

The article Mail merge batch generating documents at Malaysian LaTeX User Group blog explains how to produce certificates with datatool package. They show two results one with a background figure (like Harish Kumar's example) but another with webomints package.

0

I have created a document class for this purpose, but it is way far to be useful. Contribute if you are interested.

Github: Parsa2820/certificate

Sample of a certificate:

\documentclass{../../certificate/certificate}

\begin{document}
    \companylogo{./shariflogo.png}
    \styletile{./tile.png}
    
    \bulkcertify{{John Doe, Jane Doe, Foo Bar}}
\end{document}

enter image description here

.cls file:

%%%%%%%%%%%%%%%%%%%%
%% Identification %%
%%%%%%%%%%%%%%%%%%%%

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{certificate}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Preliminary declarations %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\LoadClass[landscape]{article}
\pagenumbering{gobble}
\setlength{\parindent}{0pt}
\RequirePackage{geometry}
\geometry{tmargin=.5cm, bmargin=.5cm, lmargin=.5cm, rmargin=.5cm}
\RequirePackage{wallpaper}
\RequirePackage{pgffor}
\RequirePackage{graphicx}

%%%%%%%%%%%%%
%% Options %%
%%%%%%%%%%%%%


%%%%%%%%%%%%%%%%%%%%%%%
%% More declarations %%
%%%%%%%%%%%%%%%%%%%%%%%

\newcommand{\@companylogo}{Company Logo}
\newcommand{\@companyname}{Company Name}
\newcommand{\@companytagline}{Company Tagline}
\newcommand{\@certtitle}{Certificate Title}
\newcommand{\@certdate}{1970-01-01}
\newcommand{\@beforename}{Mr. or Ms. }
\newcommand{\@aftername}{ is now cerified.}
\newcommand{\@certdirector}{Certificate Director}
\newcommand{\@certchairman}{Certificate Chairman}
\newcommand{\companylogo}[1]{\renewcommand{\@companylogo}{#1}}
\newcommand{\companyname}[1]{\renewcommand{\@companyname}{#1}}
\newcommand{\companytagline}[1]{\renewcommand{\@companytagline}{#1}}
\newcommand{\certtitle}[1]{\renewcommand{\@certtitle}{#1}}
\newcommand{\certdate}[1]{\renewcommand{\@certdate}{#1}}
\newcommand{\beforename}[1]{\renewcommand{\@beforename}{#1}}
\newcommand{\aftername}[1]{\renewcommand{\@aftername}{#1}}
\newcommand{\certdirector}[1]{\renewcommand{\@certdirector}{#1}}
\newcommand{\certchairman}[1]{\renewcommand{\@certchairman}{#1}}

\newcommand{\@styletile}{Style Tile}
\newcommand{\styletile}[1]{\renewcommand{\@styletile}{#1}}

\newcommand{\certify}[1]{
    \newpage
    \TileSquareWallPaper{5}{\@styletile}
    \centering
    \begin{minipage}{0.7\textwidth}
        \begin{center}
            \includegraphics[height=2.1cm]{\@companylogo} \\
            \textbf{\@companyname} \\
            {\tiny \@companytagline}
            \vspace*{2cm} \\
            {\huge \textbf{\@certtitle}}
            \vspace*{0.5cm} \\
            {\Large \@certdate}
            \vspace*{2cm} \\
            {\Large \@beforename \textbf{#1} \@aftername}
            \vspace*{\fill} \\
            {\normalsize \@certdirector \hspace*{\fill} \@certchairman}
        \end{center}
    \end{minipage}
}

\newcommand{\bulkcertify}[1]{\foreach \x in #1 {\certify{\x} \par}}
2
  • 2
    Instead of just posting a link it would be nice if you could share some code with an image of the corresponding output (like at all the other answers). That makes it much easier for others to judge if it's worth having a look at your package in more detail. Nov 14, 2021 at 6:36
  • 2
    @StefanPinnow Finished. Nov 14, 2021 at 9:26

Not the answer you're looking for? Browse other questions tagged or ask your own question.