嵌入在tcpdf中的font-awesome图标

时间:2015-03-10 08:13:20

标签: twitter-bootstrap font-awesome tcpdf

我正在使用TCPDF构建项目的打印输出。输出包括文本,表格和图像。我想在TCPDF引导程序样式中嵌入font-awesome图标,例如:

<i class="fa fa-fw fa-warning fa-lg text-warning"></i>

以上行输出带引导样式的感叹号(!)图标。 任何人都可以告诉我这是否可行?如果是的话,你能告诉我怎么做。

2 个答案:

答案 0 :(得分:2)

Font Awesome正在使用CSS&#39;内容&#39;在<i>标记的位置插入字符的属性。

我不认为TCPDF支持CSS属性。

我使用TCPDF的addTTFfont函数添加了Font Awesome支持,然后使用了以下代码:

<span style="font-family:FontAwesome;font-size: 2em;">&#xf0a4;</span>

而不是使用<i>标记。字符的十六进制代码位于Font Awesome的CSS文件中,例如

.fa-hand-o-right:before {
    content: "\f0a4"
}

答案 1 :(得分:0)

以下是完整的步骤(windows),如何在通过TCPDF呈现的PDF文件中使用超棒的字体图标:

  1. 获取TrueType文件FontAwesome.ttf。该文件需要通过与TCPDF一起提供的TCPDF实用工具tcpdf_addfont.php进行编译。

  2. FontAwesome.ttf放入目录/tcpdf/tools/FontAwesome.ttf。在此目录中还应该包含实用程序文件tcpdf_addfont.php

  3. 现在我假设您的命令行可以与PHP一起正常使用。打开命令行控制台,然后键入php -v,以检查是否已正确配置PHP CLI安装。如果是,您应该在控制台中看到您的PHP版本输出。

  4. 执行CLI命令:

php ./tcpdf_addfont.php -b -t TrueTypeUnicode -f 32 -i FontAwesome.ttf

这将执行PHP并将FontAwesome.ttf编译为三个输出文件,这些文件将 默认情况下放置在tcpdf/fonts/fontawesome.*下。新添加的文件应为 fontawesome.phpfontawesome.ctg.zfontawesome.z

  1. 使用HTML方法将图标插入PDF:
// make sure "FontAwesome" is compiled truetype font family name 
// in compiled file `tcpdf/fonts/fontawesome.php` - find line name='FontAwesome';
$pdf->AddFont('FontAwesome', '');
$pdf->SetFont('FontAwesome', '', 14, '', true);

// following works:
$pdf->SetFont('FontAwesome');
$pdf->writeHTML("&#xf03e;"); // single icon
$pdf->writeHTML("2 icons: &#xf0a4; &#xf03e;"); // text "2 icons:" will show invalid chars
$pdf->writeHTMLCell("&#xf0a4;&#xf01d;&#xf03e;"); // three icons

// following does not work:
$pdf->SetFont('FontAwesome', '', 14, '', true);
// $pdf->Cell(0, 0, "\\xf0\xa4"); 
// $pdf->MultiCell(0, 0, "&#xf03e;");
// mixing up non-font awesome text and normal text does not work either
// $pdf->writeHTML("<span style='font-family:FontAwesome;'> &#xf0a4; </span>");

// after icons inserted, switch back to normal legible font
$pdf->SetFont('opensans', ''); 
$pdf->Cell(0, 0, "Continue normal text ..");

最后的笔记:

  • 插入只能通过 HTML方法writeHtmlwriteHtmlCell)进行。无法找出标准方法Cell, MultiCell ..
  • 一旦您设置了$pdf->SetFont('FontAwesome');,您就无法与普通的易读文本混淆-这些字符将显示为不易辨认的正方形。
  • 关闭仅嵌入字体子集。似乎仅包含字体子集会损坏FontAwesome图标。有用的选项:
// disallow font subsets for all fonts (before adding first page)
$pdf->setFontSubsetting(false); 
// or disallow font subset only for font awesome (first load)
$pdf->SetFont('FontAwesome', '', 20, '', false);
  • 嵌入FontAwesome将55 kb(3.2.1版)或125 kB(4.7.0版)文件添加到PDF文件中