Я столкнулся с проблемой создания pdf в php с помощью библиотеки TCPDF. Мне нужно правильно отобразить шрифт bangla. Я попытался добавить шрифт bangla (то есть SolaimanLipi.ttf, SutonnyOMJ.ttf, Siyamrupali.ttf, Nikosh.ttf и т. Д.). Я вижу шрифт bangla в формате pdf, но шрифт отображается неправильно. Его неуместное слово.
Добавив этот шрифт, я вижу, что в каталоге / fonts / успешно создан 3 файла «solaimanlipi.ctg.z», «solaimanlipi.php» и «solaimanlipi.z». Так же как я могу видеть шрифт bangla в формате pdf, но этот шрифт неуместен / разбросан. Я прикрепляю фотографию, что я на самом деле вижу.
Вот как это должно выглядеть (из снимка экрана браузера):
Вот код для показа выше результата:
<?php $strData = file_get_contents('./data3.txt'); ?> <html lang="en" dir="ltr"> <head> <meta charset="utf-8" /> <style> @font-face { font-family: myUniFont; src: url(./SolaimanLipi_22-02-2012.ttf); } </style> </head> <body> <span style="font-family: myUniFont;"><?php echo $strData; ?></span> </body> </html>
Я использую ниже код, чтобы использовать тот же самый шрифт в моем pdf:
$strBNFont = TCPDF_FONTS::addTTFfont('./SolaimanLipi_22-02-2012.ttf', 'TrueTypeUnicode', '', 32); $pdf->SetFont($strBNFont, '', 8, '', 'false');
И так оно выглядит в формате PDF: 🙁
Пожалуйста, советую мне, как правильно отобразить шрифт bangla.
EDIT # 1
Вау! ;( О, МОЙ БОГ!
Уважаемый господин, проблема не в библиотеке pdf / tcPDF, ни даже в файле шрифта.
пожалуйста, проверьте приведенный ниже код php:
<?php header('Content-type: image/png'); $text = 'তোমাদের জন্য মুক্তিযুদ্ধের গল্প'; $font = './Fonts/SolaimanLipi_22-02-2012.ttf'; $im = imagecreatetruecolor(600, 300); $bg_color = imagecolorallocate($im, 255, 255, 255); $font_color = imagecolorallocate($im, 0, 0, 0); imagefilledrectangle($im, 0, 0, 599, 299, $bg_color); imagettftext($im, 20, 0, 10, 50, $font_color, $font, $font); imagettftext($im, 20, 0, 10, 120, $font_color, $font, $text); imagepng($im); imagedestroy($im); ?>
это как он экспортирует / отображает png-изображение в браузере:
когда я пытаюсь распечатать текст в файле изображения, используя функцию imagettftext, он также нарушил символ 🙁
так как я уверен, что это не проблема с шрифтом, потому что я только что протестировал с 60 + шрифтами и все сломалось. В то время как браузер (html-код) показывает их очень правильно.
так что, я думаю, что это намного больше, чем мой мозг может содержать / обрабатывать;
так, эксперт, как вы, может только выход 🙂
еще раз спасибо за ваше время
TCPDF сам по себе не может обрабатывать скрипты Брахма .
Я опубликовал аналогичные для других языков: Как я могу создать Malayalam PDF с использованием TCPDF в PHP?
Я считаю, что mPDF поддерживает ваш текст на основе этого файла примера: http://mpdf1.com/examples/example_utf8.pdf
Я бы предложил попробовать mPDF , если вы не настроены на TCPDF. Это определенно проще, если вы можете заставить его работать, чем метод, который я собираюсь описать.
Еще одна альтернатива, хотя, на мой взгляд, гораздо сложнее использовать ImageMagick с Pango, чтобы сделать ваш текст в виде изображений, а затем включить его в PDF. Это отличается от обычного рендеринга шрифтов ImageMagick, который, как вы видели, так же сломан для вашего использования. Я включаю это больше из академического интереса, я бы не стал предлагать это делать, если вы не найдете веских оснований для этого.
В основном я должен был сделать это из оболочки после установки ImageMagick с поддержкой Pango:
#Install font for my user. cp /host/SolaimanLipi_22-02-2012.ttf .fonts #update the font-config cache fc-cache #Render the text with pango convert -background white -size 400x pango:@/host/bangali.txt /host/out.gif
Где /host/bangali.txt
содержится <span font='18.5'>তোমাদের জন্য মুক্তিযুদ্ধের গল্প</span>
*
Который тогда делает вывод таким образом, который, по моему мнению, по крайней мере в основном правилен:
Это связано с тем, что механизм формирования Pango способен это сделать. Есть несколько предостережений, хотя сделать это таким образом. Не последним из которых является получение font-config для правильной работы с CGI или mod_php, что выполнимо, но сложно в моем опыте.
font-config
нашел и использовал тот, который я установил.