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中模拟POST传递数据的两种方法分享
Sep 16 PHP
PHP对象转换为数组函数(递归方法)
Feb 04 PHP
Codeigniter+PHPExcel实现导出数据到Excel文件
Jun 12 PHP
以文件形式缓存php变量的方法
Jun 26 PHP
php-redis中的sort排序函数总结
Jul 08 PHP
php实现json编码的方法
Jul 30 PHP
Laravel路由设定和子路由设定实例分析
Mar 30 PHP
如何正确配置Nginx + PHP
Jul 15 PHP
PHP7.1方括号数组符号多值复制及指定键值赋值用法分析
Sep 26 PHP
自制PHP框架之设计模式
May 07 PHP
PHP封装cURL工具类与应用示例
Jul 01 PHP
php+js实现点赞功能的示例详解
Aug 07 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伪静态之APACHE篇
2014/06/02 PHP
Yii Framework框架开发微信公众平台示例
2020/04/26 PHP
利用js的Node遍历找到repeater的一个字段实例介绍
2013/04/25 Javascript
Jquery网页出现的乱码问题的三种解决方法
2013/06/30 Javascript
JS连连看源码完美注释版(推荐)
2013/12/09 Javascript
Node.js+Express配置入门教程详解
2016/05/19 Javascript
JavaScript使用Range调色及透明度实例
2016/09/25 Javascript
微信小程序 网络API发起请求详解
2016/11/09 Javascript
jquery css实现邮箱自动补全
2016/11/14 Javascript
Bootstrap选项卡学习笔记分享
2017/02/13 Javascript
原生JS实现圣旨卷轴展开效果
2017/03/06 Javascript
详解前后端分离之VueJS前端
2017/05/24 Javascript
浅谈vue-lazyload实现的详细过程
2017/08/22 Javascript
推荐VSCode 上特别好用的 Vue 插件之vetur
2017/09/14 Javascript
JS实现简单的星期格式转换功能示例
2018/07/23 Javascript
Layui数据表格之获取表格中所有的数据方法
2018/08/20 Javascript
20道JS原理题助你面试一臂之力(必看)
2019/07/22 Javascript
layui 弹出层值回传解决方式
2019/11/14 Javascript
详细解读Python的web.py框架下的application.py模块
2015/05/02 Python
python 爬取微信文章
2016/01/30 Python
Python 分享10个PyCharm技巧
2019/07/13 Python
python Django 创建应用过程图示详解
2019/07/29 Python
python实现连续变量最优分箱详解--CART算法
2019/11/22 Python
Foreo国际站:Foreo International
2018/10/29 全球购物
英国电信商店:BT Shop
2019/12/17 全球购物
美国优质宠物用品购买网站:Muttropolis
2020/02/17 全球购物
专科应届生求职信
2013/11/24 职场文书
公司清洁工岗位职责
2013/12/14 职场文书
实习心得体会
2014/01/02 职场文书
化学教师教学反思
2014/01/17 职场文书
质量负责人任命书
2014/06/06 职场文书
校园主题婚礼活动策划方案
2014/09/15 职场文书
检察院对照“四风”认真查找问题落实整改措施
2014/09/26 职场文书
行政诉讼答辩状
2015/05/21 职场文书
社会实践单位意见
2015/06/05 职场文书
Spring中的使用@Async异步调用方法
2021/11/01 Java/Android