Search code examples
phppdf-generationsmartydompdf

cannot open pdf file generated using dompdf


i am trying to generate a pdf file from smarty template using dompdf:code is below:-

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");

a pdf file is generated,but when i try to open the pdf file a error message is displaying as below "Acrobat cannot open the 'sample.pdf' because it is either not supported file type or because file has been damaged" HTML page is diplaying correctly when i try to

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

so please help me to solve this error...thanks in advance


Solution

  • yes this is an problem of dompdf. But I am able to overcome from this problem. I created a function for pdf creation. check below function:-

    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); 
    
    }
    

    Note :- You need to get generated pdf as string then save it to pdf file.

    EDIT :- You may delete the below part from above function:-

        $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));
    

    this above code for handling multiple pages header.