java web通过openoffice实现文档网页预览(类似百度文库)

  最近研究了一下在网页上预览文档(包括office文档和txt、pdf),发现用openoffice+FlexPlayer实现比较理想,就参考了https://blog.csdn.net/ITBigGod/article/details/80300177#commentBox这个博客自己研究了一下。源码如下https://files.cnblogs.com/files/csdeblog/OpenOfficeDemo.zip

需要安装,在程序中修改这个位置

同时命令行开启openoffice,需要注意的是整个要转换的文件目录不能包含空格,而且txt需要转为utf-8,具体如下

ChangeFileCode类源码

package cn.com.mvc.util;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Writer;

public class ChangeFileCode {

    // 读取的文件

    private String fileIn;

    // 读取時文件用的编码

    private String fileInEn;

    // 写出的文件

    private String fileOut;

    // 写出時文件用的编码

    private String fileOutEn;

    /**
     *
     * 获取源文件的编码
     *
     * @param filePath
     *            源文件所在的绝对路径
     *
     * @return
     *
     */

    public String getFileEnCode(String filePath) {

        InputStream inputStream = null;

        String code = "";

        try {

            inputStream = new FileInputStream(filePath);

            byte[] head = new byte[3];

            inputStream.read(head);

            code = "gb2312";

            if (head[0] == -1 && head[1] == -2)

                code = "UTF-16";

            if (head[0] == -2 && head[1] == -1)

                code = "Unicode";

            if (head[0] == -17 && head[1] == -69 && head[2] == -65)

                code = "UTF-8";

            System.out.println(code);

        } catch (Exception e) {

            e.printStackTrace();

        } finally {

            try {

                inputStream.close();

            } catch (IOException e) {

                e.printStackTrace();

            }

        }

        return code;

    }

    public void setFileIn(String fileInPath, String fileInEncoding) {

        this.setFileIn(fileInPath);

        this.setFileInEn(fileInEncoding);

    }

    public void setFileOut(String fileOutPath, String fileOutEncoding) {

        this.setFileOut(fileOutPath);

        this.setFileOutEn(fileOutEncoding);

    }

    public void start() {

        String str = this.read(fileIn, fileInEn);

        this.write(fileOut, fileOutEn, str);

    }

    /**
     *
     * 读文件
     *
     *
     *
     * @param fileName
     *
     * @param encoding
     *
     */

    private String read(String fileName, String encoding) {

        try {

            BufferedReader in = new BufferedReader(new InputStreamReader(

                    new FileInputStream(fileName), encoding));

            String string = "";

            String str = "";

            while ((str = in.readLine()) != null) {

                string += str + "\n";

            }

            in.close();

            return string;

        } catch (Exception ex) {

            ex.printStackTrace();

        }

        return "";

    }

    /**
     *
     * 写文件
     *
     *
     *
     * @param fileName
     *
     *            新的文件名
     *
     * @param encoding
     *
     *            写出的文件的编码方式
     *
     * @param str
     *
     */

    private void write(String fileName, String encoding, String str) {

        try {

            Writer out = new BufferedWriter(new OutputStreamWriter(

                    new FileOutputStream(fileName), encoding));

            out.write(str);

            out.close();

        } catch (Exception ex) {

            ex.printStackTrace();

        }

    }

    public String getFileIn() {

        return fileIn;

    }

    public void setFileIn(String fileIn) {

        this.fileIn = fileIn;

    }

    public String getFileInEn() {

        return fileInEn;

    }

    public void setFileInEn(String fileInEn) {

        this.fileInEn = fileInEn;

    }

    public String getFileOut() {

        return fileOut;

    }

    public void setFileOut(String fileOut) {

        this.fileOut = fileOut;

    }

    public String getFileOutEn() {

        return fileOutEn;

    }

    public void setFileOutEn(String fileOutEn) {

        this.fileOutEn = fileOutEn;

    }
}

然后基本没啥问题了,openoffice和flowpaper的安装包可在https://share.weiyun.com/51jOQjB和https://share.weiyun.com/54GLAod下载。

原文地址:https://www.cnblogs.com/csdeblog/p/9906543.html

时间: 2024-08-22 20:37:51

java web通过openoffice实现文档网页预览(类似百度文库)的相关文章

Java实现文档在线预览(openoffice+swfTools+FlexPaper)

      文档在线预览在项目中早就完成了,后来又经过了一次优化.但是一直都没时间去记录遇到的问题,文档在线预览的详细步骤可以参考http://blog.csdn.net/u013614451/article/details/24261503,感谢博主写了这么好的文章帮助我完成了项目中主要的模块.下面是文档转换的工具类DocConvert.java,并标注出我修改的部分. package com.he.util; import java.io.BufferedInputStream; impor

Java实现word文档在线预览,读取office文件

