使用php中文截取函数,而不是英文截取函数:
/** * @param $text * @return string * 字体大小自适应 */ public static function adapteText($text, $cols=4){ $mb_str_len = $cols * 1.5; $adapteText = ''; if(mb_strlen($text, 'utf-8')>=$mb_str_len*1.5){ $adapteText = '<span style="font-size: 9px; margin: 0;">'.mb_substr($text, 0, floor($mb_str_len*1.5), 'utf-8').'</span>'; }elseif(mb_strlen($text, 'utf-8')>=$mb_str_len*1.2){ $adapteText = '<span style="font-size: 10px; margin: 0;">'.mb_substr($text, 0, floor($mb_str_len*1.2), 'utf-8').'</span>'; }elseif (mb_strlen($text, 'utf-8')>=$mb_str_len){ $adapteText = '<span style="font-size: 11px; margin: 0;">'.$text.'</span>'; }else{ $adapteText = $text; } return $adapteText; }
等级和等级自适应出库函数:
/** * @param $print_info * 向tcpdf模板写入等级和等级备注信息 */ public function writeGradeInfo($print_info){ $x = 2.8 * \core\components\PrintHelper::KX; $y = 10.2 * \core\components\PrintHelper::KY; $w = 2 * \core\components\PrintHelper::KW; $h = 0.4 * \core\components\PrintHelper::KH; if (!empty($print_info['detail_list'])){ foreach ($print_info['detail_list'] as $key => $detail_info){ $grade_info_name = isset($detail_info['grade_info_name']) ? $detail_info['grade_info_name'] : ''; $grade_describe = isset($detail_info['grade_describe']) ? $detail_info['grade_describe'] : ''; if (!empty($grade_describe)){ $this->SetFont('msyh', '', 8); $grade_info_name = mb_substr($grade_info_name, 0, 9, 'UTF-8'); $grade_describe = mb_substr($grade_describe, 0, 9, 'UTF-8'); $this->writeHTMLCell($w, $h, $x, $y + $key * \core\components\PrintHelper::KY, $grade_info_name, 0, 0, 0, 'R', 'T'); $this->writeHTMLCell($w, $h, $x, $y + $key * \core\components\PrintHelper::KY + $h, $grade_describe, 0, 0, 0, 'R', 'T'); }else{ if (mb_strlen($grade_info_name, 'UTF-8') <= 6){ $this->SetFont('msyh', '', 12); $this->writeHTMLCell($w, $h, $x, $y + $key * \core\components\PrintHelper::KY, $grade_info_name, 0, 0, 0, 'R', 'M'); }elseif (mb_strlen($grade_info_name, 'UTF-8') <= 8){ $this->SetFont('msyh', '', 10); $this->writeHTMLCell($w, $h, $x, $y + $key * \core\components\PrintHelper::KY, $grade_info_name, 0, 0, 0, 'R', 'M'); }else{ $this->SetFont('msyh', '', 8); $grade_info_name = mb_substr($grade_info_name, 0, 18, 'UTF-8'); $this->writeHTMLCell($w, $h, $x, $y + $key * \core\components\PrintHelper::KY, $grade_info_name, 0, 0, 0, 'R', 'T'); } } } } $this->SetFont('msyh', '', 12); }