doc转html并图片转base64

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

package com.lly.demo.util;

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

import com.lly.demo.bean.DocUser;
import com.spire.doc.FileFormat;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.converter.WordToHtmlConverter;
import org.apache.poi.hwpf.usermodel.Picture;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.w3c.dom.Document;

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;

import static java.lang.System.out;


//word转html
public class docTohtml {


    public static void main(String[] args) throws Exception {
        docxToHtml();
    }
    public Boolean docTohtml(DocUser docUser) throws Exception {
        String sourceFileName = docUser.getDocname();
        String targetFileName = docUser.getHtmlname();
        String imagePathStr = "D:/doc2htmltest/image/";
        Boolean secORfiled=true;
        HWPFDocument wordDocument = null;
        File file=new File(sourceFileName);
        FileInputStream fileInputStream = new FileInputStream(sourceFileName);
        String docxtodocSourceFileName = docUser.getDocname().substring(0,docUser.getDocname().length()-5)+".doc";
        try {
            if(StringUtils.isNotBlank(sourceFileName)&&StringUtils.isNotBlank(targetFileName)){
                    if(sourceFileName.endsWith(".doc")){

                        if(file.exists()){

                            out.println("aaaaa11111");
                            wordDocument = new HWPFDocument(fileInputStream);
                            out.println("aaaaa");
                            if (wordDocument != null) {
                                WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument());
                                wordToHtmlConverter.setPicturesManager((a, b, suggestedName, d, e) -> {
                                    // convertFileToBase64()
                                    out.println(suggestedName);

                                    //返回图片路径
                                    //return "image" + File.separator + suggestedName;
                                    //返回图片base64值
                                    return "data:image/"+b.getExtension().toLowerCase()+";base64,"+new String(Base64.encodeBase64(a));
                                });
                                wordToHtmlConverter.processDocument(wordDocument);
                                List<Picture> pics = wordDocument.getPicturesTable().getAllPictures();
                                out.println(pics);
                                Iterator var8 = pics.iterator();

                                //转换图片
                                imgToBase64 imgToBase64pl=new imgToBase64();
                                int i=1;
                                while(var8.hasNext()) {
                                    Picture pic = (Picture)var8.next();
                                    //下载图片
                                    // pic.writeImageContent(new FileOutputStream(imagePathStr + pic.suggestFullFileName()));
                                    //System.out.println("第"+i++ +":"+imgToBase64pl.convertFileToBase64(imagePathStr + pic.suggestFullFileName()));
                                }

                                Document htmlDocument = wordToHtmlConverter.getDocument();
                                //生成空文档
                                DOMSource domSource = new DOMSource(htmlDocument);
                                //获取路径下html
                                StreamResult streamResult = new StreamResult(new File(targetFileName));
                                //设置html文件规范
                                TransformerFactory tf = TransformerFactory.newInstance();
                                Transformer serializer = tf.newTransformer();
                                serializer.setOutputProperty("encoding", "utf-8");
                                serializer.setOutputProperty("indent", "yes");
                                serializer.setOutputProperty("method", "html");
                                serializer.transform(domSource, streamResult);
                            }else {
                                out.println("请检查文件类型或后缀是否正确!");
                                secORfiled=false;
                            }

                        }else{
                            out.println("文件不存在");
                            secORfiled=false;
                        }

                    }else if(sourceFileName.endsWith("docx")){
                        System.out.println("上传文件为docx类型");
                        secORfiled=false;
                    }else{
                        out.println("上传文件为其他类型文件");
                        secORfiled=false;
                    }

            }else{
                secORfiled=false;
            }
        } catch (IOException e) {
            e.printStackTrace();
            secORfiled=false;
        }finally {
            fileInputStream.close();
            return secORfiled;
        }


    }

    public static void docxToHtml() throws Exception {

        //D:\zpdtolly\工作总结文档\zpd使用文档\v4\用户使用手册\客户端使用手册
        String sourceFileName = "D:\\zpdtolly\\工作总结文档\\zpd使用文档\\uos+ql飞腾\\uos+麒麟飞腾使用手册-网络版.doc";
        String targetFileName = "D:\\zpdtolly\\工作总结文档\\zpd使用文档\\uos+ql飞腾\\uos+麒麟飞腾使用手册-网络版.html";
        String imagePathStr = "D:/doc2htmltest/image/";
        HWPFDocument wordDocument = new HWPFDocument(new FileInputStream(sourceFileName));
        WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument());
        wordToHtmlConverter.setPicturesManager((a, b, suggestedName, d, e) -> {
           // convertFileToBase64()
            out.println(suggestedName);

            //返回图片路径
            //return "image" + File.separator + suggestedName;
            //返回图片base64值
            return "data:image/"+b.getExtension().toLowerCase()+";base64,"+new String(Base64.encodeBase64(a));
        });
        wordToHtmlConverter.processDocument(wordDocument);
        List<Picture> pics = wordDocument.getPicturesTable().getAllPictures();
        out.println(pics);
        Iterator var8 = pics.iterator();

        //转换图片
        imgToBase64 imgToBase64pl=new imgToBase64();
        int i=1;
        while(var8.hasNext()) {
            Picture pic = (Picture)var8.next();
            //下载图片
           // pic.writeImageContent(new FileOutputStream(imagePathStr + pic.suggestFullFileName()));
            //System.out.println("第"+i++ +":"+imgToBase64pl.convertFileToBase64(imagePathStr + pic.suggestFullFileName()));
        }

        Document htmlDocument = wordToHtmlConverter.getDocument();
        //生成空文档
        DOMSource domSource = new DOMSource(htmlDocument);
        //获取路径下html
        StreamResult streamResult = new StreamResult(new File(targetFileName));
        //设置html文件规范
        TransformerFactory tf = TransformerFactory.newInstance();
        Transformer serializer = tf.newTransformer();
        serializer.setOutputProperty("encoding", "utf-8");
        serializer.setOutputProperty("indent", "yes");
        serializer.setOutputProperty("method", "html");
        serializer.transform(domSource, streamResult);
        out.println("doc转换完毕!"+streamResult.getSystemId());


    }

}

