클라이언트 목록의 청구 확인 세트

클라이언트 목록의 청구 확인 세트

이것이 여기에 맞는지 모르겠지만 내 질문은 다음과 같습니다.

동일한 PDF 내에서 모두 함께 인쇄할 수 있도록 클라이언트 목록에서 일련의 청구 확인을 만들고 싶습니다.

저는 이름과 주소 등을 파이프로 연결하여 청구 확인 템플릿에 채우고 페이지당 3~4회 반복한 다음 나머지 클라이언트와 함께 다음 페이지로 계속 진행하는 반복 알고리즘을 찾고 있습니다. 결국 저는 각 수표 사이에 천공된 절단선이 있는 전체 청구 수표 세트를 인쇄할 수 있는 단일 PDF를 갖고자 합니다.


관련 없음: 이는 당면한 질문과 아무 관련이 없지만 청구 확인 템플릿에 포함할 수 있는 LaTeX가 제공하는 위조 조치가 있습니까?


주의- 실제로 구현하고 싶은 청구서 확인용 템플릿이 없습니다. 하지만 수표 디자인 방법에 대해 인쇄상의 조언을 제공해 주실 수도 있습니다. 나는 청구인의 정보, 비즈니스 그래픽, 수표 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.csvKumar의 답변에 표시된 형식의 파일이 있다고 가정합니다 .

% 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

그 사람의 성별은 두 번째 문자(Mr. 또는 Ms.)에서 스캔되며 이 정보는 "he" 또는 "she"라는 단어에 사용됩니다.

답변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}

청구서 수표

관련 정보