Давненько я тут не писал.
Сразу к делу: недавно столкнулся с задачей реализовать простенькую печатную форму.
На голом HTML её делать бесполезняк — можно легко столкнуться с «особенностями» браузера из которого производится печать. Собственно решил перегнать html в PDF и уже этот формат использовать в качестве печатного.
В качестве библиотеки выбрал Dompdf — она понимает стили вроде max-width и max-height и умеет работать с картинками.
Порядок действий:
- Собственно качаем dompdf: тык
- Заливаем содержимое на свой сервак.
- Формируем сниппет кода. Принцип прост: html-ку запихиваем в буфер вывода, а уже потом её используем в качестве содержимого PDF-ки:
<? require_once ($_SERVER['DOCUMENT_ROOT'].'/dompdf/autoload.inc.php'); use Dompdf\Dompdf; //буферизируем вывод ob_start(); ?> <!DOCTYPE html> <html> <head> <title><?=$res['PROPERTY_FIO_VALUE']?></title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <style> /*Отступы на самой PDF странице:*/ @page { margin: 10px; } /*стили...*/ </style> </head> <body> <!--содержимое body--> </body> </html> <? $html = ob_get_clean(); //останавливаем буферизацию, запихиваем буфер в $html $dompdf = new Dompdf(); //дефолтный шрифт - dejavu sans, т.к. он поддерживает кириллицу $dompdf->set_option('defaultFont', 'dejavu sans'); //даём возможность читать внешние ссылки (для отображения картинок извне) $dompdf->set_option('isRemoteEnabled', true); //запихиваем html-ку в преобразователь $dompdf->loadHtml($html); //ставим A4 вертикально $dompdf->setPaper('A4', 'portrait'); // Render the HTML as PDF - рендерим $dompdf->render(); // Output the generated PDF to Browser $dompdf->stream('лолкекчебурек.pdf',array('Attachment'=>0));