[java] Apache FOP의 사용 방법
Apache FOP는 XML 기반의 포맷팅 객체를 사용하여 PDF와 기타 출력 형식을 생성하는 Java 프로그램이다. 이 기술 블로그에서는 Apache FOP를 사용하여 XML 파일을 이용하여 PDF를 생성하는 방법을 다루고 있다.
1. Apache FOP 다운로드 및 설치
Apache FOP는 공식 웹사이트에서 다운로드할 수 있다. 압축을 해제하고 환경변수를 설정하여 설치를 마무리한다.
2. XML 파일 작성
PDF로 변환하고자 하는 내용을 XML 포맷으로 작성해야 한다. 예를 들어, 아래와 같이 간단한 XML 파일을 작성할 수 있다.
<content>
<title>Hello, World!</title>
<body>This is a sample PDF generated using Apache FOP.</body>
</content>
3. XSL-FO 템플릿 작성
XML 파일을 PDF로 변환하기 위해 XSL-FO(Extensible Stylesheet Language Formatting Objects) 템플릿을 작성해야 한다. 아래는 간단한 예시이다.
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="A4">
<fo:region-body margin="1in"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="A4">
<fo:flow flow-name="xsl-region-body">
<fo:block font-size="16pt" font-weight="bold">
<xsl:value-of select="content/title"/>
</fo:block>
<fo:block font-size="12pt" padding-top="12pt">
<xsl:value-of select="content/body"/>
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
4. Apache FOP 사용하여 PDF 생성
Apache FOP를 사용하여 XML과 XSL-FO를 이용하여 PDF를 생성할 수 있다. 아래 코드는 Java로 작성된 예시이다.
import org.apache.fop.apps.Fop;
import org.apache.fop.apps.FopFactory;
import org.apache.fop.apps.MimeConstants;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import java.io.File;
import java.io.OutputStream;
public class ApacheFOPExample {
public static void main(String[] args) {
try {
FopFactory fopFactory = FopFactory.newInstance(new File(".").toURI());
OutputStream out = new java.io.FileOutputStream("output.pdf");
Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, out);
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(new StreamSource(new File("template.xsl")));
transformer.transform(new StreamSource(new File("input.xml")), new StreamResult(fop.getDefaultHandler()));
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
위의 예시 코드는 Apache FOP를 사용하여 XML과 XSL-FO를 이용하여 input.xml 파일을 template.xsl 템플릿에 따라 output.pdf라는 이름의 PDF 파일로 생성하는 방법을 보여준다.
Apache FOP를 사용하여 XML 파일을 PDF로 변환하는 방법을 이해했다면, 이제 본인의 프로젝트에 적용해 보는 것을 고려해 볼 수 있다.