[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 및 스프링 프레임워크 공식 문서를 참고하시기 바랍니다.
참고자료
- Apache FOP 공식 사이트: https://xmlgraphics.apache.org/fop/
- 스프링 프레임워크 공식 사이트: https://spring.io/