簡體   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