0
나는 Spring-MVC 애플리케이션을 만들고있다. 이 응용 프로그램에서는 프론트 엔드의 일부 기능을 사용하여 캡처 한 스크린 샷에서 PDF 파일을 만드는 방법을 사용하고 있습니다. 이제는 사용자가 클릭하는 버튼이 있으며 'POST'를 통해 이미지를 보내면 PDF로 변환됩니다. 문제는 이것이 'POST'이기 때문에 정상적인 파일 다운로드 방법을 사용하여 파일을 반환 할 수 없다는 것입니다.Spring-MVC에서 다운로드 링크 만들기
jquery를 사용하여 파일을 다운로드 할 수있는 연구가 있지만, 다운로드 URL이 필요합니다. 나는 스크린 샷을 만들기위한 코드를 게시하고 있습니다. PDF는 친절하게도 다운로드 URL을 만드는 방법을 알려줍니다.
컨트롤러 클래스 :
@RequestMapping(value = "/canvas/screenshot", method = RequestMethod.POST, produces = "application/pdf")
public
@ResponseBody
String saveCanvasScreenshot(@RequestBody String body, Model model,HttpServletResponse response) {
Person person = personService.getCurrentlyAuthenticatedUser();
body = body.substring(30);
String path = "/home/akshay/"+person.getFirstName()+".pdf";
try {
body = URLDecoder.decode(body, "UTF-8");
canvasImageBytes = body.getBytes();
canvasImageBytes = org.apache.commons.codec.binary.Base64.decodeBase64(canvasImageBytes);
Canvas canvas = canvasService.getCanvasById(staticcanvasid);
canvas.setCanvasimage(canvasImageBytes);
canvasService.addCanvas(canvas, person);
boolean b = convertimagetopdf(body);
if(b == true){
// And here I would like to sent the URL back as a String.
}
자바 스크립트 방법 :
$("#pdf-creator").click(function(){
document.styleSheets[4].disabled=true;
var screenshot = $('#main').clone();
renderingScreenshot = true;
setWidthsForScreenshot(screenshot);
html2canvas($('#main'), {
onrendered: function(canvas) {
var img = canvas.toDataURL("image/png");
img = encodeURIComponent(String(img));
$.ajax({
url: baseURL + '/canvas/screenshot',
type: 'POST',
data: img,
success: function(){
document.styleSheets[4].disabled=false;
$('#loading-image').show();
},
error: function(xhr, status, error){
$('body').append(xhr.responseText);
document.styleSheets[4].disabled=false;
$('#loading-image').show();
}
});
}
});
});
initializeGridstack();
_kindly 다운로드 URL을 만드는 방법을 알려주세요. - 나중에 사용하기 위해 PDF를 저장하는 방법을 알려 주시기 바랍니다. – zeroflagL
pdf가 디스크에 저장됩니다 ... 파일 경로가 'path'변수에 있습니다. –
그리고 어디에 문제가 있습니까? 당신은 "정상적인 파일 다운로드 방법을 사용하여 파일을 반환하는"방법을 알고있는 것 같습니다. 따라서 저장된 PDF를 반환하는 다른 컨트롤러 메서드가 있다고 확신합니다. – zeroflagL