# Package for certificates

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.

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

• Regarding the borders, maybe you should have a look at this question, and especially at Altermundus' answer. 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. 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

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.

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:

And finally the certificate is here:

This is just for fun and dedicated to Paulo :)

• +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
• @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
• @Dr.HarishKumar Nice output. Mar 2, 2012 at 16:24
• Nicely done borders! Mar 7, 2012 at 11:59
• Oh my .... Does Paulo know this? :D :D
– user31729
Oct 13, 2015 at 10:06

Mi little contribution with niceframe and wallpaper packages:

\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):

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).

• This is incredible, can you provide the png files you used? Sep 23, 2012 at 3:32
• @azetina, of course, I've uploaded the two images.
– Fran
Sep 23, 2012 at 5:42
• Nice output. where do we get information on characters (\char115).?
– user11232
Sep 23, 2012 at 6:49
• @HarishKumar, I handle the umrandb characters of niceframe package as explained in this forgotten answer.
– Fran
Sep 23, 2012 at 7:00
• 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

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

\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}

• Nice output with your pgornament. Have you seen my post on guilloche? Mar 2, 2012 at 16:23
• 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
• I figured that one. I remember when my professor asked me to come up with a function that draws a heart... Mar 2, 2012 at 16:50
• This is just beautiful! Mar 2, 2012 at 18:12
• 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

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).

\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}


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.

\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}

• Just a reminder: One of our senior TikZers Alain Matthes is working on the PGF/TikZ counterpart pgfornament which is currently in beta. Sep 22, 2012 at 18:19
• @percusse: I submitted this answer to show there is a PSTricks counterpart for pgfornament used by Alain Matthes. :-) Sep 22, 2012 at 18:41
• I'll leave my comment here for a proof of my stupidity :) I need a Scroll Lock key. Sep 22, 2012 at 18:43
• 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

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.

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}


.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{\@styletile}{Style Tile}

\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}}

• 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
• @StefanPinnow Finished. Nov 14, 2021 at 9:26