1/31/2008

Корректное расположение таблицы при генерации pdf

Для того чтобы табличка разделялась на части, если она не помещается на лист, необходимо добавить в xsl схему следующий атрибут:

<xsl:attribute-set name="formal.object.properties">
<xsl:attribute name="keep-together.within-column">auto</xsl:attribute>
</xsl:attribute-set>

1/29/2008

Настройка fop для генерации pdf с русскими буквами.

Расскажу как настроить fop для того, чтобы он корректно генерировал pdf с
русскими буквами.
Продолбался недавно тут с ним весь день.
Итак, что нам потребуется:
fop ver. >=0.94 (берем отсюда),
можно брать бинарную версию, чтобы не заморачиваться с компиляцией.
ttf шрифты, скажем от windows.

1. Устанавливаем fop в удобный каталог. (к примеру в /opt/pkg/fop).
2. Копируем шрифты в какой нибудь каталог (у меня: /opt/pkg/fop/conf/fonts)
3. Далее генерируем font-maps для каждого шрифта.
Я дела следующим образом:
вот такой вот скрипт:

cmd="java -cp build/fop.jar:lib/batik-all-1.6.jar:lib/xalan-2.7.0.jar:lib/commons-io- 1.3.1.jar:lib/commons-logging-1.0.4.jar:lib/avalon-framework-4.2.0.jar:lib/xml-apis-
1.3.02.jar:lib/serializer-2.7.0.jar:lib/xercesImpl-2.7.1.jar
org.apache.fop.fonts.apps.TTFReader"
dir="conf/fonts"
ext=".xml"

for f in `ls -1 $dir`;
do

echo "processing file : $dir/$f"

fname=`echo $f | cut -d . -f1`

newf="$dir/$fname$ext"

${cmd} $dir/$f $newf

chmod 666 $newf
echo "writing to file $newf : success"

done


4. Далее правим файл конфигурации /opt/pkg/fop, где прописываем соответствующие шрифты:

к примеру для шрифта Arial:

<font metrics-url="/opt/pkg/fop/conf/fonts/arialbi.xml" kerning="yes" embed-url="/opt/pkg/fop/conf/fonts/arialbi.ttf">
<font-triplet name="Arial" style="italic" weight="bold"/>
</font>


Потом запускаем fop:
/opt/pkg/fop -xml foo.xml -xsl foo.xsl -pdf foo.pdf

Вот и все.