Я пытаюсь создать файл 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); выход;