OpenOffice在线预览(安装与代码实现)

使用Openoffice或LibreOffice实现World、Excel、PPTX在线预览 jodconverter是一个开源项目,用于将Office文档(如Word、Excel、PowerPoint等)转换为其他格式,例如PDF、HTML、图像等。它基于Java平台,并使用LibreOffice/OpenOffice作为转换引擎。 阅读详情

1、Windows安装


双击安装包 打开运行程序 ----> 点击下一步按钮 ----> 点击浏览按钮 选择安装目录路径 -----> 会自动检测系统中的插件 如果需要会自动安装 -----> 输入使用的用户 以及选择用户权限 点击下一步按钮 -----> 勾选通常安装 点击下一步 ----> 点击完成 即安装结束

接下来以命令方式启动OpenOffice服务

cd  C:\Program Files (x86)\OpenOffice 4\program
soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard

服务打开成功之后在任务管理器可以看见soffice.bin的进程。


2、Linux安装

2.1、OpenOffice安装及部署

将 Apache_OpenOffice_4.1.5_Linux_x86-64_install-rpm_zh-CN.tar.gz 安装包上传

解压安装包: tar -zxvf Apache_OpenOffice_4.1.5_Linux_x86-64_install-rpm_zh-CN.tar.gz

安装OpenOffice服务

cd zh-CN/RPMS

rpm -ivh *.rpm --force --nodeps

cd desktop-integration

rpm -ivh *.rpm --force --nodeps

2.2、启动OpenOffice服务

放入后台永久运行OpenOffice服务

nohup /opt/openoffice4/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &

查看OpenOffice服务是否已启动

netstat -lnp | grep 8100

netstat -tln

如8100端口未启动(上步操作启动成功则忽略下续操作)

查看OpenOffice错误信息: openoffice4

出现: /opt/openoffice4/program/soffice.bin: error while loading shared libraries: libXext.so.6: cannot open shared object file: No such file or directory

执行: yum install libXext.x86_64

出现: /opt/openoffice4/program/soffice.bin: error while loading shared libraries: libfreetype.so.6: cannot open shared object file: No such file or directory

执行: yum install freetype

出现: no suitable windowing system found, exiting.

执行: yum groupinstall "X Window System"

直至输入openoffice4没有错误提示为止

2.3、OpenOffice格式转换中文乱码(如果预览文件无法识别中文,执行该步骤)

查看jdk安装路径: ls -lrt /etc/alternatives/java

进入jdk安装路径: cd usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64/jre/bin/java

再进入jre/lib目录: cd jre/lib/

创建fonts目录: mkdir fonts

进入该路径: cd fonts

创建fallback目录: mkdir fallback

进入该路径: cd fallback

在该路径下上传字体文件simsun.ttc(宋体)、simhei.ttf(黑体)字体文件(如需其他字体支持继续上传)

查看系统字体文件路径: cat /etc/fonts/fonts.conf

字体拷贝: 将 usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64/jre/bin/fonts的全部内容,拷贝到系统字体文件路径下(我的字体路径为:/usr/share/fonts)

更新缓存: fc-cache

2.4、重启OpenOffice服务(如果执行了第三步骤,执行该步骤)

 

3、代码实现

