2016-11-08 45 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

我添加的代碼段爲基本身份驗證答案 –

相關問題