yii2 ~ 从视图生成 PDF
yii2 ~ Generate PDF from view
我正在尝试使用 mPDF 生成我的视图的 PDF。但是当我尝试使用模型的属性时它不起作用我做错了什么?
class FacturenController extends Controller
{
public function actionMpdfDemo1() {
$content = $this->renderPartial('factuur');
$pdf = new Pdf([
'mode' => Pdf::MODE_UTF8, // leaner size using standard fonts
'content' => $content,
'options' => [
'title' => 'Factuur',
'subject' => 'Generating PDF files via yii2-mpdf extension has never been easy'
],
'methods' => [
'SetHeader' => ['Generated By: Krajee Pdf Component||Generated On: ' . date("r")],
'SetFooter' => ['|Page {PAGENO}|'],
]
]);
return $pdf->render();
}
PDF 是通过一个名为 "factuur.php" 的文件生成的,我正在尝试使用 "company_name" "factuur_id" 等视图项目
另外,是否可以使用像 'Factuur' 这样的标题。 'factuur_id'?
<?= DetailView::widget([
'model' => $model,
'attributes' => [
'factuur_id',
'company.company_name',
'person.Contactpersoon',
// 'person.last_name',
'product.product_id',
'product.product_name',
'product.amount',
'product.price',
'date',
],
]) ?>
<?php
use yii\helpers\Html;
use yii\widgets\DetailView;
use app\models\Facturen;
use helpers\ArrayHelper;
use app\models\Producten;
use app\controllers\FacturenController;
/* @var $this yii\web\View */
/* @var $model app\models\Facturen */
/* @var $modelProducten app\models\Producten */
$this->title = 'Factuur: '. $model->factuur_id; ?>
<div class="container">
<div class="row">
<div class="col-xs-12">
<div class="invoice-title">
<h2><?php $this->title; ?></h2><h3 class="pull-right">Factuurnummer # <?php 'factuur_id' ?></h3>
</div>
<hr>
<div class="row">
<div class="col-xs-6">
<address>
<strong>Bedrijsnaam: </strong><?php 'company.company_name' ?><br>
<strong>Contactpersoon: </strong><?php'person.Contactpersoon'?><br>
<.../>
如果您想了解其他信息或查看图片,请联系我
~~~~~~编辑~~~~~~
在使用了我得到的一些评论后,我有了一个新的 "error"
错误请求 (#400)
缺少必需的参数:id
我觉得跟这段代码有关
class FacturenController 扩展控制器
{
public function actionMpdfDemo1($id) {
$model = Facturen::findOne($id);
$content = $this->renderPartial('factuur', [
'model' => $model,
'company' => $company,
]);
你们也应该知道我以前从未使用过框架,所以我很菜鸟
如果您希望您的视图文件提供动态内容,您可以使用与使用 render() 相同的方式将变量传递给它:
$content = $this->renderPartial('factuur', [
'model' => $model,
'company' => $company,
'person' => $person,
// etc...
]);
编辑 [2017 年 9 月 13 日]
为方便起见,我为您展示了整个控制器操作和视图代码。您需要借助 Gii 从数据库 table 生成模型。
例子
控制器代码
public function actionMpdfDemo1($id) {
$model = \app\models\Dealer::findOne($id);
$content = $this->renderPartial('_pdf-dealer', [
'model' => $model,
// etc...
]);
$pdf = new \kartik\mpdf\Pdf([
'mode' => \kartik\mpdf\Pdf::MODE_UTF8, // leaner size using standard fonts
'content' => $content,
'cssFile' => '@vendor/kartik-v/yii2-mpdf/assets/kv-mpdf-bootstrap.min.css',
'cssInline' => '.kv-heading-1{font-size:18px}',
'options' => [
'title' => 'Factuur',
'subject' => 'Generating PDF files via yii2-mpdf extension has never been easy'
],
'methods' => [
'SetHeader' => ['Generated By: Krajee Pdf Component||Generated On: ' . date("r")],
'SetFooter' => ['|Page {PAGENO}|'],
]
]);
return $pdf->render();
}
查看:_pdf-dealer.php
<?php
use yii\helpers\Html;
?>
<div class="pdf-dealer container">
<table class="table table-bordered">
<thead>
<tr>
<th>ID</td>
<th>Name</td>
<th>Address</td>
<th>Phone</td>
<th>District</td>
</tr>
</thead>
<tbody>
<tr>
<td><?= $model->id ?></td>
<td><?= $model->name ?></td>
<td><?= $model->address ?></td>
<td><?= $model->phone ?></td>
<td><?= $model->district ?></td>
</tr>
</tbody>
</table>
</div>
然后您可以通过类似于此的路径生成 PDF 文件:
http://example.com/your-controller/mpdf-demo1?id=1
我正在尝试使用 mPDF 生成我的视图的 PDF。但是当我尝试使用模型的属性时它不起作用我做错了什么?
class FacturenController extends Controller
{
public function actionMpdfDemo1() {
$content = $this->renderPartial('factuur');
$pdf = new Pdf([
'mode' => Pdf::MODE_UTF8, // leaner size using standard fonts
'content' => $content,
'options' => [
'title' => 'Factuur',
'subject' => 'Generating PDF files via yii2-mpdf extension has never been easy'
],
'methods' => [
'SetHeader' => ['Generated By: Krajee Pdf Component||Generated On: ' . date("r")],
'SetFooter' => ['|Page {PAGENO}|'],
]
]);
return $pdf->render();
}
PDF 是通过一个名为 "factuur.php" 的文件生成的,我正在尝试使用 "company_name" "factuur_id" 等视图项目 另外,是否可以使用像 'Factuur' 这样的标题。 'factuur_id'?
<?= DetailView::widget([
'model' => $model,
'attributes' => [
'factuur_id',
'company.company_name',
'person.Contactpersoon',
// 'person.last_name',
'product.product_id',
'product.product_name',
'product.amount',
'product.price',
'date',
],
]) ?>
<?php
use yii\helpers\Html;
use yii\widgets\DetailView;
use app\models\Facturen;
use helpers\ArrayHelper;
use app\models\Producten;
use app\controllers\FacturenController;
/* @var $this yii\web\View */
/* @var $model app\models\Facturen */
/* @var $modelProducten app\models\Producten */
$this->title = 'Factuur: '. $model->factuur_id; ?>
<div class="container">
<div class="row">
<div class="col-xs-12">
<div class="invoice-title">
<h2><?php $this->title; ?></h2><h3 class="pull-right">Factuurnummer # <?php 'factuur_id' ?></h3>
</div>
<hr>
<div class="row">
<div class="col-xs-6">
<address>
<strong>Bedrijsnaam: </strong><?php 'company.company_name' ?><br>
<strong>Contactpersoon: </strong><?php'person.Contactpersoon'?><br>
<.../>
如果您想了解其他信息或查看图片,请联系我
~~~~~~编辑~~~~~~
在使用了我得到的一些评论后,我有了一个新的 "error"
错误请求 (#400) 缺少必需的参数:id
我觉得跟这段代码有关
class FacturenController 扩展控制器 {
public function actionMpdfDemo1($id) {
$model = Facturen::findOne($id);
$content = $this->renderPartial('factuur', [
'model' => $model,
'company' => $company,
]);
你们也应该知道我以前从未使用过框架,所以我很菜鸟
如果您希望您的视图文件提供动态内容,您可以使用与使用 render() 相同的方式将变量传递给它:
$content = $this->renderPartial('factuur', [
'model' => $model,
'company' => $company,
'person' => $person,
// etc...
]);
编辑 [2017 年 9 月 13 日]
为方便起见,我为您展示了整个控制器操作和视图代码。您需要借助 Gii 从数据库 table 生成模型。
例子
控制器代码
public function actionMpdfDemo1($id) {
$model = \app\models\Dealer::findOne($id);
$content = $this->renderPartial('_pdf-dealer', [
'model' => $model,
// etc...
]);
$pdf = new \kartik\mpdf\Pdf([
'mode' => \kartik\mpdf\Pdf::MODE_UTF8, // leaner size using standard fonts
'content' => $content,
'cssFile' => '@vendor/kartik-v/yii2-mpdf/assets/kv-mpdf-bootstrap.min.css',
'cssInline' => '.kv-heading-1{font-size:18px}',
'options' => [
'title' => 'Factuur',
'subject' => 'Generating PDF files via yii2-mpdf extension has never been easy'
],
'methods' => [
'SetHeader' => ['Generated By: Krajee Pdf Component||Generated On: ' . date("r")],
'SetFooter' => ['|Page {PAGENO}|'],
]
]);
return $pdf->render();
}
查看:_pdf-dealer.php
<?php
use yii\helpers\Html;
?>
<div class="pdf-dealer container">
<table class="table table-bordered">
<thead>
<tr>
<th>ID</td>
<th>Name</td>
<th>Address</td>
<th>Phone</td>
<th>District</td>
</tr>
</thead>
<tbody>
<tr>
<td><?= $model->id ?></td>
<td><?= $model->name ?></td>
<td><?= $model->address ?></td>
<td><?= $model->phone ?></td>
<td><?= $model->district ?></td>
</tr>
</tbody>
</table>
</div>
然后您可以通过类似于此的路径生成 PDF 文件: http://example.com/your-controller/mpdf-demo1?id=1