PDF Ausgabe: Unterschied zwischen den Versionen

Aus Contao Community Documentation

Zeile 34: Zeile 34:
  
 
<source lang="php">
 
<source lang="php">
define('PDF_MARGIN_HEADER', 0);              // Abstand der Kopfzeile zum oberen Rand
+
    define('PDF_MARGIN_HEADER', 0);              // Abstand der Kopfzeile zum oberen Rand
define('PDF_MARGIN_FOOTER', 0);              // Abstand der Fusszeile zum unteren Ende
+
    define('PDF_MARGIN_FOOTER', 0);              // Abstand der Fusszeile zum unteren Ende
define('PDF_MARGIN_TOP', 10);                // Abstand des Inhaltes zum oberen Rand
+
    define('PDF_MARGIN_TOP', 10);                // Abstand des Inhaltes zum oberen Rand
define('PDF_MARGIN_BOTTOM', 10);            // Abstand des Inhaltes zum unteren Ende
+
    define('PDF_MARGIN_BOTTOM', 10);            // Abstand des Inhaltes zum unteren Ende
define('PDF_MARGIN_LEFT', 15);              // Abstand des Inhaltes zum linkenRand
+
    define('PDF_MARGIN_LEFT', 15);              // Abstand des Inhaltes zum linkenRand
define('PDF_MARGIN_RIGHT', 15);              // Abstand des Inhaltes zum rechten Rand
+
    define('PDF_MARGIN_RIGHT', 15);              // Abstand des Inhaltes zum rechten Rand
define('PDF_FONT_NAME_MAIN', 'freeserif');  // Verwendeter Schriftsatz des Inhaltes
+
    define('PDF_FONT_NAME_MAIN', 'freeserif');  // Verwendeter Schriftsatz des Inhaltes
define('PDF_FONT_SIZE_MAIN', 12);            // Schriftgrösse des Inhaltes
+
    define('PDF_FONT_SIZE_MAIN', 12);            // Schriftgrösse des Inhaltes
define('PDF_FONT_NAME_DATA', 'freeserif');  // Standardmässig nicht verwendeter Schriftsatz
+
    define('PDF_FONT_NAME_DATA', 'freeserif');  // Standardmässig nicht verwendeter Schriftsatz
define('PDF_FONT_SIZE_DATA', 12);            // Standardmässig nicht verwendete Schriftgrösse
+
    define('PDF_FONT_SIZE_DATA', 12);            // Standardmässig nicht verwendete Schriftgrösse
 
</source>
 
</source>
  
Zeile 50: Zeile 50:
  
 
* Courier
 
* Courier
* Freeserif *
+
* Freeserif
* helvetica *
+
* helvetica
 +
 
 +
=Kopfzeile Formatieren=
 +
Mit den Standardeinstellungen von Contao ist sowohl die Kopf- wie auch die Fusszeile deaktiviert. Die anschliessende Beschreibung enthält die nötigen Informationen, um eine individuelle Kopfzeile zu gestalten.
 +
 
 +
==Schriftsatz und grösse==
 +
Damit in die Übersicht der PDF Formatierung erhalten werden kann, empfielt es sich in der konfigurationsdatei "tcpdf.php" zwei neue Variablen zu definieren. Diese sollten einen möglichst aussagekräftigen Namen haben:
 +
 
 +
<source lang="php">
 +
    define('PDF_FONT_SIZE_HEAD', 10);
 +
    define('PDF_FONT_MONOSPACED', 'freemono');
 +
</source>
 +
 
 +
Zwecks Nachvollziehbarkeit ist es sinnvoll diese zwei Zeilen direkt unterhalb der bestehenden Schriftdefinitionen einzufügen.
 +
 
 +
==Inhalt der Kopfzeile==
 +
Die Konfigurationsdatei "tcpdf.php" stellt vier Variablen zur Verfügung, die mit dem Inhalt der Kopfzeile befüllt werden können. <div style="float:right;">{{Anmerkung|Standardmässig Zeilen 48 - 51}}</div>
 +
<source lang="php">
 +
    define('PDF_HEADER_TITLE', $GLOBALS['TL_CONFIG']['websiteTitle']);
 +
    define('PDF_HEADER_STRING', '');
 +
    define('PDF_HEADER_LOGO', '');
 +
    define('PDF_HEADER_LOGO_WIDTH', 30);
 +
