下午好!
我需要从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代码。
提前致谢!
答案 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');
}