2. インストール
インストールは、 Cygwin の bash から行います。
以下の説明では、インストール先を /usr/local/java/ として作業を進めます。
$ cd /usr/local/ $ mkdir java $ cd java $ tar zxvf /path/to/fop-0.20.5-bin.tar.gz fop-0.20.5/fop.sh fop-0.20.5/examples/servlet/build.sh fop-0.20.5/examples/embedding/build.sh fop-0.20.5/xalan.sh fop-0.20.5/ ... $ pwd /usr/local/java $ ls -l total 0 drwxr-xr-x+ 7 merita なし 0 Jan 16 11:07 fop-0.20.5 $ cd fop-0.20.5 $ ls -l ... -rw-r--r-- 1 merita なし 812 Jul 15 2003 fop.bat -rwxr-xr-x 1 merita なし 2446 Jul 15 2003 fop.sh drwxr-xr-x+ 2 merita なし 0 Jan 16 11:07 lib -rw-r--r-- 1 merita なし 330 Jul 15 2003 xalan.bat -rwxr-xr-x 1 merita なし 2452 Jul 15 2003 xalan.sh
fop.sh が FOP を起動するためのシェル・スクリプトですが、 ちょっとしたミスがあり Cygwin では動作しません。修正したものを作成しましたので、こちらを使用してください。
fop_sh.txt:
#! /bin/sh
#
# Shell script to run FOP, adapted from the Jakarta-Ant project.
FOP_HOME=/usr/local/java/fop-0.20.5
FOP_USERCONF="$FOP_HOME/conf/userconfig.xml"
if [ -f $HOME/.foprc ] ; then
. $HOME/.foprc
fi
if [ -e $FOP_USERCONF ] ; then
if $cygwin ; then
FOP_USERCONF=`cygpath --windows "$FOP_USERCONF"`
fi
FOP_OPTS="$FOP_OPTS -c $FOP_USERCONF"
fi
# OS specific support. $var _must_ be set to either true or false.
cygwin=false;
darwin=false;
case "`uname`" in
CYGWIN*) cygwin=true ;;
Darwin*) darwin=true ;;
esac
if [ -z "$FOP_HOME" ] ; then
# try to find FOP
if [ -d /opt/fop ] ; then
FOP_HOME=/opt/fop
fi
if [ -d ${HOME}/opt/fop ] ; then
FOP_HOME=${HOME}/opt/fop
fi
## resolve links - $0 may be a link to fop's home
PRG=$0
progname=`basename $0`
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '.*/.*' > /dev/null; then
PRG="$link"
else
PRG="`dirname $PRG`/$link"
fi
done
FOP_HOME=`dirname "$PRG"`
fi
# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin ; then
[ -n "$FOP_HOME" ] &&
FOP_HOME=`cygpath --unix "$FOP_HOME"`
[ -n "$JAVA_HOME" ] &&
JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
[ -n "$CLASSPATH" ] &&
CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
fi
if [ -z "$JAVACMD" ] ; then
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD=$JAVA_HOME/jre/sh/java
else
JAVACMD=$JAVA_HOME/bin/java
fi
else
JAVACMD=java
fi
fi
if [ -n "$CLASSPATH" ] ; then
LOCALCLASSPATH=$CLASSPATH
fi
# add fop.jar, which resides in $FOP_HOME/build
LOCALCLASSPATH=${FOP_HOME}/build/fop.jar:$LOCALCLASSPATH
# add in the dependency .jar files, which reside in $FOP_HOME/lib
DIRLIBS=${FOP_HOME}/lib/*.jar
for i in ${DIRLIBS}
do
# if the directory is empty, then it will return the input string
# this is stupid, so case for it
if [ "$i" != "${DIRLIBS}" ] ; then
if [ -z "$LOCALCLASSPATH" ] ; then
LOCALCLASSPATH=$i
else
LOCALCLASSPATH="$i":$LOCALCLASSPATH
fi
fi
done
# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
FOP_HOME=`cygpath --path --windows "$FOP_HOME"`
JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
LOCALCLASSPATH=`cygpath --path --windows "$LOCALCLASSPATH"`
fi
$JAVACMD -Xmx256M $JAVAOPTS -classpath "$LOCALCLASSPATH" org.apache.fop.apps.Fop $FOP_OPTS "$@"
このファイルを PATH の通った場所へ fop として保存し、実行パーミッションを追加してください。たとえば /usr/local/bin/fop などとして保存し、
$ chmod a+x /usr/local/bin/fop
とします。
関連記事
-
#7. DocBook による移植可能文書の作成と運用:
2004-08-29 サイトの種類によっては、ウェブの内容と同じものを PDF としても公開したい といういう場合があります。もちろん HTML と PDF を、別々に作成してしまうと言う手もありますが、ここでは DocBook という XML 形式のフォーマッ... -
A. 概論と基礎知識:
DocBook + xsltproc + Apaceh FOP の組み合わせで、以下のように DocBook(.xml)形式のファイルから HTML,XHTML,PDF などのファイルを作成することができます。DocBook(.xml)+ ... -
B. 使用環境:
今回、評価を行った環境は以下のとおりです。Windows XPCygwin 1.5xsltproc(Cygwin 1.5 に含まれるもの)Java 1.4Apache FOP 0.20 xsltproc は、非常にポピュラーな XSLT プ... -
more 「DocBook」について: 7 ...
-
#7. DocBook による移植可能文書の作成と運用:
2004-08-29 サイトの種類によっては、ウェブの内容と同じものを PDF としても公開したい といういう場合があります。もちろん HTML と PDF を、別々に作成してしまうと言う手もありますが、ここでは DocBook という XML 形式のフォーマッ... -
B. 使用環境:
Apache FOP は Java で動作するため、他のプラットフォームでも動作可能だと思われます。ただし、PDF を作成する場合、フォント(特に日本語)が必要となります。これは、プラットフォームに依存するため、違いが出てくると思われます。 -
4. 日本フォントを使えるようにする:
Apache FOP 0.20 では、デフォルトのままでは日本語フォントが含まれていないため、日本語を含む XLS-FO から PDF を作成した場合、(いわゆる)文字化けが発生してしまいます。そのため、設定を変更して日本語フォントを扱える... -
more 「PDF」について: 6 ...
新着記事
-
#1708. 羊好き必食、まろやかな酸味があとを引く酸湯肥羊 -- 中国東北地方の鍋料理 @東北人家新館.横浜中華街:
2026-01-03 横浜中華街・広東道の 東北人家新館にてランチ。東北人家は、中国東北地方の料理(東北菜)を出す店。ランチタイムにはいつも鍋料理が用意されていて、昼間から気軽に鍋を楽しめる。一人用の小鍋サイズで、量もちょうどいい。今回はランチメニューから酸湯肥...
-
#1707. 寒い日に沁みる、とろみスープと自家製麺「凌世麺」の蝦仁湯麺 (えびそば) @東林.横浜中華街:
2026-01-03 横浜中華街・福建路の東林(とうりん)にてランチ。あまりの寒さに、スープたっぷりの麺料理が恋しくなり、蝦仁湯麺(えびそば)を大盛りでオーダー。東林のラーメンは自家製麺を使っているのが特徴で、その麺は「凌世麺(りょうせいめん)」と名付けられてい...
-
#1706. 新年を祝う、ポンパドウル元町本店の十二支パン「午」 -- 2026年の干支パン @横浜:
2026-01-03 新年明けましておめでとうございます。旧年中はお世話になりました。本年もよろしくお願いします。写真は、ポンパドウル 元町本店の十二支パン(干支パン)、2026年は「午」🐎。カスタードクリーム入り菓子パン。
-
#1705. もちもち極太麺が暴れる、萬来亭の名物 上海炒麺 (上海焼きそば) @横浜中華街:
2026-01-03 1月3日。例年のように元町厳島神社へ初詣。その帰り道、横浜中華街の萬来亭(ばんらいてい)にてランチ。食べたい料理はいろいろ思い浮かぶが、年明け最初の訪問となれば、やはりこの店の名物上海炒麺(上海焼きそば)を外すわけにはいかない 迷わずオーダ...
-
#1704. 元旦の横浜中華街で味わう、滋味深い台湾小皿と沙茶嫩雞 @台湾美食:
2026-01-01 2026年元旦。横浜中華街・長安道の台湾美食にて晩餐。台湾美食は、その名のとおり台湾料理の店。現在の店舗は、以前は伊豆のアンテナショップだった場所をほぼ居抜きで使っており、外装にやや和風の名残がある。そのため、中華風の外観が並ぶ中華街の中で...
merita.jp