我正在使用docx4j来创建Microsoft Word文档。我还需要将html文本写入doc。下面是我正在使用的代码,生成doc文件时,它全部为空。
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;">
鉴于字体大小仅适用于英文文本。它不适用于马拉地语文本。
import java.io.File;
import org.apache.commons.io.FileUtils;
import org.docx4j.XmlUtils;
import org.docx4j.convert.in.xhtml.XHTMLImporterImpl;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
public class ConvertInXHTMLFragment {
static String SRC = "/home/Downloads/Input.html";
static String DEST = "/home/Downloads/Sample.docx";
public static void main(String[] args) throws Exception {
String stringFromFile = "<html>पासवर्ड</html>";
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage();
XHTMLImporterImpl XHTMLImporter = new XHTMLImporterImpl(wordMLPackage);
wordMLPackage.getMainDocumentPart().getContent().addAll(XHTMLImporter.convert(stringFromFile, null));
System.out.println(XmlUtils.marshaltoString(wordMLPackage.getMainDocumentPart().getJaxbElement(), true, true));
wordMLPackage.save(new java.io.File(DEST));
}
}
答案 0 :(得分:0)
AltChunk依赖于消费应用程序的支持(即消费应用程序转换HTML有效负载)。
您的输出docx适用于Microsoft Word(2010年测试)。
如果您希望在保存之前将XHTML转换为真实的docx内容,那么您可以在更广泛的消费应用程序中查看您的内容,请参阅https://github.com/plutext/docx4j-ImportXHTML/tree/master/src/samples/java/org/docx4j/samples
更新 - FONTS
处理Marathi可能依赖于RFonts对象中的其他属性之一。您需要查看正在运行的docx才能看到。您可以使用https://github.com/plutext/docx4j-ImportXHTML/blob/master/src/main/java/org/docx4j/convert/in/xhtml/FontHandler.java#L54注入合适的字体映射。