I'm trying to implement a project that would generate small business cards based on a csv file.
I created a code similar to here:
https://tex.stackexchange.com/questions ... s-in-latex
That is, compiling one business card to the first.pdf file, and for the next compilation inserting it into the second page so that you can cut them according to the pattern. It's a two step process. I want these small business cards to be generated straight away from the file. I want to achive only second side of my file and in addition not only one person's business card but one by one each line from the file. But not necessarily, I care more about small business cards, it can be one person's data.
Data.csv looks like:
Code: Select all
Name,Subtitle,Division,Employer,JobTitle,Speciality1,Speciality2,Speciality3,Web,Email1,Email2,Mobile,GPG
{Helena Doe},subtitle,Division,Employer,Job Title,Speciality 1,Speciality 2,Speciality 3,https://fqdn/,helena@univ.edu,hxr42@gmail.com,+1 123 456 7890,425B 030A B8D2 0316 CA1B 4709 CA83 5DDA EC31 CA56
My code:
Code: Select all
\documentclass[11pt,a4paper]{article}
\setstocksize{55mm}{85mm} % UK Stock size
\setpagecc{55mm}{85mm}{*}
\settypeblocksize{45mm}{75mm}{*}
\setulmargins{5mm}{*}{*}
\setlrmargins{5mm}{*}{*}
\usepackage{xcolor}
\usepackage{datatool}
\DTLloaddb{namelist}{data.csv}
\setheadfoot{0.1pt}{0.1pt}
\setheaderspaces{1pt}{*}{*}
\checkandfixthelayout[fixed]
\pagestyle{empty}
\usepackage{pstricks}
\usepackage{auto-pst-pdf,pst-barcode}
%% These packages only for typesetting the instructions
\usepackage{listings}
\usepackage{enumitem}
\usepackage{stackengine}
\usepackage{graphicx}
\newlength\plusheight
\newlength\stackvgap
\def\myvgap{1ex}
\def\myhgap{1ex}
\def\myimg{\protect\includegraphics[scale=1.0]{first}}
\def\myimgwd{\widthof{\myimg}-\widthof{+}}
\def\imgline{\myimg\protect\hspace{\myhgap}\myimg}
\def\seperatorline{+\protect\rule{\myimgwd+\myhgap}{0pt}+\protect\rule{\myimgwd+\myhgap}{0pt}+}
\setlength\plusheight{\heightof{+}}
\addtolength\plusheight{\depthof{+}}
\setlength\stackvgap{\myvgap-\the\plusheight}
\setlength\stackvgap{.5\stackvgap}
\setstackgap{S}{\the\stackvgap}
\pagestyle{empty}
\usepackage{scrextend}
\begin{document}
%% For each line in namelist (which was loaded from data.csv),
%% output the following text (with mailmerged field values)
\DTLforeach{namelist}{%
%% Map each column header in your .csv file to a command
\Name=Name,%
\Subtitle=Subtitle,%
\Division=Division,%
\Employer=Employer,%
\JobTitle=JobTitle,%
\SpecialityOne=Speciality1,%
\SpecialityTwo=Speciality2,%
\SpecialityThree=Speciality3,%
\Web=Web,%
\EmailOne=Email1,%
\EmailTwo=Email2,%
\Mobile=Mobile,%
\GPG=GPG%
}{%%% Start designing your output text!
%%% Mailmerged field values can be inserted using the commands
%%% you've just mapped above.
\begin{Spacing}{0.75}%
\noindent
\textbf{\Name}\\[3pt]
\tiny\mbox{}\Subtitle \hfill {\color{gray}\Division{} / \Employer}\\
\rule{\textwidth}{.3mm}\\
\begin{minipage}[t]{30mm}
\vspace{-0mm}%
\begin{pspicture}(25mm,25mm)
% The MECARD format is used to exchange contact information. More information at:
% https://www.nttdocomo.co.jp/english/service/developer/make/content/barcode/function/application/addressbook/index.html
\psbarcode{MECARD:N:\Name;URL:\Web;EMAIL:\EmailOne;TEL:\Mobile;NOTE:GPG key fingerprint: \GPG;}{eclevel=L width=1 height=1}{qrcode}
\end{pspicture}
\end{minipage}
\hspace{1mm}
\begin{minipage}[t]{42mm}
\vspace{-0mm}%
\begin{flushleft}
{\scriptsize
\begin{Spacing}{1}%
\textbf{\JobTitle}\\[5mm]
% \hspace{5mm}\mbox{}\SpecialityOne\\
\mbox{}\SpecialityOne\\
\mbox{}\SpecialityTwo\\
\mbox{}\SpecialityThree \vspace{2mm}\\
\end{Spacing}
}
{\tiny
\begin{tabular}{@{}rl@{}l}
{\color{gray}email}: & \EmailOne & \\
{\color{gray}mobile}:& \Mobile & \\
\end{tabular}
\vspace*{2mm}
}
\end{flushleft}
\end{minipage}
\rule{74mm}{0mm}\\
\texttt{\fontsize{2.84mm}{3.55mm}\selectfont \GPG} % GPG KEY ID
\end{Spacing}
}
\eject \pdfpagewidth=210mm \pdfpageheight=297mm
\leftskip10mm
\vfill
\Shortstack{%
{\seperatorline}
{\imgline} {\seperatorline}
{\imgline} {\seperatorline}
{\imgline} {\seperatorline}
{\imgline} {\seperatorline}
{\imgline} {\seperatorline}}
\vfill
\end{document}