DITA PDF 样式plugin制作

本文介绍开发DITA-OT样式plugin的方法。oXygen 发布内容的引擎,也是基于DITA-OT。本文以MacOS系统,并使用HomeBrew安装了DITA-OT为例来说明样式表的开发。其他系统或其他dita-ot的安装形式,插件开发大同小异,只是安装方式或调用方式有所不同。

前提条件

已经安装好 dita-ot ,如何安装DITA-OT,请参见官方文档

org.dita.pdf2插件

找到插件所在位置

HomeBrew安装 dita-ot文件夹所在位置,一般在如下几个位置。

/usr/local/Cellar/
/usr/local/opt/
/usr/local/bin/

以笔者系统为例:

  1. 在Finder->Go->Go to Folder,然后输入

/usr/local/Cellar/
  1. 在Cellar文件夹中按照下方路径,继续浏览

/dita-ot/3.6.1/libexec/plugins/org.dita.pdf2

文件夹结构

文件夹结构

项目

含义

cfg

存放样式的主要定义信息,其中还包括 commonfo 两个文件夹

Customization

存放用户自定义的样式信息

lib

存放 Java 可执行程序 fo.jar

resource

xsl

存放 XSLT stylesheet

创建PDF plugin

  1. 在plugins文件中,创建 com.company.pdf文件夹。

    Java的命名传统,例如你的公司叫deepdok,可以用 com.deepdok.pdf来命名。还可以进一步增加说明,例如用户手册 (ug)的样式,可以写成。com.deepdok.pdf.ug

  2. 模仿 org.dita.pdf的文件夹结构分别创建 cfg ,fo等文件夹和文件夹。

  3. cfg文件夹中,新建catalog.xml,并在其中输入如下代码

    <?xml version="1.0" encoding="UTF-8"?>
    <catalog prefer="system" xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
      <uri name="cfg:fo/attrs/custom.xsl" uri="fo/attrs/custom.xsl"/>
      <uri name="cfg:fo/xsl/custom.xsl" uri="fo/xsl/custom.xsl"/>
    </catalog>
    
  4. fo/attrs创建 custom.xsl文件,并输入如下内容

    <?xml version="1.0"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:fo="http://www.w3.org/1999/XSL/Format"
        version="2.0">
    </xsl:stylesheet>
    
  5. 将 custom.xsl 复制到 fo/xsl中。虽然名字一样,但是用途不一样,以后通过 custom.xsl (attrs) 和 custom.xsl(xsl)来区分。

  6. com.company.pdf中新建plugin.xml,并输入如下内容

    <?xml version='1.0' encoding='utf-8'?>
    <plugin id="com.company.pdf">
        <require plugin="org.dita.pdf2" />
        <feature extension="dita.conductor.transtype.check" value="custpdf" />
        <feature extension="dita.transtype.print" value="custpdf" />
        <feature extension="dita.conductor.target.relative" file="integrator.xml" />
    </plugin>
    

    dita.conductor.transtype.checkdita.transtype.print的值为 custpdf,意思是使用 custpdf作为转换类型来调用。

  7. com.company.pdf中新建integrator.xml,并输入如下内容

    <?xml version='1.0' encoding='utf-8'?>
    <project name="com.company.pdf">
        <target name="dita2custpdf.init">
            <property name="customization.dir" location="${dita.plugin.com.company.pdf.dir}/cfg"/>
            <property name="pdf2.i18n.skip" value="true"/>
        </target>
        <target name="dita2custpdf" depends="dita2custpdf.init, dita2pdf2"/>
    </project>
    

    Project name 对应插件文件夹

  8. org.dita.pdf2/cfg/fo中的layout-master.xsl 复制一份到 com.company.pdf/cfg/fo/

最后的文件夹结构图

文件夹结构

  1. 注册插件,在plugins文件中,运行 dita install,即可注册。