Ответ 1
web kit html to pdf работает отлично, он даже может создавать jpg
Ускорение страницы в Интернете, похоже, ударило меня как о стене, так как все больше и больше сайтов, которые зависят от JavaScript для отображения частей экрана.
Мне кажется, что при выпуске стольких рассылок с открытым исходным кодом и рендеринга JavaScript (например WebKit, Gecko и Chromium + V8), что кто-то должен был сделать инструмент для загрузки страницы и отображения ее JavaScript без необходимости запуска реального браузера. Тем не менее, я не поднимаю то, что ищу с моими поисками. Я нашел такие инструменты, как Selenium-rc, но они зависят на запущенном браузере. Меня интересует любой инструмент или библиотека, которые могут сделать одно (или оба) из следующего:
Программа, которая может быть запущена из командной строки (* nix), которая, с учетом источника страницы, возвращает источник страницы, отображаемый каким-то движком JS.
Интегрированная поддержка на определенном языке, которая позволяет (легко) передавать исходный код страницы и возвращает источник страницы, отображаемый каким-то движком JS.
Я думаю, что №1 предпочтительнее в общем смысле, но # 2 будет более полезным, если инструмент существует на языке, в котором я хочу работать. Кроме того, меня не интересует конкретный JS-движок - любой относительно современный один сделаю. Что там?
web kit html to pdf работает отлично, он даже может создавать jpg
Вы можете посмотреть HTMLUnit. Основная цель - автоматическое веб-тестирование, но я думаю, что это может позволить вам получить отображаемую страницу.
Ну, там DumpRenderTree инструмент, который используется как часть наборов тестов WebKit. Я не уверен, насколько подходит для превращения в автономный инструмент, но он делает то, что вы просите (визуализируйте HTML, запустите JavaScript и выгрузите его дерево визуализации на диск).
Поскольку JavaScript может выполнять довольно много манипуляций с объектной моделью документа веб-страницы (DOM), кажется, что нужно точно очистить содержимое произвольной страницы, вам нужно будет не только запустить механизм JavaScript, d также необходимо полное и точное представление DOM страницы. Это то, что вы получите, только если у вас появился настоящий механизм браузера. Для этого можно использовать встроенный, не отображаемый движок WebKit или Gecko, а затем после подходящей задержки загрузки для выполнения script просто выгрузите содержимое DOM в HTML-форму.
Мы использовали Rhino, чтобы сделать некоторое автоматическое тестирование с Java. Кажется, это сработает для вас:)
Я думаю, что есть пример кода для Qt, который использует включенный WebKit для рендеринга страницы в pixmap. оттуда до полной утилиты CLI просто определяет ваши потребности.
Конечно, для большинства скриншотов вам нужен текст, а не pixmap... если это то, что вы хотите, лучше проверьте Rhino
Существует Cobra Engine для Java (http://lobobrowser.org/cobra.jsp), который обрабатывает Javascript (он также имеет средство визуализации, но это необязательно). Я никогда не использовал его, но слышал, что об этом говорили хорошие вещи.
Очень маленький код, чтобы WebView отображал страницу, не отображая ничего, но это должно быть приложение GUI. Они также могут принимать аргументы командной строки и скрывать окно. Используя WebKit, это возможно в инструменте.
Помимо сложного доступа DOM в Objective-C, WebKit также может использовать JavaScript и вместе с jQuery, который обеспечивает отличное очищающее решение. Однако я не знаю какого-либо универсального приложения, которое делает это.