private static async Task SetImageHeaderAsync(string title, PuppeteerPdfOptions pdfOptions) { pdfOptions.DisplayHeaderFooter = true; pdfOptions.HeaderTemplate = await CreateHeaderHtmlAsync(title, pdfOptions); pdfOptions.FooterTemplate = @"<span></span>"; }
private PuppeteerPdfOptions GetPdfOptionsAsync(PdfOptions options) { var pdfOptions = new PuppeteerPdfOptions { MarginOptions = new MarginOptions { Top = options?.MarginTop ?? _config.MarginTop, Right = options?.MarginRight ?? _config.MarginRight, Bottom = options?.MarginBottom ?? _config.MarginBottom, Left = options?.MarginLeft ?? _config.MarginLeft }, PrintBackground = options?.PrintBackground ?? _config.PrintBackground }; if (options?.Format != null) { pdfOptions.Format = PdfHelper.ParsePaperFormat(options.Format); } else { pdfOptions.Width = options?.PaperWidth ?? _config.PaperWidth; pdfOptions.Height = options?.PaperHeight ?? _config.PaperHeight; } return(pdfOptions); }
private async void btn_SaveAsPDF_Click(object sender, RoutedEventArgs e) { //打开网页的操作跟上面是一样的 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); //访问页面 //设置PDF选项 PuppeteerSharp.PdfOptions pdfOptions = new PuppeteerSharp.PdfOptions(); pdfOptions.DisplayHeaderFooter = false; //是否显示页眉页脚 pdfOptions.FooterTemplate = ""; //页脚文本 var width = await page.EvaluateFunctionAsync <int>("function getWidth(){return document.body.scrollWidth}"); var height = await page.EvaluateFunctionAsync <int>("function getHeight(){return document.body.scrollHeight}"); pdfOptions.Width = $"{width}px"; pdfOptions.Height = $"{height}px"; pdfOptions.HeaderTemplate = ""; //页眉文本 pdfOptions.Landscape = false; //纸张方向 false-垂直 true-水平 pdfOptions.MarginOptions = new PuppeteerSharp.Media.MarginOptions() { Bottom = "0px", Left = "0px", Right = "0px", Top = "0px" }; //纸张边距,需要设置带单位的值,默认值是None pdfOptions.Scale = 1m; //PDF缩放,从0-1 pdfOptions.PrintBackground = true; var fileName = Environment.CurrentDirectory + $"\\download\\{await page.GetTitleAsync()}.pdf"; if (System.IO.File.Exists(fileName)) { fileName = fileName.Replace(".pdf", $"{DateTime.Now.ToString("ffff")}.pdf"); } //保存PDF await page.PdfAsync(fileName, pdfOptions); EMessageBox.Show($"{fileName}保存成功"); //在最后记得关闭浏览器及释放资源 browser.Disconnect(); browser.Dispose(); } catch (Exception ex) { EMessageBox.Show(ex.Message); } }
private static async Task <string> CreateHeaderHtmlAsync(string title, PuppeteerPdfOptions pdfOptions) { var template = await TemplatingHelper.GetTemplateAsync("header.html"); var parameters = new Dictionary <string, string>() { { "title", title }, { "marginTop", pdfOptions.MarginOptions.Top }, { "marginRight", pdfOptions.MarginOptions.Right }, { "marginLeft", pdfOptions.MarginOptions.Left }, }; return(TemplatingHelper.FormatHtml(template, parameters)); }