![来自客户列表的索赔检查集](https://linux22.com/image/298859/%E6%9D%A5%E8%87%AA%E5%AE%A2%E6%88%B7%E5%88%97%E8%A1%A8%E7%9A%84%E7%B4%A2%E8%B5%94%E6%A3%80%E6%9F%A5%E9%9B%86.png)
我不知道这是否适合这里,但我的问题是:
我想根据客户列表制作一组索赔支票,以便可以将它们全部一起打印在同一个 PDF 中。
我正在寻找一种重复算法,该算法将姓名和地址等输入管道并填充到索赔支票模板中,然后每页重复 3 或 4 次,然后继续与剩余客户一起进入下一页。最后,我希望有一个 PDF 来打印整个索赔支票集,并在每张支票之间留有穿孔切割线。
无关紧要:这与手头的问题无关,但是 LaTeX 是否提供了任何防伪措施,我可以将其包含在我的索赔检查模板中?
NB- 我实际上没有想要实施的索赔支票模板,但也许您可以就如何设计支票提供一些印刷建议。我知道我需要在某个地方保存我的信息、索赔人的信息、我的业务图形、支票 ID 代码和一些防伪措施。
答案1
这是使用 的起点datatool
。我不会讨论支票(布局)的设计,因为它是单独问题的候选。
\documentclass{article}
\usepackage[a4paper,textheight=5in,left=1in,right=1in]{geometry} %% 5in only for demo
\usepackage{xcolor}%
\usepackage{adjustbox}
%
\usepackage{filecontents}
\begin{filecontents*}{names.csv}
number,Name,money
1,Mr.\,Sreeram P.,12
2,Mr.\,Rajaram K.,20
3,Mr.\,Dhanraj Julien,35
4,Ms.\,Lalitha S.,50
5,Mr.\,Sreeram P.,2
6,Mr.\,Rama Anvesh Reddy,400
7,Ms.\,Shobana R.,65
8,Ms.\,Archana D.,45
9,Mr.\,Selvakumar R.,54
10,Ms.\,Harthi M. G.,14
\end{filecontents*}
\usepackage{datatool}
\begin{document}
%\sloppy
\DTLloaddb{names}{names.csv}
\pagestyle{empty}
\DTLforeach{names}{%
\name=Name,\money=money}{%
\par\noindent
\begin{minipage}{\textwidth}
\vskip\baselineskip
This is to remember that\, {\bfseries\name}\, has to give a sum of {\bfseries\$\money}\, to me which he is reluctant to give.
\vskip0.5\baselineskip
\hspace*{-1in}\makebox[\paperwidth][c]{\Huge\color{gray!40}\dotfill}
%% 1in is the left margin
\end{minipage}
}
\end{document}
答案2
我的示例展示了如何在没有任何 LaTeX 包的情况下完成此任务。假设我们有names.csv
Kumars 答案中所示格式的文件。
% in preamble:
\newread\infile
\def\printletters #1 {\bgroup \endlinechar=-1
\openin\infile=#1 \read\infile to\tmp \printlettersA
}
\def\printlettersA{\ifeof\infile \egroup \else
\read\infile to\tmp
\ifx\tmp\empty \else \expandafter\printlettersB\tmp\par \fi
\expandafter \printlettersA\fi
}
\def\printlettersB #1,#2#3#4,#5\par{\def\sex{#3}\def\name{#2#3#4}\def\money{#3}\printpage}
\def\printpage{%
\bigskip
This is to remember that {\bf\name} has to give a sum of
{\bf\$\money} to me which
\if s\sex s\fi he
is reluctant to give.
\bigskip\hrule\bigskip % or \vfill\eject or...
}
% in document:
\printletters names.csv
请注意,人的性别是从第二个字母(先生或女士)开始扫描的,并且该信息用于单词“他”或“她”。
答案3
该解决方案无耻地寄生于 Harish Kumar 的数据,textmerg
用于合并:
\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage{textmerg}%
\usepackage{filecontents}
\begin{filecontents*}{names.dat}
Mr
Sreeram
P.
12
Mr
Rajaram
K.
20
Mr
Dhanraj
Julien
35
Ms
Lalitha
S.
50
Mr
Sreeram
P.
2
Mr
Rama Anvesh
Reddy
400
Ms
Shobana
R.
65
Ms
Archana
D.
45
Mr
Selvakumar
R.
54
Ms
Harthi
M. G.
14
\end{filecontents*}
\begin{document}
\pagestyle{empty}
\Fields{\honorific\surname\firstname\amount}
\Merge{names.dat}{%
\hrule
\bigskip\par
\noindent This is a reminder that {\bfseries\honorific{} \firstname{} \surname{}} owes me the sum of {\bfseries\pounds\amount}.\bigskip\par
\hrule}
\end{document}