2016-06-14 101 views
0

在服务器端,我有一个类用于将SVG文件转换为PDF。在Apache Tomcat上部署GWT应用程序

public class PdfHandler { 
    private File savedFile; 
    private File svgTempFile; 

    public PdfHandler(String fileName) { 
     this.savedFile = new File(File.separator + "documents" + File.separator + fileName); 
    } 

    public void convertToPdf(String inputFileName) { 
     this.svgTempFile = new File(inputFileName); 
     System.out.println(inputFileName); 
     if (this.svgTempFile.exists()){ 
      System.out.println("Svg File exists"); 
     } 
     else { 
      System.out.println("Svg File not exists"); 
     } 

     try { 
      Transcoder transcoder = new PDFTranscoder(); 
      System.out.println("Transcoder created"); 
      FileInputStream fis = new FileInputStream(this.svgTempFile); 
      System.out.println("Input stream created"); 
      FileOutputStream fos = new FileOutputStream(this.savedFile); 
      System.out.println("Output stream created"); 
      TranscoderInput transcoderInput = new TranscoderInput(fis); 
      System.out.println("Transcoder input created"); 
      TranscoderOutput transcoderOutput = new TranscoderOutput(fos); 
      System.out.println("Transcoder output created"); 
      transcoder.transcode(transcoderInput, transcoderOutput); 
      System.out.println("Conversion finished"); 

      fis.close(); 
      fos.close(); 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
      System.out.println("Exception"); 
     } finally { 
      this.svgTempFile.delete(); 
      System.out.println("File deleted"); 
     } 
      System.out.println("End of method"); 
    } 
} 

而且我有一个RPC调用的方法。

public String generatePdf(PayDoc filledDoc) { 
    //String svgFileName = this.generateSvg(filledDoc); 
    //String pdfFileName = this.generateFileName("pdf"); 
    PdfHandler pdfHandler = new PdfHandler("myPdf.pdf"); 
    pdfHandler.convertToPdf(File.separator + "documents" + File.separator + "mySvg.svg"); 
     return null;//pdfFileName; 
} 

在eclipse中所有的工作都很好,但不是在Tomcat上。当我把它在Tomcat RPC失败,这是Tomcat的控制台输出:

\documents\mySvg.svg 
Svg File exists 
Transcoder created 
Input stream created 
Output stream created 
Transcoder input created 
Transcoder output created 
File deleted 

后,在“文档”文件夹中我有“mySvg.svg”(还没有删除)和“myPdf.pdf”(这是空)。

+0

_“on Tomcat。RPC failed”_失败如何? tomcat的错误日志里有什么? – Baz

+0

java.lang.NoClassDefFoundError:org/w3c/dom/ElementTraversal –

回答

1

看起来您并未在部署的应用程序中包含所需的库。

ElementTraversalxml-apis-X.XX.X.jar的一部分,必须与您的应用程序捆绑在一起。

由于有大量构建工具,我不知道你在使用哪一个工具,所以我不能建议更改。

+1

谢谢。我没有添加Batik的所有JAR,但仅添加了我直接使用的那些JAR。这是我的问题的原因。 lib中的所有JAR都是必需的。 –

相关问题