/**
     * @param request
     * @param response
     * @param filePath
     * @param fileName
     * @throws IOException
     */
    @Transactional
    @RequestMapping("/preview")
    @ResponseBody
    public AjaxResult preview(HttpServletRequest request, HttpServletResponse response, @RequestParam String filePath, @RequestParam String fileName) throws IOException, InterruptedException {
        // IRequest requestContext = this.createRequestContext(request);
        // ResponseData responseData = new ResponseData();
        response.setContentType("text/html; charset=UTF-8");

        if(!"".equals(filePath)) {
            /* 根据项目所在的服务器环境,确定路径中的 /  和 \ */
            String osName = System.getProperty("os.name");
            if (Pattern.matches("Linux.*", osName)) {
                filePath.replace("\\","/");
            } else if(Pattern.matches("Windows.*", osName)) {
                filePath.replace("/","\\");
            }

            /* 获得文件名后缀 */
            String ext = "";
            if(!"".equals(fileName) && fileName.contains(".")){
                ext = fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length()).toUpperCase();
            }

            /* 根据文件类型不同进行预览 */
            /* 预览图片 */
            if ("PNG".equals(ext) || "JPEG".equals(ext) || "JPG".equals(ext)) {
                response.setContentType("image/jpeg");
            }
            /* 预览BMP格式的文件 */
            if ("BMP".equals(ext)) {
                response.setContentType("image/bmp");
            }
            /* 预览pdf */
            if ("PDF".equals(ext)) {
                response.setContentType("application/pdf");
            }

            /* 利用openOffice将office文件转换为pdf格式, 然后预览doc, docx, xls, xlsx, ppt, pptx */
            if ("DOC".equals(ext) || "DOCX".equals(ext) || "XLS".equals(ext) || "XLSX".equals(ext) || "PPT".equals(ext) || "PPTX".equals(ext)) {
                /* filePath在数据库中是不带文件后缀的, 由于jodConverter必须要识别后缀,所以将服务器中的文件重命名为带后缀的文件 */
                java.io.File docFile = new java.io.File(filePath);
                // File docFileWithExt = new File(filePath + "." + ext.toLowerCase()); //带后缀的文件
                // docFile.renameTo(docFileWithExt);
                /* 转换之后的文件名 */
                java.io.File pdfFile;
                if(filePath.contains(".")){
                    pdfFile = new java.io.File(filePath.substring(0, filePath.lastIndexOf(".")) + ".pdf");
                }else{
                    pdfFile = new java.io.File(filePath + ".pdf");
                }

                /* 判断即将要转换的文件是否真实存在 */
                if (docFile.exists()) {
                    /* 判断该文件是否已经被转换过,若已经转换则直接预览 */
                    if (!pdfFile.exists()) {
                        OpenOfficeConnection connection;

                        /* 打开OpenOffice连接 */
                        try {
                            connection = new SocketOpenOfficeConnection("127.0.0.1",8100);
                            connection.connect();
                        } catch (java.net.ConnectException e) {
                            log.warn("openOffice未连接,正在重新连接...");

                            // 启动OpenOffice的服务
                            String command = openOfficeInstallationPath + "program/soffice -headless -accept=\"socket,host=127.0.0.1,port=8100;urp;\" -nofirststartwizard";
                            Runtime.getRuntime().exec(command);

                            Thread.sleep(1000);

                            connection = new SocketOpenOfficeConnection(8100);
                            connection.connect();

                            log.warn("openOffice重新连接成功!!!");
                        }

                        try{
                            // DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
                            DocumentConverter converter = new StreamOpenOfficeDocumentConverter(connection);
                            converter.convert(docFile, pdfFile);
                            connection.disconnect();

                            filePath = pdfFile.getPath(); // 文件转换之后的路径
                            response.setContentType("application/pdf");
                        }catch (com.artofsolving.jodconverter.openoffice.connection.OpenOfficeException e) {
                            e.printStackTrace(); // 读取转换文件失败
                            log.info("读取转换文件失败!!!");
                            return warn("读取转换文件失败!!!");
                        }finally { // 发生exception时, connection不会自动切断, 程序会一直挂着
                            try{
                                if(connection != null){
                                    connection.disconnect();
                                }
                            }catch(Exception e){
                                e.printStackTrace();
                            }
                        }
                    } else {
                        filePath = pdfFile.getPath(); // 文件已经转换过
                        response.setContentType("application/pdf");
                    }
                } else {
                    log.info("需要预览的文档在服务器中不存在!!!");
                    return warn("需要预览的文档在服务器中不存在!!!");
                }
            }

            /* 将文件写入输出流,显示在界面上,实现预览效果 */
            FileInputStream fis = new FileInputStream(filePath);
            OutputStream os = response.getOutputStream();
            try {
                int count;
                byte[] buffer = new byte[1024 * 1024];
                while ((count = fis.read(buffer)) != -1)
                    os.write(buffer, 0, count);
                os.flush();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (os != null)
                    os.close();
                if (fis != null)
                    fis.close();
            }
        }
        return null;
    }

 

/* 转换文件的核心代码 */
OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);
connection.connect();
DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
converter.convert(docFile, pdfFile);
connection.disconnect();

 

