2012-03-31 132 views
0

我真的很感謝你的建議。我使用的是MVC3,我希望用戶通過打開一個受密碼保護的對話框保存到自己的路徑。你們能幫我解決這個問題嗎?如何打開保存對話框保存pdf

下面是我的代碼:

mydoc.GenerateLetter(PdfData);    

string WorkingFolder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 

using (MemoryStream m = new MemoryStream()) 
{ 
    m.Write(mydoc.DocumentBytes, 0, mydoc.DocumentBytes.Length); 
    m.Seek(0, SeekOrigin.Begin); 
    string OutputFile = Path.Combine(WorkingFolder, PdfData.Name + ".pdf"); 

    using (Stream output = new FileStream(OutputFile, FileMode.Create, FileAccess.Write, FileShare.None)) 
    { 
     PdfReader reader = new PdfReader(m); 
     PdfEncryptor.Encrypt(reader, output, true, "abc123", "secret", PdfWriter.ALLOW_SCREENREADERS); 
    } 
}  

回答

1

如果你想顯示另存爲對話框,以便用戶可以選擇保存在他的計算機上的PDF文件,你可以使用內容處置HTTP標頭的位置並將其設置爲附件。現在,當用戶瀏覽到該控制器動作

public ActionResult DownloadPdf() 
{ 
    var mydoc = ... 
    mydoc.GenerateLetter(PdfData); 
    byte[] pdf = mydoc.DocumentBytes; 
    var reader = new PdfReader(pdf); 
    using (var encrypted = new MemoryStream()) 
    { 
     PdfEncryptor.Encrypt(reader, encrypted, true, "abc123", "secret", PdfWriter.ALLOW_SCREENREADERS); 
     return File(encrypted.ToArray(), "application/pdf", PdfData.Name + ".pdf"); 
    } 
} 

:另外,在ASP.NET MVC應用程序,而不是將文件保存到服務器(這是你的代碼目前做),你應該把它流式傳輸到客戶端/SomeController/DownloadPdf他將看到另存爲對話框,允許他下載加密的PDF文件並將其存儲在他的計算機上的選定位置。