コード例 #1
0
        private async void btn_SaveAsImage_Click(object sender, RoutedEventArgs e)
        {
            //如果这一步发生异常了,可以参考 https://www.cnblogs.com/zhaotianff/p/13528507.html
            try
            {
                await new PuppeteerSharp.BrowserFetcher().DownloadAsync(PuppeteerSharp.BrowserFetcher.DefaultRevision);

                var browser = await PuppeteerSharp.Puppeteer.LaunchAsync(new PuppeteerSharp.LaunchOptions
                {
                    Headless = true
                });

                var page = await browser.NewPageAsync();  //打开一个新标签

                await page.GoToAsync(this.tbox_Url.Text); //访问页面

                //设置截图选项
                PuppeteerSharp.ScreenshotOptions screenshotOptions = new PuppeteerSharp.ScreenshotOptions();
                //screenshotOptions.Clip = new PuppeteerSharp.Media.Clip() { Height = 0, Width = 0, X = 0, Y = 0 };//设置截剪区域
                screenshotOptions.FullPage       = true;                               //是否截取整个页面
                screenshotOptions.OmitBackground = false;                              //是否使用透明背景,而不是默认白色背景
                screenshotOptions.Quality        = 100;                                //截图质量 0-100(png不可用)
                screenshotOptions.Type           = PuppeteerSharp.ScreenshotType.Jpeg; //截图格式

                var fileName = Environment.CurrentDirectory + $"\\download\\{await page.GetTitleAsync()}.jpg";

                if (System.IO.File.Exists(fileName))
                {
                    fileName = fileName.Replace(".jpg", $"{DateTime.Now.ToString("ffff")}.jpg");
                }

                await page.ScreenshotAsync(fileName, screenshotOptions);

                if (System.IO.File.Exists(fileName))
                {
                    BitmapImage bi = new BitmapImage();
                    bi.BeginInit();
                    bi.UriSource = new Uri(fileName, UriKind.Absolute);
                    bi.EndInit();
                    this.image.Source = bi;
                }
                else
                {
                    EMessageBox.Show("保存网页截图失败");
                }

                //在最后记得关闭浏览器及释放资源
                browser.Disconnect();
                browser.Dispose();
            }
            catch (Exception ex)
            {
                EMessageBox.Show(ex.Message);
            }
        }
コード例 #2
0
        static async Task SaveHTMLAsJPG(BookingScraper book, string html, string dep)
        {
            File.WriteAllText($"Schedules/{dep.Replace(" ","_")}_schedule.html", html);
            Console.WriteLine($"Completed! Open Schedules/{dep.Replace(" ","_")}_schedule.html to view schedule.");

            var schedPage = await book.browser.NewPageAsync();

            string dir = Environment.CurrentDirectory.Replace("#", "%23");
            await schedPage.GoToAsync($"file://{dir}/Schedules/{dep.Replace(" ","_")}_schedule.html");

            var ssop = new PuppeteerSharp.ScreenshotOptions();

            ssop.FullPage = true;
            await schedPage.ScreenshotAsync($"Schedules/{dep.Replace(" ","_")}_schedule.jpg", ssop);
        }