0

servicestack을 사용하여 새 창에서 PDF를 열어야합니다. 나는 PDF의 MemoryStream을 가지고 있으며 브라우저에 PDF를 다운로드 할 수있다. 내 문제는 새로운 탭에서 PDF를 여는 방법을 파악할 수 없다는 것입니다. 이 code을 사용하여 서비스 스택에서 pdf를 다운로드했습니다.새 탭에서 PDF 열기

<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

당신은 첨부 파일로 내용 - 처리를 사용하고 있습니다 :

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

내가 사용하고있는 앵커 태그입니다. 이런 식으로 인라인으로 변경하십시오.

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

브라우저 창에서 pdf 파일을 열 것입니다. 그러나 브라우저에는 반드시 pdf 파일을 열 수있는 플러그인이 있어야합니다.