2017-01-05 2 views
0

Мне нужно поместить некоторое содержимое html в переменную для генерации pdf с использованием mpdf, есть ли способ назначить html-содержимое переменной в php-функции.размещение html-содержимого между php-функцией

это то, что я пытаюсь.

 function getInvoice($conn,$uid,$id,$invoice_no) 
     { 



     echo "something"; 


     ob_start(); 
     ?> 
    $content='<html> 

    <body style="padding-top: 0px"> 
    <page> 
    my html content     
    </page><body><?php echo "something"?;></body><html>' 



    <?php 


    $content .= ob_get_clean(); 
    } 

    ?> 

Что мне нужно, так это то, что весь контент в html присваивается переменной $ content. Он не работает, потому что он находится между функцией выполнения php.

+1

Удалить все PHP начальный и конечный тег до и после переменной $ контента. Внутренняя переменная удаляет теги PHP и использует конкатенацию. – Naga

ответ

0

Попробуйте вот так.

function getInvoice($conn,$uid,$id,$invoice_no) 
{  
    echo $something = "something"; 

    ob_start(); 

    $content='<html>  
    <body style="padding-top: 0px"> 
    <page> 
    my html content     
    </page><body>'.$something.'</body><html>';  

    $content .= ob_get_clean(); 
    } 

?> 
0

Использование выходного буфера будет собирать только данные, отправленные на стандартный вывод после ob_start и перед ob_get_clean. Ваш код был сломан, так как похоже, вы пытаетесь установить переменную php $contents в html, а затем собирая то, что.

Результат, когда вы запустили $contents .= ob_get_clean();, устанавливали на это значение, которое вы тогда передавали как html в mPDF, чтобы сделать PDF-файл. Недопустимый html.

$content='<html> 
<body style="padding-top: 0px"> 
<page> 
my html content     
</page><body>something</body><html>' 

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

Приведенное ниже описание гарантирует, что (действительный html) содержимое собирается в $content, так как оказывается, что это ваш намерение.

function getInvoice($conn,$uid,$id,$invoice_no) { 
    ob_start(); 
$content='<html> 
<head> 
<link rel="stylesheet" href="//classes.gymate.co.in/assets/bower_components/uikit/css/uikit.almost-flat.min.css" media="all"> 
<link rel="stylesheet" href="../assets/css/main.min.css" media="all"> 
<style>body{font-family:\'roboto\'; .md-card {box-shadow: none; } .uk-width-small-3-5 {width: 40%;}</style> 
</head> 
<body style="padding-top: 0px"> 
<page> 
my html content     
</page><body>' . "something" . '</body><html>'; 

    echo $content; 

    $content = ob_get_clean(); 

    include("../plugins/mpdf/mpdf.php"); 
    $mpdf=new mPDF('utf-8', 'A4','','',10,10,5,5,5,5); 
    $mpdf->SetFont('roboto'); 
    $mpdf->SetHTMLFooter('<p style="padding-top: 18px; font-size: 12px;"></p><p style="text-align:right; font-size: 12px;">Page {PAGENO} of {nbpg}</p></p>'); 
    //$stylesheet = file_get_contents('../assets/css/main.min.css'); 
    $mpdf->WriteHTML($stylesheet,1); 
    $mpdf->writeHTML($content); 
    $mpdf->Output("pdf-save-data/reciept.pdf","F"); 

    echo "PDF File Created"; 
} 
0
<?php 
function getInvoice($conn,$uid,$id,$invoice_no) { 
    echo $something = "something"; 
    ob_start(); 
    $content='<html><body style="padding-top: 0px"><page>my html content</page><body>'.$something.'</body><html>'; 
    $content .= ob_get_clean(); 
} 
?> 

Просто убедитесь, что у вас есть ваши одиночные и двойные кавычки правильно закрыты.

Примечание: Также я лично предпочитаю не давать разрывы строк в html, когда вы собираетесь перевести его в переменную.

0

Для достижения этой цели вы можете использовать <<<html и html. Пример ниже

enter image description here

+0

Пожалуйста, внесите фактический код, а не код. –

+0

На самом деле я пробовал. Но я не мог форматировать, как я хочу. Так что просто вставить изображение для понимания. – siddiq

+0

Вы пытались отправить код, и вы не могли его отформатировать? У другого нет проблем с кодом форматирования. –

Смежные вопросы