2013-12-04 2 views
2

Я хотел бы использовать fontawesome в формате pdf. Я создаю свой pdf-файл, используя php-библиотеку fpdf и встраивание шрифтов. Однако я не могу заставить его работать.Можно встроить шрифтовый шрифт в fpdf?

Я использую этот инструмент для создания AFM файла: http://fpdf.fruit-lab.de/

Но когда я пытаюсь использовать fontawesome я всегда получаю белый квадрат вместо иконки.

Я использую этот синтаксис, чтобы добавить значок:

MultiCell(0,8,"\uF000 ",0,'C') 

enter image description here

ответ

1

Я не могу отвечать за FPDF, так как я никогда не использовал его. Тем не менее, я использую mPDF, и там я регулярно использую font-size: никаких проблем. Единственное, что я должен убедиться, это то, что содержимое, которое я выводил в документ PDF (mPDF принимает это в виде разметки HTML), должно быть закодировано в UTF8.

mPDF очень хорошо, поэтому, если вы находитесь на ранней стадии своего проекта, вы можете просто подумать о переходе на него. В противном случае стоит изучить, не слишком ли вы используете проблему кодирования UTF8.

+0

Благодарим за информацию. Я не могу переключиться на mPdf в этот момент моего проекта. Mpdf кажется основанным на fpdf, это позволяет мне думать, что, вероятно, это возможно и в fpdf.Если я могу спросить, встраивание шрифтов mpdf работает как fpdf? вы должны создать файл afm из fontawesome? какой инструмент вы используете для создания afm? – Tropicalista

+0

Поскольку mpdf 5, около 3 лет назад, больше не нужно преобразовывать файлы шрифтов в специальный формат. Я просто использую вариант TTF font-size. Надеюсь это поможет. – DroidOS

+0

@DroidOS не могли бы вы объяснить, как использовать fontawesome в mpdf? Заранее спасибо – arilia

2

Я понял это несмотря на то, что эта тема старше года. Это is можно использовать шрифт-awesome, хотя вы можете использовать до 256 символов для каждого подмножества. Я создал несколько карт символов, чтобы охватить все глифы как шрифта awesome версии 4.3.0. Вы просто используете карту, которая содержит символы, которые вы собираетесь использовать, или вы можете сделать три ее подмножества. Это не обязательно так же хорошо, как и другие решения, но fPDF по-прежнему намного быстрее, чем некоторые из альтернатив, потому что в нем отсутствуют многие более современные функции, такие как поддержка Unicode.

Во-первых, вам нужно использовать ttf2pt1 для создания файла AFM для шрифта.

ttf2pt1 -a fontawesome-webfont.ttf fontawesome-webfont 

Я сделал три копии WebFont запустить через makefont.php и использовал каждую кодировку на соответствующем шрифте.

require "makefont.php"; 

    makefont('fontawesome-webfont1.ttf','fa1.map'); 
    makefont('fontawesome-webfont2.ttf','fa2.map'); 
    makefont('fontawesome-webfont3.ttf','fa3.map'); 

Чтобы использовать их в FPDF, положить файлы, созданные в папке шрифтов и добавить их как это:

$pdf->AddFont('FA1','',fontawesome-webfont1.php); 
    $pdf->AddFont('FA2','',fontawesome-webfont2.php); 
    $pdf->AddFont('FA3','',fontawesome-webfont3.php); 

Затем вы используете номер символа для отображения глифа для соответствующего подмножества шрифта -здорово. Три шрифт карты выше, содержит число символов для использования:

$pdf->SetFont('FA1','',14); 

    $WineGlass = chr(32); 

    $pdf->Cell(40,10,$WineGlass); 

Я также сделал карту генератор символов, который будет показывать число символов ниже глифов.

<?php 

    require_once($_SERVER['DOCUMENT_ROOT'] . '/pdf/fpdf.php'); 

    // Establish/Get variables 

    function GETVAR($key, $default = null, $prefix = null, $suffix = null) { 
     return isset($_GET[$key]) ? $prefix . $_GET[$key] . $suffix : $prefix . $default . $suffix; 
    } 

    $font = GETVAR('font','fontawesome-webfont1','','.php'); 

    $pdf = new FPDF('L','mm',array(268.33,415.3)); 

    $pdf->AddPage(); 
    $pdf->SetMargins(0,0,0); 
    $pdf->SetAutoPageBreak(0,0); 
    // add custom fonts 

    $pdf->AddFont('H','','helvetica.php'); 

    $pdf->AddFont('FA','',$font); 

    $pdf->SetFillColor(200,200,200); 

    $pdf->SetXY(9,9); 

    for ($i = 32; $i <= 256; $i++) { 

     $y = $pdf->GetY(); 
     $x = $pdf->GetX(); 

     $pdf->SetX($x); 
     $pdf->SetTextColor(0, 0, 0); 
     $pdf->SetFont('FA','',14); 
     $pdf->Cell(12,12,chr($i),1,0,'C'); 

     $pdf->SetXY($x,$y+12); 

     $pdf->SetTextColor(0, 0, 0); 
     $pdf->SetFont('H','',14); 
     $pdf->Cell(12,12,$i,1,0,'C',1); 

     $y = $pdf->GetY(); 
     $x = $pdf->GetX(); 

     $pdf->SetXY($x,$y-12); 

     if ($x > 400) { 
     $pdf->SetXY(9,$y+14);  
     } 

     if ($i == 328){ 
      $pdf->AddPage(); 
     } 

    } 

    $pdf->Output("charmap.pdf",'I'); 
+0

попробовал это с шрифтом awesome 4.5, и я просто получаю квадраты. не могли бы вы объяснить, как вы сделали файлы карт, чтобы я мог попытаться сделать новые для последнего шрифта удивительным? – xeo

+0

Файлы карты теперь задокументированы на моей [wiki] (https://deweyartdesign.com/wiki/code/fpdf) – dmdewey

+0

Они были созданы вручную, исследуя текущие файлы карт и сравнивая карты с соответствующими файлами/картами шрифтов. Я много экспериментировал, пока не понял. – dmdewey

Смежные вопросы