TCPDF在html中更改字体

时间:2014-04-22 13:44:01

标签: php html fonts tcpdf

我转换了我需要的.ttf字体(3个文件),并将它们包含在tcpdf fonts文件夹中。

当我使用经典的$pdf->SetFont();调用时,它的工作正常,但问题是我不知道如何更改html中的字体,稍后使用$pdf->writeHTML();调用

我们称之为字体 X

例如:

$pdf->SetFont('DejaVu Sans','',10);

$html = '
<table>
<tr>
<td><span style="font-family:X;"></span></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
';

$pdf->writeHTML($html, true, false, true, false, '');

我想要的是在所有文档中使用dejavu sans字体,但第一个<span>标记内的<td>除外,我需要字体 X 。我尝试使用font-family属性,但到目前为止它还不起作用。

4 个答案:

答案 0 :(得分:2)

只有一个writeHTML,你无法做到这一点。如果您想要真正的HTML到PDF转换,可以使用DomPDF。

请注意,您可以使用多个writeHTML()函数来执行此操作,但很难正确放置您的文字。

答案 1 :(得分:0)

<font face="Arial" >Test تست </font>

更改Html中的字体

答案 2 :(得分:0)

截至2019年,接受的答案不再正确。简而言之-如今可以使用!

我已经在 TCPDF 6.2.9 中测试了以下示例:

$pdf->AddFont('PTSans', '', 'ptsans.php');
$pdf->AddFont('DejaVuSans', '', 'dejavusans.php')

/* Setting the font family: */
$pdf->setFont('PTSans', '', 9);

/* outputting with writeHTMLCell, which internally calls MultiCell(), 
 * which in turn uses writeHTML() for HTML 
 */
$pdf->writeHTMLCell(100, 10, '', '', '<span style="font-family:DejaVuSans;">А</span>A (<span style="font-family:DejaVuSans;">Ö</span>Ö)')

我看到以下内容(截图)

enter image description here

请注意,我尝试将字体系列名称写为DejaVuSans,dejavusans,Deja Vu Sans,“ Deja Vu Sans”(带引号)—所有这些工作,只要字体具有所需的字符即可。我想TCPDF会小写字体家族并从中删除空格。

答案 3 :(得分:0)

$pdf = new TCPDF('P', 'px', $defaultSize, true, 'UTF-8', false);
$pdf->SetCreator('abcd.com');
$pdf->SetAuthor('Viraj');
$pdf->SetTitle('HTML Pages');
$pdf->SetMargins(0,0,0);
$pdf->SetHeaderMargin(0);
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
$pdf->setPrintFooter(false);
$pdf->setPrintHeader(false);
$pdf->SetAutoPageBreak(false, 0);
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
$pdf->SetAutoPageBreak(true, 0);
$pdf->AddPage(null;
$pdf->setPageMark();
$pdf->SetFontSize(12);

//Load font front file path url
$fontname = TCPDF_FONTS::addTTFfont('/Users/Work/storage/app/public/Arial regular.ttf', '', '', 32);
echo $fontname;//"arial" use this font in html code
$pdf->AddFont($fontname, '', 14, '', false);

//Load font front file path url
$fontname_ = TCPDF_FONTS::addTTFfont('/Users/Work/storage/app/public/BebasNeue-Regular.ttf', '', '', 32);
echo $fontname;//"bebasneue" use this font in html code
$pdf->AddFont($fontname_, '', 14, '', false);

//HTML code start
$html = '<table border="0" cellpadding="10" style="width: 100%;"  >';
$html .= '<tr nobr="true" >';
$html .= '<td>';

//use loaded font here
$html .= '<font face="arial"  >The formatting rules are not configurable but are already optimized for the best possible output.</font>';
//use loaded font here
$html .= '<font face="bebasneue"  >The formatting rules are not configurable but are already optimized for the best possible output.</font>';

$html .= '</td>';
$html .=   "</tr>";
$html .=   "</table>";

//write html into pdf
$pdf->writeHTML($html);

//save file in output path
$filePath = storage_path('app/public/samplePDF.pdf");  
echo "PDF File - ".$filePath;
$pdf->Output($filePath, 'F');

基本上我们需要使用标签 <font face="bebasneue" ></font> 将加载的字体应用到 HTML 代码中。