頻繁に更新されるドキュメントを素早くまとめて変換するために、Apache Antによるバッチ処理をサポートしています。 AntはJavaで開発されたフリーのビルド・ツールです。 Antによるバッチ処理は、ソースが変更されたファイルだけを変換するため、効率的です。 Antについての詳細は書籍などをご参照下さい。
transcode Antタスクは、Copper PDF本体と、Java版CTIP 2.0ドライバに含まれています。 Copper PDF本体のライブラリを使用する場合は、直接ローカルマシンのライブラリを使用する方法と、 CTIP 2.0またはHTTP/RESTプロトコルで接続する方法を使うことができます。 CTIP 2.0ドライバを使用する場合は、後者の方法だけです。
ローカルマシン上のCopper PDFを直接利用して、transcode タスクを使用するためには、Antのbuild.xml中で次のように宣言する必要があります。
<path id="lib.path"> <fileset dir=" Copper PDFのlibディレクトリのパス " includes="*.jar"/> </path> <typedef classpathref="lib.path" resource="jp/cssj/driver/ant/tasks.properties"/>
Java版のCTIP 2.0ライブラリを使う場合は、同様に次のように宣言します。
<typedef classpath="cti-driver.jarへのパス" resource="jp/cssj/driver/ant/tasks.properties"/>
以降、transcodeという要素名でタスクを使えるようになります。
transcodeタスクに指定することができる属性は次の通りです。
属性名 | 説明 |
---|---|
srcDir | 変換前のXML,HTMLファイルなどが格納されたディレクトリです。 省略した場合、カレントディレクトリとなります。 |
includes | srcDir中の変換対象となるファイルのパターンです。 |
excludes | srcDir中の変換対象外となるファイルのパターンです。 |
destDir | 出力先のディレクトリです。省略するとsrcDirと同じディレクトリになります。 |
suffix | 出力結果ファイルの拡張子です。 省略した場合は.pdfとなります。 |
接続先はtranscode要素内で、connection要素を使って設定します。 ただし、ローカルマシンに接続する場合は設定は不要です。
属性名 | 説明 |
---|---|
uri | 接続先URI。 |
user | ユーザーID。 |
password | パスワード。 |
transcode要素内で、property要素を使って入出力プロパティを設定することができます。
属性名 | 説明 |
---|---|
name | プロパティの名前。 |
value | プロパティの値。 |
以下の例では、ローカルホストで動作しているCopper PDFを使って、docs/manual.htmlからdocs/manual.pdfを出力します。
<transcode includes="docs/manual.html" suffix=".pdf"> <connection uri="ctip://localhost:8099/" user="user" password="kappa" /> <property name="input.include" value="**" /> <property name="output.pdf.bookmarks" value="true" /> <property name="output.pdf.hyperlinks" value="true" /> <property name="output.pdf.fonts.policy" value="cid-keyed" /> </transcode>
transcode AntタスクはHTTP/RESTによる接続にも対応しています。 HTTPを使う場合は "http://127.0.0.1:8097/" のようにURIを設定してください。
JDK 1.4.2では以下のようなエラーが発生することがあります。
[copper] java.lang.InternalError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable. [copper] at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method) [copper] at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:134) [copper] at java.lang.Class.forName0(Native Method) ...省略... [copper] at org.apache.tools.ant.launch.Launcher.run(Launcher.java:246) [copper] at org.apache.tools.ant.launch.Launcher.main(Launcher.java:67) [copper] Transcoded 0 file(s). BUILD FAILED /home/miyabe/workspaces/cssj/cssj/build/release/docs/build.xml:11: java.lang.InternalError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.
これは、Copper PDFが一部でグラフィック環境を必要とする処理を行っているため、 ディスプレイが接続されていない環境で発生するものです。 以下のように、ANT_OPTS環境変数でjava.awt.headlessシステムプロパティをtrueにするように設定することで、 問題が解消されます。
export ANT_OPTS=-Djava.awt.headless=true
出力結果に「ライセンスファイルが存在しないか期限切れです」と表示される場合や、 一部の機能が使用できない場合は、ライセンスキーのインストールか、 confディレクトリ(license-keyファイルが置かれたディレクトリ)のパスを指定する必要があります。
confディレクトリはcopperタスクのconfigDir属性で指定するか、 ANT_OPTS環境変数によりjp.cssj.copper.configシステムプロパティで指定することもできます。
export ANT_OPTS=-Djp.cssj.copper.config=/etc/copper-pdf
<copper includes="docs/manual.html" suffix=".pdf" configFile="conf/profiles/default.properties" configDir="/etc/copper-pdf"> <includeresource pattern="**" /> <property name="output.pdf.bookmarks" value="true" /> <property name="output.pdf.hyperlinks" value="true" /> <property name="output.pdf.fonts.policy" value="cid-keyed" /> </copper>