встроенные переменные php-скрипта не работают в DOMPDF

Встроенный php-скрипт не выполняется, когда я генерирую pdf, только часть html печатается в pdf. Я уже установил $isPhpEnabled =True.

<?php
// include autoloader
require_once 'dompdf/autoload.inc.php';

// reference the Dompdf namespace
use Dompdf\Dompdf;

// instantiate and use the dompdf class
$dompdf = new Dompdf();
$abc="This is the php text";
$html = <<<'ENDHTML'
<html>
<head>
<style>
h1{color:#555555;width:100%;border-bottom:2px solid powderblue;}
</style>
</head>
 <body>
  <h1 >Name : <script type="text/php"> echo $abc; </script></h1>
 </body>
</html>
ENDHTML;
$dompdf->loadHtml($html);

// (Optional) Setup the paper size and orientation
$dompdf->setPaper('A4', 'landscape');

// Render the HTML as PDF
$dompdf->render();

// Output the generated PDF to Browser
$dompdf->stream("dompdf_out.pdf", array("Attachment" => false));
exit(0);
?>

person Aman Rathore    schedule 10.10.2017    source источник
comment
Вы имели в виду, что $abc не печатает?   -  person Paritosh Mahale    schedule 10.10.2017
comment
@ПаритошМахале Да.   -  person Aman Rathore    schedule 10.10.2017
comment
@ParitoshMahale Как я могу выполнять скрипты в html-коде, если я хочу генерировать динамический контент?   -  person Aman Rathore    schedule 10.10.2017
comment
как-то так $a = array('one','two','three','four','five'); $abc="This is the php text"; $html = " <html> <head> <style> h1{color:#555555;width:100%;border-bottom:2px solid powderblue;} </style> </head> <body> "; foreach($a as $value){ $html .= '<h1>'.$value.'</h1>'; } $html .='</body></html>'; echo $html;   -  person Paritosh Mahale    schedule 11.10.2017
comment
Встроенный (встроенный) скрипт не создает содержимое документа. Его основная цель — предоставить средство доступа к серверной части PDF (CPDF, PDFLib) в середине процесса рендеринга PDF. Но мы рекомендуем вам избегать использования встроенного скрипта, потому что он открывает потенциальную дыру в безопасности, и вы можете сделать почти то же самое, используя другие методы. Основываясь на вашем описании, вы должны просто сгенерировать HTML, а затем передать окончательный документ в Dompdf.   -  person BrianS    schedule 12.10.2017


Ответы (2)


Пытаться

<?php
// include autoloader
require_once 'dompdf/autoload.inc.php';

// reference the Dompdf namespace
use Dompdf\Dompdf;

// instantiate and use the dompdf class
$dompdf = new Dompdf();
$abc="This is the php text";
$html = "
<html>
<head>
<style>
h1{color:#555555;width:100%;border-bottom:2px solid powderblue;}
</style>
</head>
 <body>
  <h1 >Name : $abc</h1>
 </body>
</html>
";
$dompdf->loadHtml($html);

// (Optional) Setup the paper size and orientation
$dompdf->setPaper('A4', 'landscape');

// Render the HTML as PDF
$dompdf->render();

// Output the generated PDF to Browser
$dompdf->stream("dompdf_out.pdf", array("Attachment" => false));
exit(0);
?>
person Paritosh Mahale    schedule 10.10.2017
comment
что мне следует использовать, если я хочу выполнить какой-либо скрипт, например, цикл, чтобы ввести много строк в таблицу в html-коде, потому что тег скрипта не работает напрямую? @Паритош Махале - person Aman Rathore; 10.10.2017
comment
Теперь я могу использовать только переменные, но не php-скрипты в html-строке. - person Aman Rathore; 10.10.2017

Хитрость заключается в том, чтобы просто отобразить ваш html как строку в php, объединенную со значениями, которые вы хотите отобразить в своем PDF-файле. Вы должны быть осторожны с кавычками, так как в вашей разметке будут двойные кавычки. Поэтому полезно использовать одинарные кавычки в качестве обертки, если вы понимаете, о чем я.

Итак, что-то вроде:

$html = '<div class = "some class" >' . $variable . '</div>';

Затем вы можете загрузить эту строку в свой экземпляр $dompdf. $variable может извлекать свое значение из любого места, например, из базы данных, или вы можете повторять цикл для создания элементов вашего макета.

person Sharkfin    schedule 14.09.2019