[java] Java Apache FOP의 API 및 사용 예제
Apache FOP는 Java로 작성된 오픈 소스 프로젝트로, XSL-FO를 사용하여 XML 데이터를 PDF, PNG, AFP 등의 포맷으로 변환할 수 있습니다. 이번 포스트에서는 Apache FOP의 API와 몇 가지 사용 예제에 대해 알아보겠습니다.
1. Apache FOP 라이브러리 추가
먼저, Apache FOP를 사용하기 위해서는 프로젝트에 해당 라이브러리를 추가해야 합니다. Maven을 사용하는 경우, pom.xml
파일에 다음과 같이 의존성을 추가합니다:
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>fop</artifactId>
<version>2.6</version>
</dependency>
Gradle을 사용하는 경우, build.gradle
파일에 다음과 같이 의존성을 추가합니다:
implementation 'org.apache.xmlgraphics:fop:2.6'
2. Apache FOP 사용 예제
2.1. XML 및 XSL-FO 파일 준비
먼저, 변환할 XML 파일과 XSL-FO 파일을 준비해야 합니다. 예를 들어, 다음과 같이 input.xml
과 template.xslfo
파일을 생성합니다:
input.xml:
<root>
<name>John Doe</name>
<age>30</age>
</root>
template.xslfo:
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="A4" page-height="297mm" page-width="210mm">
<fo:region-body margin="20mm"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="A4">
<fo:flow flow-name="xsl-region-body">
<fo:block>
Hello, <xsl:value-of select="/root/name"/>!
Your age is <xsl:value-of select="/root/age"/> years old.
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
2.2. XML과 XSL-FO 파일을 사용하여 PDF로 변환
이제, Java 코드를 작성하여 XML과 XSL-FO 파일을 사용하여 PDF로 변환해 봅시다. 아래 코드 예제를 참고해 주세요:
import java.io.File;
import java.io.FileOutputStream;
import org.apache.fop.apps.Fop;
import org.apache.fop.apps.FopFactory;
import org.apache.fop.apps.MimeConstants;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.sax.SAXResult;
import javax.xml.transform.stream.StreamSource;
public class FOPExample {
public static void main(String[] args) {
try {
// FopFactory 생성
FopFactory fopFactory = FopFactory.newInstance(new File(".").toURI());
// Fop 생성
File outputFile = new File("output.pdf");
FileOutputStream fos = new FileOutputStream(outputFile);
Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, fos);
// XSL-FO 파일 로드
Source xslFoFile = new StreamSource(new File("template.xslfo"));
// XML 파일 로드
Source xmlFile = new StreamSource(new File("input.xml"));
// 변환기 생성
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(xslFoFile);
// 변환 수행
transformer.transform(xmlFile, new SAXResult(fop.getDefaultHandler()));
// 출력 파일 닫기
fos.close();
System.out.println("PDF 변환 완료: " + outputFile.getAbsolutePath());
} catch (Exception e) {
e.printStackTrace();
}
}
}
위 코드에서 input.xml
과 template.xslfo
파일의 경로를 적절히 수정해 주세요. 코드를 실행하면 output.pdf
파일이 생성되고, 해당 파일을 열면 PDF로 변환된 결과를 확인할 수 있습니다.
결론
Java Apache FOP를 사용하여 XML 데이터를 다양한 형식으로 변환할 수 있습니다. 이 포스트에서는 Apache FOP의 API와 간단한 사용 예제에 대해 알아보았습니다. 관련 자세한 정보는 Apache FOP 공식 웹사이트를 참고하시기 바랍니다.