java实现word转html

这篇具有很好参考价值的文章主要介绍了java实现word转html。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

现有的需求是前端导入word文件,然后需要在浏览器上展示出来,实现方案是将前端导入的word转成html的形式,再输出给前端,废话不多说,直接上代码.

需要用到的依赖

<!-- WordToHtml .doc .odcx  poi  -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-scratchpad</artifactId>
    <version>4.1.2</version>
</dependency>

<!-- 操作excel的库 注意版本保持一致 poi poi-ooxml  poi-scratchpad -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>4.1.2</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>4.1.2</version>
</dependency>

<dependency>
    <groupId>fr.opensagres.xdocreport</groupId>
    <artifactId>fr.opensagres.poi.xwpf.converter.xhtml</artifactId>
    <version>2.0.2</version>
</dependency>

 代码实现

public static String word2007ToHtml(MultipartFile file) throws IOException {
        String html = null;
        if (file.isEmpty() || file.getSize() <= 0) {
            log.error("Sorry File does not Exists!");
            return null;
        } else {
            /* 判断是否为docx文件 */
            if (Objects.requireNonNull(file.getOriginalFilename()).endsWith(".docx") || file.getOriginalFilename().endsWith(".DOCX")) {
                // 1)加载word文档生成XWPFDocument对象
                @Cleanup FileInputStream in = (FileInputStream) file.getInputStream();
                XWPFDocument document = new XWPFDocument(in);
                // 2)解析XHTML配置(这里设置IURIResolver来设置图片存放的目录)
                XHTMLOptions options = XHTMLOptions.create();
                //3.将word中图片保存到oss中
                options.setImageManager(SpringUtil.getBean(ImageManagerImpl.class));
                options.setIgnoreStylesIfUnused(false);
                options.setFragment(true);
                // 3)将XWPFDocument转换成XHTML
                @Cleanup ByteArrayOutputStream baos = new ByteArrayOutputStream();
                XHTMLConverter.getInstance().convert(document, baos, options);
                html = new String(baos.toByteArray(), StandardCharsets.UTF_8);
                System.out.println(html);

            } else {
                System.out.println("Enter only as MS Office 2007+ files");
                throw new BizException("word文档必须以.docx结尾");
            }
        }
        return html;
    }

注意事项

1.这个方法只支持docx结尾的文档,doc文档大同小异,如果有需要可以尝试自己写一下

2.和图片上传有关的这个类ImageManagerImpl,我就不写出来了,涉及公司的一些东西,如果你要用,只需要写个类继承一下 ImageManager 这个类,然后重写一下它的方法,也就是写一下你图片上传逻辑之类的就行了,如:

 private byte[] picture;
    private String suffix;
    private String fileName;
    public ImageManagerImpl() {
        super(new File(""), "");
    }


    @Override
    public void extract(String imagePath, byte[] imageData){
        this.fileName = imagePath.split("\\.")[0];
        this.suffix = "." + imagePath.split("\\.")[1];
        this.picture = imageData;
    }

    @SneakyThrows
    @Override
    public String resolve(String uri) {

        @Cleanup InputStream inputStream = new ByteArrayInputStream(picture);
        MultipartFile fileResult = new MockMultipartFile(ContentType.APPLICATION_OCTET_STREAM.toString(), inputStream);
        return uploadFile(fileResult,UUID.randomUUID().toString().replaceAll("-", "")+suffix);

    }
3.生成后的html这个时候不能直接给前端,因为直接给前端的话会在传输过程中格式发生一些诡异的变化,我这里处理的方法是将html给base64加密,然后让前端去解析,这样就没问题了.

4. 其实这里生成的html都是一行行的div标签,并没有头和体的标签,虽然也能展示,但有些特殊用法的时候就不太行了,如html转PDF的时候,这个时候要么在生成html的时候加上去,要么在转PDF的时候加上去

htmlStr = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n" +
        "<html lang=\"en\" xmlns=\"http://www.w3.org/1999/xhtml\">\n" +
        "\t<head></head><body style=\"font-family:SimSun;\">"+htmlDecode+"\t</body>\n" +
        "</html>";

注意这里是最后将html里面的字体全部统一成一种了,为了后期转PDF方便

好了,暂时就这么多,后续有时间再补充文章来源地址https://www.toymoban.com/news/detail-610364.html

