[java] Apache FOP의 스프링 프레임워크 연동 방법

Apache FOP는 XSL-FO를 사용하여 XML 기반의 문서를 포맷팅하여 PDF나 기타 출력 형식으로 변환할 수 있는 오픈 소스 프로젝트입니다. 스프링 프레임워크를 사용하는 경우, Apache FOP를 스프링 애플리케이션에 통합하여 원하는 결과물을 생성할 수 있습니다.

1. Apache FOP 종속성 추가

첫 번째 단계로는 Maven을 사용하여 Apache FOP를 프로젝트에 추가하는 것입니다. pom.xml 파일에 다음 종속성을 추가합니다.

<dependency>
    <groupId>org.apache.xmlgraphics</groupId>
    <artifactId>fop</artifactId>
    <version>2.6</version>
</dependency>

2. FOP 서비스 생성

스프링 빈으로 Apache FOP 서비스를 생성하여 XML 데이터를 PDF로 변환할 수 있도록 합니다. 예를 들어, 다음과 같이 FOP 서비스를 정의합니다.

import org.apache.fop.apps.FopFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class FopConfig {

    @Bean
    public FopFactory fopFactory() {
        // FopFactory 초기화
        return FopFactory.newInstance();
    }
}

3. FOP 서비스 사용

이제 스프링 빈으로 등록한 FOP 서비스를 사용하여 PDF를 생성할 수 있습니다. 아래는 간단한 예제입니다.

import org.apache.fop.apps.Fop;
import org.apache.fop.apps.FopFactory;
import org.apache.fop.apps.MimeConstants;

import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import java.io.File;
import java.io.OutputStream;
import java.nio.file.Files;

// Autowire the FopFactory bean
public class PdfGenerator {

    private final FopFactory fopFactory;

    public PdfGenerator(FopFactory fopFactory) {
        this.fopFactory = fopFactory;
    }

    public void generatePdf(File xmlFile, File xslFile, OutputStream out) throws Exception {
        Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, out);

        TransformerFactory factory = TransformerFactory.newInstance();
        javax.xml.transform.Transformer transformer = factory.newTransformer(new javax.xml.transform.stream.StreamSource(xslFile));
        Source src = new javax.xml.transform.stream.StreamSource(xmlFile);
        Result res = new javax.xml.transform.sax.SAXResult(fop.getDefaultHandler());

        transformer.transform(src, res);
    }
}

이제 스프링 프레임워크와 Apache FOP를 통합하여 XML을 PDF로 변환하는 기본적인 방법을 알아보았습니다.

자세한 내용은 Apache FOP 및 스프링 프레임워크 공식 문서를 참고하시기 바랍니다.

참고자료