все о веб-программировании и веб-дизайне
Русские шрифты в Pdf (Zend_Pdf)

Всем доброго времени суток. Вчера стояла передо мной задача экспорта данных, с использованием Zend Framework дело оказалось не очень сложным, благо что документация по Zend_Pdf хватает с лихвой, да и примеров в сети можно найти очень много. Но проблемы с кодировкой нигде не рассматриваются. Решил я этот вопрос методом перебора…
Перебирал я шрифты из папки fonts (Windows 7) и отрисовывал каждым русский текст. Что из этого вышло вы можете посмотреть на картинке. Исходный код представлен ниже:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <?php $pdf = new Zend_Pdf(); $page = $pdf->newPage(Zend_Pdf_Page::SIZE_A4); $path = 'C:\Windows\Fonts'; $fonts = opendir($path); $i = 0; $j = 0; while($a = readdir($fonts)) { if (('.' == $a) or ('..' == $a)) continue; if (preg_match('@(.*)\.(ttf)$@', $a)) { //echo $a . '<hr />'; if($j++ > 30) break; $page->setFont(Zend_Pdf_Font::fontWithPath($path . "\\" . $a), 12); $page->drawText('По-русски ' . $a, $j * 2, $i, 'utf-8'); $i+=15; } } $pdf->pages[] = $page; //$pdf->save('../public/users/1.pdf'); header('Content-type: application/pdf'); echo $pdf->render(); ?> |
В цикле (8-18 строки) проверяется каждый шрифт из папки шрифтов на соответствие TrueType шрифту (*.ttf), делается это не более 30 раз, мне показалось это достаточным, чтобы отыскать хотя бы один подходящий шрифт. Если убрать комментарии с 20 строки, то файл сохранится на жестком диске, иначе будет появляться стандартное окно «Сохранить/Открыть»
Из списка можно выбрать наиболее подходящий именно вам шрифт и использовать его в своих проектах.
| This entry was posted by Вредный on 03.04.2010 at 19:20, and is filed under Zend Framework, php, программирование. Follow any responses to this post through RSS 2.0. Вы можете оставить комментарий или трэкбэк с вашего сайта. |