TCPDF, значения переменных php не отображаются в сохраненном файле PDF

Я создал PDF-файл, используя TCPDF, и заполнил его некоторыми переменными php и текущей датой, используя синтаксис heredoc.

Все нормально, когда 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">&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');

person Mirko    schedule 23.05.2011    source источник
comment
Нужно больше контекста. Как вы передаете переменные в TCPDF?   -  person Piskvor left the building    schedule 23.05.2011
comment
Ну, я думаю, когда браузер сохраняет файл, он делает второй запрос к серверу без каких-либо данных POST, поэтому массив $_POST пуст.   -  person Yuri Stuken    schedule 23.05.2011
comment
Присутствуют ли значения в $html до того, как вы напишетеHTML()? Действительно ли существуют значения $_POST, когда вы копируете их в $name, $score и т. д.?   -  person Piskvor left the building    schedule 23.05.2011
comment
@stuken.yuri, вы предлагаете мне использовать SESSION?   -  person Mirko    schedule 25.05.2011
comment
Использование SESSION решило мою проблему. @stuken.yuri, если вы опубликуете свой комментарий в качестве ответа, я могу проголосовать за него.   -  person Mirko    schedule 23.06.2011


Ответы (3)


У меня такая же проблема. Я нашел решение, экспериментируя с вещами, которые сам упомянул следующим образом:

Пожалуйста, используйте конкатенацию, чтобы разбить строку $html на части. Это обязательно решит проблему. например Я использовал что-то вроде этого:

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

Обычно большинство разработчиков используют переменную PHP в значении $html,

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

Надеюсь, это сработает.

person Usman A. Chughtai    schedule 16.08.2011
comment
Это связано с тем, что содержимое HTML заключено в одинарные кавычки. - person Frank Nwoko; 25.06.2012

Использование $_SESSION для хранения переменных перед выводом PDF решило проблему.

Кредиты принадлежат Юрию Стукену.

person Mirko    schedule 09.11.2012

Для более точных результатов:

Вывод окончательного PDF-файла. Когда вы закончите создание всех необходимых ячеек, изображений, ссылок, текста и т. д., вы должны вызвать метод Output(), чтобы фактически получить в свои руки динамически созданный PDF-файл. Это может не иметь параметров, и в этом случае PDF-файл отправляется в браузер, хотя чаще разработчики указывают имя файла и место назначения сгенерированного PDF-файла. Пункт назначения может быть одним из четырех значений, а именно:

I: отправить файл прямо в браузер.

D: отправить в браузер и принудительно загрузить файл с именем, указанным по имени.

F: сохранить в локальный файл с именем, заданным по имени.

S: вернуть документ в виде строки.

Вы можете видеть, что мой код устанавливает значение назначения как F:

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

ссылка из: этого

СБАЛАНСИРОВАННОЙ ЖИЗНИ!

person Usman A. Chughtai    schedule 19.08.2011