繁体   English   中英

DOCX4J:将HTML转换为Docx-表格式

[英]DOCX4J: Converting HTML to Docx - Table Formatting

我正在将DocX转换为HTML,然后再转换回DocX。 最终Docx已成功生成。 但是,该转换使最终文档中的表格格式出现偏差。 最终docx中生成的表的单元格宽度加长,导致该表超出文档边界。

  • docx中的原始表格的列宽为8.15厘米(表格宽度为16.30厘米)。
  • 转换为html的表格,宽度为6.42英寸。
  • 转换回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") );

    }

您的用例是否通过XHTML往返进行基于Web的编辑?

如果是这样,也许docx-html-editor有所帮助。 它通过保存往返过程中使用的状态/提示来工作。

除此之外,Word中的表不是固定的单元格宽度,就是不是。 您描述的行为是否发生在固定宽度的表格上?

固定宽度应该可以(或者足够容易做到这一点)。 不固定更难...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM