当前位置: 首页 > 知识库问答 >
问题:

Java Spring/Apache POI/Thymeleaf-从MSWord到HTML的格式化风格

羊新翰
2023-03-14

我有一个构建在Spring MVC上的应用程序,它使用Apache POI读取MSWord DOX,并将其返回到HTML Thymeleaf网页。但我不能保持文本格式样式,如粗体,斜体,字体颜色,字体大小等。

Spring Controller方法返回一个ModelAndView,其中包含一个名为docDetail的变量,该变量由loadResource()中的XWPFDocument对象加载。

[...]
@GetMapping("/document")
public ModelAndView document() {
    [...]

    modelAndView.addObject("docDetail", fileService.loadResource());

    return modelAndView;
}
[...]

HTML Thymeleaf在迭代文档中的段落时填充一个片段。

[...]
<div th:fragment="doc-detail">
        <div th:each="par : ${docDetail.paragraphs}">
            <p th:text="${par.text}"></p>
        </div>
</div>
[...]

并且结果显示为纯文本。我还没有试过Apache Tika。那么,我该如何保持从文档到网页的样式呢?提前道谢。

共有1个答案

巫马玉堂
2023-03-14

我想我明白你的问题了。您正在使用xwpfdocument并在不考虑样式的情况下扫描文本。在POI中,字体和样式是以xwpfrun类型编码的,该类型是parague下一级的。因此您将需要一个额外的th:each来循环运行并为每个运行应用样式。您的代码将如下所示:

<div th:fragment="doc-detail">
    <div th:each="par : ${docDetail.paragraphs}">
        <div th:each="run : ${par.runs}">                  
            <span th:if="run.bold"><b th:value="run.text"></b></span>
            <span th:unless="run.italic"><i th:value="run.text"></i></span>                                    
            <span th:unless="1==1" th:value="run.text"></span>                                    
        </div>
    </div>
</div>
 类似资料:
  • 在Jquery Mobile中通过默认方法给内容添加样式是很简单的。我们的目标是让浏览器的默认渲染优先进行,然后我们加了一点小小的padding让页面看起来更有可读性,然后应用主题样式系统来分配字体和颜色 采用熟手优先原则给与了设计者和开发者一个干净的空间工作,而不是和一大堆复杂的样式代码战斗。 默认HTML标记样式 Default HTML markup styling 默认情况下,Jquery

  • 我在Thymeleaf中有一个表单输入字段。字段(下面代码段中的BookingEntry.DateFrom)是类型日期。我使用datepicker来允许用户选择并格式化所需的日期以输入字段。这都没问题。 我确信我可以使用一个以我选择的任何格式初始化的字符串,而不是一个日期类型,但是我想知道是否有一种方法来格式化th:字段中的初始值? 多谢

  • 本文章将介绍Thymeleaf标准表达式语法中的概念。 学习如何在Thymeleaf模板中显示对象(Bean)的属性值。 已经将类的bean已经设置为名称为的上下文模型。 为这些和属性添加一些格式,学习使用和实用程序对象的定义。 最后,修改模板以获得一个合理的静态原型(例如,通过一些原型数据替换并显示结果)。 如果要上机实践,请参考:Thymeleaf+SpringMVC5示例项目。这里不再重复创

  • 主要内容:HTML 文本格式化,HTML 格式化标签,在线实例,HTML 文本格式化标签,HTML "计算机输出" 标签,HTML 引文 引用 及标签定义HTML 文本格式化 加粗文本 斜体文本 这是 下标 和 上标 HTML 格式化标签 HTML 使用标签 <b>("bold") 与 <i>("italic") 对输出的文本进行格式, 如:粗体 or 斜体 这些HTML标签被称为格式化标签(请查看底部完整标签参考手册)。 通常标签 <strong> 替换加粗标签 <b> 来使用, <em> 替

  • 提前感谢你的帮助。

  • 如前所述,HTML的代码和HTML的显示是不同的。 HTML 标签 比如 <p> 只是用来让浏览器解释文档内容,不会被显示。 代码注释 用于提高代码可读性,也不会被显示。 此外,还有一些格式化代码也会被浏览器忽略,包括: 换行(line-breaks) 空行(empty lines) 缩进(tabulations/indentation) 换行(Line-breaks) HTML代码中的换行和空行