Personalisiertes Pdf-Dokument erzeugen

Fragen und Probleme, die nicht den obigen Kategorien zugeordnet werden können


lenherrg
Forum-Anfänger
Forum-Anfänger
Beiträge: 28
Registriert: Sa 13. Feb 2016, 21:23

Personalisiertes Pdf-Dokument erzeugen

Beitrag von lenherrg »

Liebe Experten,

ich habe etwas eine eigenartige Frage. Gerne möchte ich meine Unterlagen personalisieren. D.h. ich möchte, dass auf jedem Seitenrand meines Skriptes eine Personalisierung etwa in der Form "Diese Unterlagen gehören Peter Ohm der Klasse EIN 1b", "Diese Unterlagen gehören Rita Einstein der Klasse EIN 1b" usw. steht.

Ich stelle mir vor, dass ich die Daten (Vorname, Name, Klasse) aus einer Excel-Tabelle oder per CSV einlese. Dann daraus quasi automatisch verschiedene pdf's mit den Entsprechenden Personalisierungen erzeugt werden.
\documentclass[a4paper,12pt]{article}

\usepackage{pdfpages}   % zum Einbinden des pdf-Dokumentes
\begin{document}

\includepdf[pages=-]{Testseiten}

\end{document}

Da das Kompilieren des Grunddokumentes (oben als Testseiten bezeichnet) recht lange dauert, könnte ich mir eine Lösung über das Paket pdfpages vorstellen, wo dann quasi dem Grunddokument die Personalisierung pro Lernender darübergelegt wird.

Lässt sich dies per LaTex realisieren? Wenn ja - wie.
Oder gibt es allenfalls andere geeignete Tools?

Vielen herzlichen Dank für eure Beiträge
lenherrg
Dateianhänge
Testseiten.pdf
(131.84 KiB) 235-mal heruntergeladen
Sage mir und ich vergesse,
zeige mir und ich erinnere,
lass es mich tun und ich verstehe.
(Konfuzius)

Gast

Beitrag von Gast »

Kein Problem:
\documentclass{article}

\usepackage{eso-pic,picture}
\usepackage{csvsimple}
\usepackage{pdfpages}

\begin{filecontents*}{schueler.csv}
  Name,Vorname,Klasse
  Mustermann,Frauke,1a
  Masterfrau,Sven,1b
  Musteres,Hanuk,1a
\end{filecontents*}

\newcommand*{\Vorname}{}
\newcommand*{\Name}{}
\newcommand*{\Klasse}{}
\AddToShipoutPictureFG{%
  \AtTextLowerLeft{%
    \put(-1cm,0){\rotatebox{90}{Diese Unterlagen gehören \Vorname~\Name{} der \Klasse.}}%
  }%
}

\begin{document}
\csvreader[head to column names]{schueler.csv}{}{%
  \includepdf[pages=-]{example-image-a4-numbered}%
}
\end{document}
Wobei auf diesem Weg ein einziges großes Dokument entsteht, das dann alle personalisierten Dokumente enthält. Will man einzelne Dokumente, so wäre zu empfehlen, die Datenbankauswertung in einem externen Skript durchzuführen. Ob man dann jeweils ein (temporäres) LaTeX-Dokument erzeugt, das wieder per pdflatex das Urdokument einliest und per eso-pic oder Seitenstildefinition (beispielsweise mit scrlayer oder fancyhdr) den Namen hineinimpft oder man gleich etwas wie pdftk für ein Wasserzeichen verwendet, ist letztlich Jacke wie Hose.

Nachteil der Verwendung von pdfpages ist übrigens, dass Links innerhalb des Dokuments verloren gehen.

lenherrg
Forum-Anfänger
Forum-Anfänger
Beiträge: 28
Registriert: Sa 13. Feb 2016, 21:23

Beitrag von lenherrg »

Lieber Gast,

du hast mir schonmal ganz tüchtig weitergeholfen und ein erstes Problem ist schonmal gelöst. Danke!!

Nun wäre es natürlich perfekt, wenn ich statt ein grosses, personalisiertes Dokument direkt einzelne kleine, personalisierte Dokumente erzeugen könnte.
Du hast bereits auch schon einen Lösungsansatz angedeutet.

Leider bin ich zu wenig beflissen, als dass mir deine Infos bereits zum Erfolg verhelfen. Kannst du mich bitte nochmals weitergehend unterstützen?

Was meinst du z.B. mit Datenbankauswertung in einem externen Skript?

Den Nachteil vom Linkverlust kann ich in Kauf nehmen.

Vielen Dank und schöna Sunntig
lenherrg
Sage mir und ich vergesse,
zeige mir und ich erinnere,
lass es mich tun und ich verstehe.
(Konfuzius)

Gast

Beitrag von Gast »

lenherrg hat geschrieben:Was meinst du z.B. mit Datenbankauswertung in einem externen Skript?
Je nach OS, beispielsweise ein bash-Script, PowerShell-Script, python, Lua (bietet sich mit TeXLua natürlich an) o. ä. Mit aktiviertem shell-escape kann man natürlich auch aus einem LaTeX-Dokument heraus, die einzelnen LaTeX-Dokumente erzeugen und für diese dann per shellesc den pdflatex-Lauf dafür durchführen. Für das Aufräumen (löschen der temporären Dateien) muss man dann aber doch wieder auf systemabhängige Funktionen oder eben doch auf eine Script-Engine zurückgreifen. Das kann natürlich auch beispielsweise arara sein.

Merke: Je mehr Komfort du haben willst, desto mehr lohnt es sich, ein wenig mit Programmierung zu beschäftigen. Script-Sprachen wie Lua, Perl, Python sind dafür bestens geeignet. Echte TeX-Fragen sind das dann aber schnell nicht mehr. Programme wie arara helfen ggf. den Schritt weiter hinaus zu schieben.

lenherrg
Forum-Anfänger
Forum-Anfänger
Beiträge: 28
Registriert: Sa 13. Feb 2016, 21:23

Beitrag von lenherrg »

Super - schon mal vielen Dank!

Bin gespannt, ob jemand noch eine andere Lösung bringt, deren Umsetzung für mich einfacher ist...
Sage mir und ich vergesse,
zeige mir und ich erinnere,
lass es mich tun und ich verstehe.
(Konfuzius)

Gast

Beitrag von Gast »

Du kannst auch das große Dokument von oben nachträglich mit dem bereits erwähnten pdftk oder einem anderen PDF-Tool in einzelne Dateien zerlegen. Das sollte ebenfalls nicht allzu schwer sein.

Ansonsten: Schau dir die genannten Pakete/Programme wie shellesc und arara an. Wenn es damit konkrete Probleme gibt, frag konkret nach. Nachdem dir bereits Schritte gezeigt und weitere erklärt wurden, solltest du jetzt auch etwas Eigeninitiative zeigen. Wir wissen bis jetzt ja noch nicht einmal, unter welchen Betriebssystemen die Lösung laufen muss.

lenherrg
Forum-Anfänger
Forum-Anfänger
Beiträge: 28
Registriert: Sa 13. Feb 2016, 21:23

Beitrag von lenherrg »

Ich arbeite mit Windows 10.

Danke für all deine Tipps. Ich habe mich bereits ein wenig in die Dokumentation von arara eingelesen.

Ich werde mich jetzt reinhängen und hoffentlich eine entsprechende Lösung finden.

Danke auch für deine Hilfsbereitschaft in Zusammenhang mit arara.
Sage mir und ich vergesse,
zeige mir und ich erinnere,
lass es mich tun und ich verstehe.
(Konfuzius)

Antworten