yii pdfable输出不需要的文字

时间:2013-06-06 16:53:00

标签: pdf yii pdf-generation yii-extensions

我已经设法在Yii中使用pdfable创建pdf文件。 pdf文档的问题是它包括主菜单作为列表项,它不应该。这是从哪里来的,如何阻止它?

控制器

$asaarea = Yii::app()->db->createCommand("SELECT distinct(asaarea) FROM `hdb`.`lookupcountry`")->queryAll();        

        $results = array();
        foreach ($asaarea as $key => $value) {
            $results[$value['asaarea']] = Yii::app()->db->createCommand("SELECT
                StartDATE,
                PROJECT,
                PROJCODE,
                PROJID,
                ActualEndDate,
                OFFICE,
                PERCENT,
                PERCENTPlanned,
                KM,
                KMPlanned,
                COUNTRY,
                AREA,
                PROJINFO
                FROM view_webprojectreport where asaarea = '" . $value['asaarea'] . "'")->queryAll();
        }


        $pdf = $this->createPdf();
        $pdf->setOptions(array('orientation'=>'Landscape',
                'margin-top'    => 5,
                'margin-right'  => 10,
                'margin-bottom' => 5,
                'margin-left'   => 10,
                )
            );
        $pdf->renderPage('print',array('results'=>$results));

        $pdf->send('ProjectReport_'.date('M-Y').'.pdf');

print.php

<head>
<style type='text/css'>

@media print{thead{display:table-header-group; margin-bottom:2px;}}
@page{margin-top:1cm;margin-left:1cm;margin-right:1cm;margin-bottom:1.5cm;}}

.odd {
    background: none repeat scroll 0 0 #E5F1F4;
}
.even {
    background: none repeat scroll 0 0 #F8F8F8;
}
table tbody tr:hover{
        background: none repeat scroll 0 0 lightgreen;
}
table tbody tr{
    font-size:10pt;
}
body
{
  margin: 0mm 0mm 0mm 0mm;

}

.grey{
    background: lightgrey;
}

.center{
    margin: 0 auto;
    text-align: center;
}

.size{
    font-size:15px;
}

table{
    padding-botton:30px;
}
thead{
    font-size:11px;
     font-weight: normal;
}

</style>
</head>
<!-- <body onload="window.print();window.close();">-->
<body>
<h1 class="grey center">Project Report</h1>
<table>
<?php 
$count = 0;
$class= null;
foreach($results as $key=>$data) {
?>

<tr class="grey size">
    <th colspan=12><?=$key ?></th>
</tr>
<thead>
    <tr>
        <th>Start Date</th>
        <th>Name</th>
        <th>Code</th>
        <th>Actual End Date</th>
        <th>Office</th>
        <th>%</th>
        <th>% Planned</th>
        <th>KM</th>
        <th>KM Planned</th>
        <th>Country</th>
        <th width="150">AREA</th>
        <th>PROJ INFO</th>
    </tr>
</thead>
<tbody>
<?php foreach($data as $column=>$q) {   ?>

    <?php 
        $class = ($count % 2 === 0) ? 'odd' : 'even';
        $this->renderPartial('_report',array('data'=>$q,'class'=>$class));
        $count++;
    }
    ?>
</tbody>


<?php }
?>
</table>
</body>

enter image description here

1 个答案:

答案 0 :(得分:1)

你没有发布这个,所以这只是一个猜测,但它可能是你的布局文件中的菜单。

Pdfable将每个页面呈现为常规Yii页面 - 它与renderPartial()不同。因此,您可能应该创建特定于PDF的布局并将其配置为布局文件。例如,您可以创建views/layouts/pdf.php

<?php
// In the simplest case you only output $content here. But 
// you could also add a nice header to all your PDFs.
echo $content;

print.php中,您可以在最上面添加此行。

<?php $this->layout = 'pdf'; ?>