javaWeb文档预览之office转pdf(附详细代码)

Java实现在线预览附件 office转换PDF Java实现在线预览附件 office转换PDF因为项目是做OA这一块,有很多附件需要实现在线预览附件,在网上也看了很多相关的资料。主要实现方式就是 (openoffice+swftools+flexpaper)和(aspose+pdfjs预览)。主要步骤: 1.需要先将文档转换为PDF文件。 2.用pdfjs预览PDF文件转换步骤: * 使用OpenOffice/Aspose 将ppt、w 阅读详情

最近由于项目的需要一直在看文档转换的开源项目,包括officewebapp、OpenOffice、Libreoffice。后来发现officewebapp在各种在线文库的预览中比较常见,但是在实际的部署中需要的安装配置比较多,并且对系统有要求所以放弃。由于LibreOffice找到的参考资料比较少,最后选择了OpenOffice。下面就来详细介绍一下使用OpenOffice进行文档转换的开发过程:
1、OpenOffice下载安装:
下载地址:https://www.openoffice.org/download/index.html
我这里使用的是4.1.3版本的OpenOffice,下载完后是一个可执行程序,直接安装就好。
2、工程结构
开发环境:IDEA15+JDK1.8+Maven+SpringBoot

这里写图片描述
ConvertToPDF.java负责调用OpenOffice将Office转化成pdf文档
TestController.java负责调用转换的接口和之前PDF预览的相关接口
static包下的是pdf.js的相关包
3、需要依赖的Maven库

<dependency>
    <groupId>com.artofsolving</groupId>
    <artifactId>jodconverter-maven-plugin</artifactId>
    <version>2.2.1</version>
  </dependency>
  <!-- https://mvnrepository.com/artifact/com.aspose/aspose-words -->
  <dependency>
    <groupId>org.artofsolving.jodconverter</groupId>
    <artifactId>jodconverter-core</artifactId>
    <version>3.0-beta-4</version>
    <!--使用Maven导入不成功,这个库是手动导入的-->
  </dependency>
  <!-- https://mvnrepository.com/artifact/org.openoffice/unoil -->
  <dependency>
    <groupId>org.openoffice</groupId>
    <artifactId>unoil</artifactId>
    <version>3.2.1</version>
  </dependency>
  <!-- https://mvnrepository.com/artifact/org.openoffice/juh -->
  <dependency>
    <groupId>org.openoffice</groupId>
    <artifactId>juh</artifactId>
    <version>3.2.1</version>
  </dependency>
  <!-- https://mvnrepository.com/artifact/org.openoffice/jurt -->
  <dependency>
    <groupId>org.openoffice</groupId>
    <artifactId>jurt</artifactId>
    <version>3.2.1</version>
  </dependency>
  <!-- https://mvnrepository.com/artifact/org.openoffice/ridl -->
  <dependency>
    <groupId>org.openoffice</groupId>
    <artifactId>ridl</artifactId>
    <version>3.2.1</version>
  </dependency>

4、相关代码
(1)OpenOffice配置

    private  OfficeManager officeManager;
    public static String OFFICE_HOME = "C:\\Program Files (x86)\\OpenOffice 4";//本机OpenOffice安装目录
    private int port = 8100;//默认使用端口

(2)启动服务:

 public  void startService(int i) {
        DefaultOfficeManagerConfiguration configuration = new DefaultOfficeManagerConfiguration();
        try {
            //先关闭再启动
           // System.out.println("准备启动服务....");
           //设置OpenOffice.org安装目录
            configuration.setOfficeHome(OFFICE_HOME);
            //设置转换端口
            configuration.setPortNumbers(i); 
            //设置任务执行超时30分钟
            configuration.setTaskExecutionTimeout(1000 * 60 * 5L);
            //设置任务队列超时24小时
            configuration.setTaskQueueTimeout(1000 * 60 * 60 * 24L);
            officeManager = configuration.buildOfficeManager();
            officeManager.start();    //启动服务
            System.out.println("office转换服务启动成功!");
        } catch (Exception ce) {
            System.out.println("office转换服务启动失败!详细信息:" + ce);
        }
    }

(3)关闭服务:

