[英]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.