AddOn
PDFout - PDF-Generator
Beschreibung
Generator und Viewer für PDF-Dokumente. Das AddOn vereint den PDF-Generator DOMpdf (http://dompdf.github.io) und den Viewer PDFjs.Erstellt PDFs direkt in REDAXO und zeigt sie mit PDFJs an.
github.com/FriendsOfREDAXO/pdfout
Umsetzung
Versionen
10.3.1
- PHP Vendor Pakete aktualisiert (dompdf, fpdf, tcpdf, etc.)
- PDF.js auf Version 5.6.205 aktualisiert
10.3.0
10.3.0 – 20.02.2026
Neue Features
- PNG als Standardformat: Das Ausgabeformat wurde von JPEG auf PNG umgestellt, um eine bessere Farberhaltung bei dunklen Farben und Transparenz zu gewährleisten
- Gamma-Korrektur (optional): Neue Einstellung im Media-Manager-Effekt zur Helligkeitsanpassung (Werte 0.8–1.4). Standard: 1.0 (keine Korrektur). Empfohlen: 1.2 für eine Darstellung, die der PDF-Vorschau in macOS Preview entspricht. Nutzt Imagick bevorzugt,
convert(ImageMagick CLI) als zweiten Fallback, GD als dritten Fallback - ICC-Profil-Einbettung (optional): sRGB ICC-Profil kann in das Thumbnailbild eingebettet werden, damit Browser und Bildprogramme die Farben korrekt interpretieren. Nutzt automatisch das mitgelieferte TCPDF sRGB-Profil – keine zusätzliche Installation nötig. Unterstützt Imagick und
convert(ImageMagick CLI) als Fallback
Verbesserungen
PdfThumbnail: Neue MethodensetGamma(),setEmbedIccProfile(),applyGammaCorrection(),embedSrgbIccProfile(),findSrgbIccProfile(),findSrgbIccProfilePath(),getIccProfilePaths()rex_effect_pdf_thumbnail: Zwei neue Parameter im Media-Manager-Effekt (Gamma-Korrektur, ICC-Farbprofil)checkAvailableTools()zeigt nun auchconvert(ImageMagick CLI) Verfügbarkeit an- Gamma-Korrektur: Dreistufige Fallback-Kette (Imagick → convert CLI → GD)
- ICC-Profil: Zweistufiger Fallback (Imagick → convert CLI)
- Cache-Key berücksichtigt nun auch Gamma- und ICC-Einstellungen
- Sprachdateien: Neue Übersetzungen für Gamma und ICC-Profil (DE/EN)
Hintergrund
PDF-Viewer wie macOS Preview nutzen Display Color Management (z.B. Display P3), wodurch dunkle Farben satter und heller erscheinen. Browser zeigen Thumbnails ohne dieses Mapping, was insbesondere bei dunklen Grüntönen zu einem nahezu schwarzen Ergebnis führen kann. Der Wechsel auf PNG als Standardformat sowie die optionalen Gamma- und ICC-Features lösen dieses Problem.
10.2.0
PdfOut 10.2.0 – PDF-Thumbnails ohne ImageMagick
Das Problem
Ubuntu/Debian blockiert seit 2018 die PDF-zu-Bild-Konvertierung über ImageMagick (Policy in /etc/ImageMagick-6/policy.xml). Der bisherige Media-Manager-Effekt convert2img funktioniert dadurch für PDFs nicht mehr zuverlässig.
Die Lösung
PdfOut liefert ab sofort einen eigenen Media-Manager-Effekt „PDF-Thumbnail (pdfout)", der pdftoppm aus poppler-utils verwendet – nicht von der ImageMagick-Policy betroffen.
Neue Features
- Media-Manager-Effekt
rex_effect_pdf_thumbnail– erzeugt Vorschaubilder der ersten (oder beliebigen) PDF-Seite - PdfThumbnail-Klasse (
FriendsOfRedaxo\PdfOut\PdfThumbnail) – auch direkt im Code nutzbar - Intelligente Tool-Erkennung mit automatischem Fallback: pdftoppm → pdftocairo → Ghostscript → Imagick
- Status-Anzeige im Backend – zeigt im Effekt-Dialog an, welche Tools verfügbar sind (✓/✗)
- Caching – generierte Thumbnails werden gecacht und bei PDF-Änderung automatisch neu erzeugt
- Konfigurierbar: Ausgabeformat (JPG/PNG), DPI, JPEG-Qualität, Seitennummer, Hintergrundfarbe
Voraussetzung
**Ubuntu/Debian**
apt install poppler-utils
**macOS**
brew install poppler
Weitere Installationsanleitungen für Alpine, CentOS, Arch, openSUSE und Docker in der README.
Verwendung
Im Media Manager: Neuen Typ anlegen → Effekt „PDF-Thumbnail (pdfout)" hinzufügen → optional resize dahinter.
Im Template/Modul:
$thumbUrl = rex_media_manager::getUrl('pdf_thumb', 'dokument.pdf');
echo '<img src="' . $thumbUrl . '" alt="PDF-Vorschau">';
Direkt im Code:
use FriendsOfRedaxo\PdfOut\PdfThumbnail;
$thumb = new PdfThumbnail();
$imagePath = $thumb->setDpi(200)->setMaxWidth(800)->generate(rex_path::media('dokument.pdf'));
Hinweis
Der Effekt prüft die Dateiendung – bei Nicht-PDFs wird das Medium unverändert durchgereicht, genau wie bei convert2img.
10.1.1
Vendor-Update TCPDF to [6.10.1]
10.1.0
Neustes dompdf und ausführliche pdfjs demo ergänzt.
Neu: PDFjs auf 5.x angehoben und pdfjs kann nun über ein Workflow aktualisiert werden
What's Changed
- Vendor update, pdfs js update und demo by @skerbis in https://github.com/FriendsOfREDAXO/pdfout/pull/101
Full Changelog: https://github.com/FriendsOfREDAXO/pdfout/compare/10.0.1...10.1.0
10.0.1
What's Changed
- Bump dompdf/dompdf from 3.1.0 to 3.1.2 by @dependabot[bot] in https://github.com/FriendsOfREDAXO/pdfout/pull/99
Full Changelog: https://github.com/FriendsOfREDAXO/pdfout/compare/10.0.0...10.0.1
Sponsors ##
Version 10.0.0
10.0.0
10.00 :: Alles neu - Sehr neu!
- 🌈 HTML zu PDF: Wandelt HTML in hochwertige PDFs um
- 🎨 Anpassbar: Ausrichtung, Schriftart, DPI und mehr
- 🖼 Media Integration: Bilder direkt aus dem REDAXO Media Manager
- 💾 Flexibel: Speichern oder direktes Streaming an Browser
- 🔢 Automatik: Seitenzahlen und -zählung automatisch
- 🔍 Viewer: Integrierter PDF-Viewer mit pdf.js
- 🔒 Sicher: Passwortschutz und Berechtigungen
- ✍️ Signiert: Digitale Signaturen für Authentizität
- 📋 Zertifikatsverwasltung
- 🚀 Workflow: Optimierter REDAXO-Workflow (dompdf → Cache → Signierung)
👋 Seht euch die Demo an
Major-Release: Es kann zu Inkompatibilitäten kommen, habe ich aber soweit möglich vermieden.
Es muss immer mit Namespace gearbeitet werden
use FriendsOfRedaxo\PdfOut\PdfOut;
10.0.0-beta1
10.00 :: Alles neu
- 🌈 HTML zu PDF: Wandelt HTML in hochwertige PDFs um
- 🎨 Anpassbar: Ausrichtung, Schriftart, DPI und mehr
- 🖼 Media Integration: Bilder direkt aus dem REDAXO Media Manager
- 💾 Flexibel: Speichern oder direktes Streaming an Browser
- 🔢 Automatik: Seitenzahlen und -zählung automatisch
- 🔍 Viewer: Integrierter PDF-Viewer mit pdf.js
- 🔒 Sicher: Passwortschutz und Berechtigungen
- ✍️ Signiert: Digitale Signaturen für Authentizität
- 🚀 Workflow: Optimierter REDAXO-Workflow (dompdf → Cache → Signierung)
👋 Seht euch die Demo an
Major-Release: Es kann zu Inkompatibilitäten kommen, habe ich aber soweit möglich vermieden.
Es muss immer mit Namespace gearbeitet werden
use FriendsOfRedaxo\PdfOut\PdfOut;
9.1.0
What's Changed
- vendor 3.1.0 by @skerbis in https://github.com/FriendsOfREDAXO/pdfout/pull/85
Full Changelog: https://github.com/FriendsOfREDAXO/pdfout/compare/9.0.1...9.1.0
9.0.1
What's Changed
- Update pdfout.php by @godsdog in https://github.com/FriendsOfREDAXO/pdfout/pull/80
- Bump dompdf/dompdf from 3.0.0 to 3.0.2 by @dependabot in https://github.com/FriendsOfREDAXO/pdfout/pull/82
- vendor update v3.0.2 by @skerbis in https://github.com/FriendsOfREDAXO/pdfout/pull/83
New Contributors
- @godsdog made their first contribution in https://github.com/FriendsOfREDAXO/pdfout/pull/80
Full Changelog: https://github.com/FriendsOfREDAXO/pdfout/compare/9.0.0...9.0.1
9.0.0
Major Release
Wichtig:
Ab jetzt bitte use FriendsOfRedaxo\PdfOut\PdfOut; verwenden.
Die alte Class ist noch nutzbar und wird im nächsten Major entfernt.
Neu:
setPaperSize() ermöglicht mehr Seitenformate
What's Changed
- Neue Property
$paperSizefür das Papierformat - Neue Methode
setPaperSize()zum Setzen von Format und Orientierung - Bisherige Standardwerte (A4, portrait) bleiben erhalten
- Unterstützung für Standard-Formate und benutzerdefinierte Größen
- change namespace to FOR by @skerbis in https://github.com/FriendsOfREDAXO/pdfout/pull/77
- erlaube papersize setting by @skerbis in https://github.com/FriendsOfREDAXO/pdfout/pull/78
Full Changelog: https://github.com/FriendsOfREDAXO/pdfout/compare/8.4.0...8.5.0
8.4.0
Neu:
- Unterstützung für ein optionales Grundtemplate
- Direkte Integration von REDAXO-Artikeln
What's Changed
- Rechtschreibkorrektur und Hervorhebungen by @alxndr-w in https://github.com/FriendsOfREDAXO/pdfout/pull/75
- Tamplating and Content by @skerbis in https://github.com/FriendsOfREDAXO/pdfout/pull/74
Full Changelog: https://github.com/FriendsOfREDAXO/pdfout/compare/8.3.1...8.4.0
8.3.1
What's Changed
- new method mediaUrl by @skerbis in https://github.com/FriendsOfREDAXO/pdfout/pull/72
- Vendor update by @skerbis in https://github.com/FriendsOfREDAXO/pdfout/pull/73
Full Changelog: https://github.com/FriendsOfREDAXO/pdfout/compare/8.3.0...8.3.1
8.3.0
Neu:
Diese Version fügt eine Funktion hinzu, die den Platzhalter DOMPDF_PAGE_COUNT_PLACEHOLDER mit der Gesamtzahl an Seiten ersetzt, wenn vorhanden. Der Aufruf nach dem Rendern hat keine Auswirkungen, wenn der Platzhalter nicht vorhanden ist.
What's Changed
- Infect function für PageCounter Platzhalter by @elricco in https://github.com/FriendsOfREDAXO/pdfout/pull/71
New Contributors
- @elricco made their first contribution in https://github.com/FriendsOfREDAXO/pdfout/pull/71
Full Changelog: https://github.com/FriendsOfREDAXO/pdfout/compare/8.2.0...8.3.0
8.2.0
What's Changed
- vendor updates: dompdf 3, pdf.js v4.2.67' by @skerbis in https://github.com/FriendsOfREDAXO/pdfout/pull/70
Full Changelog: https://github.com/FriendsOfREDAXO/pdfout/compare/8.1.3...8.2.0
8.1.3
What's Changed
- Bump dompdf/dompdf from 2.0.7 to 2.0.8 by @dependabot in https://github.com/FriendsOfREDAXO/pdfout/pull/69
Full Changelog: https://github.com/FriendsOfREDAXO/pdfout/compare/8.1.2...8.1.3
8.1.2
Vendor update to 2.0.7
8.1.1
What's Changed
version: '8.1.1'
vendor: '2.0.4'
pdfjs: '4.0.269'
added htaccess for mime-type mjs
- Bump phenx/php-svg-lib from 0.5.0 to 0.5.1 by @dependabot in https://github.com/FriendsOfREDAXO/pdfout/pull/66
- vendor & security update by @skerbis in https://github.com/FriendsOfREDAXO/pdfout/pull/67
Full Changelog: https://github.com/FriendsOfREDAXO/pdfout/compare/8.0.1...8.1.1
8.1.0
Achtung! Für den Viewer muss der MIME-Type mjms bekannt gemacht werden
z.B: in der .htaccess
AddType text/javascript .mjs
What's Changed
- Bump phenx/php-svg-lib from 0.5.0 to 0.5.1 by @dependabot in https://github.com/FriendsOfREDAXO/pdfout/pull/66
- vendor & security update by @skerbis in https://github.com/FriendsOfREDAXO/pdfout/pull/67
Full Changelog: https://github.com/FriendsOfREDAXO/pdfout/compare/8.0.1...8.1.0
8.0.1
removed bcmaps
fixes: https://github.com/FriendsOfREDAXO/pdfout/issues/62
8.0.0
Achtung: sendPDF() wurde entfernt. Bitte auf die neue Schreibweise seit 7.x umstellen.
Vendor-Update pdfjs v3.10.111
Major Changes
removed deprecated sendPDF
What's Changed
- Update README.md by @thielpeter in https://github.com/FriendsOfREDAXO/pdfout/pull/64
- removed deprecated sendPDF by @skerbis in https://github.com/FriendsOfREDAXO/pdfout/pull/65
New Contributors
- @thielpeter made their first contribution in https://github.com/FriendsOfREDAXO/pdfout/pull/64
Full Changelog: https://github.com/FriendsOfREDAXO/pdfout/compare/7.1.4...8.0.0
7.1.4
7.0 - 7.1.4
Vollständig überarbeitete Version.
Neu: Setting-Methoden zur einfacheren Konfiguration
Neu: Der REDAXO-Outputfilter kann direkt ausgeführt werden
Neu: Gleichzeitige Ausgabe und Speicherung der PDF möglich
Neu: DPI kann eingestellt werden
Neu: Readme überarbeitet
Deprecated: sendPdf(), die Methode wird mit 8.0.0 entfernt. Daher bitte schon jetzt auf die neue Schreibweise umstellen.
Da die Methode als deprecated markiert ist wird empfohlen, folgende Schreibweise zu nutzen (siehe Beispiel-Code oben):
<?php
// alte Schreibweise (deprecated)
PdfOut::sendPdf(…);
// neue Schreibweise
$pdf = new PdfOut();
// Setter-Methoden verwenden - Siehe Readme
// Bsp.: $pdf->setName('meindateiname');
$pdf->setSaveToPath(rex_path::base() . 'media/')
->setSaveAndSend(false);
?>
Fix: In der sendPDF() fehlte setSaveToPath()
Added dompdf 2.0.3
PDF.js with pinch to zoom
Readme korrigiert
Corrected CS
6.2.1
Vendor: Security fix: https://github.com/dompdf/dompdf/issues/2994
Vendor: Change highlights since 2.0.0
Improved font-face declaration parsing and handling
Improved layout of images with percentage-based dimensions
6.2.0
Update: pdf.js v2.16.105
6.1.0
PDF.js Vendor Update
Full Changelog: https://github.com/FriendsOfREDAXO/pdfout/compare/6.0.0...6.1.0
6.0.0
What's Changed
- $this entfernt by @skerbis in https://github.com/FriendsOfREDAXO/pdfout/pull/51
- Update pdfout.php by @skerbis in https://github.com/FriendsOfREDAXO/pdfout/pull/52
- check for $outattach by @skerbis in https://github.com/FriendsOfREDAXO/pdfout/pull/53
Thanks to @staabm & REXStan it's also a bit better in code
Full Changelog: https://github.com/FriendsOfREDAXO/pdfout/compare/5.2.0...6.0.0
Updated to version 2 of @dompdf - thanks
Change highlights since 1.2.x
- Addresses multiple security vulnerabilities (see below)
- Modifies callback and page_script/page_text handling (breaking change, see below)
- Switches the HTML5 parser to Masterminds/HTML5
- Improves CSS property parsing and representation
- Improves border, outline, and background rendering for inline elements
- Switches installed fonts and font metrics cache file format to JSON
- Adds support for the inset CSS shorthand property and the legacy break-word keyword for word-break
- Adds "end_document" callback event
| Vulnerability | References | Type | Severity |
|---|---|---|---|
| Improper Restriction of XML External Entity Reference | #2564 | Information Disclosure | TBD |
| Deserialization of Untrusted Data | #2564 | Remote Code Execution | Critical |
| External Control of File Name or Path | #2564 | Information Disclosure | TBD |
| Server-Side Request Forgery | #2564 | Information Disclosure | TBD |
and much more
More Information https://github.com/dompdf/dompdf/releases/tag/v2.0.0
6.0.0-beta1
Updated to version 2 of @dompdf
Change highlights since 1.2.x
- Addresses multiple security vulnerabilities (see below)
- Modifies callback and page_script/page_text handling (breaking change, see below)
- Switches the HTML5 parser to Masterminds/HTML5
- Improves CSS property parsing and representation
- Improves border, outline, and background rendering for inline elements
- Switches installed fonts and font metrics cache file format to JSON
- Adds support for the inset CSS shorthand property and the legacy break-word keyword for word-break
- Adds "end_document" callback event
| Vulnerability | References | Type | Severity |
|---|---|---|---|
| Improper Restriction of XML External Entity Reference | #2564 | Information Disclosure | TBD |
| Deserialization of Untrusted Data | #2564 | Remote Code Execution | Critical |
| External Control of File Name or Path | #2564 | Information Disclosure | TBD |
| Server-Side Request Forgery | #2564 | Information Disclosure | TBD |
and much more
More Information https://github.com/dompdf/dompdf/releases/tag/v2.0.0
5.2.0
- PDF auf dem Server speichern
Mit dem Parameter "$saveToPath" kann man einen Pfad definieren, auf welchem die generierte PDF auf dem Server gespeichert wird.
https://github.com/FriendsOfREDAXO/pdfout/issues/49
@danspringer
Vendor 1.2.2
@skerbis
5.1.0
Menüpunkt entfernt.
Die Readme ist weiterhin in AddOns erreichbar.
5.0.3
Vendor: v1.2.1
Security fixes:
https://positive.security/blog/dompdf-rce
5.0.2
Dpi wieder auf 100
@olien
5.0.1
Kleine Textkorrekturen in der Readme
5.0.0
- Deprecated Methoden durch neue getOptions() ersetzt.
- Ausgangspfad ist jetzt rex_path::frontend()
Sofern keine eigenen Änderungen oder abgewandelte Classes verwendet werden, sollte das Update keine Probleme verursachen.
4.3.0
vendor: 'v1.2.0'
4.0 – 4.3.0
- New class: PdfOut
- New PdfOut::sendPdf($filename,$html)
- New PdfOut::viewer($file)
Die neue Methode PdfOut::sendPdf() ermöglicht es schnell und unkompliziert DIN A4 Dokumente mit allen erforderlichen Einstellungen zu erstellen.
PdfOut::viewer() liefert immer die korrekte URL zum Viewer.