Table 具有垂直文本方向的单元格 HTML 到 .DOCX with docx4j

Table cell with vertical text direction in HTML to .DOCX with docx4j

我正在尝试使用 docx4j 将带有垂直方向文本的 html table 转换为 docx。这是我的代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="ISO-8859-1" />
    <title>Platilla HTML para convertirlo a DOCX</title>
    <style type="text/css">
        body {
            font-family:Arial;
            font-size:11pt;
        }
        .titulo {
            text-align:center;
            font-weight:bold;
        }
        .contenido {
            text-align:justify;
        }
        .tabla {
            width:100%;
            border:1px solid black;
            border-spacing:0px;
            border-collapse:collapse;
            margin-top: 10px;
        }
        .tabla td, .tabla th {
            border:1px solid black;
        }
        .tabla th {
            background-color: #898989;
            color: white;
            text-align: center;
            vertical-align: bottom;
            height: 150px;
            padding-bottom: 3px;
            padding-left: 5px;
            padding-right: 5px;
        }
        .verticalText {
            text-align: center;
            vertical-align: middle;
            width: 20px;
            margin: 0px;
            padding: 0px;
            padding-left: 3px;
            padding-right: 3px;
            padding-top: 10px;
            white-space: nowrap;
            transform: rotate(-90deg);
            -webkit-transform: rotate(-90deg);
            -moz-transform: rotate(-90deg);
            -o-transform: rotate(-90deg);
            -ms-transform: rotate(-90deg);                 
        };  
    </style>
</head>
<body>
    <table class="tabla">
        <tr>
            <th><div class="verticalText">No. de Item</div></th>
            <th>Departamento / Municipio</th>
            <th>Tipo de Servicio</th>
            <th>Contratista</th>
            <th>Monto maximo</th>
        </tr>
        <tr>
            <td>6</td>
            <td>7</td>
            <td>8</td>
            <td>9</td>
            <td>10</td>
        </tr>
    </table>
</body>

我正在使用样式将文本转换为垂直方向...

transform: rotate(-90deg);
-webkit-transform: rotate(-90deg);
-moz-transform: rotate(-90deg);
-o-transform: rotate(-90deg);
-ms-transform: rotate(-90deg);

...但是当我使用 docxj4 从 html 导出到 docx 时(在变量 "xhtml" 中是要导出的所有 html 代码)...

private WordprocessingMLPackage export(String xhtml) {

    WordprocessingMLPackage wordMLPackage = null;
    try {
        RFonts arialRFonts = Context.getWmlObjectFactory().createRFonts();
        arialRFonts.setAscii("Arial");
        arialRFonts.setHAnsi("Arial");
        XHTMLImporterImpl.addFontMapping("Arial", arialRFonts);

        wordMLPackage = WordprocessingMLPackage.createPackage(PageSizePaper.LETTER, false);
        XHTMLImporter importer = new XHTMLImporterImpl(wordMLPackage);
        List<Object> content = importer.convert(xhtml, null);
        wordMLPackage.getMainDocumentPart().getContent().addAll(content);
    } catch (Docx4JException ex) {
        Logger.getLogger(ReporteContratoEspecialista.class.getName()).log(Level.SEVERE, null, ex);
    }
    return wordMLPackage;
}

..正在保存文档...

wordMLPackage.save(servletOutputStream);

...单元格文本在 .docx 文档中处于正常方向,水平方向。

还有其他方法可以使用 html 生成 docx 文档吗? 我需要 docx 中的垂直文本。

您需要增强 source code 才能添加该功能。