Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/friendsofredaxo/pdfout
PDF-Generator dompdf und pdf.js für REDAXO
https://github.com/friendsofredaxo/pdfout
dompdf hacktoberfest pdf redaxo redaxo-addon
Last synced: about 1 month ago
JSON representation
PDF-Generator dompdf und pdf.js für REDAXO
- Host: GitHub
- URL: https://github.com/friendsofredaxo/pdfout
- Owner: FriendsOfREDAXO
- License: mit
- Created: 2016-06-23T11:50:03.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2024-10-28T14:07:43.000Z (about 2 months ago)
- Last Synced: 2024-10-28T17:09:22.033Z (about 2 months ago)
- Topics: dompdf, hacktoberfest, pdf, redaxo, redaxo-addon
- Language: PHP
- Homepage:
- Size: 29.5 MB
- Stars: 48
- Watchers: 4
- Forks: 18
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# PdfOut für REDAXO!
PdfOut stellt den "HTML to PDF"-Converter [dompdf](https://github.com/dompdf/dompdf) und [pdf.js](https://github.com/mozilla/pdf.js) in REDAXO zur Verfügung.
## Installation
Die Installation erfolgt über den REDAXO-Installer, alternativ gibt es die aktuellste Beta-Version auf [GitHub](https://github.com/FriendsOfREDAXO/pdfout).
## Was kann PdfOut?
- 🌈 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## Lass uns loslegen!
### Quick Start: Das erste PDF in 3... 2... 1...
```php
use FriendsOfRedaxo\PdfOut\PdfOut;
$pdf = new PdfOut();
$pdf->setName('mein_erstes_pdf')
->setHtml('Hallo REDAXO-Welt!
Mein erstes PDF mit PdfOut. Wie cool ist das denn?
')
->run();
```### Artikel-Inhalte als PDF
```php
use FriendsOfRedaxo\PdfOut\PdfOut;
$pdf = new PdfOut();
$pdf->setName('artikel_als_pdf')
->addArticle(1) // Hier die ID eures Artikels einsetzen
->run();
```### Erweiterte Konfiguration eines PDFs
```php
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();
```### Schicke Vorlagen für PDFs
```php
$meineVorlage = '
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; }
Mein supercooler PDF-Kopf
{{CONTENT}}
';
use FriendsOfRedaxo\PdfOut\PdfOut;
$pdf = new PdfOut();
$pdf->setName('stylishes_pdf')
->setBaseTemplate($meineVorlage)
->setHtml('Wow!
Dieses PDF sieht ja mal richtig schick aus!
')
->run();
```### PDFs speichern und verschicken
PDF speichern und gleichzeitig an den Browser senden? So geht's:
```php
use FriendsOfRedaxo\PdfOut\PdfOut;
$pdf = new PdfOut();
$pdf->setName('mein_meisterwerk')
->setHtml('PDF-Kunst
')
->setSaveToPath(rex_path::addonCache('pdfout'))
->setSaveAndSend(true) // Speichert und sendet in einem Rutsch
->run();
```## Erweiterte Methoden
### `setPaperSize(string|array $size = 'A4', string $orientation = 'portrait')`
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.```php
$pdf->setPaperSize('A4', 'landscape'); // Querformat A4
$pdf->setPaperSize([841.89, 595.28], 'portrait'); // Benutzerdefinierte Größe
```### `setBaseTemplate(string $template, string $placeholder = '{{CONTENT}}')`
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.### `addArticle(int $articleId, ?int $ctype = null, bool $applyOutputFilter = true)`
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### `mediaUrl(string $type, string $file)`
Generiert korrekte URLs für Media-Manager-Bilder im PDF:```php
$imageUrl = PdfOut::mediaUrl('media_type', 'bild.jpg');
$html = '';
```### `viewer(string $file = '')`
Erzeugt eine URL für den integrierten PDF-Viewer:```php
// Als Download-Link
echo 'PDF anzeigen';// Als iFrame eingebettet
echo '';
```## Tipps für die Optimierung
### Performance-Optimierung
- 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### Bilder und Media Manager
- Relative Pfade vom Frontend-Ordner: `media/bild.jpg`
- Media Manager URLs immer als absolute URLs
- `setRemoteFiles(true)` für externe Ressourcen### CSS und Schriftarten
- Numerische font-weight Angaben vermeiden
- Google Fonts lokal einbinden
- Bei Schriftproblemen: `isFontSubsettingEnabled` auf `false` setzen### Kopf- und Fußzeilen
- Fixierte Divs direkt nach dem body-Tag platzieren
- Seitenzahlen über CSS count oder Platzhalter## Systemvoraussetzungen
- DOM-Erweiterung
- MBString-Erweiterung
- `php-font-lib`
- `php-svg-lib`
- `gd-lib` oder ImageMagickEmpfohlen:
- OPcache für bessere Performance
- GD oder IMagick/GMagick für Bildverarbeitung## Support & Credits
### Wo finde ich Hilfe?
- [REDAXO-Channel auf Slack](https://friendsofredaxo.slack.com/messages/redaxo/)
- [GitHub Issues](https://github.com/FriendsOfREDAXO/pdfout/issues)
- [REDAXO Forum](https://forum.redaxo.org/)### Team
**Friends Of REDAXO**
http://www.redaxo.org
https://github.com/FriendsOfREDAXO**Projekt-Lead**
[Thomas Skerbis](https://github.com/skerbis)### Danke an
- [dompdf](http://dompdf.github.io)
- [FriendsOfREDAXO](https://github.com/FriendsOfREDAXO)
- [First release: Oliver Kreischer](https://github.com/olien)### Lizenz
[MIT-Lizenz](https://github.com/FriendsOfREDAXO/pdfout/blob/master/LICENSE.md)