可以从yii中db中的数据生成pdf文件

时间:2014-02-28 15:35:52

标签: pdf yii

CAN ANYONE ONEguide me。我不知道如何继续前进。事情是我有描述,图像作为table1 userA登录的字段,userA创建此记录与decitpion和图像字段我想生成一个带有图像和解密的pdf文件以及提供登录时下载pdf文件的userB的下载链接。

我需要知道可以使用yii

从db am中的数据生成pdf文件

我的问题如下

有可能吗? 如果没有更好的建议? 如果可能的话,他们是任何延期 任何人都可以提供一些指导。

请让我知道我是第一次这样做但不确定如何继续

1 个答案:

答案 0 :(得分:1)

可能是的。我不使用扩展名我使用名为HTML2PDF的库 http://www.html2pdf.fr/en 我把它放在我的扩展文件夹中。 我创建了一个包含此代码的pdf动作

<?php

class Pdf extends CAction {

    public function run() {
        $controller = $this->getController();

        \Yii::import('core.extensions.Html2Pdf.HTML2PDF');
        //use the existing filters

        $model_name = $controller->modelName();
        $model = new $model_name('search');
        $dataProvider = $model->active()->search();
        //remove the pagination
        $dataProvider->setPagination(false);

        //get the html to transform
        $content = $controller->renderPartial('pdf',array(
            'dataProvider'=>$dataProvider,
            'title'=>$controller->modelName() . ' - '.date('F j, Y, G:i'),
        ), true);
        try
        {
            if(isset($_GET['test'])) {
                echo $content;
            } else {
                //create the PDF
                $html2pdf = new HTML2PDF('P', 'A4', 'en');
                $html2pdf->setDefaultFont('Arial');
                $html2pdf->writeHTML($content, isset($_GET['vuehtml']));
                $html2pdf->Output($controller->modelName() . '_'.date('Y-m-d').'.pdf');
            }
        }
        catch(HTML2PDF_exception $e) {
            echo $e;
            exit;
        }
    }
}

我可以附加到任何类似的控制器

/**
 * @return array actions to be mapped to this controller
 */
public function actions(){
   return array(
        'csv'=>array(
          'class'=>'core.components.actions.Csv',
          'field_list'=>array('t.id', 't.name', 't.status'),
        ),
        'pdf'=>array(
          'class'=>'core.components.actions.Pdf',
        ),
    );
}

。有一个名为pdf的视图,它具有我想要导出为PDF的内容。我实际上是在创建简单的HTML(所以没有什么非常复杂的,大多数样式都是内联的)。一个例子是

<page backtop="22mm" backbottom="8mm" backleft="0" backright="0">
    <page_header>
        <h1>&nbsp;&nbsp;&nbsp;&nbsp;<?php echo $title?></h1>
        <table backleft="10mm" style="width: 700px;" align="center">
            <tr>
                <td style="width: 10%; border-bottom: 1px solid black;">ID</td>
                <td style="width: 75%; border-bottom: 1px solid black;">Name</td>
                <td style="width: 15%; border-bottom: 1px solid black;">Status</td>
            </tr>
        </table>
    </page_header>
    <page_footer>
        <table style="width: 700px; border-top: 1px solid black;" align="center">
            <tr>
                <td style="text-align: left; width: 50%"></td>
                <td style="text-align: right; width: 50%">page [[page_cu]]/[[page_nb]]</td>
            </tr>
        </table>
    </page_footer>    
    <table style="width: 700px;" align="center">

<?php 
    foreach($dataProvider->getData() as $record) {
?>      <tr>
            <td style="width: 10%;"><?php echo $record->id?></td>
            <td style="width: 75%;"><?php echo $record->name?></td>
            <td style="width: 15%;"><?php echo ucfirst($record->status)?></td>
        </tr>

<?php 
    }
?>  </table>
</page>