CodeIgniter Forums

Full Version: Problem using dompdf
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2

El Forum

[eluser]benjamin[/eluser]
Hi all,

I tried getting the dompdf generator to work with CI (as described in http://codeigniter.com/wiki/PDF_generati...ng_dompdf/ - slight modification is that I included dompdf as a library as opposed to a helper) but am getting nowhere. Basically, I'm getting no error reports, nothing. Just a blank page. My webapp hangs after I call: $dompdf->render();

I created a class called PDF_Generator as my CI library and placed it into application/libraries:
Code:
class PDF_Generator {

    function pdf_create($html, $filename, $stream=TRUE) {
        require_once("dompdf/dompdf_config.inc.php");
        spl_autoload_register('DOMPDF_autoload');

        $dompdf = new DOMPDF();
        $dompdf->load_html($html);
        
        $dompdf->render();
        $dompdf->stream($filename);
    }

}

The dompdf folder has been placed into application/libraries too.

I was wondering whether anybody have any tips for me? Or maybe somebody got it to work and wouldn't mind sharing his/her solution?

This question follows http://ellislab.com/forums/viewthread/175392/ which remained unanswered. Thanks for your time and help!

El Forum

[eluser]DjLeChuck[/eluser]
Hi benjamin,

I've try this and it works :

1. Dl dompdf and extract it in ./application/libraries/dompdf
2. Create your library PDF_Generator in ./application/libraries/Pdf_generator.php
3. Make this in my Controller
Code:
<?php
        $this->load->library('pdf_generator');
        $data['title'] = 'Title';
        $html = $this->load->view('pdf_template', $data, true);
        $this->pdf_generator->pdf_create($html, 'file_name_here');
?>
4. Launch my page...

Maybe is your template wrong ?

El Forum

[eluser]dark_lord[/eluser]
Can you paste you view?

Remember to use the
Code:
$html = $this->load->view('pdf_template', $data, true);
third parameter so data is being returned.

El Forum

[eluser]benjamin[/eluser]
Ah, since I was just testing it, I didn't bother to use a view - I just passed in straight html. 2 sec, I will code one up.

El Forum

[eluser]benjamin[/eluser]
OK, so, loading an empty view works, but still results in an error. Also, the pdf isn't written to file:

%PDF-1.3
1 0 obj
<< /Type /Catalog
/Outlines 2 0 R
/Pages 3 0 R
/OpenAction 8 0 R >>
endobj
2 0 obj
<< /Type /Outlines /Count 0 >>
endobj
3 0 obj
<< /Type /Pages
/Kids [6 0 R
]
/Count 1
/Resources <<
/ProcSet 4 0 R
/Font <<
/F1 9 0 R
>>
>>
/MediaBox [0.000 0.000 612.000 792.000]
>>
endobj
4 0 obj
[/PDF /Text ]
endobj
5 0 obj
<<
/Creator (DOMPDF)
/CreationDate (D:20110303172051+00'00')
/ModDate (D:20110303172051+00'00')
>>
endobj
6 0 obj
<< /Type /Page
/Parent 3 0 R
/Contents 7 0 R
>>
endobj
7 0 obj
<<
/Length 75 >>
stream

0.000 0.000 0.000 rg
BT 34.016 723.208 Td /F1 12.0 Tf [(asdasdasd)] TJ ET
endstream
endobj
8 0 obj
[6 0 R /Fit]
endobj
9 0 obj
<< /Type /Font
/Subtype /Type1
/Name /F1
/BaseFont /Times-Roman
/Encoding /WinAnsiEncoding
>>
endobj
xref
0 10
0000000000 65535 f
0000000008 00000 n
0000000091 00000 n
0000000137 00000 n
0000000291 00000 n
0000000320 00000 n
0000000434 00000 n
0000000497 00000 n
0000000622 00000 n
0000000650 00000 n
trailer
<<
/Size 10
/Root 1 0 R
/Info 5 0 R
>>
startxref
759
%%EOF

The view that I am using is:
Code:
&lt;html&gt;
    <p>test</p>
&lt;/html&gt;



Thanks, one step closer!

El Forum

[eluser]Rok Biderman[/eluser]
You did try it like I wrote in this post? It worked perfectly for me, even for complex tables and documents over 30 pages. If it doesn't work for you, post back and i'll troubleshoot your code later when i come home.

El Forum

[eluser]dark_lord[/eluser]
Try adding the values below in the stream

Code:
$dompdf->stream($filename.".pdf", array('attachment' => 1);

El Forum

[eluser]benjamin[/eluser]
Thanks, no luck :-( Same problem.

El Forum

[eluser]dark_lord[/eluser]
Can you paste you code the PDF DOM helper and the view code?

El Forum

[eluser]benjamin[/eluser]
Sure, here goes:

PDF_Generator:
Code:
&lt;?php

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/**
* Description of PDF_Generator
*
* @author benjamin
*/
if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class PDF_Generator {

    function pdf_create($html, $filename, $stream=TRUE) {
        require_once("dompdf/dompdf_config.inc.php");
        spl_autoload_register('DOMPDF_autoload');

        $dompdf = new DOMPDF();
        $dompdf->load_html($html);

        $dompdf->render();
        if ($stream) {
            $dompdf->stream($filename, array('attachment' => 1));
        } else {
            $CI = & get_instance();
            $CI->load->helper('file');
            write_file($filename, $dompdf->output());
        }
    }

}

?&gt;
Report_Generator (a library that I call from the controller):


Code:
&lt;?php

/**
* Description of Report Generator
*
* @author Benjamin
*/
if (!defined('BASEPATH')) {
    exit('No direct script access allowed');
}

class Report_Generator {

    function create_rq_test_report($uid, $html) {
        $CI = & get_instance();
        $CI->load->helper('date');
        $CI->load->library('session');
        $CI->load->model('rq_test_prediction_statements');
        $CI->load->model('rq_test_predictions');
        $CI->load->model('rq_test_subject');
        $CI->load->library('PDF_Generator');
        // ....
      $fname = "./somedir/filename.pdf';
      
        $CI->pdf_generator->pdf_create($html, $fname);
    }

}

?&gt;
Pages: 1 2