2014-10-10 7 views
2

Мой вопрос очень конкретный, и я надеюсь, что кто-то сделал это преобразование из HTMLto 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/языки/String ;) 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 и увидел, что не было никакого способа инициализации внутри it.I потратили около половины дня, чтобы выяснить это дело, и я не уверен, если это это правильный способ сделать преобразование, или это даже возможно.

Если кто-то это сделал, он/она отправил мне правильный xhtmlrenderer.jar файл или любую другую зависимость для достижения этой простой задачи.

Заранее спасибо

С уважением, Bhanu

+0

возможно дубликат [Преобразование HTML в документ в Java] (http://stackoverflow.com/questions/5403356/convert-html-to-doc-in-java) –

ответ

5

Это не полный пример, не так ли? Просто взгляните на ConvertInXHTMLFile.java от docx4j примеров.

ИМХО вам не хватает основных частей процедуры. Кроме того, эта тема уже обсуждалась уже:

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

В случае не понятно, вам может найти правильный xhtmlrenderer-3.0.0.jar в http://www.docx4java.org/docx4j/docx4j-3_2_0/optional/ImportXHTML/ или через Maven https://github.com/plutext/docx4j-ImportXHTML/blob /master/pom.xml – JasonPlutext

+0

Мне удалось получить эту работу после установки последнего xhtmlrender-3.0.0. jar в пути сборки. – MrWayne

0

чек code here. Используемый Api - docx4j-ImportXHTML. Код прост для подражания. Просто передайте свой xhtml в api, как в коде, и он сделает это нужным.

Смежные вопросы