使用openOffice实现在线预览 一 、OpenOffice的在线预览## 我的具体逻辑: ①我是文件上传到阿里云服务器上 ②然后我需要把上传的文件下载下来,下载到另外一台服务器上,然后获取下载文件的地址,进行转码,转成html或者pdf格式(功能一模一样) ③然后拿到转码后的文件地址在前台页面访问,进行预览 二、需要的jar包 <dependency> <groupId>jod... 阅读详情

相关推荐

在java中如何使用openOffice进行格式转换,word,excel,ppt,pdf互相转换

在java中如何使用openOffice进行格式转换

Li_Zhongxin的博客 4523

kkFileView文件转换soffice.bin进程内存不释放问题

kkFileView文件转换soffice.bin进程内存不释放问题

qq_42137703的博客 3164

web使用openoffice实现在线预览office文档

最近搞web项目,使用框架struts+spring+jpa实现,做到项目里面一个在线预览功能,试过无数的方法,最后得到了一个非常使用的方法,这方法也是我看过多篇博客的出来的,仅限参考。 效果图如下: 第一步: 通过第三方软件openoffice将office文档ppt,pptx,doc,docx,xls,xlsx转换成pdf文档; openoffice下载链接:http:

tan313的专栏 2万+

Springboot整合openoffice实现文件在线预览

Springboot整合apache openoffice实现文件在线预览,docx xlsx pptx

weixin_45020617的博客 3173

Java实现在线预览以及水印--openOffice

openoffice的安装 服务包地址:http://www.openoffice.org/download/ 安装步骤: tar -zxvf Apache_OpenOffice_4.1.5_Linux_x86-64_install- rpm_zh-CN.tar.gz cd opt/zh-CN/RPMS 执行rpm -ivh *.rpm (如果是windows,请下载Windows对应的版本并解压安装) 代码展示: //我是将文件传到了hdfs,这里是引用hdfs的服务读取文件流 @Autowired

qq_33440106的博客 1629

LINUX服务器安装DOC 转 PDF转SWF,PHP环境调用,FlexPaper实现在线预览文档

文件('pdf','doc','docx','xls','xlsx','ppt','pptx','txt')转PDF,PDF转SWF 实现文件在线预览

qq_29516211的博客 1794

使用OpenOffice实现文件在线预览

一、解决方案 方案1: 可以直接使用第三方服务,不过这个需要收费的,我在这列几个 http://www.yozodcs.com/ https://www.idocv.com/ http://www.officeweb365.com/ 方案2: 服务器安装office web apps文件浏览服务器,实现文件预览,安装部署方法可自行百度 方案3: office转Html、pdf实...

qq_38294614的博客 2万+

Java 实现 word、excel 等文档在线预览

本文介绍了使用Apache OpenOffice将Office文档转换为PDF的完整实现方案。主要内容包括:1) 安装OpenOffice并配置8100端口服务;2) 引入jodconverter 2.2.1依赖;3) 编写文件转换工具类FileConvertUtil,支持本地文件和网络文件的格式转换;4) 服务层实现onlinePreview方法,处理文件流输出;5) 控制器层提供在线预览接口。该方案支持doc、xls、ppt等常见Office文档转PDF,实现了文件的在线预览功能。

wjianwei666的专栏 803

OpenOffice在线预览附件

OpenOffice在线预览附件 Author xiuhong.chen@hand-china.com Date 2018/1/20 Desc 在线预览附件功能 1.下载安装包 官方下载: http://www.openoffice.org/download/index.html 2.安装OpenOffice 此处对于安装过程针对wi...

再烦,也别忘微笑;再急,也要注意语气;再苦,也别忘坚持。 2万+

别再只用CANape测数据了!手把手教你用ASAP2 Studio编辑A2L文件(附MAP文件更新避坑指南)

本文深入探讨ASAP2 Studio在ECU开发中的高阶应用,特别是如何利用其编辑A2L文件并同步更新MAP文件,提升测量标定效率。文章详细解析了ASAP2 Studio的双向同步能力、MAP文件更新全流程及变量管理技巧,帮助工程师避免常见错误,优化工作流程。

