복붙노트

[SPRING] 웹 페이지에 PDF 표시

SPRING

웹 페이지에 PDF 표시

Spring MVC를 사용하고 있는데, 로컬에서 웹 페이지로 PDF 파일을 표시하고 싶다. 이 작업을 수행하기 위해 컨트롤러에 어떻게해야하는지 모르겠습니다. 나는이 질문에서 ResponseEntity 를 반환하는 답변과 비슷한 몇 가지 문제점을 보았습니다. 그러나이 질문은 잘못된 것이 아니라면 아약스를위한 것입니다. 이것은 제 요구 사항이 아닙니다.

최신 정보:

이것은 내가 지금까지 시도한 것이다 :

<a href="#" onClick="test();" >test</a>

function test(){
      $.ajax({
    type: "POST",
    url: "../admin/module/id.do",
    data: '{ file_id }',
    success: function(response){
           alert(response);
             }
      });
}

그리고 컨트롤러 :

@RequestMapping( value = "/admin/module/id", method = RequestMethod.POST )
    public ResponseEntity<byte[]> getPDF( @PathVariable( "id" )
    int id, Model model )
    {
        System.out.println( "test" );
        Path path = Paths.get( "C:/Users/FORSAK~1/AppData/Local/Temp/spring_tutorial.pdf" );
        byte[] contents = null;
        try
        {
            contents = Files.readAllBytes( path );
        }
        catch( IOException e )
        {

            e.printStackTrace();
        }
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType( MediaType.parseMediaType( "application/pdf" ) );
        String filename = "spring_tutorial.pdf";
        headers.setContentDispositionFormData( filename, filename );
        ResponseEntity<byte[]> response = new ResponseEntity<byte[]>( contents, headers, HttpStatus.OK );
        return response;
    }

경고 (응답)가 작동하지 않으며 또한 System.out.println ( "test");

방화 광에서 발생한 오류는 "NetworkError : 500 내부 서버 오류 - http : // localhost : 8080 / ThesisProject / admin / module / id.do"입니다.

스택 트레이스 :

java.lang.IllegalStateException: Could not find @PathVariable [id] in @RequestMapping
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter$ServletHandlerMethodInvoker.resolvePathVariable(AnnotationMethodHandlerAdapter.java:857)
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolvePathVariable(HandlerMethodInvoker.java:710)
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:360)
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:171)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:444)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:432)
    ....

해결법

  1. ==============================

    1.시작하려면 예외는 매우 간단합니다.

    시작하려면 예외는 매우 간단합니다.

    java.lang.IllegalStateException: Could not find @PathVariable [id] in @RequestMapping
    

    그리고 당신이 가진 것은

    @RequestMapping( value = "/admin/module/id", method = RequestMethod.POST )
    

    경로 변수를 선언하지 않고 특정 경로 만 선언합니다. id는 요청 매개 변수로 전달됩니다.

    data: '{ file_id }',
    

    그건 그렇고 잘못 됐어, 내가해야한다고 생각해.

    data: { id: file_id },
    

    대신 @RequestParam (value = "id") 매개 변수에 주석을 달아주세요.

  2. from https://stackoverflow.com/questions/19625271/display-pdf-in-a-webpage by cc-by-sa and MIT license