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合并数组array_merge函数运算符加号与的区别
Oct 31 PHP
8个出色的WordPress SEO插件收集
Feb 26 PHP
php设计模式 Observer(观察者模式)
Jun 26 PHP
wordpress自定义url参数实现路由功能的代码示例
Nov 28 PHP
PHP随机生成随机个数的字母组合示例
Jan 14 PHP
单台服务器的PHP进程之间实现共享内存的方法
Jun 13 PHP
php中addslashes函数与sql防注入
Nov 17 PHP
3种方法轻松处理php开发中emoji表情的问题
Jul 18 PHP
PHP中上传文件打印错误错误类型分析
Apr 14 PHP
php常用日期时间函数实例小结
Jul 04 PHP
php装饰者模式简单应用案例分析
Oct 23 PHP
一文搞懂php的垃圾回收机制
Jun 18 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转成EXE文件
2006/10/09 PHP
PHP实现在线阅读PDF文件的方法
2015/06/17 PHP
对比分析php中Cookie与Session的异同
2016/02/19 PHP
简单谈谈PHP中的include、include_once、require以及require_once语句
2016/04/23 PHP
PHP简单实现遍历目录下特定文件的方法小结
2017/05/22 PHP
php实现将二维关联数组转换成字符串的方法详解
2017/07/31 PHP
在 PHP 和 Laravel 中使用 Traits的方法
2019/11/13 PHP
Javascript实例教程(19) 使用HoTMetal(1)
2006/12/23 Javascript
对setInterval在火狐和chrome切换标签产生奇怪的效果之探索,与解决方案!
2011/10/29 Javascript
JAVASCRIPT车架号识别/验证函数代码 汽车车架号验证程序
2012/01/08 Javascript
js获取 type=radio 值的方法
2014/05/09 Javascript
js中定义一个变量并判断其是否为空的方法
2014/05/13 Javascript
jQuery实现仿腾讯微博滑出效果报告每日天气的方法
2015/05/11 Javascript
JavaScript高级程序设计(第三版)学习笔记6、7章
2016/03/11 Javascript
浅谈React + Webpack 构建打包优化
2018/01/23 Javascript
基于vue cli重构多页面脚手架过程详解
2018/01/23 Javascript
vue 父组件调用子组件方法及事件
2018/03/29 Javascript
vue相关配置文件详解及多环境配置详细步骤
2020/05/19 Javascript
[01:06:18]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第二场 1月26日
2021/03/11 DOTA
python分布式环境下的限流器的示例
2017/10/26 Python
对TensorFlow的assign赋值用法详解
2018/07/30 Python
简单谈谈python基本数据类型
2018/09/26 Python
django 实现celery动态设置周期任务执行时间
2019/11/19 Python
基于Python获取照片的GPS位置信息
2020/01/20 Python
Python pip安装第三方库实现过程解析
2020/07/09 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
2021/01/09 Python
使用CSS3实现一个3D相册效果实例
2016/12/03 HTML / CSS
临床医学专业个人的自我评价
2013/09/27 职场文书
英语专业职业生涯规划范文
2014/03/05 职场文书
竞赛口号大全
2014/06/16 职场文书
大学生就业自荐书
2014/06/16 职场文书
《中国梦我的梦》大学生演讲稿
2014/08/20 职场文书
党员民主评议总结
2014/10/20 职场文书
2015年市场营销工作总结
2015/07/23 职场文书
React 并发功能体验(前端的并发模式)
2021/07/01 Javascript
关于python pygame游戏进行声音添加的技巧
2021/10/24 Python