如何在 yii2 中打印 pdf header 上的字符串
How to print a string on pdf header in yii2
我正在开发 yii2
框架。我正在使用 kartik\mpdf\Pdf
打印 pdf
文件。我想在 pdf
文件的 header 上打印一个名为 subdivision
的字段。
$sql_r = "SELECT DISTINCT ogph.`id` AS 'OGP_Serial_No',DATE(ogph.`created_at`) AS 'Date',uu.`name` AS 'Created_By',ogpd.`meter_serial` AS 'Meter_Serial_Number', u.`name` AS 'Issued_To', ps.`name` AS 'Store',sd.`name` AS 'Sub_Division',
IFNULL(ogph.`admin_incharge`,'') AS 'Admin_Incharge', IFNULL(ogph.`project_manager`,'') AS 'Project_Manager', IFNULL(ogph.`driver_name`,'') AS 'Driver_Name', IFNULL(ogpd.`remarks`,'') AS 'Remarks'
FROM `ogp_header` ogph
INNER JOIN `ogp_detail` ogpd ON ogph.`id` = ogpd.`ogp_id`
INNER JOIN `user` u ON ogph.`issuer` = u.`id`
INNER JOIN `user` uu ON ogph.`created_by` = uu.`id`
INNER JOIN `survey_hesco_subdivision` sd ON ogph.`sub_division` = sd.`sub_div_code`
INNER JOIN `project_store` ps ON ogph.`store_id` = ps.`id` $where AND ogph.`id` = $ogp_id";
$sql_r = $sql_r . " LIMIT " . $from . " OFFSET " . $to;
$dataProvider = new SqlDataProvider([
'sql' => $sql_r,
'pagination' => false
]);
$content = $this->renderPartial('view_pdf_ogp', ['dataProvider' => $dataProvider]);
$pdf = new Pdf([
// set to use core fonts only
'mode' => Pdf::MODE_UTF8,
// A4 papr format
'format' => Pdf::FORMAT_A4,
// portrait orientation
'orientation' => Pdf::ORIENT_PORTRAIT,
// stream to browser inline
'destination' => Pdf::DEST_DOWNLOAD,
// your html content input
'content' => $content,
// format content from your own css file if needed or use the
// enhanced bootstrap css built by Krajee for mPDF formatting
'cssFile' => '@vendor/kartik-v/yii2-mpdf/assets/kv-mpdf-bootstrap.min.css',
// any css to be embedded if required
'cssInline' => '.kv-heading-1{font-size:14px}',
// set mPDF properties on the fly
'options' => ['title' => 'OGP Document'],
// call mPDF methods on the fly
'methods' => [
'SetHeader' => ['Name.||Generated On: ' . date("Y-m-d h:i:sa")],
'SetFooter' => ['{PAGENO}']
]
]);
在上面的代码中,我想做类似'SetHeader' => ['Accurate (PVT) LTD.|Sub-Division: Here I want to print the sub division name|Generated On: ' . date("Y-m-d h:i:sa")],
的事情
我试过什么?
我尝试通过添加
来做到这一点
'SetHeader' => ['Name.|Sub-Division: '.<?php $model=$dataProvider->getModels()[0]; print_r($model['Sub_Division'])?>.'|Generated On: ' . date("Y-m-d h:i:sa")]
还有
'SetHeader' => ['Name.|Sub-Division: '.$content->Sub_Division.'|Generated On: ' . date("Y-m-d h:i:sa")],
但两者都给我 non-object
错误。有什么方法可以将字符串放在从查询中获取的 header 上吗?
非常感谢任何帮助。
'SetHeader' => ['Accurate (PVT) LTD.|Sub-Division: '.<?php $model=$dataProvider->getModels()[0]; print_r($model['Sub_Division'])?>.'|Generated On: ' . date("Y-m-d h:i:sa")]
你想用上面的代码行实现什么,你正在设置一个数组索引 SetHeader
,它期望它的值是一个字符串,为什么 php 标签以及为什么 print_r
当你只需要连接多个字符串时。像下面这样阅读。
'SetHeader' => ['header string goes here']
也就是说,您可以通过两种方法设置 header。
方法一
在配置数组中提供 header(这就是您正在尝试的方法),但您没有以正确的方式构建 header 字符串。应该是这样的。
'SetHeader' => ['Accurate (PVT) LTD.|Sub-Division: '.$dataProvider->getModels()[0]['Sub_Division'].'|Generated On: ' . date("Y-m-d h:i:sa")]
以上配置表示"Call SetHeader
method of mPDF
class with supplied argument".
方法二
或者,您可以获取mPDF
object并直接调用它的SetHeader
方法。
$mpdf = $pdf->api; // fetches mpdf api
$mpdf->SetHeader('Accurate (PVT) LTD.|Sub-Division: '.$dataProvider->getModels()[0]['Sub_Division'].'|Generated On: ' . date("Y-m-d h:i:sa"));
我正在开发 yii2
框架。我正在使用 kartik\mpdf\Pdf
打印 pdf
文件。我想在 pdf
文件的 header 上打印一个名为 subdivision
的字段。
$sql_r = "SELECT DISTINCT ogph.`id` AS 'OGP_Serial_No',DATE(ogph.`created_at`) AS 'Date',uu.`name` AS 'Created_By',ogpd.`meter_serial` AS 'Meter_Serial_Number', u.`name` AS 'Issued_To', ps.`name` AS 'Store',sd.`name` AS 'Sub_Division',
IFNULL(ogph.`admin_incharge`,'') AS 'Admin_Incharge', IFNULL(ogph.`project_manager`,'') AS 'Project_Manager', IFNULL(ogph.`driver_name`,'') AS 'Driver_Name', IFNULL(ogpd.`remarks`,'') AS 'Remarks'
FROM `ogp_header` ogph
INNER JOIN `ogp_detail` ogpd ON ogph.`id` = ogpd.`ogp_id`
INNER JOIN `user` u ON ogph.`issuer` = u.`id`
INNER JOIN `user` uu ON ogph.`created_by` = uu.`id`
INNER JOIN `survey_hesco_subdivision` sd ON ogph.`sub_division` = sd.`sub_div_code`
INNER JOIN `project_store` ps ON ogph.`store_id` = ps.`id` $where AND ogph.`id` = $ogp_id";
$sql_r = $sql_r . " LIMIT " . $from . " OFFSET " . $to;
$dataProvider = new SqlDataProvider([
'sql' => $sql_r,
'pagination' => false
]);
$content = $this->renderPartial('view_pdf_ogp', ['dataProvider' => $dataProvider]);
$pdf = new Pdf([
// set to use core fonts only
'mode' => Pdf::MODE_UTF8,
// A4 papr format
'format' => Pdf::FORMAT_A4,
// portrait orientation
'orientation' => Pdf::ORIENT_PORTRAIT,
// stream to browser inline
'destination' => Pdf::DEST_DOWNLOAD,
// your html content input
'content' => $content,
// format content from your own css file if needed or use the
// enhanced bootstrap css built by Krajee for mPDF formatting
'cssFile' => '@vendor/kartik-v/yii2-mpdf/assets/kv-mpdf-bootstrap.min.css',
// any css to be embedded if required
'cssInline' => '.kv-heading-1{font-size:14px}',
// set mPDF properties on the fly
'options' => ['title' => 'OGP Document'],
// call mPDF methods on the fly
'methods' => [
'SetHeader' => ['Name.||Generated On: ' . date("Y-m-d h:i:sa")],
'SetFooter' => ['{PAGENO}']
]
]);
在上面的代码中,我想做类似'SetHeader' => ['Accurate (PVT) LTD.|Sub-Division: Here I want to print the sub division name|Generated On: ' . date("Y-m-d h:i:sa")],
我试过什么?
我尝试通过添加
来做到这一点'SetHeader' => ['Name.|Sub-Division: '.<?php $model=$dataProvider->getModels()[0]; print_r($model['Sub_Division'])?>.'|Generated On: ' . date("Y-m-d h:i:sa")]
还有
'SetHeader' => ['Name.|Sub-Division: '.$content->Sub_Division.'|Generated On: ' . date("Y-m-d h:i:sa")],
但两者都给我 non-object
错误。有什么方法可以将字符串放在从查询中获取的 header 上吗?
非常感谢任何帮助。
'SetHeader' => ['Accurate (PVT) LTD.|Sub-Division: '.<?php $model=$dataProvider->getModels()[0]; print_r($model['Sub_Division'])?>.'|Generated On: ' . date("Y-m-d h:i:sa")]
你想用上面的代码行实现什么,你正在设置一个数组索引 SetHeader
,它期望它的值是一个字符串,为什么 php 标签以及为什么 print_r
当你只需要连接多个字符串时。像下面这样阅读。
'SetHeader' => ['header string goes here']
也就是说,您可以通过两种方法设置 header。
方法一
在配置数组中提供 header(这就是您正在尝试的方法),但您没有以正确的方式构建 header 字符串。应该是这样的。
'SetHeader' => ['Accurate (PVT) LTD.|Sub-Division: '.$dataProvider->getModels()[0]['Sub_Division'].'|Generated On: ' . date("Y-m-d h:i:sa")]
以上配置表示"Call SetHeader
method of mPDF
class with supplied argument".
方法二
或者,您可以获取mPDF
object并直接调用它的SetHeader
方法。
$mpdf = $pdf->api; // fetches mpdf api
$mpdf->SetHeader('Accurate (PVT) LTD.|Sub-Division: '.$dataProvider->getModels()[0]['Sub_Division'].'|Generated On: ' . date("Y-m-d h:i:sa"));