DomPDF Zend не выполняет PHP?

Это моя функция контроллера, которая фактически не генерирует правильный PDF для моей проблемы.

Это только генерирует статический HTML PDF, но мое требование — создавать PDF на динамически создаваемом HTML.

$archive_msgs = $this->getRequest()->getPost('ids');
$archive_ids = explode(",",$archive_msgs);
$ul = '<ul>';
if(!empty($archive_ids)){
foreach($archive_ids as $archive){
if(trim($archive)!=''){
$msgdata = $this->getQuerydataWithPrimary('message', 'msgID', $archive);
$dec_data = base64_decode($msgdata[0]['message']['S']);
$arr_data_com = explode(",,", $dec_data);
$arr_temp = implode("",$arr_data_com);
$arr_data_dash = explode("--", $arr_temp);

for($j=1; $j<sizeof($arr_data_dash); $j+=3)
{
$ul .="<li>".$arr_data_dash[$j].":".$arr_data_dash[$j+1]."</li>";
}
}
}
}
$ul .= '</ul>';
$genhtml = '
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:WX="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

</head>
<body id="body1">
<script type="text/php">
echo $ul;
</script>

</body>
</html> ';

$dompdf = new \DOMPDF();
$source = $_SERVER['DOCUMENT_ROOT'].'/pem/Source_page.phtml';

file_put_contents($source, $genhtml);
$html = file_get_contents($source);
$dompdf->load_html($html);
$dompdf->set_option('enable_remote', TRUE);
$dompdf->set_option('enable_css_float', TRUE);
$dompdf->set_option('enable_html5_parser', FALSE);

$dompdf->render();

$date = date('Y-m-d');
$dompdf->stream("CS_Message_".$date.".pdf");

0

Решение

Начиная с версии 0.6.1 dompdf удалил предварительную обработку PHP (например, evalв любом <?php ... ?>).

Начиная с v0.6.x dompdf прекратил обработку встроенного скрипта (<script type="text/php"></script>) по умолчанию; Вы должны включить эту функцию в конфигурации. Ищите DOMPDF_ENABLE_PHP настройка или использование $dompdf->set_option('enable_php', true),

Все это, как говорится, вы делаете это неправильно. Ты не можешь echo содержимое в HTML-документ, который вы передаете в dompdf. dompdf не захватывает содержимое встроенного скрипта и не передает его обратно в документ. Эта функция по сути является способом доступа к серверу PDF во время анализа документа. Вам нужно собрать свой документ до подачи его в dompdf.

Вам на самом деле не нужно сохранять файл, чтобы загрузить его в dompdf (если вы не делаете это для кэширования страницы). Должно работать что-то вроде следующего:

// preceding code intentionally left out
$genhtml = '
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:WX="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body id="body1">
' . $ul . '
</body>
</html> ';

$dompdf = new \DOMPDF();
$dompdf->load_html($genhtml);
$dompdf->set_option('enable_remote', TRUE);
$dompdf->set_option('enable_css_float', TRUE);
$dompdf->set_option('enable_html5_parser', FALSE);

$dompdf->render();

$date = date('Y-m-d');
$dompdf->stream("CS_Message_".$date.".pdf");
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]