2016-01-21 1 views
0

Я конструкционный PDF с использованием в том, что pdflib version 8 Я хочу сделать некоторые символы ЮникодаPDFlib юникод символы не показывая

Но они не отображаются.

Однако ниже символы отображения

Мне интересно, что может быть возможные причины. И как я должен отображать символы выше.

Ниже приведен код

$p = PDF_new(); 

/* open new PDF file; insert a file name to create the PDF on disk */ 
if (PDF_begin_document($p, "", "") == 0) { 
    die("Error: " . PDF_get_errmsg($p)); 
} 
PDF_set_info($p, "Creator", "Abc"); 
PDF_set_info($p, "Author", "Abc"); 
PDF_set_info($p, "Title", "Test"); 
pdf_set_option($p, "textformat=utf8"); 

PDF_begin_page_ext($p, 595, 842, ""); 
$fontdir = '/usr/share/fonts/truetype/dejavu'; 
pdf_set_parameter($p, "FontOutline", "Dejavu=$fontdir/DejaVuSans.ttf"); 
$font = pdf_load_font($p, "Dejavu", "unicode",""); 

PDF_setfont($p, $font, 24.0); 
PDF_set_text_pos($p, 50, 700); 
pdf_show_xy($p,"dejb €",100,490); 
pdf_show_xy($p,"dejb ",200,490); 
PDF_end_page_ext($p, ""); 

PDF_end_document($p, ""); 

$buf = PDF_get_buffer($p); 
$len = strlen($buf); 

header("Content-type: application/pdf"); 
header("Content-Length: $len"); 
header("Content-Disposition: inline; filename=hello.pdf"); 
print $buf; 

PDF_delete($p); 

Выход

enter image description here

Edit:

попытался использовать FreeSans шрифт вместо Дежавю, но никаких изменений в т он выводит.

$fontdir = '/usr/share/fonts/truetype/freefont'; 
pdf_set_parameter($p, "FontOutline", "FreeSans=$fontdir/FreeSans.ttf"); 
$font = pdf_load_font($p, "FreeSans", "unicode","") 
+0

попробуйте использовать freesans вместо dejavusans – donald123

+0

@ donald123 no it dint work. никаких изменений в выходе. проверьте обновленный вопрос –

ответ

3

Вы можете решить вашу проблему, воспользовавшись шрифтом, содержащим требуемые глифы. При проверке страницы Вашей связанной страницы «МАТЕМАТИЧЕСКОЕ ITALIC МАЛЫХ А» вы можете увидеть ссылку на "Fonts that support U+1D44E„:

Как вы можете видеть, только несколько шрифтов поддерживают этот символ, например,“DejaVu Serif Italic ". Когда я использую DejaVu Serif Italic (DejaVuSerif-Italic.ttf) из пакета DejaVu я получаю ожидаемый результат:

enter image description here

Конечно также другие шрифты могут поддерживать эти глифы, и вы не ограничены DejaVuSans засечек.

Только одна нота в код: Строка:

pdf_set_option($p, "textformat=utf8"); 

требует PDFlib 9. Используйте

PDF_set_parameter($p, "textformat", "utf8"); 

вместо этого.

+0

Использование поддерживаемой справки устраняет проблему. Однако мой контент в динамике и требует, чтобы я менял между 'DevajuSerif-Italic' и' DejaVuSerif' каждые несколько символов. Один из способов решения этой проблемы - разбить строку и продолжить изменение шрифтов между подстроками. Есть ли элегантное решение? –

+0

вы можете использовать опцию 'fallbackfonts'. (см. образец starter_fallback.php в пакете или http://www.pdflib.com/ru/pdflib-cookbook/fonts/starter-fallback/). В этом случае вы можете указать шрифт, в котором также должны быть найдены отсутствующие глифы. – Rainer

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