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来自动调用不同服务器上的flash
Oct 09 PHP
pw的一个放后门的方法分析
Oct 08 PHP
php下使用iconv需要注意的问题
Nov 20 PHP
Yii框架form表单用法实例
Dec 04 PHP
PHP实现支持SSL连接的SMTP邮件发送类
Mar 05 PHP
php结合curl实现多线程抓取
Jul 09 PHP
PHP使用Pthread实现的多线程操作实例
Nov 14 PHP
谈谈 PHP7新增功能
Dec 16 PHP
PHP中key和current,next的联合运用实例分析
Mar 29 PHP
thinkPHP自定义类实现方法详解
Nov 30 PHP
laravel Validator ajax返回错误信息的方法
Sep 29 PHP
有关PHP 中 config.m4 的探索
Aug 26 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判断搜索引擎蜘蛛并自动记忆到文件的代码
2012/02/04 PHP
利用php递归实现无限分类 格式化数组的详解
2013/06/08 PHP
关于svn冲突的解决方法
2013/06/21 PHP
php实现三级级联下拉框
2016/04/17 PHP
thinkPHP5.0框架URL访问方法详解
2017/03/18 PHP
浅谈关于PHP解决图片无损压缩的问题
2017/09/01 PHP
a标签的css样式四个状态
2021/03/09 HTML / CSS
javascript常用方法、属性集合及NodeList 和 HTMLCollection 的浏览器差异
2010/12/25 Javascript
Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
2011/10/29 Javascript
JS获取当前日期和时间的简单实例
2013/11/19 Javascript
JS 使用for循环遍历子节点查找元素
2014/09/06 Javascript
Node.js事件驱动
2015/06/18 Javascript
JS实现获取当前URL和来源URL的方法
2016/08/24 Javascript
vue自定义指令实现v-tap插件
2016/11/03 Javascript
以v-model与promise两种方式实现vue弹窗组件
2018/05/21 Javascript
ng-zorro-antd 入门初体验
2018/12/03 Javascript
Python 命令行参数sys.argv
2008/09/06 Python
Python脚本判断 Linux 是否运行在虚拟机上
2015/04/25 Python
python使用xmlrpclib模块实现对百度google的ping功能
2015/06/02 Python
python 实现数组list 添加、修改、删除的方法
2018/04/04 Python
解决python Markdown模块乱码的问题
2019/02/14 Python
Tensorflow与Keras自适应使用显存方式
2020/06/22 Python
浅析Python 中的 WSGI 接口和 WSGI 服务的运行
2020/12/09 Python
使用Html5、CSS实现文字阴影效果
2018/01/17 HTML / CSS
图片上传插件ImgUploadJS:用HTML5 File API 实现截图粘贴上传、拖拽上传
2016/01/20 HTML / CSS
美国珠宝店:Helzberg Diamonds
2018/10/24 全球购物
什么是smarty? Smarty的优点是什么?
2013/08/11 面试题
SQL面试题
2013/12/09 面试题
2014年教师培训的自我评价
2014/01/03 职场文书
《草虫的村落》教学反思
2014/02/16 职场文书
读群众路线的心得体会
2014/09/03 职场文书
2014公司党员自我评价范文
2014/09/11 职场文书
财务工作检讨书
2014/10/29 职场文书
2015初一年级组工作总结
2015/07/24 职场文书
python实现简易名片管理系统
2021/04/11 Python
使用Selenium实现微博爬虫(预登录、展开全文、翻页)
2021/04/13 Python