昨晚在家里把项目文档分成好几个文件,每个文件一个chapter,在家里用fop转换成pdf没有一点问题,今天拿到公司,下载了fop 0.95beta,对同样的文件,却不能够转换,错误信息是因为网络。
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
于是就猜想是因为公司的proxy的问题,因为家里的网络是没有设置proxy的,公司的却必须要proxy才可以连接网络。上网找了一阵子终于给我找到如何配置(本人对Java不熟悉,所以必须上网搜索)。具体该法是修改fop.bat文件中JAVAOPTS一行,修改后如下:
set JAVAOPTS=-Denv.windir=%WINDIR% -Dhttp.proxyHost=my.proxy.ip.address -Dhttp.proxyPort=8080
另外,fop在转换pd的时候默认的sect1,sect2, 都没有标号,而我需要这些标号,于是自己定制了一些参数。fop在转换pdf的时候用的xslt是位于fo子文件夹下里面的docbook.xsl文件,我在fo文件夹下面创建了一个自己的文件叫做mydocbook.xsl, 然后在用fop转换的时候,指定这个文件为xsl文件。
mydocbook.xsl内容很简单:
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:exsl="http://exslt.org/common"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:ng="http://docbook.org/docbook-ng"
xmlns:db="http://docbook.org/ns/docbook"
exclude-result-prefixes="db ng exsl"
version='1.0'>
<xsl:import href="docbook.xsl" />
<xsl:param name="fop.extensions" select="0"/>
<xsl:param name="fop1.extensions" select="0"/>
<xsl:param name="section.autolabel" select="1"/>
<xsl:param name="section.autolabel.max.depth">8</xsl:param>
<xsl:param name="section.label.includes.component.label" select="1"/>
</xsl:stylesheet>
Friday, July 18, 2008
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment