Liste der Anhänge anzeigen (Anzahl: 1)
Erste Ergebnisse
Einbau + Einstellungen: problemlos.
Ohne weitere Anpassung: mpdf läuft, verwendet aber seine Standardeinstellungen > Stylesheet wird offenbar nicht geladen
Spezifischen Font in mpdf eingebaut (font als ttf in mpdf hochladen und in config_fonts.php konfigurieren (siehe Anleitung mPDF) => funktioniert
Testweise in mpf_HookControl.php mit Varianten gespielt:
$pdf=new \mPDF('','A4','11pt','opensanscond',16,16,50,25,0, 0);
Damit wird Ausgabegrösse definiert => funktioniert
Exernes PDF einbinden als Template:
// Import external file as Template
$pdf->SetImportUse();
$pdf->SetDocTemplate('files/olgbern.pdf',true);
=> funktioniert (damit könnte man sich die eine extension sparen) > Logo oben links und Fusszeile sind aus Template.
//eigenes Stylesheet einbauen, da er im Moment offenbar header nicht liest
$stylesheet = file_get_contents('files/event/css/olgeventpdf.css');
$pdf->writeHTML( $stylesheet, 1 );
$pdf->writeHTML( $strArticle, 2 );
=> funktioniert, allerdings verarbeitet mpdf offenbar nicht alle attribute obwohl es müsste ...
Verschiedene Varianten gespielt > zu Beginn des css-files alles resetted > dann floatet er korrekt. Offenbar lädt das System das CSS des html-outputs schon ein, kann es aber offenbar nicht richtig verarbeiten.
Interessant: padding wird verarbeitet, margin aber nicht (dieses Verhalten kenne ich sonst nicht von mPDF).
Versucht, zusätzlichen Content am Ende hinzuzufügen (in meinem Fall Sponsorenlogos)
$addcontent = {{insert_module::66}}; das geht nicht, wäre praktisch, wenn wie hier ein html-modul gleich so eingebaut werden könnte.
$addcontent = '<div id="sponsorenblock"><div class="spontitel">Unsere Sponsoren</div>
<div class="sponsors"><a href="http://www.s-sport.ch" target="_new"><img src="files/event/images/ssport.png"></a></div>
<div class="sponsors"><a href="http://design.phi-network.ch" target="_new"><img src="files/event/images/logophi.png"></a></div>
</div>';
$pdf->writeHTML ($addcontent);
css sagt > floaten, will es aber nicht. Positionieren mit position: absolute funktioniert aber!
Ergebnis dieser Spielerei:
Anhang 15092
Fazit bis jetzt: es geht noch nicht alles, aber der Fortschritt im Vgl. zu tcpdf ist gewaltig.
Funktionalitäten Stylesheet einbinden / Template einbinden wären erwünscht, ebenso zusätzlichen code wie in obigem Beispiel.
Im Vergleich zur Druckausgabe (auf Beispielseite via Druck-Syndication) druckt die gesamte Seite (inkl. header & footer). PDF-Syndication druckt aber m.E. nur den entsprechenden Artikel. Ist das so? Bug oder Absicht? (Link zur Beispielseite: bnol15.olgbern.ch)
Frage: gibt es einen Weg, den reinen HTML-Stream abzufangen, welcher an mPDF ausgegeben wird. Das würde das Debugging erleichtern.
Danke schon mal!
PDF direkt aus BE ausgeben
Hi
Weiss, dass das nur bedingt hierher gehört:
Versuche gerade, Mitgliederliste als PDF auszugeben, scheitere aber daran. Ich habe dan ganzen Tag gesucht und keine Hinweise gefunden.
Meine Idee war, tl_member zu erweitern > globalen Butten "PDF". Als url einen key auf ein Modul setzen und dort die Logik zu Mitgliederabfrage und generieren des PDF einbauen.
Button ist natürlich kein Problem, aber klick darauf generiert keine Ausgabe.
Gibt es da ein Beispiel, wo ich das "abschauen" kann oder hätte jmd von euch einen Hinweis zum richtigen Vorgehen?
danke! Markus
Lösung: PDF direkt aus Backend ausgeben
Problem gelöst, hat wohl nicht funktioniert wegen Tippfehler ...
Beschreibe das kurz, weil dies die Funktionalität doch wesentlich erhöht. Vielleicht hilft das jemand anderem auch mal weiter.
Ziel: Adressetiketten direkt aus dem Backend in eine PDF-Datei drucken
Kleine Erweiterung angelegt: zlabel
config.php
Code:
$GLOBALS['BE_MOD']['accounts']['member']['create'] = array('zlabel', 'create');
autoload.php generiert:
Code:
//Register the namespaces
ClassLoader::addNamespaces(array
(
'Phinetwork',
));
//Register the classes
ClassLoader::addClasses(array
(
'Phinetwork\zlabel' => 'system/modules/zlabel/zlabel.php',
));
in /dca Datei tl_member.php angelegt:
Code:
//Add a global operation to tl_member
$GLOBALS['TL_DCA']['tl_member']['list']['global_operations']['create'] = array
(
'label' => &$GLOBALS['TL_LANG']['tl_member']['create'],
'icon' => 'pickfile.gif',
'href' => 'key=create'
);
in /languages/de eine Datei tl_member.php angelegt:
Code:
//give translation to global action
$GLOBALS['TL_LANG']['tl_member']['create'] = array('Etiketten', 'Etiketten drucken');
Im Modulordner eine Datei zlabel.php angelegt
Code:
// build an export to labels from tl_member
namespace Phinetwork;
//Class zlabel: provides methods to handle label printer
class zlabel extends \Backend
{
public function create()
{
// Include library mPDF muss als Erweiterung installiert sein
require_once TL_ROOT . '/system/modules/mPDF/vendor/mPDF/mpdf.php';
// Create new PDF document
$pdf=new \mPDF('','A4','12pt','opensanscond',5,5,10,10,0,0);
$pdf->SetCreator( PDF_CREATOR );
$pdf->SetAuthor( PDF_AUTHOR );
//remove default header/footer
$pdf->SetHeader();
$pdf->SetFooter();
//initialize document and add a page
$pdf->AddPage();
//binde spezielles Stylesheet ein
$stylesheet= file_get_contents(TL_ROOT . 'files/css/pdfstyle.css');
$pdf->writeHTML($stylesheet, 1);
//retrieve data from database and put all data in a va
$result = $this->Database->prepare('SELECT id,lastname,firstname,street,postal,city,country,mailmerger from tl_member ORDER by lastname,firstname')->execute();
while($result->next()){
$cont.='<div style="float:left;width:54mm;height:35.5mm;padding:4mm 6mm 0 6mm;clear:none;line-height:4.5mm;">
<div style="width:54mm;height:5mm;border-bottom:#e30000 thin solid;margin:0 0 2mm 0;font-size:8pt;"><div style="float:left;width:40mm">Company Street postal Code City</div></div>
<div style="width:54mm;">'.$result->firstname.' '.$result->lastname.'</div>';
$cont.= '<div>'.$result->street.'</div><div>'.$result->postal.' '.$result->city.'</div>';
}
//write $cont into pdf
$pdf->writeHTML($cont);
//produce PDF and make it available as download
$pdf->Output('etiketten.pdf', 'D');
Ausgabe der Etiketten auf dem Etikettenbogen ist mit einfachem Floaten der einzelnen Etiketten gelöst. Voraussetzung ist die installierte Erweiterung mPDF
Gruss Markus
Unterstützung con CSS Pseudoklassen für eine Tabelle
Hallo,
zuerst die Frage, ob das Thema in Verbindung mit Contao 4 überhaupt noch aktuell ist ;) Soweit ich das sehe, wird aber immer noch per default tcpdf in Contao verwendet.
Zur Problemstellung: ich habe eine Tabelle, die bedarfsweise mit 4 bzw. 5 Spalten daher kommt. Je nach Anzahl der Spalten wäre es schon einmal von Vorteil, wenn ich die Ausgabe im Hoch- bzw Querformat steuern könnte. Dazu brauche ich dann noch bevorzugt die Möglichkeit, Zeilen und Spalten mit Pseudoklassen zu stylen, da die Tabelle an sich frei von Klassen und ID's ist.
Was also verwenden? mpdf oder dompdf?