使用wkhtmltopdf从模板文件生成PDF

时间:2014-08-19 12:57:03

标签: php html templates pdf wkhtmltopdf

我需要从HTML模板生成PDF文件,并计划使用wkhtmltopdf来执行此操作。在HTML模板中,我需要能够使用PHP逻辑来调整模板将呈现的内容。以此HTML模板为例:

<p>Dear <?php echo $firstname; ?>,</p>

<p>Thanks for signing up. You've invited these people along with you:</p>

<ul>
    <?php foreach ($invitees as $invitee): ?>
        <li><?php echo $invitee; ?></li>
    <?php endforeach; ?>
</ul>

<p>Regards,</p>
<p>Chris White</p>

我能够将HTML模板文件传递给wkhtmltopdf没有问题,但我不知道如何让其中的PHP逻辑正确运行并能够返回结果模板。我在谷歌搜索时发现了这篇博文,但作者使用Smarty作为模板语言:https://davejamesmiller.com/blog/php-html-pdf-conversion-using-wkhtmltopdf

使用Smarty可以解决我的问题,但是当我可以使用普通的旧PHP时,我不想引入一个库来执行此操作。基本上,我需要一种方法将变量传递给HTML模板(在本例中为$firstname$invitees),让它在模板中执行PHP代码,然后在PHP之后返回结果模板已被执行。

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

只需将您的文件保存为php(例如template.php)并在那里实现您需要的逻辑。

我也和wkhtmltopdf做了同样的事情,效果很好。 我还通过GET将一些变量传递给模板,以真正获得正确的报告为pdf。

要保存文件,我使用了PHP会话ID并将文件保存到具有www-data(Linux)写权限的文件夹中,并通过Javascript自动开始下载。

答案 1 :(得分:0)

我有同样的需要,我这样做了。我真的不知道我的代码是否会对你有所帮助,但为什么不这样做。

首先,我使用作曲家来获取https://github.com/mikehaertl/phpwkhtmltopdf

假设你有一个php文件“content.php”

<?php 
echo "<html>";
echo "<h1>test</h1>";
echo "<html>";
?>

你的index.php将是:

<?php
require "vendor/autoload.php";

ob_start();

require('content.php'); //The php file

$content = ob_get_clean();

$pdf = new \mikehaertl\wkhtmlto\Pdf($content);
if (!$pdf->send()) {
    throw new Exception('OMG WHY : '.$pdf->getError());
}

答案 2 :(得分:-1)

如果你没有使用任何模板引擎,你不能只用一些参数调用你的template.php文件吗?

这样的东西
$wkhtml2pdf->html2pdf('template.php?firstname=Foo');

(我不知道wkhtml2pdf是如何工作的,这段代码只是为了让你理解逻辑)

并在你的template.php文件中:

<p>Dear <?php echo $_GET['firstname']; ?>,</p>