Spring MVC와 iText 를 이용하여 PDF 문서를 생성해보도록 하겠습니다.
실제 Spring MVC를 이용하지 않고 iText만 이용하여 고품질의 PDF문서를 생성할 수 있다.
하지만 이미 프로젝트내에 Spring MVC를 도입하여 사용을 하고 있는 상황이라면 별도로 MVC를 구성하는것 보다는 아예 Spring MVC를 이용하는것이 편하다.
Spring MVC와 iText를 연동하는데 아래와 같이 4가지 단계가 필요하다.
- web.xml에서 서블릿 선언 및 서블릿 맷핑을 한다.
- pdf-servlet.xml 에서 viewController와 실제 PDF 를 엑세스할 URL을 매퍼를 선언한다.
- viewController 클래스를 만든다.
- pdfView 클래스를 만든다.
web.xml에서 아래와 같이 pdf용 서블릿을 선언하고 서블릿 맵핑을 한다.
[code xml] <!-- PDF Servlet Definition -->
<servlet>
<servlet-name>config/pdf</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<!-- Servlet Mapping For PDF DispatcherServlet -->
<servlet-mapping>
<servlet-name>config/pdf</servlet-name>
<url-pattern>*.pdf</url-pattern>
</servlet-mapping>[/code] 서블릿 명을 config/pdf로 설정하였으므로 우리가 만들어야 할 pdf 서블릿 설정 파일명은 pdf-servlet.xml이 되겠다.
pdf-servlet.xml에서는 실제 pdf 페이지를 요청하였을때 호출할 컨트롤러를 매핑해주는 urlMapping 빈 및 호출될 컨트롤러를 선언해준다. [code xml] <beans> <bean id="beanNameViewResolver" class="org.springframework.web.servlet.view.BeanNameViewResolver" /> <bean id="viewController" class="org.prototype.common.controller.MultiDocumentController" /> <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/viewPDF.pdf">viewController</prop> </props> </property> </bean> </beans> [/code] viewController 클래스는 실제 MultiActionController를 상속 받고 있는데 이렇게 함으로써 하나의 Controller로써 다양한 문서의 출력이 가능하다.
[code java] public class MultiDocumentController extends MultiActionController
{
public ModelAndView viewPDF( HttpServletRequest request,
HttpServletResponse response )
throws Exception
{
List<String> list = new ArrayList<String>();
Map<String, List<String>> model = new HashMap<String, List<String>>();
model.put( "list",list );
BasePdfView pdfView = new BasePdfView();
return new ModelAndView( pdfView, model );
}
}[/code] 마지막으로 BasePdfView 클래스에서 실제 출력할 PDF 에 대한 코딩을 해주고 있음을 알수 있다.
[code java] public class BasePdfView extends AbstractPdfView
{
@SuppressWarnings("unchecked")
protected void buildPdfDocument(Map model, Document document,
PdfWriter writer, HttpServletRequest request,
HttpServletResponse response) throws Exception
{}
}[/code]
댓글 없음:
댓글 쓰기