Сохранить таблицу HTML как изображение - PullRequest
6 голосов
/ 07 марта 2012

У меня есть веб-сайт, который я создаю, который берет данные (имя человека) из формы и публикует их в настраиваемой «заметке» в таблице на следующей странице.Я хочу, чтобы пользователь затем мог сохранить свою «заметку» в виде изображения с индивидуальным именем.Есть ли способ сохранить КОНКРЕТНЫЙ HTML-СТОЛ как PNG?Может быть, сделать снимок определенной координаты на веб-странице?

Если нет способа отобразить опубликованное содержимое PHP из формы на холсте HTML?

Любая помощь будет полезна.Я сейчас немного над головой.

Ответы [ 5 ]

2 голосов
/ 07 марта 2012

Вы можете попробовать эту библиотеку JS на стороне клиента.

2 голосов
/ 07 марта 2012

Хотя вы можете отображать HTML с помощью различных инструментов, вы не можете быть уверены, что эти инструменты будут отображать HTML так же, как ваш браузер отображает его.

Если ваша конечная цель - сгенерируйте изображение с текстом , тогда давайте решим эту проблему, вместо того чтобы пытаться заставить предложенное вами решение работать.

Посмотрите на PHP imagettftext () функция.Он содержит Пример # 1 , который создает небольшое, простое изображение из текста, который можно сохранить в любой переменной ... включая переменную формы.

Используя этот пример и добавивНесколько других PHP-функций GD , вы можете сделать приличную копию таблицы и убедиться, что она выглядит именно так, как вы хотите, а не то, как это делает 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);
?>

Вот пример выходных данных, сгенерированных приведенным выше сценарием:

enter image description here

Обратите внимание, что вам нужно будет предоставить arial.ttf в соответствии с инструкциямипо ссылке выше.

Если что-то не работает, сначала найдите ошибки как на экране, так и в журнале ошибок вашего веб-сервера, прежде чем переходить сюда.Возможно, модуль PHP GD не установлен на вашем веб-сервере.В этом случае вам следует проконсультироваться с администратором сервера, чтобы убедиться, что то, что вам нужно, доступно для вас.

1 голос
/ 07 марта 2012

работоспособное решение

  • используйте fpdf для создания PDF из HTML (таблица)
  • используйте imagemagick для конвертации pdf в png
0 голосов
/ 07 марта 2012

Вы также можете использовать Xvfb .Это пакет Linux.Он означает «Виртуальный кадровый буфер X-Window» (если вам интересно, почему у него такое эзотерическое имя).

Что это будет делать, это загрузить страницу, выполнить любой JavaScript и применить другойстилистики из CSS, все в рамке-буфере сервера.Затем вы можете сохранить образ.

Xvfb, вероятно, будет недоступен на большинстве служб общего хостинга, однако, если это не имеет значения, тогда это будет жизнеспособное решение.

0 голосов
/ 07 марта 2012

Вы можете использовать что-то вроде html2ps

...