依赖:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>demo</description>

    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.3.7.RELEASE</spring-boot.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.10</version>
        </dependency>
        <!--引入swagger的依赖-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.14</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-examples</artifactId>
            <version>3.14</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-excelant</artifactId>
            <version>3.14</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-scratchpad</artifactId>
            <version>3.14</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.14</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>ooxml-schemas</artifactId>
            <version>1.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.pdfbox</groupId>
            <artifactId>pdfbox</artifactId>
            <version>2.0.9</version>
        </dependency>
        <dependency>
            <groupId>fr.opensagres.xdocreport</groupId>
            <artifactId>xdocreport</artifactId>
            <version>1.0.6</version>
        </dependency>
        <dependency>
            <groupId>org.apache.xmlbeans</groupId>
            <artifactId>xmlbeans</artifactId>
            <version>2.6.0</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.10</version>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.3.7.RELEASE</version>
                <configuration>
                    <mainClass>com.lly.demo.DemoApplication</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

导航样式:

<style type="text/css">

body{background:#e6d8d8;text-align:center;}

div{width:100%;margin:0 auto;background:#ecdfdf;text-align:left;}

* {

  padding: 0;

  margin: 0;

  box-sizing: border-box;

}

.aside {

  width: 240px;

  height: 100%;

  position: fixed;

  left: -240px;

  top: 0px;

  border-right: 1px solid #ccc;

  -ms-transition: all 0.3s linear;

  -moz-transition: all 0.3s linear;

  -webkit-transition: all 0.3s linear;

  transition: all 0.3s linear;

}

.aside:hover{

  left: 0;

}

.aside:hover + .article{

  padding-left: 260px;

}

.nav-list{

  width: 100%;

  height: 100%;

  overflow: auto;

  padding: 10px 0px;

}

.nav-mark{

  position: absolute;

  right: -20px;

  top: 50%;

  z-index: 2;

  height: 80px;

  width: 20px;

  margin-top: -40px;

  background-color: #44a7ff;

  box-shadow: 2px 0px 3px #eee;

  border-radius: 0 40px 40px 0;

  font-size: 12px;

  text-align: center;

  line-height: 24px;

  padding-top: 16px;

  color: #fff;

}

.nav {

  display: block;

  width: 100%;

  height: 32px;

  line-height: 32px;

  font-size: 16px;

  color: #333;

  text-decoration: none;

  padding-left: 20px;

}

.nav:hover {

  background-color: #44a7ff;

  color: #fff;

}

.grade2 {

  text-indent: 1em;

}

.grade3 {

  text-indent: 2em;

}

</style>

<body class="b1 b2" lang=ZH-CN link=blue vlink=purple style='tab-interval:21.0pt;text-justify-trim:punctuation'>

<aside class="aside">

    <div class="nav-list">

<p class="p8">

<span> </span><span class="s3">第1章 前言 </span><a href="#_Toc6535"><span class="s3">4</span></a>

</p>

<p class="p9">

<span>1.1 前言  </span><a href="#_Toc22214"><span>4</span></a>

</p>

<p class="p9">

<span>1.2 配置说明  </span><a href="#_Toc28992"><span>4</span></a>

</p>

<p class="p9">

<span>1.3 约定  </span><a href="#_Toc4833"><span>4</span></a>

</p>

<p class="p10">

<span>第2章 系统功能概述  </span><a href="#_Toc25542"><span>4</span></a>

</p>

<p class="p9">

<span>2.1 范围  </span><a href="#_Toc29936"><span>4</span></a>

</p>

<p class="p9">

<span>2.2 功能概述  </span><a href="#_Toc1621"><span>4</span></a>

</p>

<p class="p9">

<span>2.3 系统启动  </span><a href="#_Toc21033"><span>4</span></a>

</p>

<p class="p9">

<span>2.4 系统的右键菜单功能 </span><a href="#_Toc17040"><span>5</span></a>

</p>

<p class="p11">

<span>2.4.1 针对非标签文件 </span><a href="#_Toc14818"><span>5</span></a>

</p>

<p class="p11">

<span>2.4.2 针对标签文件右键菜单  </span><a href="#_Toc28107"><span>5</span></a>

</p>

<p class="p10">

<span>第3章 系统菜单功能详解  </span><a href="#_Toc27175"><span>6</span></a>

</p>

<p class="p9">

<span>3.1 查看标签  </span><a href="#_Toc15292"><span>6</span></a>

</p>

<p class="p11">

<span>3.1.1 查看方法  </span><a href="#_Toc1580"><span>7</span></a>

</p>

<p class="p9">

<span>3.2 设置标签  </span><a href="#_Toc28607"><span>7</span></a>

</p>

<p class="p11">

<span>3.2.1 自动设置标签  </span><a href="#_Toc1292"><span>7</span></a>

</p>

<p class="p11">

<span>3.2.2 主动设置标签  </span><a href="#_Toc2308"><span>7</span></a>

</p>

<p class="p9">

<span>3.3 修改标签  </span><a href="#_Toc17328"><span>9</span></a>

</p>

<p class="p11">

<span>3.3.1 修改方法  </span><a href="#_Toc18786"><span>9</span></a>

</p>

<p class="p9">

<span>3.4 申请分离  </span><a href="#_Toc15068"><span>9</span></a>

</p>

<p class="p11">

<span>3.4.1 分离方法  </span><a href="#_Toc13228"><span>10</span></a>

</p>

<p class="p9">

<span>3.5 标签恢复  </span><a href="#_Toc8881"><span>12</span></a>

</p>

<p class="p11">

<span>3.5.1 恢复方法  </span><a href="#_Toc17845"><span>13</span></a>

</p>

<p class="p9">

<span>3.5 辅助定密  </span><a href="#_Toc22306"><span>14</span></a>

</p>

<p class="p10">

<span>第4章 标签管理工具  </span><a href="#_Toc4965"><span>15</span></a>

</p>

<p class="p9">

<span>4.1 功能概述和启动方法 </span><a href="#_Toc11565"><span>15</span></a>

</p>

<p class="p11">

<span>4.1.1 功能概述  </span><a href="#_Toc21392"><span>15</span></a>

</p>

<p class="p11">

<span>4.1.2 启动方法  </span><a href="#_Toc9953"><span>15</span></a>

</p>

<p class="p11">

<span>4.1.3 标签初始化 </span><a href="#_Toc13424"><span>15</span></a>

</p>

<p class="p9">

<span>4.2 基本信息  </span><a href="#_Toc9325"><span>16</span></a>

</p>

<p class="p11">

<span>4.2.1 基本信息概述  </span><a href="#_Toc15593"><span>16</span></a>

</p>

<p class="p9">

<span>4.3 标签信息  </span><a href="#_Toc25293"><span>17</span></a>

</p>

<p class="p11">

<span>4.3.1 文件列表  </span><a href="#_Toc26886"><span>17</span></a>

</p>

<p class="p11">

<span>4.3.2 操作日志  </span><a href="#_Toc23770"><span>17</span></a>

</p>

<p class="p9">

<span>4.4 标签分离  </span><a href="#_Toc25427"><span>18</span></a>

</p>

<p class="p11">

<span>4.4.1 分离申请  </span><a href="#_Toc2491"><span>18</span></a>

</p>

<p class="p9">

<span>4.5 系统信息  </span><a href="#_Toc2552"><span>18</span></a>

</p>

<p class="p11">

<span>4.5.1 系统日志  </span><a href="#_Toc3090"><span>18</span></a>

</p>

<p class="p11">

<span>4.5.2 策略管理  </span><a href="#_Toc9669"><span>18</span></a>

</p>

<p class="p9">

<span>4.6 系统管理员 </span><a href="#_Toc16215"><span>19</span></a>

</p>

<p class="p11">

<span>4.6.1 分离审批  </span><a href="#_Toc10899"><span>19</span></a>

</p>

<p class="p11">

<span>4.6.2 用户管理  </span><a href="#_Toc15675"><span>20</span></a>

</p>

<p class="p11">

<span>4.6.3 用户切换  </span><a href="#_Toc21405"><span>21</span></a>

</p>

</div>

<div class="nav-mark">导航</div>

</aside>

<body>文章来源地址https://www.toymoban.com/news/detail-679337.html

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

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

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

相关文章

  • HTML img 元素无法显示 base64 图片的可能原因

    如果使用 base64 编码的图片在 HTML 的 img 元素中无法显示,可能有以下几个原因: 1、语法错误:img 元素中的 src 属性必须以 \\\"data:\\\" 开头,后面跟着 MIME 类型和 base64 编码的图片数据。如果这个语法格式有误,就无法正常显示图片。 2、MIME 类型错误:如果指定的 MIME 类型与实际

    2024年02月05日
    浏览(47)
  • 【JS】前端base64转图片File对象

    base64ToFile.js

    2024年02月05日
    浏览(56)
  • 前端将base64图片转换成file文件

    1、base64转成file具体代码 文件转换过程: 2、代码解析 ​ 该方法涉及知识点较多,首先因为base64的前缀信息部分与文件内容部分是通过 , 进行连接的, data:image/***;base64(前缀信息),xxxxx(文件内容) ,所以利用 split() 方法对base64进行分割,将前缀文件信息,与文件内容分隔开。得

    2024年01月20日
    浏览(55)
  • 前端获取本地图片并且转化为base64格式

    今天看见网上各位大佬五花八门的前端图片获取并转化为base64格式的操作,果然高手在民间,很神奇,没想到有这么多方法,那我也来写一个我自己的方法 我是习惯使用filereader这个内置类,感觉比较简单,不用管内部原理,反正可以获取图片,实现在互联网上的传输就可以

    2024年02月09日
    浏览(64)
  • 前端FileReader对象实现图片file文件转base64

    1、file转base64具体代码 2、原理解析 ​ 上面封装的方法,其原理主要是借助 FileReader 对象来实现图片格式的转换, FileReader 对象中的 readAsDataURL() 方法,可以读取一个 File 或 Blob 类型的文件,并将其转换为base64格式的字符串。但要注意的一点是:我们通过 readAsDataURL() 方法去读

    2023年04月09日
    浏览(39)
  • 将html字符串中的base64图片转换成file并上传

    目的 解决富文本编辑器中复制粘贴的图片 base64 字符串过长导致无法存储到数据库的问题 思路 通过正则 获取html字符串中里面的所有图片 base64 数组 然后每个图片base64 转成file 使用上传文件的函数 上传到服务器上. 将上传后获取到的图片访问url 替换成 数据里面的 img 的 src

    2024年01月23日
    浏览(55)
  • 前端 img图片如何 展示 base64 格式(并且下载到本地)

    如题:最近在做项目发现页面上有些图片是动态获取的,也就是后台给我们返回图片的存放地址,一般都是放在服务器上的某个位置,我们直接拿到渲染一下就行了,(前提是不存在跨域问题), 但是由于项目特殊性,后台使用了Python 渲染出来的图片是svg格式的图片,并且

    2024年02月09日
    浏览(59)
  • 后台传输图片给前端的Base64编码方法及原理解析

    探索后台向前端传输图片的方式之一:通过Base64编码将图片转换为字符串数据,并在前端显示图片。本文详细介绍了Base64编码的原理、转换步骤以及位数不足情况的处理方法,帮助理解Base64编码的工作原理。

    2024年02月04日
    浏览(48)
  • java base64转图片

    方法 : 传入文件路径和base64位的编码 main方法 结果

    2024年02月13日
    浏览(34)
  • 将图片转换成Base64格式存入数据库以及在前端页面展示

    这个示例接口假设已经有了一个数据库连接池,并且已经注入或初始化了数据源。这个接口的功能是读取指定路径的图片文件,将其转换为Base64编码字符串,然后将其存入数据库中。可以通过调用 saveImageToDB 方法来实现这个功能。调用该方法时需要传入要存储的图片文件的路

    2024年02月16日
    浏览(50)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包