All Projects → FriendsOfREDAXO → pdfout

FriendsOfREDAXO / pdfout

Licence: MIT license
PDF-Generator dompdf und pdf.js für REDAXO

Programming Languages

PHP
23972 projects - #3 most used programming language

Projects that are alternatives of or similar to pdfout

be password
Benutzer können ihr Passwort zurückzusetzen, wenn sie es vergessen haben.
Stars: ✭ 26 (-38.1%)
Mutual labels:  redaxo, redaxo-addon
zip install
Mit diesem AddOn kannst du gezippte AddOns oder PlugIns einfach im Backend hochladen und installieren.
Stars: ✭ 32 (-23.81%)
Mutual labels:  redaxo, redaxo-addon
tui editor
Implementiert den TOASTUI Markdown Editor
Stars: ✭ 21 (-50%)
Mutual labels:  redaxo, redaxo-addon
demo community
Demonstriert eine Community-Website auf Basis von REDAXO 5.
Stars: ✭ 38 (-9.52%)
Mutual labels:  redaxo, redaxo-addon
minify images
Optimiert Bilder mittels Media-Manager-Effekt über verschiedene Dienste (TinyPNG, ImageMagick, u.a.)
Stars: ✭ 29 (-30.95%)
Mutual labels:  redaxo, redaxo-addon
redaxo watson
Suchagent für REDAXO 4.5 + 5
Stars: ✭ 28 (-33.33%)
Mutual labels:  redaxo, redaxo-addon
yrewrite scheme
Stellt verschiedene URL-Schemes für YRewrite mehrsprachig zur Verfügung
Stars: ✭ 33 (-21.43%)
Mutual labels:  redaxo, redaxo-addon
demo fullpage
🚀 Demonstriert eine Onepage-Website auf Basis von REDAXO 5, fullPage.js und UIkit
Stars: ✭ 36 (-14.29%)
Mutual labels:  redaxo, redaxo-addon
dsgvo
Unterstützung bei der DSGVO-konformen Umsetzung von ein oder mehreren REDAXO-Websites.
Stars: ✭ 33 (-21.43%)
Mutual labels:  redaxo, redaxo-addon
minibar
Minibar: Kleine Leiste für REDAXO, die nützliche Funktionen fürs System und den jeweiligen Benutzerkontext anbietet
Stars: ✭ 29 (-30.95%)
Mutual labels:  redaxo, redaxo-addon
navigation array
Helper function for building navigations for REDAXO cms
Stars: ✭ 22 (-47.62%)
Mutual labels:  redaxo, redaxo-addon
search it
Umfangreiche Volltextsuche für REDAXO 5 CMS. Durchsucht Artikel, Medien, Dateien, PDF-Inhalte und Datenbank-Einträge.
Stars: ✭ 60 (+42.86%)
Mutual labels:  redaxo, redaxo-addon
cookie consent
Cookie consent Code-Generator (veraltet). Wir empfehlen IWCC:
Stars: ✭ 36 (-14.29%)
Mutual labels:  redaxo, redaxo-addon
redaxo url
REDAXO 5 AddOn zur URL-Generierung für eigene AddOns (ehemals Url Control, ehemals Frau Schultze)
Stars: ✭ 43 (+2.38%)
Mutual labels:  redaxo, redaxo-addon
icecoder
ICEcoder - Web IDE and editor for REDAXO CMS
Stars: ✭ 21 (-50%)
Mutual labels:  redaxo, redaxo-addon
uikit collection
Uikit3 vendor, yform template and Helper-AddOn for Demo
Stars: ✭ 26 (-38.1%)
Mutual labels:  redaxo, redaxo-addon
download
Dateidownloads von Files aus dem Medienpool über PHP oder X-SendFile
Stars: ✭ 30 (-28.57%)
Mutual labels:  redaxo, redaxo-addon
yform ui
REDAXO-Addon: YForm UI 🔧
Stars: ✭ 15 (-64.29%)
Mutual labels:  redaxo, redaxo-addon
yform spam protection
Addon für REDAXO 5, das effektiv Anfragen von Spambots blockiert – ganz ohne Captcha!
Stars: ✭ 34 (-19.05%)
Mutual labels:  redaxo, redaxo-addon
focuspoint
Erweitert den Medienpool um die Fähigkeit, den Fokuspunkt eines Bildes zu bestimmen.
Stars: ✭ 57 (+35.71%)
Mutual labels:  redaxo, redaxo-addon

PdfOut – PDF Generator(dompdf) & Viewer (pdf.js)

PdfOut stellt den "HTML to PDF"-Converter dompdf und pdf.js in REDAXO zur Verfügung.

Mit dompdf können Ausgaben in REDAXO als PDF generiert werden und mittels pdf.js angezeigt werden.

Installation

Die Installation erfolgt über den REDAXO-Installer, alternativ gibt es die aktuellste Beta-Version auf GitHub.

Systemvoraussetzungen

  • DOM-Erweiterung
  • MBString-Erweiterung
  • php-font-lib
  • php-svg-lib
  • gd-lib oder ImageMagick

Bitte beachten: Einige Erweiterungen bringen ebenfalls Abhängigkeiten mit sich, z.B. insbesondere php-svg-lib erfordert sabberworm/php-css-parser.

Zusätzlich empfohlen:

  • OPcache (OPcache, XCache, APC, etc.): verbessert die Leistung
  • GD (für Bildverarbeitung)
  • IMagick- oder GMagick-Erweiterung: verbessert die Bildverarbeitungsleistung
  • Besuchen Sie das Wiki für weitere Informationen: https://github.com/dompdf/dompdf/wiki/Requirements

Erste Schritte

