500分,如何将网页生成图片,不能是截屏。因为有时候网页一屏显示不完

解决方案 »

  1.   

    不用虚拟打印机一样可以办到.通过IHTMLDocument接口,获取到页面的实际宽度和高度(ScrollHeight/ScrollWidth)以及当前窗口宽度和高度(OffsetHeight/OffsetWidth),获取到IHTMLWindow2接口用来横向及纵向滚动,通过IViewObject接口的Draw方法,分别抓取每个当前窗口的图像,拼接起来即可。
      

  2.   

    http://download.csdn.net/source/1499743
      

  3.   

    妖哥说的对 不过不用分别抓取
    写了个例题
    http://download.csdn.net/source/1499743
      

  4.   


    一个列子:procedure TForm1.Button5Click(Sender: TObject);
    var
      viewObject : IViewObject;
      r : TRect;
      bitmap : TBitmap;
    begin
      if WebBrowser1.Document <> nil then
      begin
        WebBrowser1.Document.QueryInterface(IViewObject, viewObject) ;
        if Assigned(viewObject) then
        try
          bitmap := TBitmap.Create;
          try
            r := Rect(0, 0, wb.Width, wb.Height) ;
            bitmap.Height := wb.Height;
            bitmap.Width := wb.Width;
            viewObject.Draw(DVASPECT_CONTENT, 1, nil, nil, Application.Handle, bitmap.Canvas.Handle, @r, nil, nil, 0) ;
            bitmap.SaveToFile('D:\webpage.bmp') ;
          finally
            bitmap.Free;
          end;
        finally
          viewObject._Release;
        end;
      end;
    end;
      

  5.   

    楼上的还要 ScrollBy 再拼接起来才是楼主想要的 
      

  6.   

    TheWorld做的很好,可以借鉴一下
      

  7.   

    花了5分,下载5楼的文件,生成出来的图片还是不对的 测试页面 http://www.ahjoe.com/
      

  8.   

    Draw这方法好象有点问题, 有一部分取不到 
      

  9.   

    -----
    我测试http://www.ahjoe.com/ 没有问题 完整图片
    windows xp  sp3
      

  10.   


    ahjoe 有打广告的嫌疑, 哈哈
      

  11.   

    不是打广告,测试系统是 Microsoft Windows Server 2003 Standard Edition Service Pack 2
      

  12.   

    懒的花费资源分下载CSDN的资源,还是等楼主现身说说效果吧。
      

  13.   

    在 Microsoft Windows XP Professional Service Pack2 下测试正常。
      

  14.   

    楼主好像没吭声,就暂时不冒风险写代码了。
    C++Builder那边还预约着两个帖子呢,等这边楼主有消息了我再来。
      

  15.   

    Snaglt实现了网页的全输出,看起来用的就是虚拟打印机。顺便期待下妖哥的代码。
      

  16.   

    来了,工作忙到疯起。问题解决,分马上给。再加个多问题,delphi webbrowser,使用久了,缓存如何清掉,只有关闭应用程序这个办法吗?加上这个问题,再加多500分
      

  17.   

    如果能得到IE里类似于TScrollBox的句柄可能能行吧
      

  18.   

    webbrowser,使用久了,缓存如何清掉,你打开网页用API清理那个地址的缓存就可以