问题描述
||
我使用TCPDF创建了一个pdf文件,并使用heredoc语法填充了一些PHP变量和当前日期
生成pdf并在浏览器中查看时,一切都很好,但是在保存的pdf文件中,不显示PHP变量值,仅显示日期...
我像这样在顶部声明变量:
$name = $_POST[\'name\'];
$score = $_POST[\'percentage\'];
$ku_number = $_POST[\'ku-number\'];
$date = Date(\'d - m - Y\');
在保存的pdf上仅显示$ date。
有什么建议吗?
谢谢
编辑:将变量传递到TCPDF的代码
// Print a text
$html = <<<EOF
<!-- EXAMPLE OF CSS STYLE -->
<style>
table{
text-align:center;
color:#000;
}
</style>
<table id=\"name\" cellpadding=\"0\">
<tr>
<td width=\"10\" height=\"80\"> </td>
<td width=\"620\"> </td>
<td width=\"10\"> </td>
</tr>
<tr>
<td> </td>
<td width=\"620\">$name</td>
<td> </td>
</tr>
<tr>
<td width=\"10\"> </td>
<td> </td>
<td width=\"10\"> </td>
</tr>
</table>
<table id=\"score\" cellpadding=\"0\" >
<tr>
<td width=\"10\" height=\"180\"> </td>
<td width=\"620\"> </td>
<td width=\"10\"> </td>
</tr>
<tr>
<td> </td>
<td width=\"620\">$score</td>
<td> </td>
</tr>
<tr>
<td width=\"10\" height=\"207\"> </td>
<td> </td>
<td width=\"10\"> </td>
</tr>
</table>
<table id=\"ku-number\" cellpadding=\"0\" >
<tr height=\"2\">
<td width=\"50\" height=\"2\"></td>
<td width=\"620\" height=\"2\"></td>
<td width=\"10\" height=\"2\"></td>
</tr>
<tr>
<td> </td>
<td width=\"620\" height=\"20\"></td>
<td> </td>
</tr>
<tr>
<td width=\"50\"> </td>
<td>$ku_number</td>
<td > </td>
</tr>
</table>
<table id=\"date\" cellpadding=\"0\" >
<tr height=\"2\">
<td width=\"50\" height=\"2\"></td>
<td width=\"620\" height=\"2\"></td>
<td width=\"10\" height=\"2\"></td>
</tr>
<tr>
<td> </td>
<td width=\"420\" height=\"20\">$date</td>
<td> </td>
</tr>
<tr>
<td width=\"50\"> </td>
<td></td>
<td > </td>
</tr>
</table>
EOF;
$pdf->writeHTML($html,true,false,\'\');
//Close and output PDF document
$pdf->Output(\'certificate.pdf\',\'I\');
解决方法
我有同样的问题。我通过尝试以下自己提到的事情找到了解决方案:
请使用串联将$ html字符串分成多个部分。这肯定会解决问题。例如我用了这样的东西:
$html = \'HTML CONTENT BREAKS HERE\' . $variable_name . \'HTML CONTENT CONTINUES HERE\' ;
通常,大多数开发人员会在$ html值内使用PHP变量,
$html = \'HTML CONTENT echo php variable HTML CONTENT\' ;
我希望这会起作用。
,在输出PDF之前使用$ _SESSION存储变量可解决问题
归功于Yuri Stuken
,为了获得更好的结果:
输出最终的PDF:
完成所有必需的单元格,图像,链接,文本等的创建后,您必须调用Output()方法才能真正使用动态创建的PDF。在这种情况下,如果将PDF发送到浏览器,则可以不使用任何参数,不过,更常见的是,开发人员会指定生成的PDF的文件名和目标位置。目标可以是四个值之一,它们是:
I:将文件内联发送到浏览器。
D:发送到浏览器并使用名称给定的名称强制下载文件。
F:使用名称给定的名称保存到本地文件。
S:以字符串形式返回文档。
您可以看到我的代码将目标值设置为F:
$pdf->Output(”./pdfs/example.pdf”,“F”);
引用自:this
拥有美好的生活!