티스토리 뷰

"maven and docbook"을 구글링하면 제일 먼저 나오는 녀석이 docbkx-tools인데, 그 덕분에 참고할 자료도 좀 있는 편이다.

pom.xml 파일에 다음의 내용을 추가해주고:

<plugin>
    <groupId>com.agilejava.docbkx</groupId>
    <artifactId>docbkx-maven-plugin</artifactId>
    <version>2.0.9</version>
    <executions>
        <execution>
            <goals>
                <goal>generate-pdf</goal>
                <goal>generate-html</goal>
            </goals>
             <!-- <phase>pre-site</phase> -->
        </execution>
    </executions>
    <dependencies>
    <dependency>
    <groupId>org.docbook</groupId>
    <artifactId>docbook-xml</artifactId>
    <version>4.4</version>
        </dependency>
    </dependencies>
    <configuration>
        <sourceDirectory>src/docbkx</sourceDirectory>
        <targetDirectory>target/docbkx</targetDirectory>
        <includes>**/*-manual.xml</includes>
        <entities>
            <entity>
                <name>version</name>
                <value>${pom.version}</value>
            </entity>
        </entities>
        <chunkedOutput>true</chunkedOutput>
        <highlightSource>1</highlightSource>
        <xincludeSupported>true</xincludeSupported>
        <!--  커스텀 스타일 시트 사용... -->
        <foCustomization>src/docbook/stylesheets/fo.xsl </foCustomization>
        <htmlCustomization>src/docbook/stylesheets/html.xsl </htmlCustomization>
        -->
        <!--  나눔 글꼴 설정 -->
        <bodyFontFamily>NanumMyeongjo</bodyFontFamily>
        <titleFontFamily>NanumGothic</titleFontFamily>
        <sansFontFamily>NanumGothic</sansFontFamily>
        <monospaceFontFamily>NanumGothic_Coding</monospaceFontFamily>
        <fonts>
            <font>
                <name>NanumMyeongjo</name>
                <style>normal</style>
                <weight>normal</weight>
                <embedFile>src/fonts/truetype/NanumMyeongjo.ttf </embedFile>
                <metricsFile>src/fonts/metrics/NanumMyeongjo-metrics.xml </metricsFile>
            </font>
            <font>
                <name>NanumMyeongjo</name>
                <style>normal</style>
                <weight>bold</weight>
                <embedFile>src/fonts/truetype/NanumMyeongjoBold.ttf </embedFile>
                <metricsFile>src/fonts/metrics/NanumMyeongjoBold-metrics.xml </metricsFile>
            </font>
            <font>
                <name>NanumGothic</name>
                <style>normal</style>
                <weight>normal</weight>
                <embedFile>src/fonts/truetype/NanumGothic.ttf </embedFile>
                <metricsFile>src/fonts/metrics/NanumGothic-metrics.xml </metricsFile>
            </font>
            <font>
                <name>NanumGothic</name>
                <style>normal</style>
                <weight>bold</weight>
                <embedFile>src/fonts/truetype/NanumGothicBold.ttf </embedFile>
                <metricsFile>src/fonts/metrics/NanumGothicBold-metrics.xml </metricsFile>
            </font>
            <font>
                <name>NanumGothic_Coding</name>
                <style>normal</style>
                <weight>normal</weight>
                <embedFile>src/fonts/truetype/NanumGothic_Coding.ttf </embedFile>
                <metricsFile>src/fonts/metrics/NanumGothic_Coding-metrics.xml </metricsFile>
            </font>
            <font>
                <name>NanumGothic_Coding</name>
                <style>normal</style>
                <weight>bold</weight>
                <embedFile>src/fonts/truetype/NanumGothic_Coding_Bold.ttf  </embedFile>
                <metricsFile>src/fonts/metrics/NanumGothic_Coding_Bold-metrics.xml </metricsFile>
            </font>
        </fonts>
    </configuration>
</plugin>

mvn docbkx:generate-pdf

명령을 실행하면 sourceDirectory(위의 예에서는 src/docbook) 아래에서 includes로 지정한 패턴(위의 예에서는 모든 하위디렉토리에서 -manual.xml로 끝나는 docbook 소스 파일을 처리해서 targetDirectory(위의 예에서는 target/docbook) 아래에 pdf로 만들어 준다.

덤으로 fop를 위한 폰트 매트릭을 만들어 주는 플러그인도 있다.

pom.xml 파일에 다음의 내용을 추가해주고:

<plugin>
    <groupId>com.agilejava.docbkx</groupId>
    <artifactId>docbkx-fop-support</artifactId>
    <!--
    <executions>
        <execution>
            <phase>generate-resources</phase>
            <goals>
                <goal>generate</goal>
            </goals>
        </execution>
    </executions>
    -->
    <configuration>
        <!-- <ansi>true</ansi> -->
        <sourceDirectory>src/fonts/truetype</sourceDirectory>
        <targetDirectory>src/fonts/metrics</targetDirectory>
    </configuration>
</plugin>

mvn docbkx-fop-support:generate

위의 명령을 실행하면 sourceDirectory(위의 예에서는 src/fonts/truetype)안에 있는 *.ttf 파일들을 처리해서  targetDirectory(위의 예에서는 src/fonts/metrics)에 파일 이름 끝에 -metrics.xml을 붙인 메트릭 파일을 생성한다.

위에서는 코멘트 쳐둔 excutions절을 사용하면 빌드 과정에 포함시킬 수 있지만, 시간도 꽤 오래걸리는 작업이고, 큰 글꼴의 경우엔 out of memory도 잘 나고, 결정적으로 대부분의 한글 글꼴들의 경우엔 폰트 헤더의 인코딩 때문에 문제가 있어서 수작업으로 처리했다.(그래서 targetDirectory가 target/...이 아니고 src/...다)

덧. 수작업이라는 건 만들어진 메트릭 파일에서 <family-name>...</family-name>사이에 들어 있는 요상한 문자들을 좋은 편집기(절때 notepad나 eclipse같은 멍청한 편집기 쓰면 안된다!)로 열어서 알아보기 쉬운 영어로 고쳐주던가... <family-name> 태그 자체를 날려버리면 된다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함