public  void stopService() {
      //  System.out.println("关闭office转换服务....");
        if (officeManager != null) {
            officeManager.stop();
        }
        System.out.println("关闭office转换成功!");
   }

(4)文档转换

 public  void orgconvert2PDF(String inputFile) {
        //pdfFile是目标文件  odtFile是中间文件
        String pdfFile = inputFile.substring(0, inputFile.lastIndexOf("."))+"_" + System.currentTimeMillis() + ".pdf";
        String odtFile = inputFile.substring(0, inputFile.lastIndexOf("."))+"_" + System.currentTimeMillis() + ".odt";
        File odt = new File(odtFile);
        if (odt.exists()) {
            System.out.println("odt文件已存在!");
            inputFile = odtFile;
        } else {
            try {
                File input = new File(inputFile);
                FileUtils.copyFile(input, odt);
                inputFile = odtFile;
            } catch (Exception e) {
                System.out.println("文档不存在!");
                e.printStackTrace();
            }
        }
        try {
            long now = System.currentTimeMillis();
            startService(port);
            System.out.println( "  进行文档转换转换:" + inputFile + " --> " + pdfFile);
            OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);
            converter.convert(new File(inputFile), new File(pdfFile));
            //转化完成关闭服务
            stopService();
            odt.delete();
            long old = System.currentTimeMillis();
            System.out.println("ConvertSuccess Start = "+ old + ", end = "+ now +  ", "+ " UsedTime = " + (old - now) / 1000.0 + " S");
            //System.out.println(" 文档转换成功....end");
        } catch (Exception e) {
            stopService();
            System.out.println(  "文档转换失败....error");
        }
    }

(5)多线程调用

        String str1 = "D:\\TestFiles\\1\\1.docx";
        String str2 = "D:\\TestFiles\\1\\2.docx";
        //多线程调用
        ConvertToPDF convert1 = new ConvertToPDF(str1,8100);
        Thread thread1 = new Thread( convert1 );
        thread1.start();
        ConvertToPDF convert2 = new ConvertToPDF(str2,8101);
        Thread thread2 = new Thread( convert2 );
        thread2.start();

在jodconverter3.0-beta-4里已经支持启动多个OpenOffice实例进行转码,这里的多线程是通过同时在多个线程里面启动多个不同端口的OpenOfiice实例进行转码实现。如果是一个端口,也可以进行多文件的转化,只是在添加多个文件的时候,OpenOffice会将任务文件添加到任务队列依次执行。

文档预览之PDF.js实现PDF文件跨域预览(附测试实例):
http://blog.youkuaiyun.com/coding13/article/details/76930672
文档预览之OpenOfiice踩过的坑:
http://blog.youkuaiyun.com/coding13/article/details/77246339

参考博文
https://segmentfault.com/a/1190000006789644(Java中常用的几种DOCX转PDF方法,包含Libreoffice的使用)
代码下载:
http://download.youkuaiyun.com/download/coding13/9936039

Java-基于Aspose方式将office文件转换成pdf格式 文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import 阅读详情

相关推荐

java通过url在线预览Word、excel、ppt、pdf、txt文档

java通过url在线预览Word、excel、ppt、pdf、txt文档

java将office文件转换为pdf文件的三种方法

方法1.poi读取doc + itext生成pdf (实现最方便,效果最差,跨平台) 方法2.jodconverter + openOffice (一般格式实现效果还行,复杂格式容易有错位,跨平台) 方法3.jacob + msOfficeWord + SaveAsPDFandXPS (完美保持原doc格式,效率最慢,只能在windows环境下进行) 由于方法1效果比较差,本文只介绍后两种方法 方法2:使用jodconverter来调用openOffice的服务来转换,openOffice有个各个平台.

jun_bai的博客 9072

java实现浏览器在线预览offic(doc、xls、ppt)和pdf文件

java实现浏览器在线预览offic(doc、xls、ppt)和pdf文件,本人将例子集成到项目中,已成功。 技术原理:将文件先转换成pdf文件,再将pdf文件转换成swf文件,最后显示在浏览器上。 资源描述:本资源包括swftools安装包以及例子源码,由于openOffice太大,请大家去官网下载apache_openoffice_incubating_win_x86_install_zh-cn.zip。运行环境为windows,若需运行在linux,请去官网下载对应版本。 说明:例子运行之前,请先修改代码中swftools安装路径,以及文件存放路径。

