2014-12-26 3 views
0

Пример программы ...Преобразование HTML код Слово Использование docx4j изображения не встраивается в документ Word,

import java.io.IOException; 
import org.docx4j.Docx4jProperties; 
import org.docx4j.jaxb.Context; 
import org.docx4j.openpackaging.contenttype.ContentType; 
import org.docx4j.openpackaging.exceptions.Docx4JException; 
import org.docx4j.model.structure.PageSizePaper; 
import org.docx4j.openpackaging.packages.WordprocessingMLPackage; 
import org.docx4j.openpackaging.parts.PartName; 
import org.docx4j.openpackaging.parts.WordprocessingML.AlternativeFormatInputPart; 
import org.docx4j.relationships.Relationship; 
import org.docx4j.wml.CTAltChunk; 

public class HtmlToDoc { 
    public static void main(String[] args) throws Docx4JException { 
     String html="", s="", filepath="E://HtmlToDoc//"; 

     try { 

      String html = "<html><head><title>Import me</title></head><body><p>Hello World! Sample Program</p><img src="E:/HtmlToDoc/LOGO.JPEG"/></body></html>"; 

      Docx4jProperties.getProperties().setProperty("docx4j.PageSize", "B4JIS"); 
      String papersize= Docx4jProperties.getProperties().getProperty("docx4j.PageSize", "B4JIS"); 
      String landscapeString = Docx4jProperties.getProperties().getProperty("docx4j.PageOrientationLandscape", "true"); 
      boolean landscape= Boolean.parseBoolean(landscapeString); 

      WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage(PageSizePaper.valueOf(papersize), landscape); 
      AlternativeFormatInputPart afiPart = new AlternativeFormatInputPart(new PartName("/hw.html")); 

      afiPart.setBinaryData(html.getBytes()); 
      //afiPart.setBinaryData(fileContent); 

      afiPart.setContentType(new ContentType("text/html")); 
      Relationship altChunkRel = wordMLPackage.getMainDocumentPart().addTargetPart(afiPart); 

      // .. the bit in document body 
      CTAltChunk ac = Context.getWmlObjectFactory().createCTAltChunk(); 
      ac.setId(altChunkRel.getId()); 
      wordMLPackage.getMainDocumentPart().addObject(ac); 

      // .. content type 
      wordMLPackage.getContentTypeManager().addDefaultContentType("html", "text/html"); 
      wordMLPackage.save(new java.io.File("E://HtmlToDoc//" + "test.docx")); 

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

} 

Это правильно работает в моей локальной машине. но я переместил этот код на сервер в моем документе. Документ не вставлен, но я дал правильный путь к изображению. [То же самое изображение работает нормально, когда я конвертирую HTML в PDF на сервере]. что может быть причиной отсутствия изображения во время работы на сервере [Linux-машина и сервер приложений IBM Websphere и сервер ApacheWeb]. Хотя все мои пути (документ документа, изображения, html-документ) одинаковы.

ответ

1

Ваш код основан на Word, чтобы преобразовать altChunk в HTML, поэтому, если вы открываете документ Word на своем локальном компьютере, он не сможет увидеть изображение на E: /HtmlToDoc/LOGO.JPEG on сервер.

Возможно, вы используете URL-адрес или URI данных.

В качестве альтернативы используйте docx4j-ImportXHTML, который будет выполнять преобразование, не оставляя ничего в Word.

+0

Я использовал относительное изображение пути, внедренное в слово, но когда я загружаю изображение, отсутствует, но когда я скопировал документ слова с сервера на локальное изображение, он находится в текстовом документе. Я пробовал использовать URI другого метода. Я получаю небольшую кросс-метку вместо изображения. где я делаю неправильный код. –

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

  • Нет связанных вопросов^_^