wkhtmltopdf在html文件中传递变量

时间:2016-05-03 11:29:45

标签: php html wkhtmltopdf

我在php中使用wkhtmltopdf,效果很好。 现在,我想从php文件中添加一些变量到html,但我找不到解决方案。

PHP文件:

<?php
    require '/path/vendor/autoload.php';
    use mikehaertl\wkhtmlto\Pdf;
    $pdf = new Pdf(array(
        'no-outline',
        'margin-top'    => 0,
        'margin-right'  => 0,
        'margin-bottom' => 0,
        'margin-left'   => 0,

        // Default page options
        'disable-smart-shrinking',
));
if($_GET['file'] == 'public'){
    $pdf = new Pdf('template_public.html');
}else{
    $pdf = new Pdf('template_pro.html');
}
    $pdf->send();
?>

HTML文件:

<html>
    <head>
        <title>Generated PDF file</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    <body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
        <div>
            {title}
        </div>
    </body>
</html>

如何替换HTML文件中的{title}?

3 个答案:

答案 0 :(得分:1)

在给定参数数组的情况下,这应该用它们的值替换html文件中的所有{变量}。

$params = ["title"=>"title_val", "content" => "something", "key" => "value"];
$pdf = new Pdf();
$html = file_get_contents($templateFile);    
foreach($params as $key=>$value) {
    $html = str_replace("{".$key."}", $value, $html);
}

//Renders the pdf directly from the html string, instead of loading the file directly
$pdf->addPage($html);
$pdf->send();

答案 1 :(得分:0)

请参阅此页面以设置页面选项。

https://github.com/mikehaertl/phpwkhtmltopdf#setting-options

您可以设置标题,页码等...
使用 addPage 选项将页面选项应用于特定页面。

答案 2 :(得分:0)

我的任务是将真实客户端ip值传递给pdf。当我将IP读为$ ENV {REMOTE_ADDR}时,我得到了服务器IP,而不是客户端IP。

我使用此代码来解决问题:

wkhtmltopdf --cookie remote_addr $IP

它将IP变量传递给pdf。然后,我的html页面可以读取cookie值并在文本中显示它们。