I'd like to generate a single PDF file containing multiple exams (template available below).
Each exam must have the field 'name' (see template) filled with the name of a student taken from a external list file (such as .csv).
Template:
\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[top=6mm,includehead,left=1.5cm,bottom=2cm,right=1.5cm,headsep=0.5cm]{geometry}
\usepackage{tikz}
\usepackage{multicol}
\usepackage{xcolor}
\usepackage{fancyhdr}
\usepackage{lipsum}
\renewcommand{\footrulewidth}{1.2pt} % linha no footer
\renewcommand{\headrulewidth}{1.2pt}% linha no header
\lfoot{\ttfamily \today}
\rfoot{\ttfamily 14 de dezembro de 2018}
\pagestyle{fancy}
\fancypagestyle{firststyle}{%
\renewcommand{\headrulewidth}{0pt}% Remove header rule
\lhead{%
\def\scale{0.6}%
\def\roundc{\scale*0.1cm}% rc = 10% de sc
\raisebox{-2\baselineskip}[0pt][0pt]{\begin{tikzpicture}[scale=\scale]
\definecolor{tempcolor}{RGB}{200,25,30}
\filldraw[tempcolor][rounded corners=\roundc] (2cm,0cm) rectangle (1.2cm,-0.5cm);
\filldraw[tempcolor][rounded corners=\roundc] (2cm,-0.6cm) rectangle (1.1cm,-1.1cm);
\filldraw[tempcolor][rounded corners=\roundc] (2cm,-0.6cm) rectangle (1.5cm,-1.1cm);
\filldraw[tempcolor][rounded corners=\roundc] (1.7cm,-1.2cm) rectangle (1.2cm,-1.7cm);
\filldraw[tempcolor][rounded corners=\roundc] (0.6cm,-1.2cm) rectangle (1.1cm,-1.7cm);
\filldraw[tempcolor][rounded corners=\roundc] (1.6cm,-1.2cm) rectangle (1.8cm,-1.7cm);
\filldraw[tempcolor][rounded corners=\roundc] (1.7cm,-1.8cm) rectangle (1.2cm,-2.3cm);
\node[scale=\scale,fill=white] at (5.92,-0.85) {\resizebox{6.7cm}{0.5cm}{\sffamily \textbf{ESCOLA}}};
\node[scale=\scale,fill=white] at (4.52,-1.55) {\resizebox{5cm}{0.5cm}{\sffamily {Construindo o Futuro}}};
\end{tikzpicture}}
}
\chead{\raisebox{-2\baselineskip}[0pt][0pt]{\rule[-2.5\baselineskip]{\linewidth}{1.2pt}}}
\rhead{\raisebox{-2\baselineskip}[0pt][0pt]{\begin{tabular}{@{}r@{}}
\tikz \node at (0,0) {\textbf{Final Exam}};\\
\tikz[baseline]{\node[anchor=base, draw=black, thick, minimum width=8.5cm, minimum height=7mm,rounded corners, yshift=-2mm,label={[fill=white,label distance=-2mm,inner xsep=2pt]90:{\ttfamily Name}:}] {\phantom{\ttfamily 15,0}};}
\tikz[baseline]{\node[anchor=base, draw=black, thick, minimum width=2cm, minimum height=7mm,rounded corners, yshift=-2mm,label={[fill=white,label distance=-2mm,inner xsep=2pt]90:{\ttfamily Turma}:}] {\phantom{\ttfamily 15,0}};}
\tikz[baseline]{\node[anchor=base, draw=black, thick, minimum width=1.5cm, minimum height=7mm,rounded corners, yshift=-2mm,label={[fill=white,label distance=-2mm,inner xsep=2pt]90:{\ttfamily Valor}:}] {\ttfamily 15,0};}
\tikz[baseline]{\node[anchor=base, draw=black, thick, minimum width=1.5cm, minimum height=7mm,rounded corners, yshift=-2mm,label={[fill=white,label distance=-2mm,inner xsep=2pt]90:{\ttfamily Nota}:}] {\phantom{\ttfamily 15,0}};}
\end{tabular}}
}
\lfoot{\ttfamily Prof. Lucas}
\rfoot{\ttfamily \today}
}
\AtBeginDocument{
\thispagestyle{firststyle}
\vspace*{2\baselineskip}
}
\begin{document}
\begin{multicols}{2}
\begin{enumerate}
\item \lipsum[1]
\item \lipsum[1]
\item \lipsum[1]
\item \lipsum[1]
\item \lipsum[1]
\item \lipsum[1]
\item \lipsum[1]
\item \lipsum[1]
\item \lipsum[1]
\item \lipsum[1]
\item \lipsum[1]
\item \lipsum[1]
\item \lipsum[1]
\end{enumerate}
\end{multicols}
\end{document}


Only a detail: From this suggested code the page numbering runs continually.
How could I fix it?
– FrozenCore Dec 20 '18 at 01:14middle1,middle2etc. and read them out with\ReadOutElement{\loadedtable}{\X}{middle1}{\tmpfmidone}etc. Page numbers can be reset e.g. with\setcounter{page}{0}. I am not really online now, but if you continue having problems let me know, I will be online in a bit. – Dec 20 '18 at 02:56I have an additional problem: The student's names have different quantity of middle names. So, when I compile the file, I get this error:
! Package pgfplots Error: input table 'students.csv' has an unbalanced number of columns in row '1' (expected '5' cols; got '4').
What I could add to the code so it ignores when it finds a row with fewer columns than expected? I would like that the code be able to print as many columns as it finds.
– FrozenCore Dec 20 '18 at 08:54