2012-02-26 58 views
0

我在cakephp 1.3應用程序中使用dompdf 0.6.0 beta 3作爲供應商。我的服務器的PHP版本是5.2。我作爲附件生成的pdf包含使用html助手生成的表格,並且在頭文件中聲明瞭css。Dompdf與表pdf包含錯誤

我有一個很奇怪的問題。通常,生成的pdf沒有問題,但在生成的pdf的大約10%中,該文件包含錯誤並且僅部分呈現。沒有致命的錯誤,但不知何故,pdf的一代是不正確的。更奇怪的是,它與php代碼在會話變量中使用的數據完全相同。因此,有時會生成相同的數據而沒有任何問題(在90%的情況下),有時會出現問題。

謝謝,如果你有什麼問題的線索。

這裏是生成pdf的代碼。 (雜誌是我創建的幫手和功能Journal :: journalCheck輸出表格)

$html = 
'<html xmlns="http://www.w3.org/1999/xhtml">'. 
    '<head>'. 
     $this->Html->charset(). 
     '<style> 

      ul{ 
       margin: 0px; 
      } 
      .enonces p{ 
       margin:0px; 
      } 
      table{ 
       border-collapse: collapse; 
       width:100%; 
       margin-bottom: 25px; 
      }  
      table.legende{ 
       width:25%; 
      } 

      td{ 
       border: 1px solid black; 
      } 

      th{ 
       border: 1px solid black; 
       background-color: #96ed88; 
      } 
      .noEcriture{ 
       width:5%; 
      } 

      .nomCompte{ 
       width:15%; 
      } 

      .montantCompte{ 
       width: 10%; 
       text-align: right; 
      } 

      .libelle{ 
       width: 45%; 
       min-width: 65px; 
      } 
      .faux{ 
       color: red; 
       text-decoration:line-through; 
      } 
      .ecriture_fausse{ 
       background-color: pink; 
      } 
      td.correction_cell{ 
       background-color: #daafe7; 
      } 
      .consigne{ 
       font-style:italic; 
      } 

      .enonces{ 
       border: 1px solid black; 
       margin-bottom: 20px; 
      } 

     </style>'. 
    '</head>'. 
    '<body>'. 
     '<h1>'. 
      $exercice[0]['Exercice']['nom']. 
     '</h1>'. 
     '<h3>'. 
      'Exercice réalisé par '.$session->read('eleve.Exercice.prenom').'       '.$session->read('eleve.Exercice.nom_famille'). 
      ' - version '.$session->read('exercice.'.$this->params['pass'][0].'version'). 
      ' - '.date('d/m/Y'). 
     '</h3>'. 
     '<p class="consigne">'. 
      $this->Journal->showConsigne($exercice[0]['Exercice']['consigne'],$raw = true). 
     '</p>'. 
     '<div class="enonces">'. 
      $this->Journal->viewEnonce($enonces). 
     '</div>'. 
     $this->Journal->journalCheck($datas,$correct_datas,$ecriture_ids,$compte_ids,array('pdf'=>true)). 
     '<p>'. 
      'Légende:'. 
     '</p>'. 
     '<table class="legende">'. 
      $this->Html->tableCells(array(array('écriture juste'), 
            array(array('écriture fausse',array('class'=>'ecriture_fausse'))), 
            array(array('corrigé',array('class'=>'correction_cell')))) 
            ). 
     '</table>'.  
     '<p>'. 
      'Source: <a href="'.$_SERVER['HTTP_HOST']."/".basename(ROOT)."/"."exercices/complete/".$this->params['pass'][0].'">'. 
      $_SERVER['HTTP_HOST']."/".basename(ROOT)."/"."exercices/complete/".$this->params['pass'][0].'</a>'.    
     '</p>'. 
    '</body>'. 
'</html>'; 

$dompdf = new DOMPDF(); 
$dompdf->load_html($html); 
$dompdf->render(); 
$dompdf->stream("Journalizer_".$exercice[0]['Exercice']['nom']."_".$session->read('eleve.Exercice.nom_famille')."_".$session->read('eleve.Exercice.prenom')."_v".$session->read('exercice.'.$this->params['pass'][0].'version').".pdf", array("Attachment" => 1)); 
+0

「不知何故,PDF生成」是不夠的信息,任何人都可以幫助你:)嘗試把一些例子。 – 2012-02-26 12:19:15

+0

對不起,在這裏你會發現一個損壞的PDF文件的兩個屏幕截圖。首先,文件的第一部分不應該有空白頁:[見這裏](http://www.lacompta.ch/MITIC/Images/Capture3.PNG)。然後,直到結束(第18行錯過一個單元格)表纔會呈現表格。並且下面應該有另一個表格:[see here](http://www.lacompta.ch/MITIC/Images/Capture4.PNG) – Vestrep 2012-02-26 13:18:28

+0

那麼每次文檔都完全一樣?這可能有助於看到一個給你帶來問題的HTML示例。而且,即使沒有致命的錯誤,也可能會有某種其他問題影響輸出。 – BrianS 2012-02-26 17:53:53

回答

0

我前段時間有同樣的問題。問題是,當pdf太大時,dompdf會引發錯誤。現在我找不到修復程序,因爲我沒有權限再編寫代碼。

嘗試檢查apache錯誤日誌文件。如果你發現這個錯誤,那麼你可以使用錯誤信息穀歌搜索答案。

需要一些簡單的源代碼行編輯來解決這個問題。