public static async Task SsList(string URL, string Format)
        {
            await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
            var browser = await Puppeteer.LaunchAsync(new LaunchOptions
            {
                Headless = true
            });

            var page = await browser.NewPageAsync();

            await page.GoToAsync(URL);

            var ScreenShot = new ScreenshotOptions()
            {
                FullPage = true
            };

            if (Format == "jpg" || Format == "png")
            {
                var change = URL.Replace("/", "_").Replace(":", "_");
                await page.ScreenshotAsync($"{change}.{Format}", ScreenShot);

                await page.CloseAsync();
            }
            else if (Format == "pdf")
            {
                var change = URL.Replace("/", "_").Replace(":", "_");
                await page.PdfAsync($"{change}.{Format}");

                await page.CloseAsync();
            }
        }
        /// <summary>
        /// 保存 Page 页面截图
        /// </summary>
        /// <param name="page">Chromium 的 Page 对象</param>
        /// <param name="screenshotOptions">ScreenshotOptions 截图选项 【 如果传入空值,则自动实例化一个 ScreenshotOptions 对象 】</param>
        /// <param name="path">保存截图的绝对路径 【 默认值:程序运行目录\SaveContent\{当前时间}.png 】</param>
        /// <returns></returns>
        public static async Task SavePageScreenshotAsync(Page page, ScreenshotOptions screenshotOptions,
                                                         string path = null)
        {
            if (page == null)
            {
                throw new Exception("传入了一个空的 Chromium Page 对象。Page == null");
            }

            if (screenshotOptions == null)
            {
                screenshotOptions = new ScreenshotOptions();
            }

            if (string.IsNullOrWhiteSpace(path))
            {
                path = SaveContent.SaveContentDirectory + $"{DateTime.Now.ToString("yyyy-MM-dd_HH.mm.ss.ffff")}.png";
            }
            else
            {
                if (!Directory.Exists(Path.GetDirectoryName(path)))
                {
                    Directory.CreateDirectory(Path.GetDirectoryName(path));
                }

                if (Path.GetExtension(path).ToLower() != ".png")
                {
                    path += ".png";
                }
            }

            await page.ScreenshotAsync(path, screenshotOptions);
        }
Exemple #3
0
        public async Task <byte[]> CovertHtmlToImageAsync(string html)
        {
            byte[] by      = new byte[0];
            var    options = new LaunchOptions
            {
                Headless       = true,
                ExecutablePath = "C://Program Files (x86)//Google//Chrome//Application//chrome.exe"
                                 //  ExecutablePath = HttpContext.Server.MapPath($"~//Chrome//Chrome-bin/chrome.exe"),
            };

            using (var browser = await Puppeteer.LaunchAsync(options))
                using (var page = await browser.NewPageAsync())
                {
                    await page.SetContentAsync(html, new NavigationOptions { WaitUntil = new[] { WaitUntilNavigation.Networkidle0 } });

                    var result = await page.GetContentAsync();

                    var imOptions = new ScreenshotOptions
                    {
                        Type     = ScreenshotType.Jpeg,
                        Quality  = 100,
                        FullPage = true,
                    };
                    by = await page.ScreenshotDataAsync(imOptions);
                }
            return(by);
        }
Exemple #4
0
        public async Task CovertHtmlToImage(string html, string ouputpdf)
        {
            try
            {
                var options = new LaunchOptions
                {
                    Headless       = true,
                    ExecutablePath = "C://Program Files (x86)//Google//Chrome//Application//chrome.exe"
                                     //  ExecutablePath = HttpContext.Server.MapPath($"~//Chrome//Chrome-bin/chrome.exe"),
                };

                using (var browser = await Puppeteer.LaunchAsync(options))
                    using (var page = await browser.NewPageAsync())
                    {
                        await page.SetContentAsync(html, new NavigationOptions { WaitUntil = new[] { WaitUntilNavigation.Networkidle0 } });

                        var result = await page.GetContentAsync();

                        var imOptions = new ScreenshotOptions
                        {
                            Type     = ScreenshotType.Jpeg,
                            Quality  = 100,
                            FullPage = true,
                        };
                        await page.ScreenshotAsync(ouputpdf, imOptions);
                    }
            }
            catch (Exception ex)
            {
            }
        }
 public void ShouldInferScreenshotTypeFromName()
 {
     Assert.Equal(ScreenshotType.Jpeg, ScreenshotOptions.GetScreenshotTypeFromFile("Test.jpg"));
     Assert.Equal(ScreenshotType.Jpeg, ScreenshotOptions.GetScreenshotTypeFromFile("Test.jpe"));
     Assert.Equal(ScreenshotType.Jpeg, ScreenshotOptions.GetScreenshotTypeFromFile("Test.jpeg"));
     Assert.Equal(ScreenshotType.Png, ScreenshotOptions.GetScreenshotTypeFromFile("Test.png"));
     Assert.Null(ScreenshotOptions.GetScreenshotTypeFromFile("Test.exe"));
 }
