не может открыть файл pdf, сгенерированный с помощью dompdf

Я пытаюсь создать файл pdf из шаблона smarty, используя dompdf: код ниже: –

require_once('dompdf/dompdf_config.inc.php'); $dompdf = new DOMPDF(); $dompdf->load_html($smarty->fetch(CURRENT_TEMPLATE.'/module/shopping_cart.html')); $dompdf->render(); $dompdf->stream("sample.pdf"); 

создается файл pdf, но когда я пытаюсь открыть файл pdf, появляется сообщение об ошибке: «Acrobat не может открыть« sample.pdf », потому что это либо не поддерживаемый тип файла, либо потому, что файл поврежден». HTML-страница правильно, когда я пытаюсь

 echo $smarty->fetch(CURRENT_TEMPLATE.'/module/shopping_cart.html') 

поэтому, пожалуйста, помогите мне решить эту ошибку … спасибо заранее

да, это проблема dompdf. Но я могу преодолеть эту проблему. Я создал функцию для создания PDF. проверьте ниже функцию: –

 function pdf_create($html, $filename='', $stream=TRUE) { require_once("dompdf/dompdf_config.inc.php"); $savein = 'uploads/policy_doc/'; $dompdf = new DOMPDF(); $dompdf->load_html($html); $dompdf->render(); $canvas = $dompdf->get_canvas(); $font = Font_Metrics::get_font("arial", "normal","12px"); // the same call as in my previous example $canvas->page_text(540, 773, "Page {PAGE_NUM} of {PAGE_COUNT}", $font, 6, array(0,0,0)); $pdf = $dompdf->output(); // gets the PDF as a string file_put_contents($savein.str_replace("/","-",$filename), $pdf); // save the pdf file on server unset($html); unset($dompdf); } с function pdf_create($html, $filename='', $stream=TRUE) { require_once("dompdf/dompdf_config.inc.php"); $savein = 'uploads/policy_doc/'; $dompdf = new DOMPDF(); $dompdf->load_html($html); $dompdf->render(); $canvas = $dompdf->get_canvas(); $font = Font_Metrics::get_font("arial", "normal","12px"); // the same call as in my previous example $canvas->page_text(540, 773, "Page {PAGE_NUM} of {PAGE_COUNT}", $font, 6, array(0,0,0)); $pdf = $dompdf->output(); // gets the PDF as a string file_put_contents($savein.str_replace("/","-",$filename), $pdf); // save the pdf file on server unset($html); unset($dompdf); } с function pdf_create($html, $filename='', $stream=TRUE) { require_once("dompdf/dompdf_config.inc.php"); $savein = 'uploads/policy_doc/'; $dompdf = new DOMPDF(); $dompdf->load_html($html); $dompdf->render(); $canvas = $dompdf->get_canvas(); $font = Font_Metrics::get_font("arial", "normal","12px"); // the same call as in my previous example $canvas->page_text(540, 773, "Page {PAGE_NUM} of {PAGE_COUNT}", $font, 6, array(0,0,0)); $pdf = $dompdf->output(); // gets the PDF as a string file_put_contents($savein.str_replace("/","-",$filename), $pdf); // save the pdf file on server unset($html); unset($dompdf); } 

Примечание. – Вы должны получить генерируемый PDF в виде строки, а затем сохранить его в pdf-файл.

РЕДАКТИРОВАТЬ: – Вы можете удалить нижнюю часть функции сверху:

  $canvas = $dompdf->get_canvas(); $font = Font_Metrics::get_font("arial", "normal","12px"); // the same call as in my previous example $canvas->page_text(540, 773, "Page {PAGE_NUM} of {PAGE_COUNT}", $font, 6, array(0,0,0)); 

этот выше код для обработки заголовка нескольких страниц.

он работает для меня, в конце мой код выглядит так:

 $html = '<html><body>'. '<p>Put your html here, or generate it with your favourite '. 'templating system.</p>'. '</body></html>'; function pdf_create($html, $filename='', $stream=TRUE) { require_once('scripts/vendor/dompdf/dompdf/dompdf_config.inc.php'); $savein = ''; $dompdf = new DOMPDF(); $dompdf->load_html($html); $dompdf->render(); $canvas = $dompdf->get_canvas(); $font = Font_Metrics::get_font("arial", "normal","12px"); /*// the same call as in my previous example $canvas->page_text(540, 773, "Page {PAGE_NUM} of {PAGE_COUNT}", $font, 6, array(0,0,0));*/ $pdf = $dompdf->output(); // gets the PDF as a string file_put_contents("arquivo.pdf",$pdf); // save the pdf file on server unset($html); unset($dompdf); } pdf_create($html); с $html = '<html><body>'. '<p>Put your html here, or generate it with your favourite '. 'templating system.</p>'. '</body></html>'; function pdf_create($html, $filename='', $stream=TRUE) { require_once('scripts/vendor/dompdf/dompdf/dompdf_config.inc.php'); $savein = ''; $dompdf = new DOMPDF(); $dompdf->load_html($html); $dompdf->render(); $canvas = $dompdf->get_canvas(); $font = Font_Metrics::get_font("arial", "normal","12px"); /*// the same call as in my previous example $canvas->page_text(540, 773, "Page {PAGE_NUM} of {PAGE_COUNT}", $font, 6, array(0,0,0));*/ $pdf = $dompdf->output(); // gets the PDF as a string file_put_contents("arquivo.pdf",$pdf); // save the pdf file on server unset($html); unset($dompdf); } pdf_create($html); с $html = '<html><body>'. '<p>Put your html here, or generate it with your favourite '. 'templating system.</p>'. '</body></html>'; function pdf_create($html, $filename='', $stream=TRUE) { require_once('scripts/vendor/dompdf/dompdf/dompdf_config.inc.php'); $savein = ''; $dompdf = new DOMPDF(); $dompdf->load_html($html); $dompdf->render(); $canvas = $dompdf->get_canvas(); $font = Font_Metrics::get_font("arial", "normal","12px"); /*// the same call as in my previous example $canvas->page_text(540, 773, "Page {PAGE_NUM} of {PAGE_COUNT}", $font, 6, array(0,0,0));*/ $pdf = $dompdf->output(); // gets the PDF as a string file_put_contents("arquivo.pdf",$pdf); // save the pdf file on server unset($html); unset($dompdf); } pdf_create($html); 

Использовать ob_end_clean(); перед вызовом $dompdf->stream(); ,

Я также получил ту же ошибку, но когда я использовал ob_end_clean () до $ dompdf-> stream (), это сработало для меня.

Ниже мой код.

$ dompdf = новый DOMPDF ();

$ Dompdf-> load_html ($ HTML);

$ Dompdf-> Render ();

$ pdf = $ dompdf-> output ();

$ invnoabc = 'Bokkinglist.pdf';

ob_end_clean ();

$ Dompdf-> поток ($ invnoabc); выход;