2011-10-14 35 views
2

我已成功使用Apache FOP使用Ant任務生成PDF。 我也有Java代碼(使用Axis2的Web服務)成功地工作和生成PDF,但一直使用Ant任務,因爲它更快地正確測試我的樣式表。使用Apache FOP 1.0生成TIFF - TIFFImageEncoder4

現在我有PDF工作,我試圖滿足我正在工作的項目的第二個要求 - 即生成一個TIFF。相同的樣式表,相同的源文檔,但輸出是TIFF。

Ant任務看起來像下面:

<?xml version="1.0" encoding="UTF-8"?> 
<project name="FOPAnt" default="generate-pdf-from-transform" basedir="."> 
<property name="fop.home" value="D:\Dev\Java\libraries\fop-1.0-bin\fop-1.0"/> 

<taskdef name="fop" classname="org.apache.fop.tools.anttasks.Fop"> 
    <classpath> 
    <fileset dir="${fop.home}/lib"> 
     <include name="*.jar"/> 
    </fileset> 
    <fileset dir="${fop.home}/build"> 
     <include name="*.jar"/> 
    </fileset> 

    </classpath> 
</taskdef> 

當我運行它,我得到以下錯誤:

BUILD FAILED 
D:\Dev\Java\FopConverter\workspace\FOPAnt\build.xml:30: java.lang.Error: TIFFImageEncoder4 

我對這個錯誤進行了Google搜索並進行了搜索,看起來好像需要在類路徑中包含JAI ImageIO工具。

反覆出現的參考,我發現是這樣的: https://issues.apache.org/bugzilla/show_bug.cgi?id=49681

我注意到jai_imageio.jar實際上已經在我的${fop.home}/build文件夾中。 我是一個Java新手,所以糾正我,如果我錯了,但看起來像JAR已包含在我的上述ANT腳本中的類路徑中?

我已經嘗試使用webservice - 已將jai_imageio.jar添加到構建路徑,它將進入WEB-INF/lib - 獲取相同的錯誤。 已嘗試使用該Bug線程中建議的不同顏色配置,但沒有運氣。

真的很掙扎着。這很令人沮喪,因爲PDF生成運行良好。 用這個打了一下磚牆。

編輯:經過更多的研究,我應該指出我正在使用Windows 7 x64。我將重新安裝一個x86 JRE(將嘗試JRE 7)。

回答

0

確保它是ImageIO 工具而不僅僅是ImageIO;兩個完全不同的東西。

下面是我在基於FOP的TIFF生成器中使用的庫;我避免了XML配置,並與自己的自定義渲染直奔:

  • 阿瓦隆框架-4.2.0.jar
  • 蠟染全1.7.jar
  • 公地IO-1.4.jar
  • 的commons-logging.jar
  • fop.jar
  • jai_imageio.jar
  • 的log4j-1.2.13.jar
  • XML的API-EXT-1.3.04.jar
  • xmlgraphics-commons-1.4。罐子
1

我通過以下步驟得到這個工作:

  1. 安裝在目標服務器上JRE 1.4(JAI圖像IO工具需要這個 安裝)。必須是x86(32位)。 一)J2RE-1_4_2_19窗口-i586的-p.exe工作

  2. 安裝JRE7(再次,必須是x86)

  3. 安裝的Tomcat6 - 設置JRE7因爲它是JRE。

  4. 確保將JAVA_HOME設置爲根JRE7文件夾。

  5. 確保%JAVA_HOME%\ bin在PATH變量

  6. 安裝jai_imageio-1_1-LIB - 窗口i586的-jre.exe。它應該安裝到JRE7中。

我在x64上安裝了x64 JRE和JDK。這是我的問題的根源。

這解決了它,所以我的webservice在TomCat中工作。還沒有嘗試ANT任務。 JAI ImageIO Tools似乎對DLL有依賴性,DLL只能在32位下工作。 我認爲這將無法正常工作在Eclipse中,如果32位,並指向32位JDK/JRE