到了这里,关于java实现word转html的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端html-docx实现html转word,预览并导出文件

    使用工具:html-docx 优势:图片、图表能直接预览并转为base64导出,省去后端难以实现图表的生成后插入的麻烦 劣势:适合一些简单的word模板导出(比如只有标题正文简单的表格图表图片的文档),复杂的可以直接忽略。比如:纸张大小、纸张方向、css大部分样式等等(经本

    2024年02月16日
    浏览(51)
  • 几行代码,轻松教你用Java 将 Word 文档转换为 HTML

    Aspose.Words 是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。此外, Aspose API支持流行文件格式处理,并允许将各类文档导出或转换为固定布局文件格式和最常用的图像

    2024年02月10日
    浏览(52)
  • Java处理doc类型的Word文档转换成html(按顺序保留格式+图片)

    最新有个新需求,就是doc文档转换html内容倒不是很难,给大家分享一下,总体思路就是按doc转html的思路来走,唯一缺点是不会自动转换图片,图片是要手动转成base64,默认是有html、body、head、meta等等标签,我这里都用正则处理掉了。 需要注意的是: .docx 格式的 Word 文档是

    2024年02月03日
    浏览(82)
  • 文档在线预览(二)word、pdf文件转html以实现文档在线预览

    @ 目录 一、前言 1、aspose 2 、poi + pdfbox 3 spire 二、将文件转换成html字符串 1、将word文件转成html字符串 1.1 使用aspose 1.2 使用poi 1.3 使用spire 2、将pdf文件转成html字符串 2.1 使用aspose 2.2 使用 poi + pbfbox 2.3 使用spire 3、将excel文件转成html字符串 3.1 使用aspose 3.2 使用poi + pdfbox 3.3 使用

    2024年02月06日
    浏览(141)
  • ElasticSearch 实现 全文检索 支持(PDF、TXT、Word、HTML等文件)通过 ingest-attachment 插件实现 文档的检索

    Attachment 插件是 Elasticsearch 中的一种插件,允许将各种二进制文件(如PDF、Word文档等)以及它们的内容索引到 Elasticsearch 中。插件使用 Apache Tika 库来解析和提取二进制文件的内容。通过使用 Attachment 插件,可以轻松地在 Elasticsearch 中建立全文搜索功能,而无需事先转换二进制

    2024年02月05日
    浏览(54)
  • Java实现动态生成word报告

    1.准备好docx文件模板 举例:动态生成表格数据,以下是list数组类型的freemarker语法 将写好的word模板加入到templates目录下 2.在pom.xml中导入相关依赖 3.关于Minio的介绍 Minio 是一个开源的对象存储服务器,可用于存储和访问海量数据。以下是 Minio 的基本用法: (1)安装 Minio 首先

    2024年02月09日
    浏览(38)
  • java实现pdf转word

    1.java实现pdf转word。 2.纯免费开源。 3.pdf解析完会生成word文件和图片文件夹。 4.无页码限制,文本类型生成到word中,图片生成到图片文件夹中。 5.弊端:需手动将图片与文本整合成一个word文件。 仅提供一个pdf转word的实现方案,代码粗糙,老铁轻喷。 jar包地址:https://downlo

    2024年03月10日
    浏览(62)
  • java关于word转PDF的实现

           word转PDF这个功能在工作中还是非常常用的,但是word转PDF大部分都是需要收费的,或者说就是对页面的转换页数有限制,那么身为程序员当然是能白嫖就白嫖的了,那么具体怎么实现呢,小编这里有几种实现方式,希望可以帮到你。         1.第一种则是使用asp

    2024年04月23日
    浏览(30)
  • Java 实现导出 Word 文档的方法详解

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 在 Java 应用程序中,有时候我们需要将数据导出为 Word 文档,以便进行文档的编辑、打印或共享。本文将介绍如何

    2024年02月15日
    浏览(41)
  • linux下java实现word 转pdf

    documents4j 是一个跨平台的文档转换库,并且可以在 Linux 上进行 Word 转 PDF 的操作。 它利用 Microsft Office 的 APIs 来进行文档转换,因此需要在 Linux 上安装 OpenOffice/LibreOffice 编辑器。 以下是在 Linux 环境下执行 Word 转 PDF 的基本步骤: Ubuntu:使用以下命令安装 CentOS:使用以下命令

    2024年02月16日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包