Reputation: 33
I'm a new user in Symfony2, I would like to generate a PDF and I don't succeess to create a correct PDF with HTML2PDF. In fact, I have a pdf with 1 page containing a junk string like this : "HTTP/1.0 200 OK Cache-Control: no-cache Date: Mon, 11 Mar 2013 19:37:29 GMT" and I have some additional line-break...
I would like to know if my method to generate a pdf is correct, that is return a php template who generate the pdf using HTML2PDF.
Here my controller code :
public function exec_cuAction($id)
{
//CU 4 : imprimer toutes les factures
switch ($id){
case 2:
$infos = null;
$html= $this->render('PeriscopeAdminBundle:Admin:FactureVide.html.twig',array('infos'=> $infos)); //les content pour le pdf
$name = 'factureVide.pdf';
return $this->render('PeriscopeAdminBundle:Admin:afficher_factures_pdf.html.php', array('name'=>$name, 'html'=>$html));
break;
}
Here my PDF content :
<page orientation="portrait" format="A4" style="font-size: 18px">
<div id="wrapper">
<div id="left_informations">
<br><br><br>
<div id="fields">
<div id="invoice_id">
<span>Facture n____ </span>
<span>____________</span>
<span>Date : ___/___/______</span>
</div><br>
<div>Nom de l'enfant :</div><br>
<div>Primaire/Maternelle : </div><br>
<div>Date de naissance : </div><br>
<div>Classe : </div><br>
<div>Enseignant : </div><br>
<div>Taux horaire :</div><br>
<div>Heures matin : </div><br>
<div>Heures soir : </div><br>
<div>Total heures : </div>
<h4>Net payer du mois : </h4>
<br>
<div>Votre retard la fin du mois precédent : </div><br>
<h4>RETARD : </h4>
<div>Votre situation nette : </div>
<br>
<div> Association loi 1901, SIRET 39217524600017 Code APE 913 E <br>
Exonr de TVA Article 261 du CGI
</div>
<div><i>Partie conserver</i></div>
<div style="width:610px;">---------------------------------------------------------------------------------------------------------</div>
<br>
<div id="invoice_id">
<span>Facture n____ </span>
<span>____________</span>
<span>Date: __/__/_____</span>
</div>
<div>Nom de l'enfant :</div>
<br>
<div>Votre situation nette : </div>
<br>
<div>Payer en espce la somme de :</div>
<br>
<div>Payer par chque l'ordre de Priscope n</div>
<div style="margin-left:100px;">Banque : </div>
<div style="margin-left:100px;">Somme : </div>
<br><br>
<div style="margin-left:100px;">
<span><u>Date:</u> ___/___/______</span>
<span><u>Signature :</u> </span>
</div>
<br><br><br>
</div>
</div>
<div id="right_ads">
</div>
</div>
</page>
And my template, the return of my controller :
<?php
ob_start();
try
{
$html2pdf = new \Html2Pdf_Html2Pdf('P', 'A4', 'fr');
$html2pdf->pdf->SetDisplayMode('fullpage');
$html2pdf->writeHTML($html);
$html2pdf->Output($name);
exit;
}
catch(HTML2PDF_exception $e) {
echo $e;
exit;
}
Upvotes: 1
Views: 5655
Reputation: 616
The render helper method returns a Response object which is why your PDF contains HTTP headers. To get just the content of the response (your HTML) call the getContent() method, e.g.
return $this->render('PeriscopeAdminBundle:Admin:afficher_factures_pdf.html.php',
array('name'=>$name, 'html'=>$html->getContent())
);
Upvotes: 1