[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로 변환하는 방법을 이해했다면, 이제 본인의 프로젝트에 적용해 보는 것을 고려해 볼 수 있다.