PDF Ausgabe: Unterschied zwischen den Versionen
Aus Contao Community Documentation
(→Benötigte Ressourcen) |
K (→Schriftsätze) |
||
(Eine dazwischenliegende Version von einem Benutzer wird nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{stub}} | {{stub}} | ||
[[Category:Dev HOWTOS]] | [[Category:Dev HOWTOS]] | ||
− | {{AppliesTo|Version=2.9}} | + | {{AppliesTo|Version=2.9.4}} |
=PDF Ausgabe manuel gestalten= | =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 | + | 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 Kenntnisse sind von Vorteil. |
− | {{msgImportant|Die beschriebenen Manipulationen sind nicht | + | {{msgImportant|Die beschriebenen Manipulationen sind nicht updatesicher und müssen nach einer Core-Aktualisierung erneut durchgeführt werden!}} |
=Benötigte Ressourcen= | =Benötigte Ressourcen= | ||
− | Um die nachfolgend beschriebenen Änderungen durchzuführen, | + | Um die nachfolgend beschriebenen Änderungen durchzuführen, müssen folgende Dateien angepasst werden: |
{| | {| | ||
| | | | ||
Zeile 26: | Zeile 26: | ||
|} | |} | ||
− | {{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.}} | + | {{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 | + | =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. | 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. | ||
Zeile 38: | Zeile 38: | ||
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 | + | define('PDF_MARGIN_LEFT', 15); // Abstand des Inhaltes zum linken Rand |
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 | ||
Zeile 53: | Zeile 53: | ||
* helvetica | * helvetica | ||
− | =Kopfzeile | + | Als Standard wird die Schriftart Freeserif benutzt, welche durch die spezielle Konfiguration auch direkt in die PDF-Dateien eingebettet wird. Durch die Auswahl von z.B. helvetica wird die Dateigröße drastisch auf ein paar Kilobytes reduziert, da diese Schriftart nicht in die PDF-Dateien eingebunden wird. |
+ | |||
+ | =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. | 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== | + | ==Schriftsatz und -grösse== |
− | Damit | + | Damit die Übersicht in der PDF-Formatierung erhalten bleibt, empfiehlt es sich in der Konfigurationsdatei "tcpdf.php" zwei neue Variablen zu definieren. Diese sollten einen möglichst aussagekräftigen Namen haben: |
<source lang="php"> | <source lang="php"> | ||
Zeile 64: | Zeile 66: | ||
</source> | </source> | ||
− | Zwecks Nachvollziehbarkeit ist es sinnvoll diese zwei Zeilen direkt unterhalb der bestehenden Schriftdefinitionen einzufügen. | + | Zwecks Nachvollziehbarkeit ist es sinnvoll, diese zwei Zeilen direkt unterhalb der bestehenden Schriftdefinitionen einzufügen. |
==Inhalt der Kopfzeile== | ==Inhalt der Kopfzeile== | ||
Zeile 75: | Zeile 77: | ||
</source> | </source> | ||
− | Die ersten zwei Variablen ermöglichen die Ausgabe eines Kopfzeilentitels und eines Kopfzeilentextes. Standardmässig ist | + | Die ersten zwei Variablen ermöglichen die Ausgabe eines Kopfzeilentitels und eines Kopfzeilentextes. Standardmässig ist der Kopfzeilentitel mit dem Titel der Webseite gefüllt.<br /> |
− | Manchmal ist es gewünscht in der Kopfzeile ein Bild zu zeigen. | + | Manchmal ist es gewünscht in der Kopfzeile ein Bild zu zeigen.<br /> |
− | 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. | + | 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. | 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. | ||
Zeile 89: | Zeile 91: | ||
==Anzeigen der Kopfzeile== | ==Anzeigen der Kopfzeile== | ||
− | Damit die | + | Damit die eingetragenen Werte der Kopfzeile im PDF hinzugefügt werden können, 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 | + | Als erstes muss die Kopfzeile aktiviert werden. Dies lässt sich erreichen indem vor folgende Zeile zwei Slashes // gesetzt werden: |
<source lang="php"> $pdf->setPrintHeader(false);</source> | <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 | + | 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> | <source lang="php"> $pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING);</source> | ||
Zeile 121: | Zeile 123: | ||
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); | $pdf->SetHeaderMargin(PDF_MARGIN_HEADER); | ||
</source> | </source> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
=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 Kopfzeilen Tutorial von Nina] | *[http://www.contao.org/board/topic/9083.html Kopfzeilen Tutorial von Nina] |
Aktuelle Version vom 11. September 2012, 18:22 Uhr
Unvollständiger Artikel: dieser Artikel ist noch nicht sauber bearbeitet.
Bitte erweitere ihn und entferne erst anschliessend diesen Hinweis. |
betrifft | |
---|---|
Contao Version | 2.9.4 |
Inhaltsverzeichnis
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 Kenntnisse sind von Vorteil.
Benötigte Ressourcen
Um die nachfolgend beschriebenen Änderungen durchzuführen, müssen folgende Dateien angepasst werden:
|
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: 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 linken 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_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
Als Standard wird die Schriftart Freeserif benutzt, welche durch die spezielle Konfiguration auch direkt in die PDF-Dateien eingebettet wird. Durch die Auswahl von z.B. helvetica wird die Dateigröße drastisch auf ein paar Kilobytes reduziert, da diese Schriftart nicht in die PDF-Dateien eingebunden wird.
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 die Übersicht in der PDF-Formatierung erhalten bleibt, empfiehlt 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.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 der 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önnen, 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.Als erstes muss die Kopfzeile aktiviert werden. Dies lässt sich erreichen indem vor folgende Zeile zwei Slashes // 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:// 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);