使用Yii的PDF或Word创建文档?

时间:2011-11-23 01:24:12

标签: php yii ms-word pdf-generation doc

您好我正在使用Yii构建一个应用程序,现在将生成报告。我的客户希望在生成报告后编辑报告。我认为最好的选择是创建一个Word文档,以便我的客户端能够编辑它,但我找不到使用Yii Framework创建Word文档的信息或扩展。

我也看过但没有测试过几个PDF扩展,例如DOMPDF,tcpdf和Zend_PDF。但是,如果我生成PDF报告,那么,我的客户如何编辑此文件?

伙计我需要有关如何解决这一要求的建议。生成Word或PDF文档?哪个是最快的开发解决方案?

3 个答案:

答案 0 :(得分:3)

更新1: 目前我得到了PDF文件。我就这样做了:首先我从site下载了TCPdf,然后在Yii中以3rd-party library打开它。然后:

Controller: protected/controllers/mycontroller.php
public function actionGeneratePdf() {
    Yii::import('application.vendors.*');
    require_once('tcpdf/tcpdf.php');
    require_once('tcpdf/config/lang/eng.php');
    $pdf = new TCPDF();
    $pdf->SetCreator(PDF_CREATOR);
    $pdf->SetAuthor('Nicola Asuni');
    $pdf->SetTitle('TCPDF Example 001');
    $pdf->SetSubject('TCPDF Tutorial');
    $pdf->SetKeywords('TCPDF, PDF, example, test, guide');
    $pdf->SetHeaderData('', 0, PDF_HEADER_TITLE, '');
    $pdf->setHeaderFont(Array('helvetica', '', 8));
    $pdf->setFooterFont(Array('helvetica', '', 6));
    $pdf->SetMargins(15, 18, 15);
    $pdf->SetHeaderMargin(5);
    $pdf->SetFooterMargin(10);
    $pdf->SetAutoPageBreak(TRUE, 0);
    $pdf->SetFont('dejavusans', '', 7);
    $pdf->AddPage();
    $pdf->writeHTML("<span>Hello World!</span>", true, false, true, false, '');
    $pdf->LastPage();
    $pdf->Output("example_002.pdf", "I");
}

View: Wherever you want to place a trigger to your controller:
echo CHtml::link('Generate PDF', array('mycontroller/generatePdf'));

无论如何,我希望能够生成word文档,因为要求说用户将在生成后编辑报告。

更新2: 对于Word文档的报告生成this is what I am doing

答案 1 :(得分:1)

在Yii中可以使用扩展来生成PDF文档。 tcpdf(http://www.yiiframework.com/extension/tcpdf/)例如..

查看有关PDF和Excel可用选项的一般综述 http://www.yiiframework.com/wiki/74/

但是,如果您需要创建word文档,则可以尝试以下

在Yii中编写扩展以生成word文档(请参阅此链接,该链接显示如何在PHP / Linux中执行此操作 - Create Word Document using PHP in Linux

答案 2 :(得分:1)

要创建Word文档,您可以使用phpword library 要使用,请将库提取到文件夹 protected \ extensions \ PHPWord 在提取后的此文件夹中,您将拥有文件夹:示例,PHPWord 和一个文件: PHPWord.php 。 在您的控制器/代码中,您需要像在此示例中一样调用:

    spl_autoload_unregister(array('YiiBase','autoload'));
    Yii::import('ext.phpword.phpword', true);
    $PHPWord = new PHPWord();
    spl_autoload_register(array('YiiBase','autoload'));
    $document = $PHPWord->loadTemplate($path);
    $document->setValue('Value1', 'Sun');
    ....
    $document->save('path\file.docx');