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写的serv-u的web申请账号的程序
Oct 09 PHP
PHP使用imagick读取PDF生成png缩略图的两种方法
Mar 20 PHP
php生成随机密码自定义函数代码(简单快速)
May 10 PHP
PHP学习笔记(一) 简单了解PHP
Aug 04 PHP
php获取url参数方法总结
Nov 13 PHP
PHP实现将浏览历史页面网址保存到cookie的方法
Jan 26 PHP
PHP数组操作类实例
Jul 11 PHP
WordPress中访客登陆实现邮件提醒的PHP脚本实例分享
Dec 14 PHP
100多行PHP代码实现socks5代理服务器[2]
May 05 PHP
Yii2分页的使用及其扩展方法详解
May 23 PHP
php封装的pdo数据库操作工具类与用法示例
May 08 PHP
解决Laravel5.5下的toArray问题
Oct 15 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
第十一节--重载
2006/11/16 PHP
删除及到期域名的查看(抢域名必备哦)
2008/05/14 PHP
cssQuery()的下载与使用方法
2007/01/12 Javascript
用JS实现一个页面多个css样式实现
2008/05/29 Javascript
JS在textarea光标处插入文本的小例子
2013/03/22 Javascript
js判断客户端是iOS还是Android等移动终端的方法
2013/12/11 Javascript
js 立即调用的函数表达式如何写
2014/01/12 Javascript
javascript删除数组重复元素的方法汇总
2015/06/24 Javascript
javascript设置页面背景色及背景图片的方法
2015/12/29 Javascript
Seajs 简易文档 提供简单、极致的模块化开发体验
2016/04/13 Javascript
jquery 全选、全不选、反选效果的实现代码【推荐】
2016/05/05 Javascript
从零开始学习Node.js系列教程二:文本提交与显示方法
2017/04/13 Javascript
JavaScript实现区块链
2018/03/14 Javascript
Vue中用props给data赋初始值遇到的问题解决
2018/11/27 Javascript
详解vue-cli+es6引入es5写的js(两种方法)
2019/04/19 Javascript
解决Vue在Tomcat8下部署页面不加载的问题
2019/11/12 Javascript
js制作提示框插件
2020/12/24 Javascript
[14:51]DOTA2 HEROS教学视频教你分分钟做大人-卓尔游侠
2014/06/13 DOTA
Python设置Socket代理及实现远程摄像头控制的例子
2015/11/13 Python
浅谈django开发者模式中的autoreload是如何实现的
2017/08/18 Python
Python竟能画这么漂亮的花,帅呆了(代码分享)
2017/11/15 Python
详解TensorFlow在windows上安装与简单示例
2018/03/05 Python
python实现整数的二进制循环移位
2019/03/08 Python
详解Python中的正斜杠与反斜杠
2019/08/09 Python
学点简单的Django之第一个Django程序的实现
2021/02/24 Python
爱尔兰最大的体育零售商:Life Style Sports
2019/06/12 全球购物
俄罗斯韩国化妆品网上商店:Cosmasi.ru
2019/10/31 全球购物
计算机专业毕业生自荐信
2013/12/31 职场文书
学习十八大报告感言
2014/02/04 职场文书
餐饮企业总经理岗位职责范文
2014/02/18 职场文书
疾病捐款倡议书
2014/05/13 职场文书
2014年9.18纪念日演讲稿
2014/09/14 职场文书
大型主题婚礼活动策划方案
2014/09/15 职场文书
2014年档案室工作总结
2014/12/01 职场文书
详解Java线程池是如何重复利用空闲线程的
2021/06/26 Java/Android
vue 实现弹窗关闭后刷新效果
2022/04/08 Vue.js