Задать вопрос
@differentlocal

Неверная кодировка колонтитулов в mPDF?

Вопрос от человека, не имеющего регистрации на Хабре


Добрый день,


В PHP-mPDF возникла проблема с отображением колонтитулов, заданных в HTML-шаблоне. В результирующем PDF вместо них текст в неизвестной науке кодировке.


Сами колонтитулы в HTML-шаблоне в соответствующих тегах, с кодировкой в шаблоне проблем нет, основной текст и в шаблоне, и в PDF выводится правильно.


В какую сторону имеет смысл копать?
  • Вопрос задан
  • 5387 просмотров
Подписаться 3 Оценить 1 комментарий
Решения вопроса 1
@m-haritonov
Скачал последнюю версию с www.mpdf1.com/mpdf/download, всё работает нормально. Вот код (запускал в кодировке windows-1251):
<?php
$html = '
<p>Текст</p>

<htmlpagefooter name="myFooter" style="display:none">
	<div class="footer">
		<table class="tbl3" width=624>
			<tr>
				<td>Менеджера</td>
				<td>Вася Пупкин</td>
				</tr>
			<tr>
				<td>Телефон:</td>
				<td>222 333 222</td>
			</tr>
		</table>
	</div>
</htmlpagefooter>
<sethtmlpagefooter name="myFooter" />';

require_once __DIR__ . '/MPDF57/mpdf.php';
$mpdf = new mPDF('utf-8', 'A4', '12', '', 10, 10, 7, 7, 10, 10);
//$mpdf->allow_charset_conversion = true;
$mpdf->charset_in = 'cp1251';
$mpdf->list_indent_first_level = 0;
$mpdf->WriteHTML($html, 0);
echo $mpdf->Output('mpdf.pdf', 'I');
die;


Могу посоветовать разве что:
1. проверить кодировку во всех файлах (шаблон с колонтитулами, случайно, не в отдельном файле лежит?);
2. обновить библиотеку mPDF на последнюю версию;
3. добавить "$mpdf->allow_charset_conversion = true;", как рекомендуется в документации.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@differentlocal Автор вопроса
Строка с колонтитулами из HTML-шаблона:
<body> <htmlpagefooter name="myFooter" style="display:none"> <div class="footer"> <table class="tbl3" width=624> <tr> <td>Менеджера</td> <td>Вася Пупкин</td> </tr> <tr> <td>Телефон:</td> <td>222 333 222</td> </tr> </table> </div> </htmlpagefooter>
Вызов mPDF из PHP:
$mpdf = new mPDF('utf-8', 'A4', '12', '', 10, 10, 7, 7, 10, 10); $mpdf->charset_in = 'cp1251'; $mpdf->list_indent_first_level = 0; $mpdf->WriteHTML($code, 0); echo $mpdf->Output('mpdf.pdf', 'I'); die;
Ответ написан
Комментировать
Arks
@Arks
не встречал никакой charset_in, но могу точно сказать что $mpdf использует $fpdf а тот использует престарелую опенсорсную PEAR-либу для работы со шрифтами, которые перегоняются в набор файлов своего формата. Либа даже умеет разбирать на ходу и импортировать ttf-файлы. Если погуглить то легко находится С-шный конвертор для перегонки шрифтов из большинства известных форматов в воспринимаемый fpdf. Это обычно решает проблемы шрифтов на раз. А то там и будете мучаться с DjvuSansCondensed и удивляться кракозябрам в какой-нибудь изотерической мобильной ОС. В доках mpdf про это немного даже есть.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы