Страницы

Поиск по вопросам

среда, 6 марта 2019 г.

Как преобразовать HTML таблицу в картинку (jpeg/png) силами php?

Дано:
HTML код таблицы.
Задача:
Получить эту таблицу в виде картинки.
Задача подробнее:
Эту таблицу (распарсенный HTML код с сайта) надо отобразить в виде сообщения telegram-бота. Телеграм не поддерживает большую часть HTML тэгов, включая таблицы. Решил вот так проблему решить: получаем код таблицы, преобразуем в картинку, отсылаем картинку таблицы.
Что сам сделал:
Почитал en-SO и решил пойти по пути HTML-PDF-IMAGE Нашёл php-либу, получающую на входе HTML код таблицы и выдающей *.pdf документ с ней. Даже стили можно использовать (sic!). Остался последний шаг - преобразовать pdf в картинку.
Проблема:
По запросу типа
pdf to image php
выдаются только советы использовать некие ImageMagick и GhostScript. Но, насколько я понял, они не подойдут мне, т.к. у меня не выделенный сервер, а просто хостинг с php, а эти модули надо в систему прямо ставить.
Вопрос:
Так таки есть ли способ получить силами непроапгрейженного всякими прогами php изображение из pdf или я вообще не по тому пути иду?
P.S.
Возможно стоит вообще другую либу попробовать?..


Ответ

Возможно стоит сложить код таблицы в открытый доступ с секретной ссылкой, получить эту ссылку, натравить на неё сервис типа screenshotlayer.com, удалить таблицу и радоваться?
screenshotlayer.com удобный (API и плюшки), но платный. Сервисы типа pdfconvertonline.com/webpage-to-png-online.html, web-capture.net бесплатны, но нужно проделать чуть больше движений чтобы получить картинку: сформировать запрос, распарсить ответ и скачать картинку.

Для примера (pdfconvertonline.com/):
POST http://s2.pdfconvertonline.com/convert/convert-webpage-win.php Тело: websiteurl=google.com&filetype=PNG&source=WEENYSOFT&convert=Convert+Now%21 Вернётся 302 на что-то типа http://www.pdfconvertonline.com/results.php?name=00i27-mv4a4.png&ser=2 В коде будет ссылка на картинку:
00i27-mv4a4.png

Вот рабочий код от ТС, делающий запрос на вышепомянутый сайт с нужными заголовками и выводящий результирующий HTML код страницы, коя содержит ссылку на требуемый PNG. Останется только распарсить ответ для получения ссылки на изображение и скачать его к себе на сервер.
'http://s2.pdfconvertonline.com/convert/convert-webpage-win.php', CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_POSTFIELDS => http_build_query(array(websiteurl=>'LINK_TO_HTML_PAGE_WITH_TABLE_IN_IT.html', filetype=>PNG, source=>WEENYSOFT, convert=>Convert+Now%21 )) )); $response = curl_exec($myCurl); curl_close($myCurl);
echo $response;

И опять код от автора ответа: Для парсинга ответа, используем Simple HTML Dom
require_once 'simple_html_dom.php'; // Код страницы ответа в $response
$dom = str_get_html($response);
$link = $dom->find('#item_1 a', 0); // Это ссылка на картинку
printf("Your image: %s", $link->href, $link->innertext); // $image = file_get_contents($link->href);

Комментариев нет:

Отправить комментарий