</source>
 +
 
 +
Die ersten zwei Variablen ermöglichen die Ausgabe eines Kopfzeilentitels und eines Kopfzeilentextes. Standardmässig ist als Kopfzeilentitel mit dem Titel der Webseite gefüllt.
 +
Manchmal ist es gewünscht in der Kopfzeile ein Bild zu zeigen.
 +
Das entsprechende Bild muss dafür via FTP in das Verzeichnis ''/plugins/tcpdf/images/'' abgelegt werden. Die Breite des Bildes muss in der Einheit Millimeter bekannt sein.
 +
 
 +
Die Variable <span style="color:blue">PDF_HEADER_LOGO</span> wird mit dem Namen des Bildes (ohne Pfad) gefüllt. In die zweite Variable <span style="color:blue">PDF_HEADER_LOGO_WIDTH</span> wird die Breite des Bildes in Millimeter eingetragen.
 +
Beispiel:
 +
<source lang="php">
 +
    define('PDF_HEADER_TITLE', $GLOBALS['TL_CONFIG']['websiteTitle']);
 +
    define('PDF_HEADER_STRING', 'Meine Kopfzeile');
 +
    define('PDF_HEADER_LOGO', 'logo.jpg');
 +
    define('PDF_HEADER_LOGO_WIDTH', 25);
 +
</source>
 +
 
 +
==Anzeigen der Kopfzeile==
 +
Damit die Eingetragenen Werte der Kopfzeile im PDF hinzugefügt werden könne braucht es einige anpassungen in der Datei "Controller.php". Mit einer Suche nach dem Schlüsselwort "<span style="color:blue">$pdf</span>" lassen sich die Zeilen die zu bearbeiten sind relativ leicht finden.<div style="float:right;">{{Anmerkung|Standardmässig Zeilen 1089 - 1133}}</div>
 +
 
 +
Als erstes muss die Kopfzeile aktivert werden. Dies lässt sich erreichen indem vor folgende Zeile zwei Slasches // gesetzt werden:
 +
<source lang="php">    $pdf->setPrintHeader(false);</source>
 +
 
 +
Nachdem die Ausgabe einer Kopfzeile aktiviert ist muss diese auch geschrieben werden. Das erreicht man mit folgender Zeile, die direkt unterhalb der auskommentierten deaktivierung eingefügt werden sollte.
 +
<source lang="php">    $pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING);</source>
 +
 
 +
Als nächstes müssen die eingestellten Schrifteigenschaften gesetzt werden. Dazu müssen folgende Zeilen hinzugefügt werden:
 +
<source lang="php">    // set header and footer fonts
 +
    $pdf->setHeaderFont(Array(PDF_FONT_NAME_HEAD, '', PDF_FONT_SIZE_HEAD))
 +
</source>
 +
 
 +
Zum Schluss soll noch dafür gesorgt werden, dass die eingestellten Abstände von der Kopfzeile auch eingehalten werden. Dazu reicht es, wenn folgende Zeile unterhalb der <span style="color:blue">$pdf</span>->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); eingefügt wird.
 +
 
 +
<source lang="php">    $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);</source>
 +
 
 +
Damit sind alle Einstellungen getroffen, um eine Kopfzeile inklusive Bild anzuzeigen.
 +
Der vollständige, veränderte Code sollte in etwa so aussehen:<div style="float:right;">{{Anmerkung|Zeilen 1089 - 1108}}</div>
 +
<source lang="php">
 +
    // Remove default header/footer
 +
    //$pdf->setPrintHeader(false);
 +
    $pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING);
 +
    $pdf->setPrintFooter(false); 
 +
   
 +
    // set header and footer fonts
 +
    $pdf->setHeaderFont(Array(PDF_FONT_NAME_HEAD, '', PDF_FONT_SIZE_HEAD));
 +
 
 +
    // Set margins
 +
    $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
 +
    $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
 +
</source>
 +
 
 +
 
 +
 
 +
 
 +
 
  
<pre>* Durch anhängen von "b" und "i" auch als "Bold", "Bold-Italic" und "Italic" verfügbar.</pre>
 
  
 
=Weblinks=
 
=Weblinks=
 
