Pull to refresh

Генерация скана документа с печатью с помощью mPDF

В одном из проектов потребовалось генерировать сканы документов с наложенной печатью поверх текста. Не то, чтобы кто-то претендует на то, что это подмена подлинному документу, но эти документы могут запросить в любой точке нашей необъятной Родины, а оригиналы хранятся в одном месте, причем объем таков, что заставить кого-то сканировать и «выкладывать» с привязкой к поисковым запросам — все равно, что убить человека.

Принято решение генерировать 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;


Результат:

image
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.