.NET uses PuppeteerSharp to generate page images

Install NuGet package-PuppeteerSharp

Install-Package PuppeteerSharp

Create a console program.

 

new method

class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            CreateHtmlImg();

            Console.ReadLine();
        }
        static async void CreateHtmlImg()
        {
            // The   first time the program is executed, a chrome program will be downloaded first. After the download is complete, there is no need to download it next time. 
            await  new BrowserFetcher (). DownloadAsync (BrowserFetcher.DefaultRevision);

            using (Browser browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true }))
            {
                using (var page = await browser.NewPageAsync())
                {
                    // Set the page size of the browser 
                    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();

                    // Analyze the source code 
                    sr.Close ();

                    // Save the page as a picture 
                    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);
                        }
                    }
                    // Save the page as a picture
                     // await page.ScreenshotAsync (@ "D: \ junk \" + DateTime.Now.ToString ("yyyyMMddHHmmssssss") + ". Png ",
                     // new ScreenshotOptions () {FullPage = true, Type = ScreenshotType.Png}; 
                }
            }
        }
    }

 

 

 

 

The first execution will be slower, to download Chrome, 330M

 

Guess you like

Origin www.cnblogs.com/ya-jun/p/12738397.html