Я использую mPDF для создания payslips. Однако значки в payslip не отображаются после его создания. Он просто оставляет пустое пространство именно так:
Значки должны отображаться на этих выделенных местах. До сих пор вот что я сделал:
Я использую фреймворк Yii2 PHP и вот мой контроллер действия:
public function actionPdf($id) { $model = $this->findModel($id); $earnings = EarningDetails::find()->where(['payslip_id' => $model->_id, 'status' => 1])->all(); $deductions = DeductionDetails::find()->where(['payslip_id' => $model->_id, 'status' => 1])->all(); $html = $this->render('view', [ 'model' => $model, 'earnings' => $earnings, 'deductions' => $deductions, ]); $mpdf = new mPDF('c','A5-L','0','',0,4,1,1,0,0); $mpdf->allow_charset_conversion = true; $mpdf->charset_in = 'windows-1252'; $mpdf->SetTopMargin(0); $user_password = User::find()->where(['_id' => $model->user_id ])->one(); $password = $user_password->fname.$user_password->lname; $mpdf->SetProtection(array(), $password, $password); $mpdf->WriteHTML($html); $mpdf->Output('Payslip.pdf', 'D'); exit; }
Я что-то упускаю? Пожалуйста, дайте мне знать.
Кодирование вопросов в стороне, это может быть несколько вещей. Во-первых, вам необходимо интегрировать FontAwesome с установкой MPDF. Во-вторых, вам нужно подумать о том, как вы выражаете глиф в HTML.
Загрузите или клонируйте FontAwesome с https://github.com/FortAwesome/Font-Awesome и скопируйте шрифты / fontawesome-webfont.ttf в каталог MPDF ttfonts / .
В файле MDPF config_fonts.php добавьте следующие строки в $this->fontdata
:
/* FontAwesome */ "fontawesome" => array( 'R' => "fontawesome-webfont.ttf" ),
Вам нужно иметь в виду, что CSS :before
псевдоселектором, обычно используемым для добавления глифов FontAwesome в HTML, не работает в mPDF.
Плохо:
<i class="fa fa-smile-o"></i>
… потому что это правило CSS FontAwesome не работает в mPDF:
.fa-smile-o:before { content: "\f118"; }
Хорошо:
<i class="fa"></i>
Вы можете получить кодовую точку Юникода для каждого глифа, щелкнув по нему в списке значков FontAwesome, но Cheatsheet более удобен для этого.