Exemple #6
0
        public async Task <byte[]> TakeScreenshotAsync(ScreenshotFormat format, ScreenshotOptions options, Viewport viewport)
        {
            var response = await _session.SendAsync(new PageScreenshotRequest
            {
                MimeType = format == ScreenshotFormat.Jpeg ? ScreenshotMimeType.ImageJpeg : ScreenshotMimeType.ImagePng,
                FullPage = options.FullPage,
                Clip     = options.Clip,
            }).ConfigureAwait(false);

            return(Convert.FromBase64String(response.Data));
        }
Exemple #7
0
        public static async Task TakeSS(string url, object type, string name)
        {
            await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
            var browser = await Puppeteer.LaunchAsync(new LaunchOptions
            {
                Headless = true,
                Args     = new [] {
                    "--proxy-server=",
                    "--no-sandbox",
                    "--disable-infobars",
                    "--disable-setuid-sandbox",
                    "--ignore-certificate-errors",
                },
            });

            try
            {
                using (var page = await browser.NewPageAsync())
                {
                    Console.WriteLine($"rendering {url}");
                    await page.GoToAsync(url);

                    Console.WriteLine($"screenshot in progress");
                    if (type is ScreenshotType)
                    {
                        ScreenshotOptions ssOpt = new ScreenshotOptions()
                        {
                            FullPage = true, Type = (ScreenshotType)type
                        };
                        await page.ScreenshotAsync(name + (ScreenshotType)type, ssOpt);
                    }

                    else
                    {
                        Console.WriteLine("gengerating pdf");

                        await page.PdfAsync(name + "pdf");
                    }

                    await page.WaitForTimeoutAsync(1000);
                }
            }

            catch (System.Exception e)
            {
                Console.WriteLine("gagal!");
                Console.WriteLine(e);
                await browser.CloseAsync();
            }

            await browser.CloseAsync();
        }
Exemple #8
0
        public static async Task PuppeteerScreenshotPage(BotData data, string file, bool fullPage = false, bool omitBackground = false)
        {
            data.Logger.LogHeader();

            var page    = GetPage(data);
            var options = new ScreenshotOptions
            {
                FullPage       = fullPage,
                OmitBackground = omitBackground,
                Type           = omitBackground ? ScreenshotType.Png : ScreenshotType.Jpeg
            };
            await page.ScreenshotAsync(file, options);

            data.Logger.Log($"Took a screenshot of the {(fullPage ? "full" : "visible")} page and saved it to {file}", LogColors.DarkSalmon);
        }
        public async Task <byte[]> TakeScreenshotAsync(ScreenshotFormat format, ScreenshotOptions options, Viewport viewport)
        {
            await Client.SendAsync(new PageBringToFrontRequest()).ConfigureAwait(false);

            var clip = options.Clip?.ToViewportProtocol();

            var result = await Client.SendAsync(new PageCaptureScreenshotRequest
            {
                Format  = format.ToStringFormat(),
                Quality = options.Quality,
                Clip    = clip,
            }).ConfigureAwait(false);

            return(result.Data);
        }