*[http://www.tcpdf.org/fonts.php Schriftsätze hinzufügen] (englisch)
 
*[http://www.tcpdf.org/fonts.php Schriftsätze hinzufügen] (englisch)
*[http://www.contao.org/board/topic/9083.html Erstes Tutorial für Kopfzeilen]
+
*[http://www.contao.org/board/topic/9083.html Kopfzeilen Tutorial von Nina]

Version vom 27. Mai 2011, 09:49 Uhr

MsgError.png Unvollständiger Artikel: dieser Artikel ist noch nicht sauber bearbeitet.

Bitte erweitere ihn und entferne erst anschliessend diesen Hinweis.

betrifft
Contao Version 2.9


PDF Ausgabe manuel gestalten

Contao bietet standardmässig die Möglichkeit, einen Artikel als PDF zu exportieren. Die Standardformatierung ist jedoch etwas eigensinnig und passt in den wenigstens fällen zur Gestaltung der restlichen Webseite. Der nachfolgende Artikel erklärt, wie man die PDF Ausgabe schritt für schritt personalisieren kann. Voraussetzung ist der Zugriff über FTP zur Webseite. Grundlegende PHP Kentnisse sind sicherlich von Vorteil.


Die beschriebenen Manipulationen sind nicht Updatesicher. Sie müssen also nach einer Aktualisierung erneut durchgeführt werden!

"Wichtig"


Benötigte Ressourcen

Um die nachfolgend beschriebenen Änderungen durchzuführen werden die folgenden Dateien gebraucht.

Datei Pfad
Controller.php /system /libraries /
tcpdf.php /system /config /
tcpdf.php /plugins /tcpdf /
Achtung.png Achtung: Die Datei "tcpdf.php" existiert zweimal in getrennten Verzeichnissen. Die beiden Dateien dürfen keinesfalls vertauscht werden!


Hinweis.png Hinweis: Damit bei möglichen Fehlern bei der Umsetzung der Anleitung die Webseite nicht in Mitleidenschaft gezogen wird sollte eine Sicherheitskopie der entsprechenden Dateien gemacht werden.


Inhalt Formatieren

Contao bietet gewisse Möglichkeiten, um den Inhalt der PDF Artikel zu formatieren. Grundlegende Einstellungen betreffend der Formatierung der Ausgabe werden in der tcpdf.php Konfigurationsdatei gemacht.

Inhaltlich sind folgende Zeilen interessant:
Anmerkung.png Anmerkung: Standardmässig Zeilen 53 - 62
    define('PDF_MARGIN_HEADER', 0);              // Abstand der Kopfzeile zum oberen Rand
    define('PDF_MARGIN_FOOTER', 0);              // Abstand der Fusszeile zum unteren Ende
    define('PDF_MARGIN_TOP', 10);                // Abstand des Inhaltes zum oberen Rand
    define('PDF_MARGIN_BOTTOM', 10);             // Abstand des Inhaltes zum unteren Ende
    define('PDF_MARGIN_LEFT', 15);               // Abstand des Inhaltes zum linkenRand
    define('PDF_MARGIN_RIGHT', 15);              // Abstand des Inhaltes zum rechten Rand
    define('PDF_FONT_NAME_MAIN', 'freeserif');   // Verwendeter Schriftsatz des Inhaltes
    define('PDF_FONT_SIZE_MAIN', 12);            // Schriftgrösse des Inhaltes
    define('PDF_FONT_NAME_DATA', 'freeserif');   // Standardmässig nicht verwendeter Schriftsatz
    define('PDF_FONT_SIZE_DATA', 12);            // Standardmässig nicht verwendete Schriftgrösse

Schriftsätze

Standardmässig stellt Contao folgende Schriftsätze zur Verfügung:

  • Courier
  • Freeserif
  • helvetica

Kopfzeile Formatieren

Mit den Standardeinstellungen von Contao ist sowohl die Kopf- wie auch die Fusszeile deaktiviert. Die anschliessende Beschreibung enthält die nötigen Informationen, um eine individuelle Kopfzeile zu gestalten.

Schriftsatz und grösse

Damit in die Übersicht der PDF Formatierung erhalten werden kann, empfielt es sich in der konfigurationsdatei "tcpdf.php" zwei neue Variablen zu definieren. Diese sollten einen möglichst aussagekräftigen Namen haben:

    define('PDF_FONT_SIZE_HEAD', 10);
    define('PDF_FONT_MONOSPACED', 'freemono');

Zwecks Nachvollziehbarkeit ist es sinnvoll diese zwei Zeilen direkt unterhalb der bestehenden Schriftdefinitionen einzufügen.

Inhalt der Kopfzeile

Die Konfigurationsdatei "tcpdf.php" stellt vier Variablen zur Verfügung, die mit dem Inhalt der Kopfzeile befüllt werden können.
Anmerkung.png Anmerkung: Standardmässig Zeilen 48 - 51
    define('PDF_HEADER_TITLE', $GLOBALS['TL_CONFIG']['websiteTitle']);
    define('PDF_HEADER_STRING', '');
    define('PDF_HEADER_LOGO', '');
    define('PDF_HEADER_LOGO_WIDTH', 30);

Die ersten zwei Variablen ermöglichen die Ausgabe eines Kopfzeilentitels und eines Kopfzeilentextes. Standardmässig ist als Kopfzeilentitel mit dem Titel der Webseite gefüllt. Manchmal ist es gewünscht in der Kopfzeile ein Bild zu zeigen. Das entsprechende Bild muss dafür via FTP in das Verzeichnis /plugins/tcpdf/images/ abgelegt werden. Die Breite des Bildes muss in der Einheit Millimeter bekannt sein.

Die Variable PDF_HEADER_LOGO wird mit dem Namen des Bildes (ohne Pfad) gefüllt. In die zweite Variable PDF_HEADER_LOGO_WIDTH wird die Breite des Bildes in Millimeter eingetragen. Beispiel:

    define('PDF_HEADER_TITLE', $GLOBALS['TL_CONFIG']['websiteTitle']);
    define('PDF_HEADER_STRING', 'Meine Kopfzeile');
    define('PDF_HEADER_LOGO', 'logo.jpg');
    define('PDF_HEADER_LOGO_WIDTH', 25);

Anzeigen der Kopfzeile

Damit die Eingetragenen Werte der Kopfzeile im PDF hinzugefügt werden könne braucht es einige anpassungen in der Datei "Controller.php". Mit einer Suche nach dem Schlüsselwort "$pdf" lassen sich die Zeilen die zu bearbeiten sind relativ leicht finden.
Anmerkung.png Anmerkung: Standardmässig Zeilen 1089 - 1133

Als erstes muss die Kopfzeile aktivert werden. Dies lässt sich erreichen indem vor folgende Zeile zwei Slasches // gesetzt werden:

    $pdf->setPrintHeader(false);

Nachdem die Ausgabe einer Kopfzeile aktiviert ist muss diese auch geschrieben werden. Das erreicht man mit folgender Zeile, die direkt unterhalb der auskommentierten deaktivierung eingefügt werden sollte.

    $pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING);

Als nächstes müssen die eingestellten Schrifteigenschaften gesetzt werden. Dazu müssen folgende Zeilen hinzugefügt werden:

    // set header and footer fonts
    $pdf->setHeaderFont(Array(PDF_FONT_NAME_HEAD, '', PDF_FONT_SIZE_HEAD))

Zum Schluss soll noch dafür gesorgt werden, dass die eingestellten Abstände von der Kopfzeile auch eingehalten werden. Dazu reicht es, wenn folgende Zeile unterhalb der $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); eingefügt wird.

    $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);

Damit sind alle Einstellungen getroffen, um eine Kopfzeile inklusive Bild anzuzeigen.

Der vollständige, veränderte Code sollte in etwa so aussehen:
Anmerkung.png Anmerkung: Zeilen 1089 - 1108
    // Remove default header/footer
    //$pdf->setPrintHeader(false);
    $pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING);
    $pdf->setPrintFooter(false);   
 
    // set header and footer fonts
    $pdf->setHeaderFont(Array(PDF_FONT_NAME_HEAD, '', PDF_FONT_SIZE_HEAD)); 
 
    // Set margins
    $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
    $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);




Weblinks

Ansichten
Meine Werkzeuge

Contao Community Documentation

Chuck Norris programmiert kein PHP, er diktiert das Ergebnis. Den Rest macht der Editor aus Angst.

Stefan Lindecke
Navigation
Verstehen
Verwenden
Entwickeln
Verschiedenes
Werkzeuge