В одном из проектов потребовалось генерировать сканы документов с наложенной печатью поверх текста. Не то, чтобы кто-то претендует на то, что это подмена подлинному документу, но эти документы могут запросить в любой точке нашей необъятной Родины, а оригиналы хранятся в одном месте, причем объем таков, что заставить кого-то сканировать и «выкладывать» с привязкой к поисковым запросам — все равно, что убить человека.
Принято решение генерировать PDF, поскольку он везде читается и уже содержит разметку страниц (т.е. при печати на любом принтере будет выглядеть одинаково).
Для генерации выбрана библиотека mPDF. Не сказать, что это супер библиотека, но свое дело, хоть и медленно, делает. Образцы печатей с подписями получили от дизайнеров на прозрачных PNGшках. Наиболее простой способ использования mPDF — сгенерировать HTML и на его основе получить готовый файл. Проблема возникла, когда выяснилось, что mPDF крайне лимитировано воспринимает CSS в разрезе position. В итоге «положить» образ печати и подписи в нужное место документа методом позиционирования не получается. Беглый поиск по глобальной сети показал, что не я один страдаю такой незадачей, а решения вроде как и нет. И вдруг чудо: на буржуйском сайте было предложено простое и оригинальное решение. Суть решения заключается в позиционировании с помощью отрицательного margin.
Результат:

Принято решение генерировать PDF, поскольку он везде читается и уже содержит разметку страниц (т.е. при печати на любом принтере будет выглядеть одинаково).
Для генерации выбрана библиотека mPDF. Не сказать, что это супер библиотека, но свое дело, хоть и медленно, делает. Образцы печатей с подписями получили от дизайнеров на прозрачных PNGшках. Наиболее простой способ использования mPDF — сгенерировать HTML и на его основе получить готовый файл. Проблема возникла, когда выяснилось, что mPDF крайне лимитировано воспринимает CSS в разрезе position. В итоге «положить» образ печати и подписи в нужное место документа методом позиционирования не получается. Беглый поиск по глобальной сети показал, что не я один страдаю такой незадачей, а решения вроде как и нет. И вдруг чудо: на буржуйском сайте было предложено простое и оригинальное решение. Суть решения заключается в позиционировании с помощью отрицательного margin.
$html = '
<body>
Some docuemnt text is here.
<br><br><br><br><br><br><br><br><br><br><br><br>
<div> Бендер О. ________________</div>
<img style="float: left; margin: -2.5cm 0 0 1.5cm; image-resolution: 300dpi;" src="0002.png">
';
include("../mpdf.php");
$mpdf=new mPDF();
$mpdf->WriteHTML($html);
$mpdf->Output();
exit;
Результат:
