2012-02-26 6 views
0

私はcakephp 1.3アプリケーションでdompdf 0.6.0 beta 3をベンダーとして使用しています。私のサーバのphpバージョンは5.2です。添付ファイルとして生成するpdfには、htmlヘルパーで生成されたテーブルが含まれ、cssはヘッダーで宣言されています。テーブルpdf付きのDompdfにエラーがあります

私は非常に奇妙な問題があります。通常、生成されたpdfには問題はありませんが、生成されたpdfの約10%にファイルにエラーが含まれ、部分的にレンダリングされます。致命的なエラーはありませんが、何らかの形でpdfの生成は正しくありません。見知らぬ人でも、Session変数でPHPコードがとるのとまったく同じデータで発生します。そのため、同じデータが問題なく生成されることがあり(ケースの90%)、時には問題があります。

問題が何であるかについての手掛かりがある場合は、ありがとうございます。

ここにpdfを生成するコードを示します。 (Journalは私が作成したヘルパーで、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の生成」は、あなたを助けるために十分な情報ではありません:)いくつかの例をまとめてみてください。 –

+0

申し訳ありません、ここでは、破損したPDFファイルの2つのスクリーンショットを見つけるでしょう。まず、ファイルの最初の部分に空白のページはありません。[ここをクリック](http://www.lacompta.ch/MITIC/Images/Capture3.PNG)。その後、テーブルは最後まで表示されません(行18は1つのセルが欠落します)。そして、この下に別のテーブルがあるはずです:[ここをクリック](http://www.lacompta.ch/MITIC/Images/Capture4.PNG) – Vestrep

+0

文書はいつもまったく同じですか?あなたに問題をもたらしているHTMLのサンプルを見るのに役立つかもしれません。また、致命的なエラーはありませんが、出力に影響する何らかの問題があります。 – BrianS

答えて

0

私は以前も同じ問題を抱えていました。事は、pdfが大きすぎるとdompdfがエラーを投げているということでした。私はこれ以上のコードへのアクセス権がないので、これで修正を見つけることができません。

apacheエラーログファイルを確認してください。このエラーが見つかった場合は、エラーメッセージを使用してGoogle検索で回答を検索できます。

これを修正するには、単純なソースの1行の編集が必要でした。

関連する問題