Sie sind hier

PDF Metadaten in scrlttr2 automatisch einfügen

Hallo,

ich versuche einen Briefkopf für eine Firma zu entwickeln.
Bisher hat auch alles gut funktioniert, auf dem Papier sieht alles fast so aus, wie ich es mir vorgestellt habe.

Da Briefe oft als PDF per Mail verschickt werden, möchte ich die Metadaten automatisch ausfüllen.
Jede Information sollte nur einmal eingegeben werden, um Fehler zu vermeiden.
Ein einfaches \usekomavar¹ reicht dazu nicht aus.
Wie komme ich an den Inhalt der Variablen, um ihn für \hypersetup¹

% !TEX TS-program = pdflatex
% !TEX encoding = UTF-8 Unicode
 
\documentclass[a4paper,11pt,german]{scrlttr2}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{german}
 
\usepackage{hyperref}		% Immer zuletzt laden
 
\setkomavar{fromname}{Mir}
\setkomavar{fromaddress}{Seinestraße 13 \\34567 Meinestadt}
\setkomavar{fromemail}{mail@example.com}
\setkomavar{yourref}[Bestellnummer]{12345}
\setkomavar{yourmail}[Bestelldatum]{2014-11-08}
 
\setkomavar{invoice}[Angebot]{2015-0012}
%\setkomavar{invoice}[Rechnung]{2014-0012}
 
\setkomavar{subject}{Angebot \usekomavar{invoice}} % sehr aufdringlich
 
\hypersetup{% Setup fuer PDF-/Hypertext-Generierung + Metadaten
pdftitle           = {Brief},
pdfauthor          = {ich AG}, % \usekomavar{fromname}
pdfsubject         = {Angebot / Rechnung \usekomavar{invoice}},
pdfkeywords        = {\usekomavar{invoice}},
}
 
% Im pdf:
% Subject: Angebot / Rechnung invoice
% Keywords: invoice
 
\begin{document}
%
% Der eigentliche Brief
%
\begin{letter}{Axel Kielhorn\\Meinestraße 12\\34567 Meinestadt}
 
\opening{Hallo Axel,}
 
vielen Dank für Deine Anfrage. Wir haben mehrere „Lorem Ipsum“ auf Lager und können diese kurzfristig an Deine Anforderungen anpassen.
Allerdings sind wir zur Zeit gut ausgelastet, es wird also ein paar Tage dauern.
 
\closing{Mit freundlichen Grüßen}
 
\end{letter}
\end{document}

Axel

