Создать образ div?

Мне было интересно, можно ли создать изображение div внутри страницы в php, jquery или javascript? Или даже просто скриншот всей страницы (на моем собственном сервере, а не на внешнем)..

Что я хочу сделать, так это создать изображение графика (нарисованное с помощью jQuery) и передать его в PDF, так как я не могу заставить jQuery отображаться в pdf.


person SoulieBaby    schedule 13.11.2009    source источник
comment
Возможно, этот поток может помочь: stackoverflow.com/questions/839216/   -  person Kaleb Brasee    schedule 13.11.2009
comment
да, я посмотрел на это, спасибо, но я не думаю, что смогу использовать это для того, что мне нужно   -  person SoulieBaby    schedule 13.11.2009
comment
Можете ли вы изменить свое приложение, чтобы сгенерировать график на стороне сервера, или это нужно сделать в jQuery?   -  person JPCosta    schedule 13.11.2009
comment
Я использую jQuery Flot (и немного php) для динамического создания графика в зависимости от того, какие параметры они выбрали для отображения. Кажется, я не мог найти php, который не выглядел бы дерьмом, лол.   -  person SoulieBaby    schedule 13.11.2009
comment
В зависимости от потребностей вашего графика вы можете использовать диаграммы Google (code.google.com/apis/chart)   -  person donohoe    schedule 13.11.2009


Ответы (5)


Из-за угроз безопасности невозможно заставить Javascript сделать скриншот веб-страницы. Это позволит вам украсть информацию о кредитной карте и т. Д. Вы можете использовать активный элемент управления X или что-то в этом роде, но клиент должен сознательно установить его, чтобы все работало.

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

Вот пример библиотеки, которую вы можете использовать для рисования графика в PHP. http://www.aditus.nu/jpgraph/

Возможно, вы сможете имитировать то, что делает jQuery в своем скрипте, но это потребует изменений в дизайне ваших приложений.

person Brian Duncan    schedule 13.11.2009
comment
Ну, я действительно просто хочу, чтобы мой график jQuery каким-то образом превратился в изображение ... я не против, если это будет сделано до того, как клиент увидит это или нет ... просто не знаю, как это сделать :( - person SoulieBaby; 13.11.2009
comment
Я отредактировал сообщение, добавив дополнительную информацию о рисовании графиков прямо через PHP - может помочь - person Brian Duncan; 13.11.2009


Как насчет использования генератора графов на стороне сервера, например, для PHP? Возможно, переход будет болезненным, но вы получите действительно стабильное и простое решение.

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

person Pekka    schedule 13.11.2009

Лучше всего использовать библиотеку GD на сервере для создания графика по мере необходимости. Не существует практического способа сделать скриншот холста браузера. Проверьте эту графическую библиотеку PHP, возможно, это то, что вы ищете:

http://graphpite.sourceforge.net/

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

person mattbasta    schedule 13.11.2009

Если ваш javascript рисует график на холсте, вы можете сериализовать холст, а затем отправить его на сервер с помощью POST.

Я не знаю, может ли jquery рисовать график на холсте, но если график простой, вы, вероятно, могли бы закодировать его самостоятельно, поскольку на холсте уже есть инструменты рисования.

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

person GeoNomad    schedule 13.11.2009