Давненько я тут не писал.
Сразу к делу: недавно столкнулся с задачей реализовать простенькую печатную форму.
На голом 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));