it-swarm.com.de

Joomla 3.8 PDF Ansicht mit DomPDF

Ich habe nach einer Möglichkeit gesucht, ein Layout meiner benutzerdefinierten Komponente als PDF zu speichern.

Ich habe verschiedene Bibliotheken mit JS/PHP ausprobiert. Was ich wollte, war UTF-8-Unterstützung, Tabellen und Bilder, die ordnungsgemäß in der PDF-Datei gespeichert werden sollten.

Ich habe den letzten Tag damit verbracht, die DomPDF-Bibliothek in meine Komponente zu integrieren. Ich habe zahlreiche Anleitungen und Howtos ohne Glück gelesen.

Das Hauptproblem war, dass Joomla die Document Renderer-Bibliothek nach Version 3.8 (ich bin nicht zu 100% über die Version) und der neuesten Version von DomPDF, die die Konfigurationsdatei [config.inc.php] nicht mehr benötigt, geändert hat.

In früheren Joomla-Versionen sollte die folgende Anleitung einwandfrei funktionieren: Erstellen PDF Ansichten

Daher war die Verwendung von DomPDF in der Standardansicht ein Problem für mich, da ich die Option haben wollte, einen Link als PDF aus meiner Listenansicht und aus meiner Artikelansicht herunterzuladen.

Schließlich habe ich eine Rohansicht und eine neue Layoutdatei für eine saubere Ausgabe verwendet.

Ich bin offen für Korrekturen, Vorschläge oder sonstige Verbesserungen.

Vielen Dank

1
mixahlos
  1. Laden Sie die neueste Version von DomPdf herunter

  2. Platzieren Sie im Bibliotheksordner eine Kopie des Ordners dompdf aus dem Release.

  3. Erstellen Sie eine Kopie der Ansichtsdatei /components/mycom/views/item/view.html.php bis /components/mycom/views/item/view.raw.php

Entfernen Sie alle Skripte, Skripte und alles andere, was in der Rohansicht nicht benötigt wird. Diese Ansicht ist nur ein Dialogfeld zum Speichern als, um die PDF-Datei herunterzuladen.

  1. Erstellen Sie ein neues Layout im Ordner /components/mycom/views/item/tmpl mit dem Namen pdf.php und dem folgenden Code:

Die Datei hat nichts anzuzeigen, daher speichern wir die gesamte Ausgabe in einer PHP-Variablen.

defined('_JEXEC') or die('Restricted access');
require_once JPATH_LIBRARIES  . '/dompdf/autoload.inc.php';
use Dompdf\Dompdf;


$html ='<style type="text/css">';
$html .='/*place your css if any here*/';
$html .='</style>';

$html .='<h1>' . $this->item->title . '</h1>';
$html .='<div>';
$html .= $this->item->content; //or any other field you like
$html .='</div>';

$dompdf = new Dompdf();
$dompdf->set_option('isHtml5ParserEnabled', true);
$dompdf->setPaper('A4', 'portrait');
$dompdf->setBasePath(JPATH_LIBRARIES . '/dompdf');
$dompdf->loadHtml($html);
$dompdf->render();
$dompdf->output();

$filename = $this->item->alias . '.pdf';

$dompdf->stream($filename);

Dann platzieren Sie einfach irgendwo in Ihrer /components/mycom/views/item/tmpl/default.php -Layout-Datei einen Link, der auf das neue Layout verweist pdf.php

<a href="index.php?option=com_mycom&view=myview&type=raw&layout=pdf&id=<?php echo $this->item->id?>" target="_blank">Download PDF</a>
1
mixahlos