java 实现office转换pdf

踩坑+1

qq_43120080的博客 1211

PostgreSQL和PostGIS安装、导入shp或gdb格式数据至数据库、使用QGIS测试上传PstGIS数据库操作和代码

本文详细介绍了postgresql和postgis安装步骤,并且使用postgis测试上传shp和gdb格式的矢量数据至数据库,包括步骤和代码,并使用qgis连接postgis数据查看数据库里的数据,数据依旧和本地数据一样可查看可编辑,方便后续数据底座开发和服务。

weixin_46456488的博客 1246

5个免费股票数据API实测对比:从AkShare到BaoStock,哪个最适合你的AI量化项目?

本文深度评测了AkShare、BaoStock、yfinance、Alpha Vantage和EOD Historical Data这五个免费股票数据API,从数据质量、覆盖范围、更新频率、稳定性及易用性进行对比。针对AI量化项目,文章提供了详细的选型策略,帮助开发者根据项目阶段与需求,精准选择最适合的数据源,并强调了多源验证与数据清洗的重要性。

weixin_29290947的博客 5089

JavaWeb实现office文件、PDF文件在线预览功能

JavaWeb实现office文件、PDF文件在线预览功能实现思想介绍使用插件(在服务器上下载并安装,紧记安装路径,后面会用到)OpenOfficeSwfTools使用的jar前端页面所需要的JSjodconverter-2.2.2.jar下载后台代码实现前端展示页面 实现思想介绍 文件上传的同时就做好文件处理。所有的文件交由服务器处理,避免客户端安装插件,数据库设计上要提供保存两个文件的存放地址...

叁金Coder 7408

从TCGA官网获取新版count数据并精准转换为TPM的实战指南

本文详细介绍了从TCGA官网获取新版count数据并精准转换为TPM的实战指南。通过TCGAbiolinks工具下载原始count数据,结合GENCODE v36注释文件计算基因有效长度,最终实现count到TPM的标准化转换,确保数据完整性和分析可靠性。文章包含完整代码示例和常见问题解决方案,特别适合生物信息学研究人员参考。

weixin_27310417的博客 284

JavaWeb在线预览PDF、Word、Excel:提升办公效率的利器

JavaWeb在线预览PDF、Word、Excel:提升办公效率的利器 【下载地址】JavaWeb在线预览PDFWordExcel 这是一个基于Java的Web在线预览解决方案,支持PDF、Word、Excel等多种文件格式。通过Maven构建工具和Spring MVC框架,项目实现了高效的文件转换和预览功能,用户无需安...

gitblog_06714的博客 809

海康威视iSC平台视频流对接:RTSP、HLS、WS三种协议到底该怎么选?

本文深入分析海康威视iSC平台视频流对接中RTSP、HLS和WebSocket三种协议的优缺点,帮助开发者根据实时性、兼容性和网络环境做出最优选择。特别适合综合安防管理平台的Web视频监控系统开发,提升用户体验和系统性能。

weixin_28365523的博客 692

大众奥迪诊断不求人:手把手解析SAE J2819(CAN TP2.0)协议报文与连接流程

本文深入解析大众奥迪车型诊断核心标准SAE J2819(CAN TP2.0)协议,详细拆解连接建立流程与报文控制字段。通过实战案例展示通道设置、参数协商等关键步骤,提供诊断设备配置建议和常见故障排查技巧,帮助工程师掌握汽车诊断通信协议的精髓。

weixin_30421809的博客 397

javaweb项目实现文档在线预览详细步骤(openoffice+pdf2swf+flexpaper+linux服务器)

