Yii2中Kartik yii-mpdf自定义字体配置文件的存放与调用
Yii2 Kartik yii-mpdf 自定义字体配置文件存放与调用方案
一、配置文件存放位置
建议将custom_config.php放在项目的配置目录子文件夹中,比如@app/config/pdf/custom_config.php(@app对应项目根目录)。这样既符合Yii2的配置文件管理规范,也方便后续维护。
二、修正配置文件内容
你的custom_config.php不需要直接实例化Mpdf对象,而是返回配置数组即可,修改后的代码如下:
<?php require_once __DIR__ . '/../../vendor/autoload.php'; // 按需调整vendor路径 $defaultConfig = (new Mpdf\Config\ConfigVariables())->getDefaults(); $fontDirs = $defaultConfig['fontDir']; $defaultFontConfig = (new Mpdf\Config\FontVariables())->getDefaults(); $fontData = $defaultFontConfig['fontdata']; return [ 'mode' => 'utf-8', 'format' => [190, 236], 'tempDir' => Yii::getAlias('@webroot/css/fonts'), // 使用Yii别名更可靠 'fontDir' => array_merge($fontDirs, [ Yii::getAlias('@webroot/css/fonts/tajawal') ]), 'fontdata' => $fontData + [ 'tajawal' => [ 'R' => "Tajawal-Regular.ttf", 'L' => "Tajawal-Light.ttf", 'B' => "Tajawal-Bold.ttf", 'useOTL' => 0xFF, 'useKashida' => 75, ], ], 'default_font' => 'tajawal' ];
三、在Yii2组件中调用配置
修改/config/web.php中的pdf组件配置,通过options项引入自定义配置文件,使用Yii的路径别名替代硬编码路径:
'pdf' => [ 'class' => Pdf::classname(), 'format' => Pdf::FORMAT_A4, 'orientation' => Pdf::ORIENT_PORTRAIT, 'destination' => Pdf::DEST_BROWSER, 'cssFile' => '@vendor/kartik-v/yii2-mpdf/src/assets/kv-mpdf-bootstrap.min.css', 'cssInline' => '.row { margin: 5px 0px 0px 0px !important; padding: 0px !important; }', 'methods' => [ 'SetTitle' => 'Title', ], 'options' => [ 'config' => Yii::getAlias('@app/config/pdf/custom_config.php'), // 指向你的配置文件 ], ],
四、控制器调用保持不变
你的控制器代码无需额外修改,原有的调用逻辑可以正常使用自定义字体:
$pdf = Yii::$app->pdf; $pdf->methods = [ 'SetTitle' => $pdfTitle , ]; $mpdf = $pdf->api; $mpdf->setAutoBottomMargin = 'pad'; if($language == 0) { $mpdf->SetDirectionality('ltr'); } else { $mpdf->SetDirectionality('rtl'); } $pdf->content = $content; return $pdf->render();
内容的提问来源于stack exchange,提问作者Mohammad Kabalan
相关产品推荐
相关产品推荐

