2017-08-21 17 views
0

クライアントがレコードの一部のハードコピーを依頼するたびに、私のデータベースに自分のテーブルのPDFファイルを印刷したいと思います。残念ながら、レコードを印刷するか、またはPDF形式に変換すると、次のように続きます。DOMPDFエラーhttpエラー500

localhostは現在この要求を処理できません。 HTTPエラー500

私はそれに任意のhtml要素を置くようにテーブルを取り除いても。ここで

はコードです:

<?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 


?> 

私はDOMPDFを使用しています。 ヘルプを探しています。 ありがとうございます。

+0

コメントに記載されているとおり、エラーの内容を確認するのに役立ちます。 500のエラーはWebサーバーからのもので、基礎となる技術に致命的なエラーが発生したことを示しています。 PHPログを確認してください。 – BrianS

答えて

1

これは私がDOMPDFを使用する方法です。私はこれをいつも使っています。使用しているバージョンは0.7.0です。私は完全にテストされたサンプルを提供しているので、それが動作しない場合、それはあなたのHTMLだということを知っておくべきです。 DOMPDFは、HTMLのためにうまく使用されていることをぞっとすることができます。私のサンプルコードを試してみるが、autoload.inc.pdfを含む行が本当にautoload.inc.pdfの場所であることを確認する。

<?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'); 

これはあなたのために働くべきであり、それはありませんし、その後、あなたのHTMLでない場合は、ここにあなたのHTMLを投稿し、我々はそれと間違っているかを把握しようとするでしょう。あなたのDOMPDFバージョンが私のものと同じではない可能性もあります。あなたが持っている問題がある場合は教えてください。繰り返しますが、このコードはテストされ、常に使用されます。

+0

私はまだ同じエラーを試しました。たぶん私のdompdfのバージョンですか?私はdompdfマスターを使用しています。 –

+0

@JayzdeVera、自分でコードを試しましたか?それでも同じエラーですか?その場合、詳細についてはサーバーログを参照する必要があります。 –

+0

私のサーバーではどういう意味ですか? –