资料准备 OpenOffice swftools flexpaper java代码实现 openoffice实现文档转PDF 导入依赖包 使用jodconverter-local包可以实现本地openoffice服务的调用,如果使用远程主机的openoffice则需要导入jodconverter-online包,另外4.1.0版本是用jdk1.7来编译的(由于本项目用jdk1.7,兼容不了高...

金牌程序员东岂 1254

chembl_webresource_client 包数据接口下载chembl数据库;ZINC数据库下载、simles获取

点击进去https://zinc.docking.org/subclasses/kinase/predictions/,然后下载sdf模式,这里可以转化simles格式,如果下载csv里面没有包含simles。参考:https://github.com/chembl/chembl_webresource_client/blob/master/demo_wrc.ipynb。参考:https://zinc.docking.org/这是网页搜索查看,16条数据。这个数据这下载特别慢。

weixin_42357472的博客 3051

java的office转化为pdf,pdf转化为swf的工具类 在线预览之总结

使用javaweb实现在线预览的工具类:

◇″淡定。 938

如何学习总线技术

如何学习总线技术 以形象生动的比喻来描绘了总线技术的基本思想,指出了总线的基本分类和总线传输的基本原理,以及在学习过程中应当掌握的最基本的知识,对初学者有起到抛砖引入的作用。 0引言   如果一座只能容一个人来往的独木桥,两端的人都想要过桥,为了不拥挤、阻塞,那我们就得采取有效的办法。比如规定某段时间哪端的人过桥,另一端的人就等着该他过桥的时间段的到来,同时也还可以规定人多时要按先来后到或年

ce123的技术博客 8528

AI测试实战:手把手教你做LLM(大模型)性能测试「含完整代码」

大模型API性能测试是评估模型服务响应能力、吞吐量和资源效率的关键手段。核心指标包括总响应时间、吐字率、首token延迟、输入/输出tokens数量、QPM等。测试流程涵盖构造负载、并发请求、数据采集和指标计算。优化建议针对吐字率低、首token延迟高、QPM偏低等问题,从模型、硬件、系统等多层面提出解决方案。

blues_C的博客 1431

关于JavaWeb项目office文件转pdf问题

关于JavaWeb项目office文件转pdf问题具体的实现方法有很多种,这边主要更具我自己工作经验介绍两种。 - 使用openOffice来实现转换功能 - 使用 office自带的转换功能openOfficeopenOffice比较方便,并且相对office自带的是免费的(正版office部署在服务器是要付费的),但是也有缺点,就是在转换为pdf的过程中,会有字体改变,或者内容丢失等问题,如

zhou734851299的博客 676

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

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

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

weixin_39523835的博客 150

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

java将word转换为swf_java将office文档pdf文档转换成swf文件在线预览

java将office文档pdf文档转换成swf文件在线预览第一步,安装openoffice.orgopenoffice.org是一套sun的开源office办公套件,能在widows,linux,solaris等操作系统上执行。主要模块有writer(文本文档),impress(演示文稿),Calc(电子表格),Draw(绘图),Math(公式),base(数据库)笔者下载的是openoffic...

weixin_30623181的博客 240

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【亲测免费】 Java Web在线预览PDF、Word、Excel

Java Web在线预览PDF、Word、Excel 【下载地址】JavaWeb在线预览PDFWordExcel 这是一个基于Java的Web在线预览解决方案,支持PDF、Word、Excel等多种文件格式。通过Maven构建工具和Spring MVC框架,项目实现了高效的文件转换和预览功能,用户无需安装额外的Offic...

gitblog_06797的博客 760

XDOC Office Server 开源了,Office文档完美转换为PDF

开发四年只会写业务代码,分布式高并发都不会还做程序员? 项目地址:https://gitee.com/xdoc/xof...

weixin_34072637的博客 320

java web项目预览文档_Javaweb office文档在线预览肿么实现!!!

微软方:利用Office2007以上版本的一个PDF插件SaveAsPDFandXPS.exe可以导出PDF文件,然后再利用免费的swftools.exe工具生成swf格式的Flash文件,网页中加载flexpaper免费开源工具(有广告)实现Flash文件的预览。 优点: 1、有效的保护的源文件及文件的复制,不可复制也是缺点。 2、源码是自己的,版权有保证。 缺点: 1、服务器上必须安装Offi...

weixin_31001313的博客 332
上一篇: javaWeb文档预览之PDF.js实现PDF文件跨域预览(附测试实例)
下一篇: javaWeb文档预览之OpenOfiice踩过的坑
Coding13
博客等级 码龄10年 53粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coding13

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值