2016-05-30 175 views
0

当我尝试在file_html.php中打印表格时,它打印出一些带有一些错误(这是一个不同的问题)的静态表格。但是,当发布数据的php标签包含在带有post变量的文件中时,生成的pdf除了位于页面底部的锚标签之外什么都不显示。Dompdf不打印张贴的表格

这里是index.php文件: -

  require_once("dompdf/dompdf_config.inc.php"); 
      require_once("dompdf/dompdf_config.custom.inc.php"); 
      spl_autoload_register('DOMPDF_autoload'); 

      function pdf_create($html, $filename, $paper, $orientation, $stream=TRUE) 
       { 
        $dompdf = new DOMPDF(); 
        $dompdf->set_paper($paper,$orientation); 
        $dompdf->load_html_file('http://localhost/pdf/file_html.php'); 
        $dompdf->render(); 
        $dompdf->stream($filename.".pdf"); 
       } 
       $filename = 'billofsale'; 
       $dompdf = new DOMPDF(); 
       $html = file_get_contents('http://localhost/pdf/file_html.php'); 
       pdf_create($html,$filename,'A4','portrait'); 

这里是由与交变形式file_html.php。注意:当带有帖子的php被删除时,表格会以pdf格式打印出来。

<!DOCTYPE html> 
      <html> 

      <head> 
      <style type="text/css"> 
      table, caption, tbody, tfoot, thead, tr, th, td { 
       margin: 0; 
       padding: 0; 
       border: 0; 
       font-size: 100%; 
       font: inherit; 

      } 
      table { 
       border-collapse: collapse; 
       border-spacing: 0; 
       width:100%; 
      } 
      body{ 
       font: normal medium/1.4 sans-serif; 
      } 

      th{ 
       text-align: center; 
       border: 3px solid #ccd; 
      } 
      td{ 
       padding: 0.25rem; 
       text-align: left; 
       border: 2px solid #ccc; 
      } 

      tbody tr:nth-child(odd){ 
       background: #eee; 
      } 
      tbody:before, thead:after { display: none; } 


      </style> 
      </head> 

      <body> 

      <?php 
       if(isset($_POST['submit'])){ 
       ?> 
      <p> 
      <table> 
       <thead><th colspan="2">Purchaser's Information</th></thead> 
       <tbody> 
       <tr> 
        <td colspan="2">Purchaser's Name : <?php echo $_POST['pname']; ?></td>     
        </tr> 
        <tr> 
         <td colspan="2">Purchaser's Address : <?php echo $_POST['padd']; ?></td> 
        </tr> 
        <tr> 
         <td>City/Town : <?php echo $_POST['pcity']; ?> </td> 
         <td>Province : <?php echo $_POST['ppro']; ?></td> 
        </tr> 

        <tr> 
         <td>Postal Code :<?php echo $_POST['ppcode']; ?></td> 
         <td>Home Tel No :<?php echo $_POST['ptelno']; ?></td> 
        </tr> 

        <tr> 
         <td>Business Tel :<?php echo $_POST['pbtel']; ?></td> 
         <td>Email :<?php echo $_POST['pemail']; ?></td> 
        </tr> 

        <tr> 
         <td>Driver License : <?php echo $_POST['pdriverlic']; ?></td> 
         <td>Expiry Date :<?php echo $_POST['pdriverexp']; ?></td> 
        </tr> 
        </tbody> 
      </table> 
      </p>  
      <?php 
       } 
      ?> 
      <a href="index.php">Print </a> 
      </body> 

      </html> 
+0

可能*它与PHP错误有关*也许DomPDF无法解析错误导致的无效HTML结构? – Justinas

+0

但在php或html中没有错误。 –

+0

**它打印有一些错误的静态表** – Justinas

回答

0

您正在使用$dompdf->load_html_file('http://localhost/pdf/file_html.php');正在加载file_html.php。这种方法就像使用GET方法启动一个新的浏览器请求。在当前PHP进程中设置的任何变量都不会被传递。这意味着$_POST数组是空的。

解决此问题的方法有几种,但由于您的表依赖于来自$_POST数组的数据,我建议使用输出缓冲。您可以在index.php中呈现内容,捕获输出并将其提供给dompdf。

使用原始样本为起点...

<?php 
ob_start(); 
require 'file_html.php' 
$html = ob_get_contents(); 
ob_end_clean(); 
require_once('dompdf/dompdf_config.inc.php'); 
$dompdf = new DOMPDF(); 
$dompdf->set_paper('a4','portrait'); 
$dompdf->load_html($html); 
$dompdf->render(); 
$dompdf->stream('billofsale.pdf'); 
?> 

现在,当你邮寄到index.php $ _POST数组将提供给file_html.php。

+0

1.提交在另一个页面上,它发布数据,所以我没有把这个文件放在这里。 –

+0

问题是,'$ _POST'数组不仅仅是空白,而且html也不会呈现。 pdf只显示'a'标签 –

+0

当我从file_html.php中删除php标签时,html表单呈现出第一个表格行不符合顺序。 –