首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用HTML2PDF生成Symfony2

使用HTML2PDF生成Symfony2
EN

Stack Overflow用户
提问于 2013-03-12 19:02:13
回答 1查看 5.5K关注 0票数 1

我是Symfony2的新用户,我想生成一个PDF,但我不能成功地用HTML2PDF创建正确的PDF。事实上,我有一个只有一个页面的pdf文件,其中包含这样的垃圾字符串:“HTTP/1.0200OK Cache-Control: no-cache Date: Mon,11 Mar 2013 19:37:29 GMT”,我还有一些额外的换行符...

我想知道我的生成pdf的方法是否正确,即返回一个使用HTML2PDF生成pdf的php模板。

下面是我的控制器代码:

代码语言:javascript
复制
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;
}

以下是我的PDF内容:

代码语言:javascript
复制
<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>

还有我的模板,控制器的返回值:

代码语言:javascript
复制
<?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;
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-12 20:01:29

render helper方法返回一个Response对象,这就是为什么您的PDF包含HTTP头。要只获取响应的内容(您的超文本标记语言),请调用getContent()方法,例如

代码语言:javascript
复制
return $this->render('PeriscopeAdminBundle:Admin:afficher_factures_pdf.html.php', 
                        array('name'=>$name, 'html'=>$html->getContent())
                    );
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15359399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档