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 相关文章推荐
不用GD库生成当前时间的PNG格式图象的程序
Oct 09 PHP
十天学会php之第三天
Oct 09 PHP
在线增减.htpasswd内的用户
Oct 09 PHP
最常用的8款PHP调试工具
Jul 06 PHP
PHP命名空间(namespace)的动态访问及使用技巧
Aug 18 PHP
PHP基本语法总结
Sep 06 PHP
php递归实现无限分类的方法
Jul 28 PHP
Symfony2实现在controller中获取url的方法
Mar 18 PHP
php结合mysql与mysqli扩展处理事务的方法
Jun 29 PHP
探究Laravel使用env函数读取环境变量为null的问题
Dec 06 PHP
PHP按符号截取字符串的指定部分的实现方法
Sep 10 PHP
ThinkPHP5.1框架数据库链接和增删改查操作示例
Aug 03 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 Header失效的原因分析及解决方法
2016/11/16 PHP
php 一维数组的循环遍历实现代码
2017/04/10 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
2019/12/20 PHP
JS操作JSON要领详细总结
2013/08/25 Javascript
使用js判断控件是否获得焦点
2014/01/03 Javascript
JS实现的左侧竖向滑动菜单效果代码
2015/10/19 Javascript
JQuery移动页面开发之屏幕方向改变与滚屏的实现
2015/12/03 Javascript
JavaScript必看小技巧(必看)
2016/06/07 Javascript
清除浏览器缓存的几种方法总结(必看)
2016/12/09 Javascript
js实现前端分页页码管理
2017/01/06 Javascript
javascript 网页进度条简单实例
2017/02/22 Javascript
JS中利用localStorage防止页面动态添加数据刷新后数据丢失
2017/03/10 Javascript
微信分享调用jssdk实例
2017/06/08 Javascript
JS求1到任意数之间的所有质数的方法详解
2019/05/20 Javascript
vue实现PC端录音功能的实例代码
2019/06/05 Javascript
Vue实现日历小插件
2019/06/26 Javascript
浅谈vue单页面中有多个echarts图表时的公用代码写法
2020/07/19 Javascript
跟老齐学Python之不要红头文件(2)
2014/09/28 Python
Python Web框架Flask下网站开发入门实例
2015/02/08 Python
python实现发送邮件功能代码
2017/12/14 Python
微信跳一跳python辅助软件思路及图像识别源码解析
2018/01/04 Python
python计算两个数的百分比方法
2018/06/29 Python
Python画图高斯分布的示例
2019/07/10 Python
Python3-异步进程回调函数(callback())介绍
2020/05/02 Python
python安装读取grib库总结(推荐)
2020/06/24 Python
Python实现京东抢秒杀功能
2021/01/25 Python
CSS3对图片照片进行边缘模糊处理的实现
2018/08/08 HTML / CSS
个人应聘自我评价分享
2013/11/18 职场文书
行政人员岗位职责
2013/12/08 职场文书
员工培训邀请函
2014/01/11 职场文书
考核工作实施方案
2014/03/30 职场文书
私人委托书格式
2014/09/10 职场文书
债务纠纷代理词
2015/05/25 职场文书
贫困证明书范文
2015/06/16 职场文书
新学期开学标语2015
2015/07/16 职场文书
zabbix如何添加监控主机和自定义监控项
2022/08/14 Servers