system('wkhtmltoimage --use-xserver --width 1024 --height 768 \''.$DT[1].'\' '.$file);
my $filesize = -s $file;
# Try 2
if(!$filesize) {
$status = 'NJS ';
system(wkhtmltoimage --use-xserver --width 1024 --height 768 --disable-javascript \''.$DT[1].'\' '.$file);
}
$filesize = -s $file;
# Try 3
if(!$filesize) {
$status = 'NXS ';
system('wkhtmltoimage --width 1024 --height 768 --disable-javascript \''.$DT[1].'\' '.$file);
}
$filesize = -s $file;
Если вдруг кого-то интересует, как я рендерю Снапшоты... Лучше решение?
http://code.google.com/p/wkhtmltopdf/
Очень сильная вещь, особенно для генерации PDF файлов. Использует WebKit. Очень советую.
Если кто знает более мощное решение, прошу отписаться... Ибо к сожалению не все сайты могу отрендерить.
Но те, какие могу (95%) делает кстати очень быстро. Рендерингом на ФидБаке занимается одельный Perl демон (т.е. не напрямую через PHP, по причине безопасности, но и это возможно)
Заработало с первого раза.
Поторопился. Попробуй сделай снапшот с
а) И правда сработало с первого раза
б) В какой-то независимой статистике я читал, что это САМОЕ быстрое решение на рынке
откопать его было не так просто. Я просто не cдавался именно потому, что хотелось найти универсальное решение, HTML/CSS to PDF, чтобы облегчить себе жизнь в дальнейшем раз и навсегда. Т.е. по сути я им пользуюсь в своей другой система для генерации Фактур, таблиц, да в принципе чего угодно по схеме:
1. Парсер движка генерирует в принципе тот же ХТМЛ код, что выводит на экран (только css меняет на более принт френдли)
2. Я его сохраняю в отдельный хтмл файл на локальном диске (сss там уже встроен в файл)
3. Запуская программу Перл демоном.
4. На выходе готовый ПДФ, обычно в шикарном качестве (даже JS Jquery FLOT графики рендерит без труда)
5. Все счастливы
Цитата:
Да, вот яндекс не берет в упор... YouTube тоже..
Притом включен JS или нет без разницы.. Я с этим еще буду сражаться
Edit: Самое большое подозрение на Флеш. Я вот сейчас к примеру нашел сайт только с флеш роликом и он тоже отказывается:
http://www.albinoblacksheep.com/flash/potter
http://www.feedbackme.org/83fi37
http://www.feedbackme.org/19cfg38
=) Как? Элементарно: --use-xserver.
Не поверишь, но догадался методом тыка =)) Единственное, что X Server должен быть запущен, что кстати приводит к другому роду проблем..
Респект. Толковая работа. Не юзал, но сам факт выкладывания такого решения, которое может быть крайне полезным для всякого рода онлайн - каталогов - супер.
Вот кстати реальный пример того, как работает с этим мой Perl демон на ФидБаке:
Я делаю 3 попытки получить снапшот:
1. Х Сервер с ЖаваСкрипт
2. Х Сервер без Жаваскрипт
3. Без Х сервера и без ЖаваСкрипт
Код:
Проверка через $filesize очень удобна, поскольку если у проги не получается сделать снапшот, файл на выходе имеет нуль размер.
Далее, как обойти вовпрос постоянно включенного X Сервера не подключая монитор... Ну тут несколько вариантов. Я использую Nomachine NX Server. Запускаю удаленную Х сессию для пользователя только для демона, запускаю сам демон и отключаюсь.. Вауля! магия сделана.
Но у этого решения свои последствия, а именно: если сервак отключится (к примеру обрыв электричества, УПС не выдержал и сервак сам себя отключает) то потом после перезапуска, демон будет работать в "пассивном" режиме, выполняя только снапшоты "попытки 3".. Запускать Х сервер придется в ручную...
Цитата: vorobej
Запускать Х сервер придется в ручную...
Почему вручную ?
Например rc.local прописать. Даже если из под юзера надо su username -c ваша команда запукса.
Цитата: vorobej
Далее, как обойти вовпрос постоянно включенного X Сервера не подключая монитор... Ну тут несколько вариантов. Я использую Nomachine NX Server. Запускаю удаленную Х сессию для пользователя только для демона, запускаю сам демон и отключаюсь.. Вауля! магия сделана.
а xvfb, не проще?
Цитата:
Например rc.local прописать. Даже если из под юзера надо su username -c ваша команда запукса.
Тут дело не в команде, а в скорее постоянно активной сессии X Сервера
Цитата:
а xvfb, не проще?
Проще, в 1000 раз проще! Точнее правильнее... Только вот ну никак я не смог с ней подружиться.. Не запускается в упор.. Куче ошибок на выходе
а какой номер display-а использует wkhtmltoimage по умолчанию, или как задать нужный?
xvfb-run --server-args="-screen 0, 1024x768x24" ./wkhtmltoimage-amd64 --use-xserver --javascript-delay 2000 --window-status Done --enable-plugins http://www.hulu.com hulu.jpg
Но я так и не смог ее запустить. Там надо ставить куче библиотек дополнительно и я просто не стал заморачиваться в силу не хватки времени и нашел более простое, но конечно же временное решение.
по умолчанию все нормальные программы обычно используют $DISPLAY