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中的cookie
Nov 26 PHP
PHP系统命令函数使用分析
Jul 05 PHP
分享一段php获取linux服务器状态的代码
May 27 PHP
CI(CodeIgniter)框架配置
Jun 10 PHP
PHPExcel内存泄漏问题解决方法
Jan 23 PHP
服务器上配置PHP运行环境教程
Feb 12 PHP
分享一则PHP定义函数代码
Feb 26 PHP
PHP基于socket实现的简单客户端和服务端通讯功能示例
Jul 10 PHP
详解PHP发送邮件知识点
May 06 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
Jul 08 PHP
laravel-admin 实现给grid的列添加行数序号的方法
Oct 08 PHP
对laravel的csrf 防御机制详解,及form中csrf_token()的存在介绍
Oct 24 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
博士208HAF收音机实习报告
2021/03/02 无线电
fleaphp crud操作之find函数的使用方法
2011/04/23 PHP
微信利用PHP创建自定义菜单的方法
2016/08/01 PHP
laravel自定义分页的实现案例offset()和limit()
2019/10/15 PHP
CL vs ForZe BO5 第三场 2.13
2021/03/10 DOTA
jquery tab标签页的制作
2010/05/10 Javascript
jQuery使用技巧简单汇总
2013/04/18 Javascript
React.js入门学习第一篇
2016/03/30 Javascript
jQuery实现删除li节点的方法
2016/12/06 Javascript
设置jquery UI 控件的大小方法
2016/12/12 Javascript
概述一个页面从输入URL到页面加载完的过程
2016/12/16 Javascript
js记录点击某个按钮的次数-刷新次数为初始状态的实例
2017/02/15 Javascript
springMVC + easyui + $.ajaxFileUpload实现文件上传注意事项
2017/04/23 Javascript
详解axios在vue中的简单配置与使用
2017/05/10 Javascript
Angularjs 与 bower安装和使用详解
2017/05/11 Javascript
Nodejs中使用phantom将html转为pdf或图片格式的方法
2017/09/18 NodeJs
Vue源码解析之数据响应系统的使用
2019/04/24 Javascript
微信小程序+云开发实现欢迎登录注册
2019/05/24 Javascript
toString.call()通用的判断数据类型方法示例
2020/08/28 Javascript
微信小程序实现多行文字滚动
2020/11/18 Javascript
Python使用functools实现注解同步方法
2018/02/06 Python
Django 使用logging打印日志的实例
2018/04/28 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
2020/05/11 Python
法国最大电子商务平台:Cdiscount
2018/03/13 全球购物
电大学习个人自我评价范文
2013/10/04 职场文书
城市轨道交通工程职业规划书范文
2014/01/18 职场文书
劳动竞赛活动方案
2014/02/20 职场文书
《雕塑之美》教学反思
2014/04/24 职场文书
环保建议书100字
2014/05/14 职场文书
英语教研活动总结
2014/07/02 职场文书
人身意外保险授权委托书
2014/10/01 职场文书
业务员工作态度散漫检讨书
2014/11/02 职场文书
聘任证明怎么写
2015/03/02 职场文书
离婚答辩状怎么写
2015/05/22 职场文书
详解CSS3.0(Cascading Style Sheet) 层叠级联样式表
2021/07/16 HTML / CSS
python实现双链表
2022/05/25 Python