PDF或Word创建文档与Yii


PDF or Word creation documents with Yii?

你好,我正在用Yii构建一个应用程序,现在将生成报告。我的客户希望在生成报告后对其进行编辑。我认为最好的选择是创建一个Word文档,这样我的客户端就可以编辑它,但是我找不到用Yii框架创建Word文档的信息或扩展。

我也见过,但还没有测试几个PDF扩展,如DOMPDF, tcpdf和Zend_PDF。但是如果我生成一个PDF报告,那么我的客户端将如何编辑这个文件呢?

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

UPDATE 1:现在我的pdf文件可以用了。我是这样做的:首先,我从其站点下载TCPdf,并将其作为第三方库在Yii中打开。然后:

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文档的报表生成,我就是这样做的。

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

查看这篇文章中PDF和Excel可用选项的综合综述http://www.yiiframework.com/wiki/74/

但是,如果您需要创建word文档,那么您可以尝试下面的

在Yii中编写扩展以生成word文档(请参阅此链接,该链接显示如何在PHP/Linux中使用PHP创建word文档)

创建word文档可以使用phpword库要使用,将库解压到文件夹protected'extensions'PHPWord在解压后的文件夹中,您将有以下文件夹:Examples, 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');