weixin_26833939的博客 508

【DAY11】超参数调整专题1

核心优势: 它不是随机选择下一个点,而是根据先前评估的结果建立一个概率模型(通常是高斯过程),预测哪些参数组合可能产生更好的结果,并据此选择下一个评估点。这使得它在寻找最优解方面通常比随机搜索更高效(用更少的迭代次数达到相似或更好的性能),特别是当模型训练(单次评估)非常耗时的时候。实际上,有着非常多的方式可以实现贝叶斯优化,上面的代码比较简洁美观,贝叶斯优化和网格搜索的代码书写风格高度一致。- 需要定义参数的搜索空间,与随机搜索类似,当搜索空间非常大时,它通常比网格搜索和随机搜索更有效。

daomingwu1的博客 747

Java实现文档在线预览

主要思路 使用openoffice方式实现word预览 安装openoffice并启动 openoffice官网下载 下载完后在program目录下进入cmd,输入: soffice -headless -accept=“socket,host=127.0.0.1,port=8100;urp;” -nofirststartwizard 准备pom文件 &lt;!-- h...

riemann_的博客 6269

旋转变压器软件解码simulink仿真

旋转变压器软件解码simulink仿真、电机转速位置测量

qq_31446727的博客 2582

有关于OpenOffice实现在线预览和编辑问题

有关于OpenOffice实现在线预览和编辑问题 某日,直属上级说:你去了解一下OpenOffice周三搞明白,然后我就开始看这方面的文档。总结一下踩到的坑和一些经验吧。 1、下载 ​ 去官网上可以看到最新的版本是4.7.1了,下载就好了,默认安装路径:C:\Program Files (x86)\OpenOffice 4\program 然后傻瓜安装就可以,这个路径代码中多次会用到,注意留意。 ...

修行的博客 8245

HybridCLR热更新全流程实操:用Addressables实现资源+代码双热更(Unity 2021版)

本文详细介绍了在Unity 2021 LTS版本中,如何结合HybridCLR代码热更新与Addressables资源管理系统,实现资源与代码的双热更解决方案。通过环境配置、技术架构设计、实战案例和性能优化,帮助开发者解决中大型项目中的依赖管理和版本协同问题,提升游戏迭代效率。

cc789的博客 847

Android——Handler详解

1. 简介 Handler是一套 Android 消息传递机制 可以说只要有异步线程与主线程通信的地方就一定会有 Handler。 在多线程的应用场景中,将工作线程中需更新UI的操作信息 传递到 UI主线程,从而实现 工作线程对UI的更新处理,最终实现异步消息的处理 使用Handler消息传递机制主要是为了多个线程并发更新UI的同时,保证线程安全 2. 相关概念解释 Handler、Message、Message Queue、Looper Android消息机制: 以Handler的sendMes

Yawn 7万+

使用openoffice实现office文件预览

