2010-08-23 40 views
2

我有一個ASP.NET網站,並從我需要生成一個PDF文檔,其中包含用戶選擇的一組網頁的輸出的網頁之一。我把它叫做「批量PDF」。基本上,要求用戶選擇她需要將哪些網頁放入PDF中,然後單擊一個按鈕,該按鈕創建一個包含所有選定網頁的PDF。PDF生成的設計

爲此,我通過查詢字符串發送選定頁面的列表(它們的ID),並在服務器上爲查詢字符串中的每個網頁ID發送一個到本地主機的http請求並獲取頁面的來自此請求的PDF(我有Request.Filter,它將HTML轉換爲PDF)。然後,它將所有PDF流合併成一個PDF並將其轉儲到響應流中。一切正常。

但我想用AJAX來做。目前,打開一個新的瀏覽器窗口,用戶必須等待服務器完成才能看到頁面。相反,我想發送一個AJAX請求,並在PDF生成完成後顯示PDF。

這樣做的一種方法是,當AJAX發送請求並重定向到該文件時,將PDF寫入服務器上的文件,但有沒有辦法避免與文件混淆?例如,我可以將整個PDF放入會話中嗎?任何其他想法?

謝謝。

回答

0

而不是會話,爲什麼不把所有東西放到內存流中?閱讀HTML網頁的內容,生成您的字節輸出,並且這樣做:

[HttpGet] 
public ActionResult PreviewPDF() 
{ 
    // ... 
    // The PDF file stream. 
    MemoryStream pdf = PDF.Render(xmldata, xslfo); 
    return new FileStreamResult(pdf, "application/pdf"); 
} 

此外,一個簡單的問題:你是如何在地球上變換你的網頁轉換成PDF,您使用的第三方工具?

+0

感謝您的幫助。我做了類似的事情。爲了將頁面轉換爲PDF,我使用了一個稱爲ABCPdf的第三方工具,它接受HTML併發出PDF。這裏是一個相關的討論:http://stackoverflow.com/questions/564650/convert-html-to-pdf-in-net – akonsu 2010-12-13 17:36:01