Рендеринг изображения веб-страницы: Berkelium-Sharp

Я пытаюсь сделать изображение веб-страницы в приложении. К сожалению, у меня нет доступной формы Windows, поэтому такие решения, как WebKit.net, недоступны, так как им требуется элемент управления для формы для извлечения изображения.

Поэтому я начал смотреть на обертки для Berkelium, и наткнулся только на Berkelium-Sharp. Кажется, у него нет документации, чтобы усложнить задачу, но, глядя на код, я не вижу способа создать растровое изображение (или подобное) на странице, которая отображается ниже. Кто-нибудь знает, возможно ли это?

Я должен добавить, что мне нужно использовать.NET 2.0, прежде чем кто-либо начнет предлагать альтернативы, которые не будут работать (хотя я открыт для тех, кто работает!).

1 ответ

Решение

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

    static void Main(string[] args)
    {                        
        BerkeliumSharp.Init(Path.GetTempPath());
        using (Context context = Context.Create())
        {
            BerkeliumSharp.Update();
            using (Window window = new Window(context))
            {
                string url = "http://www.google.com";
                window.Resize(500, 500);
                HandlePaint(window, @"m:\berkelium.png");
                window.NavigateTo(url);

                // Give the page some time to update
                DateTime now = DateTime.Now;
                while(DateTime.Now.Subtract(now).TotalSeconds < 1)
                    BerkeliumSharp.Update();                   
            }
        }
    }

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

Другие вопросы по тегам