0
我将DocX转换为Html并返回到DocX。最终的Docx已成功生成。但是,转换偏斜了最终文档中表格的格式。在最终的docx中生成的表格已将其单元格宽度拉长,导致表格超出文档边界。DOCX4J:将HTML转换为Docx - 表格格式
- docx中的原始表格的列宽为8.15厘米(表格宽度为16.30厘米)。
- 转换为html表的宽度为:6.42in。
- 转换回docx表格列宽为10.76厘米(表格 宽度,21.52厘米)。
有没有办法让我在转换后保持相同的格式? 任何意见,不胜感激。
下面是我的代码:
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"));
}
是的。这正是我的用例。是的,表格宽度是固定的。我翻看手册,并有几个问题。 如果我要使用这个库,我是否还需要将docx,html转换为docx? 我使用primefaces作为我的前端,它有CKEditor。我是使用primefaces提供的还是我必须安装它? – user2533611
项目https://github.com/plutext/docx-html-editor进行转换。尝试单独运行,一旦你有这个工作,将其集成到你的项目。正如页面所述,它使用CKeditor v3.6.6.1,所以我猜如果primefaces提供的那个可能会工作,如果它接近。 – JasonPlutext