Как я могу сохранить веб-страницу как изображение в моем приложении rails? - PullRequest
1 голос
/ 29 мая 2010

В моем приложении rails мне нужно сохранить некоторые веб-страницы и отобразить их пользователю в виде изображений. Например, как я могу сохранить www.google.com как изображение?

Ответы [ 4 ]

7 голосов
/ 29 мая 2010

Существует утилита командной строки CutyCapt, которая использует движок WebKit-Rendering для рендеринга HTML-страниц в различные графические форматы. Может это для тебя? http://cutycapt.sourceforge.net/

1 голос
/ 29 мая 2010

Сложно сделать это в чистом Ruby, поэтому вы захотите использовать для этого внешний сервис. Browsershots делает это, например, и похоже, что у них есть api , хотя я сам не использовал его. Может быть, кто-то другой может присоединиться к альтернативным, но похожим услугам.

Вы также захотите прочитать up на delayed_job или чем-то подобном, чтобы убедиться, что вы обращаетесь к этим изображениям страницы в качестве фоновой задачи и что она не мешает с вашим фактическим заявлением.

0 голосов
/ 30 мая 2010
0 голосов
/ 29 мая 2010

Вы не можете сделать это легко (вероятно, не можете сделать это вообще). Каждая страница - это просто текст - html-данные. Представление, из которого вы хотите сделать изображение, является отображаемой страницей. Браузер отображает страницу, используя множество методов, таких как синтаксический анализ html, синтаксический анализ javascript, синтаксический анализ CSS, рендеринг шрифтов и т. Д. Чтобы сделать скриншот страницы Google - вам нужно будет выполнить весь рендеринг в памяти, а затем сделать снимок экрана стр.

Эта задача почти невозможна (нет ничего полностью невозможного). Если вы действительно хотите потратить кучу времени для выполнения этой задачи - вам следует выполнить следующие шаги: 1) Найдите движок рендеринга с открытым исходным кодом. Firefox сделает. 2) Найдите способ связи между ruby-on-rails и этим двигателем. 3) Соедините все это вместе и посмотрите результаты.

Однако я считаю шаги 1 и 2 почти невозможными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...