2017-09-13 2 views
1

생성되는 PDF 문서를 다운로드하여 저장할 수 있지만 다운로드하는 대신 브라우저에서 열고 싶습니다. 나는이대신 pdf 파일 열기 (itext 사용) mvc

MemoryStream os = new MemoryStream(); 
PdfWriter writer = new PdfWriter(os); 
var pdfDocument = new PdfDocument(writer); 

using (var document = new Document(pdfDocument)) 
{ 
    //I am adding different sections here 
} 
var response = new HttpResponseMessage 
{ 
    StatusCode = HttpStatusCode.OK, 
    Content = new ByteArrayContent(os.ToArray()) 
}; 

response.Content.Headers.Add("Content-Type", "application/pdf"); 
response.Headers.Add("Content-disposition", "attachment;filename=" + "testPDF.pdf"); 
return response; 

응답과 같이 추가로 컨트롤러에 전송되고 있고 거기가 다운로드되고 있지만 새 브라우저에서 열려. 저에게 "Content-disposition", "attachment; filename"이 작동하지 않습니다.

blob에 저장하고 다운로드를 계속 진행하는 곳에서 컨트롤러에 내 반환 값이 전달됩니다.

public async Task<IActionResult> GenerateDocument(int id) 
    { 
     var result = await _applicationService.GenerateDocument(id); 
     var blobResult = await _applicationService.SaveDocument(id, result.ResponseObject); 

     IActionResult OnSuccess() => 
      new RedirectResult(blobResult.ResponseObject.URI, true); 

     return HandleResult(OnSuccess, blobResult.Status); 
    } 
+0

을 표시 알려 내용 처분에 대한 inline을 사용할 것이지만 것은 나를 위해 그들이 작동하지 않습니다 언급 한 솔루션입니다 .... 나는 내 의견에도 언급했다. – Tina

답변

2

당신은 브라우저가 그것을 내가 비슷한 질문이 알고

//...code removed for brevity 
var buffer = os.ToArray(); 
var contentLength = buffer.Length; 
var statuscode = HttpStatusCode.OK; 
var response = Request.CreateResponse(statuscode); 
response.Content = new ByteArrayContent(buffer); 
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf"); 
response.Content.Headers.ContentLength = contentLength; 
ContentDispositionHeaderValue contentDisposition = null; 
if (ContentDispositionHeaderValue.TryParse("inline; filename=" + "testPDF.pdf", out contentDisposition)) { 
    response.Content.Headers.ContentDisposition = contentDisposition; 
} 
return response; 
+0

코드를 바꾸려고 시도했지만 다운로드가 계속됩니다. 다운로드 부분은 신경 쓰지 않지만 브라우저에서 열어야합니다. 나는 또한 컨트롤러와 관련이 있다고 생각하고있다. – Tina