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

  • 相关阅读:
    CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡
    三大WEB服务器对比分析(apache ,lighttpd,nginx)
    linux sudo 命令
    linux 添加用户、权限
    LeetCode——Find Largest Value in Each Tree Row
    LeetCode——Single Element in a Sorted Array
    LeetCode——Find All Duplicates in an Array
    LeetCode—— Partition Equal Subset Sum
    LeetCode——Unique Binary Search Trees II
    LeetCode——Is Subsequence
  • 原文地址:https://www.cnblogs.com/ya-jun/p/12738397.html
Copyright © 2011-2022 走看看