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:风雨欲来 路在何方?
Oct 09 PHP
Could not load type System.ServiceModel.Activation.HttpModule解决办法
Dec 29 PHP
PHP swfupload图片上传的实例代码
Sep 30 PHP
PHP $_FILES中error返回值详解
Jan 30 PHP
删除html标签得到纯文本可处理嵌套的标签
Apr 28 PHP
Symfony模板的快捷变量用法实例
Mar 17 PHP
PHP的全局错误处理详解
Apr 25 PHP
微信随机生成红包金额算法php版
Jul 21 PHP
php下载文件,添加响应头的简单实例
Sep 22 PHP
Laravel 队列使用的实现
Jan 08 PHP
PHP实现的文件浏览器功能简单示例
Sep 12 PHP
phpquery中文手册
Mar 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 mssql 日期出现中文字符的解决方法
2009/03/10 PHP
PHP模块 Memcached功能多于Memcache
2011/06/14 PHP
CI使用Tank Auth转移数据库导致密码用户错误的解决办法
2014/06/12 PHP
PHP Post获取不到非表单数据的问题解决办法
2018/02/27 PHP
使用composer安装使用thinkphp6.0框架问题【视频教程】
2019/10/01 PHP
laravel 自定义常量的两种方案
2019/10/14 PHP
javascript flash下fromCharCode和charCodeAt方法使用说明
2008/01/12 Javascript
jquery之Document元素选择器篇
2008/08/14 Javascript
小型js框架veryide.librar源代码
2009/03/05 Javascript
JavaScript函数的4种调用方法详解
2014/04/22 Javascript
轻松创建nodejs服务器(4):路由
2014/12/18 NodeJs
javascript实现俄罗斯方块游戏的思路和方法
2015/04/27 Javascript
jQuery实现的背景动态变化导航菜单效果
2015/08/24 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
2016/11/21 Javascript
BootStrap实现响应式布局导航栏折叠隐藏效果(在小屏幕、手机屏幕浏览时自动折叠隐藏)
2016/11/30 Javascript
seajs模块压缩问题与解决方法实例分析
2017/10/10 Javascript
vue2.0与bootstrap3实现列表分页效果
2017/11/28 Javascript
React降级配置及Ant Design配置详解
2018/12/27 Javascript
js逆向解密之网络爬虫
2019/05/30 Javascript
vue路由传参的基本实现方式小结【三种方式】
2020/02/05 Javascript
Python socket模块实现的udp通信功能示例
2019/04/10 Python
pandas DataFrame 行列索引及值的获取的方法
2019/07/02 Python
Django中reverse反转并且传递参数的方法
2019/08/06 Python
python 有效的括号的实现代码示例
2019/11/11 Python
Python for循环与getitem的关系详解
2020/01/02 Python
python pptx复制指定页的ppt教程
2020/02/14 Python
celery在python爬虫中定时操作实例讲解
2020/11/27 Python
Clarria化妆品官方网站:购买天然和有机化妆品系列
2018/04/08 全球购物
澳大利亚领先的皮肤诊所:Skin Matrix(抗衰老、痤疮专家、药妆护肤)
2018/05/20 全球购物
七夕活动策划方案
2014/08/16 职场文书
刑事上诉状(量刑过重)
2015/05/23 职场文书
实习单位鉴定意见
2015/06/04 职场文书
毕业论文指导老师意见
2015/06/04 职场文书
Mysql服务添加 iptables防火墙策略的方案
2021/04/29 MySQL
用Python爬取英雄联盟的皮肤详细示例
2021/12/06 Python
redis复制有可能碰到的问题汇总
2022/04/03 Redis