[java] Apache FOP의 설정

Apache FOP(Formatting Objects Processor)은 XML 기반의 문서를 PDF, PS, PCL, AFP, 그리고 다른 출력 형식으로 변환하는 데 사용되는 오픈 소스 XSL-FO 변환기입니다. 이 포스트에서는 Apache FOP을 설정하는 방법에 대해 알아보겠습니다.

Apache FOP 다운로드 및 설치

Apache FOP을 공식 웹사이트에서 다운로드할 수 있습니다. 압축 파일을 해제한 후, 다음과 같이 간단히 설치할 수 있습니다.

// 예시 코드
// fop 설치 디렉터리 변수
String fopHome = "/path/to/fop";

// fop 설정
FopFactory fopFactory = FopFactory.newInstance(new File(fopHome).toURI());

XML 및 XSL-FO 설정

XML과 XSL-FO 파일을 사용하여 FOP을 구성할 수 있습니다. XML 문서는 데이터를 포함하고, XSL-FO는 출력 형식을 정의합니다.

// 예시 코드
// xml 및 xsl-fo 파일 경로
String xmlFilePath = "/path/to/input.xml";
String xslFoFilePath = "/path/to/style.fo";

// FOP 프로세서 생성
FOUserAgent foUserAgent = fopFactory.newFOUserAgent();
OutputStream out = new FileOutputStream(new File("/path/to/output.pdf"));
Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, foUserAgent, out);

// xml 및 xsl-fo 파일 로드
File xmlFile = new File(xmlFilePath);
File xslFoFile = new File(xslFoFilePath);
StreamSource xmlSource = new StreamSource(xmlFile);
StreamSource xslFoSource = new StreamSource(xslFoFile);

// 변환 수행
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(xslFoSource);
Result res = new SAXResult(fop.getDefaultHandler());
transformer.transform(xmlSource, res);

out.close();

폰트 설정

특정 폰트를 사용하려면 Apache FOP에 해당 폰트를 추가해야 합니다.

// 예시 코드
// 폰트 디렉터리 경로
String fontDir = "/path/to/fonts";

// 사용할 폰트 등록
fopFactory.getFontManager().setFontBaseURL(new File(fontDir).toURI().toString());

설정 파일 사용

매번 소스 코드를 수정하지 않고 외부 파일을 사용하여 FOP을 설정할 수도 있습니다. fop.xconf 파일을 편집하여 설정을 구성할 수 있습니다.

<!-- fop.xconf 예시 -->
<fop version="1.0">
    <renderers>
        <renderer mime="application/pdf">
            <fonts>
                <directory>/path/to/fonts</directory>
            </fonts>
        </renderer>
    </renderers>
</fop>

이제 Apache FOP을 설정하는 방법에 대해 간략히 알아보았습니다. 추가적인 설정이나 사용 방법에 대해 더 알고 싶다면, Apache FOP 공식 문서를 확인해 보세요.