Как открыть диалоговое окно сохранения для сохранения PDF - PullRequest
0 голосов
/ 31 марта 2012

Я действительно ценю ваши предложения.Я использую MVC3 и хочу, чтобы пользователь сохранил свой путь, открыв диалоговое окно с защищенным паролем.Ребята, пожалуйста, помогите мне в этом.

Ниже мой код:

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 Ответ

1 голос
/ 01 апреля 2012

Если вы хотите показать диалоговое окно «Сохранить как», чтобы пользователь мог выбрать место для сохранения PDF-файла на своем компьютере, вы можете использовать HTTP-заголовок Content-Disposition и установить его в качестве вложения. Также в приложении 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 и сохранить его в выбранном месте на своем компьютере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...