[SPRING] 새 창에서 pdf 스트림보기
SPRING새 창에서 pdf 스트림보기
나는 클라이언트에서 보여주고 싶은 PDF 문서를 서버에 생성하고있다. 서버 측은 다음과 같습니다.
ByteArrayOutputStream baos = generatePDF();
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "attachment; filename=file.pdf");
response.setContentLength(baos.size());
baos.writeTo(response.getOutputStream());
클라이언트에서 PDF를 가져 오려면 다음 코드를 사용합니다.
$.ajax({
type: "POST",
url: url,
data: {"data": JSON.stringify(myData)},
success: function(data, textStatus, jqXHR) {
window.open("data:application/pdf," + escape(data));
},
error: function(jqXHR) {
showError("...");
}
});
새로운 창은 열렸지만 PDF는 표시되지 않습니다. 항상 빈 문서로 보입니다.
그럼에도 불구하고 클라이언트가 다음과 같이 보이는 경우 제대로 작동합니다.
var form = $("<form target='_blank'>").attr({
action : myURL,
method : "POST"
});
var input1 = $("<input type='hidden'>").attr({
"name": "data",
value: JSON.stringify(myData)
});
form.append(input1);
$("body").append(form);
form.submit();
form.remove();
하지만 나는 오류를 관리해야하기 때문에 두 번째 방법을 사용할 수 없으며 form.submit ()을 사용하여이를 수행 할 수 없다.
PDF에 어떤 일이 일어나고 있는지 알고 싶습니까?
해결법
-
==============================
1.pdf 스트림의 base64 문자열을 가져와 응답에 전달할 수 있습니다.
pdf 스트림의 base64 문자열을 가져와 응답에 전달할 수 있습니다.
그리고 방법 변경
$.ajax({ type: "POST", url: url, data: {"data": JSON.stringify(myData)}, success: function(data, textStatus, jqXHR) { var pdfWin= window.open("data:application/pdf;base64, " + data, '', 'height=650,width=840'); // some actions with this win, example print... }, error: function(jqXHR) { showError("..."); } });
-
==============================
2.다음을 사용하여 시도해보십시오.
다음을 사용하여 시도해보십시오.
dataType: "application/pdf", success: function(data, textStatus, jqXHR) { window.open(escape(data), "Title", ""); },
-
==============================
3.이 비동기를 수행 할 수 없지만이 js는 첨부 파일을 반환합니다.
이 비동기를 수행 할 수 없지만이 js는 첨부 파일을 반환합니다.
$ ( '
그런 다음 브라우저는 저장 /보기 팝업을 시작합니다. 이는 내 요구 사항에 적합합니다. 비록 오류 처리.
귀하의 서버 측에서 인라인으로 반환하는 것이 좋습니다. response.setHeader ( "Content-Disposition", "inline; filename = file.pdf");
내용 길이를 OK로 설정하면 성공 코드가 스트림 시작 부분에서 처음 두 번 끝에서 두 번 실행됩니다.
이 일이 있다면 저희에게 알려주십시오.
from https://stackoverflow.com/questions/20401006/show-a-pdf-stream-in-a-new-window by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Hibernate는 테이블을 자동으로 생성하지 않는다. (0) | 2019.01.17 |
---|---|
[SPRING] cvc-elt.1 : 'beans'요소의 선언을 찾을 수 없습니다. (0) | 2019.01.17 |
[SPRING] PreAuthorize가 컨트롤러에서 작동하지 않습니다. (0) | 2019.01.17 |
[SPRING] Pageable bean을 인스턴스화하지 못했습니다. (0) | 2019.01.17 |
[SPRING] 스프링 보안 : 초기 타겟 URL을 얻는 방법 (0) | 2019.01.17 |