总的来说,我正在尝试将网页写成PDF。我可以使用Web服务将文件转换为pdf。所以我想要做的是从WebBrowser winforms控件中保存一个网页。
我已经尝试将其写出文档流,但这只是给了我页面的html而不是与它一起使用的图像。
我调查的另一种方法是尝试创建WebBrowser文档的图像,但尚未成功。我在网上找到了一些利用DrawToBitmap函数的例子,但没有一个对我有用。
任何帮助都会感激不尽。
答案 0 :(得分:0)
很久以前,我偶然发现了这个CodeProject文章“Capture an HTML document as an image”
然而,有一个新的(发布时间:2010年2月13日)'HTML to Image in C#'
我没有测试过他们中的任何一个,但我认为他们应该工作!
答案 1 :(得分:0)
要创建PDF,您正在使用的程序将需要该站点的源代码。您使用WebBrowser winforms控件或其他东西来获取该信息,并没有什么不同。
此代码将为您获取任何网站的源代码,假设您不需要首先上传内容:
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();
}
答案 2 :(得分:0)
您可以截取屏幕截图,直到您使用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);