2014-10-10 102 views
2

我的問題非常具體,我希望有人將HTML轉換爲DOCX。將HTML轉換爲DOCX

爲此,我從github獲取了一個示例代碼,並在我的本地Eclipse安裝程序中嘗試了它。

import java.io.File; 
import java.io.FileNotFoundException; 

import javax.xml.bind.JAXBException; 

import org.docx4j.convert.in.xhtml.XHTMLImporterImpl; 
import org.docx4j.openpackaging.exceptions.Docx4JException; 
import org.docx4j.openpackaging.exceptions.InvalidFormatException; 
import org.docx4j.openpackaging.packages.WordprocessingMLPackage; 
import org.docx4j.openpackaging.parts.WordprocessingML.NumberingDefinitionsPart; 

public class HtmlToDocConvert { 

    /** 
    * @param args 
    * @throws FileNotFoundException 
    * @throws JAXBException 
    * @throws Docx4JException 
    */ 
    public static void main(String[] args) throws FileNotFoundException, 
      JAXBException, Docx4JException { 
     // TODO Auto-generated method stub 

     // File file = new File("C:\\TestWordToHtml\\html\\Test.html"); 

     String inputfilepath = "C:\\TestWordToHtml\\html\\Test.html"; 

     try { 

      WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage 
        .createPackage(); 

      NumberingDefinitionsPart ndp = new NumberingDefinitionsPart(); 
      wordMLPackage.getMainDocumentPart().addTargetPart(ndp); 
      ndp.unmarshalDefaultNumbering(); 

      XHTMLImporterImpl xHTMLImporter = new XHTMLImporterImpl(
        wordMLPackage); 
      xHTMLImporter.setHyperlinkStyle("Hyperlink"); 
      wordMLPackage.getMainDocumentPart().getContent().addAll(
        xHTMLImporter.convert(new File(inputfilepath), null)); 

      File output = new java.io.File(System.getProperty("user.dir") 
        + "/html_output.docx"); 
      wordMLPackage.save(output); 
      System.out.println("done"); 

      System.out.println("file path where it is stored is" + " " 
        + output.getAbsolutePath()); 

     } 

     catch (InvalidFormatException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

    } 

} 

上面的代碼是給我一個錯誤如下螺紋

異常 「主要」 java.lang.NoSuchMethodError:org.docx4j.org.xhtmlrenderer.docx.DocxRenderer(Ljava /朗/字符串;)V 在org.docx4j.convert.in.xhtml.XHTMLImporterImpl.getRenderer(XHTMLImporterImpl.java:252) 在org.docx4j.convert.in.xhtml.XHTMLImporterImpl.convert(XHTMLImporterImpl.java:466) 在HtmlToDocConvert .main(HtmlToDocConvert.java:41)

Jars在我的項目中實現這一目標是作爲foll虧欠的。

docx4j-3.2.1.jar
docx4j-ImportXHTML-3.2.1.jar
slf4j-api-1.7.7.jar
slf4j-log4j12-1.7.7.jar
xhtmlrenderer-1.0.0.jar
log4j.jar

我已經剝離了xhtmlrendere.jar文件查看DOCRendered類,發現沒有init方法裏面它。我已經花了近半天的時間來弄清楚這事,我不知道,如果這是進行轉換的正確方法,或者這甚至是可能的。

如果有人已經這樣做了,他/她可以發送給我正確的xhtmlrenderer.jar文件或任何其他依賴項來完成這個簡單的任務。

由於提前

問候, 巴努•

+0

[轉換HTML到Java文檔(http://stackoverflow.com/questions/5403356/convert-html-to-doc-in-java) – 2014-10-10 11:01:39

回答

5

這不是完整的例子,是嗎?請從docx4j的例子看ConvertInXHTMLFile.java

恕我直言,你缺少程序的基本部分。此外,這個話題已經被討論:

Convert html to doc in java

How to convert HTML to a Microsoft Word document ?

Convert HTML to Microsoft Word Document in Java

how to convert HTML to .docx using docx4j?

+0

如果它是不明確可能重複,你可以在http://www.docx4java.org/docx4j/docx4j-3_2_0/optional/ImportXHTML/或通過Maven找到正確的xhtmlrenderer-3.0.0.jar https://github.com/plutext/docx4j-ImportXHTML/blob /master/pom.xml – JasonPlutext 2014-10-10 19:48:41

+0

在放入最新的xhtmlrender-3.0.0後,我能夠得到這個工作。在建立路徑中的罐子。 – MrWayne 2015-01-15 12:44:00

0

檢查code here。使用的Api是docx4j-ImportXHTML。代碼很簡單。只需將代碼中的xhtml傳遞給api,它就會執行必要的操作。