溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么在php中利用mpdf指定字段配置字體樣式

發(fā)布時(shí)間:2021-03-24 16:05:26 來(lái)源:億速云 閱讀:279 作者:Leah 欄目:開(kāi)發(fā)技術(shù)

怎么在php中利用mpdf指定字段配置字體樣式?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

mpdf

composer required kartik-v/yii2-mpdf

有一個(gè)需求要求導(dǎo)出的pdf中需要將一個(gè)指定的字段設(shè)置為一個(gè)指定的字體,其他的信息不使用此字體

剛開(kāi)始我直接將mpdf的fontdata加上我需要加上的字體文件

//配置字體目錄
'fontDir' => array_merge($fontDirs, [
 Yii::getAlias('@common/pdf/fonts'),
]),
//配置字體
'fontdata' => ArrayHelper::merge($fontData, [
 'sun-exta' => [
  'R' => 'my.ttf',
  'sip-ext' => 'sun-extb',
 ]
]),

但是當(dāng)我配置了如上配置之后發(fā)現(xiàn),pdf的所有信息都變成了這個(gè)指定的字體,原來(lái)這是全局配置字體

那么我又想到我配置一個(gè)無(wú)需要使用的字體,然后在頁(yè)面上引用不就行了嗎

于是我配置了一個(gè)字體:

'fontdata' => ArrayHelper::merge($fontData, [ 
 'my' => [
  'R' => 'my.ttf',
 ],
]),

配置之后在我們需要生成的pdf的文件中加上如下屬性

加上之后進(jìn)行測(cè)試

但是發(fā)現(xiàn):

怎么在php中利用mpdf指定字段配置字體樣式

我的其他信息變成了一個(gè)個(gè)小方塊

看樣子這是由于我沒(méi)有進(jìn)行設(shè)置我的全局字體,于是我又進(jìn)行了全局字體配置

如下:

//配置字體文件目錄
 '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',
 ],
]),

配置完成之后發(fā)現(xiàn)沒(méi)有作用,于是在需要生成的pdf文件中引入全局字體樣式

body { font-family: sun-exta;}

引入之后發(fā)現(xiàn)成功

怎么在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 = '測(cè)試pdf.pdf';
return $pdf->output($content, $fileName, Pdf::DEST_DOWNLOAD);

看完上述內(nèi)容,你們掌握怎么在php中利用mpdf指定字段配置字體樣式的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI