Formulare ausfüllen mit LaTeX

Anbei mal ein Beispiel, wie man mit LaTeX Papierformulare ausfüllen kann, Grundlage war ein eingescanntes Avery Zweckform-Formular vom Typ Überweisungsformular 2816, formular.pdf, über das entsprechende Textfelder gelegt sind. Das geänderte Spacing ist eigentlich nicht nötig, ich wollte aber genau in die einzelnen Buchstabenfelder reindrucken.

\documentclass[fontsize=14pt,ngerman]{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[]{graphicx}
 
 
\newcommand{\mybank}{MBS Potsdam}
\newcommand{\myblz}{15070000}
\newcommand{\myaccount}{1234567890}
\newcommand{\sender}{Uwe Ziegenhagen}
\newcommand{\receiver}{Stammtisch}
\newcommand{\receiverbank}{KSK Köln}
\newcommand{\receiverblz}{14080000}
\newcommand{\receiveraccount}{3234567891}
\newcommand{\amount}{123,45----}
\newcommand{\reference}{Beitrag 2010}
\newcommand{\morereference}{Uwe Ziegenhagen,Köln}
 
% to position textblocks on the page
\usepackage[absolute,overlay]{textpos}
\setlength{\TPHorizModule}{1mm}
\setlength{\TPVertModule}{1mm}
 
\usepackage[]{microtype}
%use textls{<Text>} to control space between characters
 
% override definition of pagesize
\usepackage[screen,paperheight=29.7cm,
paperwidth=21cm, left=0mm,right=0mm,
top=0mm,bottom=0mm]{geometry} %
 
\usepackage{eso-pic}
% to include the scanned form in the background
% useful for positioning the boxes
 
\usepackage[num]{isodate} % Date i dd.mm.yyyy Format
 
\newcommand{\mtscale}{250} % scaling factor for the \textls command
\newcommand{\boxfactor}{1.3} % Scalefactor for the text
 
% put everything in one command
\newcommand{\putformtext}[1]{\scalebox{\boxfactor}{\texttt{\textls[\mtscale]{#1}}}} % 
 
\begin{document}
% next line requires scanned form
\AddToShipoutPicture*{\put(0,0){\includegraphics{formular}}}
 
\begin{textblock*}{50mm}(1mm,9mm)
\putformtext{\mybank}
\end{textblock*}
 
\begin{textblock*}{50mm}(65mm,9mm)
\putformtext{\myblz}
\end{textblock*}
 
\begin{textblock*}{50mm}(2.5mm,22mm)
\putformtext{\receiver}
\end{textblock*}
 
\begin{textblock*}{50mm}(2.5mm,31mm)
\putformtext{\receiveraccount}
\end{textblock*}
 
\begin{textblock*}{50mm}(98mm,31mm)
\putformtext{\receiverblz}
\end{textblock*}
 
\begin{textblock*}{50mm}(2.5mm,39mm)
\putformtext{\receiverbank}
\end{textblock*}
 
\begin{textblock*}{50mm}(78mm,48mm)
\putformtext{\amount}
\end{textblock*}
 
\begin{textblock*}{50mm}(2.5mm,56mm)
\putformtext{\reference}
\end{textblock*}
 
\begin{textblock*}{50mm}(2.5mm,65mm)
\putformtext{\morereference}
\end{textblock*}
 
\begin{textblock*}{50mm}(2.5mm,73mm)
\putformtext{\sender}
\end{textblock*}
 
\begin{textblock*}{50mm}(2.5mm,82mm)
\putformtext{\myaccount}
\end{textblock*}
 
\begin{textblock*}{50mm}(58mm,97mm)
\texttt{\today}
\end{textblock*}
 
%%%%%%%%%%%%%%%%%%%%%%% Zweiter Teil
 
\begin{textblock*}{50mm}(1mm,114mm)
\putformtext{\mybank}
\end{textblock*}
 
 
\begin{textblock*}{50mm}(65mm,114mm)
\putformtext{\myblz}
\end{textblock*}
 
\begin{textblock*}{50mm}(2.5mm,128mm)
\putformtext{\receiver}
\end{textblock*}
 
\begin{textblock*}{50mm}(2.5mm,137mm)
\putformtext{\receiveraccount}
\end{textblock*}
 
\begin{textblock*}{50mm}(98mm,137mm)
\putformtext{\receiverblz}
\end{textblock*}
 
\begin{textblock*}{50mm}(2.5mm,145mm)
\putformtext{\receiverbank}
\end{textblock*}
 
\begin{textblock*}{50mm}(78mm,153mm)
\putformtext{\amount}
\end{textblock*}
 
\begin{textblock*}{50mm}(2.5mm,163mm)
\putformtext{\reference}
\end{textblock*}
 
\begin{textblock*}{50mm}(2.5mm,170mm)
\putformtext{\morereference}
\end{textblock*}
 
\begin{textblock*}{50mm}(2.5mm,179mm)
\putformtext{\sender}
\end{textblock*}
 
\begin{textblock*}{50mm}(2.5mm,188mm)
\putformtext{\myaccount}
\end{textblock*}
\end{document}

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website