[英]DOCX4J: Converting HTML to Docx - Table Formatting
我正在将DocX转换为HTML,然后再转换回DocX。 最终Docx已成功生成。 但是,该转换使最终文档中的表格格式出现偏差。 最终docx中生成的表的单元格宽度加长,导致该表超出文档边界。
转换后我有办法保持相同的格式吗? 任何意见是极大的赞赏。
下面是我的代码:
private void convertHtmlToDocx() throws IOException, JAXBException, Docx4JException{
//convert back to docx
String inputfilepath = System.getProperty("user.dir") + "myPath";
String baseURL = "file:///"+System.getProperty("user.dir")+"path";
String stringFromFile = FileUtils.readFileToString(new File(inputfilepath), "UTF-8");
String unescaped = stringFromFile;
if (stringFromFile.contains("</") ) {
unescaped = StringEscapeUtils.unescapeHtml(stringFromFile);
}
System.out.println("Unescaped: " + unescaped);
// Setup font mapping
RFonts rfonts = Context.getWmlObjectFactory().createRFonts();
rfonts.setAscii("Century Gothic");
XHTMLImporterImpl.addFontMapping("Century Gothic", rfonts);
// Create an empty docx package
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage();
NumberingDefinitionsPart ndp = new NumberingDefinitionsPart();
wordMLPackage.getMainDocumentPart().addTargetPart(ndp);
ndp.unmarshalDefaultNumbering();
// Convert the XHTML, and add it into the empty docx we made
XHTMLImporterImpl XHTMLImporter = new XHTMLImporterImpl(wordMLPackage);
XHTMLImporter.setTableFormatting(FormattingOption.IGNORE_CLASS);
XHTMLImporter.setParagraphFormatting(FormattingOption.IGNORE_CLASS);
XHTMLImporter.setHyperlinkStyle("Hyperlink");
wordMLPackage.getMainDocumentPart().getContent().addAll(XHTMLImporter.convert(unescaped, baseURL) );
wordMLPackage.save(new java.io.File(System.getProperty("user.dir") + "myPath") );
}
您的用例是否通过XHTML往返进行基于Web的编辑?
如果是这样,也许docx-html-editor会有所帮助。 它通过保存往返过程中使用的状态/提示来工作。
除此之外,Word中的表不是固定的单元格宽度,就是不是。 您描述的行为是否发生在固定宽度的表格上?
固定宽度应该可以(或者足够容易做到这一点)。 不固定更难...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.