我想知道这个设置是否有效。我必须通过一个表单(duh ......)从一堆变量中推出一批PDF来推送到$ _SESSION。我们的想法是将模板文件传递给dompdf引擎,并将模板从$ _SESSION填充到PDF。在我看来,当$ template被加载时,应该这样做,是吗?
这是基本代码:
<?php
function renderToPDF($theTemplate = "template.php") // this is just to show the value
{
require_once("dompdf/dompdf_config.inc.php");
$content = file_get_contents($theTemplate);
if ($content !== false)
{
$dompdf = new DOMPDF();
$dompdf->load_html($content);
$dompdf->render();
$dompdf->stream("kapow_ItWorks.pdf");
}
}
?>
这是template.php
文件(基本上......你不想要所有16页......)
<html>
<meta>
<head>
<link href="thisPage.css" type="text/css" rel="stylesheet">
</head>
<body>
<h1><?php echo $_SESSION['someTitle'] ?></h1>
<h2>wouldn't it be nice, <?php echo $_SESSION['someName'] ?></h2>
</body>
</html>
所以我的想法是template.php会将变量从$_SESSION
数组中拉出来而不需要任何干预,如下所示:
我想问题的核心是:加载PHP文件时是否会对$_SESSION
变量进行评估,但是没有呈现?
WR!
答案 0 :(得分:2)
file_get_contents
不评估PHP文件,只是获取其内容(文件在硬盘中)。
要执行您想要的操作,您需要使用输出buffering和include
。
ob_start(); // Start Output beffering
include $theTemplate; // include the file and evaluate it : all the code outside of <?php ?> is like doing an `echo`
$content = ob_get_clean(); // retrieve what was outputted and close the OB
答案 1 :(得分:1)
由于某种原因,调用函数ALSO的页面上的代码被转储到文件中。这是放在标题之前。我现在明白了为什么:我不是引用外部页面,我是导入和外部页面。不知道为什么没有点击。
反正。一旦我摆脱了页面的额外东西,它工作得很好。回想起来,dompdf需要说明的是,任何类型的HTML(echo,print和&amp; c。)都不能在调用该函数的页面上。至少在我所掌握的知识水平上似乎需要它。
对于那些和我一样陷入“除了答案之外的所有事情”的错误的人来说,这是完成这项工作的基本代码:
buildPDF.php:
<?php
session_start();
$_SESSION['someTitle'] = "BIG FAT TITLE";
$_SESSION['someName'] = "HandomeLu";
$theTemplate = 'template.php';
function renderToPDF($templateFile)
{
require_once("_dox/dompdf/dompdf_config.inc.php");
ob_start();
include $templateFile;
$contents = ob_get_clean();
if ($contents !== false)
{
$dompdf = new DOMPDF();
$dompdf->load_html($contents);
$dompdf->render();
$dompdf->stream("kapow_ItWorks.pdf");
}
}
renderToPDF($theTemplate);
?>
这是template.php:
<!DOCTYPE HTML>
<html>
<meta>
<head>
<meta charset="utf-8">
<link href="thisPage.css" type="text/css" rel="stylesheet">
</head>
<body>
<h1><?php echo $_SESSION['someTitle'] ?></h1>
<p>wouldn't it be nice, <?php echo $_SESSION['someName'] ?></p>
</body>
</html>
还要注意外部CSS文件读入就好了。所以你仍然可以保持结构和风格分开。另外,$ _SESSION变量可以在任何地方设置,显然,我只是将它们设置在这里以便于测试。
希望这对那些开始使用这个GREAT课程的人有用。如果你想要起床并开始运行PDF文件,这会踢得太厉害了,它应该有一个触发器并抓住它。 :)
感谢所有评论的人。你让我在我需要的地方。 :)这个网站ROCKS。
WR!