TCPDF、php 变量值不会出现在保存的 pdf 文件中

发布于 2024-11-09 11:53:12 字数 2649 浏览 0 评论 0原文

我使用 TCPDF 创建了一个 pdf,并使用heredoc语法填充了一些 php 变量和当前日期

当生成 pdf 并在浏览器中查看时一切都很好,但在保存的 pdf 文件中,仅显示 php 变量值日期...

我在顶部声明我的变量,如下所示:

$name = $_POST['name'];
$score = $_POST['percentage'];
$ku_number = $_POST['ku-number'];
$date = Date('d - m - Y');

仅 $date 显示在保存的 pdf 上。

有什么建议吗?

谢谢

编辑:将变量传递给 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">&nbsp;</td>
<td width="620">&nbsp;</td>
<td width="10">&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td width="620">$name</td>
<td>&nbsp;</td>
</tr>
<tr>
<td width="10">&nbsp;</td>
<td>&nbsp;</td>
<td width="10">&nbsp;</td>
</tr>
</table>

<table id="score" cellpadding="0" >
<tr>
<td width="10" height="180">&nbsp;</td>
<td width="620">&nbsp;</td>
<td width="10">&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td width="620">$score</td>
<td>&nbsp;</td>
</tr>
<tr>
<td width="10" height="207">&nbsp;</td>
<td>&nbsp;</td>
<td width="10">&nbsp;</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>&nbsp;</td>
<td width="620" height="20"></td>
<td>&nbsp;</td>
</tr>
<tr>
<td width="50">&nbsp;</td>
<td>$ku_number</td>
<td >&nbsp;</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>&nbsp;</td>
<td width="420" height="20">$date</td>
<td>&nbsp;</td>
</tr>
<tr>
<td width="50">&nbsp;</td>
<td></td>
<td >&nbsp;</td>
</tr>
</table>

EOF;
$pdf->writeHTML($html, true, false, true, false, '');


//Close and output PDF document
$pdf->Output('certificate.pdf', 'I');

I created a pdf using TCPDF and I filled it with some php variables and the current date using heredoc syntax

Everything is fine when the pdf is generated and viewed in the browser, but on the saved pdf file the php variable values are not shown, only the date...

I declare my variables at the top like so:

$name = $_POST['name'];
$score = $_POST['percentage'];
$ku_number = $_POST['ku-number'];
$date = Date('d - m - Y');

Only $date is shown on the saved pdf.

Any suggestion?

Thank you

Edit: code to pass the variables to 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, true, false, '');


//Close and output PDF document
$pdf->Output('certificate.pdf', 'I');

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

相思故 2024-11-16 11:53:12

我也有同样的问题。我通过试验自己提到的事情找到了一个解决方案,如下所示:

请使用串联将 $html 字符串分成几部分。这肯定能解决问题。例如我使用了这样的东西:

$html = 'HTML CONTENT BREAKS HERE' . $variable_name . 'HTML CONTENT CONTINUES HERE' ;

通常,大多数开发人员会在 $html 值中使用 PHP 变量,

$html = 'HTML CONTENT echo php variable HTML CONTENT' ;

我希望这会起作用。

I had the same problem. I found a solution by experimenting things myself mentioned as follows:

Please use concatenation to break $html string into parts. This will surely solve the problem. e.g. I used something like this:

$html = 'HTML CONTENT BREAKS HERE' . $variable_name . 'HTML CONTENT CONTINUES HERE' ;

Normally, most developers will use PHP variable within $html value,

$html = 'HTML CONTENT echo php variable HTML CONTENT' ;

I hope this will work.

溺孤伤于心 2024-11-16 11:53:12

在输出 PDF 之前使用 $_SESSION 存储变量解决了问题

积分转到 Yuri Stuken

Using $_SESSION to store the variables before outputting the PDF solved the problem

Credits go to Yuri Stuken

姜生凉生 2024-11-16 11:53:12

要获得更精细的结果:

输出最终 PDF:
当您完成创建所有必需的单元格、图像、链接、文本等后,您必须调用 Output() 方法才能真正获得动态创建的 PDF。这可以不带任何参数,在这种情况下,PDF 将发送到浏览器,但更常见的是,开发人员指定生成的 PDF 的文件名和目标。目标可以是四个值之一,它们是:

I:将文件内联发送到浏览器。

D:发送到浏览器并强制下载名称给定的文件。

F:保存到本地文件,文件名由name指定。

S:以字符串形式返回文档。

您可以看到我的代码将目标值设置为 F:

$pdf->Output(”./pdfs/example.pdf”, “F”);

引用自:这个

拥有平衡的生活!

For more refined results:

Outputting the final PDF:
When you’ve finished creating all required cells, images, links, text etc. you have to call the Output() method to actually get your hands on your dynamically created PDF. This can take no parameters in which case the PDF is sent to the browser, more commonly though, developers specify the filename and the destination of the generated PDF. The destination can be one of four values, these are:

I: send the file inline to the browser.

D: send to the browser and force a file download with the name given by name.

F: save to a local file with the name given by name.

S: return the document as a string.

You can see my code sets the destination value as F:

$pdf->Output(”./pdfs/example.pdf”, “F”);

referenced from:this

Have a bAlaNCeD Life !

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文