Нужно клиентам выгружать сертификат в pdf формате
В общем проблема такая. Нужно клиентам выгружать сертификат в pdf формате. И клиенту нужно в этом сертификате прописывать его данные.
Сделали верстку сертификата в html, чтобы можно было менять в нем данные. Теперь пытаемся выгрузить из html в pdf, используя mpdf. В итоге mpdf выгружает криво. Можно ли как-нибудь сделать нормальную выгрузку через mpdf? Или можно ли решить нашу проблему как-нибудь по другому?
Сделали верстку сертификата в html, чтобы можно было менять в нем данные. Теперь пытаемся выгрузить из html в pdf, используя mpdf. В итоге mpdf выгружает криво. Можно ли как-нибудь сделать нормальную выгрузку через mpdf? Или можно ли решить нашу проблему как-нибудь по другому?
Поблагодарить автора
Отправить деньги
Комментарии: 8
Вот что ты хочешь услышать? Ответ: Да, можно!… доволен?
Где код, где хотя бы превью в чем кривота отображается и тд?
Где код, где хотя бы превью в чем кривота отображается и тд?
Извиняюсь. Протупил. В итоге решили сделать картинки сертификатов и накладывать на них текст. И потом уже выгружать в пдф. Картинку mpdf выгружает. Осталось только разобраться ка наложить текст.
wkhtmltopdf хорошо работает.
Только чтоб его поставить нужен vds
Не обязательно — пробовал не везде, но на таймвебе сработало следующее — загрузил бинарник в папку, права на него 744 — вполне себе работает.
в PHPExcel есть возможность работать с pdf
Может кому-то понадобиться опишу решение задачи. Мне понадобилось два дня чтоб пробраться через все баги.
Сверстаный html макет сертификата в mpdf выгружался криво. Одна страница растягивалась на 3 страницы. Не подгружались фоновые картинки. В итоге решили сертификаты делать картинками, а на них уже накладывать номер и код сертификата.
Во первых нужен сам mpdf. Он ставиться через composer. Но ставить через composer так не разобрался как. Поступил проще установил компонент PDFresource. В нем уже есть последняя настроенная версия mpdf.
Итоговый сниппет html2pdf:
Сейчас все наконец-то работает :)
Сверстаный html макет сертификата в mpdf выгружался криво. Одна страница растягивалась на 3 страницы. Не подгружались фоновые картинки. В итоге решили сертификаты делать картинками, а на них уже накладывать номер и код сертификата.
Во первых нужен сам mpdf. Он ставиться через composer. Но ставить через composer так не разобрался как. Поступил проще установил компонент PDFresource. В нем уже есть последняя настроенная версия mpdf.
Итоговый сниппет html2pdf:
<?php
require_once(dirname(dirname(dirname(dirname(dirname(dirname(__FILE__)))))).'/core/components/pdfresource/vendor/mpdf/mpdf/mpdf.php'); // путь до mpdf
$mpdf = new mPDF();
$mpdf->list_indent_first_level = 0;
$mpdf->SetDisplayMode('fullpage');
switch($_GET['product']){
case '218':
$img='http://mysite.ru/assets/components/html2pdf/sertifikat-lichniy-vrach-plus.jpg';
break;
case '219':
$img='http://mysite.ru/assets/components/html2pdf/sertifikat-lichniy-vrach-semeynoe-zdorovye.jpg';
break;
case '217': default:
$img='http://mysite.ru/assets/components/html2pdf/sertifikat-lichniy-vrach-standart.jpg';
break;
}
$t=$modx->getChunk('sertifikat_html',array(
'img'=>$img,
'nomer'=>$_GET['nomer'],
'code'=>$_GET['code'],
));
//return $t;
$mpdf->WriteHTML($t, 0); /*формируем pdf. С ключом 0 обрабатывает стили css.*/
$mpdf->Output('mpdf11.pdf', 'I'); // вывод pdf в браузер. С ключом 'D' выводит файл на загрузку.
exit; // без этой команды в браузер выпадают ероглифы
Итоговый чанк sertifikat_html:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="ru">
<head>
<meta charset="utf-8">
</head>
<body>
<div class="example2">
<img src="[[+img]]" >
<div style="margin-top: -895px;padding-left:80px;"><span>[[+nomer]]</span></div>
<div style="margin-top: -20px;padding-left:470px;"><span>[[+code]]</span></div>
</div>
</body>
</html>
В mpdf стили position:absolute обрабатываются ограниченно. Пришлось долго возиться, чтобы наложить текст на картинку. Решилось все стилем margin-top с отрицательными значениями. Причем те же стили примененные к span эффекта не давали. Только div выручил.Сейчас все наконец-то работает :)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.