PDFの見栄えを変更してみよう!

DITAマップとソースを使って、PDFの見栄えを変更してみましょう。(2013年4月8日公開)

PDFの見栄えを変更する前に

今回は、前回の日本語DITAマップとソースを使って、PDFの見栄えを変更してみます。

PDFの見栄えを変更するには、PDF用のスタイルシートを修正します。 PDFの見栄えに関するファイルは、C:\DITA-OT1.7.M4\plugins\org.dita.pdf2フォルダ内にあります。 この中のスタイルシートを修正していけば良いわけですが・・・ 今回は、オリジナルファイルをいじらなくて済む形で行います。

次のように、初期値や属性値を上書きするcustom.xslファイルと、本体部分を上書きするcustom.xslファイルを使います。同じファイル名なので、上書きする時は間違えないようにしてください。
  • 初期値や属性値用スタイルシート  C:\DITA-OT1.7.M4\plugins\org.dita.pdf2\cfg\fo\attrs\custom.xsl
  • 本体部分用スタイルシート  C:\DITA-OT1.7.M4\plugins\org.dita.pdf2\cfg\fo\xsl\custom.xsl
変更する項目は次の通りです。

1)ページサイズの変更

2)ヘッダ/フッタの位置変更(奇数偶数とも右側だったのを、偶数は左側に変更)

3)空白ページの削除

4-1)codephタグ内の文字列を緑色

4-2)codephタグ内の文字列の接頭接尾に『』を付加

5-1)文字列を赤色

5-2)章項節番号付加(文字列を赤色)

6-1)文字列を青色

6-2)filepathタグ内の'http://'から始まる文字列を青色

7)ミニ目次の削除

今回もDITA-OT1.7.M4を引き続き使います。

DITAマップを少し変更し、magical-3.ditamapファイルを作ってみよう!

前回作ったmagical-2.ditamapファイルでは少しページ数が不足なので、「DITAソースを書いてみよう3!(navtitle要素+階層化)」のtopicrefを丸ごとコピーしてページ数を増やします。 次のような感じです。
<chapter>
 <topicmeta><navtitle>DITAソースを書いてみよう3!(navtitle要素+階層化)</navtitle></topicmeta>
 <topicref href="m1-1.dita">
 <topicref href="m1-2.dita"></topicref>
 </topicref>
<!-- add. 2013-04 MAGICAL 上記ファイル構成をコピー -->
 <topicref href="m1-1.dita">
 <topicref href="m1-2.dita"></topicref>
 </topicref>
</chapter>
出来たものを置いておきます。 magical-3.ditamap.zip
とりあず、PDF変換してみましょう。magical-3.ditamap,m1-1.dita,m1-2.ditaファイルがC:\Magicalフォルダにあるとします。 C:\DITA-OT1.7.M4\startcmd.batをダブルクリックします。 次のように打ってください。
java -jar lib/dost.jar /i:C:\Magical\magical-3.ditamap /transtype:pdf /outdir:C:\Magical\out-0
C:\Magical\out-0フォルダに、magical-3.pdfファイルが出来ているでしょうか。 magical-3修正前版.pdf

初期値や属性値を変更してみよう!

