Как сохранить полную веб-страницу, используя встроенный браузер в C # - PullRequest
2 голосов
/ 08 июня 2010

В целом я пытаюсь записать веб-страницу в PDF.Существует веб-сервис, который я могу использовать для преобразования файла в pdf.Поэтому я пытаюсь сохранить веб-страницу из элемента управления winforms WebBrowser.

Я уже пытался записать его в поток документов, но это просто дает мне HTML страницы, а не изображения, которые используются с ним.

Другой способ, который я изучил, ноне удалось, пытается создать изображение документа WebBrowser.В Интернете я нашел несколько примеров, в которых используется функция DrawToBitmap, но ни один из них не помог мне.

Любая помощь будет благодарна.

Ответы [ 3 ]

0 голосов
/ 09 июня 2010

Для создания PDF используемой программе потребуется исходный код сайта.Независимо от того, используете ли вы элемент управления winforms WebBrowser или что-то еще, чтобы получить эту информацию, это не имеет большого значения.

Этот код получит исходный код любого сайта для вас, при условии, что вам не нужно сначала загружать материал:

string url = "some site";
string source = string.Empty;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using(StreamReader sr = new StreamReader(response.GetResponseStream()){
    source = sr.ReadToEnd();
}
0 голосов
/ 20 марта 2013

Вы можете делать снимки экрана, пока не получите всю страницу, используя функцию Graphics.CopyFromScreen.

// Get screen location of web browser
Rectangle rec = webBrowser1.RectangleToScreen(webBrowser1.ClientRectangle);
// create image to hold whats in view
Bitmap image = new Bitmap(rec.Width, rec.Height);
// get graphics to draw on image
Graphics g = Graphics.FromImage(image);
// Save into image
// From MSDN:
//public void CopyFromScreen(
//    int sourceX,
//    int sourceY,
//    int destinationX,
//    int destinationY,
//    Size blockRegionSize
//)
g.CopyFromScreen(rec.X,rec.Y,0,0,rec.Size)

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

webBrowser.ScrollBarsEnabled = false;
webBrowser.Document.Body.Style = "overflow:hidden;";

А затем прокрутите вниз, чтобы сделать снимок следующей страницы:

webBrowser.Document.Window.ScrollTo(x,y);
0 голосов
/ 09 июня 2010

Давным-давно я наткнулся на эту статью CodeProject ' Захват HTML-документа в виде изображения '

однако, есть новый (опубликовано: 13 февраля 2010 г.) ' HTML для изображения в C # '

Я не проверял ни одного из них, но думаю, что они должны работать!

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