从特定div创建PDF

时间:2013-08-14 19:18:28

标签: php codeigniter codeigniter-2 mpdf

下午好!

我需要从HTML页面生成PDF,但需要从特定的div

生成
<div id="canvas">
   all content is here
</div>

我使用mPDF

将此功能作为CodeIgniter中的插件
function pdf($html, $filename=null)
{
    require_once("mpdf_lib/mpdf.php");

    $mpdf = new mPDF();
    $mpdf->WriteHTML($html);

    if($filename == null){
        $filename = date("Y-m-d").'_test.pdf';
    }

    $mpdf->Output($filename, 'I');
}

我只需要知道如何从特定div中获取html内容作为pdf ($html)函数中的参数传递。

我找到了很多例子,但实际上他们都使用了静态&#39;静电&#39; HTML代码。

提前致谢!

2 个答案:

答案 0 :(得分:0)

首先确保您的php函数位于codeigniter控制器中,以便访问网页/ controllername / pdf调用该函数。

然后,使用javascript将div的内容发布到您的服务器。如果您使用的是jquery,请参阅jquery.post。这将通过ajax调用控制器函数,并生成pdf。

$.post('/controller/php', {html: $("#canvas").html()})

然后更改php函数以通过$this->input->post('html');

收集其参数
function pdf()
{
    require_once("mpdf_lib/mpdf.php");

    $html = $this->input->post('html');
    $mpdf = new mPDF();
    $mpdf->WriteHTML($html);

    $filename = date("Y-m-d").'_test.pdf';

    $mpdf->Output($filename, 'I');
}

答案 1 :(得分:0)

这不是一种干净的方式,但它有效

示例我在'views / test'

中有我的html布局

这是在views/test.php

<!--
   Check if $print variable is set
   if it is set then the request is for printing if not the request is for veiwing
-->
<?if(isset($print)):?>

     <!--
       if canvas is set a specific part of the html is only selected
       i did not put an else condition you can supply it if you want
     -->
     <?if($isset($canvas)):?>
           <?if($canvas == 'canvas'):?>
               <div id="canvas">
                  <!--content-->
               </div>

           <?elseif($canvas == 'canvas_two'):?>
               <div id="canvas_two">
                  <!--content-->
              </div>
           <?elseif($canvas == 'canvas_three'):?>
               <div id="canvas_three">
                  <!--content-->
               </div>
           <?endif;?>
     <?endif;?>
<?else:?>
 <div id="canvas">
      <!--content-->
  </div>

 <div id="canvas_two">
      <!--content-->
  </div>

<div id="canvas_three">
      <!--content-->
  </div>
<?endif;?>

而你是控制者:

function pdf()
{
    require_once("mpdf_lib/mpdf.php");
    //gives of the variable print and canvas on what id
    $html = $this->load->view('test',array('print'=>TRUE,'canvas'=>'canvas'),TRUE);
    $mpdf = new mPDF();
    $mpdf->WriteHTML($html);

    if($filename == null){
        $filename = date("Y-m-d").'_test.pdf';
    }

    $mpdf->Output($filename, 'I');
}