您好我正在使用Yii构建一个应用程序,现在将生成报告。我的客户希望在生成报告后编辑报告。我认为最好的选择是创建一个Word文档,以便我的客户端能够编辑它,但我找不到使用Yii Framework创建Word文档的信息或扩展。
我也看过但没有测试过几个PDF扩展,例如DOMPDF,tcpdf和Zend_PDF。但是,如果我生成PDF报告,那么,我的客户如何编辑此文件?
伙计我需要有关如何解决这一要求的建议。生成Word或PDF文档?哪个是最快的开发解决方案?
答案 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');