あそんでばっかではいけません
次回目標は4000回、2010/1/2
2009年6月2日火曜日
2009年5月22日金曜日
強制的に自分自身をフォアグラウンドアプリにする
http://hpcgi1.nifty.com/~kokubu/index.cgi?%B5%BB%BD%D1%A5%E1%A5%E2#i4
実は何をやってるのかよくわかっていなかったり。
------------------------------------
HWND hWnd_ = /* フォアグラウンドにするウインドウ */ ;
int fromId = GetWindowThreadProcessId(hWnd_, 0);
int toId = GetWindowThreadProcessId(GetForegroundWindow(), 0);
if (fromId == toId)
{
/* 既に自身がアクティブ ; そのままフォアグラウンド化して OK */
SetForegroundWindow(hWnd_);
}
else if (AttachThreadInput(fromId, toId, TRUE))
{
/* 違うスレッドがアクティブ ; 入力状態を共有した */
DWORD backup = 0UL;
SetActiveWindow(hWnd_);
SystemParametersInfo(SPI_GETFOREGROUNDLOCKTIMEOUT, 0, &backup, 0);
SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, (LPVOID)0, 0);
SetActiveWindow(hWnd_);
SetForegroundWindow(hWnd_);
SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, (LPVOID)backup, 0);
/* 入力状態共有を解除 */
AttachThreadInput(fromId, toId, FALSE);
}
else
{
/* 失敗 */
}
実は何をやってるのかよくわかっていなかったり。
------------------------------------
HWND hWnd_ = /* フォアグラウンドにするウインドウ */ ;
int fromId = GetWindowThreadProcessId(hWnd_, 0);
int toId = GetWindowThreadProcessId(GetForegroundWindow(), 0);
if (fromId == toId)
{
/* 既に自身がアクティブ ; そのままフォアグラウンド化して OK */
SetForegroundWindow(hWnd_);
}
else if (AttachThreadInput(fromId, toId, TRUE))
{
/* 違うスレッドがアクティブ ; 入力状態を共有した */
DWORD backup = 0UL;
SetActiveWindow(hWnd_);
SystemParametersInfo(SPI_GETFOREGROUNDLOCKTIMEOUT, 0, &backup, 0);
SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, (LPVOID)0, 0);
SetActiveWindow(hWnd_);
SetForegroundWindow(hWnd_);
SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, (LPVOID)backup, 0);
/* 入力状態共有を解除 */
AttachThreadInput(fromId, toId, FALSE);
}
else
{
/* 失敗 */
}
2009年5月14日木曜日
DocBook 5.0
4/1 のトピックで「Xalan(Xerces)はRELAXER NGを解さない」とか書いたけど、考えてみればvalidationだけ別ツール使えばいいんだ、ということに(ようやく)気づいた。
validation ツールに jing を使うこととする。RELAX NG ホームページからリンクが張ってあるのでそこからダウンロードする。
http://fortunecat.sourceforge.net/
(別のページから古いバージョンのjingを拾ったら処理できずに何故かしばらく悩むハメになった)
あわせて本家から5.0のスキーマ(RELAX NG版)を取得、またDocBookスタールシートがバージョンアップ(1.75.0)されていたのでこれもダウンロード。
DocBook 5 の解説ページ(英語)
http://www.sagehill.net/docbookxsl/
かなり詳細に書いてあり、これ熟読すればよさそうである。
validation ツールに jing を使うこととする。RELAX NG ホームページからリンクが張ってあるのでそこからダウンロードする。
http://fortunecat.sourceforge.net/
(別のページから古いバージョンのjingを拾ったら処理できずに何故かしばらく悩むハメになった)
あわせて本家から5.0のスキーマ(RELAX NG版)を取得、またDocBookスタールシートがバージョンアップ(1.75.0)されていたのでこれもダウンロード。
DocBook 5 の解説ページ(英語)
http://www.sagehill.net/docbookxsl/
かなり詳細に書いてあり、これ熟読すればよさそうである。
2009年5月6日水曜日
DocBook サンプル
http://d.hatena.ne.jp/kakurasan/20070918/p1
http://d.hatena.ne.jp/kakurasan/20080528/p1
DocBook4 から 5で変わった部分
・bookinfoタグがinfoタグに(汎用化?)
・DTD 宣言の書き方が変わった?
・ID の与え方が変わった
下の二つはNameSpaceに対応したことによるものらしい。
サンプルの中のIDはエレメントごとのIDなのだろうけれど、どういう使い道があるのか?
なんとなく想像はできるけれど、具体的なモノが判らない。調査中。
2009/5/13 追記
Ver5で変化した部分に関する記述
http://yoshihiro.toda.name/docbook/docs/howto/
http://d.hatena.ne.jp/kakurasan/20080528/p1
DocBook4 から 5で変わった部分
・bookinfoタグがinfoタグに(汎用化?)
・DTD 宣言の書き方が変わった?
・ID の与え方が変わった
下の二つはNameSpaceに対応したことによるものらしい。
サンプルの中のIDはエレメントごとのIDなのだろうけれど、どういう使い道があるのか?
なんとなく想像はできるけれど、具体的なモノが判らない。調査中。
2009/5/13 追記
Ver5で変化した部分に関する記述
http://yoshihiro.toda.name/docbook/docs/howto/
2009年5月5日火曜日
2009年4月23日木曜日
DocBook,FOP,ビルド
いろいろいじくった挙句の DocBook -> fo -> PDF まで一括で行うbuild.xml
-----------------------------------------------
<project name="docbooktest" basedir="." default="pdf">
<property name="LIBDIR" value="D:/DocBook"/>
<property name="DOCBOOK_DTD" value="${LIBDIR}/xml-4.5/docbookx.dtd"/>
<property name="XSLTLIBDIR" value="${LIBDIR}/xalan-j_2_7_1"/>
<property name="FOPBASEDIR" value="${LIBDIR}/fop-0.95"/>
<property name="FOPOPT" value="-c ${FOPBASEDIR}/conf/JFConf.xml"/>
<property name="DOCBOOK_PUBLIC_ID" value="-//OASIS//DTD DocBook XML V4.5//EN"/>
<property name="STYLESHEET" value="${LIBDIR}/docbook-xsl-1.74.3/fo/docbook.xsl"/>
<!-- ********************************************************** -->
<!-- **** コメントなどに日本語を使うならUTF8で保存すること **** -->
<!-- ********************************************************** -->
<property name="DOCNAME" value="sourceDocs"/>
<!--
property name="SOURCE" value="${basedir}/sourceDocs.xml"/ <= この書き方だとだめ
-->
<property name="SOURCE" value="${DOCNAME}.xml"/>
<!-- ********************************************************** -->
<taskdef name="fop" classname="org.apache.fop.tools.anttasks.Fop">
<classpath>
<fileset dir="${FOPBASEDIR}/lib">
<include name="*.jar"/>
</fileset>
<pathelement location="${FOPBASEDIR}/build/fop.jar"/>
</classpath>
</taskdef>
<!-- ********************************************************** -->
<target name="fo">
<xmlvalidate warn="false">
<xmlcatalog>
<dtd publicId="${DOCBOOK_PUBLIC_ID}" location="${DOCBOOK_DTD}"/>
</xmlcatalog>
<fileset dir="${basedir}">
<include name="${SOURCE}"/>
</fileset>
</xmlvalidate>
<xslt basedir="${basedir}"
destdir="${basedir}"
style="${STYLESHEET}"
extension=".fo"
includes="${SOURCE}">
<classpath>
<pathelement location="${XSLTLIBDIR}/xalan.jar"/>
</classpath>
<xmlcatalog>
<dtd publicId="${DOCBOOK_PUBLIC_ID}" location="${DOCBOOK_DTD}"/>
</xmlcatalog>
<outputproperty name="method" value="xml"/>
<outputproperty name="encoding" value="UTF-8"/>
<outputproperty name="indent" value="yes"/>
<!-- param name="admon.graphics" expression="1"/ -->
<!-- param name="section.autolabel" expression="1"/ -->
<!-- param name="html.stylesheet" expression="doc.css"/ -->
</xslt>
</target>
<target name="pdf" depends="fo">
<!--
<java classname="org.apache.fop.cli.Main" fork="true">
<jvmarg line="-Denv.windir=C:\WINDOWS"/>
<arg line="${FOPOPT} -fo ${DOCNAME}.fo -pdf ${DOCNAME}.pdf"/>
<classpath>
<pathelement location="${FOPBASEDIR}/build/fop.jar"/>
<pathelement location="${FOPBASEDIR}/build/fop-sandbox.jar"/>
<pathelement location="${FOPBASEDIR}/build/fop-hyph.jar"/>
<pathelement location="${FOPBASEDIR}/lib/xml-apis-1.3.04.jar"/>
<pathelement location="${FOPBASEDIR}/lib/xml-apis-ext-1.3.04.jar"/>
<pathelement location="${FOPBASEDIR}/lib/xercesImpl-2.7.1.jar"/>
<pathelement location="${FOPBASEDIR}/lib/xalan-2.7.0.jar"/>
<pathelement location="${FOPBASEDIR}/lib/serializer-2.7.0.jar"/>
<pathelement location="${FOPBASEDIR}/lib/batik-all-1.7.jar"/>
<pathelement location="${FOPBASEDIR}/lib/xmlgraphics-commons-1.3.1.jar"/>
<pathelement location="${FOPBASEDIR}/lib/avalon-framework-4.2.0.jar"/>
<pathelement location="${FOPBASEDIR}/lib/commons-io-1.3.1.jar"/>
<pathelement location="${FOPBASEDIR}/lib/commons-logging-1.0.4.jar"/>
<pathelement location="${FOPBASEDIR}/lib/jai_imageio.jar"/>
<pathelement location="${FOPBASEDIR}/lib/fop-hyph.jar"/>
</classpath>
</java>
-->
<fop format="application/pdf"
basedir="${basedir}"
outdir="${basedir}"
messagelevel="debug"
userconfig="${FOPBASEDIR}/conf/JFConf.xml">
<fileset dir="${basedir}">
<include name="${DOCNAME}.fo"/>
</fileset>
</fop>
</target>
</project>
-----------------------------------------------
コメントアウトした部分はFOPの起動バッチを参考にした場合。この場合は fork="true" 設定をしないと駄目だった。セキュリティとかクラスローダとかの関係らしいが、よくわからない。
ant から呼び出す場合は専用のクラスが準備されているのでそちらを利用する。
-----------------------------------------------
<project name="docbooktest" basedir="." default="pdf">
<property name="LIBDIR" value="D:/DocBook"/>
<property name="DOCBOOK_DTD" value="${LIBDIR}/xml-4.5/docbookx.dtd"/>
<property name="XSLTLIBDIR" value="${LIBDIR}/xalan-j_2_7_1"/>
<property name="FOPBASEDIR" value="${LIBDIR}/fop-0.95"/>
<property name="FOPOPT" value="-c ${FOPBASEDIR}/conf/JFConf.xml"/>
<property name="DOCBOOK_PUBLIC_ID" value="-//OASIS//DTD DocBook XML V4.5//EN"/>
<property name="STYLESHEET" value="${LIBDIR}/docbook-xsl-1.74.3/fo/docbook.xsl"/>
<!-- ********************************************************** -->
<!-- **** コメントなどに日本語を使うならUTF8で保存すること **** -->
<!-- ********************************************************** -->
<property name="DOCNAME" value="sourceDocs"/>
<!--
property name="SOURCE" value="${basedir}/sourceDocs.xml"/ <= この書き方だとだめ
-->
<property name="SOURCE" value="${DOCNAME}.xml"/>
<!-- ********************************************************** -->
<taskdef name="fop" classname="org.apache.fop.tools.anttasks.Fop">
<classpath>
<fileset dir="${FOPBASEDIR}/lib">
<include name="*.jar"/>
</fileset>
<pathelement location="${FOPBASEDIR}/build/fop.jar"/>
</classpath>
</taskdef>
<!-- ********************************************************** -->
<target name="fo">
<xmlvalidate warn="false">
<xmlcatalog>
<dtd publicId="${DOCBOOK_PUBLIC_ID}" location="${DOCBOOK_DTD}"/>
</xmlcatalog>
<fileset dir="${basedir}">
<include name="${SOURCE}"/>
</fileset>
</xmlvalidate>
<xslt basedir="${basedir}"
destdir="${basedir}"
style="${STYLESHEET}"
extension=".fo"
includes="${SOURCE}">
<classpath>
<pathelement location="${XSLTLIBDIR}/xalan.jar"/>
</classpath>
<xmlcatalog>
<dtd publicId="${DOCBOOK_PUBLIC_ID}" location="${DOCBOOK_DTD}"/>
</xmlcatalog>
<outputproperty name="method" value="xml"/>
<outputproperty name="encoding" value="UTF-8"/>
<outputproperty name="indent" value="yes"/>
<!-- param name="admon.graphics" expression="1"/ -->
<!-- param name="section.autolabel" expression="1"/ -->
<!-- param name="html.stylesheet" expression="doc.css"/ -->
</xslt>
</target>
<target name="pdf" depends="fo">
<!--
<java classname="org.apache.fop.cli.Main" fork="true">
<jvmarg line="-Denv.windir=C:\WINDOWS"/>
<arg line="${FOPOPT} -fo ${DOCNAME}.fo -pdf ${DOCNAME}.pdf"/>
<classpath>
<pathelement location="${FOPBASEDIR}/build/fop.jar"/>
<pathelement location="${FOPBASEDIR}/build/fop-sandbox.jar"/>
<pathelement location="${FOPBASEDIR}/build/fop-hyph.jar"/>
<pathelement location="${FOPBASEDIR}/lib/xml-apis-1.3.04.jar"/>
<pathelement location="${FOPBASEDIR}/lib/xml-apis-ext-1.3.04.jar"/>
<pathelement location="${FOPBASEDIR}/lib/xercesImpl-2.7.1.jar"/>
<pathelement location="${FOPBASEDIR}/lib/xalan-2.7.0.jar"/>
<pathelement location="${FOPBASEDIR}/lib/serializer-2.7.0.jar"/>
<pathelement location="${FOPBASEDIR}/lib/batik-all-1.7.jar"/>
<pathelement location="${FOPBASEDIR}/lib/xmlgraphics-commons-1.3.1.jar"/>
<pathelement location="${FOPBASEDIR}/lib/avalon-framework-4.2.0.jar"/>
<pathelement location="${FOPBASEDIR}/lib/commons-io-1.3.1.jar"/>
<pathelement location="${FOPBASEDIR}/lib/commons-logging-1.0.4.jar"/>
<pathelement location="${FOPBASEDIR}/lib/jai_imageio.jar"/>
<pathelement location="${FOPBASEDIR}/lib/fop-hyph.jar"/>
</classpath>
</java>
-->
<fop format="application/pdf"
basedir="${basedir}"
outdir="${basedir}"
messagelevel="debug"
userconfig="${FOPBASEDIR}/conf/JFConf.xml">
<fileset dir="${basedir}">
<include name="${DOCNAME}.fo"/>
</fileset>
</fop>
</target>
</project>
-----------------------------------------------
コメントアウトした部分はFOPの起動バッチを参考にした場合。この場合は fork="true" 設定をしないと駄目だった。セキュリティとかクラスローダとかの関係らしいが、よくわからない。
ant から呼び出す場合は専用のクラスが準備されているのでそちらを利用する。
2009年4月21日火曜日
FOP
http://ja.wikipedia.org/wiki/XSL_Formatting_Objects
http://ja.wikipedia.org/wiki/Apache_FOP
http://nanasi.jp/articles/others/fop.html
http://www.sm.u-tokai.ac.jp/~sugita/xml/japanese.html
http://xmlgraphics.apache.org/fop/
---------------------------------------------
そのままでは日本語が表示できないのでフォント設定を行う
http://www.02.246.ne.jp/~torutk/fop/fop4sdoc.html
http://www.nslabs.jp/apache_fop.rhtml
http://d.hatena.ne.jp/ditahack/20090331/1238513240
http://d.hatena.ne.jp/mitsu48/
http://liosk.blog103.fc2.com/blog-entry-71.html
手順(1) MSゴシック/MS明朝のフォント名を調べる
コマンドプロンプトより
java -cp ../build/fop.jar;../lib/commons-io-1.3.1.jar;../lib/commons-logging-1.0.4.jar org.apache.fop.fonts.apps.TTFReader c:/windows/Fonts/msmincho.ttc msmincho.xml
java -cp ../build/fop.jar;../lib/commons-io-1.3.1.jar;../lib/commons-logging-1.0.4.jar org.apache.fop.fonts.apps.TTFReader c:/windows/Fonts/msgothic.ttc msgothic.xml
すると下記のような形でエラーと共にフォント名(ttcname)を表示してくれる。
D:\DocBook\fop-0.95\JFonts>java -cp ../build/fop.jar;../lib/commons-io-1.3.1.jar;../lib/commons-logging-1.0.4.jar org.apache.fop.fonts.apps.TTFReader c:/windows/Fonts/msmincho.ttc msmincho.xml
TTF Reader for Apache FOP 0.95
Parsing font...
Reading c:/windows/Fonts/msmincho.ttc...
This is a TrueType collection file with 2 fonts
Containing the following fonts:
MS Mincho
MS PMincho
Error while building XML font metrics file.
java.lang.IllegalArgumentException: For TrueType collection you must specify which font to select (-ttcname)
手順(2) フォントメトリクスファイルを作成する
上記の手順で得たフォント名をコマンドラインに追加して実行
java -cp ../build/fop.jar;../lib/commons-io-1.3.1.jar;../lib/commons-logging-1.0.4.jar;../lib/xmlgraphics-commons-1.3.1.jar org.apache.fop.fonts.apps.TTFReader -ttcname "MS Mincho" c:/windows/Fonts/msmincho.ttc msmincho.xml
java -cp ../build/fop.jar;../lib/commons-io-1.3.1.jar;../lib/commons-logging-1.0.4.jar;../lib/xmlgraphics-commons-1.3.1.jar org.apache.fop.fonts.apps.TTFReader -ttcname "MS Gothic" c:/windows/Fonts/msgothic.ttc msgothic.xml
※必要なクラスライブラリが増えている
手順(3) フォントメトリクスファイルを修正する
TTFReader にはバグがあって、msmincho.xml / msgothic.xml ないのフォントファミリ名の部分が文字化けしているのでそれぞれ MS 明朝 MS ゴシック に修正する。
手順(4) ユーザコンフィグファイルの作成
fop の conf フォルダに fop.xconf というファイルがあるが、これはただのサンプルファイル。
これをベースにユーザコンフィグファイル JFConf.xml を作成する(ファイル名はxmlファイルあるなら何でもかまわない)
<?xml version="1.0" ?>
<fop version="1.0">
<renderers>
<renderer mime="application/pdf">
<fonts>
<font metrics-url="D:\DocBook\fop-0.95\JFonts\msmincho.xml" kerning="yes" embed-url="C:\windows\Fonts\msmincho.ttc">
<font-triplet name="MS-Mincho" style="normal" weight="normal"/>
<font-triplet name="MS-Mincho" style="normal" weight="bold"/>
<font-triplet name="MS-Mincho" style="italic" weight="normal"/>
<font-triplet name="MS-Mincho" style="italic" weight="bold"/>
<font-triplet name="MSMincho" style="normal" weight="normal"/>
<font-triplet name="MSMincho" style="normal" weight="bold"/>
<font-triplet name="MSMincho" style="italic" weight="normal"/>
<font-triplet name="MSMincho" style="italic" weight="bold"/>
<font-triplet name="Mincho" style="normal" weight="normal"/>
<font-triplet name="Mincho" style="normal" weight="bold"/>
<font-triplet name="Mincho" style="italic" weight="normal"/>
<font-triplet name="Mincho" style="italic" weight="bold"/>
<font-triplet name="MS明朝" style="normal" weight="normal"/>
<font-triplet name="MS明朝" style="normal" weight="bold"/>
<font-triplet name="MS明朝" style="italic" weight="normal"/>
<font-triplet name="MS明朝" style="italic" weight="bold"/>
<font-triplet name="serif" style="normal" weight="normal"/>
<font-triplet name="serif" style="normal" weight="bold"/>
<font-triplet name="serif" style="italic" weight="normal"/>
<font-triplet name="serif" style="italic" weight="bold"/>
</font>
<font metrics-url="D:\DocBook\fop-0.95\JFonts\msgothic.xml" kerning="yes" embed-url="C:\windows\Fonts\msgothic.ttc">
<font-triplet name="MS-Gothic" style="normal" weight="normal"/>
<font-triplet name="MS-Gothic" style="normal" weight="bold"/>
<font-triplet name="MS-Gothic" style="italic" weight="normal"/>
<font-triplet name="MS-Gothic" style="italic" weight="bold"/>
<font-triplet name="MSGothic" style="normal" weight="normal"/>
<font-triplet name="MSGothic" style="normal" weight="bold"/>
<font-triplet name="MSGothic" style="italic" weight="normal"/>
<font-triplet name="MSGothic" style="italic" weight="bold"/>
<font-triplet name="Gothic" style="normal" weight="normal"/>
<font-triplet name="Gothic" style="normal" weight="bold"/>
<font-triplet name="Gothic" style="italic" weight="normal"/>
<font-triplet name="Gothic" style="italic" weight="bold"/>
<font-triplet name="MSゴシック" style="normal" weight="normal"/>
<font-triplet name="MSゴシック" style="normal" weight="bold"/>
<font-triplet name="MSゴシック" style="italic" weight="normal"/>
<font-triplet name="MSゴシック" style="italic" weight="bold"/>
<font-triplet name="sans-serif" style="normal" weight="normal"/>
<font-triplet name="sans-serif" style="normal" weight="bold"/>
<font-triplet name="sans-serif" style="italic" weight="normal"/>
<font-triplet name="sans-serif" style="italic" weight="bold"/>
</font>
</fonts>
</renderer>
</renderers>
</fop>
手順(5) サンプル実行
テストファイル JFT2.fo
<fo:root fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master name="PageMaster">
<fo:region-body top="3cm">
</fo:region-body>
</fo:simple-page-master>
<fo:page-sequence reference="PageMaster">
<fo:flow name="xsl-region-body">
<fo:block size="18pt" align="center">
Hello: XSL-FO to PDF 日本語フォントはどうか?
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:layout-master-set>
コマンドラインより
..\fop -c D:\DocBook\fop-0.95\conf\JFConf.xml -fo JFT2.fo -pdf a.pdf
と実行する。
http://ja.wikipedia.org/wiki/Apache_FOP
http://nanasi.jp/articles/others/fop.html
http://www.sm.u-tokai.ac.jp/~sugita/xml/japanese.html
http://xmlgraphics.apache.org/fop/
---------------------------------------------
そのままでは日本語が表示できないのでフォント設定を行う
http://www.02.246.ne.jp/~torutk/fop/fop4sdoc.html
http://www.nslabs.jp/apache_fop.rhtml
http://d.hatena.ne.jp/ditahack/20090331/1238513240
http://d.hatena.ne.jp/mitsu48/
http://liosk.blog103.fc2.com/blog-entry-71.html
手順(1) MSゴシック/MS明朝のフォント名を調べる
コマンドプロンプトより
java -cp ../build/fop.jar;../lib/commons-io-1.3.1.jar;../lib/commons-logging-1.0.4.jar org.apache.fop.fonts.apps.TTFReader c:/windows/Fonts/msmincho.ttc msmincho.xml
java -cp ../build/fop.jar;../lib/commons-io-1.3.1.jar;../lib/commons-logging-1.0.4.jar org.apache.fop.fonts.apps.TTFReader c:/windows/Fonts/msgothic.ttc msgothic.xml
すると下記のような形でエラーと共にフォント名(ttcname)を表示してくれる。
D:\DocBook\fop-0.95\JFonts>java -cp ../build/fop.jar;../lib/commons-io-1.3.1.jar;../lib/commons-logging-1.0.4.jar org.apache.fop.fonts.apps.TTFReader c:/windows/Fonts/msmincho.ttc msmincho.xml
TTF Reader for Apache FOP 0.95
Parsing font...
Reading c:/windows/Fonts/msmincho.ttc...
This is a TrueType collection file with 2 fonts
Containing the following fonts:
MS Mincho
MS PMincho
Error while building XML font metrics file.
java.lang.IllegalArgumentException: For TrueType collection you must specify which font to select (-ttcname)
手順(2) フォントメトリクスファイルを作成する
上記の手順で得たフォント名をコマンドラインに追加して実行
java -cp ../build/fop.jar;../lib/commons-io-1.3.1.jar;../lib/commons-logging-1.0.4.jar;../lib/xmlgraphics-commons-1.3.1.jar org.apache.fop.fonts.apps.TTFReader -ttcname "MS Mincho" c:/windows/Fonts/msmincho.ttc msmincho.xml
java -cp ../build/fop.jar;../lib/commons-io-1.3.1.jar;../lib/commons-logging-1.0.4.jar;../lib/xmlgraphics-commons-1.3.1.jar org.apache.fop.fonts.apps.TTFReader -ttcname "MS Gothic" c:/windows/Fonts/msgothic.ttc msgothic.xml
※必要なクラスライブラリが増えている
手順(3) フォントメトリクスファイルを修正する
TTFReader にはバグがあって、msmincho.xml / msgothic.xml ないのフォントファミリ名の部分が文字化けしているのでそれぞれ MS 明朝 MS ゴシック に修正する。
手順(4) ユーザコンフィグファイルの作成
fop の conf フォルダに fop.xconf というファイルがあるが、これはただのサンプルファイル。
これをベースにユーザコンフィグファイル JFConf.xml を作成する(ファイル名はxmlファイルあるなら何でもかまわない)
<?xml version="1.0" ?>
<fop version="1.0">
<renderers>
<renderer mime="application/pdf">
<fonts>
<font metrics-url="D:\DocBook\fop-0.95\JFonts\msmincho.xml" kerning="yes" embed-url="C:\windows\Fonts\msmincho.ttc">
<font-triplet name="MS-Mincho" style="normal" weight="normal"/>
<font-triplet name="MS-Mincho" style="normal" weight="bold"/>
<font-triplet name="MS-Mincho" style="italic" weight="normal"/>
<font-triplet name="MS-Mincho" style="italic" weight="bold"/>
<font-triplet name="MSMincho" style="normal" weight="normal"/>
<font-triplet name="MSMincho" style="normal" weight="bold"/>
<font-triplet name="MSMincho" style="italic" weight="normal"/>
<font-triplet name="MSMincho" style="italic" weight="bold"/>
<font-triplet name="Mincho" style="normal" weight="normal"/>
<font-triplet name="Mincho" style="normal" weight="bold"/>
<font-triplet name="Mincho" style="italic" weight="normal"/>
<font-triplet name="Mincho" style="italic" weight="bold"/>
<font-triplet name="MS明朝" style="normal" weight="normal"/>
<font-triplet name="MS明朝" style="normal" weight="bold"/>
<font-triplet name="MS明朝" style="italic" weight="normal"/>
<font-triplet name="MS明朝" style="italic" weight="bold"/>
<font-triplet name="serif" style="normal" weight="normal"/>
<font-triplet name="serif" style="normal" weight="bold"/>
<font-triplet name="serif" style="italic" weight="normal"/>
<font-triplet name="serif" style="italic" weight="bold"/>
</font>
<font metrics-url="D:\DocBook\fop-0.95\JFonts\msgothic.xml" kerning="yes" embed-url="C:\windows\Fonts\msgothic.ttc">
<font-triplet name="MS-Gothic" style="normal" weight="normal"/>
<font-triplet name="MS-Gothic" style="normal" weight="bold"/>
<font-triplet name="MS-Gothic" style="italic" weight="normal"/>
<font-triplet name="MS-Gothic" style="italic" weight="bold"/>
<font-triplet name="MSGothic" style="normal" weight="normal"/>
<font-triplet name="MSGothic" style="normal" weight="bold"/>
<font-triplet name="MSGothic" style="italic" weight="normal"/>
<font-triplet name="MSGothic" style="italic" weight="bold"/>
<font-triplet name="Gothic" style="normal" weight="normal"/>
<font-triplet name="Gothic" style="normal" weight="bold"/>
<font-triplet name="Gothic" style="italic" weight="normal"/>
<font-triplet name="Gothic" style="italic" weight="bold"/>
<font-triplet name="MSゴシック" style="normal" weight="normal"/>
<font-triplet name="MSゴシック" style="normal" weight="bold"/>
<font-triplet name="MSゴシック" style="italic" weight="normal"/>
<font-triplet name="MSゴシック" style="italic" weight="bold"/>
<font-triplet name="sans-serif" style="normal" weight="normal"/>
<font-triplet name="sans-serif" style="normal" weight="bold"/>
<font-triplet name="sans-serif" style="italic" weight="normal"/>
<font-triplet name="sans-serif" style="italic" weight="bold"/>
</font>
</fonts>
</renderer>
</renderers>
</fop>
手順(5) サンプル実行
テストファイル JFT2.fo
<fo:root fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master name="PageMaster">
<fo:region-body top="3cm">
</fo:region-body>
</fo:simple-page-master>
<fo:page-sequence reference="PageMaster">
<fo:flow name="xsl-region-body">
<fo:block size="18pt" align="center">
Hello: XSL-FO to PDF 日本語フォントはどうか?
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:layout-master-set>
コマンドラインより
..\fop -c D:\DocBook\fop-0.95\conf\JFConf.xml -fo JFT2.fo -pdf a.pdf
と実行する。
2009年4月15日水曜日
Xalan と JavaSDK
いろいろ資料を眺めてみる。すると、JDK 1.4 以上には既にXalanはライブラリに組み込まれているという。なんてこったい!
すると、あのサンプルはJDKライブラリで実行したものなのか、ダウンロードしたXalanで実行したものなのか?
http://www.utj.co.jp/xml/dev/java/dxjava_2.html
http://tsumatec.blogspot.com/2005/10/xalan.html
http://www.nextindex.net/java/XML/Xalan.html
---------------------------
いろいろ調べてみた。
サンプルの build.xml にXSLTプロセッサへのクラスパス定義があり、そこにダウンロードしたXalanへのパスを書いていた。
(1) build.xml のクラスパスを削除して実行
(2) 環境変数classpath からXalanへのパスを削除
(3) (1)(2) 両方を行う
の三パターンでサンプルを実行してみた。
結果、(1)(2)では正常に動作した(っぽい)が、(3) ではエラーが吐き出された。
D:\DocBook\sample1>ant
Buildfile: build.xml
xslt:
[xmlvalidate] 1 file(s) have been successfully validated.
[xslt] Transforming into D:\DocBook\sample1
[xslt] Processing D:\DocBook\sample1\artsample.xml to D:\DocBook\sample1\artsample.html
[xslt] Loading stylesheet D:\DocBook\sample1\sample.xsl
[xslt] : Warning! file:/D:/DocBook/docbook-xsl-1.74.3/html/autoidx.xsl: line 476: 属性 'href' がエレメントの外側です。
[xslt] : Warning! file:/D:/DocBook/docbook-xsl-1.74.3/html/autoidx.xsl: line 514: 属性 'href' がエレメントの外側です。
[xslt] : Warning! file:/D:/DocBook/docbook-xsl-1.74.3/html/autoidx.xsl: line 537: 属性 'href' がエレメントの外側です。
:
:
:
(略)
てな具合で、DocBookスタイルシートに対してエラーを吐いているようだ。
ついでに
import javax.xml.transform.*;
import javax.xml.transform.stream.*;
public class test {
public static void main(String[] args) {
try {
TransformerFactory trfactory = TransformerFactory.newInstance();
Transformer t = trfactory.newTransformer( new StreamSource(args[0]) );
String s = t.toString();
System.out.printf( s );
} catch(Exception e) {
e.printStackTrace();
}
}
}
こんなプログラムをclasspath環境変数でxalanを指定してある状態、ない状態で実行したところ、ある方は
D:\DocBook\test>java test sample.xsl
org.apache.xalan.transformer.TransformerImpl@16fd0b7
ない方は
D:\DocBook\test>java test sample.xsl
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl@503429
と吐き出した。
つまり
(1) SDK(うちのは1.6.0_13)にXalanは含まれる?
(2) 但し、必ずしも最新というわけでもない
(3) classpath指定があればそちらを優先する。
上記参考サイトによるとclasspath指定よりデフォルトライブラリ優先とあったのだが・・・仕様が変わったのだろうか?
付記
xalan のバージョン確認は
java org.apache.xalan.Version
でも良い(こちらの方が新しいやりかた?)
付記2
SDK1.5以上には Xalanは含まれない、という記述も見かけた。
すると、あのサンプルはJDKライブラリで実行したものなのか、ダウンロードしたXalanで実行したものなのか?
http://www.utj.co.jp/xml/dev/java/dxjava_2.html
http://tsumatec.blogspot.com/2005/10/xalan.html
http://www.nextindex.net/java/XML/Xalan.html
---------------------------
いろいろ調べてみた。
サンプルの build.xml にXSLTプロセッサへのクラスパス定義があり、そこにダウンロードしたXalanへのパスを書いていた。
(1) build.xml のクラスパスを削除して実行
(2) 環境変数classpath からXalanへのパスを削除
(3) (1)(2) 両方を行う
の三パターンでサンプルを実行してみた。
結果、(1)(2)では正常に動作した(っぽい)が、(3) ではエラーが吐き出された。
D:\DocBook\sample1>ant
Buildfile: build.xml
xslt:
[xmlvalidate] 1 file(s) have been successfully validated.
[xslt] Transforming into D:\DocBook\sample1
[xslt] Processing D:\DocBook\sample1\artsample.xml to D:\DocBook\sample1\artsample.html
[xslt] Loading stylesheet D:\DocBook\sample1\sample.xsl
[xslt] : Warning! file:/D:/DocBook/docbook-xsl-1.74.3/html/autoidx.xsl: line 476: 属性 'href' がエレメントの外側です。
[xslt] : Warning! file:/D:/DocBook/docbook-xsl-1.74.3/html/autoidx.xsl: line 514: 属性 'href' がエレメントの外側です。
[xslt] : Warning! file:/D:/DocBook/docbook-xsl-1.74.3/html/autoidx.xsl: line 537: 属性 'href' がエレメントの外側です。
:
:
:
(略)
てな具合で、DocBookスタイルシートに対してエラーを吐いているようだ。
ついでに
import javax.xml.transform.*;
import javax.xml.transform.stream.*;
public class test {
public static void main(String[] args) {
try {
TransformerFactory trfactory = TransformerFactory.newInstance();
Transformer t = trfactory.newTransformer( new StreamSource(args[0]) );
String s = t.toString();
System.out.printf( s );
} catch(Exception e) {
e.printStackTrace();
}
}
}
こんなプログラムをclasspath環境変数でxalanを指定してある状態、ない状態で実行したところ、ある方は
D:\DocBook\test>java test sample.xsl
org.apache.xalan.transformer.TransformerImpl@16fd0b7
ない方は
D:\DocBook\test>java test sample.xsl
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl@503429
と吐き出した。
つまり
(1) SDK(うちのは1.6.0_13)にXalanは含まれる?
(2) 但し、必ずしも最新というわけでもない
(3) classpath指定があればそちらを優先する。
上記参考サイトによるとclasspath指定よりデフォルトライブラリ優先とあったのだが・・・仕様が変わったのだろうか?
付記
xalan のバージョン確認は
java org.apache.xalan.Version
でも良い(こちらの方が新しいやりかた?)
付記2
SDK1.5以上には Xalanは含まれない、という記述も見かけた。
2009年4月11日土曜日
2009年4月8日水曜日
Ant
http://members.at.infoseek.co.jp/pokopensjant/j/docs/manual/index.html
http://terai.xrea.jp/Ant.html
導入手順
1.アーカイブをダウンロードし、任意のフォルダに展開する
2.下記の三つの環境変数を設定する
ANT_HOME=c:\ant
JAVA_HOME=c:\jdk1.2.2
PATH=%PATH%;%ANT_HOME%\bin
ANT_HOMEはantを展開したディレクトリ、
JAVA_HOMEはJDK を展開したディレクトリ
PATHにはantを展開したディレクトリの中のbin ディレクトリへのパスを追加する
http://terai.xrea.jp/Ant.html
導入手順
1.アーカイブをダウンロードし、任意のフォルダに展開する
2.下記の三つの環境変数を設定する
ANT_HOME=c:\ant
JAVA_HOME=c:\jdk1.2.2
PATH=%PATH%;%ANT_HOME%\bin
ANT_HOMEはantを展開したディレクトリ、
JAVA_HOMEはJDK を展開したディレクトリ
PATHにはantを展開したディレクトリの中のbin ディレクトリへのパスを追加する
Xalan:追記
参考 http://mozjp.hp.infoseek.co.jp/study/java_xalanworking.pdf
だが、ネットのファイルはいつ消えてもおかしくないので要約を控えておく。
1.最新のJDKを導入する。インストーラーを起動し、画面指示に従う。
2.Xalanをダウンロード、アーカイブを展開する。
3.Windows環境変数 PathにJDKのパスを設定する。 注:システム環境変数の戦闘に設定すること。
4.Windows環境変数 ClassPathにXalan各ファイルへのパスを設定する。 注:システム環境変数の戦闘に設定すること。
例: C:¥xalan-j_2_7_1¥xml-apis.jar;C:¥xalan-j_2_7_1¥xercesImpl.jar;C:¥xalan-j_2_7_1¥xalan.jar;
5.サンプルを実行してみる
C:\>cd C:\xalan-j_2_7_1\samples\SimpleTransform
C:\xalan-j_2_7_1\samples\SimpleTransform>javac SimpleTransform.java
C:\xalan-j_2_7_1\samples\SimpleTransform>java SimpleTransform
************* The result is in birds.out *************
C:\xalan-j_2_7_1\samples\SimpleTransform>
サンプルのjavaプログラムをコンパイル実行し、おかしなエラーが出なければok
だが、ネットのファイルはいつ消えてもおかしくないので要約を控えておく。
1.最新のJDKを導入する。インストーラーを起動し、画面指示に従う。
2.Xalanをダウンロード、アーカイブを展開する。
3.Windows環境変数 PathにJDKのパスを設定する。 注:システム環境変数の戦闘に設定すること。
4.Windows環境変数 ClassPathにXalan各ファイルへのパスを設定する。 注:システム環境変数の戦闘に設定すること。
例: C:¥xalan-j_2_7_1¥xml-apis.jar;C:¥xalan-j_2_7_1¥xercesImpl.jar;C:¥xalan-j_2_7_1¥xalan.jar;
5.サンプルを実行してみる
C:\>cd C:\xalan-j_2_7_1\samples\SimpleTransform
C:\xalan-j_2_7_1\samples\SimpleTransform>javac SimpleTransform.java
C:\xalan-j_2_7_1\samples\SimpleTransform>java SimpleTransform
************* The result is in birds.out *************
C:\xalan-j_2_7_1\samples\SimpleTransform>
サンプルのjavaプログラムをコンパイル実行し、おかしなエラーが出なければok
2009年4月6日月曜日
Xalan
1.Java6の導入
インストーラーをダブルクリック、以後画面の指示に従う。
どうやら古い版のJava環境があると一掃してくれるらしい。
便利と言えば便利だし、仕方ないといえば仕方ないのだろうけれど、知らぬところで環境をいじくり回されるのは好きではない。
2.Xalanの導入
参考 http://mozjp.hp.infoseek.co.jp/study/java_xalanworking.pdf
インストーラーをダブルクリック、だけでもjavaは起動する。でもpathは設定されていない。どうやらwindows\system32 にランタイムだけコピーされているらしい。
java.exeは
C:\Program Files\Java\jdk1.6.0_13\bin
C:\Program Files\Java\jre6\bin
C:\windows\system32
と、都合三箇所にコピーされているようだ(ちょいと面白くない)。
とりあえず、参考資料どおりにpathを通し、Xalanのサンプルが動作することを確認。
(注意)Path/Classpath設定は、システム環境変数に設定する(ユーザではない)。
インストーラーをダブルクリック、以後画面の指示に従う。
どうやら古い版のJava環境があると一掃してくれるらしい。
便利と言えば便利だし、仕方ないといえば仕方ないのだろうけれど、知らぬところで環境をいじくり回されるのは好きではない。
2.Xalanの導入
参考 http://mozjp.hp.infoseek.co.jp/study/java_xalanworking.pdf
インストーラーをダブルクリック、だけでもjavaは起動する。でもpathは設定されていない。どうやらwindows\system32 にランタイムだけコピーされているらしい。
java.exeは
C:\Program Files\Java\jdk1.6.0_13\bin
C:\Program Files\Java\jre6\bin
C:\windows\system32
と、都合三箇所にコピーされているようだ(ちょいと面白くない)。
とりあえず、参考資料どおりにpathを通し、Xalanのサンプルが動作することを確認。
(注意)Path/Classpath設定は、システム環境変数に設定する(ユーザではない)。
2009年4月5日日曜日
2009年4月1日水曜日
DocBookで必要なもの
DocBook にて必要なもの
(参考)http://www.ii-okinawa.ne.jp/~hrk/docbook/tutorial/doc.html
・・・・うんざりである
※DocBookスキーマの最新は5.x 系列だが、こちらはRELAXER NGメインで記述されており、他方、Xalan(Xerces)はRELAXER NGを解さない。XML DTDで記述された5.x 系列スキーマも存在するが、とりあえず4.x系列で試してみようかと思う
(参考)http://www.ii-okinawa.ne.jp/~hrk/docbook/tutorial/doc.html
J2SE (1.4以上) | 現在の最新は1.6.0_13 |
ant | 現在の最新は1.7.1 |
Xalan | 現在の最新は2.7.1 |
DocBook DTD | Schemas よりXML DTD 4.x系の最新(現在は4.5) |
DocBook スタイルシート | docbook-xsl の最新版(現在1.74.3) |
・・・・うんざりである
※DocBookスキーマの最新は5.x 系列だが、こちらはRELAXER NGメインで記述されており、他方、Xalan(Xerces)はRELAXER NGを解さない。XML DTDで記述された5.x 系列スキーマも存在するが、とりあえず4.x系列で試してみようかと思う
DITA
Darwin Information Typing Architecture = DITA
DocBookと類似のもの
http://www.antenna.co.jp/XML/dita.html
http://www.antenna.co.jp/XML/archspec-ja.html
類似といったらめちゃ怒られそうな気もする。
DocBookは一冊の(もしくは一つの)ドキュメントを多種多様のフォーマットに変換するための技術。PDFかHTMLか、というフォーマットの違いはあっても作成される内容は(多分、基本的には)同一。
DITAは個々の独立した小さな文章(トピックと呼ぶ)をばらばらに作成し、それを繋ぎ合わせて一つの文章に纏め上げる、というシステム。一群のトピックから操作説明書だの仕様書だのリファレンスだの内容に強い関連性はあるが異なるドキュメント群を生成するのに使う技術。
DITAというのも面白そうだが、今はまだ手出しするには早い。記録を残すだけにとどめる。
DocBookと類似のもの
http://www.antenna.co.jp/XML/dita.html
http://www.antenna.co.jp/XML/archspec-ja.html
類似といったらめちゃ怒られそうな気もする。
DocBookは一冊の(もしくは一つの)ドキュメントを多種多様のフォーマットに変換するための技術。PDFかHTMLか、というフォーマットの違いはあっても作成される内容は(多分、基本的には)同一。
DITAは個々の独立した小さな文章(トピックと呼ぶ)をばらばらに作成し、それを繋ぎ合わせて一つの文章に纏め上げる、というシステム。一群のトピックから操作説明書だの仕様書だのリファレンスだの内容に強い関連性はあるが異なるドキュメント群を生成するのに使う技術。
DITAというのも面白そうだが、今はまだ手出しするには早い。記録を残すだけにとどめる。
DocBook
本家 http://www.docbook.org/
http://www.dear-jpn.com/main/2007/10/docbook.html
http://yoshihiro.toda.name/docbook/docs/howto/
http://neverbird.sourceforge.jp/articles/docbook-intro.html
そもそもの目的はDocBookでドキュメント(仕様書など)を作るには、ということ。
現在MSWordやExcelなどを使っているが、どうにも使いづらい。
周囲の人に聞いても使いやすい、という返事が来たことはないし、これは、という文書(書式)にも出あった事がない。あるいはこの世のどこかに素晴らしい文書(書式)作成例が存在しているのかも知れないが、あまり見かけない--ということはWordで技術文書を作るのは結構困難、ということではないだろうか。
(MS内部の技術文書作成管理はどうなってるのか知りたいものだ)
だがこれはMSの罪、というわけばかりでもなかろう。WordやExcelは汎用性を追い求めすぎ、機能が複雑になりすぎている。必要な機能がどこに埋もれてるのか判らなかったり、引っ張り出すまでに多くの操作やら設定やらが必要だったり、要らん機能がでしゃばってきたり。
使いこなせればあるいは・・・かもしれないが、当方はWordのエキスパートになりたいんじゃない。必要最低限の努力で文書を書きたいだけなのだ。
なんとかならんかなぁ、でいろいろ検索した結果たどり着いたのがDocBook。
DocBookはワープロの類ではない。wikiによれば「DocBookは技術文書のためのマークアップ言語、ただの規格である。
XML型式でDocBookの規格に従った型式で文章を書き、XSLTにより変換をかけることによりHTML・XSL-FO・PDFなど多種多様な書式で出力することが出来る・・・・・ということになっている。
最終的には紙に印刷した文書を作成することを目的としているので、手順としては
DocBook文書作成 → [XSLT] → XSL-FO型式文書 → [フォーマッティング] → PDF型式文書 → [印刷] → [紙]
という手順になるようだ。
二回変換しなければならず、ざっと検索してみるけれどまとまった日本語資料も多くない、変換ツールの導入だけでも一苦労、おそらく日本語フォントの問題も大有り、で、OFFICEのエキスパートになったほうが早いんじゃないかと思えなくもない。
とりあえずぼちぼち調べてみようかと思う。
http://www.dear-jpn.com/main/2007/10/docbook.html
http://yoshihiro.toda.name/docbook/docs/howto/
http://neverbird.sourceforge.jp/articles/docbook-intro.html
そもそもの目的はDocBookでドキュメント(仕様書など)を作るには、ということ。
現在MSWordやExcelなどを使っているが、どうにも使いづらい。
周囲の人に聞いても使いやすい、という返事が来たことはないし、これは、という文書(書式)にも出あった事がない。あるいはこの世のどこかに素晴らしい文書(書式)作成例が存在しているのかも知れないが、あまり見かけない--ということはWordで技術文書を作るのは結構困難、ということではないだろうか。
(MS内部の技術文書作成管理はどうなってるのか知りたいものだ)
だがこれはMSの罪、というわけばかりでもなかろう。WordやExcelは汎用性を追い求めすぎ、機能が複雑になりすぎている。必要な機能がどこに埋もれてるのか判らなかったり、引っ張り出すまでに多くの操作やら設定やらが必要だったり、要らん機能がでしゃばってきたり。
使いこなせればあるいは・・・かもしれないが、当方はWordのエキスパートになりたいんじゃない。必要最低限の努力で文書を書きたいだけなのだ。
なんとかならんかなぁ、でいろいろ検索した結果たどり着いたのがDocBook。
DocBookはワープロの類ではない。wikiによれば「DocBookは技術文書のためのマークアップ言語、ただの規格である。
XML型式でDocBookの規格に従った型式で文章を書き、XSLTにより変換をかけることによりHTML・XSL-FO・PDFなど多種多様な書式で出力することが出来る・・・・・ということになっている。
最終的には紙に印刷した文書を作成することを目的としているので、手順としては
DocBook文書作成 → [XSLT] → XSL-FO型式文書 → [フォーマッティング] → PDF型式文書 → [印刷] → [紙]
という手順になるようだ。
二回変換しなければならず、ざっと検索してみるけれどまとまった日本語資料も多くない、変換ツールの導入だけでも一苦労、おそらく日本語フォントの問題も大有り、で、OFFICEのエキスパートになったほうが早いんじゃないかと思えなくもない。
とりあえずぼちぼち調べてみようかと思う。
登録:
投稿 (Atom)