Nach der Installation und Aktivierung kann ein PDF wie folgt erzeugt werden:

  • Den nachfolgenden Code am Anfang des gewünschten Templates oder als separates Template einsetzen
  • Der Aufruf erfolgt dann über die Variable pdf=1 die über die URL übergeben wird. Der aktuelle Artikel kann so dann als PDF ausgegeben werden.

Sofern dann an eine aufgerufenen URL ?pdf=1 angehängt wird, wird der Inhalt von REX_ARTICLE[] oder REX_TEMPLATE [] als PDF ausgegeben.

Tipp: Diese Seite als PDF im REDAXO-Backend aufrufen. Der Aufruf klappt nur über das REDAXO Backend. Wenn man hinter die Backend url ?pdftest=1 dranhängt, kommt die README vom Addon.

Beispiel-Code

$print_pdf = rex_request('pdfout', 'int');
if ($print_pdf) {
  $pdfcontent = 'REX_ARTICLE[]';
  // Outputfilter auf Inhalt anwenden, sofern erforderlich, z.B. wenn Template genutzt wird. 
  // Wenn nicht verwendet, wird die Generierung beschleunigt
  $pdfcontent = rex_extension::registerPoint(new rex_extension_point('OUTPUT_FILTER', $pdfcontent));
  PdfOut::sendPdf('Dateiname_ohne_endung', $pdfcontent);
}

In diesem Beispiel wird überprüft ob pdfout als Parameter übergeben wurde und der Output von REX_ARTICLE wird als PDF ausgegeben. Möchte man eine gestaltete Ausgabe, kann man ein Template erstellen und alle nötigen Styles dort einbauen und anstelle von REX_ARTICLE[] einsetzen, z.B. REX_TEMPLATE[key=pdf].

Die Abfrage nach einem Request ist optional. Der Aufruf kann überall erfolgen, z.B. auch in einem Extensionpoint oder nach dem Ausfüllen eines Formulars.

Die Methode sendPdf

Mit sendPDF kann schnell ein PDF erzeugt werden. Folgende Optionen stehen zur Verfügung

  • $name = 'Dateiname ohne Endung'
  • $html = Das HTML das übergen werden soll
  • $orientation = 'portrait' oder 'landscape'
  • $defaultFont = 'Courier'
  • $attachment = false
  • $remoteFiles = true oder false - true wird benötigt wenn MediaManager-Dateien eingebunden werden sollen. Der übergebene HTML-Code sollte ggf. überprüft werden.
  • $saveToPath = Speichere PDF als Datei im angegebenen Pfad

Die Ausgabe ist immer A4 in 300 dpi.

PdfOut::sendPdf($name = 'pdf_file', $html = '', $orientation = 'portrait', $defaultFont ='Courier', $attachment = false, $remoteFiles = true)

Bilder im PDF

Medien die direkt aus dem Medien-Ordner geladen werden, müssen in einem Unterordner des Frontpage-Ordners der Website aufgerufen werden.

Also z.B.: media/image.png

Medien, die über den Mediamanager aufgerufen werden, sollten immer über die volle URL aufgerufen werden.

Also: https://domain.tld/media/media_type/image.png

CSS und Fonts

CSS und Fonts sollten möglichst inline im HTML eingebunden sein. Die Pfade externer Assets können vollständige URls oder Pfade relativ zum des Frontpage-Ordners haben.

Individuelle Einstellung

Es handelt sich hierbei um das reguläre domPDF das über den Aufruf new PdfOut() instanziert werden kann.

Mehr dazu bei: dompdf

Tipps

  • Auf die numerische Angabe bei font-weight sollte verzichtet werden.
  • Es empfiehlt sich im verwendeten Template die CSS-Definitionen nicht als externe Dateien sondern inline zu hinterlegen. Dies beschleunigt die Generierung, da keine externen Ressourcen eingelesen werden müssen.
  • Auf Bootsstrap CSS oder andere CSS-Frameworks bei der Ausgabe möglichst verzichten, da zu viele Styles abgearbeitet werden müssen.
  • URLs zu Ressourcen sollten ohne / beginnen und vom Frontpage-Ordner aus definiert sein z.B. media/zyz.jpg oder assets/css/pdf_styles.css. Ein Search & Replace per PHP kann hierbei helfen.
  • Fixierte Divs können zur Anzeige von Fuß und Kopfzeile verwendet werden. Ideal ist es diese direkt nach dem Bodytag zu integrieren. Dann können auch mittels CSS count z.B. Seitenzahlen ausgegegeben werden.
  • Google Fonts zur lokalen Nutzung herunterladen: https://google-webfonts-helper.herokuapp.com/fonts

Medienfiles umschreiben

Die direkt aus dem Media-Verzeichnis ausgelesen werden.

$media = rex_url::media($file); // normal
// wenn pdfout = 1
if(rex_request('pdfout', 'int')) { 
// entfernt Slash am Anfang
$media = ltrim(rex_url::media($file),'/'); 
}

Ausgabe eines PDF mit pdf.js

Mit PdfOut::viewer($file) erhält man den Link zum aufruf des PDF. Es können auch PdfOut-PDF-Ulrs angegeben werrden. Sie müssen nicht mehr speziell encodet werden.

<a href="<?=PdfOut::viewer('/media/pdfdatei.pdf')?>">PDF anzeigen</a>

Support & Credits

Wo finde ich weitere Hilfe?

Fragen können im REDAXO-Channel auf Slack gestellt werden.

Autor

Friends Of REDAXO http://www.redaxo.org https://github.com/FriendsOfREDAXO

Projekt-Lead Thomas Skerbis

Wir bedanken uns bei...

Lizenz

MIT-Lizenz

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].