[Admin-Edit:]

  1. <code></code> Tags eingefügt (siehe Formatierungshinweise)

    Bild von Markus Kohm

    \documentclass[a4paper,11pt,german]{scrlttr2}
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{german}
     
    \usepackage{hyperref}		% Immer zuletzt laden
     
    \setkomavar{fromname}{Mir}
    \setkomavar{fromaddress}{Seinestraße 13 \\34567 Meinestadt}
    \setkomavar{fromemail}{mail@example.com}
    \setkomavar{yourref}[Bestellnummer]{12345}
    \setkomavar{yourmail}[Bestelldatum]{2014-11-08}
     
    \setkomavar{invoice}[Angebot]{2015-0012}
    %\setkomavar{invoice}[Rechnung]{2014-0012}
     
    \setkomavar{subject}{Angebot \usekomavar{invoice}} % sehr aufdringlich
     
    \begingroup
      \usekomavar[\def\author]{fromname}
      \usekomavar[\def\invoice]{invoice}
      \hypersetup{% Setup fuer PDF-/Hypertext-Generierung + Metadaten
        pdftitle           = {Brief},
        pdfauthor          = {\author},
        pdfsubject         = {Angebot / Rechnung \invoice},
        pdfkeywords        = {\invoice},
      }
    \endgroup
     
    % Im pdf:
    % Subject: Angebot / Rechnung invoice
    % Keywords: invoice
     
    \begin{document}
    %
    % Der eigentliche Brief
    %
    \begin{letter}{Axel Kielhorn\\Meinestraße 12\\34567 Meinestadt}
     
    \opening{Hallo Axel,}
     
    vielen Dank für Deine Anfrage. Wir haben mehrere „Lorem Ipsum“ auf Lager und können diese kurzfristig an Deine Anforderungen anpassen.
    Allerdings sind wir zur Zeit gut ausgelastet, es wird also ein paar Tage dauern.
     
    \closing{Mit freundlichen Grüßen}
     
    \end{letter}
    \end{document}

    Selbst nach nochmaligem Lesen der Anleitung wäre ich nicht darauf gekommen.

    Jetzt muss ich es nur noch mit \AtBeginDocument in der .lco Datei verstecken.

    Hier nun das vorläufige Ergebnis:

    Eine Briefkonfiguration für ein Unternehmen mit mehreren Standorten: \place.
    Wichtige Briefdaten (Absender, Brief Typ (Angebot / Rechnung) und Angebots- bzw. Rechnungsnummer) werden in den PDF Metadaten hinterlegt, um eine Suche / Klassifizierung zu erleichtern.
    Im Original wird eine kommerzielle OpenType Schrift verwendet, daher XeLaTeX.

    Ziel war es, so viele Sachen wie möglich in der .lco Datei zu verstecken.
    Somit können auch TeX Unkundige damit leicht Briefe erstellen.
    Durch die Verwendung von Variablen müssen die Daten nur einmal eingegeben werden, das verhindert inkonsistente Daten.

    % !TEX encoding = UTF-8 Unicode
     
    %% This is file `office.lco'.
    %%
    %% Copyright (c) 2015 Axel Kielhorn
    %%
    %% It may be distributed and/or modified under the
    %% conditions of the LaTeX Project Public License, either version 1.3c
    %% of this license or (at your option) any later version.
    %% The latest version of this license is in
    %%    http://www.latex-project.org/lppl.txt
    %% and version 1.3c or later is part of all distributions of LaTeX
    %% version 2005/12/01 or later.
     
    % Schriftauswahl mit XeLaTeX
     
    \usepackage{fontspec} % Standard font ist Latin Modern Roman
    %\setromanfont[Ligatures=TeX]{DejaVu Sans}
    %\setsansfont[Ligatures=TeX]{DejaVu Sans}
     
    \usepackage{graphicx}
    \usepackage[german,iso]{isodate}
    \usepackage{hyperref}		% Immer zuletzt laden
    \usepackage{polyglossia} 	% außer wenn polyglossia danach kommt (wg. bidi)
    \setdefaultlanguage[babelshorthands,spelling=new,latesthyphen]{german} 
     
    %\makeatletter % In der .lco Datei ist @ bereits letter.
    \@setplength{tfoldmarklength}{4mm}%
     
    \@setplength{locwidth}{150pt}
     
    % Fensterumschlag mir 25 mm Rand (normal 20 mm)
    %\@setplength{toaddrhpos}{25mm}
    %\@setplength{firstheadhpos}{25mm}
    %\@addtoplength{firstheadwidth}{-10mm}
     
    %\makeatother
     
    \addtokomafont{fromname}{\LARGE}
    \addtokomafont{refvalue}{\small} 
     
    \setkomavar{firsthead}{%
      \parbox[b]{\useplength{firstheadwidth}}%
      {\parbox[b]{250pt}{
      \usekomafont{fromaddress}{%
          \ifkomavarempty{fromname}{}{%
            {\usekomafont{fromname}%
              {\ignorespaces\usekomavar{fromname}}}\\
          }}%
          \ifkomavarempty{place}{}{%
             \ignorespaces Büro \usekomavar{place}}%
      }%
      \hfill%
      \parbox[b]{\useplength{locwidth}}{\small \usekomavar{fromaddress}\\\usekomavar{fromemail}}%
      }
    }
     
    \setkomavar{backaddressseparator}{ · } % Unicode statt Mathe
    %\setkomavar{fromlogo}{\includegraphics[scale=0.6]{German-logo}}
     
    \newkomavar{brieftyp}
    \newkomavar{briefnr}
    \AtBeginDocument{\ifkomavarempty{brieftyp}{}
                                 {\setkomavar{invoice}[\usekomavar{brieftyp}]{\usekomavar{briefnr}}}}
    \AtBeginDocument{\ifkomavarempty{brieftyp}{}
                                 {\setkomavar{subject}{\usekomavar{brieftyp} \usekomavar{briefnr}}}}
    \AtBeginDocument{
      \usekomavar[\def\author]{fromname}
      \ifkomavarempty{brieftyp}{\def\brieftyp{}}{\usekomavar[\def\brieftyp]{brieftyp}}
      \ifkomavarempty{brieftyp}{\def\briefnr{}}{\usekomavar[\def\briefnr]{briefnr}}
      \hypersetup{% Setup fuer PDF-/Hypertext-Generierung + Metadaten
        pdftitle           = {\brieftyp},
        pdfauthor          = {\author},
        pdfsubject         = {\brieftyp\ \briefnr},
        pdfkeywords        = {\author, \brieftyp\ \briefnr},
        pdflang            = de,
        pdfdisplaydoctitle = true,
        colorlinks         = true,
        plainpages         = false,
        hypertexnames      = false,
        unicode            = true,
      }
    }

    Und hier ein Musterbrief:

    % !TEX encoding = UTF-8 Unicode
    % !TEX TS-program = XeLaTeX
     
    %% This is file `office.tex'.
    %%
    %% Copyright (c) 2015 Axel Kielhorn
    %%
    %% It may be distributed and/or modified under the
    %% conditions of the LaTeX Project Public License, either version 1.3c
    %% of this license or (at your option) any later version.
    %% The latest version of this license is in
    %%    http://www.latex-project.org/lppl.txt
    %% and version 1.3c or later is part of all distributions of LaTeX
    %% version 2005/12/01 or later.
     
    \documentclass[a4paper,11pt,DIN,office,]{scrlttr2}
     
    \setkomavar{fromname}{Ich AG}
    \setkomavar{place}{Meinestadt}
    \setkomavar{fromaddress}{Meinestraße 12\\ 34567 Meinestadt} % keine Leerzeichen vor den \\
    \setkomavar{fromemail}{ich@example.com}
    %\setkomavar{fromphone}{0\,12\,34~56\,78}
    %
    %
    % Fußtext manuell anpassen. (Kann auch automatisiert werden, siehe invoice in office.lco)
    %
    % Rechnung
    %
    %\setkomavar{firstfoot}{\tiny
    %Rechnung ist bezahlbar innerhalb von 14 Tagen.  Nach Ablauf der Frist
    %werden Zinsen zu einem monatlichen Satz von 1.5\% verrechnet.}
    %
    % Angebot
    %
    \setkomavar{firstfoot}{\tiny Angebot gültig bis 2015-05-31. 
    Lieferung frühestens 10 Werktage nach Bestelleingang.}
     
    %
    % Briefdaten
    %
    \setkomavar{yourref}[Bestellnummer]{12345}
    \setkomavar{yourmail}[Bestelldatum]{2014-11-08}
    \setkomavar{myref}[Verkäufer]{ICH}
    \setkomavar{signature}{Ich Selbst}
    \setkomavar{customer}[Lieferung per]{e-Mail}
     
    \setkomavar{brieftyp}{Angebot} % Angebot / Rechnung / leer
    \setkomavar{briefnr}{A2015-0012} % Nur wenn brieftyp nicht leer ist
    %\setkomavar{location}{}
     
    \begin{document}
    %
    % Der eigentliche Brief
    %
    \begin{letter}{Axel Kielhorn\\Deine Straße 23\\34567 Meinestadt}
     
    \opening{Hallo Axel,}
     
    vielen Dank für Deine Anfrage. Wir haben mehrere „Lorem Ipsum“ auf Lager und können diese 
    kurzfristig an Deine Anforderungen anpassen.
    Allerdings sind wir zur Zeit gut ausgelastet, es wird also ein paar Tage dauern.
     
    \closing{Mit freundlichen Grüßen}
     
    \end{letter}
    \end{document}

    Leider gibt es keinen komafont firstfoot, daher ist das \tiny für das Kleingedruckte notwendig,
    ein \addtokomafont{firstfoot}{\tiny} wäre natürlich eleganter.
    (Nächste KomaScript Version?)

    Axel

    Bild von Markus Kohm

    Da Du mit \def arbeitest, würde ich empfehlen, das innerhalb einer Gruppe zu machen, um nicht unnötig und versehentlich eine Anweisung umzudefinieren.

    Danke für den Hinweis.

    Die Klammern sind beim Ändern in \AtBeginDocument verlorengegangen.
    Hier der korrigierte Abschnitt aus der .lco Datei.

    Den Befehl \author gibt es wirklich, auch wenn er in scrlttr2 nicht benötigt wird.

    \AtBeginDocument{{
      \usekomavar[\def\author]{fromname}
      \ifkomavarempty{brieftyp}{\def\brieftyp{}}{\usekomavar[\def\brieftyp]{brieftyp}}
      \ifkomavarempty{brieftyp}{\def\briefnr{}}{\usekomavar[\def\briefnr]{briefnr}}
      \hypersetup{% Setup fuer PDF-/Hypertext-Generierung + Metadaten
        pdftitle           = {\brieftyp},
        pdfauthor          = {\author},
        pdfsubject         = {\brieftyp\ \briefnr},
        pdfkeywords        = {\author, \brieftyp\ \briefnr},
        pdflang            = de,
        pdfdisplaydoctitle = true,
        colorlinks         = true,
        plainpages         = false,
        hypertexnames      = false,
        unicode            = true,
      }
    }}
    Comments for "PDF Metadaten in scrlttr2 automatisch einfügen" abonnieren