很可能是隨身攜帶。我不使用擴展名我使用名爲HTML2PDF的庫 http://www.html2pdf.fr/en 我把它放在我的擴展文件夾中。 我創建具有此代碼
<?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的視圖,它具有我想要導出爲PDF的內容。我實際上是創建簡單的HTML(所以沒有什麼複雜的,大多數樣式都是內聯的)。一個例子是
<page backtop="22mm" backbottom="8mm" backleft="0" backright="0">
<page_header>
<h1> <?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>
謝謝:)的快速反應我有一個問題,即米哈伊,我如何提供一個下載鏈接,下載該PDF格式,這裏保存的PDF哪裏,我需要的是時生成記錄作爲pdf的記錄ie,描述和img存儲在文件夾中,並在folderi.e。中提供pdf文件的參考,爲每個記錄提供唯一的文件名,或者更好的建議我 – hir
此行'$ html2pdf->輸出($ controller-> modelName()。'_'。date('Ym-d')。'。pdf');'允許你在那裏和那裏下載文件。把它改成 '$ html2pdf-> Output('directory/file_xxxx.pdf','F');'把它保存在服務器上。要創建一個唯一的名字,你可以在PHP中創建一個哈希字符串,並將其用作它的名字。將它保存在一個友好的下載位置,並在需要時將其提供給用戶。 –
你的代碼是值得的,那麼我期待的其他擴展。我已將pdf類放入模型文件夾中,並將函數actions()放置在我的控制器(A)和放置在控制器(A)的視圖(A)中的pdf視圖中的一箇中。我知道我錯了。我在這裏得到一個錯誤,因爲core.components.actions.Pdf指向現有的目錄。我想我把代碼放在錯誤的地方,你可以請指導我 – hir