PdfOut stellt den "HTML to PDF"-Converter dompdf und pdf.js in REDAXO zur Verfügung.
Die Installation erfolgt über den REDAXO-Installer, alternativ gibt es die aktuellste Beta-Version auf GitHub.
- 🌈 Wandelt HTML in PDFs um
- 🎨 Passt Ausrichtung, Schriftart und mehr nach Herzenslust an
- 🖼 Integriert Bilder direkt aus dem REDAXO Media Manager
- 💾 Speichert PDFs ab oder streamt sie direkt an den Browser
- 🔢 Fügt sogar automatisch Seitenzahlen ein
- 🔍 Mit dem integrieren Viewer kann man sich alles ansehen
use FriendsOfRedaxo\PdfOut\PdfOut;
$pdf = new PdfOut();
$pdf->setName('mein_erstes_pdf')
->setHtml('<h1>Hallo REDAXO-Welt!</h1><p>Mein erstes PDF mit PdfOut. Wie cool ist das denn?</p>')
->run();
use FriendsOfRedaxo\PdfOut\PdfOut;
$pdf = new PdfOut();
$pdf->setName('artikel_als_pdf')
->addArticle(1) // Hier die ID eures Artikels einsetzen
->run();
use FriendsOfRedaxo\PdfOut\PdfOut;
$pdf = new PdfOut();
$pdf->setName('konfiguriertes_pdf')
->setPaperSize('A4', 'portrait') // Setzt Papiergröße und Ausrichtung
->setFont('Helvetica') // Setzt die Standardschriftart
->setDpi(300) // Setzt die DPI für bessere Qualität
->setAttachment(true) // Als Download statt Vorschau
->setRemoteFiles(true) // Erlaubt externe Ressourcen
->setHtml($content, true) // HTML mit Output Filter
->run();
$meineVorlage = '
<!DOCTYPE html>
<html>
<head>
<style>
body { font-family: Arial, sans-serif; }
.kopf { background-color: #ff9900; padding: 10px; }
.inhalt { margin: 20px; }
.footer { position: fixed; bottom: 0; width: 100%; text-align: center; }
</style>
</head>
<body>
<div class="kopf">Mein supercooler PDF-Kopf</div>
<div class="inhalt">{{CONTENT}}</div>
<div class="footer">Seite {PAGENO} von DOMPDF_PAGE_COUNT_PLACEHOLDER</div>
</body>
</html>';
use FriendsOfRedaxo\PdfOut\PdfOut;
$pdf = new PdfOut();
$pdf->setName('stylishes_pdf')
->setBaseTemplate($meineVorlage)
->setHtml('<h1>Wow!</h1><p>Dieses PDF sieht ja mal richtig schick aus!</p>')
->run();
PDF speichern und gleichzeitig an den Browser senden? So geht's:
use FriendsOfRedaxo\PdfOut\PdfOut;
$pdf = new PdfOut();
$pdf->setName('mein_meisterwerk')
->setHtml('<h1>PDF-Kunst</h1>')
->setSaveToPath(rex_path::addonCache('pdfout'))
->setSaveAndSend(true) // Speichert und sendet in einem Rutsch
->run();
Setzt das Papierformat und die Ausrichtung für das PDF. Als $size
kann entweder ein Standardformat wie 'A4', 'letter' oder ein Array mit [width, height] in Punkten übergeben werden.
$pdf->setPaperSize('A4', 'landscape'); // Querformat A4
$pdf->setPaperSize([841.89, 595.28], 'portrait'); // Benutzerdefinierte Größe
Setzt ein Grundtemplate für das PDF. Der Platzhalter wird durch den eigentlichen Inhalt ersetzt. Besonders nützlich für einheitliches Layout über mehrere PDFs.
Ermöglicht das Hinzufügen von REDAXO-Artikelinhalten:
$articleId
: Die ID des Artikels$ctype
: Optional die ID des Content-Types$applyOutputFilter
: Ob der OUTPUT_FILTER angewendet werden soll
Generiert korrekte URLs für Media-Manager-Bilder im PDF:
$imageUrl = PdfOut::mediaUrl('media_type', 'bild.jpg');
$html = '<img src="' . $imageUrl . '" alt="Mein Bild">';
Erzeugt eine URL für den integrierten PDF-Viewer:
// Als Download-Link
echo '<a href="' . PdfOut::viewer('/media/dokument.pdf') . '" download>PDF anzeigen</a>';
// Als iFrame eingebettet
echo '<iframe src="' . PdfOut::viewer('/media/dokument.pdf') . '"></iframe>';
- CSS inline im HTML definieren statt externe Dateien
- Auf große CSS-Frameworks verzichten
- Bilder in optimierter Größe verwenden
- OPcache für bessere PHP-Performance aktivieren
- Relative Pfade vom Frontend-Ordner:
media/bild.jpg
- Media Manager URLs immer als absolute URLs
setRemoteFiles(true)
für externe Ressourcen
- Numerische font-weight Angaben vermeiden
- Google Fonts lokal einbinden
- Bei Schriftproblemen:
isFontSubsettingEnabled
auffalse
setzen
- Fixierte Divs direkt nach dem body-Tag platzieren
- Seitenzahlen über CSS count oder Platzhalter
- DOM-Erweiterung
- MBString-Erweiterung
php-font-lib
php-svg-lib
gd-lib
oder ImageMagick
Empfohlen:
- OPcache für bessere Performance
- GD oder IMagick/GMagick für Bildverarbeitung
Friends Of REDAXO
http://www.redaxo.org
https://github.com/FriendsOfREDAXO
Projekt-Lead
Thomas Skerbis