您的位置:首页 > 编程学习 > > 正文

php标签怎么写(php 使用mpdf实现指定字段配置字体样式的方法)

更多 时间:2022-01-25 00:56:36 类别:编程学习 浏览量:1561

php标签怎么写

php 使用mpdf实现指定字段配置字体样式的方法

前两天在做一个pdf导出功能,使用的插件是kartik-v/yii2-mpdf,此插件使用的是mpdf

  • ?
  • 1
  • composer required kartik-v/yii2-mpdf
  • mpdf文档地址: https://mpdf.github.io/

    有一个需求要求导出的pdf中需要将一个指定的字段设置为一个指定的字体,其他的信息不使用此字体

    刚开始我直接将mpdf的fontdata加上我需要加上的字体文件

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • //配置字体目录
  • 'fontDir' => array_merge($fontDirs, [
  •  Yii::getAlias('@common/pdf/fonts'),
  • ]),
  • //配置字体
  • 'fontdata' => ArrayHelper::merge($fontData, [
  •  'sun-exta' => [
  •   'R' => 'my.ttf',
  •   'sip-ext' => 'sun-extb',
  •  ]
  • ]),
  • 但是当我配置了如上配置之后发现,pdf的所有信息都变成了这个指定的字体,原来这是全局配置字体

    那么我又想到我配置一个无需要使用的字体,然后在页面上引用不就行了吗

    于是我配置了一个字体:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 'fontdata' => ArrayHelper::merge($fontData, [
  •  'my' => [
  •   'R' => 'my.ttf',
  •  ],
  • ]),
  • 配置之后在我们需要生成的pdf的文件中加上如下属性

    style="font-family: my;"

    加上之后进行测试

    但是发现:

    php标签怎么写(php 使用mpdf实现指定字段配置字体样式的方法)

    我的其他信息变成了一个个小方块

    看样子这是由于我没有进行设置我的全局字体,于是我又进行了全局字体配置

    如下:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • //配置字体文件目录
  •  'fontDir' => array_merge($fontDirs, [
  •  Yii::getAlias('@common/pdf/fonts'),
  • ]),
  • 'fontdata' => ArrayHelper::merge($fontData, [
  •  //配置全局字体
  •  'sun-exta' => [
  •   'R' => 'msyh.ttf',
  •   'sip-ext' => 'sun-extb',
  •  ],
  •  //配置指定信息的字体
  •  'my' => [
  •   'R' => 'my.ttf',
  •  ],
  • ]),
  • 配置完成之后发现没有作用,于是在需要生成的pdf文件中引入全局字体样式

    body { font-family: sun-exta;}

    引入之后发现成功

    php标签怎么写(php 使用mpdf实现指定字段配置字体样式的方法)

    使用kartik-v/yii2-mpdf完整配置

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • $pdf = new Pdf([
  •  'mode' => Pdf::MODE_UTF8,
  •  'cssFile' => '@common/pdf/assets/score-mpdf.css',//css文件地址
  •  //mpdf配置
  •  'options' => [
  •   'debug' => true,
  •   'autoScriptToLang' => true,
  •   'autoLangToFont' => true,
  •   'ignore_invalid_utf8' => true,
  •   'baseScript' => \Mpdf\Ucdn::SCRIPT_HAN,
  •   'tabSpaces' => 4,
  •   'fontDir' => array_merge($fontDirs, [
  •    Yii::getAlias('@common/pdf/fonts'),//字体文件目录
  •   ]),
  •   'fontdata' => ArrayHelper::merge($fontData, [
  •    'sun-exta' => [
  •     'R' => 'msyh.ttf',
  •     'sip-ext' => 'sun-extb',
  •    ],
  •    'my' => [
  •     'R' => 'my.ttf',
  •    ],
  •   ]),
  •  ]
  • ]);
  • $content = $this->renderPartial('@common/pdf/score.php', [
  •  'user' => $model,//传递的信息
  • ]);
  • $fileName = '测试pdf.pdf';
  • return $pdf->output($content, $fileName, Pdf::DEST_DOWNLOAD);
  • 根据如上就可以实现给pdf中指定的信息配置字体样式

    总结

    以上所述是小编给大家介绍的php 使用mpdf实现指定字段配置字体样式的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对开心学习网网站的支持!
    如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

    原文链接:https://segmentfault.com/a/1190000019901861

    您可能感兴趣