2017-05-30 74 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

相关问题