2016-05-17 22 views
0

Ich erstelle einen neuen Compnent in Joomla 3, die Dompdf verwenden wird, um PDFs bestimmter Informationen auf dem Bildschirm zu generieren.Verwendung von dompdf in Joomla-Komponente hat falschen Inhalt

Ich habe meinen Dompdf-Code außerhalb von Joomla getestet und alles funktioniert in Ordnung, aber sobald ich den Code in meine Komponente bringe, geht es schief.

Dompdf generiert die PDF, aber sie ist ungültig und wird nicht korrekt geöffnet.

Ich habe das PDF in einem Texteditor geöffnet und das Problem ist, dass das PDF, das dompdf erzeugt, alle Joomla-Header (Stylesheets, Javascript usw.) hat, obwohl ich nur etwas dediziertes HTML übergebe es.

Gibt es etwas, das ich vermisse? Der Code wird unter

aufgeführt
$fhtml = '<html><head><title>Sales Order</title>'; 
$fhtml .= PHP_EOL . '<link type="text/css" href="test.css" rel="stylesheet" /></head><body>'; 
$fhtml .= PHP_EOL . '<center><img src="elite.jpg" /><img src="premierdealer.jpg" /><img src="logo.jpg" /><img src="traveller.jpg" /><img src="childrens.jpg" /><img src="westfield.jpg" /></center>'; 
$fhtml .= PHP_EOL . '<h2>Header</h2><p>Para</p>'; 
$fhtml .= PHP_EOL . '</body></html>'; 

require_once 'dompdf/autoload.inc.php'; 
use Dompdf\Dompdf; 
$dompdf = new Dompdf(); 
$dompdf->setPaper('A4', 'portrait'); 
$dompdf->loadHtml($fhtml); 
$dompdf->render(); 
$dompdf->stream('salesorder'); 

Sie aus dem Code über das sehe ich die html übergehen dompdf-> loadhtml. Ein pdf erzeugt wird, aber wenn ich teh PDF-Dokument in einem Texteditor öffnen (es wird eine beschädigte PDF, so kann ich nicht mit einem PDF-Reader öffnen) ich folgende in der PDF finden:

<!DOCTYPE html> 
<html lang="en-gb" dir="ltr"> 
<head> 
<meta name="viewport" content="width=device-width, initial-scale=1.0"> 
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> 
<meta charset="utf-8" /> 
<base href="http://test1.questleisure.local/index.php/portal/portal-home" /> 
<meta name="keywords" content="quest leisure air awnings caravan awnings camping caravan air tents outdoor funriture" /> 
<meta name="rights" content="Quest Leisure" /> 
<meta name="description" content="Quest Leisure Public Website" /> 
<meta name="generator" content="Joomla! - Open Source Content Management" /> 
<title>Portal Home</title> 
<link rel="stylesheet" href="/media/com_questportal/css/default.css" /> 
<link rel="stylesheet" href="/plugins/system/rokbox/assets/styles/rokbox.css" /> 
<link rel="stylesheet" href="/media/gantry5/assets/css/font-awesome.min.css?57344a42" /> 
<link rel="stylesheet" href="/media/gantry5/engines/nucleus/css-compiled/nucleus.css?57344a42" /> 
<link rel="stylesheet" href="/templates/rt_galatea/custom/css-compiled/galatea_11.css" /> 
<link rel="stylesheet" href="/media/gantry5/assets/css/bootstrap-gantry.css?57344a42" /> 
<link rel="stylesheet" href="/media/gantry5/engines/nucleus/css-compiled/joomla.css?57344a42" /> 
<link rel="stylesheet" href="/media/jui/css/icomoon.css" /> 
<link rel="stylesheet" href="/templates/rt_galatea/custom/css-compiled/galatea-joomla_11.css" /> 
<link rel="stylesheet" href="/templates/rt_galatea/custom/css-compiled/custom_11.css" /> 
<link rel="stylesheet" href="/templates/rt_galatea/css/demo.css" /> 
<link rel="stylesheet" href="/templates/rt_galatea/css/animate.css" /> 
<script src="/media/system/js/mootools-core.js"></script> 
<script src="/media/system/js/core.js"></script> 
<script src="/media/system/js/mootools-more.js"></script> 
<script src="/plugins/system/rokbox/assets/js/rokbox.js"></script> 
<script src="/templates/rt_galatea/js/jui/jquery.min.js"></script> 
<script src="/media/jui/js/jquery-noconflict.js"></script> 
<script src="/media/jui/js/jquery-migrate.min.js"></script> 
<script src="/media/jui/js/bootstrap.min.js"></script> 
<body class="gantry g-galatea-style site com_questportal view-questportal no-layout task-display dir-ltr itemid-229 outline-11 g-offcanvas-left g-default g-style-preset1"> 
    <div id="g-offsidebar-overlay"></div> 
    <div id="g-offcanvas" data-g-offcanvas-swipe="1" data-g-offcanvas-css3="1"> 
