0

我需要使用服務堆棧在新窗口中打開PDF。我有一個PDF的MemoryStream並能夠將PDF下載到瀏覽器。我的問題是我無法確定如何在新選項卡中打開PDF。我已使用此code從服務堆棧下載pdf。在新選項卡中打開PDF

public class PDfResult : IDisposable, IStreamWriter, IHasOptions 
{ 
    private readonly Stream _responsestream = null; 
    public IDictionary<string, string> Options { get; set; } 

    public PDfResult(Stream responseStream) 
    { 
     _responsestream = responseStream; 
     Options = new Dictionary<string, string> 
     { 
      {"Content-Type", "application/pdf"}, 
      {"Content-Disposition", "attachment; filename=\"mypdf.pdf\";"} 
     }; 
    } 

    public void WriteTo(Stream responseStream) 
    { 
     if (_responsestream == null) 
      return; 

     _responsestream.WriteTo(responseStream); 
     responseStream.Flush(); 
    } 

    public void Dispose() 
    { 
     _responsestream.Dispose(); 
    } 
} 

這是我使用的錨標記:

<a class="btn" href="api/myapi?rosType=blank&amp;rId=0&amp;rType=Daily&amp;Pages=1&amp;Weeks=1" target="_blank">Generate PDF</a> 
+0

這是怎麼回事?瀏覽器下載文件而不是查看它是事實嗎?因爲上面看起來很好.. –

+0

上面確實看起來是正確的。我會在多個瀏覽器中測試,因爲並非所有的PDF文件都是相同的 – webbexpert

+0

是的,這是正確的。我需要打開PDF而不是下載。 PDF必須在不同的選項卡或窗口中打開。這可能嗎? – Luke101

回答

5

您使用內容處置作爲附件。將其更改爲像這樣內聯

Options = new Dictionary<string, string> 
    { 
     {"Content-Type", "application/pdf"}, 
     {"Content-Disposition", "inline; filename=\"mypdf.pdf\";"} 
    }; 

這將在瀏覽器窗口中打開pdf文件。但請注意,您的瀏覽器必須具有可打開pdf文件的插件。