2013-07-02 2 views
0

저는 dompdf를 사용하여 PHP 파일에서 PDF를 생성하고 있습니다. 다음은 파일의 전체 코드입니다.pdf로 PHP 코드 생성

<?php 

// INCLUDEM CONFIGUL SI INITIALIZAM CLASELE DE SISTEM 
require_once 'config.php'; 
require_once 'initialize.php'; 
require_once("/dompdf/dompdf_config.inc.php"); 

// Database 
// Conectarea LA BAZA DE DATE !!! 
$db = new MySQLDatabase(); 

// Session 
// SESIUNEA CARE TINE UTILIZATORUL LOGAT ! 
$session=new Session();  
?> 

<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<link href="main.css" media="all" rel="stylesheet" type="text/css"> 
    <link href='http://fonts.googleapis.com/css?family=Allura' rel='stylesheet' type='text/css'> 
    <script type="text/javascript" src="<?php echo HTTP_FRONT; ?>js/jquery-1.8.3.js"></script> 
    <title>Sanovita</title> 
</head> 
<body> 
    <script> 
    $(document).ready(function(){ 
     $('.AdaugaCategoriile p#1').hide(); 
     $('.AdaugaCategoriile p#2').hide(); 
     $('.AdaugaCategoriile p#3').hide(); 
     $('.AdaugaCategoriile p#4').hide(); 

     $('#categorie').change(function(){ 

      var categorie = $(this).val(); 

      $('.AdaugaCategoriile p#1').hide(); 
      $('.AdaugaCategoriile p#2').hide(); 
      $('.AdaugaCategoriile p#3').hide(); 
      $('.AdaugaCategoriile p#4').hide(); 

      $('.AdaugaCategoriile p#'+categorie).show(); 
     }); 

    }); 
    </script> 
    <div id="Body"> 
     <div id="Header"> 
      <div id="HeaderLogo"> 
       <a href="index.php"><img src="images/logo.png"></a> 
      </div> 
      <div id="Menu"> 
       <div class="clear"></div> 
      </div> 
     </div> 
     <div id="Content"> 
      <div class="Categorii"> 
       <?php 

       // daca nu exista id-ul produsului 
       if(isset($_GET['id'])) 
       { 
        $res = $db->query("SELECT * FROM `vanzari` WHERE `id_client`=".$_GET['id']." AND `finalizat`=0"); 

        $categoriile = '<table> 
          <th width="2%">Nr.</th> 
          <th width="15%">Nume Client</th> 
          <th width="15%">Nume Angajat</th> 
          <th width="15%">Produs</th> 
          <th>Data</th> 
          <th>Cantitate</th> 
          <th width="10%">Total pret</th> 
          <th width="15%">Stare</th> 
          <th>Actiuni</th>'; 

        $x = 1; 
        // AFISEZ PRODUSELE 
        for($i=0; $i<$res->num_rows; $i++) 
        { 
         $client = $db->query("SELECT * FROM `clienti` WHERE `id`=".$res->rows[$i]['id_client'].""); 
         $produs_vanzare = $db->query("SELECT * FROM `produse` WHERE `id`=".$res->rows[$i]['id_produs'].""); 
         $angajat = $db->query("SELECT * FROM `utilizatori` WHERE `id`=".$res->rows[$i]['id_angajat'].""); 

         if($res->rows[$i]['finalizat'] == 0) 
         { 
          $status = 'In curs de finalizare'; 
         } 
         else 
         { 
          $status = 'Finalizat'; 
         } 

         // daca produsul e par 
         if(($i%2)==0) 
         { 
          $categoriile .= " 
          <tr class='odd'> 
           <td><p>".$x."</p></td> 
           <td><p>".$client->row['nume_client']."</p></td> 
           <td><p>".$angajat->row['firstname']. ' ' . $angajat->row['lastname']."</p></td> 
           <td><p>".$produs_vanzare->row['name']."</p></td> 
           <td><p>".$res->rows[$i]['data']."</p></td> 
           <td><p>".$res->rows[$i]['bucati']."</p></td> 
           <td><p>".$res->rows[$i]['total_pret']." RON</p></td> 
           <td><p>".$status."</p></td> 
           <td><a href='".HTTP_FRONT."vanzari.php?id_vanzare=".$res->rows[$i]['id']."&id=".$client->row['id']."'><p>Sterge</p></a></td>  
          </tr>"; 
         } 
         else 
         { 
          $categoriile .= " 
          <tr class='even'> 
           <td><p>".$x."</p></td> 
           <td><p>".$client->row['nume']."</p></td> 
           <td><p>".$angajat->row['firstname']. ' ' . $angajat->row['lastname']."</p></td> 
           <td><p>".$produs_vanzare->row['name']."</p></td> 
           <td><p>".$res->rows[$i]['data']."</p></td> 
           <td><p>".$res->rows[$i]['bucati']."</p></td> 
           <td><p>".$res->rows[$i]['total_pret']." RON</p></td> 
           <td><p>".$status."</p></td> 
           <td><a href='".HTTP_FRONT."vanzari.php?id_vanzare=".$res->rows[$i]['id']."&id=".$client->row['id']."'><p>Sterge</p></a></td> 
          </tr>"; 
         } 

         $x++; 
        }       
        $categoriile .= "</table><div class='clear'></div>"; 

        if(!isset($session->data['finalizat'])) 
        { 
         echo $categoriile; 
        } 
       } 

       ?> 
      </div> 

     </div> 
     <div class="clear"></div> 
     <div id="Footer"> 
      <p>Copyright &copy; 2013</p> 
     </div> 
    </div> 
