zoukankan      html  css  js  c++  java
  • .NET 利用PuppeteerSharp生成页面图片

    安装 NuGet 程序包 - PuppeteerSharp

    Install-Package PuppeteerSharp
    

    创建个控制台程序。

    新方法

    class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("Hello World!");
    
                CreateHtmlImg();
    
                Console.ReadLine();
            }
            static async void CreateHtmlImg()
            {
                //  首次 执行程序 会先下载一个 chrome 程序 , 下载完成后下次就不用下载。
                await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
    
                using (Browser browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true }))
                {
                    using (var page = await browser.NewPageAsync())
                    {
                        //设置浏览器的页面大小
                        await page.SetViewportAsync(new ViewPortOptions
                        {
                            Width = 1024,
                            Height = 768
                        });
                        string url = "https://www.cnblogs.com/";
                        await page.GoToAsync(url);
    
                        // 可执行javasctipt
                        //var seven = await page.EvaluateFunctionAsync<int>("()=> 4 + 3");
                        //var someObject = await page.EvaluateFunctionAsync<dynamic>("(value) => ({a: value})", 5);
    
    
                        var html = await page.GetContentAsync();
    
                        var sourceFile = "";
                        var memoryStream = new MemoryStream(Encoding.Default.GetBytes(html));
                        var sr = new StreamReader(memoryStream);
                        sourceFile = sr.ReadToEnd();
    
                        //针对源代码进行分析
                        sr.Close();
    
                        //将页面保存为图片
                        using (var stream = await page.ScreenshotStreamAsync(new ScreenshotOptions { FullPage = false }))
                        {
    
                            byte[] srcBuf = new Byte[stream.Length];
                            stream.Read(srcBuf, 0, srcBuf.Length);
                            stream.Seek(0, SeekOrigin.Begin);
                            using (FileStream fs = new FileStream(@"D:垃圾"+ DateTime.Now.ToString("yyyyMMddHHmmsssss") +".png",FileMode.Create, FileAccess.Write))
                            {
                                fs.Write(srcBuf, 0, srcBuf.Length);
                            }
                        }
                        //将页面保存为图片
                        //await page.ScreenshotAsync(@"D:垃圾"+ DateTime.Now.ToString("yyyyMMddHHmmsssss") +".png",
                        //new ScreenshotOptions() { FullPage = true, Type = ScreenshotType.Png };
                    }
                }
            }
        }

    首次执行会比较慢,要下载 Chrome ,330M

  • 相关阅读:
    C++学习笔记 继承,虚基类
    C++ 学习笔记 静态成员与常成员
    C++学习笔记,初始化列表与构造函数
    C++ 学习笔记 运算符优先级
    C++学习笔记 this指针,对象数组,对象指针数组;
    C++初级基础笔记 标识符 关键字
    C++学习笔记 指向类的数据成员的指针
    C++学习笔记 const修饰类成员与成员函数
    虚幻学习day2 简单手电筒与开关门效果(一)
    虚幻学习Day1(二) 触碰控制灯光开关
  • 原文地址:https://www.cnblogs.com/ya-jun/p/12738397.html
Copyright © 2011-2022 走看看