PDF: Format und Ränder

Erweiterungsobjekt: eo:iduPdf

Beachten Sie, dass am Anfang der Datei der Namespace für das Erweiterungsobjekt eo:iduPdf definiert werden muss um Funktionen aus diesem Objekt aufrufen zu können: 

<xsl:stylesheet version="1.0"
    ...
    xmlns:iduPdf="eo:iduPdf"
    ... >

Die Seitenaufteilung ergibt sich aus Seitenformat, Orientierung, einer Definition von Seitenrändern, Header und Footer und dem HTML-Body.

Format, Orientierung, Seitenränder und Header/Footer werden als PDF-Konfiguration definiert und reduzieren den verbleibenden Platz des HTML-Body.

Der HTML-Body ist der Container, welcher für die Inhalte des Dokumentes genutzt werden kann.

Hinweis für cardo.Button: Angaben zum Layout können auch schon direkt im Buttonplan angegeben werden.


Über das Erweiterungsobjekt eo:iduPdf stehen zusätzliche Funktionen zur Definition des Layouts zur Verfügung.

Dokumentlayout A4, wie in nachfolgenden Beispielen definiert:

PdfPageLayout(1).png

Definition des Seitenformates:

Wird kein Seitenformat angegeben ist der Standard A4 - Hochformat.

Die Orientierung kann mit der Funktion SetOrientation (Parameter: 'Landscape' oder 'Portrait') geändert werden:

<xsl:variable name="dummy1" select="iduPdf:SetOrientation('Landscape')"/>

Das Papierformat kann mit der Funktion SetPageSizeByName (Parameter: 'A0' bis 'A9') geändert werden:

<xsl:variable name="dummy2" select="iduPdf:SetPageSizeByName('A3')"/>

Alternativ kann die Seitengröße auch mit SetPageSize(breite, hoehe) angegeben werden, wobei die Parameter in mm erwartet werden:

<xsl:variable name="dummy3" select="iduPdf:SetPageSize(210,297)"/>
Hinweis: Passen Sie die sich daraus ergebende Größe des Body-Elementes wie unten beschrieben an.

Definition der Seitenränder:

Über die Erweiterungsfunktion SetMargins(links, rechts, oben unten)
(Größenangaben in mm):

<xsl:variable name="dummy4" select="iduPdf:SetMargins(20, 25, 10, 10)"/>

Alternativ kann auch für alle Seiten der selbe Wert angeben werden:

<xsl:variable name="dummy5" select="iduPdf:SetMargin(20)"/>

Definition von Header und Footer:

Dazu wird ein XML-Fragment vom Typ ButtonPdfHeaderAndFooter erstellt, in welchem optional ein Header oder/und Footer mit einer Höhenangabe definiert werden kann.
Siehe auch: [Header und Footer]

<xsl:variable name="HeaderAndFooter">
    <btn:ButtonPdfHeaderAndFooter>
        <btn:AllPages>
            <btn:Header>
                <btn:HeightMm>10</btn:HeightMm>
                <btn:HtmlWithPlaceHolders>
                    ...
                </btn:HtmlWithPlaceHolders>
            </btn:Header>
            <btn:Footer>
                <btn:HeightMm>20</btn:HeightMm>
                <btn:HtmlWithPlaceHolders>
                    ...
                </btn:HtmlWithPlaceHolders>
            </btn:Footer>
        </btn:AllPages>
    </btn:ButtonPdfHeaderAndFooter>
</xsl:variable>

<xsl:variable name="unused" select="iduPdf:SetPdfHeaderAndFooter($HeaderAndFooter)"/>

 

Nutzung des verbleibenden Bereiches für den Inhalt

Der verbleibende Bereich steht als HTML-Body zur Verfügung, welcher für die Ausgabe des Inhaltes verwendet werden kann. Da das body-Element standardmäßig bereits ein Padding/Margin besitzt, sollte dieses über eine CSS-Regel zurückgesetzt werden. Generell wird empfohlen alle Formatierungen des Inhaltes in einem eigenen xslt-Template zusammenzufassen. Diese Template kann dann oben nach dem html-Tag ausgeführt werden.

Beispiel für ein xslt-Template, welches die CSS-Regeln definiert:

<xsl:template name="addCss">
  <style type="text/css">
    <![CDATA[
      body
      {
        /*Initiale Werte margin und padding zurücksetzen*/
        margin:0px;
        padding:0px;
      }
    ]]>
  </style>
</xsl:template>

 Aufruf des Templates gleich am Anfang des Dokumentes:

<html>
    <!--Aufrufen der Methode zum einfügen des CSS-->
    <xsl:call-template name="addCss" />

    <body>
        ...
    </body>
</html>