POI读取Word2003显示到网页

使用poi解析word文档实现网页预览(doc 或者docx) /** * 打开一个新的页面并展示文件全部的内容 * @param lid */ function openLaw(lid) { var content = getLawContent(lid); var win = window.open( 'about:blank','','scroll:1;status:0;hel... 阅读详情
生成HTML:
不生成HTML
doc:
 
读取word2003所需jar包:
poi-scratchpad-3.10-FINAL.jar
poi-3.10-FINAL.jar
commons-io-1.4.jar
 
 
  <servlet>
      <servlet-name>print</servlet-name>
      <servlet-class>com.tpf.PoiWordToHtml</servlet-class>
  </servlet>
  <servlet-mapping>
      <servlet-name>print</servlet-name>
     <url-pattern>/print</url-pattern>  
  </servlet-mapping>
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.apache.commons.io.FileUtils;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.converter.PicturesManager;
import org.apache.poi.hwpf.converter.WordToHtmlConverter;
import org.apache.poi.hwpf.usermodel.Picture;
import org.apache.poi.hwpf.usermodel.PictureType;
import org.apache.tomcat.util.codec.binary.Base64;
import org.w3c.dom.Document;
public class PoiWordToHtml extends HttpServlet {
     @Override
     protected void doPost(HttpServletRequest req,  HttpServletResponse resp) throws ServletException, IOException {
           doGet(req, resp);
     }
     
     @Override
     protected void doGet(HttpServletRequest req,  HttpServletResponse resp) throws ServletException, IOException {
           PoiWordToHtml poiWordToHtml = new PoiWordToHtml();
           try {
                poiWordToHtml.word2003ToHtml(req,resp);
           } catch (Exception e) {
                e.printStackTrace();
           }
     }
     
     final String path = "E:\\test\\";
     public static void main(String[] args) {
           try {
                PoiWordToHtml poiWordToHtml = new  PoiWordToHtml();
                poiWordToHtml.word2003ToHtml();
                poiWordToHtml.word2007ToHtml();
           } catch (Exception e) {
                e.printStackTrace();
           }
     }
     
    //doc
     public void word2003ToHtml(HttpServletRequest req,  HttpServletResponse resp) throws Exception{
           String file = "签名功能使用手册.doc";
           InputStream input = new FileInputStream(path + file);
           HWPFDocument wordDocument = new HWPFDocument(input);
          
           WordToHtmlConverter wordToHtmlConverter = new  WordToHtmlConverter(
                     DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument());
           //设置图片
           wordToHtmlConverter.setPicturesManager(new  PicturesManager() {
                public String savePicture(byte[] content,  PictureType pictureType, String suggestedName, float  widthInches,
                           float heightInches) {
                     return suggestedName;
                }
           });
           wordToHtmlConverter.processDocument(wordDocument);
           List pics =  wordDocument.getPicturesTable().getAllPictures();
           //图片显示方式1:生成图片文件并显示,图片会保存到指定的目录下
           /*if (pics != null) {
                for (int i = 0; i < pics.size(); i++) {
                     Picture pic = (Picture) pics.get(i);
                     try {
                           pic.writeImageContent(new  FileOutputStream(path + pic.suggestFullFileName()));
                     } catch (FileNotFoundException e) {
                           e.printStackTrace();
                     }
                }
           }*/
           Document htmlDocument =  wordToHtmlConverter.getDocument();
           ByteArrayOutputStream outStream = new  ByteArrayOutputStream();
           DOMSource domSource = new DOMSource(htmlDocument);
           StreamResult streamResult = new  StreamResult(outStream);
           TransformerFactory tf =  TransformerFactory.newInstance();
           Transformer serializer = tf.newTransformer();
           serializer.setOutputProperty(OutputKeys.ENCODING,  "utf-8");
           serializer.setOutputProperty(OutputKeys.INDENT,  "yes");
           serializer.setOutputProperty(OutputKeys.METHOD,  "html");
           serializer.transform(domSource, streamResult);
           outStream.close();
           String content = new String(outStream.toByteArray());
           //图片显示方式2:不生成图片文件,图片以base64形式在页面上展示出来
           if (pics != null) {
                for (int i = 0; i < pics.size(); i++) {
                     Picture pic = (Picture) pics.get(i);
                     byte picContent[] = pic.getContent();
                     byte picBase[] =  Base64.encodeBase64(picContent);
                     content =  content.replace("src=\""+pic.suggestFullFileName(),  "src=\"data:image/png;base64,"+new String(picBase)+"\"");
                }
           }
           System.out.println(content);
           resp.setCharacterEncoding("UTF-8");
           resp.setContentType("text/html;charset=UTF-8");
           //不生成HTML文件,直接返回数据到页面显示
           resp.getWriter().write(content);
           //生成指定的HTML文件
           //FileUtils.writeStringToFile(new File(path, "签名功能使用手册2003.html"), content, "utf-8");
     }     
}

 

 
 
 
POI解析word文档 import com.sinitek.sirm.web.plm.funddate.MatchingObject; import org.apache.log4j.Logger; import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.model.PicturesTable; import org.apache.poi... 阅读详情

相关推荐

Java读取WPS Excel嵌入图片:深入OOXML底层解析与POI扩展实践

在Java数据处理领域,Apache POI是读写Excel文件的标准库,它通过解析OOXML(Office Open XML)格式来操作.xlsx文件。OOXML本质上是基于ZIP压缩的XML文件集合,其中媒体资源如图片通常存储在独立部件中并通过关系引用。然而,当处理WPS Office生成的文件时,由于其可能采用非标准的存储方式(如将图片封装为OLE对象或使用特殊MIME类型),标准POI API的getAllPictures()方法可能失效,导致图片读取失败。这在实际业务中尤为关键,例如处理包含嵌入式

cmff98425的博客 442

关于poi在网页上输出word文档的问题

思想: 获得word的绝对路径使用FileInputStream获得字节流使用poi中WordExtractor将字节流转回原字符,存入一个字符串。将字符串中的换行符 \n 替换成html中的换行符 使用session将字符串传到客户端。客户端使用javascript中document.write()输出字符串。 下面是代码: HwpTest.java public class

zdxcvf的博客 728

将Word文档转换为图像:docx转png实战指南

PDF(Portable Document Format)是由Adobe公司开发的一种电子文件格式,用于存储和传输文档,确保文档在各种操作系统和设备上的外观一致。与平台依赖的文档格式相比(如Microsoft Word的.doc和.docx格式),PDF文件能够保持其设计和格式,不论是在Windows、MacOS、Linux还是其他操作系统上打开,用户看到的都是创建者希望呈现的文档样貌。Apache POI是一个广泛使用的Java库,专门用于处理Microsoft Office文档格式。

weixin_36474966的博客 901

快速搭建spring boot项目使用 Apache POI解析word文档

写在前面    想必Java程序员对Apache POI已经相当了解了,我们常用它处理MS Excel文档,将数据批量导入数据库,交给程序处理,亦或是将数据从应用中下载下来。其实POI远比我们想象得要强大的多,它包含很多组件:POIFS (此组件是所有其他POI元件的基本因素。它被用来明确地读取不同的文件)、HSSF (它被用来读取和写入MS-Excel文件的xls格式) 、XSSF (它是用于M...

狮子头儿的博客 1万+

Java读取word文档内容并输出成网页(含图片,公式)

本代码实现使用Java程序读取word文档成网页,将word文档按原样在网页输出。项目编码为UTF-8,文件编码也是utf8,再不要说乱码这种骚话了,选择utf8加载项目就不会乱码

poi操作word Demo

poi操作word例子代码,可插入图片。插入表格,插入段落插入标题

Word导入导出与解析

​ 本文采用Apache的 POI相关API,实现对Word的文档的解析。 commons-fileupload-1.3.3.jar poi-3.16.jar poi-ooxml-3.16.jar poi-ooxml-schemas-3.16.jar poi-scratchpad-3.16.jar 一、Word的导入与解析 ​ 实现将Word文件上传到Web服务器的指定地址,解析该Word文件...

qq_35976650的博客 1719

POI读取word文档的文字内容和图片内容

POI读取word文档的文字内容和图片内容

Java利用Apache-POI解析doc和docx文档

背景介绍:前些天,公司需要做一个相当于wiki文档的项目,其中涉及到在SpringBoot的基础上将word的doc文档和docx文档解析为html格式文件的相关内容。 格式介绍 :doc文档是微软为office定制的word2003版本之前的一种格式,docx是微软为word2007版本及之后所定制的一种文档格式,看后缀就知道其继承自doc,但它比doc格式更加的节省空间。在此也推荐大家都用do...

涅 槃——沉默、寡言、静思、实干 3320

POI读取 word 2003 和 word 2007 的例子

我自己下载过,直接能运行的项目。代码不多,主要是读取文档,并将文档内容以字符串的形式打印到控制台。别的地方都是5分,我觉得太贵了。2分吧。测试类就一个Test,其他两个是我自己在测试的。

poi对excel和word的读取

poi对excel和word的读取,支持2003和2007

POI读取word文档内容

/**      * 把附件上传至服务器目录下      *       * @param files      * @param req      * @return      */     @ResponseBody     @RequestMapping(value = "readFile", method = RequestMethod.POST)     public Map&lt;St...

liubowin的专栏 4150

c++11 无锁队列

/************************************************************************* &gt; File Name: lockfreequeue.cpp &gt; Author: &gt; Mail: &gt; Created Time: Wed 08 Aug 2018 11:38:08 AM CST ********...

qq_35728402的博客 5021

POI读写Word docx文件

转过来留着,方便看。 使用 POI 读写 word docx 文件 目录 1     读docx文件 1.1     通过XWPFWordExtractor读 1.2     通过XWPFDocument读 2     写docx文件 2.1     直接通过XWPFDocument生成 2.2     以docx文件作为模板          POI在读写word

u011098115的专栏 1989

(二)MS-MPI多机通信

1.关于MPI多机通信 一台计算机处理数据的能力是有限的,MPI的主要作用就是用来实现并行计算机,即将多台主机联机,实现大规模、高性能的计算机机群。我们知道一台计算机同时运行多个进程时,由于计算机资源是共享的,多个进程都会占用一些资源,每个进程运行的效率就会降低,比如当一台计算机同时跑着多个大型应用时会变得非常卡顿。所谓多机通信,可以理解为将本应该在同一台主机上运行的多个进程分配到多台主机上,以往...

xinwuya_的博客 4389

Qt (高仿Visio)流程图组件开发(一) 效果展示及基本开发框架构思

最近因为工作原因需要使用Qt开发一个类似于Visio的流程图组件,需满足基本的流程图功能,图元类型可自定义扩展,不同图元存有各类自定义数据,可以保存为xml文件,可以读取xml文件生成流程图等等。

qq_43793182的博客 1万+

使用POI对word文档进行取读

POI导入word,表格

qq_48157004的博客 2412

基于Multisim的智能交通灯控制系统仿真与实现(含动态闪烁功能)

本文详细介绍了基于Multisim的智能交通灯控制系统仿真与实现,重点解析了动态闪烁功能的电路设计。通过555定时器、74LS192计数器和JK触发器等核心模块,实现了主干道与支干道的交替通行及黄灯1Hz闪烁功能,为交通灯控制系统设计提供了完整的仿真方案。

weixin_29174013的博客 423

Java使用poi读取doc/docx文档内容

使用poi读取word文档数据,包括doc/docx两种格式的文档.

Ethanxumf的博客 1万+

全球建筑物提取数据集(免费下载):微软/GlobalMLBuildingFootprints

这个是GitHub上的开源数据集: https://github.com/microsoft/GlobalMLBuildingFootprints 介绍 必应地图正在世界各地发布开放式建筑足迹。我们从 2014 年到 2021 年间的 Bing Maps 图像中检测到了 7.77 亿座建筑物,包括 Maxar 和 Airbus 的图像。数据可在 ODbL 下免费下载和使用。该数据集补充了我们的其他版本。 包括的地区 执照 此数据由 Microsoft 根据Open Dat..

此星光明博客 6287

109. SAP ABAP 应用程序中的锁机制和工作原理介绍

SAP ABAP 系统中的锁概念,是 SAP ABAP 为了保证`数据一致性`而引入的一种保护机制。 像 SAP 这种复杂的企业级应用,系统中同一时间段的同一份数据,可能会有多个 Transaction(终端用户或者 API )同时进行读写操作。为了防止出现数据不一致,SAP ABAP 引入了锁机制。 这种锁机制并非数据库服务器层面的锁,而是在 SAP ABAP 应用服务器层面上工作,加锁和解锁都由专门的 ABAP Function Module 来完成。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1464

poi按顺序读取docx文档的节(可大概确认内容的页脚)

If any of the above three types of footers is omitted, then the following rules apply. If no first page footer is specified, but thetitlePg element is specified in sectPr, then the first page footer will inherit from the previous section. If this is the f

weixin_58717111的博客 1157

YOLOv8改进 | 注意力篇 | YOLOv8引入EMAttention(EMA)注意力

具体来说,除了对全局信息进行编码以重新校准每个并行分支中的通道权重之外,还通过跨维度交互来进一步聚合两个并行分支的输出特征,以捕获像素级的成对关系。3. 跨空间学习:除了在每个并行子网络中建立局部的跨通道交互外,EMA模块还通过跨空间学习方法融合了两个并行子网络的输出特征图。到此本文的正式分享内容就结束了,在这里给大家推荐我的YOLOv8改进有效涨点专栏,后期我会根据各种最新的前沿顶会进行论文复现,也会对一些老的改进机制进行补充,如果大家觉得本文帮助到你了,订阅本专栏,关注后续更多的更新~

tsg6698的博客 894

c# 按页读取word (读取指定页)

前言:本人是java开发,项目需要读取到页码。在网上找了很久很久很久,终于找到了一个叫Microsoft.Office.Interop.Word的东西。 简单来说就是 Microsoft 提供的官方处理word的接口,编程语言是c# 官方文档:https://docs.microsoft.com/zh-cn/dotnet/api/microsoft.office.interop.word?redirectedfrom=MSDN&view=word-pia 核心代码 using System;

weixin_44078005的博客 2498

标题:Stata17安装后遇到Java安装问题解决方法

设置JAVA_HOME环境变量:在Windows上,您需要设置JAVA_HOME环境变量以告诉Stata Java的安装路径。d. 输入变量名为JAVA_HOME,变量值为Java安装路径。注意:请确保您的Java版本与Stata兼容,并使用正确的Java安装路径。设置Stata的Java安装路径:现在,您需要告诉Stata Java的安装路径。如果您看到Java版本信息,则表示Java已成功安装。如果没有安装,请先下载并安装Java。确认Java已安装:首先,请确保您的计算机上已经正确安装了Java。

CyberSparkZ的博客 2865

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

word文档在html页面展示的几种解决方案

最近公司有个需求,查看新闻的文章需要读取word文档内容到html页面展示,通过网络查询和自己实践,发现有怎么几种解决方案: 1.采用jacob方案(1),参考网址:http://blog.youkuaiyun.com/liugenghao3048/article/details/8771673 2.采用poi方案(2),参考网址:http://blog.youkuaiyun.com/liugenghao3048...

IT Lover 9736

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

上一篇: Eclipse启动之后弹出框报错:An internal error occurred during: “Initializing Spring Tooling
下一篇: 查看Eclipse中安装的插件所保存的密码
T_P_F
博客等级 码龄11年 36粉丝 286原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值