精华内容
下载资源
问答
  • 2、提取三级标题下的H5内容(包括表格、图片) 3、将三级标题内容提取为【一级类型】、【二级类型】 1.2、原word文件样式 参考样例文件:wordSample.docx 提取码:u794 2、设计思路 2.1、利用github...

    1、功能需求

       1.1、需求明细

           1、将word文本转换为html
           2、提取三级标题下的H5内容(包括表格、图片)
           3、将三级标题内容提取为【一级类型】、【二级类型】
    

       1.2、原word文件样式

         参考样例文件:wordSample.docx    提取码:u794
         

     

    2、设计思路

    2.1、利用github开源项目:java-mammoth 实现word2html功能

            java-mammoth 项目github链接:https://github.com/mwilliamson/java-mammoth

            pom配置信息:

               <dependency> 
                   <groupId>org.zwobble.mammoth</groupId> 
                   <artifactId>mammoth</artifactId> 
                   <version>1.4.1</version> 
               </dependency>

    2.2、生成的html文件中一级标题、二级标题、三级标题分别为h1、h2、h3标签;利用标签的差异进行字符串处理获取三级标题H5内容

     1、接收处理后的段落信息

                  

    	
    public class HtmlRecord {
    
        private String type1;
        private String type2;
        private String key;
        private String content;
    
        public String getType1() {
            return type1;
        }
    
        public void setType1(String type1) {
            this.type1 = type1;
        }
    
        public String getType2() {
            return type2;
        }
    
        public void setType2(String type2) {
            this.type2 = type2;
        }
    
        public String getKey() {
            return key;
        }
    
        public void setKey(String key) {
            this.key = key;
        }
    
        public String getContent() {
            return content;
        }
    
        public void setContent(String content) {
            this.content = content;
        }
    }

     2、html拆分处理逻辑

    
        public static void main(String[] args) {
            try{
                DocumentConverter converter = new DocumentConverter();
                Result<String> result = converter.convertToHtml(new File("D:\\abc.docx"));
                String html = result.getValue(); // The generated HTML
                getHeadItems(html);
                Set<String> warnings = result.getWarnings();
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    
        /**
         *  获取三级标题内容列表
         * @param html  word转换生成的html内容
         * @return
         */
        private static List<HtmlRecord> getHeadItems(String html){
            List<HtmlRecord> records = new ArrayList<>();
    
            // 当前一级标题名称
            String h1Name = "";
            // 当前二级标题名称
            String h2Name = "";
            // 当前三级标题名称
            String h3Name = "";
            // 当前三级标题对应内容
            String h3Content = "";
            // 上一级标题结束下标
            int lastEndIndex = 0;
            // 上次标签为三级标题
            boolean isH3Tag = false;
            //String html3 = "<h1>dafa</h1><h2>123456</h2><h2>ddddd</h2><h3>aaaa</h3><a id=\"_Toc518917206\"></a>三、合规管理 <h1><p><strong>云南国际信托有限公司</strong></p></h1><h3>33333</h3><a id=\"_Toc518917206\"></a>三、合规管理";
            // 标题标签正则匹配式
            Pattern pattern = Pattern.compile("<h[1-3]{1}>(.*?)</[h][1-3]{1}>");
            Matcher matcher = pattern.matcher(html);
            // 匹配任意三级标题前部分
            while(matcher.find()){
                //boolean result2 = matcher2.find();
                // 三级标题前部分开始下标
                int startIndex = matcher.start();
                // 三级标题后部分开始下标
                int endIndex = matcher.end();
                // 获取标题标签之间内容
                String tagContent = html.substring(startIndex + 4,endIndex-5);
                // 获取标题标签名称
                String tag =  matcher.group().substring(0,4);
    
    
                // 上一次为三级标题标签
                if(isH3Tag){
                    // 上次标签后部分结束下标 - 本次标签前部分开始下标 之间的内容
                    h3Content = html.substring(lastEndIndex, startIndex);
                    HtmlRecord htmlRecord = new HtmlRecord();
                    htmlRecord.setType1(getOnlyHeadContent(h1Name));
                    htmlRecord.setType2(getOnlyHeadContent(h2Name));
                    htmlRecord.setKey(getOnlyHeadContent(h3Name));
                    String dateStr = getDateStrFromHeadStr(h3Name);
                    htmlRecord.setPublishDt(dateStr);
                    htmlRecord.setContent(h3Content);
                    htmlRecord.setPublishDept("合规部门");
                    records.add(htmlRecord);
                }
    
                isH3Tag = false;
                if(Objects.equals(tag, "<h1>")){
                    // 当前为一级标题,重置一级标题名和二级标题名
                    h1Name = tagContent;
                    h2Name = "";
                }else if(Objects.equals(tag, "<h2>")){
                    // 当前为二级标题,重置二级标题名
                    h2Name =tagContent;
                }else{
                    // 当前为三级标题,重置二级标题名
                    h3Name = tagContent;
                    isH3Tag = true;
                    // 获取三级标题后部分结束下标
                    lastEndIndex = endIndex;
                }
            }
            // 处理最后一个三级标题内容
            String tagContent = html.substring(lastEndIndex);
            HtmlRecord htmlRecord = new HtmlRecord();
            htmlRecord.setType1(getOnlyHeadContent(h1Name));
            htmlRecord.setType2(getOnlyHeadContent(h2Name));
            htmlRecord.setKey(getOnlyHeadContent(h3Name));
            String dateStr = getDateStrFromHeadStr(h3Name);
            htmlRecord.setPublishDt(dateStr);
            htmlRecord.setContent(tagContent);
            records.add(htmlRecord);
            htmlRecord.setPublishDept("合规部门");
            return records;
        }
    
        /**
         * 获取标题文本内容
         * @param headHtml  标题h5内容
         * @return
         */
        private static String getOnlyHeadContent(String headHtml){
            if(StringUtils.isBlank(headHtml)){
                return "";
            }
    
            String headContentStr = "";
            Pattern pattern = Pattern.compile("<a[^>]*>([^<]*)</a>");
            Matcher matcher = pattern.matcher(headHtml);
            while(matcher.find()){
                String content = matcher.group();
                System.out.println(content);
                headHtml = headHtml.replace(content,"");
            }
            headContentStr = headHtml;
            return headContentStr;
        }
    
        /**
         *  从标题中抽取时间信息
         * @param headStr 标题内容
         * @return
         */
        private static String getDateStrFromHeadStr(String headStr){
            if(StringUtils.isBlank(headStr)){
                return "";
            }
            String dateStr = "";
            Pattern dtPattern = Pattern.compile("20[0-9]{2}年[1-9]{1,2}月[1-9]{1,2}日");
            Matcher dtMatcher = dtPattern.matcher(headStr);
            if(dtMatcher.find()){
                dateStr = dtMatcher.group();
                dateStr = dateStr.replace("年","-");
                dateStr = dateStr.replace("月","-");
                dateStr = dateStr.replace("日","");
                System.out.println(dateStr);
            }
            return dateStr;
        }

    3、设计不足之处

    3.1、 java-mammoth 转换生成html 中表格没有边竖线,这点在项目也有说明

          

    解决方式:不使用pom方式引入jar包; 手动下载项目整合到所需项目中

      调整internal/conversion/DocumentToHtml中visit(Table table, Context context)代码,添加border样式即可实现表格的边框效果

     

    3.2、java-mammoth会将图片直接base64文本,如果word中存在大量图片,直接将转换后的html存入数据库,会造成数据库存储、查询负担; 可以在处理过程中base64图片还原存储至文件服务器

    3.3、待处理word的样式存在要求限制,若不满足则无法正常处理

    展开全文
  • pdf 转word 软件

    2019-02-25 09:18:21
    pdf 转word 软件 https://pan.baidu.com/s/1H5VySRvs5Yax9wgCRPRc2w
    展开全文
  • 移动端html展示word文档转换方法

    千次阅读 2018-11-19 02:24:10
    把几份word文档(需求说明、法规文件等等)放到手机端,需要用h5的形式展示出来。 方法一、自己写成html标签的段落: 话不多说,show my code: var content=" 该模型描述水质组分的迁移变化在两个方向上是重要的, ...

    需求:

    把几份word文档(需求说明、法规文件等等)放到手机端,需要用h5的形式展示出来。

    方法一、自己写成html标签的段落:

    话不多说,show my code:

    var content="  该模型描述水质组分的迁移变化在两个方向上是重要的,
    <br/>   在另外一个方向上是均匀分布的,这种水质模型称为二维水质模型。 " +
    "<pre><img class='imgDiv' src='../../img/ic_erwei_water1.png'>" +
    "<pre><br/>二维稳态混合模型公式:" +
    "<pre><img class='imgDiv' src='../../img/ic_erwei_water2.png'>" +
    "<pre><br/>适用条件:" +
    "<br/> ① 平直、断面形状规则河流混合过程段;" +
    "<br/> ② 持久性污染物;" +
    "<br/> ③ 河流稳定流动;" +
    "<br/> ④ 连续稳定排放;" +
    "<br/> ⑤ 对于非持久性污染物,需采用相应的衰减模式。",
    复制代码

    预览效果还是不错的,是这样的:

    我用Angular写的 具体操作是:
    1. 在控制器初始化的时候添加$sce参数:
    myModule.controller("MyCtrl", function ($scope, $sce) {
    }
    复制代码
    1. 使得content这个div能解释出html标签:
        $scope.toHTML = function (content) {
            return $sce.trustAsHtml(content);
        };
    复制代码
    1. 先在html写一个toHTML()绑定方法:
        <div ng-bind-html=toHTML(content)></div>
    复制代码

    这样我们得到的html文本就可以解析出标签了。


    方法二、直接把word文件转成‘html’文件:

    这里呢又有有两个方法了:

    • 1.直接转化为html文件,直接打开即可。

    注意 : 不要转化为“网页(.htm)”,而是要“筛选过的网页(.htm)”。因为前者会生成html文件、资源文件夹等等几个文件,而后者是我们比较熟悉的东西,如果是纯文本还是后者好一些。

    • 2.先将word文件按照“网页(.htm)”方式转换,会产生一个网页文件和一个图片文件夹。这时将所有的文档都关掉,将产生的新网页文件打开。然后全选(ctrl+a,ctrl+c)网页内容。新建一个word文件,让后将内容拷贝其中(ctrl+v),然后在将这个文件转为 单个网页文件。这时你会惊奇的发现,新产生的单个文件的网页的大小已经变的很小了(摘抄自网上)。

    变成了html文件应该知道怎么弄了吧?和我们自己写的原生html文件一样。当然,直接放到手机里效果是不理想的。我们手动添加一个标题以后会好些。然后给他添加一个点击返回的方法就差不多了。如果对页面字体、间距等有影响可以自行调整。

    展开全文
  • 或者那个大哥可以找一个h5 页面可以预览word文档 (其实吧 也可以 只要你愿意花钱 还是能做到预览word, doc,docx 等文件) 免费的博主还没发现呢 这里用到了一个人家的一个预览的 插件 pdfh5.js ...

    苹果机 是可以直接打开一个 pdf的网络路径进行预览的  问题是 安卓直接打开的话  就跳转到下载页面

    或者那个大哥可以找一个h5 页面可以预览word文档 (其实吧 也可以  只要你愿意花钱 还是能做到预览word, doc,docx 等文件) 免费的博主还没发现呢

    这里用到了一个人家的一个预览的 插件 pdfh5.js 

    https://gitee.com/pjjg/pdfh5  这个是人家码云的地址 自己去下载代码吧

    看完之后可能 明白他好像是吧 pdf转换成了 图片  然后进行预览 

    使用过程

    1. 引入css

    <link rel="stylesheet" href="/css/pdfh5.css">

    2 引入js

    <script src="/js/pdf.js"></script>
    		<script src="/js/pdf.worker.js"></script>
    		<script src="/js/jquery-1.8.3.min.js" type="text/javascript" charset="utf-8"></script>
    		<script src="/js/pdfh5.js" type="text/javascript" charset="utf-8"></script>

    3. 创建一个dom元素 当做容器

    <div id="pdf"></div>

    4. 实例化就显示出来了

    new Pdfh5('#pdf', {
          pdfurl: url,
        });

    5. 看下效果吧

    更多的功能自己去摸索吧     感谢插件的作者 正是有这些人的存在  才是推动程序发展的动力

    关注我 持续更新前端知识

    展开全文
  • 有配套的word模板和模板到JSON转换工具 四种题模式:顺序题、乱序题、错题模式、背题模式 主要结构: index.html 主页,显示题库列表 type.html 题模式选择页面,可选四种模式 timu.html 题页面 json/*.json 存储...
  • 前端下载文件大致有三种方式,网上都有相应的答案,但是总的来说是通过 a 标签的her直接访问或者 a 标签的H5的download方法来实现,此处我不多赘述,详情请参考网上的答案 我这里要说的是,如何将一个页面上的某个 ...
  • 第一种用H5标签<iframe>标签实现 返回的文件类型,文件流,文件流返回必须在设置 contentType对应的Mime Type, 返回文件的物理位置。 已经实测可以支持的文件类型 txt,pdf。关于office文档,网上有很多...
  • 在做一些后台管理或者h5页面的时候 通常会遇到Office文档格式的在线预览功能。虽然看似简单,里面却隐藏着很大的坑。简单是因为现在有各种插件可以下载实现,坑是因为涉及到一些兼容性和安全性等各种千奇百怪的问题...
  • 可以先看下这篇文章:通过FreeMarker生成word文档及导出PDF文件 0、在线预览:利用微软在线预览链接展示office相关文档内容 当我们需要将文档展示到页面的时候,往往会想到将office相关文件转换成pdf,然后再通过...
  • @custom-selector :--heading h1 , h2 , h3 , h4 , h5 , h6 ; :root { --mainColor : # 12345678 ; } body { color : var ( --mainColor ); font-family : system-ui; overflow-wrap : break-word; } :--heading...
  • 文本转换H5: 1.在word中将文件格式布局 2.word中文本标题设为宋体标题,设字号,并显示粗体 3.word中文字设为宋体正文 4.另存为-格式选择网页(.htm) 5.格式下面-web选项-编码选择UTF-8 6.保存 代码是这样...
  • MarkDown语法学习

    2020-09-18 17:00:40
    H5 :##### 五级标题 H6 :###### 六级标题 效果如下: 一级标题 二级标题 三级标题 四级标题 五级标题 二:字体 **粗体** *斜体* ***加粗斜体*** ~~删除线~~ 效果如下: hello word hello word hello word h
  • php 目录

    2018-11-11 22:40:00
    1、laravel pswd oauth2 2、理解二叉树 ...6、支付宝 支付H5 ...7、html word 8、php-fpm 启动详解 9、安装php扩展 10、svn 安装 11、物流 12 、php7 新特性 13 、多维数组 ...
  • 或许大家对“二维码生成器”这个词还比较陌生,其实就是专门生成二维码的网站。...通过二维彩虹网站的文档在线转换功能,可以把PPT、Word、PDF、Excel、H5等办公文档格式自动转换成可以通过手机在线查看的格式,方便...
  • 无需安装任何插件和本地Office产品,只需要支持H5标准的浏览器就可以享受Office的全部功能和应用。充分发挥文档协作能力,提升团队协作效率,降低企业应用成本。 (一)文字处理 畅写Office文字处理组件是大家日常...
  • PPT工具

    2018-07-01 14:29:14
    放大图片不模糊(2)PPTMinimizer:PPT压缩软件,压缩率98%(3)插件:Nordri Tools(环形复制、矩阵复制等)、OneKey(批量修改图片)、PPT美化大师、PPT动画大师、ispring(PPTFlash和H5网页)(4)Tagul-...
  • 上一篇文章《跨平台(uni-app)文件在线预览解决方案》,文中着重介绍了采用pdf.js在各个平台(H5和APP)进行PDF文件在线预览,关于Office文件(Word、PPT、Excel)文件预览是搭建OpenOffice服务,利用服务转换PDF...
  • 图标制作、音频处理、PDF转Word、图片怎么去水印,原型设计怎么破……?别担心,都有!!! 文章不会排版?没问题!!! 文章写完没地方分发?没问题!!! 涨粉太太太难啦。别怕!!! 行业报告上哪找...
  • 如何写好前端简历

    2021-04-06 23:27:56
    笔者发现很多人写前端简历,会忽视一些前端专有名词,比如在简历上出现h5...技术型简历的排版最好简洁一些,然后简历最好是成pdf格式,word的话容易因为版本出现排版问题,甚至很多 HR 直接在浏览器打开,或者在线预
  • path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2zm0 4h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2zm0-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2z" ...
  • 技术点十九:移动OA,移动OA审批功能,采用H5技术,实现手机移动办公,无缝对接微信、钉钉、微信企业号、也可以做APP 技术点二十:移动图表,在线配置移动报表,采用H5技术,可以手机端查看 技术点二十一::...
  • config.format_h1 = { element : 'h5', attributes : { class : 'contentTitle5' } }; //对H6标签自动进行格式化 plugins/format/plugin.js config.format_h1 = { element : 'h6', attributes : { class : '...
  • Tefact编辑器:轻量级开源无代码 H5、表单 编辑器 ✅ 真科技周刊:科技 · 商业 · 人文 · 未来 2020年10月06号添加 Mr.Dear(杭州) - Github ✅ 动森生活家:动森服装码收集,归类以及分享的微信小程序 ...
  • 将model_xx.h5(xx为数字)文件放入对应的checkpoints目录中, 修改run-test.py中的读取的config文件(am_data.yml,model.yml)路径,运行run-test.py即可。 Community 欢迎加入,讨论和分享问题。 What's New? ...
  • 129_rowkey2 h5 Y+ y9 _1 j0 K0 Q) n 130_区域观察者 131_区域观察者实现和部署" s o7 p+ F& p/ a) ]& W/ ? 132_重写区域观察者的postPut和postScannext方法实现数据统一处理0 H) Q' Z- b; P# K 133_hbase的bulkload...
  • 通过jquery.wordexport.js导出word 备注:兼容IE9以上 大概浏览了下jquery.wordexport.js插件的代码,了解到了通过该插件可以导出文本和图片,而图片首先通过canvas的形式 绘制,文本则需要再依赖FileSaver.js...

空空如也

空空如也

1 2
收藏数 28
精华内容 11
关键字:

word转h5