各項目ごとに説明します。 C:\DITA-OT1.7.M4\plugins\org.dita.pdf2\cfg\fo\attrs\custom.xslファイル内に記述します。 attrs_custom.xsl.zip

  1. まず初期値を変更します。

    どれもbasic-settings.xsl内にある値をコピーして、変更します。

    1)ページサイズの変更

    USレターサイズ値になっていたのをA4の値に変更します。 <xsl:variable name="page-width">210mm</xsl:variable> <xsl:variable name="page-height">297mm</xsl:variable>

    2)ヘッダ/フッタの位置変更

    元は、select="false()"だったのをselect="true()"に変更します。 <xsl:variable name="mirror-page-margins" select="true()"/>
  2. 次に属性値を変更します。

    3)空白ページの削除

    commons-attr.xsl内にある属性名"__force__page__count"の値をコピーして、select値を'even'から'auto'に変更します。
    <xsl:attribute-set name="__force__page__count">
            <xsl:attribute name="force-page-count">
                <xsl:choose>
                    <xsl:when test="name(/*) = 'bookmap'">
                            <!--xsl:value-of select="'even'"/-->
                            <xsl:value-of select="'auto'"/>
                    </xsl:when>
                    <xsl:otherwise>
                        <xsl:value-of select="'auto'"/>
                    </xsl:otherwise>
                </xsl:choose>
            </xsl:attribute>
        </xsl:attribute-set>

    4-1)codephタグ内の文字列を緑色

    pr-domain-attr.xsl内にあるcodephタグ用属性名"codeph"に、"color"値=greenを追加します。
    <xsl:attribute-set name="codeph" use-attribute-sets="base-font">
          <xsl:attribute name="font-family">monospace</xsl:attribute>
            <xsl:attribute name="color">green</xsl:attribute>
        </xsl:attribute-set>

    5-1)文字列を赤色

    新規属性名"test_attr"を作り、"color"値=redを記述します。
    <xsl:attribute-set name="test_attr">
            <xsl:attribute name="color">red</xsl:attribute>
        </xsl:attribute-set>

    6-1)文字列を青色

    sw-domain-attr.xsl内にあるfilepathタグ用属性名"filepath"をコピーして、"color"値=blueを追加し"filepathB"とします。
    <xsl:attribute-set name="filepathB" use-attribute-sets="base-font">
            <xsl:attribute name="font-family">monospace</xsl:attribute>
            <xsl:attribute name="color">blue</xsl:attribute>
        </xsl:attribute-set>
さぁ、PDF変換してみましょう。 次のように打ってください。
java -jar lib/dost.jar /i:C:\Magical\magical-3.ditamap /transtype:pdf /outdir:C:\Magical\out-1

いかがでしょうか?

最後の方で、「BUILD SUCCESSFUL」のメッセージが出ましたか。 C:\Magical\out-1フォルダに、magical-3.pdfファイルが出来ているでしょうか。 先ほど変換したout-0\magical-3.pdfと比較して如何でしょうか? 次の差異が見つけられると思います。

1)A4サイズ

2)偶数ページのヘッダが左側

3)空白ページが無い

4-1)codephタグの文字列が緑色

注)5-1)と6-1)は、次の本文中のスタイル変更時に使われるので、ここでは表示されません。 magical-3スタイル修正版1.pdf

本文中のスタイルをいじってみよう!

