У меня есть веб-сайт, который я создаю, который берет данные (имя человека) из формы и помещает их в настраиваемую «заметку» в таблице на следующей странице. Я хочу, чтобы пользователь смог сохранить свою «заметку» в качестве изображения с их настроенным именем на нем. Есть ли способ сохранить КОНКРЕТНЫЙ HTML TABLE в качестве PNG? Может быть, снять скриншот определенной координаты на веб-странице?
Если нет способа визуализации размещенного содержимого PHP из формы в HTML-холсте?
Любая помощь будет большой. Сейчас я немного над головой.
Вы можете попробовать эту библиотеку JS на стороне клиента.
Хотя вы можете визуализировать HTML с помощью различных инструментов, вы не можете быть уверены, что эти инструменты будут отображать HTML так же, как это делает ваш браузер.
Если ваша конечная цель состоит в том, чтобы сгенерировать изображение с текстом на нем , тогда давайте решим эту проблему, а не пытаемся сделать решение, которое вы предложили.
Посмотрите на функцию imagettftext () PHP. Он содержит пример # 1, который создает небольшое, простое изображение из текста, которое может быть сохранено в любой переменной … включая переменную формы.
Используя этот пример и добавив несколько других функций GD в PHP , вы можете сделать достойную реплику таблицы и убедиться, что она выглядит именно так, как вы хотите, а не способ, которым html2ps или какой-либо другой инструмент визуализирует ее.
<?php // Set the content-type header('Content-Type: image/png'); // Create the image $im = imagecreatetruecolor(400, 30); // Create some colors $white = imagecolorallocate($im, 255, 255, 255); $grey = imagecolorallocate($im, 128, 128, 128); $black = imagecolorallocate($im, 0, 0, 0); imagefilledrectangle($im, 0, 0, 399, 29, $white); // The text to draw $text = isset($_POST['name']) ? $_POST['name'] : "name"; // Replace path by your own font path $font = 'arial.ttf'; // Add some shadow to the text imagettftext($im, 20, 0, 11, 21, $grey, $font, $text); // Add the text imagettftext($im, 20, 0, 10, 20, $black, $font, $text); // Using imagepng() results in clearer text compared with imagejpeg() imagepng($im); imagedestroy($im); ?>
Вот пример вывода, сгенерированного вышеприведенным скриптом:
Обратите внимание, что вам необходимо предоставить arial.ttf
соответствии с инструкциями по ссылке выше.
Если что-то не работает, найдите ошибки как на экране, так и в журнале ошибок вашего сервера FIRST перед тем, как перейти сюда. Возможно, что GD-модуль PHP не установлен на вашем веб-сервере. Если это так, вы должны проверить у своего администратора сервера, чтобы убедиться, что вам нужно.
работоспособное решение
Вы также можете использовать Xvfb . Это пакет linux. Это означает «X-Window Virtual Frame Buffer» (если вам интересно, почему на земле было такое эзотерическое имя).
Что это будет делать, это загрузить страницу, выполнить любой JavaScript и применить различные стили из CSS, все в фреймовом буфере сервера. Затем вы можете сохранить изображение.
Xvfb, вероятно, не будет доступен для большинства служб общего доступа, однако, если это не имеет значения, тогда это будет жизнеспособное решение.
Вы можете использовать что-то вроде html2ps