2013-03-23 4 views
2

я получаю эту ошибку:ошибка DOMPDF не может понять это

Catchable фатальной ошибка: Аргумент 1 передается DOMNode :: AppendChild() должна быть экземпляром DOMNode, нуль дал, называемому в/главном/emscompl /public_html/pdf_email/dompdf/include/table_frame_decorator.cls.php на линии 304 и определены в /home/emscompl/public_html/pdf_email/dompdf/include/frame.cls.php на линии 726

Вот код DOMPDF ,

<?php 


/*$dir = dirname(__FILE__); 
require_once($dir.'/dompdf/dompdf_config.inc.php'); 

    $dompdf = new DOMPDF(); 

    $dompdf->load_html_file("http://ems-complete.com/pdf_email/patient-report.php"); 

    $dompdf->render(); 

    $dompdf->stream("file.pdf");*/ 

    $course = $_REQUEST['course']; 

    $dir = dirname(__FILE__); 

require_once($dir.'/dompdf/dompdf_config.inc.php'); 
    $dompdf = new DOMPDF(); 

    $dompdf->load_html(file_get_contents("http://ems-complete.com/courseroster/courseroster.php?course=".$course));  


    $dompdf->render(); 
// $dompdf->set_paper(2412, 3222); 
    $dompdf->stream("courseroster.pdf"); 

// exit(0); 


?> 

Вот PHP HTML

<html> 
<head> 
<link type="text/css" media="screen" rel="stylesheet" href="stylesheets/courseroster.css" /> 

<link type="text/css" media="print" rel="stylesheet" href="stylesheets/print.css" /> 
</head> 

<body> 
<SCRIPT LANGUAGE="JavaScript"> 
function PrintDivData(crtlid) 
{ 
var ctrlcontent = document.getElementById(crtlid); 
var printscreen = window.open('','','left=1,top=1,width=1,height=1,toolbar=0,scrollbars=0,status=0​'); 
printscreen.document.write(ctrlcontent.innerHTML); 
printscreen.document.close(); 
printscreen.focus(); 
printscreen.print(); 
printscreen.close(); 
} 
</script> 

<input type="button" name="Print" value="Print" onClick="javascript:PrintDivData('container');" Runat="Server" /> 
<?php 
$course = $_REQUEST['course'];?> 
<?php 
     $connect = mysql_connect('localhost','db','pass') or die(mysql_error()); 

     $selectdb = mysql_select_db('emscompl_joom1283',$connect); 
     ?> 
<?php 
$qry = "SELECT * FROM courses 
WHERE id = $course"; 
     $result = mysql_query($qry); 
     $row = mysql_fetch_array($result); 


$qry2 = "SELECT s.fullname, cs.* FROM registered_users AS `s` 
LEFT OUTER JOIN course_students AS cs ON s.userid = cs.userid 
WHERE cs.courseid = $course 
ORDER BY s.fullname"; 
     $result2 = mysql_query($qry2); 

    echo "<a href=http://www.ems-complete.com/pdf_email/form_courseroster.php?course=". 
    $course.">Display PDF</a>";?> 
<div class="container" id ="container"> 
    <div class="header"><?php echo $row['coursename'];?> Roster</div> 
    <div class="coursestatus"><p>Course Status</p> 
    <p><?php echo $row['status'];?></p> 
    </div> 
    <div class="startdate"><p>Start Date</p> 
    <p><?php echo $row['startdate'];?></p> 
    </div> 
    <div class="enddate"><p>End Date</p> 
    <p><?php echo $row['enddate'];?></p> 
    </div> 
    <div class="dayofweek"><p>Class Held on:</p> 
    <p><?php echo $row['dayofweek'];?></p> 
    </div> 
    <div class="leadinstructor"><p>Lead Instructor</p> 
    <p><?php echo $row['leadinstructor'];?></p> 
    </div> 
    <div class="assistantinstructor"><p>Assistant Instructors</p></div> 
    <div class="enrolledstudents"> 
    <p>Enrolled Sutdents</p> 
    <table width="760" border="0"> 
     <tr> 
     <th width="223">Student Name</th> 
     <th width="102">Phone</th> 
     <th width="90">Email</th> 
     <th width="100">Status</th> 
     <th width="220">Document Report</th> 
     </tr> 
     <tr> 
     <?php while ($row2 = mysql_fetch_array($result2)) { ?> 
     <td><?php echo $row2['fullname'];?></td> 
     <td><?php echo $row2[''];?></td> 
     <td><?php echo $row2[''];?></td> 
     <td><?php if ($row2['studentstatus']== 0){ 
     echo "Interested"; 
     } 
     else if ($row2['studentstatus']== 1){ 
     echo "Entrance Process"; 
     } 
     else if ($row2['studentstatus']== 2){ 
     echo "Incomplete Entrance Process"; 
     } 
     else if ($row2['studentstatus']== 3){ 
     echo "Enrolled"; 
     } 
     else if ($row2['studentstatus']== 4){ 
     echo "Course Completed"; 
     } 
     else if ($row2['studentstatus']== 5){ 
     echo "NREMT Skills Complete"; 
     } 
     else if ($row2['studentstatus']== 6){ 
     echo "NREMT Cognitive Complete"; 
     } 
     else if ($row2['studentstatus']== 7){ 
     echo "State Certified"; 
     }?></td> 
     <td><?php echo "<a href=http://www.ems-complete.com/courseroster/studentdocuments.php?id=".$row2['id'].">Document Report</a>" 
     ;?> 
     </td> 
     </tr> 
     <?php } ?> 
    </table> 
    <p>&nbsp;</p> 
    </div> 
    <div class="footer"> 
    <p>&nbsp;</p> 
    </div> 
</div> 

</body> 
</html> 

ответ

2

В вашем HTML-генераторной сценарий у вас есть отверстие TR вне цикла в то время, которое выглядит, как он должен быть внутри цикла (закрывающий тег находится внутри петля). Это вызовет недопустимую структуру документа и, по-видимому, тот, который dompdf не может проанализировать.

FYI, первое, что нужно сделать, если dompdf не будет анализировать документ, это запустить его через валидатор.

+0

Благодарим вас за информацию, я не знал о валидаторе dopdf, я буду изучать это. –

+0

dompdf сам не имеет валидатора. v0.6.0 (beta 3) использует парсер документов на основе HTML5, а также синтаксический анализ, выполняемый библиотекой DOMDocument. Но если вы столкнулись с проблемами, попробуйте передать свой HTML-документ через валидатор W3C: http://validator.w3.org – BrianS

Смежные вопросы