获取页面的整个HTML + CSS + JS,并将其发送到web服务

本文关键字:服务 web JS CSS HTML 获取 | 更新日期: 2023-09-27 18:17:03

我正在用c#编写一个web服务,使用NReco.PdfConverterwkhtml将网页转换为PDF文件。

web页面(在SharePoint上)需要授权,并且还包含用户需要填写的表单,因此web服务不能简单地访问该页面的URL并下载它。

JavaScript和CSS文件对于正确呈现表单也很重要,包括来自SharePoint的许多JS文件和样式表。

到目前为止,我最好的想法是:

  • 当用户点击"Generate PDF"时,JavaScript会将整个当前页面转换为一个字符串(内联添加CSS文件和JS文件);

  • POST的字符串到webservice使用$.ajax()

  • 使用NReco.PdfConverter,将该字符串转换为PDF并将其保存到文件中是很简单的:

    var converter = new HtmlToPdfConverter
    {
        Margins = new PageMargins
        {
            Top = 0,
            Bottom = 0,
            Left = 0,
            Right = 0
         },
         CustomWkHtmlArgs = "--print-media-type"
    };
    converter.GeneratePdf(htmlContent);
    

如何在浏览器中生成单页HTML(包括复选框的状态、表单中的文本等)?

是非常复杂的东西吗?有人知道另一种解决方案吗?

获取页面的整个HTML + CSS + JS,并将其发送到web服务

您可以使用适当的wkhtmltopdf选项传递授权cookie(或header),例如(如果使用WebForms身份验证):

var pdfGen = new HtmlToPdfConverter();
pdfGen.CustomWkHtmlArgs  = String.Format(" --cookie {0} {1} ",
  FormsAuthentication.FormsCookieName,  
  Request.Cookies[FormsAuthentication.FormsCookieName] );
pdfGen.GeneratePdfFromFile("your_sharepoint_web_page_url", null, "output.pdf");

——

基本授权:

pdfGen.CustomWkHtmlArgs  = String.Format(" --username {0} --password {1}", username, pwd );