</body> 
</html> 

<?php 
$html = ob_get_clean(); 
$dompdf = new DOMPDF(); 
$dompdf->load_html($html); 
$dompdf->render(); 
$dompdf->stream("factura.pdf"); 

?> 

dompdf는 HTML 부분 만 생성하지만 PHP는 표시하지 않습니다. config에서 DOM_ENABLE_PHP는 true로 설정됩니다. 무엇이 문제 일 수 있습니까?

+0

하면 시도 우리를 더 쉽게 만들고 싶어. 가능한 한 작은 예가 문제가됩니다. 아마 모든 코드 대신'

테스트

'이라고했을 경우에도 여전히 문제가있을 수 있으며 문제를 찾는 것이 훨씬 쉬울 것입니다. 그렇게하고 문제를 보여주지 않으면 갑자기 해결책에 가까워집니다! – Nanne

답변

0

모든 PHP 생성 출력을 $categoriile에 저장하고 있습니다. 그렇다면 당신은 $session->data['finalizat']이 설정되어 있지 않은지 확인하고 있습니다 ... 아마도이 조건을 충족하지 못하고 있습니다. $session->data['finalizat']을 확인하십시오. 또한

은 (적어도 그게 내가 당신 ob_get_clean(); 사용에서 찾을 생각
+0

ob_start를 넣었지만 표시하지 않습니다. 저장에 관해서는 PHP 페이지에서 코드를 테스트했으며 PHP가 모든 정보를 제공하므로 PHP 코드가 작동합니다. – Mihai

1
귀하의 모든 출력을 잡으려고 노력하고 마치

있어 (Nanne의 통지 당)위한 ob_start이 없습니다.하지만 당신은 그래서 당신은 결코 ob_start를 호출하지 아마도 브라우저/출력에 모든 데이터를 밀어 다시 ', 거기에 아무것도 얻을 수 없습니다.

그냥 문자열에 HTML을 구축 한 후 입력이를 사용합니다.

<?php 
require_once 'config.php'; 
require_once 'initialize.php'; 
require_once("/dompdf/dompdf_config.inc.php"); 

$db = new MySQLDatabase(); 
$session=new Session();  

$html = <<<HTML 
<html> 
<head> 
</head> 
<body> 
<div> 
<p> 
test 
</p> 
</div> 
</body> 
</html> 
HTML; 

$dompdf = new DOMPDF(); 
$dompdf->load_html($html); 
$dompdf->render(); 
$dompdf->stream("factura.pdf"); 

?> 
+0

나는 ob_start()를 넣었다. 하지만 PHP 데이터는 나타나지 않습니다. 문자열에서 html을 사용하는 방법? 나는 그것을 이해하지 못한다 ... – Mihai

+0

당신의'ob_start()'가 보이지 않습니까? 어쨌든, 내 코멘트를 확인하십시오 : 예를 들어, 모든 데이터베이스 물건을 제거 _예요 SMALL_ 예를 확인하십시오. http://sscce.org/를 읽으십시오 :) .. – Nanne

+1

(소스에'ob_start()'를 어떻게 넣을 수 있습니까?하지만 그것을 보여줄 수는 없습니까? 소스에 있거나 그렇지 않습니다. 어쨌든, 내 편집을 참조하십시오. 그 HTML은 귀하의 질문에 있었어야했는데 (그 의미! 그게 우리에게 많은 도움이 될 것입니다.) – Nanne