2016-11-08 47 views
0

我正在用C#编写一个Web服务,使用NReco.PdfConverterwkhtml将网页转换为PDF文件。获取页面的整个HTML + CSS + JS,并将其发送到Web服务

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

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

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

  • 当用户点击“生成PDF”,JavaScript就整个当前页面转换成一个字符串(附加的CSS文件和JS文件内联);

  • POST该字符串使用$.ajax()的web服务。

  • 使用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的想法(包括复选框的状态,表单中的文本等)在浏览器中?

这是非常复杂的事情吗?有人知道另一种解决方案吗?

回答

1

可以使用适当wkhtmltopdf选项,例如(如果使用的WebForms认证)通过授权cookie(或报头):

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"); 

--- --- UPDATE

为HTTP基本认证:

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

与CustomWkHtmlArgs工作= “--username LOGIN --password PASS” – K48

+0

我添加的代码段为基本身份验证答案 –

相关问题