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


Posted in PHP onJuly 29, 2019

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

composer required kartik-v/yii2-mpdf

mpdf文档地址: https://mpdf.github.io/

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

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

//配置字体目录
'fontDir' => array_merge($fontDirs, [
 Yii::getAlias('@common/pdf/fonts'),
]),
//配置字体
'fontdata' => ArrayHelper::merge($fontData, [
 'sun-exta' => [
  'R' => 'my.ttf',
  'sip-ext' => 'sun-extb',
 ]
]),

但是当我配置了如上配置之后发现,pdf的所有信息都变成了这个指定的字体,原来这是全局配置字体

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

于是我配置了一个字体:

'fontdata' => ArrayHelper::merge($fontData, [ 
 'my' => [
  'R' => 'my.ttf',
 ],
]),

配置之后在我们需要生成的pdf的文件中加上如下属性

style="font-family: my;"

加上之后进行测试

但是发现:

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

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

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

如下:

//配置字体文件目录
 '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 使用mpdf实现指定字段配置字体样式的方法

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

$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实现指定字段配置字体样式的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

PHP 相关文章推荐
自己动手做一个SQL解释器
Oct 09 PHP
PHP 远程文件管理,可以给表格排序,遍历目录,时间排序
Aug 07 PHP
实用PHP会员权限控制实现原理分析
May 29 PHP
PHP反转字符串函数strrev()函数的用法
Feb 04 PHP
php中长文章分页显示实现代码
Sep 29 PHP
关于PHP session 存储方式的详细介绍
Jun 25 PHP
php读取excel文件示例分享(更新修改excel)
Feb 27 PHP
php强制文件下载而非在浏览器打开的自定义函数分享
May 08 PHP
PHP中加密解密函数与DES加密解密实例
Oct 17 PHP
php程序总是提示验证码输入有误解决方案
Jan 07 PHP
tp5框架前台无限极导航菜单类实现方法分析
Mar 29 PHP
php生成短网址/短链接原理和用法实例分析
May 29 PHP
laradock环境docker-compose操作详解
Jul 29 #PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
Jul 26 #PHP
PHP中散列密码的安全性分析
Jul 26 #PHP
PHP基于timestamp和nonce实现的防止重放攻击方案分析
Jul 26 #PHP
YII2.0框架行为(Behavior)深入详解
Jul 26 #PHP
php使用socket调用http和smtp协议实例小结
Jul 26 #PHP
php使用curl模拟多线程实现批处理功能示例
Jul 25 #PHP
You might like
最小化数据传输――在客户端存储数据
2006/10/09 PHP
强悍无比的WEB开发好助手FireBug(Firefox Plugin)
2007/01/16 Javascript
jquery限制输入字数,并提示剩余字数实现代码
2012/12/24 Javascript
如何在指定的地方插入html内容和文本内容
2013/12/23 Javascript
JavaScript实现的经典文件树菜单效果
2015/09/08 Javascript
详解JavaScript语言的基本语法要求
2015/11/20 Javascript
使用jQuery实现WordPress中的Ctrl+Enter和@评论回复
2016/05/21 Javascript
Node做中转服务器转发接口
2017/10/18 Javascript
让bootstrap的carousel支持滑动滚屏的实现代码
2017/11/27 Javascript
Vue.js递归组件构建树形菜单
2017/12/24 Javascript
vue-cli3 karma单元测试的实现
2019/01/18 Javascript
BootStrap表单验证中的非Submit类型按钮点击时触发验证的坑
2019/09/05 Javascript
[01:51]2014DOTA2西雅图邀请赛 MVP 外卡赛black场间采访
2014/07/09 DOTA
python在ubuntu中的几种安装方法(小结)
2017/12/08 Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
2019/01/30 Python
python查询文件夹下excel的sheet名代码实例
2019/04/02 Python
获取django框架orm query执行的sql语句实现方法分析
2019/06/20 Python
pyqt5 使用cv2 显示图片,摄像头的实例
2019/06/27 Python
对python 调用类属性的方法详解
2019/07/02 Python
PyCharm 2019.3发布增加了新功能一览
2019/12/08 Python
Django后台管理系统的图文使用教学
2020/01/20 Python
python实现拼图小游戏
2020/02/22 Python
python+Selenium自动化测试——输入,点击操作
2020/03/06 Python
Python实现汇率转换操作
2020/05/03 Python
Python通过Schema实现数据验证方式
2020/11/12 Python
澳大利亚第一的设计师礼服租赁网站:GlamCorner
2017/08/13 全球购物
美国地毯购买网站:Rugs USA
2019/02/23 全球购物
如何写一个Java类既可以用作applet也可以用作java应用
2016/01/18 面试题
请说出这段代码执行后a和b的值分别是多少
2015/03/28 面试题
医学生实习自荐信
2013/10/01 职场文书
如何客观的进行自我评价
2013/12/17 职场文书
自荐书4要点
2014/01/25 职场文书
小学少先队活动方案
2014/02/18 职场文书
Python的这些库,你知道多少?
2021/06/09 Python
Mysql Innodb存储引擎之索引与算法
2022/02/15 MySQL
Java后端 Dubbo retries 超时重试机制的解决方案
2022/04/14 Java/Android