2017-08-21 7 views
0

Ich möchte eine PDF-Datei für meine Tabelle in meinem db drucken, wenn der Client bitten, einige Hardcopy der Datensätze zu haben. Leider, wenn ich den Datensatz drucke oder es in PDF-Format umwandle, sagt es immer wieder:DOMPDF Fehler HTTP-Fehler 500

localhost ist derzeit nicht in der Lage, diese Anfrage zu bearbeiten. HTTP-FEHLER 500

Selbst wenn ich den Tisch los werde, versuche, ein HTML-Element darauf zu setzen. Hier

ist der Code:

<?php 
//index.php 
//include autoloader 

require_once '../autoload.inc.php'; 

// reference the Dompdf namespace 

use Dompdf\Dompdf; 

//initialize dompdf class 

$document = new Dompdf(); 

$html = ' 
    <style> 
table { 
    font-family: arial, sans-serif; 
    border-collapse: collapse; 
    width: 100%; 
} 

td, th { 
    border: 1px solid #dddddd; 
    text-align: left; 
    padding: 8px; 
} 

tr:nth-child(even) { 
    background-color: #dddddd; 
} 
</style> 
<table> 
    <tr> 
    <th>Company</th> 
    <th>Contact</th> 
    <th>Country</th> 
    </tr> 
    <tr> 
    <td>Alfreds Futterkiste</td> 
    <td>Maria Anders</td> 
    <td>Germany</td> 
    </tr> 
    <tr> 
    <td>Centro comercial Moctezuma</td> 
    <td>Francisco Chang</td> 
    <td>Mexico</td> 
    </tr> 
    <tr> 
    <td>Ernst Handel</td> 
    <td>Roland Mendel</td> 
    <td>Austria</td> 
    </tr> 
    <tr> 
    <td>Island Trading</td> 
    <td>Helen Bennett</td> 
    <td>UK</td> 
    </tr> 
    <tr> 
    <td>Laughing Bacchus Winecellars</td> 
    <td>Yoshi Tannamuri</td> 
    <td>Canada</td> 
    </tr> 
    <tr> 
    <td>Magazzini Alimentari Riuniti</td> 
    <td>Giovanni Rovelli</td> 
    <td>Italy</td> 
    </tr> 
</table> 
'; 

//$document->loadHtml($html); 
$page = file_get_contents("cat.html"); 

//$document->loadHtml($page); 

$connect = mysqli_connect("localhost", "root", "", "pdf"); 

$query = " 
    SELECT * 
    FROM preschoolers 
"; 
$result = mysqli_query($connect, $query); 

$output = " 
    <style> 
table { 
    font-family: arial, sans-serif; 
    border-collapse: collapse; 
    width: 100%; 
} 

td, th { 
    border: 1px solid #dddddd; 
    text-align: left; 
    padding: 8px; 
} 

tr:nth-child(even) { 
    background-color: #dddddd; 
} 
</style> 
<table> 
    <tr> 
     <th>ID</th> 
     <th>Name</th> 
     <th>Interp</th> 
    </tr> 
"; 

while($row = mysqli_fetch_array($result)) 
{ 
    $output .= ' 
     <tr> 
      <td>'.$row["p_id"].'</td> 
      <td>'.$row["last_name"].'</td> 
      <td>$'.$row["interp"].'</td> 
     </tr> 
    '; 
} 

$output .= '</table>'; 

//echo $output; 

$document->loadHtml($output); 

//set page size and orientation 

$document->setPaper('A4', 'landscape'); 

//Render the HTML as PDF 

$document->render(); 

//Get output of generated pdf in Browser 

$document->stream("Webslesson", array("Attachment"=>0)); 
//1 = Download 
//0 = Preview 


?> 

ich DOMPDF verwende. Auf der Suche nach Hilfe. Vielen Dank im Voraus.

+0

Wie in den Kommentaren erwähnt, würde es helfen zu sehen, was der Fehler ist. Ein 500-Fehler von Ihrem Webserver weist darauf hin, dass die zugrunde liegende Technologie einen schwerwiegenden Fehler festgestellt hat. Überprüfen Sie Ihre PHP-Protokolle. – BrianS

Antwort

1

So benutze ich DOMPDF. Ich benutze das die ganze Zeit. Version, die ich verwende, ist 0.7.0. Ich stelle ein vollständig getestetes Beispiel zur Verfügung und Sie sollten wissen, dass es Ihr HTML ist, wenn es nicht funktioniert. DOMPDF kann wählerisch sein, was es für HTML erfolgreich verwendet. Versuchen Sie meinen Beispielcode, aber stellen Sie sicher, dass die Zeile, die autoload.inc.pdf enthält, wirklich der Speicherort von autoload.inc.pdf ist.

<?php 

use Dompdf\Dompdf; 
use Dompdf\Options; 

function write_file($path, $data, $mode = 'wb') 
{ 
    if (! $fp = @fopen($path, $mode)) 
     return FALSE; 

    flock($fp, LOCK_EX); 
    fwrite($fp, $data); 
    flock($fp, LOCK_UN); 
    fclose($fp); 

    return TRUE; 
} 

function pdf_create($html, $filename, $output_type = 'stream', $dompdf_cfg = []) 
{ 
    // Remove all previously created headers if streaming output 
    if($output_type == 'stream') 
     header_remove(); 

    // Load dompdf and create object 
    require_once '../autoload.inc.php'; 
    $options = new Options(); 
    $options->set('isHtml5ParserEnabled', TRUE); 
    $options->set('isRemoteEnabled', TRUE); 
    $dompdf = new Dompdf($options); 

    foreach($dompdf_cfg as $k => $v) 
     $dompdf->$k($v); 

    // Loads an HTML string 
    $dompdf->loadHtml($html); 

    // Create the PDF 
    $dompdf->render(); 

    // If destination is the browser 
    if($output_type == 'stream') 
    { 
     $dompdf->stream($filename); 
    } 

    // Return PDF as a string (useful for email attachments) 
    else if($output_type == 'string') 
    { 
     return $dompdf->output(['compress' => 1]); 
    } 

    // If saving to the server 
    else 
    { 
     // Save the file 
     write_file($filename, $dompdf->output()); 
    } 
} 

$html = '<!doctype html> 
<html lang="en"> 
<head> 
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> 
    <title>Hello World</title> 
    <style> 
     h1{color:red;} 
    </style> 
</head> 
<body> 
    <h1>Hello World</h1> 
</body> 
</html>'; 

pdf_create($html, 'Webslesson', 'stream'); 

Dies sollte für Sie arbeiten, und wenn es das tut und dann nicht mit Ihrem HTML, posten Sie Ihre HTML hier, und wir werden versuchen, herauszufinden, was mit ihm los ist. Ich schätze, es gibt auch eine Chance, dass Ihre DOMPDF-Version nicht mit meiner übereinstimmt. Lassen Sie es mich wissen, wenn Sie ein Problem haben. Auch dieser Code wird getestet und ständig verwendet.

+0

Ich habe es immer noch den gleichen Fehler versucht. Vielleicht weil die Version meines dompdf? Ich benutze dompdf Master. –

+0

@JayzdeVera, hast du meinen Code für sich genommen und immer noch den gleichen Fehler? Wenn dies der Fall ist, müssen Sie sich die Serverprotokolle für weitere Informationen ansehen. –

+0

meinst du in meinem Server? –