Мне нужно составить PDF с помощью pdflib версия 8
в том, что я хочу сделать определенные символы Unicode
Но они не отображаются.
Однако ниже символы отображаются
Мне интересно, какие могут быть возможные причины.
И как я должен отображать выше символов.
Ниже приведен код
$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);
Выход
Редактировать:
Пробовал использовать шрифт freesans вместо dejavu, но без изменений в выводе.
$fontdir = '/usr/share/fonts/truetype/freefont';
pdf_set_parameter($p, "FontOutline", "FreeSans=$fontdir/FreeSans.ttf");
$font = pdf_load_font($p, "FreeSans", "unicode","")
Вы можете решить свою проблему, используя шрифт, который содержит необходимые глифы. Когда вы проверяете страницу вашей связанной страницы «МАТЕМАТИЧЕСКИЙ ИТАЛИЯ МАЛЫЙ А», вы можете увидеть ссылку на «Шрифты, которые поддерживают U + 1D44E«:
Как видите, только несколько шрифтов поддерживают этот глиф, например «ДежаВу Сериф КурсивMsgstr «Когда я использую DejaVu Serif Italic (DejaVuSerif-Italic.ttf) из пакета DejaVu, я получаю ожидаемый результат:
Конечно, и другие шрифты могут поддерживать эти символы, и вы не ограничены только DejaVuSans Serif.
Только одна заметка к вашему коду: строка:
pdf_set_option($p, "textformat=utf8");
требуется PDFlib 9. Пожалуйста, используйте
PDF_set_parameter($p, "textformat", "utf8");
вместо.
Других решений пока нет …