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 相关文章推荐
拼音码表的生成
Oct 09 PHP
一个php作的文本留言本的例子(二)
Oct 09 PHP
PHP中其实也可以用方法链
Nov 10 PHP
如何使用php绘制在图片上的正余弦曲线
Jun 08 PHP
浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞)
Jun 29 PHP
PHP获取远程图片并保存到本地的方法
May 12 PHP
Apache启动报错No space left on device: AH00023该怎么解决
Oct 16 PHP
分享php邮件管理器源码
Jan 06 PHP
php提交过来的数据生成为txt文件
Apr 28 PHP
PHP经典算法集锦【经典收藏】
Sep 14 PHP
CentOS 上搭建 PHP7 开发测试环境
Feb 26 PHP
PHP通过get方法获得form表单数据方法总结
Sep 12 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中的 == 运算符进行字符串比较
2006/11/26 PHP
PHP中使用mktime获取时间戳的一个黑色幽默分析
2012/05/31 PHP
jQuery ajax+PHP实现的级联下拉列表框功能示例
2019/02/12 PHP
php使用redis的有序集合zset实现延迟队列应用示例
2020/02/20 PHP
PHP设计模式入门之状态模式原理与实现方法分析
2020/04/26 PHP
JavaScript 比较时间大小的代码
2010/04/24 Javascript
js网页侧边随页面滚动广告效果实现
2011/04/14 Javascript
jquery高效反选具体实现
2013/05/05 Javascript
js/jquery去掉空格,回车,换行示例代码
2013/11/05 Javascript
javascript确认框的三种使用方法
2013/12/17 Javascript
Jquery实现动态切换图片的方法
2015/05/18 Javascript
HTML5 JS压缩图片并获取图片BASE64编码上传
2020/11/16 Javascript
js实现下一页页码效果
2017/03/07 Javascript
koa socket即时通讯的示例代码
2018/09/07 Javascript
CSS3 动画卡顿性能优化的完美解决方案
2018/09/20 Javascript
详解Vue 项目中的几个实用组件(ts)
2019/10/29 Javascript
JavaScript实现简单计算器
2020/03/19 Javascript
[01:11]回顾历届DOTA2国际邀请赛中国区预选赛
2017/06/26 DOTA
Python multiprocessing.Manager介绍和实例(进程间共享数据)
2014/11/21 Python
Python转换HTML到Text纯文本的方法
2015/01/15 Python
Python import自定义模块方法
2015/02/12 Python
Pycharm学习教程(4) Python解释器的相关配置
2017/05/03 Python
python爬取个性签名的方法
2018/06/17 Python
用Python批量把文件复制到另一个文件夹的实现方法
2019/08/16 Python
Django celery异步任务实现代码示例
2020/11/26 Python
详解px单位html5响应式方案
2018/03/08 HTML / CSS
豆腐の盛田屋官网:日本自然派的豆乳面膜、肥皂、化妆水、乳液等
2016/10/08 全球购物
澳大利亚领先的孕妇服装品牌:Mamaway
2018/08/14 全球购物
个性化皮包、小袋、生活配件:Mon Purse
2019/03/26 全球购物
HOTEL INFO英国:搜索全球酒店
2019/08/08 全球购物
MaBelle玛贝尔香港官网:香港钻饰连锁店
2019/09/09 全球购物
介绍一下Prototype的$()函数,$F()函数,$A()函数都是什么作用?
2014/03/05 面试题
医药销售自荐书
2014/05/29 职场文书
小学班主任培训心得体会
2016/01/07 职场文书
goland 设置project gopath的操作
2021/05/06 Golang
python实现语音常用度量方法的代码详解
2021/05/25 Python