2011-08-05 3 views
0

lorsque mon utilisateur clique sur un lien je voudrais fournir la boîte de dialogue d'ouverture/de sauvegarde standard pour le pdf, au lieu de l'ouvrir dans le navigateur ... en utilisant le code ffg pour générer le pdf:Fournir l'option ouvrir/enregistrer lorsque pdf s'ouvre dans le navigateur

Document document = new Document(); 
     MemoryStream stream = new MemoryStream(); 
     try 
     { 
      PdfWriter pdfWriter = PdfWriter.GetInstance(document, stream); 
      pdfWriter.CloseStream = false; 

      document.Open(); 
      document.Add(new Paragraph("Hello World")); 
     } 
     catch (DocumentException de) 
     { 
      Console.Error.WriteLine(de.Message); 
     } 
     catch (IOException ioe) 
     { 
      Console.Error.WriteLine(ioe.Message); 
     } 

     document.Close(); 

     stream.Flush(); 
     stream.Position = 0; 
     return File(stream, "application/pdf"); 
+0

juste une supposition, mais Response.AddHeader (« contenu -Disposition "," pièce jointe; "" + attachment.AttachmentName() + "\" "); dans le sens de cela, donc plutôt que de livrer du contenu de type PDF, vous créez une pièce jointe de PDF et cela invite l'utilisateur à enregistrer ou afficher – davethecoder

Répondre

1

Essayez fournir un nom au fichier lors du retour en utilisant le troisième argument de la méthode File:

return File(stream, "application/pdf", "report.pdf"); 
0
Document document = new Document(); 
    FileStream stream = new FileStream("report.pdf", FileMode.Create); 
    try 
    { 
     PdfWriter pdfWriter = PdfWriter.GetInstance(document, stream); 
     pdfWriter.CloseStream = false; 

     document.Open(); 
     document.Add(new Paragraph("Hello World")); 
    } 
    catch (DocumentException de) 
    { 
     Console.Error.WriteLine(de.Message); 
    } 
    catch (IOException ioe) 
    { 
     Console.Error.WriteLine(ioe.Message); 
    } 

    document.Close(); 

    stream.Flush(); 
    stream.Position = 0; 
    return File(stream, "application/pdf"); 
Questions connexes