项目中需要使用到office文件的预览服务,开发过程中使用[office365](http://www.officeweb365.com/)作文件预览,但是实际生产环境为内网,所以只能使用自己的文件预览。后来发现网上的openoffice组件可以提供文件的在线预览。 1.在openoffice官网下载[windows安装包](http://www.openoffice.org/download...

蓝色格子ren的博客 4755

从零开始掌握OBD-II:汽车诊断开发的核心技术与实战解析

本文深入解析OBD-II汽车诊断系统的核心技术,包括ECU通信协议、故障码解析及诊断工具开发实战。通过详细的协议分析和代码示例,帮助开发者快速掌握汽车诊断开发技能,实现从零到精通的进阶。特别适合从事汽车电子开发和OBD检测的技术人员参考学习。

weixin_42528780的博客 438

Springboot 实现在线预览,Word文档 doc、xlsx、pdf、txt

前言 PDF、TXT 只要资源可访问,根本就不需要进行任何处理,直接访问查看就完事了。 也是因为这个PDF可以直接查看(现在浏览器基本支持了),那么我们实现Word文档在线预览,其实也是 把WORD文档 复制一份生成一份供预览的 PDF文件而已。 先看看效果: 正文 这篇实例,实现在线预览WORD文档,分两步: 一. 安装OpenOffice 二.写点小代码 一. 安装OpenOffice 不要看到安装东西就觉得麻烦,因为这个安装不需要做任何配置,你只需要下载,选择安装地址,一直下一.

qq_43737121的博客 4095

Arduino开发实例-EMG 肌肉信号传感器

在医学研究中,测量肌肉的活动、收缩和扩张非常重要。 EMG 肌肉传感器测量肌肉活动并产生信号以显示扩张和收缩量。 因此,输出取决于所选肌肉的活动量。 3 绿色、红色和黄色电极连接到模块,用于传输来自肌肉运动的电信号。

视觉与物联智能 1698

大模型实战—通义千问大模型微调

这个参数仅针对 llama 类型的模型结构,默认勾选的是 q_proj 和 v_proj,具体的名词不容易理解,我就不多说了,可以简单的认为是对模型的理解能力进行优化,一般这两个就够了。当这个值较高时,适应新任务的能力会增强,但是对基础模型的影响会比较大,有过拟合的风险,尤其是在数据量有限的情况下。为了方便测试,我在云环境也创建了一个镜像,相关的环境都配置好了,可以直接使用几个国内开源的大语言模型,比如清华智谱的ChatGLM3-6B、零一万物的Yi-34B,还有最近阿里云开源的Qwen1.5-32B。

7万+

最详细的文件在线预览(openoffice+swftools+flexpaper)

最详细的文件在线预览(openoffice+swftools+flexpaper) 1.1    本人使用的都是最新的软件包,版本见下图: 1.2    已经支持加载中文文件名 1.3    代码下载 1.概述 主要原理 1.通过第三方工具openoffice,将word、excel、ppt、txt等文件转换为pdf文件 2.通过swfTools将pdf文件转换成swf格式的文件

zfw198787的专栏 7687

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

PHP使用openoffice实现word,ppt,Excel在线转PDF浏览。windows和linux系统不同的解决方案

一、PHP使用openoffice实现office在线转PDF介绍 最近需要在网页上实现预览上传的word文档,之前没有实现过相关功能,搜索了一下网上的资料,完整的教程较少,因此将自己实现的步骤和遇到的问题记录下来,希望能帮到有需要的人 1.目前前端只能实现在线预览pdf格式的文件,可以用pdf.js或者jquery.media.js来实现。 2.要实现其他格式的文件预览,需要在后端进行格式转换。 3.目前我了解到的后端对office文档格式的转换方法有: a、先转换成swf格式->在转换成pdf格

易十一的博客 3929

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

2021-02-19openOffice实现在线预览功能

哈哈 2021 上班的第一天就深感忧虑 在家玩的太久 感觉自己需要充电啦 当时为了项目进度 随意在网上找了一个是 word excel 图片转html之后展示;效果不是很理想。word,图片还可以,excel就很丑。今天又写了一个借助 openOffice实现在线预览功能; 引用的jar包 <dependency> <groupId>org.artofsolving.jodconverter</groupId> <artif

小可爱码农 548

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

java实现文件预览(Office转PDF)

一、首先下载安装openOffice软件,下载地址:http://www.openoffice.org/download/index.html 当然,下载速度特别慢,下面是百度网盘地址。 链接:https://pan.baidu.com/s/1FfQa14WYXuJU2CTQf34gew 提取码:4q08 下载完一步一步下一步安装好,就行了。没什么特别的。 二、引入jar包 &l...

mdw5521的博客 1978

在线文档解决方案非常推荐2种(开源免费)

office办公文档,如docx、xlsx、ppt、pptx是无法直接在浏览器中打开的,但很多OA办公软件都要求office文档能直接在线预览功能,解决方法如下: 1、office文档转为pdf,使用Apache提供的openOffice将文件转为pdf文件;保证文档格式、文件转换输出稳定,满足在线预览条件。【推荐】 2、kkFileView为文件文档在线预览解决方案,该项目使用流行的spring boot搭建,易上手和部署,基本支持主流办公文档的在线预览,如docx,xlsx,ppt等等。

qq_30713721的博客 7926
上一篇: Gitblit服务器搭建及IDEA整合Git使用
下一篇: CentOS7 安装jdk、mysql、tomcat
amigo1226
博客等级 码龄9年 8粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值