On May 18, 2:28 pm, AD7six <andydawso...@gmail.com> wrote:
> On Friday, 18 May 2012 18:09:35 UTC+2, Josh M wrote:
>
> > 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.
>
> Read the error message?
>
> Warning: Cannot modify header information - headers already sent by (output
> started at ***/this/file*:*on this line***) in /irrelevant.php
>
> AD

The error is being generated by DOMPDF and reads exactly this: "Unable
to stream pdf: headers already sent"  It does not tell me where the
headers were sent.  I used this same template to create pdfs in
another application that didn't use the CakePHP framework and I got no
such error.

Let me ask this another way:  I submit a request through the client
for a controller method.  That method performs some logic and passes
data off to a view to be rendered.  Are headers sent at any point
before the contents of the view are rendered?  I attempted to create a
controller that performed no logic and created a view that contained
only a single line of code: <? header('Location: http://google.com'); ?
>  When I request that action my browser simply renders a blank page.
No redirect, no error.  I don't understand how this could happen.  I
should either get a redirect to google or an error, but I get
neither.  My error reporting is set to E_ALL and E_DEPRECATED.

I'm new to web development and CakePHP so I suspect I'm missing
something obvious here, but I'm out of ideas.

-- 
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
cake-php+unsubscr...@googlegroups.com For more options, visit this group at 
http://groups.google.com/group/cake-php

Reply via email to