2012-02-26 2 views
0

cakephp 1.3 응용 프로그램에서 dompdf 0.6.0 beta 3을 사용하고 있습니다. 내 서버의 PHP 버전은 5.2입니다. 첨부 파일로 생성하는 pdf는 html 도우미로 생성 된 테이블을 포함하며 CSS는 헤더에 선언되어 있습니다.테이블 pdf가있는 Dompdf에 오류가 있습니다.

나는 매우 이상한 문제가 있습니다. 일반적으로 생성 된 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 생성"은 누구에게나 도움이되는 정보가 아닙니다. 몇 가지 예를 들어보십시오. –

+0

죄송합니다. 손상된 PDF 파일이 두 장의 스크린 샷으로 나옵니다. 첫째, 파일의 첫 번째 부분에 빈 페이지가 없어야합니다. [여기를 참고하십시오] (http://www.lacompta.ch/MITIC/Images/Capture3.PNG). 그런 다음 테이블은 끝날 때까지 렌더링되지 않습니다 (줄 18은 한 셀을 찾지 못합니다). 그리고이 아래에 또 다른 테이블이 있어야합니다 : [여기를보십시오] (http://www.lacompta.ch/MITIC/Images/Capture4.PNG) – Vestrep

+0

문서가 매번 정확히 동일합니까? 문제를 일으키는 HTML 샘플을 보는 것이 도움이 될 수 있습니다. 또한 치명적 오류는 없지만 출력에 영향을 미치는 다른 문제가있을 수 있습니다. – BrianS

답변

0

나는 약간의 시간 전에 같은 문제가있었습니다. 문제는 pdf가 너무 커서 dompdf가 오류를 던지고 있다는 것입니다. 더 이상 코드에 액세스 할 권한이 없기 때문에 지금은이 문제를 해결할 수 없습니다.

아파치 오류 로그 파일을 확인하십시오. 이 오류를 발견하면 오류 메시지를 사용하여 Google 검색에서 답변을 검색 할 수 있습니다.

이 문제를 해결하려면 간단한 소스 한 줄 편집이 필요했습니다.

관련 문제