Exemple #10
0
        public static async Task <string> PuppeteerScreenshotPageBase64(BotData data, bool fullPage = false, bool omitBackground = false)
        {
            data.Logger.LogHeader();

            var page    = GetPage(data);
            var options = new ScreenshotOptions
            {
                FullPage       = fullPage,
                OmitBackground = omitBackground,
                Type           = omitBackground ? ScreenshotType.Png : ScreenshotType.Jpeg
            };
            var base64 = await page.ScreenshotBase64Async(options);

            data.Logger.Log($"Took a screenshot of the {(fullPage ? "full" : "visible")} page as base64", LogColors.DarkSalmon);
            return(base64);
        }
Exemple #11
0
        public virtual async Task <Stream> CreateFromScreenshot(string URL, string ChromePath = null, eImageMode ImageMode = eImageMode.None)
        {
            var browser = await this.CreateWebBrowser(ChromePath);

            var webPage = await browser.NewPageAsync();

            await webPage.GoToAsync(URL);

            var screenshotOptions = new ScreenshotOptions
            {
                FullPage = true,
                Quality  = 100,
                Type     = ScreenshotType.Jpeg
            };

            return(await webPage.ScreenshotStreamAsync(screenshotOptions));
        }
Exemple #12
0
        public async Task <string> Execute()
        {
            try
            {
                // Configures the screenshot
                ScreenshotOptions screenshotOptions = new ScreenshotOptions
                {
                    Type           = ScreenshotType.Png,
                    OmitBackground = true
                };

                // The file path to be saved
                string filename = $"{Environment.CurrentDirectory}/wwwroot/{DateTime.Now.ToString("yyyyMMdd_hhmmss")}.png";
                await PuppeteerPage.ScreenshotAsync(filename, screenshotOptions);

                // returns only the last element (filename + extension).
                return(filename.Split('/')[^ 1]);
        public static async Task screenshotFormat(string[] newFile, string Format, string URL)
        {
            await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
            var browser = await Puppeteer.LaunchAsync(new LaunchOptions
            {
                Headless = true
            });

            var page = await browser.NewPageAsync();

            await page.GoToAsync(URL);

            var ScreenShot = new ScreenshotOptions()
            {
                FullPage = true
            };

            foreach (string fl in newFile)
            {
                if (fl.Contains("screenshot"))
                {
                    var result  = Path.GetFileNameWithoutExtension(fl);
                    var Replace = result.Replace("screenshot-", "");
                    var counter = int.Parse(Replace) + 1;
                    if (Format == "png" || Format == "jpg")
                    {
                        await page.ScreenshotAsync($"screenshot-0{counter}.{Format}", ScreenShot);
                    }
                    else
                    {
                        await page.PdfAsync($"screenshot-0{counter}.{Format}");
                    }
                }
            }

            if (Format == "png" || Format == "jpg")
            {
                await page.ScreenshotAsync($"screenshot-0{1}.{Format}", ScreenShot);
            }
            else
            {
                await page.PdfAsync($"screenshot-0{1}.{Format}");
            }
            await page.CloseAsync();
        }
Exemple #14
0
        private async void button2_Click(object sender, EventArgs e)
        {
            //获取最后的标签页
            var page = (await browser.PagesAsync()).Last();
            var path = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "screenshot.jpg");

            //设置截图选项
            ScreenshotOptions screenshotOptions = new 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           = ScreenshotType.Jpeg; //截图格式
            await page.ScreenshotAsync(path, screenshotOptions);

            MessageBox.Show($"截图已经保存至{path}");
        }
        public static async Task fileName(string url, string nama, string format)
        {
            await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
            var browser = await Puppeteer.LaunchAsync(new LaunchOptions {
                Headless = true
            });

            var page = await browser.NewPageAsync();

            await page.GoToAsync(url);

            var optionScreen = new ScreenshotOptions()
            {
                FullPage = true
            };
            await page.ScreenshotAsync($"{nama}{format}");

            await browser.CloseAsync();
        }
Exemple #16
0
        public virtual async Task SaveFromScreenshot(string URL, string FilePath, string ChromePath = null)
        {
            var browser = await this.CreateWebBrowser(ChromePath);

            var webPage = await browser.NewPageAsync();

            await webPage.GoToAsync(URL);

            var screenshotOptions = new ScreenshotOptions
            {
                FullPage = true,
                Quality  = 100,
                Type     = ScreenshotType.Jpeg
            };

            using (var screenshotStream = await webPage.ScreenshotStreamAsync(screenshotOptions))
                using (var image = Image.FromStream(screenshotStream))
                    image.Save(FilePath);
        }
Exemple #17
0
        public static async Task screenshot(string url, string format)
        {
            await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
            var browser = await Puppeteer.LaunchAsync(new LaunchOptions
            {
                Headless = true
            });

            var page = await browser.NewPageAsync();

            await page.GoToAsync(url);

            var optScreen = new ScreenshotOptions()
            {
                FullPage = true
            };

            if (format == "jpg" || format == "png")
            {
                if (format == "jpg")
                {
                    var change = url.Replace("/", "_").Replace(":", "_");
                    await page.ScreenshotAsync($"{change}.{format}", optScreen);

                    await page.CloseAsync();
                }
                else if (format == "png")
                {
                    var change = url.Replace("/", "_").Replace(":", "_");
                    await page.ScreenshotAsync($"{change}.{format}", optScreen);

                    await page.CloseAsync();
                }
            }
            else if (format == "pdf")
            {
                var change = url.Replace("/", "_").Replace(":", "_");
                await page.PdfAsync($"{change}.{format}");

                await page.CloseAsync();
            }
        }
        public static async Task screenshotOutput(string[] newFile, string Output, string URL, string Format)
        {
            await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
            var browser = await Puppeteer.LaunchAsync(new LaunchOptions
            {
                Headless = true
            });

            var page = await browser.NewPageAsync();

            await page.GoToAsync(URL);

            var ScreenShot = new ScreenshotOptions()
            {
                FullPage = true
            };

            foreach (string fl in newFile)
            {
                if (File.Exists(fl))
                {
                    if (Format == "png" || Format == "jpg")
                    {
                        await page.ScreenshotAsync($"{Output}", ScreenShot);
                    }
                    else
                    {
                        await page.PdfAsync($"{Output}");
                    }
                }
            }

            if (Format == "png" || Format == "jpg")
            {
                await page.ScreenshotAsync($"{Output}", ScreenShot);
            }
            else
            {
                await page.PdfAsync($"{Output}");
            }
            await page.CloseAsync();
        }
        public async Task <IMagickImage> TakeScreenshot()
        {
            // Hide Scroll Bars, Trigger Resize Event, Scroll to top
            SeleniumUtils.ToggleScrollBars(_driver, false);
            SeleniumUtils.TriggerJSResizeEvent(_driver);
            // TODO Hide/Remove elements if told
            SeleniumUtils.NormalScroll(_driver, 0, 0);

            // Let the browser catch up
            await Task.Delay(250);

            var seOpts     = new ScreenshotOptions();
            var dimensions = SeleniumUtils.GetPageDimensions(_driver);
            var shot       = SeleniumUtils.MakeAreaScreenshot(_driver, 0, 0, dimensions.PageWidth, dimensions.PageHeight, seOpts);

            // Show Scrollbars again
            // TODO UnHide/UnRemove elements if told
            SeleniumUtils.ToggleScrollBars(_driver, true);

            return(shot);
        }
Exemple #20
0
        public static async Task <string> Capture(string url, string path)
        {
            //return string: path+filename.png
            var currentDirectory = Directory.GetCurrentDirectory();
            var downloadPath     = Path.Combine(currentDirectory, "CustomChromium");

            Console.WriteLine($"Attemping to set up puppeteer to use Chromium found under directory {downloadPath} ");

            if (!Directory.Exists(downloadPath))
            {
                Console.WriteLine("Custom directory not found. Creating directory");
                Directory.CreateDirectory(downloadPath);
            }

            Console.WriteLine("Downloading Chromium...");

            var browserFetcherOptions = new BrowserFetcherOptions {
                Path = downloadPath
            };
            var browserFetcher = new BrowserFetcher(browserFetcherOptions);
            await browserFetcher.DownloadAsync(BrowserFetcher.DefaultRevision);

            var executablePath = browserFetcher.GetExecutablePath(BrowserFetcher.DefaultRevision);

            if (string.IsNullOrEmpty(executablePath))
            {
                Console.WriteLine("Custom Chromium location is empty. Unable to start Chromium. Exiting.\n Press any key to continue");
                Console.ReadLine();
            }

            Console.WriteLine($"Attemping to start Chromium using executable path: {executablePath}");

            var options = new LaunchOptions {
                Headless = true, ExecutablePath = executablePath
            };

            using (var browser = await Puppeteer.LaunchAsync(options))
                using (var page = await browser.NewPageAsync())
                {
                    await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
                    await page.SetViewportAsync(new ViewPortOptions { Width = 1920, Height = 1080 });

                    var waitUntil = new NavigationOptions {
                        Timeout = 0, WaitUntil = new[] { WaitUntilNavigation.Networkidle0 }
                    };
                    await page.GoToAsync(url, waitUntil);

                    #region Screenshot Dashboard:
                    var optionsScreenShot = new ScreenshotOptions {
                        FullPage = true
                    };
                    //Đường dẫn lưu file
                    if (!Directory.Exists(path))
                    {
                        Console.WriteLine("SavePath directory not found. Creating directory");
                        Directory.CreateDirectory(path);
                    }
                    string date       = DateTime.Now.ToString("yyyyMMddHHmmss");
                    var    outputfile = path + "/capture_" + date + ".png";
                    await page.ScreenshotAsync(outputfile, optionsScreenShot);

                    #endregion
                    await page.CloseAsync();

                    //return string = path+filename.png
                    return(outputfile);
                }
        }
Exemple #21
0
        public static async Task screenshotoutput(string url, string output)
        {
            await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
            var browser = await Puppeteer.LaunchAsync(new LaunchOptions
            {
                Headless = true
            });

            var page = await browser.NewPageAsync();

            await page.GoToAsync(url);

            var optScreen = new ScreenshotOptions()
            {
                FullPage = true
            };

            var hasil   = output.LastIndexOf(".") + 1;
            var jawaban = output.Substring(hasil, 3);

            if (jawaban == "jpg")
            {
                string[] files = Directory.GetFiles(Directory.GetCurrentDirectory(), "*.jpg");
                foreach (string file in files)
                {
                    if (File.Exists(file))
                    {
                        await page.ScreenshotAsync($"{output}", optScreen);
                    }
                }
                await page.ScreenshotAsync($"{output}", optScreen);

                await page.CloseAsync();
            }

            if (jawaban == "png")
            {
                string[] files = Directory.GetFiles(Directory.GetCurrentDirectory(), "*.jpg");
                foreach (string file in files)
                {
                    if (File.Exists(file))
                    {
                        await page.ScreenshotAsync($"{output}", optScreen);
                    }
                }
                await page.ScreenshotAsync($"{output}", optScreen);

                await page.CloseAsync();
            }

            if (jawaban == "pdf")
            {
                string[] files = Directory.GetFiles(Directory.GetCurrentDirectory(), "*.jpg");
                foreach (string file in files)
                {
                    if (File.Exists(file))
                    {
                        await page.PdfAsync($"{output}");
                    }
                }
                await page.PdfAsync($"{output}");

                await page.CloseAsync();
            }
        }
Exemple #22
0
        public static async Task screenshot(string url, string format)
        {
            await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
            var browser = await Puppeteer.LaunchAsync(new LaunchOptions
            {
                Headless = true
            });

            var page = await browser.NewPageAsync();

            await page.GoToAsync(url);

            var optScreen = new ScreenshotOptions()
            {
                FullPage = true
            };

            if (format == "jpg" || format == "png")
            {
                if (format == "jpg")
                {
                    string[] files = Directory.GetFiles(Directory.GetCurrentDirectory(), "*.jpg");
                    foreach (string file in files)
                    {
                        if (file.Contains("screenshot"))
                        {
                            var hasil  = Path.GetFileNameWithoutExtension(file);
                            var coba   = hasil.Replace("screenshot-", "");
                            var tambah = int.Parse(coba) + 1;
                            await page.ScreenshotAsync($"screenshot-0{tambah}.{format}", optScreen);
                        }
                    }
                    await page.ScreenshotAsync($"screenshot-0{1}.{format}", optScreen);

                    await page.CloseAsync();
                }
                else if (format == "png")
                {
                    string[] files = Directory.GetFiles(Directory.GetCurrentDirectory(), "*.png");
                    foreach (string file in files)
                    {
                        if (file.Contains("screenshot"))
                        {
                            var hasil  = Path.GetFileNameWithoutExtension(file);
                            var coba   = hasil.Replace("screenshot-", "");
                            var tambah = int.Parse(coba) + 1;
                            await page.ScreenshotAsync($"screenshot-0{tambah}.{format}", optScreen);
                        }
                    }
                    await page.ScreenshotAsync($"screenshot-0{1}.{format}", optScreen);

                    await page.CloseAsync();
                }
            }
            else if (format == "pdf")
            {
                string[] files = Directory.GetFiles(Directory.GetCurrentDirectory(), "*.pdf");
                foreach (string file in files)
                {
                    if (file.Contains("screenshot"))
                    {
                        string hasil  = Path.GetFileNameWithoutExtension(file);
                        string coba   = hasil.Replace("screenshot-", "");
                        var    tambah = int.Parse(coba) + 1;
                        await page.PdfAsync($"screenshot-0{tambah}.{format}");
                    }
                }
                await page.PdfAsync($"screenshot-0{1}.{format}");

                await page.CloseAsync();
            }
        }
        static async Task Main(string[] args)
        {
            await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);

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

            var page = await browser.NewPageAsync();

            await page.GoToAsync("https://mobile.craigslist.org/", new NavigationOptions
            {
                WaitUntil = new [] { WaitUntilNavigation.Networkidle0 }
            });

            var searchTextbox = await page.QuerySelectorAsync("#query");

            await searchTextbox.TypeAsync("nintendo switch");

            await searchTextbox.PressAsync(Key.Enter);

            await page.WaitForNavigationAsync(new NavigationOptions
            {
                WaitUntil = new[] { WaitUntilNavigation.Networkidle0 }
            });

            var searchResults = await page.EvaluateExpressionAsync <List <SearchResult> >(@"
                (function () {
                  let resultNodes = document.querySelectorAll('.rows > *');
                  let searchResults = [];

                  for (let i = 0; i < resultNodes.length; i++) {
                    let node = resultNodes[i];

                    let shouldStop = node.classList.contains('nearby');
                    if (shouldStop) {
                      break;
                    }

                    let title = node.querySelector('.result-title').innerText;

                    let isValid = title.toLowerCase().indexOf('nintendo switch') >= 0;
                    if (!isValid) {
                      continue;
                    }

                    let date = node.querySelector('.result-date').getAttribute('title');
                    let amount = node.querySelector('.result-price').innerText;

                    let locationNode = node.querySelector('.result-hood');
                    let location = locationNode !== null ? locationNode.innerText : null;

                    let imgNode = node.querySelector('.result-image img');
                    let imageSrc = imgNode !== null ? imgNode.getAttribute('src') : null;

                    let resultUrl = node.querySelector('.result-title').getAttribute('href');

                    let searchResult = {
                      title: title,
                      date: date,
                      amount: amount,
                      location: location,
                      imageSrc: imageSrc,
                      resultUrl: resultUrl,
                      newFieldHere: 'Sabotage!'
                    };

                    searchResults.push(searchResult);
                  }

                  return searchResults;
                })();

            ");

            var serializedResults = JsonConvert.SerializeObject(searchResults, Formatting.Indented);

            Console.WriteLine(serializedResults);
            Console.WriteLine($"Total results: {searchResults.Count}");

            var originalWidth = page.Viewport.Width;

            await SetViewportWidth(page, 1920);

            var screenshotOptions = new ScreenshotOptions
            {
                FullPage = true
            };
            await page.ScreenshotAsync("hello-puppeteer-gang.jpeg", screenshotOptions);

            await SetViewportWidth(page, originalWidth);

            browser.Dispose();
        }
        public static async Task ScreenShot(string url, string format)
        {
            await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
            var browser = await Puppeteer.LaunchAsync(new LaunchOptions {
                Headless = false
            });

            var page = await browser.NewPageAsync();

            await page.GoToAsync(url);

            var optionScreen = new ScreenshotOptions()
            {
                FullPage = true
            };

            if (format == "pdf")
            {
                string   path    = "D:/TRAININGC#/JANUARI/23Januari APP CMD/Task/program8";
                string[] getFile = Directory.GetFiles(path);
                foreach (string item in getFile)
                {
                    int    counter   = 1;
                    string file_name = Path.GetFileNameWithoutExtension(item);
                    string final     = file_name.Replace("screenshot-", "");
                    if (final == Convert.ToString(counter))
                    {
                        counter++;
                        await page.ScreenshotAsync("screenshot-" + counter + ".pdf");
                    }
                    else
                    {
                        await page.ScreenshotAsync("screenshot-" + counter + ".pdf");
                    }
                }
            }
            else if (format == "jpg")
            {
                string   loc     = "D:/TRAININGC#/JANUARI/23Januari APP CMD/Task/program8";
                string[] getFile = Directory.GetFiles(loc);
                foreach (string item in getFile)
                {
                    int    count     = 1;
                    string file_name = Path.GetFileNameWithoutExtension(item);
                    string final     = file_name.Replace("screenshot-", "");
                    if (final == Convert.ToString(count))
                    {
                        count++;
                        await page.ScreenshotAsync("screenshot-" + count + ".jpg");
                    }
                    else
                    {
                        await page.ScreenshotAsync("screenshot-" + count + ".jpg");
                    }
                }
            }
            else
            {
                string   path    = "D:/TRAININGC#/JANUARI/23Januari APP CMD/Task/program8";
                string[] getFile = Directory.GetFiles(path);
                foreach (string item in getFile)
                {
                    int    count     = 1;
                    string file_name = Path.GetFileNameWithoutExtension(item);
                    string final     = file_name.Replace("screenshot-", "");
                    if (final == Convert.ToString(count))
                    {
                        count++;
                        await page.ScreenshotAsync("screenshot-" + count + ".png");
                    }
                    else
                    {
                        await page.ScreenshotAsync("screenshot-" + count + ".png");
                    }
                }
            }
        }
        public async Task <Stream> Post([FromBody] RequestedData data)
        {
            try
            {
                var browser = await Puppeteer.LaunchAsync(new LaunchOptions
                {
                    IgnoreHTTPSErrors = true,
                    Headless          = true,
                    Args = new string[] { "--no-sandbox" }
                }).ConfigureAwait(false);

                using (var page = await browser.NewPageAsync().ConfigureAwait(false))
                {
                    await page.SetViewportAsync(new ViewPortOptions { Width = 1600, DeviceScaleFactor = 1 });

                    var hasHeader = data.Headers?.Any() ?? false;
                    var hasCookie = data.Cookies?.Any() ?? false;

                    if (hasHeader)
                    {
                        await page.SetExtraHttpHeadersAsync(data.Headers);
                    }

                    if (hasCookie)
                    {
                        var           cookieArray = data.Cookies.Trim().Trim(';').Split(';');
                        var           cookieCount = cookieArray.Length;
                        CookieParam[] cookiePrams = new CookieParam[cookieCount];
                        for (int i = 0; i < cookieCount; i++)
                        {
                            var cookieValues = cookieArray[i].Split('=');
                            cookiePrams[i] = new CookieParam
                            {
                                Url   = data.Url,
                                Name  = cookieValues[0].Trim(),
                                Value = cookieValues[1].Trim()
                            };
                        }

                        await page.SetCookieAsync(cookiePrams).ConfigureAwait(false);
                    }

                    Stream resultStream = new MemoryStream();

                    await page.GoToAsync(data.Url, WaitUntilNavigation.Networkidle0);

                    if (data.Format.Equals("pdf"))
                    {
                        resultStream = await page.PdfStreamAsync(new PdfOptions()
                        {
                            PrintBackground = true, Scale = 1
                        });

                        await page.CloseAsync().ConfigureAwait(false);
                    }
                    else if (data.Format.Equals("png"))
                    {
                        ScreenshotOptions screenshotOptions = new ScreenshotOptions()
                        {
                            FullPage = true
                        };

                        resultStream = await page.ScreenshotStreamAsync(screenshotOptions);

                        await page.CloseAsync().ConfigureAwait(false);
                    }

                    await page.CloseAsync().ConfigureAwait(false);

                    await browser.CloseAsync().ConfigureAwait(false);

                    return(resultStream);
                }
            }
            catch (Exception exMsg)
            {
                using (Stream stream = new MemoryStream())
                {
                    exMsg.Message.ToString();
                    return(stream);
                }
            }
        }
Exemple #26
0
        public static async Task SS(string url, string format)
        {
            //UTAMA
            await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
            var browser = await Puppeteer.LaunchAsync(new LaunchOptions
            {
                Headless = false
            });

            var page = await browser.NewPageAsync();

            await page.GoToAsync(url);

            var optionScreen = new ScreenshotOptions()
            {
                FullPage = true
            };

            if (format == "pdf")
            {
                string   path    = "D:/Users/bsi50130/Desktop/app7";
                string[] getFile = Directory.GetFiles(path);
                foreach (string x in getFile)
                {
                    int    counter = 1;
                    string data    = Path.GetFileNameWithoutExtension(x);
                    string data1   = data.Replace("screenshot--", "");
                    if (data1 == Convert.ToString(counter))
                    {
                        counter++;
                        await page.ScreenshotAsync("screenshot--" + counter + ".pdf");
                    }
                    else
                    {
                        await page.ScreenshotAsync("screenshot--" + counter + ".pdf");
                    }
                }
            }
            else if (format == "jpg")
            {
                string   path    = "D:/Users/bsi50130/Desktop/app7";
                string[] getFile = Directory.GetFiles(path);
                foreach (string x in getFile)
                {
                    int    counter = 1;
                    string data    = Path.GetFileNameWithoutExtension(x);
                    string data1   = data.Replace("screenshot--", "");
                    if (data1 == Convert.ToString(counter))
                    {
                        counter++;
                        await page.ScreenshotAsync("screenshot--" + counter + ".jpg");
                    }
                    else
                    {
                        await page.ScreenshotAsync("screenshot--" + counter + ".jpg");
                    }
                }
            }
            else
            {
                string   path    = "D:/Users/bsi50130/Desktop/app7";
                string[] getFile = Directory.GetFiles(path);
                foreach (string x in getFile)
                {
                    int    counter = 1;
                    string data    = Path.GetFileNameWithoutExtension(x);
                    string data1   = data.Replace("screenshot--", "");
                    if (data1 == Convert.ToString(counter))
                    {
                        counter++;
                        await page.ScreenshotAsync("screenshot--" + counter + ".png");
                    }
                    else
                    {
                        await page.ScreenshotAsync("screenshot--" + counter + ".png");
                    }
                }
            }
        }
        public async Task <byte[]> ScreenshotPNG(string url, IEnumerable <CookieParam> cookies, ViewPortOptions viewport, ScreenshotOptions options, RevisionInfo revision)
        {
            LaunchOptions launchOptions = new LaunchOptions()
            {
                ExecutablePath  = revision.ExecutablePath,
                Args            = BrowserArgs,
                Headless        = true,
                DefaultViewport = viewport,
                Timeout         = 0
            };

            browser = await Puppeteer.LaunchAsync(launchOptions);

            try {
                var page = await browser.NewPageAsync();

                try {
                    NavigationOptions navigationOptions = new NavigationOptions()
                    {
                        Timeout = 0
                    };

                    string originalUserAgent = await browser.GetUserAgentAsync();

                    await page.SetUserAgentAsync($"{originalUserAgent} {USER_AGENT_SUFFIX}");

                    if (cookies.Any())
                    {
                        await page.SetCookieAsync(cookies.ToArray());
                    }

                    await page.GoToAsync(url, navigationOptions);

                    return(await page.ScreenshotDataAsync(options));
                } finally {
                    await Cleanup(page);
                }
            } finally {
                Cleanup(browser);
            }
        }