Java Apache FOP는 XML 기반의 문서를 PDF, PNG, PS 등의 포맷으로 변환해주는 오픈 소스 라이브러리입니다. 이 라이브러리를 사용하여 PDF 문서를 생성할 때, 스타일시트(CSS)를 적용하여 문서의 디자인을 지정할 수 있습니다.
1. FOP 라이브러리 설치
먼저, Java Apache FOP 라이브러리를 다운로드하고 설치해야 합니다. 다음의 단계를 따르세요:
- Apache FOP 웹사이트에 접속하여 라이브러리 파일을 다운로드합니다.
- 다운로드한 압축 파일을 원하는 위치에 해제합니다.
2. 프로젝트 설정
이제 Java 프로젝트에서 Apache FOP를 사용할 수 있도록 설정해야 합니다. 다음의 단계를 따르세요:
- Java 프로젝트의 build path에 Apache FOP 라이브러리를 추가합니다.
- 필요한 의존성을 정의하기 위해 프로젝트의
pom.xml
(Maven)이나build.gradle
(Gradle) 파일에 Apache FOP를 추가합니다.
3. XML 및 XSL-FO 파일 작성
Apache FOP를 사용하여 PDF를 생성하려면, 변환할 XML 파일과 그에 대한 XSL-FO 파일이 필요합니다. XSL-FO는 XML 기반의 문서를 PDF, PS 등의 형식으로 변환하기 위한 마크업 언어입니다.
아래는 간단한 XML과 XSL-FO 예제입니다. 이 예제는 XML 문서를 PDF로 변환하고, CSS 파일을 적용하여 디자인을 지정합니다.
<!-- data.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<person>
<name>John Doe</name>
<age>30</age>
</person>
<!-- stylesheet.xsl -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<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" padding="10mm" background-color="#F0F0F0" />
</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="14pt">
<xsl:value-of select="/person/name" />
</fo:block>
<fo:block font-size="12pt">
<xsl:value-of select="/person/age" />
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
</xsl:stylesheet>
4. 스타일시트(CSS) 작성
PDF 문서의 디자인을 지정하기 위해 CSS 파일을 작성해야 합니다. 스타일시트를 다음과 같이 작성하세요:
/* style.css */
fo|root {
font-family: Arial, sans-serif;
}
fo|block {
margin-bottom: 10pt;
}
5. Java 코드로 PDF 생성
이제 Java 코드에서 Apache FOP를 사용하여 XML과 XSL-FO를 로드하고 PDF를 생성할 수 있습니다.
아래의 코드를 사용하여 스타일시트(CSS)를 적용하여 XML을 PDF로 변환하세요:
import org.apache.fop.apps.*;
public class FopExample {
public static void main(String[] args) {
try {
FopFactory fopFactory = FopFactory.newInstance(new File("path/to/fop.xconf"));
FOUserAgent foUserAgent = fopFactory.newFOUserAgent();
// XML 및 XSL-FO 파일 로드
File xmlFile = new File("path/to/data.xml");
StreamSource xmlSource = new StreamSource(xmlFile);
File xsltFile = new File("path/to/stylesheet.xsl");
StreamSource xsltSource = new StreamSource(xsltFile);
// PDF 파일 생성
File pdfFile = new File("path/to/output.pdf");
OutputStream outputStream = new java.io.FileOutputStream(pdfFile);
Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, foUserAgent, outputStream);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer(xsltSource);
transformer.transform(xmlSource, new SAXResult(fop.getDefaultHandler()));
outputStream.close();
System.out.println("PDF 생성 완료: " + pdfFile.getAbsolutePath());
} catch (Exception e) {
e.printStackTrace();
}
}
}
위의 코드에서 path/to/fop.xconf
, path/to/data.xml
, path/to/stylesheet.xsl
, path/to/output.pdf
는 실제 파일 경로로 변경해야 합니다.
이제 Java 프로그램을 실행하면 XML과 XSL-FO를 사용하여 스타일시트를 적용한 PDF 파일이 생성됩니다.
위의 단계를 따라하면 Java Apache FOP와 CSS를 사용하여 XML을 PDF로 변환하는 것이 가능합니다. 자세한 내용은 Apache FOP 공식 웹사이트를 참조하세요.