2012-03-31 27 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

ユーザーが[コンテンツ-処分HTTPヘッダーを使用することができます自分のコンピュータ上のPDFファイルを保存する場所を選択できるように、Save Asダイアログを表示したい場合は添付ファイルに設定します。また、代わりに(あなたのコードは、現在何をするかである)サーバーにファイルを保存するのASP.NET MVCアプリケーションでは、あなたがそれをクライアントにストリーミングする必要があります。

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

今、ユーザーは、このコントローラのアクションに移動したときに/SomeController/DownloadPdf彼は、彼が暗号化されたPDFファイルをダウンロードし、彼のコンピュータ上の選択された場所に格納することを許可する名前を付けて保存ダイアログが表示されます。

関連する問題