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 相关文章推荐
PHP脚本的10个技巧(4)
Oct 09 PHP
php&java(一)
Oct 09 PHP
我用php+mysql写的留言本
Oct 09 PHP
php面向对象全攻略 (九)访问类型
Sep 30 PHP
IIS下PHP连接数据库提示mysql undefined function mysql_connect()
Jun 04 PHP
ubuntu下编译安装xcache for php5.3 的具体操作步骤
Jun 18 PHP
php对数组排序的简单实例
Dec 25 PHP
php读取excel文件示例分享(更新修改excel)
Feb 27 PHP
什么情况下可以不写PHP的闭合标签“?>”
Aug 28 PHP
百度工程师讲PHP函数的实现原理及性能分析(一)
May 13 PHP
php输出图像的方法实例分析
Feb 16 PHP
Laravel框架源码解析之反射的使用详解
May 14 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
PHP substr 截取字符串出现乱码问题解决方法[utf8与gb2312]
2011/12/16 PHP
PHP将回调函数作用到给定数组单元的方法
2014/08/19 PHP
PHP实现递归无限级分类
2015/10/22 PHP
利用PHP访问带有密码的Redis方法示例
2017/02/09 PHP
Laravel 数据库加密及数据库表前缀配置方法
2019/10/10 PHP
静态页面下用javascript操作ACCESS数据库(读增改删)的代码
2007/05/14 Javascript
JavaScript 学习笔记 Black.Caffeine 09.11.28
2009/11/30 Javascript
ExtJS 设置级联菜单的默认值
2010/06/13 Javascript
form.submit()不能提交表单的错误原因及解决方法
2014/10/13 Javascript
js操作css属性实现div层展开关闭效果的方法
2015/05/11 Javascript
JavaScript判断数组重复内容的两种方法(推荐)
2016/06/06 Javascript
JavaScript中的splice方法用法详解
2016/07/20 Javascript
jquery 标签 隔若干行加空白或者加虚线的方法
2016/12/07 Javascript
Javascript 实现计算器时间功能详解及实例(二)
2017/01/08 Javascript
微信小程序 wx:for的使用实例详解
2017/04/27 Javascript
JavaScript之DOM_动力节点Java学院整理
2017/07/03 Javascript
vue实现的仿淘宝购物车功能详解
2019/01/27 Javascript
Vue路由之JWT身份认证的实现方法
2019/08/26 Javascript
详解Python中的__new__()方法的使用
2015/04/09 Python
使用Protocol Buffers的C语言拓展提速Python程序的示例
2015/04/16 Python
python将字符串转换成数组的方法
2015/04/29 Python
Python上传package到Pypi(代码简单)
2016/02/06 Python
Python字典创建 遍历 添加等实用基础操作技巧
2018/09/13 Python
解决python3读取Python2存储的pickle文件问题
2018/10/25 Python
python 处理telnet返回的More,以及get想要的那个参数方法
2019/02/14 Python
【python】matplotlib动态显示详解
2019/04/11 Python
浅谈Django中view对数据库的调用方法
2019/07/18 Python
python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
2019/08/06 Python
Python SELENIUM上传文件或图片实现过程
2019/10/28 Python
详解Python流程控制语句
2020/10/28 Python
CSS3 :not()选择器实现最后一行li去除某种css样式
2016/10/19 HTML / CSS
html5+css3实现一款注册表单实例
2013/04/17 HTML / CSS
日语系毕业生推荐信
2013/11/11 职场文书
差生评语大全
2014/05/04 职场文书
道德模范事迹材料
2014/12/20 职场文书
董事长新年致辞
2015/07/29 职场文书