Hello all,

     I am having issues using the DOMPDF pdf generation library in my
Cake 2.1 application.  I am building an inventory management
application for use at my company and I am trying to dynamically
generate pdfs my users can print as stock labels.  However, when I
attempt to stream to pdf in my view I get a "Headers already sent"
error.  I have already removed all leading and trailing spaces from
the view and the DOMPDF include file.  I am also using the ajax layout
which does not preface the content with any html markup.  I guess that
cake is sending headers somewhere in the view rendering process that I
can't see.  Below is the code for my controller function and my view:

Controller method:
public function printSingleLabel($id = null){
        if($id === null){
            $this->Session->setFlash('No ID provided to print label');
            $this->redirect(array('action'=>'index'));
        }else{
            $this->set('stockItem', $this->StockItem->find('first',
array(
                'recursive'=>3, 'conditions'=>array(
                    'StockItem.id'=>$id
                )
            )));
            $this->set('quantity', 15);
            $this->render('printSingleLabel', 'ajax');
        }
    }

View file:
<?
require_once("dompdf/dompdf_config.inc.php");
$html = <<<EOD
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html;
charset=UTF-8">
        <style>
        @page {
            margin: 0in 0in 0in 0in;
        }
        body {
            margin: 0in;
            padding: 0in;
            font-size:8pt;
            font-family: Arial, Sans-Serif;
        }
        div {
            float:left;
            /*width:2.75in;*/
            padding:0in;
            /*height:2.125in;*/
            margin:0in;
        }

        div.center {
            margin-left: 0.135in;
            margin-right: 0.135in;
        }
    </style>
    </head>
    <body>
<div>
    <strong>{$stockItem['Part']['number']} Rev {$stockItem['StockItem']
['revision']}</strong>
    <br/>
    {$stockItem['Part']['name']}
    <br/>
    <strong>Lot/Batch:</strong>{$stockItem['StockItem']['lot']}/
{$stockItem['StockItem']['batch']}<br/>
    <strong>Expires:</strong>{$stockItem['StockItem']['exp_date']}<br/
>
    <strong>Status:</strong>{$stockItem['Status']['code']}<br/>
    <strong>Quantity:</strong>$quantity{$stockItem['Part']['Uom']
['code']}<br/>
</div>
</body></html>
EOD;
$pdf = new DOMPDF();
$pdf->set_paper(array(0,0,153,198), 'landscape');
$pdf->load_html($html);
$pdf->render();
$pdf->stream("sample.pdf", array('Attachment'=>0));

I've spent a whole afternoon trying to track down where the headers
are being sent with no luck.  If anyone has a suggestion I'd greatly
appreciate it.

-- 
Our newest site for the community: CakePHP Video Tutorials 
http://tv.cakephp.org 
Check out the new CakePHP Questions site http://ask.cakephp.org and help others 
with their CakePHP related questions.


To unsubscribe from this group, send email to
[email protected] For more options, visit this group at 
http://groups.google.com/group/cake-php

Reply via email to