2017-05-30 226 views
0

我正在使用docx4j來創建Microsoft Word文檔。我還需要將html文本寫入doc。以下是我正在使用的代碼,當生成DOC文件時,其全部爲空。如何使用POI或docx4j將HTML文本寫入Microsoft Word文檔?

import org.docx4j.dml.ObjectFactory; 
import org.docx4j.jaxb.Context; 
import org.docx4j.openpackaging.packages.WordprocessingMLPackage; 
import org.docx4j.openpackaging.parts.WordprocessingML.AltChunkType; 

public class AltChunkAddOfTypeHtml { 

    static String DEST = "/home/Downloads/Sample.docx"; 

    private static org.docx4j.wml.ObjectFactory factory; 

    public static void main(String[] args) throws Exception { 

     WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage 
       .createPackage(); 

     String html = "<html>पासवर्ड</html>"; 

     wordMLPackage.getMainDocumentPart().addAltChunk(AltChunkType.Html, 
       html.getBytes()); 

     wordMLPackage.save(new java.io.File(DEST)); 
    } 

} 

編輯1:

下面是一個正常運行的代碼。現在只有問題是正確設置字體。當我在HTML中設置字體如下

<table border="1px" width="70%" style="font-size: 9px;"> 

鑑於字體大小僅適用於英文文本。它不適用於Marathi文本。

回答

0

AltChunk依賴於消費應用程序的支持(即消費應用程序轉換HTML有效載荷)。

您的輸出docx在Microsoft Word中工作(測試版2010)。

如果你想XHTML轉化爲現實的docx內容保存在它之前,這樣你就可以看到一個更廣泛的範圍內使用應用程序的內容,請參閱https://github.com/plutext/docx4j-ImportXHTML/tree/master/src/samples/java/org/docx4j/samples

更新 - FONTS

字體的處理方式通過https://github.com/plutext/docx4j-ImportXHTML/blob/master/src/main/java/org/docx4j/convert/in/xhtml/FontHandler.java#L58

Marathi可能依賴於RFonts對象中的其他屬性之一。您需要查看正在工作的docx才能看到。您可以使用https://github.com/plutext/docx4j-ImportXHTML/blob/master/src/main/java/org/docx4j/convert/in/xhtml/FontHandler.java#L54來注入合適的字體映射。

+0

以上哪個樣本解決了問題?我無法弄清楚。 – ashishjmeshram

+0

其中任何一個.... – JasonPlutext

+0

它工作。但是我的HTML文本只有很少的Marathi文本和英文文本。兩者的字體大小均爲9px。生成docx時,字體大小適用於英文文本,但不適用於Marathi文本。有任何想法嗎? – ashishjmeshram

相關問題