<div   
    class="g 

So dompdf ist bekomme alle Basis-Joomla-Header aus dem Puffer, obwohl ich nur bestimmten HTML-Code übergebe. Gibt es irgendetwas, was ich tun muss, um dompdf mit allen Headern von Joomla zu stoppen, und einfach den HTML-Code zu verwenden, den ich übergebe?

Prost

+0

Ich habe mehr Tests durchgeführt und festgestellt, dass das Problem der Befehl dompdf-> stream ist. Wenn ich den Befehl dfpdf-> output() verwende, um den PDf in eine physische Datei auszugeben, ist die physische Datei korrekt und enthält nicht alle zusätzlichen Header-Informationen. Sobald ich Stream verwende, werden alle zusätzlichen Header-Informationen eingefügt –

+0

Mögliches Duplikat von [dompdf-> stream funktioniert nicht in joomla] (http://stackoverflow.com/questions/37277813/dompdf-stream-not-working-in-joomla) – BrianS

Antwort

0

ich auf die Art und Weise verfolgt haben dieses Problem zurück, das dompdf-> Strom() funktioniert. Wenn ich eine physische PDF-Datei mit dompdf-> output() erstellen, ist die PDF-Datei zu 100% korrekt. Wenn ich dann dompdf-> stream() danach die resultierende PDF-Datei hat alle Joomla-Header und Stylesheets usw., in denen das Problem verursacht. Der Code, den Unterschied zeigt unter:

$fhtml = '<html><head><title>Sales Order</title>'; 
$fhtml .= PHP_EOL . '<link type="text/css" href="dompdf.css" rel="stylesheet" /></head><body>'; 
$fhtml .= PHP_EOL . '<center><img src="elite.jpg" /><img src="premierdealer.jpg" /><img src="logo.jpg" /><img src="traveller.jpg" /><img src="childrens.jpg" /><img src="westfield.jpg" /></center>'; 
$fhtml .= PHP_EOL . 'Test content'; 
$fhtml .= PHP_EOL . '</body></html>'; 

require_once JPATH_COMPONENT . '/libraries/dompdf/autoload.inc.php'; 
use Dompdf\Dompdf; 
$dompdf = new Dompdf(); 
$dompdf->setPaper('A4', 'portrait'); 
$dompdf->setBasePath(JPATH_COMPONENT . '/libraries/'); 
$dompdf->loadHtml($fhtml); 
$dompdf->render(); 
$dompdf->output(); 

$file_to_save = JPATH_COMPONENT . '/temp/test.pdf'; 
file_put_contents($file_to_save, $dompdf->output()); 

$dompdf->stream(); 

In dem obigen Beispiel der test.pdf Datei zu 100% korrekt, aber die heruntergeladene Datei (erstellt durch den dompdf-> Strom() Befehl) ist tatsächlich korrupt und enthält das ganze Chrom von Joomla. Ich schließe diese Frage ab und werde stattdessen eine neue Frage mit dem Problem zwischen Stream und Ausgabe stellen.

+0

FYI, dompdf unterstützt derzeit nicht beide Aufrufe '$ dompdf-> output()' und '$ dompdf-> stream()' von derselben Instanz. – BrianS