各項目ごとに説明します。 C:\DITA-OT1.7.M4\plugins\org.dita.pdf2\cfg\fo\xsl\custom.xslファイル内に記述します。 xsl_custom.xsl.zip

  1. テンプレートモジュールを変更します。

    4-2)codephタグ内の文字列の接頭接尾に『』を付加

    \xsl\fo\pr-domain.xsl内にあるcodephタグを含むテンプレートに『』を付加します。
    <xsl:template match="*[contains(@class,' pr-d/codeph ')]">
            <fo:inline xsl:use-attribute-sets="codeph">
                <xsl:call-template name="commonattributes"/>
                <xsl:text>『</xsl:text>
                <xsl:apply-templates/>
                <xsl:text>』</xsl:text>
            </fo:inline>
        </xsl:template>

    5-2)章項節番号付加(文字列を赤色)

    \xsl\fo\commons.xsl内にある章の下の階層にあるトピックタイトル('topicSimpleS'と設定)の先頭に番号を付加し、5-1)で作った赤色属性"test_attr"を付けます。
    <xsl:template match="*" mode="getTitle">
            <xsl:variable name="topicType">
                <xsl:call-template name="determineTopicType"/>
            </xsl:variable>
            <xsl:choose>
                <xsl:when test="@spectitle">
                    <xsl:value-of select="@spectitle"/>
                </xsl:when>
                <xsl:when test="$topicType='topicSimpleS'">
                    <fo:inline xsl:use-attribute-sets="test_attr">
                        <xsl:number level="multiple" count="*[contains(@class, ' topic/topic ')][child::*[contains(@class, ' topic/title ')]]"
                         format="1.1.1 "/>
                        <xsl:value-of select="' '"/>
                    </fo:inline>
                    <xsl:apply-templates/>
                   </xsl:when>
                <xsl:otherwise>
                    <xsl:apply-templates/>
                </xsl:otherwise>
            </xsl:choose>
        </xsl:template>
        <xsl:template match="*[ancestor::*[contains(@class, ' bookmap/chapter ')]]" mode="determineTopicType">
            <xsl:text>topicSimpleS</xsl:text>
        </xsl:template>

    6-2)filepathタグ内の'http://'から始まる文字列を青色

    \xsl\fo\sw-domain.xsl内にあるfilepathタグを含むテンプレートに filepathタグ内で'http://'から始まる文字列には、7-1)で作ったを青色属性"filepathB"を付けます。
    <xsl:template match="*[contains(@class,' sw-d/filepath ')]">
       <xsl:choose>
        <xsl:when test="starts-with(., 'http://')">
          <fo:inline xsl:use-attribute-sets="filepathB">
           <xsl:call-template name="commonattributes"/>
           <xsl:apply-templates/>
          </fo:inline>
        </xsl:when>
        <xsl:otherwise>
         <fo:inline xsl:use-attribute-sets="filepath">
          <xsl:call-template name="commonattributes"/>
          <xsl:apply-templates/>
         </fo:inline>
       </xsl:otherwise>
       </xsl:choose>
      </xsl:template>
    さぁ、PDF変換してみましょう。m1-2.ditaファイルがC:\Magicalフォルダにあるとします。
    java -jar lib/dost.jar /i:C:\Magical\magical-3.ditamap /transtype:pdf /outdir:C:\Magical\out-2

    いかがでしょうか?

    C:\Magical\out-2フォルダに、magical-3.pdfファイルが出来ているでしょうか。 先ほど変換したout-1\magical-3.pdfと比較して如何でしょうか? 更に次の差異が見つけられると思います。 4-2)codephタグの文字列の接頭接尾に『』が付加 5-1)と5-2)目次と本文中の各章内タイトルに赤色の章項節番号が付加、 6-1)と6-2)filepathタグの'http://'から始まる文字列が青色 magical-3スタイル修正版2.pdf

    スタイルシートをいじることによりを、見栄えを自由に変更することがご理解頂けたでしょうか。

  2. antコマンドのオプション設定で変更します。

    7)ミニ目次の削除 これは、antコマンドのオプション設定で変更してみましょう。

    次のようなコマンドでPDF変換してみましょう。
    ant -l C:\Magical\out\magical3ant.log -Dargs.input=C:\Magical\magical-3.ditamap -Dtranstype=pdf -Doutput.dir=C:\Magical\out-3 -Dargs.chapter.layout=BASIC

    最後の「-Dargs.chapter.layout=BASIC」が、ミニ目次削除のオプションです。 C:\Magical\out-3フォルダに、magical-3.pdfファイルが出来ているでしょうか。 先ほど変換したout-2\magical-3.pdfと比較して、ミニ目次が削除されていると思います。

    「-l C:\Magical\out\magical3ant.log」はログファイルとなりますので、エラーとかが出た場合に見てください。 magical-3ミニ目次の削除版.pdf

次回からは、更に深くDITA-OTを使って、様々なことを行ってみましょう。

注)DITA-OT1.8.M2が3/25にリリースされました。 V1.8では、ApacheFOPのバージョンが1.0から1.1にアップされました。 次回からは、このDITA-OT1.8を使って、構築します。

ご意見・ご質問等があれば、お気軽にお尋ねください。

関連トピック

Powered by x-magic

© 2014 まじかるテクノロジー有限会社 All Rights Reserved. / Transformed by x-magic plugin for DITA Open Toolkit at 2015-04-25T13:35:33.456+09:00