想要实现word或者其他office文件的在线预览,大部分都是用的两种方式,一种是使用openoffice转换之后再通过其他插件预览,还有一种方式就是通过POI读取内容然后预览. 一.使用openoffice方式实现word预览 主要思路是: 1.通过第三方工具openoffice,将word.excel.ppt.txt等文件转换为pdf文件 2.通过swfTools将pdf文件转换成swf格式的文件 3.通过FlexPaper文档组件在页面上进行展示 我使用的工具版本: openof:3.4.

文档在线预览开源实现方案一:OpenOffice + SwfTools + FlexPaper

在文档在线预览方面,项目组之前使用的是Microsoft office web apps, 由于该方案需要按照微软License付费,项目经理要我预研一个文档在线预览的开源实现方案.仔细钻入该需求发现其实文档在线预览的开源方案还是挺多的,今天研究的方案一采用的技术栈是:OpenOffice +SwfTools + FlexPaper, 这种方案是目前比较成熟的方案,很多网站采用该方案来实现在线预览的功能.这种方案的思路是这样的: 通过OpenOffice的服务将office文档及文本文档转换为p

基于MVC+EasyUI的Web开发框架经验总结(8)--实现Office文档的预览

在很多文章里面,曾经有一些介绍Office文档预览查看操作的,有些通过转为PDF进行查看,有些通过把它转换为Flash进行查看,但是过程都是曲线救国,真正能够简洁方便的实现Office文档的预览的还是比较少,这里的Office文档包括了Word.Excel.PPT文档.本文介绍两种方式,一种方式是通过在线预览的方式,利用微软的平台进行Office文档的在线查看:一种是把Office文档生成HTML文件后进行查看.然后对比他们的优缺点,并进行总结. 1.利用微软的平台进行Office文档的在线查看

基于MVC4+EasyUI的Web开发框架经验总结(8)--实现Office文档的预览

在博客园很多文章里面,曾经有一些介绍Office文档预览查看操作的,有些通过转为PDF进行查看,有些通过把它转换为Flash进行查看,但是过程都是曲线救国,真正能够简洁方便的实现Office文档的预览的还是比较少,这里的Office文档包括了Word.Excel.PPT文档.本文介绍两种方式,一种方式是通过在线预览的方式,利用微软的平台进行Office文档的在线查看:一种是把Office文档生成HTML文件后进行查看.然后对比他们的优缺点,并进行总结. 1.利用微软的平台进行Office文档的在

基于MVC4+EasyUI的Web开发框架经验总结(7)--实现Office文档的预览

在博客园很多文章里面,曾经有一些介绍Office文档预览查看操作的,有些通过转为PDF进行查看,有些通过把它转换为Flash进行查看,但是过程都是曲线救国,真正能够简洁方便的实现Office文档的预览的还是比较少,这里的Office文档包括了Word.Excel.PPT文档.本文介绍两种方式,一种方式是通过在线预览的方式,利用微软的平台进行Office文档的在线查看:一种是把Office文档生成HTML文件后进行查看.然后对比他们的优缺点,并进行总结. 1.利用微软的平台进行Office文档的在

(转)基于MVC4+EasyUI的Web开发框架经验总结(8)--实现Office文档的预览

http://www.cnblogs.com/wuhuacong/p/3871991.html 基于MVC4+EasyUI的Web开发框架经验总结(8)--实现Office文档的预览 在博客园很多文章里面,曾经有一些介绍Office文档预览查看操作的,有些通过转为PDF进行查看,有些通过把它转换为Flash进行查看,但是过程都是曲线救国,真正能够简洁方便的实现Office文档的预览的还是比较少,这里的Office文档包括了Word.Excel.PPT文档.本文介绍两种方式,一种方式是通过在线预览

EDU-paas文档在线预览工具

本软件为edu-paas的文档在线预览,为开源软件.支持所有office文档在线预览. 文件类型全,转化快,跨平台响应式预览,兼容所有访问端. 下载地址 live.edu-paas.com/dowmCenter/EDUDocumentOnlinePreviewToolV.1.zip 源程序下载地址 live.edu-paas.com/dowmCenter/EDUFbDocumentOnlinePreviewToolV.1.zip 发布好的web 1 string serverUrl = "htt

轻松便捷的文档在线预览工具

北京博信施科技有限公司是一家专注于Office文档在线预览及PDF文档在线预览服务的专业提供商,依据HTML标准的4.01版本规范,研制开发出Microsoft Word.Excel.Powerpoint文档转换HTML文件格式以及Adobe PDF文件转换HTML文件格式的软件产品.实现Microsoft Word文档在线预览.Excel表格在线预览.Powerpoint演示文档在线预览及Adobe PDF文档在线预览,完美呈现Microsoft Office及Adobe PDF文档原始样式和