dompdf错误不能解决这个问题

时间:2013-03-23 02:53:36

标签: php html dompdf

我收到此错误:

捕获致命错误:传递给DOMNode :: appendChild()的参数1必须是DOMNode的一个实例,null给定,在第304行的/home/emscompl/public_html/pdf_email/dompdf/include/table_frame_decorator.cls.php中调用并在第726行的/home/emscompl/public_html/pdf_email/dompdf/include/frame.cls.php中定义

这是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>

1 个答案:

答案 0 :(得分:2)

在HTML生成脚本中,while循环外部有一个开头TR,看起来应该在循环内部(结束标记在循环内)。这将导致无效的文档结构,显然是dompdf无法解析的文档结构。

仅供参考,如果dompdf不解析文档,首先要做的是通过验证器运行它。